scol_plugin_lin.h
00001 /* 00002 SCOLPLUGIN.H . 1996-99 . Sylvain HUET 00003 00004 definitions pour les plugins Scol 00005 */ 00006 00007 00008 #ifndef SCOLPLUGIN_H 00009 #define SCOLPLUGIN_H 00010 00011 00012 00013 #include <stdio.h> 00014 #include <stdlib.h> 00015 00016 /* DEFINITIONS DE TYPES ET DE CONSTANTES 00017 ---------------------------------------*/ 00018 /* $iri -> */ 00019 #define SizeWord 4 00020 #define SizeHeader 3 00021 /* <- $iri */ 00022 00023 #define NIL -1 00024 00025 /* machine virtuelle Scol */ 00026 struct Mmachine 00027 { 00028 int *tape; /* pointeur vers la bande */ 00029 int sizetape; /* taille de la bande (en mots) */ 00030 int pp; /* pointeur de pile */ 00031 int maxpp; /* valeur max de pp */ 00032 int topheap; /* sommet du tas */ 00033 int sigGC; /* distance declenchant le GC */ 00034 int h; /* position header courant */ 00035 int err; 00036 int *top; /* top of tape */ /* add by $iri */ 00037 }; 00038 typedef struct Mmachine *mmachine; 00039 00040 extern mmachine mm; 00041 00042 /* masque pour MMmalloc : tableau d'objets ou buffer quelconque */ 00043 #define TYPETAB 1 00044 #define TYPEBUF 0 00045 00046 /* definitions des erreurs */ 00047 #define MERREND 1 00048 #define MERROK 0 00049 #define MERRMEM -1 00050 #define MERRTYP -2 00051 #define MERRRET -3 00052 #define MERRNUL -4 00053 #define MERRNF -5 00054 #define MERRLINK -6 00055 #define MERRFULL -7 00056 #define MERRUNKNOWN -8 00057 #define MERRTOOLARGE -9 00058 00059 /* definition des offsets objets */ 00060 #define OFFSCCUR 0 00061 00062 #define OFFOBJMAG 0 00063 #define OFFOBJCHN 1 00064 #define OFFOBJTYP 2 00065 #define OFFOBJHAND 3 00066 #define OFFOBJTPERE 4 00067 #define OFFOBJHPERE 5 00068 #define OFFOBJREF0 6 00069 #define OFFOBJUSER0 7 00070 00071 /* definitions des masques de message console */ 00072 #define MSKFOO 1 00073 #define MSKRUNTIME 2 00074 #define MSKWARNING 4 00075 #define MSKTRACE 8 00076 #define MSKDEBUG 16 00077 00078 00079 /* types Scol predefinis */ 00080 #define TYPVAR -1 00081 #define TYPCONS -2 00082 #define TYPTYPE -3 00083 #define TYPFIELD -4 00084 #define TYPSTRUC -5 00085 #define TYPCONS0 -6 00086 #define TYPCOM -7 00087 #define TYPCOMV -8 00088 00089 00090 /* GESTION DES FICHIERS EN SCOL 00091 ------------------------------*/ 00092 00093 #define SIZESIGN 1024 00094 00095 struct Packdir 00096 { 00097 char path[SIZESIGN]; /* se termine par '/' */ 00098 int quota; /* -1: read only, 0: unlimited */ 00099 struct Packdir *next; 00100 }; 00101 typedef struct Packdir *packdir; 00102 00103 #define TYPESNONE 0 00104 #define TYPESLOGIC 1 00105 00106 00107 /* FONCTIONS DU KERNEL EXPORTEES VERS LE PLUGIN 00108 ----------------------------------------------*/ 00109 #ifdef __cplusplus 00110 extern "C" { 00111 #endif 00112 int MMpush (mmachine m, int val); 00113 int MMpushNoGC (mmachine m, int val); 00114 int MMpull(mmachine m); 00115 int MMgetPP(mmachine m); 00116 void MMsetPP(mmachine m,int i); 00117 int MMget(mmachine m,int i); 00118 void MMset(mmachine m,int i,int v); 00119 int MMgetglobal(mmachine m,int i); 00120 void MMsetglobal(mmachine m,int i,int v); 00121 int MMgetbase(mmachine m,int b,int i); 00122 void MMsetbase(mmachine m,int b,int i,int v); 00123 int MMfetch(mmachine m,int s,int i); 00124 void MMstore(mmachine m,int s,int i,int v); 00125 int* MMstart(mmachine m,int s); 00126 int MMsize(mmachine m,int s); 00127 int MMtype(mmachine m,int s); 00128 char* MMstartstr(mmachine m,int s); 00129 int MMsizestr(mmachine m,int s); 00130 void MMsetsizestr(mmachine m,int s,int size); 00131 int MMmalloc(mmachine m, int size, int type); 00132 int MMmallocCLR(mmachine m, int size, int type); 00133 int Mpushstrbloc(mmachine m,char *buf); 00134 int MBdeftab(mmachine m); 00135 int MBstrcat(mmachine m); 00136 void MMechostr(int i,char *buf,...); 00137 int SPfindfile(packdir p,char *sign,int *size,char *path); 00138 int SPaddfile(packdir p,char *sign,int size,char *path); 00139 int SCgetsocket(mmachine m, int channel); 00140 int SCgetsrvsocket(mmachine m, int server); 00141 int MBstrcatn(mmachine m); 00142 int Minterpreter(mmachine m); 00143 int PKhardpak(mmachine m, char *name, 00144 int n, char **namefun, int (**fun)(mmachine z), 00145 int *nargfun, char **typfun); 00146 int PKloader(mmachine m,char *name,char *simplename); 00147 00148 size_t fread(void* buf,size_t i,size_t j,FILE *f); 00149 00150 int MMneedMemory(mmachine m,int size,int realsize); /* $Iri */ 00151 #ifdef __cplusplus 00152 } 00153 #endif 00154 00155 00156 00157 int Mcutting(char *comm, char **argv); 00158 00159 #ifdef __cplusplus 00160 extern "C" { 00161 #endif 00162 int OBJcreate(mmachine m,int typ,int handsys,int typpere,int handsyspere); 00163 int OBJaddreflex(mmachine m,int typ, int num); 00164 int OBJbeginreflex(mmachine m,int typ,int handsys,int num); 00165 int OBJdel(mmachine m,int p,int flag); 00166 int OBJdestroy(mmachine m, int typ,int handsys,int objm,int flag); 00167 int OBJdelTH(mmachine m,int typ,int handsys); 00168 int OBJcallreflex(mmachine m,int nbarg); 00169 int OBJregister(int nbrefl,int recrefl,int (*destroy)(mmachine m,int handsys,int objm),char *name); 00170 int OBJtypebyname(char *name); 00171 int OBJdefEvent(int event,int (*cbevent)(mmachine m,int hwnd, unsigned msg, 00172 int wParam,int lParam,int *ret)); 00173 int OBJgetUserEvent(); 00174 00175 00176 int OBJdelTM(mmachine m,int typ,int q); 00177 int OBJfindTH(mmachine m,int typ,int handsys); 00178 int OBJfindTM(mmachine m,int typ,int objm); 00179 00180 00181 00182 extern int (*mt_start)(int per,int param,int (*fun)(int i,int param)); 00183 extern int (*mt_del)(int i); 00184 #ifdef __cplusplus 00185 } 00186 #endif 00187 char* stdloadJpg(char *name,int *w,int *h); 00188 int Mpushstrblocn(mmachine m,char *buf, int n); 00189 00190 int Msearchinsyspak(mmachine m, char *name); 00191 00192 int Buffer2texture(mmachine m, char *buffer, int width, int height); 00193 00194 00195 00196 void* objdd_get_buffer (mmachine m, int mobj); 00197 int _CRbitmap (mmachine m); 00198 00199 /* old ones 00200 int (*MMpush)(mmachine m, int val); 00201 int (*MMpushNoGC)(mmachine m, int val); 00202 int (*MMpull)(mmachine m); 00203 int (*MMgetPP)(mmachine m); 00204 void (*MMsetPP)(mmachine m,int i); 00205 int (*MMget)(mmachine m,int i); 00206 void (*MMset)(mmachine m,int i,int v); 00207 int (*MMgetglobal)(mmachine m,int i); 00208 void (*MMsetglobal)(mmachine m,int i,int v); 00209 int (*MMgetbase)(mmachine m,int b,int i); 00210 void (*MMsetbase)(mmachine m,int b,int i,int v); 00211 int (*MMfetch)(mmachine m,int s,int i); 00212 void (*MMstore)(mmachine m,int s,int i,int v); 00213 int* (*MMstart)(mmachine m,int s); 00214 int (*MMsize)(mmachine m,int s); 00215 int (*MMtype)(mmachine m,int s); 00216 char* (*MMstartstr)(mmachine m,int s); 00217 int (*MMsizestr)(mmachine m,int s); 00218 void (*MMsetsizestr)(mmachine m,int s,int size); 00219 int (*MMmalloc)(mmachine m, int size, int type); 00220 int (*MMmallocCLR)(mmachine m, int size, int type); 00221 int (*Mpushstrbloc)(mmachine m,char *buf); 00222 int (*MBdeftab)(mmachine m); 00223 int (*MBstrcat)(mmachine m); 00224 int (*PKhardpak)(mmachine m, char *name, 00225 int n, char **namefun, int (**fun)(mmachine z) 00226 , int *nargfun, char **typfun); 00227 int (*PKloader)(mmachine m,char *name,char *simplename); 00228 int (*SPfindfile)(packdir p,char *sign,int *size,char *path); 00229 int (*SPaddfile)(packdir p,char *sign,int size,char *path); 00230 int (*SCgetsrvsocket)(mmachine m, int server); 00231 int (*SCgetsocket)(mmachine m, int channel); 00232 int (*Mcutting)(char *comm, char **argv); 00233 void (*MMechostr)(int i,char *buf,...); 00234 int (*fread)(char* buf,int i,int j,FILE *f); 00235 packdir Firstpack; 00236 int (*OBJcreate)(mmachine m,int typ,int handsys,int typpere,int handsyspere); 00237 int (*OBJaddreflex)(mmachine m,int typ, int num); 00238 int (*OBJbeginreflex)(mmachine m,int typ,int handsys,int num); 00239 int (*OBJdel)(mmachine m,int p,int flag); 00240 int (*OBJdestroy)(mmachine m, int typ,int handsys,int objm,int flag); 00241 int (*OBJdelTH)(mmachine m,int typ,int handsys); 00242 int (*OBJcallreflex)(mmachine m,int nbarg); 00243 int (*OBJregister)(int nbrefl,int recrefl,int (*destroy)(mmachine m,int handsys,int objm),char *name); 00244 int (*OBJtypebyname)(char *name); 00245 int (*OBJdefEvent)(int event,int (*cbevent)(mmachine m,HWND hwnd, unsigned msg, 00246 UINT wParam,LONG lParam,int *ret)); 00247 int (*OBJgetUserEvent)(); 00248 void* (*SCgetExtra)(char *funcname); 00249 char* (*stdloadJpg)(char *name,int *w,int *h); 00250 int (*OBJdelTM)(mmachine m,int typ,int q); 00251 int (*OBJfindTH)(mmachine m,int typ,int handsys); 00252 int (*OBJfindTM)(mmachine m,int typ,int objm); 00253 int (*Mpushstrblocn)(mmachine m,char *buf, int n); 00254 int (*Minterpreter)(mmachine m); 00255 int (*Msearchinsyspak)(mmachine m, char *name); 00256 int (*MBstrcatn)(mmachine m); 00257 */ 00258 00259 00260 00261 00262 00263 #endif 00264
Generated on Tue Mar 15 13:59:36 2011 for sqlite3 by 1.6.3