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