Example #1
0
 public PermaDictionary(IFormatter <K> kSerializer, IFormatter <V> vSerializer, string name, bool allowCaching, FileAccess access = FileAccess.ReadWrite, bool deleteOnDispose = false, FileShare share = FileShare.None, FileMode mode = FileMode.OpenOrCreate, V vvalueIfCreated = default(V))
 {
     this.allowCaching    = allowCaching;
     this.DeleteOnDispose = deleteOnDispose;
     _kSerializer         = kSerializer;
     _vSerializer         = vSerializer;
     _vvalueIfCreated     = vvalueIfCreated;
     _data = new PermaObject <PermaDictionaryData>(MutateFileName(name, x => "__DICTIONARY_DATA_" + x), deleteOnDispose, access, share, mode, new PermaDictionaryData(0, ""), allowCaching);
     LoadDictionary(true);
 }
Example #2
0
 public T this[string identifier]
 {
     get
     {
         this.RefreshDefinitions();
         return(_dic[identifier].value);
     }
     set
     {
         this.RefreshDefinitions();
         if (identifier.Contains(_defSeperator))
         {
             throw new Exception("cannot create entry with the separator in it");
         }
         if (!_dic.ContainsKey(identifier))
         {
             _dic[identifier] = new PermaObject <T>(_serializer,
                                                    MutateFileName(name, k => "__DICTIONARYMEMBER_" + identifier + "_" + k), DeleteOnDispose, _definitions.access, _definitions.share, FileMode.Create);
             _definitions.value += identifier + _defSeperator;
         }
         _dic[identifier].value = value;
     }
 }
Example #3
0
 public PermaCollection(IFormatter <T> serializer, string name, bool deleteOnDispose = false, FileAccess access = FileAccess.ReadWrite, FileShare share = FileShare.None, FileMode mode = FileMode.OpenOrCreate)
 {
     _int     = new PermaLabeledDictionary <T>(serializer, name, null, deleteOnDispose, access, share, mode);
     _maxname = new PermaObject <long>(Utility.MutateFileName(name, k => "__COLLECTIONMAXINDEX_" + k), deleteOnDispose, access, share, mode);
 }