annotate orange/serialization/RegisterWrapper.d @ 26:78e5fef4bbf2 experimental

Third step in refactoring the API. Stating to add unit tests.
author Jacob Carlborg <doob@me.com>
date Tue, 19 Oct 2010 10:22:10 +0200
parents 9f6064f9505a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
1 /**
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
2 * Copyright: Copyright (c) 2010 Jacob Carlborg.
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
3 * Authors: Jacob Carlborg
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
4 * Version: Initial created: Feb 4, 2010
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
5 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
6 */
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
7 module orange.serialization.RegisterWrapper;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
8
26
78e5fef4bbf2 Third step in refactoring the API. Stating to add unit tests.
Jacob Carlborg <doob@me.com>
parents: 15
diff changeset
9 //import orange.serialization.archives.Archive;
78e5fef4bbf2 Third step in refactoring the API. Stating to add unit tests.
Jacob Carlborg <doob@me.com>
parents: 15
diff changeset
10 //import orange.serialization.Serializer;
78e5fef4bbf2 Third step in refactoring the API. Stating to add unit tests.
Jacob Carlborg <doob@me.com>
parents: 15
diff changeset
11 import orange.core.string;
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
12
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
13 class RegisterBase
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
14 {
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
15
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
16 }
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
17
15
9f6064f9505a Changed from archive to serializer in the register wrappers.
Jacob Carlborg <doob@me.com>
parents: 4
diff changeset
18 class SerializeRegisterWrapper (T, SerializerType) : RegisterBase
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
19 {
26
78e5fef4bbf2 Third step in refactoring the API. Stating to add unit tests.
Jacob Carlborg <doob@me.com>
parents: 15
diff changeset
20 private void delegate (T, SerializerType, string) dg;
4
470ab5270d0c Simplified the implementation of RegisterWrapper. Fixed: the base class of an object was not serialized
Jacob Carlborg <doob@me.com>
parents: 0
diff changeset
21 private bool isDelegate;
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
22
26
78e5fef4bbf2 Third step in refactoring the API. Stating to add unit tests.
Jacob Carlborg <doob@me.com>
parents: 15
diff changeset
23 this (void delegate (T, SerializerType, string) dg)
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
24 {
4
470ab5270d0c Simplified the implementation of RegisterWrapper. Fixed: the base class of an object was not serialized
Jacob Carlborg <doob@me.com>
parents: 0
diff changeset
25 isDelegate = true;
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
26 this.dg = dg;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
27 }
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
28
26
78e5fef4bbf2 Third step in refactoring the API. Stating to add unit tests.
Jacob Carlborg <doob@me.com>
parents: 15
diff changeset
29 this (void function (T, SerializerType, string) func)
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
30 {
4
470ab5270d0c Simplified the implementation of RegisterWrapper. Fixed: the base class of an object was not serialized
Jacob Carlborg <doob@me.com>
parents: 0
diff changeset
31 dg.funcptr = func;
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
32 }
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
33
26
78e5fef4bbf2 Third step in refactoring the API. Stating to add unit tests.
Jacob Carlborg <doob@me.com>
parents: 15
diff changeset
34 void opCall (T value, SerializerType archive, string key)
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
35 {
4
470ab5270d0c Simplified the implementation of RegisterWrapper. Fixed: the base class of an object was not serialized
Jacob Carlborg <doob@me.com>
parents: 0
diff changeset
36 if (dg && isDelegate)
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
37 dg(value, archive, key);
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
38
4
470ab5270d0c Simplified the implementation of RegisterWrapper. Fixed: the base class of an object was not serialized
Jacob Carlborg <doob@me.com>
parents: 0
diff changeset
39 else if (dg)
470ab5270d0c Simplified the implementation of RegisterWrapper. Fixed: the base class of an object was not serialized
Jacob Carlborg <doob@me.com>
parents: 0
diff changeset
40 dg.funcptr(value, archive, key);
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
41 }
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
42 }
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
43
15
9f6064f9505a Changed from archive to serializer in the register wrappers.
Jacob Carlborg <doob@me.com>
parents: 4
diff changeset
44 class DeserializeRegisterWrapper (T, SerializerType) : RegisterBase
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
45 {
26
78e5fef4bbf2 Third step in refactoring the API. Stating to add unit tests.
Jacob Carlborg <doob@me.com>
parents: 15
diff changeset
46 private void delegate (ref T, SerializerType, string) dg;
4
470ab5270d0c Simplified the implementation of RegisterWrapper. Fixed: the base class of an object was not serialized
Jacob Carlborg <doob@me.com>
parents: 0
diff changeset
47 private bool isDelegate;
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
48
26
78e5fef4bbf2 Third step in refactoring the API. Stating to add unit tests.
Jacob Carlborg <doob@me.com>
parents: 15
diff changeset
49 this (void delegate (ref T, SerializerType, string) dg)
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
50 {
4
470ab5270d0c Simplified the implementation of RegisterWrapper. Fixed: the base class of an object was not serialized
Jacob Carlborg <doob@me.com>
parents: 0
diff changeset
51 isDelegate = true;
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
52 this.dg = dg;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
53 }
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
54
26
78e5fef4bbf2 Third step in refactoring the API. Stating to add unit tests.
Jacob Carlborg <doob@me.com>
parents: 15
diff changeset
55 this (void function (ref T, SerializerType, string) func)
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
56 {
4
470ab5270d0c Simplified the implementation of RegisterWrapper. Fixed: the base class of an object was not serialized
Jacob Carlborg <doob@me.com>
parents: 0
diff changeset
57 dg.funcptr = func;
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
58 }
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
59
26
78e5fef4bbf2 Third step in refactoring the API. Stating to add unit tests.
Jacob Carlborg <doob@me.com>
parents: 15
diff changeset
60 void opCall (ref T value, SerializerType archive, string key)
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
61 {
4
470ab5270d0c Simplified the implementation of RegisterWrapper. Fixed: the base class of an object was not serialized
Jacob Carlborg <doob@me.com>
parents: 0
diff changeset
62 if (dg && isDelegate)
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
63 dg(value, archive, key);
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
64
4
470ab5270d0c Simplified the implementation of RegisterWrapper. Fixed: the base class of an object was not serialized
Jacob Carlborg <doob@me.com>
parents: 0
diff changeset
65 if (dg)
470ab5270d0c Simplified the implementation of RegisterWrapper. Fixed: the base class of an object was not serialized
Jacob Carlborg <doob@me.com>
parents: 0
diff changeset
66 dg.funcptr(value, archive, key);
0
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
67 }
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
68 }