1digraph { 2 rankdir=LR 3 compound=true 4 fontname="Inconsolata, Consolas" 5 fontsize=10 6 margin="0,0" 7 ranksep=0.3 8 nodesep=0.15 9 penwidth=0.5 10 colorscheme=spectral7 11 12 node [shape=box, fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5, style=filled, fillcolor=white] 13 edge [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5] 14 15 subgraph cluster0 { 16 style=filled 17 fillcolor=4 18 19 Encoding [label="<<concept>>\nEncoding"] 20 21 edge [arrowtail=onormal, dir=back] 22 Encoding -> { UTF8; UTF16; UTF32; ASCII; AutoUTF } 23 UTF16 -> { UTF16LE; UTF16BE } 24 UTF32 -> { UTF32LE; UTF32BE } 25 } 26 27 subgraph cluster1 { 28 style=filled 29 fillcolor=5 30 31 Stream [label="<<concept>>\nStream"] 32 InputByteStream [label="<<concept>>\nInputByteStream"] 33 OutputByteStream [label="<<concept>>\nOutputByteStream"] 34 35 edge [arrowtail=onormal, dir=back] 36 Stream -> { 37 StringStream; InsituStringStream; StringBuffer; 38 EncodedInputStream; EncodedOutputStream; 39 AutoUTFInputStream; AutoUTFOutputStream 40 InputByteStream; OutputByteStream 41 } 42 43 InputByteStream -> { MemoryStream; FlieReadStream } 44 OutputByteStream -> { MemoryBuffer; FileWriteStream } 45 } 46 47 subgraph cluster2 { 48 style=filled 49 fillcolor=3 50 51 Allocator [label="<<concept>>\nAllocator"] 52 53 edge [arrowtail=onormal, dir=back] 54 Allocator -> { CrtAllocator; MemoryPoolAllocator } 55 } 56 57 { 58 edge [arrowtail=odiamond, arrowhead=vee, dir=both] 59 EncodedInputStream -> InputByteStream 60 EncodedOutputStream -> OutputByteStream 61 AutoUTFInputStream -> InputByteStream 62 AutoUTFOutputStream -> OutputByteStream 63 MemoryPoolAllocator -> Allocator [label="base", tailport=s] 64 } 65 66 { 67 edge [arrowhead=vee, style=dashed] 68 AutoUTFInputStream -> AutoUTF 69 AutoUTFOutputStream -> AutoUTF 70 } 71 72 //UTF32LE -> Stream [style=invis] 73}