|
|
1.1 root 1:
2:
3: #define GENERICH 1
4: #define name2(a,b) a\
5: b
6: #define name3(a,b,c) a\
7: b\
8: c
9: #define name4(a,b,c,d) a\
10: b\
11: c\
12: d
13:
14: #define declare(a,t) name2(a,declare)(t)
15: #define implement(a,t) name2(a,implement)(t)
16: #define declare2(a,t1,t2) name2(a,declare2)(t1,t2)
17: #define implement2(a,t1,t2) name2(a,implement2)(t1,t2)
18:
19:
20: extern genericerror(int,char*);
21: typedef int (*GPT)(int,char*);
22: #define set_handler(generic,type,x) name4(set_,type,generic,_handler)(x)
23: #define errorhandler(generic,type) name3(type,generic,handler)
24: #define callerror(generic,type,a,b) (*errorhandler(generic,type))(a,b)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.