         
     }
     
-    // #pragma mark - CRUD Data
+    subscript(text: String) -> UID! {
+        get {
+            let data = StringData(string: text)
+            
+            var uid = stringHashIndex[data.hash]
+            
+            if !uid {
+                // string seems not in the store
+                uid = self.createBlocks(data)
+                
+                stringHashIndex[data.hash] = uid
+            }
+            
+            return uid
+        }
+    }
+    
+    
+    subscript(index: UID) -> String! {
+        get {
+            return readBlocks(index)
+        }
+    }
+    
+    
+    // #pragma mark READ -------------------------------------------------------
+
+    func readBlocks(index: UID) -> String! {
+        var result : String! = nil
+        
+        self.seekToFileID(index)
+        
+        let header = readHeader()
+        if (header.used) {
+            let data : NSData = readData()
+            
+            result = SOStringData.decodeData(data, withUTF8: header.encodingUTF8)
+            
+        }
+        
+        return result;
+    }
+    
+    override func readData() -> NSData {
+        return self.fileHandle.readDataOfLength(BUFFER_LEN);
+    }
+
+
+    
+    // #pragma mark WRITE -------------------------------------------------------
     
     // return the uid of the firstBlock
     func createBlocks(stringData: StringData) -> UID {

        }
    }
    
    //CC_MD5_DIGEST_LENGTH
}


        return calculateID(pos)
    }
    
    // #pragma mark DELETE -------------------------------------------------------

    
