comparison orange/serialization/Events.d @ 0:f7b078e85f7f

First commit
author Jacob Carlborg <doob@me.com>
date Wed, 26 May 2010 17:19:13 +0200
parents
children 8b9409423740
comparison
equal deleted inserted replaced
-1:000000000000 0:f7b078e85f7f
1 /**
2 * Copyright: Copyright (c) 2010 Jacob Carlborg.
3 * Authors: Jacob Carlborg
4 * Version: Initial created: Jan 26, 2010
5 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
6 */
7 module orange.serialization.Events;
8
9 import orange.util._;
10
11 template OnDeserialized (alias method)
12 {
13 orange.serialization.Events.Event!(method) __onDeserialized;
14 }
15
16 template OnDeserializing (alias method)
17 {
18 orange.serialization.Events.Event!(method) __onDeserializing;
19 }
20
21 template OnSerialized (alias method)
22 {
23 orange.serialization.Events.Event!(method) __onSerialized;
24 }
25
26 template OnSerializing (alias method)
27 {
28 orange.serialization.Events.Event!(method) __onSerializing;
29 }
30
31 struct Event (alias m)
32 {
33 private const method = &m;
34
35 void opCall (T) (T value)
36 {
37 void delegate () dg;
38 dg.ptr = cast(void*) value;
39 dg.funcptr = method;
40 dg();
41 }
42 }
43
44 package const onDeserializedField = "__onDeserialized";
45 package const onDeserializingField = "__onDeserializing";
46 package const onSerializedField = "__onSerialized";
47 package const onSerializingField = "__onSerializing";