#ifndef GENERICH #define GENERICH 1 #pragma lib "ape/libap.a" #pragma lib "c++/libC.a" #define __name2(a,b) a ## b #define __name3(a,b,c) a ## b ## c #define __name4(a,b,c,d) a ## b ## c ## d #define name2(a,b) __name2(a,b) #define name3(a,b,c) __name3(a,b,c) #define name4(a,b,c,d) __name4(a,b,c,d) #define declare(a,t) name2(a,declare)(t) #define implement(a,t) name2(a,implement)(t) #define declare2(a,t1,t2) name2(a,declare2)(t1,t2) #define implement2(a,t1,t2) name2(a,implement2)(t1,t2) extern genericerror(int,char*); typedef int (*GPT)(int,char*); #define set_handler(generic,type,x) name4(set_,type,generic,_handler)(x) #define errorhandler(generic,type) name3(type,generic,handler) #define callerror(generic,type,a,b) (*errorhandler(generic,type))(a,b) #endif