00001
00006
00007
00008
00009
00010
00011
00012 #ifdef __cplusplus
00013 extern "C" {
00014 #endif
00015
00016 #ifndef SCOLPLUGIN_H
00017 #define SCOLPLUGIN_H
00018
00019 #include <windows.h>
00020 #include <stdio.h>
00021 #include <objstr.h>
00022 #include <macro.h>
00023
00024
00025
00026
00027 #define SizeWord 4
00028 #define SizeHeader 3
00029
00030 #define NIL -1
00031
00032
00033 struct Mmachine
00034 {
00035 int *tape;
00036 int sizetape;
00037 int pp;
00038 int maxpp;
00039 int topheap;
00040 int sigGC;
00041 int h;
00042 int err;
00043 int *top;
00044
00045 int lckdGC;
00046 };
00047
00048 typedef struct Mmachine *mmachine;
00049
00050
00051 #define TYPETAB 1
00052 #define TYPEBUF 0
00053
00054
00055 #define MERREND 1
00056 #define MERROK 0
00057 #define MERRMEM -1
00058 #define MERRTYP -2
00059 #define MERRRET -3
00060 #define MERRNUL -4
00061 #define MERRNF -5
00062 #define MERRLINK -6
00063 #define MERRFULL -7
00064 #define MERRUNKNOWN -8
00065 #define MERRTOOLARGE -9
00066 #define MERREP -10
00067 #define MERRFILE -11
00068 #define MERRCLOSE -12
00069
00070 #define MERRCHNLDWN -13
00071
00072
00073 #define OFFSCCUR 0
00074
00075 #define OFFOBJMAG 0
00076 #define OFFOBJCHN 1
00077 #define OFFOBJTYP 2
00078 #define OFFOBJHAND 3
00079 #define OFFOBJTPERE 4
00080 #define OFFOBJHPERE 5
00081 #define OFFOBJREF0 6
00082 #define OFFOBJUSER0 7
00083
00084
00085 #define MSKFOO 1
00086 #define MSKRUNTIME 2
00087 #define MSKWARNING 4
00088 #define MSKTRACE 8
00089 #define MSKDEBUG 16
00090
00091
00092
00093 #define TYPVAR -1
00094 #define TYPCONS -2
00095 #define TYPTYPE -3
00096 #define TYPFIELD -4
00097 #define TYPSTRUC -5
00098 #define TYPCONS0 -6
00099 #define TYPCOM -7
00100 #define TYPCOMV -8
00101
00102
00103
00104
00105
00106 #define SIZESIGN 1024
00107
00108 struct Packdir
00109 {
00110 char path[SIZESIGN];
00111 int quota;
00112 struct Packdir *next;
00113 };
00114 typedef struct Packdir *packdir;
00115
00116 #define TYPESNONE 0
00117 #define TYPESLOGIC 1
00118
00119
00120
00121
00122
00123
00124 struct CBmachine
00125 {
00126 int (*MMpush)(mmachine m, int val);
00127 int (*MMpushNoGC)(mmachine m, int val);
00128 int (*MMpull)(mmachine m);
00129 int (*MMgetPP)(mmachine m);
00130 void (*MMsetPP)(mmachine m,int i);
00131 int (*MMget)(mmachine m,int i);
00132 void (*MMset)(mmachine m,int i,int v);
00133 int (*MMgetglobal)(mmachine m,int i);
00134 void (*MMsetglobal)(mmachine m,int i,int v);
00135 int (*MMgetbase)(mmachine m,int b,int i);
00136 void (*MMsetbase)(mmachine m,int b,int i,int v);
00137 int (*MMfetch)(mmachine m,int s,int i);
00138 void (*MMstore)(mmachine m,int s,int i,int v);
00139 int* (*MMstart)(mmachine m,int s);
00140 int (*MMsize)(mmachine m,int s);
00141 int (*MMtype)(mmachine m,int s);
00142 char* (*MMstartstr)(mmachine m,int s);
00143 int (*MMsizestr)(mmachine m,int s);
00144 void (*MMsetsizestr)(mmachine m,int s,int size);
00145 int (*MMmalloc)(mmachine m, int size, int type);
00146 int (*MMmallocCLR)(mmachine m, int size, int type);
00147 int (*Mpushstrbloc)(mmachine m,char *buf);
00148 int (*MBdeftab)(mmachine m);
00149 int (*MBstrcat)(mmachine m);
00150 int (*PKhardpak)(mmachine m, char *name,
00151 int n, char **namefun, int (**fun)(mmachine z),
00152 int *nargfun, char **typfun);
00153 int (*PKloader)(mmachine m,char *name,char *simplename);
00154 int (*SPfindfile)(packdir p,char *sign,int *size,char *path);
00155 int (*SPaddfile)(packdir p,char *sign,int size,char *path);
00156 int (*SCgetsrvsocket)(mmachine m, int server);
00157 int (*SCgetsocket)(mmachine m, int channel);
00158 int (*Mcutting)(char *comm, char **argv);
00159 void (*MMechostr)(int i,char *buf,...);
00160 size_t (*fread)(void* buf,size_t i,size_t j,FILE *f);
00161 packdir Firstpack;
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 void* (*SCgetExtra)(char *funcname);
00175 char* (*stdloadJpg)(char *name,int *w,int *h);
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 int (*Mpushstrblocn)(mmachine m,char *buf, int n);
00180 int (*Minterpreter)(mmachine m);
00181 int (*Msearchinsyspak)(mmachine m, char *name);
00182 int (*MBstrcatn)(mmachine m);
00183 int (*Buffer2texture)(mmachine m, char *buffer, int width, int height);
00184 void (*MMputs)(int i, const char* text);
00185
00186
00187 int (*OBJgetNewHandler)();
00188
00189
00190 };
00191 typedef struct CBmachine *cbmachine;
00192
00193 extern cbmachine ww;
00194
00195 #define SCOLinitplugin(X) ww=X
00196
00197 #define MMpush (ww->MMpush)
00198 #define MMpushNoGC (ww->MMpushNoGC)
00199 #define MMpull (ww->MMpull)
00200 #define MMgetPP (ww->MMgetPP)
00201 #define MMsetPP (ww->MMsetPP)
00202 #define MMget (ww->MMget)
00203 #define MMset (ww->MMset)
00204 #define MMgetglobal (ww->MMgetglobal)
00205 #define MMsetglobal (ww->MMsetglobal)
00206 #define MMgetbase (ww->MMgetbase)
00207 #define MMsetbase (ww->MMsetbase)
00208 #define MMfetch (ww->MMfetch)
00209 #define MMstore (ww->MMstore)
00210 #define MMstart (ww->MMstart)
00211 #define MMsize (ww->MMsize)
00212 #define MMtype (ww->MMtype)
00213 #define MMstartstr (ww->MMstartstr)
00214 #define MMsizestr (ww->MMsizestr)
00215 #define MMsetsizestr (ww->MMsetsizestr)
00216 #define MMmalloc (ww->MMmalloc)
00217 #define MMmallocCLR (ww->MMmallocCLR)
00218 #define Mpushstrbloc (ww->Mpushstrbloc)
00219 #define MBdeftab (ww->MBdeftab)
00220 #define MBstrcat (ww->MBstrcat)
00221 #define PKhardpak (ww->PKhardpak)
00222 #define PKloader (ww->PKloader)
00223 #define SPfindfile (ww->SPfindfile)
00224 #define SPaddfile (ww->SPaddfile)
00225 #define SCgetsrvsocket (ww->SCgetsrvsocket)
00226 #define SCgetsocket (ww->SCgetsocket)
00227 #define Mcutting (ww->Mcutting)
00228 #define MMechostr (ww->MMechostr)
00229
00230 #define Firstpack (ww->Firstpack)
00231 #define OBJcreate (ww->OBJcreate)
00232 #define OBJaddreflex (ww->OBJaddreflex)
00233 #define OBJbeginreflex (ww->OBJbeginreflex)
00234 #define OBJdel (ww->OBJdel)
00235 #define OBJdestroy (ww->OBJdestroy)
00236 #define OBJdelTH (ww->OBJdelTH)
00237 #define OBJcallreflex (ww->OBJcallreflex)
00238 #define OBJregister (ww->OBJregister)
00239 #define OBJtypebyname (ww->OBJtypebyname)
00240 #define OBJdefEvent (ww->OBJdefEvent)
00241 #define OBJgetUserEvent (ww->OBJgetUserEvent)
00242 #define SCgetExtra (ww->SCgetExtra)
00243 #define stdloadJpg (ww->stdloadJpg)
00244 #define OBJdelTM (ww->OBJdelTM)
00245 #define OBJfindTH (ww->OBJfindTH)
00246 #define OBJfindTM (ww->OBJfindTM)
00247 #define Mpushstrblocn (ww->Mpushstrblocn)
00248 #define Minterpreter (ww->Minterpreter)
00249 #define Msearchinsyspak (ww->Msearchinsyspak)
00250 #define MBstrcatn (ww->MBstrcatn)
00251 #define Buf2Tex (ww->Buffer2texture)
00252 #define MMputs (ww->MMputs)
00253
00254
00255 #define OBJgetNewHandler (ww->OBJgetNewHandler)
00256
00257
00258 #endif
00259
00260 #ifdef __cplusplus
00261 }
00262 #endif