comparison orange/serialization/archives/Archive.d @ 28:bffcbc8c392b experimental

Associative arrays are now treated as references.
author Jacob Carlborg <doob@me.com>
date Fri, 19 Nov 2010 11:55:04 +0100
parents 78e5fef4bbf2
children c422ff6477dd
comparison
equal deleted inserted replaced
27:fc315d786f24 28:bffcbc8c392b
45 size_t length; 45 size_t length;
46 size_t offset; 46 size_t offset;
47 size_t id = size_t.max; 47 size_t id = size_t.max;
48 } 48 }
49 49
50 interface IArchive 50 interface Archive
51 { 51 {
52 alias Serializer.Id Id; 52 alias Serializer.Id Id;
53 53
54 void beginArchiving (); 54 void beginArchiving ();
55 void beginUnarchiving (UntypedData data); 55 void beginUnarchiving (UntypedData data);
111 void archive (ushort value, string key, Id id); 111 void archive (ushort value, string key, Id id);
112 void archive (wchar value, string key, Id id); 112 void archive (wchar value, string key, Id id);
113 113
114 Id unarchiveArray (string key, void delegate (size_t length) dg); 114 Id unarchiveArray (string key, void delegate (size_t length) dg);
115 void unarchiveArray (Id id, void delegate (size_t length) dg); 115 void unarchiveArray (Id id, void delegate (size_t length) dg);
116 void unarchiveAssociativeArray (string type, void delegate (size_t length) dg); 116 Id unarchiveAssociativeArray (string type, void delegate (size_t length) dg);
117 void unarchiveAssociativeArrayKey (string key, void delegate () dg); 117 void unarchiveAssociativeArrayKey (string key, void delegate () dg);
118 void unarchiveAssociativeArrayValue (string key, void delegate () dg); 118 void unarchiveAssociativeArrayValue (string key, void delegate () dg);
119 119
120 bool unarchiveEnumBool (string key); 120 bool unarchiveEnumBool (string key);
121 byte unarchiveEnumByte (string key); 121 byte unarchiveEnumByte (string key);
171 wchar unarchiveWchar (string key); 171 wchar unarchiveWchar (string key);
172 172
173 void postProcessArray (Id id); 173 void postProcessArray (Id id);
174 } 174 }
175 175
176 abstract class Archive (U) : IArchive 176 abstract class Base (U) : Archive
177 { 177 {
178 version (Tango) alias U[] Data; 178 version (Tango) alias U[] Data;
179 else mixin ("alias immutable(U)[] Data;"); 179 else mixin ("alias immutable(U)[] Data;");
180 180
181 alias void delegate (ArchiveException exception, string[] data) ErrorCallback; 181 alias void delegate (ArchiveException exception, string[] data) ErrorCallback;