|
|
1.1 ! root 1: ! 2: ! 3: #define GENERICH 1 ! 4: #ifdef BSD ! 5: #define name2(a,b) a\ ! 6: b ! 7: #define name3(a,b,c) a\ ! 8: b\ ! 9: c ! 10: #define name4(a,b,c,d) a\ ! 11: b\ ! 12: c\ ! 13: d ! 14: #else ! 15: #define name2(a,b) a/**/b ! 16: #define name3(a,b,c) a/**/b/**/c ! 17: #define name4(a,b,c,d) a/**/b/**/c/**/d ! 18: #endif ! 19: ! 20: #define declare(a,t) name2(a,declare)(t) ! 21: #define implement(a,t) name2(a,implement)(t) ! 22: #define declare2(a,t1,t2) name2(a,declare2)(t1,t2) ! 23: #define implement2(a,t1,t2) name2(a,implement2)(t1,t2) ! 24: ! 25: ! 26: extern genericerror(int,char*); ! 27: typedef int (*GPT)(int,char*); ! 28: #define set_handler(generic,type,x) name4(set_,type,generic,_handler)(x) ! 29: #define errorhandler(generic,type) name3(type,generic,handler) ! 30: #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.