<diagram program="umletino" version="14.4.0-SNAPSHOT"><zoom_level>10</zoom_level><help_text>Space for diagram notes</help_text><element><id>UMLClass</id><coordinates><x>100</x><y>50</y><w>280</w><h>490</h></coordinates><panel_attributes>String
--
-length: size_t
-start: DataBlock *
-end: DataBlock *
-cache: mutable DataCache
-cString: mutable char *
--
+String()
+String(c: char)
+String(s: char *)
+String(s: String &amp;)
+operator=(c: char): String &amp;
+operator=(s: char *): String &amp;
+operator=(s: String &amp;): String &amp;
+operator[](idx: size_t): char &amp;
+operator[](idx: size_t)const: char &amp;
+operator==(c: char)const: bool
+operator==(s: char *)const: bool
+operator==(s: String &amp;)const: bool
+operator!=( ... )const: bool
+operator+( ... )const: String
+operator+=( ... ): String &amp;
+substr(from: size_t, length: size_t)const: String &amp;
+c_str(autoFree: bool = true)const: char *
+free_c_str()const
+length()const: size_t
+find(c: char)const: size_t
+find(s: char *)const: size_t
+find(s: String &amp;)const: size_t
+begin(): String::Iterator
+end(): String::Iterator
+~String()</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>490</x><y>0</y><w>190</w><h>80</h></coordinates><panel_attributes>DataBlock
--
-prev: DataBlock *
-data: char[20]
-next: DataBlock *</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>370</x><y>60</y><w>140</w><h>30</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>10;10;120;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>490</x><y>120</y><w>190</w><h>130</h></coordinates><panel_attributes>DataCache
--
-string: String &amp;
-dataBlockIndex: size_t
-dataBlock: DataBlcok*
--
+DataCache(s: String &amp;)
+getChar(idx: size_t): char &amp;
+~DataCache()</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>370</x><y>150</y><w>140</w><h>30</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>10;10;120;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>430</x><y>290</y><w>190</w><h>170</h></coordinates><panel_attributes>String::Iterator
--
idx: size_t
cache: DataCache
--
+Iterator(it: Iterator &amp;)
+operator++(): Iterator &amp;
+operator--(): Iterator &amp;
+operator*(): char &amp;
+operator==(it: Iterator &amp;): bool
+operator!=(it: Iterator &amp;): bool
+~Iterator()</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>370</x><y>320</y><w>80</w><h>30</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>10;10;60;10</additional_attributes></element><element><id>Relation</id><coordinates><x>580</x><y>70</y><w>30</w><h>70</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>10;50;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>525</x><y>240</y><w>30</w><h>70</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>10;50;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>490</x><y>470</y><w>190</w><h>180</h></coordinates><panel_attributes>String::ConstIterator
--
idx: size_t
cache: DataCache
--
+ConstIterator(it: Iterator &amp;)
+ConstIterator(it: ConstIterator &amp;)
+operator++(): Iterator &amp;
+operator--(): Iterator &amp;
+operator*(): char &amp;
+operator==(it: Iterator &amp;): bool
+operator!=(it: Iterator &amp;): bool
+~ConstIterator</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>640</x><y>240</y><w>30</w><h>250</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>10;230;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>370</x><y>500</y><w>140</w><h>30</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>10;10;120;10</additional_attributes></element></diagram>