annotate orange/serialization/RegisterWrapper.d @ 0:f7b078e85f7f

First commit
author Jacob Carlborg <doob@me.com>
date Wed, 26 May 2010 17:19:13 +0200
parents
children 470ab5270d0c
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
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
9 import orange.serialization.archives.Archive;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
10 import orange.serialization.Serializer;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
11
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
12 class RegisterBase
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
13 {
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 class SerializeRegisterWrapper (T, ArchiveType : IArchive) : RegisterBase
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
18 {
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
19 private alias Serializer!(ArchiveType) SerializerType;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
20 private alias SerializerType.DataType DataType;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
21 private void delegate (T, SerializerType, DataType) dg;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
22 private void function (T, SerializerType, DataType) func;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
23
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
24 this (void delegate (T, SerializerType, DataType) dg)
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
25 {
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
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
29 this (void function (T, SerializerType, DataType) func)
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
30 {
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
31 this.func = func;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
32 }
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
33
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
34 void opCall (T value, SerializerType archive, DataType key)
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
35 {
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
36 if (dg)
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
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
39 else if (func)
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
40 func(value, archive, key);
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
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
44 class DeserializeRegisterWrapper (T, ArchiveType : IArchive) : RegisterBase
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
45 {
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
46 private alias Serializer!(ArchiveType) SerializerType;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
47 private alias SerializerType.DataType DataType;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
48 private void delegate (ref T, SerializerType, DataType) dg;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
49 private void function (ref T, SerializerType, DataType) func;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
50
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
51 this (void delegate (ref T, SerializerType, DataType) dg)
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
52 {
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
53 this.dg = dg;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
54 }
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
55
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
56 this (void function (ref T, SerializerType, DataType) func)
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
57 {
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
58 this.func = func;
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
59 }
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
60
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
61 void opCall (ref T value, SerializerType archive, DataType key)
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
62 {
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
63 if (dg)
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
64 dg(value, archive, key);
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
65
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
66 if (func)
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
67 func(value, archive, key);
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
68 }
f7b078e85f7f First commit
Jacob Carlborg <doob@me.com>
parents:
diff changeset
69 }