home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 20 / win_txl / txl.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-03-13  |  11.1 KB  |  425 lines

  1. /************************************************************************
  2. *                .......................................                *
  3. *                .                                     .                *
  4. *                .       TOOLBOX - INTERPRETER         .                *
  5. *                .           HEADER ->*.C              .                *
  6. *                .               TXL.H                 .                *
  7. *                .......................................                *
  8. *************************************************************************/
  9.  
  10. #define MN_ACHT     8
  11. #define MN_ZEHN     10
  12. #define MN_ZWLF     12
  13. #define MN_DRZN     13
  14. #define MN_FFZN     15
  15. #define MN_SHZN     16
  16. #define MN_ACZN     18
  17. #define MN_NNZN     19
  18. #define MN_ZWAN     20
  19. #define MN_EIZW     21
  20. #define MN_ZWZW     22
  21. #define MN_VRZW     24
  22. #define MN_SXZW     26
  23. #define MN_SIZW     27
  24. #define MN_ACZW     28
  25. #define MN_NNZW     29
  26. #define MN_DRSG     30
  27. #define MN_ZWSG     32
  28. #define MN_FFSG     35
  29. #define MN_SXSG     36
  30. #define MN_SISG     37
  31. #define MN_ACSG     38
  32. #define MN_NNSG     39
  33. #define MN_VRZG     40
  34. #define MN_ZWZG     42
  35. #define MN_VVZG     44
  36. #define MN_FFZG     45
  37. #define MN_ACZG     48
  38. #define MN_FFZC     50
  39. #define MN_ZWZC     52
  40. #define MN_VFZC     54
  41. #define MN_SXZC     56
  42. #define IDSNAME     100
  43. #define IDSABOUT    200
  44. #define IDSTITLE    300
  45. #define MN_EXIT     101
  46. #define MN_HELP     102
  47. #define MN_QUESTION 103
  48. #define MN_TEXT     104
  49.  
  50. #define MN_COPY     105
  51. #define MN_UNDO     106
  52. #define MN_CUT      107
  53. #define MN_CLEAR    108
  54. #define MN_ELOAD    109
  55. #define MN_ESAVE    110
  56. #define MN_SELECT   111
  57. #define MN_SEARCH   112
  58. #define MN_WSEARCH  113
  59. #define MN_ERSETZE  114
  60. #define MN_WERSETZE 115
  61. #define MN_EDITOR   116
  62. #define MN_CLS      117
  63. #define MN_TYPESET  118
  64. #define MN_LIST     119
  65. #define MN_RUN      120
  66.  
  67. #define MN_LOAD     121
  68. #define MN_SAVE     122
  69. #define MN_MONO     123
  70. #define MN_INTERPR  124
  71. #define MN_SCREEN   125
  72.  
  73. #define MN_SYSFON   126
  74. #define MN_TERFON   127
  75. #define MN_HELFON   128
  76. #define MN_COUFON   129
  77. #define MN_TMSFON   130
  78. #define MN_ROMFON   131
  79. #define MN_SCRFON   132
  80. #define MN_MODFON   133
  81.  
  82. #define OP_DEF      136
  83. #define OP_CHAR     137
  84. #define OP_STRING   138
  85. #define OP_STROKE   139
  86. #define CL_DEF      140
  87. #define CL_CHAR     141
  88. #define CL_STROKE   142
  89. #define QU_DEF      143
  90. #define QU_DRAFT    144
  91. #define QU_PROOF    145
  92. #define FA_DEF      146
  93. #define FA_FIX      147
  94. #define FA_VAR      148
  95. #define FA_DNTC     149
  96. #define FA_DEC      150
  97. #define FA_MOD      151
  98. #define FA_ROM      152
  99. #define FA_SCR      153
  100. #define FA_SWS      154
  101. #define MW_OEM      155
  102. #define MW_ANSI     156
  103. #define MW_NORMAL   157
  104. #define MW_HEAVY    158
  105. #define MN_KURSIV   159
  106. #define MN_UNTERS   160
  107. #define MN_DURCHG   161
  108. #define MW_TEXTBOX  162
  109. #define MW_SYMB     163
  110. #define MW_TEXTHELP 167
  111. #define ID_FILENAME 168
  112. #define ID_EDIT     169
  113. #define ID_FILES    170
  114. #define ID_PATH     171
  115. #define ID_LISTBOX  172
  116. #define MN_PASTE    173
  117.  
  118.  
  119. #define ABOUTBOX      1
  120. #define TXLICON       1
  121. #define ERROR_1      -1
  122.  
  123. #define CR          0x0d
  124. #define LF          0x0a
  125. #define SPACE       0x20
  126. #define MAXDIM         3
  127.  
  128.  
  129. #define ZAHL        0x01
  130. #define TEXT        0x02
  131. #define FELD        0x03
  132.  
  133. #define VNLAENGE      10       /* 10 signifikante Zeichen */
  134. #define ZEILENLAENGE 256        /* Zeilenlaenge 80 Zeichen */
  135. #define FNAMLEN      128          /* Laenge des Filenamens */
  136. #define NAMLEN        20
  137. #define FORWHILETIEFE 10
  138.  
  139. /* Über "Steuer" bekannte Zeichenfolgen */
  140. #define ALPHA       0x01                    /* Buchstaben */
  141. #define ZIFFER      0x02                      /* Ganzzahl */
  142. #define FIXNUM      0x03                /* Fließkommazahl */
  143. #define FLONUM      0x04                /* Fließkommazahl */
  144. #define SONDER      0x05                 /* Sonderzeichen */
  145. #define STRING      0x06   /* Stringanfang wurde gefunden */
  146. #define EOLCHAR     0x07             /* Zeilenendezeichen */
  147. #define TRENNER     0x08         /* Trennzeichen */
  148. #define UNKNOWN     0xff         /* ungueltiger Steuercode */
  149.  
  150. /* Fehlermeldungen fuer den Scanner */
  151.  
  152. #define UNGL         0x3a
  153. #define KLGL         0x3b
  154. #define KL           0x3c
  155. #define GL           0x3d
  156. #define GR           0x3e
  157. #define GRGL         0x3f
  158.  
  159. #define AND          0x41
  160. #define OR           0x42
  161. #define XOR          0x43
  162. #define EQV          0x44
  163. #define NOT          0x45
  164.  
  165.  
  166. #define EOLFEHLER     -1              /* Zeilenende erreicht
  167.                                                    ohne Befehlsende */
  168. #define UNEOL         -1       /* unerwartetes Zeilenende */
  169. #define INVCHAR       -2   /* ungueltiges Zeichen gefunden */
  170. #define SCANOK         1       /* kein Fehler aufgetreten */
  171.  
  172.  
  173. /* Tokendefinitionen fuer die bekannten Befehle */
  174. #define TOKMIN      0x80
  175. #define TOKINPUT    0x81
  176. #define TOKTITLW    0x82
  177. #define TOKRECTANG  0x83
  178. #define TOKLINETO   0x84
  179. #define TOKELLIPSE  0x85
  180. #define TOKRUNDREC  0x86
  181. #define TOKARC      0x87
  182. #define TOKSETPXL   0x88
  183. #define TOKMOVEW    0x89
  184. #define TOKPIE      0x8a
  185. #define TOKDRUCKON  0x8b
  186. #define TOKNEU      0x8c
  187. #define TOKCLS      0x8d
  188. #define TOKRU       0x8e
  189. #define TOKDRUC     0x8f
  190. #define TOKNEW      0x90
  191. #define TOKI        0x91
  192. #define TOKLOA      0x92
  193. #define TOKSAV      0x93
  194. #define TOKGOT      0x94
  195. #define TOKEN       0x95
  196. #define TOKEXI      0x96
  197. #define TOKMERK     0x97
  198. #define TOKLIS      0x98
  199. #define TOKlET      0x99
  200. #define TOKSCREEN   0x9a
  201. #define TOKLLIST    0x9b
  202. #define TOKLOCATE   0x9c
  203. #define TOKRECTL    0x9d
  204. #define TOKFLOODF   0x9e
  205. #define TOKTEXTCOL  0x9f
  206. #define TOKBACKDRD  0xa0
  207. #define TOKCOLOR    0xa1
  208. #define TOKPENCOL   0xa2
  209. #define TOKMSGBOX   0xa3
  210. #define TOKVIERECK  0xa4
  211. #define TOKRECTLIN  0xa5
  212. #define TOKINLINE   0xa6
  213. #define TOKFOR      0xa7
  214. #define TOKNEXT     0xa8
  215. #define TOKWHILE    0xa9
  216. #define TOKWEND     0xaa
  217. #define TOKCURSOR   0xab
  218. #define TOKRUNBREAK 0xac
  219. #define TOKCOMMANDS 0xad
  220. #define TOKMESSBEEP 0xae
  221. #define TOKREADCLPB 0xaf
  222. #define TOKWRITECLP 0xb0
  223. #define TOKMAX      0xbd
  224.  
  225. #define VARIABLE    0
  226. #define INPUT       1
  227. #define FORNEXT     2
  228. #define INLINE      3
  229.  
  230. #define OK          1
  231.  
  232. /* Tokendefinitionen fuer die Unaeren Funktionen */
  233.  
  234. #define Ln          0x61
  235. #define Log         0x62
  236. #define Exponent    0x63
  237. #define Sinus       0x64
  238. #define Cosinus     0x65
  239. #define Tangens     0x66
  240. #define ArcSin      0x67
  241. #define ArcCos      0x68
  242. #define ArcTan      0x69
  243. #define SinHyp      0x6A
  244. #define CosHyp      0x6B
  245. #define TanHyp      0x6C
  246. #define Sqrt        0x6D
  247. #define Frac        0x6E
  248. #define Absolut     0x6F
  249. #define Cotangens   0x70
  250. #define ArcTanHyp   0x71
  251. #define ArcCot      0x72
  252. #define SIGN        0x73
  253. #define Round       0x74
  254.  
  255.  
  256. #define e           2.718281829L
  257. #define PI_HALBE    1.570796327L
  258. #define pi          3.14159265358979323846L
  259. #define grad        pi/180
  260. #define pitograd    180/pi
  261.  
  262. typedef struct NODESTRUCT *PTNODE;
  263.  
  264. typedef struct NODESTRUCT {
  265.   unsigned char operator;
  266.   double  *operand;
  267.   PTNODE LeftAst,RightAst;
  268. } NODESTRUCT;
  269.  
  270.  
  271. typedef struct prgzeile {
  272.   int             LineNumber;
  273.   char            Zeile[ZEILENLAENGE];
  274.   struct prgzeile *NextZeile;
  275.   struct prgzeile *PrevZeile;
  276. } PRGZEILE;
  277.  
  278. /* Variablendarstellung */
  279.  
  280. typedef struct vardef {
  281.   union uvar {
  282.     char               zeichen;
  283.     int                integer;
  284.     double             Flotype;
  285.     char               *text;
  286.     void               *feld;
  287.   } variable;
  288.   unsigned char        dim1;        /* Anzahl Dimensionen */
  289.   unsigned char        dimdef[MAXDIM];  /* Feldfestlegung */
  290. } VARDEF;
  291.  
  292. typedef struct var {
  293.   char                 VarName[VNLAENGE];
  294.   unsigned char        VarType;
  295.   VARDEF               VarWert;
  296.   void                 *NextVar;
  297. } VAR;
  298.  
  299. /* Funktionszeigerdefinition */
  300. typedef int            (*PTF)();
  301.  
  302. /* Typ zur Beschreibung der vorhandenen Befehle */
  303. typedef struct tokbef {
  304.   PTF        function;       /* Zeiger auf die C-Funktion */
  305.   char       *Befehl;        /* Zeiger auf den Bef.-Namen */
  306.   int        ParaCount;           /* Anzahl der Parameter */
  307.   int        CopyRest;          /* Restzeile in Interpreter-
  308.                                                    zeile uebernehmen */
  309. } TOKBEF;
  310.  
  311. typedef struct forarr{
  312.   PRGZEILE *Goto;
  313.   VAR      *forX;
  314.   char     *whilestr;
  315.   double    toY;
  316.   double    step;
  317. } FORARRAY;
  318.  
  319. void Spaces(int i);
  320. void Nullenweg(void);
  321. void menuecommand(HWND hWnd,WORD wParam);
  322. void ResetError (void);
  323. void fatal_error (char *FehlerMeldung);
  324. void serror (char      *FehlerMeldung);
  325. int ccolor(void);
  326. void makefont(void);
  327. void ErzeugeCursor(HWND hWnd);
  328. void Carret(unsigned char *String);
  329. int cviereck(void);
  330. int crectline(void);
  331. int cbackgrd(void);
  332. int cpencolor(void);
  333. int creadclp(void);
  334. int cwritclp(void);
  335. int cplay(void);
  336. int cfor(void);
  337. int cnext(void);
  338. int csetprint(void);
  339. int cscreen(void);
  340. int ctextcol(void);
  341. int cflodfil(void);
  342. int ctexttype(void);
  343. int clocate(void);
  344. int cllist(void);
  345. DWORD SetRGBColor(int XW2);
  346. HDC GetPrinterDC(void);
  347. int FindInsPos (int LineNumber,PRGZEILE **InsPos);
  348. int ccls(void);
  349. int cmove(void);
  350. int cwtitle(void);
  351. int croundrect(void);
  352. int crectangle(void);
  353. int cpolyline(void);
  354. int csetpxl(void);
  355. int cellipse(void);
  356. int clineto(void);
  357. int crun(void);
  358. int crunb(void);
  359. int cset(void);
  360. int cinline(void);
  361. int cinput(void);
  362. int cdruck(void);
  363. int cif (void);
  364. int cpie(void);
  365. int carc(void);
  366. int cload(void);
  367. int csave(void);
  368. int cgoto(void);
  369. int cende(void);
  370. int cexit(void);
  371. int cmerke(void);
  372. int clist (void);
  373. int cneu(void);
  374. int messagebox(void);
  375. int cwhile(void);
  376. int cwend(void);
  377. int ccursor(void);
  378. int ccommands(void);
  379. int cbeep(void);
  380. int cplay(void);
  381.  
  382. int MsgBox(char *Questr);
  383. void   PRINTF(unsigned char *String);
  384. void   InsIntLine (void);
  385. int    DelLine (int LineNumber);
  386. void   InterAct (void);
  387. int    InterpLine (void);
  388. void   PosVar(char fkt[],unsigned char name[]);
  389. int    DoProgram (void);
  390. int    MakeToken (void);
  391. void   ShowLine (PRGZEILE *FindZeile);
  392. VAR  * IsVariable (char *Name);
  393. int    SetVar (VAR *Wert,BOOL Input);
  394. void   SetValue (VARDEF *Wert,VARDEF *NewVar,unsigned char Type);
  395. int    CmpVar (void);
  396. void   PrintVar (char *Name);
  397. int    CalcExpression (VAR *Result);
  398. void   ClearProg (void);
  399. int    Scan (void);
  400. void   NoSkipChar (void);
  401. void   SkipChar (void);
  402. void   GetGeklammert (char *buffer);
  403. int    ReadProg (void);
  404. int    WriteProg (void);
  405. void   SetFileName (char *FName);
  406. char   *GetFileName (void);
  407. int     TestBefehl (int *Befehl);
  408.  
  409. void Waehlbox(void);
  410. long FAR PASCAL txlWndProc(HWND, unsigned, WORD, LONG);
  411. void GetChar (void);
  412. void GetNextChar (void);
  413. void GetZahl (char *buffer);
  414. void GetBezeichner (char *buffer);
  415. void GetString (char *buffer);
  416. void SkipSpace (void);
  417. void Paramtozeichne(int was,int hole);
  418. void Zeichne(int was);
  419. void TEXTZEILE(HDC hDC,unsigned char *String);
  420. void ClearVar(void);
  421. int KlammerTok(void);
  422. int ReadInt (char *Name);
  423. void txlBitmap(HWND hWnd,HDC hDC);
  424.  
  425.