hedgewars/pas2c.h
changeset 8887 539380a498e4
parent 8792 af4ab297b2b7
parent 8884 08fe08651130
child 8889 74abe69d8569
equal deleted inserted replaced
8792:af4ab297b2b7 8887:539380a498e4
     1 #pragma once
       
     2 
       
     3 #include <stddef.h>
       
     4 #include <stdint.h>
       
     5 #include <stdbool.h>
       
     6 #include <wchar.h>
       
     7 
       
     8 typedef union string255_
       
     9     {
       
    10         struct {
       
    11             char s[256];
       
    12         };
       
    13         struct {
       
    14             char len;
       
    15             char str[255];
       
    16         };
       
    17     } string255;
       
    18 typedef struct string192_
       
    19     {
       
    20         char s[193];
       
    21     } string192;
       
    22 typedef struct string31_
       
    23     {
       
    24         char s[32];
       
    25     } string31;
       
    26 typedef struct string15_
       
    27     {
       
    28         char s[16];
       
    29     } string15;
       
    30 
       
    31 typedef string255 shortstring;
       
    32 typedef string255 ansistring;
       
    33     
       
    34 typedef uint8_t Byte;
       
    35 typedef int8_t ShortInt;
       
    36 typedef uint16_t Word;
       
    37 typedef int16_t SmallInt;
       
    38 typedef uint32_t LongWord;
       
    39 typedef int32_t LongInt;
       
    40 typedef uint64_t QWord;
       
    41 typedef int64_t Int64;
       
    42 typedef LongWord Cardinal;
       
    43 
       
    44 typedef LongInt Integer;
       
    45 typedef float extended;
       
    46 typedef float real;
       
    47 typedef float single;
       
    48 
       
    49 typedef bool boolean;
       
    50 typedef int LongBool;
       
    51 
       
    52 typedef void * pointer;
       
    53 typedef Byte * PByte;
       
    54 typedef char * PChar;
       
    55 typedef LongInt * PLongInt;
       
    56 typedef LongWord * PLongWord;
       
    57 typedef Integer * PInteger;
       
    58 typedef int PtrInt;
       
    59 typedef wchar_t widechar;
       
    60 
       
    61 #define new(a) __new((void **)&a, sizeof(*(a)))
       
    62 void __new(void ** p, int size);
       
    63 #define dispose(a) __dispose(a, sizeof(*(a)))
       
    64 void __dispose(pointer p, int size);
       
    65 
       
    66 void * GetMem(int size);
       
    67 void FreeMem(void * p, int size);
       
    68 
       
    69 #define FillChar(a, b, c) __FillChar(&(a), b, c)
       
    70 
       
    71 void __FillChar(pointer p, int size, char fill);
       
    72 string255 _strconcat(string255 a, string255 b);
       
    73 string255 _strappend(string255 s, char c);
       
    74 string255 _strprepend(char c, string255 s);
       
    75 string255 _chrconcat(char a, char b);
       
    76 bool _strcompare(string255 a, string255 b);
       
    77 bool _strcomparec(string255 a, char b);
       
    78 bool _strncompare(string255 a, string255 b);
       
    79 char * _pchar(string255 s);
       
    80 string255 pchar2str(char * s);
       
    81 
       
    82 int Length(string255 a);
       
    83 string255 copy(string255 a, int s, int l);
       
    84 string255 delete(string255 a, int s, int l);
       
    85 string255 trim(string255 a);
       
    86 
       
    87 #define STRINIT(a) {.len = sizeof(a) - 1, .str = a}
       
    88 
       
    89 
       
    90 int length_ar(void * a);
       
    91 
       
    92 typedef int file;
       
    93 typedef int TextFile;
       
    94 extern int FileMode;
       
    95 extern int IOResult;
       
    96 extern int stdout;
       
    97 extern int stderr;
       
    98 
       
    99 #define assign(a, b) assign_(&(a), b)
       
   100 void assign_(int * f, string255 fileName);
       
   101 void reset_1(int f, int size);
       
   102 void reset_2(int f, int size);
       
   103 #define BlockRead(a, b, c, d) BlockRead_(a, &(b), c, &(d))
       
   104 void BlockRead_(int f, void * p, int size, int * sizeRead);
       
   105 #define BlockWrite(a, b, c) BlockWrite_(a, &(b), c)
       
   106 void BlockWrite_(int f, void * p, int size);
       
   107 void close(int f);
       
   108 
       
   109 void write(int f, string255 s);
       
   110 void writeLn(int f, string255 s);
       
   111 
       
   112 bool DirectoryExists(string255 dir);
       
   113 bool FileExists(string255 filename);
       
   114 
       
   115 bool odd(int i);
       
   116 
       
   117 
       
   118 typedef int TThreadId;
       
   119 void ThreadSwitch();
       
   120 #define InterlockedIncrement(a) __InterlockedIncrement(&(a))
       
   121 #define InterlockedDecrement(a) __InterlockedDecrement(&(a))
       
   122 void __InterlockedIncrement(int * a);
       
   123 void __InterlockedDecrement(int * a);
       
   124 
       
   125 bool Assigned(void * a);
       
   126 
       
   127 void randomize();
       
   128 int random(int max);
       
   129 int abs(int i);
       
   130 double sqr(double n);
       
   131 double sqrt(double n);
       
   132 int trunc(double n);
       
   133 int round(double n);
       
   134 
       
   135 string255 ParamStr(int n);
       
   136 int ParamCount();
       
   137 
       
   138 #define val(a, b, c) _val(a, (LongInt*)&(b), (LongInt*)&(c))
       
   139 void _val(string255 str, LongInt * a, LongInt * c);
       
   140 
       
   141 extern double pi;
       
   142 
       
   143 string255 EnumToStr(int a);
       
   144 string255 ExtractFileName(string255 f);