hedgewars/pas2cSystem.pas
author Wuzzy <Wuzzy2@mail.ru>
Tue, 24 Apr 2018 21:49:12 +0200
changeset 13344 4f9108f82879
parent 13342 774dd8762607
child 14911 ff2c19a462de
permissions -rw-r--r--
Pas2C: Add support for char + ansistring (for real this time)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6512
0df7f6697939 "System" unit to help converter
unc0rr
parents:
diff changeset
     1
system;
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
     2
{This file contains functions that are external}
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
     3
type
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
     4
    uinteger = uinteger;
6635
c2fa29fe2a58 Some progress, still can't find the source of bad behavior
unc0rr
parents: 6552
diff changeset
     5
    Integer = integer;
6512
0df7f6697939 "System" unit to help converter
unc0rr
parents:
diff changeset
     6
    LongInt = integer;
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
     7
    LongWord = uinteger;
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
     8
    Cardinal = uinteger;
6516
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
     9
    PtrInt = integer;
12104
f61bd25b9f70 tweak landtex filling some more. cuz it's fun
sheepluva
parents: 11800
diff changeset
    10
    SizeInt = PtrInt;
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    11
    Word = uinteger;
6520
6fecdc5d182f Some more work on scopes
unc0rr
parents: 6516
diff changeset
    12
    Byte = integer;
6fecdc5d182f Some more work on scopes
unc0rr
parents: 6516
diff changeset
    13
    SmallInt = integer;
6fecdc5d182f Some more work on scopes
unc0rr
parents: 6516
diff changeset
    14
    ShortInt = integer;
8105
d088be5ecdcb ok at least pas2c now parses allnots.......
koda
parents: 8026
diff changeset
    15
    Int64 = integer;
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    16
    QWord = uinteger;
6891
ab9843957664 Improve rendering of function types, ranges, and more
unc0rr
parents: 6873
diff changeset
    17
    GLint = integer;
11800
6e6248c43942 ansistring, not Ansistring
unc0rr
parents: 11643
diff changeset
    18
    GLsizei = integer;
6891
ab9843957664 Improve rendering of function types, ranges, and more
unc0rr
parents: 6873
diff changeset
    19
    GLuint = integer;
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    20
    GLenum = integer;
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    21
7044
46cb4e8cedfb Fix for Int type and sysutils in hwengine.pas
unc0rr
parents: 7041
diff changeset
    22
    int = integer;
7073
26f960656cc9 help pas2c
unc0rr
parents: 7069
diff changeset
    23
    size_t = integer;
6516
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    24
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    25
    pointer = pointer;
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    26
6649
7f78e8a6db69 Fix a bug with type declaration trying to resolve type being declared
unc0rr
parents: 6635
diff changeset
    27
    float = float;
6838
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    28
    single = float;
6516
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    29
    double = float;
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    30
    real = float;
6653
d45b6dbd2ad6 Move a bit further
unc0rr
parents: 6649
diff changeset
    31
    extended = float;
6891
ab9843957664 Improve rendering of function types, ranges, and more
unc0rr
parents: 6873
diff changeset
    32
    GLfloat = float;
6516
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    33
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    34
    boolean = boolean;
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    35
    LongBool = boolean;
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    36
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    37
    string = string;
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    38
    shortstring = string;
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    39
    ansistring = string;
6838
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    40
    widechar = string;
6516
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    41
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    42
    char = char;
6873
30840365af0a Eraser tool
unc0rr
parents: 6860
diff changeset
    43
    PChar = ^char;
6926
6e832f8f4d8e Make adler32 friendlier for pas2c - this should work the same (needs testing ofc)
nemo
parents: 6902
diff changeset
    44
    PPChar = ^Pchar;
10131
4b4a043111f4 - pas2c recognizes typecasts in initialization expressions
unc0rr
parents: 10129
diff changeset
    45
    PWideChar = ^WideChar;
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
    46
6520
6fecdc5d182f Some more work on scopes
unc0rr
parents: 6516
diff changeset
    47
    PByte = ^Byte;
7616
dcda1c2b77e4 Small fix
unc0rr
parents: 7151
diff changeset
    48
    PWord = ^Word;
6520
6fecdc5d182f Some more work on scopes
unc0rr
parents: 6516
diff changeset
    49
    PLongInt = ^LongInt;
6fecdc5d182f Some more work on scopes
unc0rr
parents: 6516
diff changeset
    50
    PLongWord = ^LongWord;
6fecdc5d182f Some more work on scopes
unc0rr
parents: 6516
diff changeset
    51
    PInteger = ^Integer;
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
    52
6663
2c4151afad0c Workaround pointers to not yet defined types
unc0rr
parents: 6653
diff changeset
    53
    Handle = integer;
6838
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    54
6893
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
    55
    png_structp = pointer;
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
    56
    png_size_t = integer;
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
    57
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
    58
var
6512
0df7f6697939 "System" unit to help converter
unc0rr
parents:
diff changeset
    59
    false, true: boolean;
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
    60
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    61
    ord, Succ, Pred : function : integer;
6838
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    62
    inc, dec, Low, High, Lo, Hi : function : integer;
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    63
6902
7d4e5ce73b98 Make pas2c even smarter. Now uIO.c compiles fine, and only 1 warning when compiled with -Wall (clang).
unc0rr
parents: 6898
diff changeset
    64
    IOResult : integer;
6853
affeaba0af71 Fix withState' not returning lastType
unc0rr
parents: 6843
diff changeset
    65
    exit, break, halt, continue : procedure;
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    66
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    67
    TextFile, File : Handle;
6853
affeaba0af71 Fix withState' not returning lastType
unc0rr
parents: 6843
diff changeset
    68
    FileMode : integer;
6855
807156c01475 Finish the toughest part of the converter. Now it knows types of everything, so could correctly recognize bitwise operators and type convertions.
unc0rr
parents: 6854
diff changeset
    69
    exitcode : integer;
7151
ec15d9e1a7e3 pas2c stuff
unc0rr
parents: 7134
diff changeset
    70
    stdout, stderr : Handle;
6838
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    71
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    72
    sqrt, cos, sin: function : float;
7062
7efe16575779 Recognize length on arrays as a separate function
unc0rr
parents: 7054
diff changeset
    73
    pi : float;
6838
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    74
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    75
    sizeof : function : integer;
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    76
7064
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    77
    glGetString : function : pchar;
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
    78
7064
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    79
    glBegin, glBindTexture, glBlendFunc, glClear, glClearColor,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    80
    glColor4ub, glColorMask, glColorPointer, glDeleteTextures,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    81
    glDisable, glDisableClientState, glDrawArrays, glEnable,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    82
    glEnableClientState, glEnd, glGenTextures, glGetIntegerv,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    83
    glHint, glLineWidth, glLoadIdentity, glMatrixMode, glPopMatrix,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    84
    glPushMatrix, glReadPixels, glRotatef, glScalef, glTexCoord2f,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    85
    glTexCoordPointer, glTexImage2D, glTexParameterf,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    86
    glTexParameteri, glTranslatef, glVertex2d, glVertexPointer,
7065
e80e0d3273c5 Add missing identifiers
unc0rr
parents: 7064
diff changeset
    87
    glViewport, glext_LoadExtension, glDeleteRenderbuffersEXT,
e80e0d3273c5 Add missing identifiers
unc0rr
parents: 7064
diff changeset
    88
    glDeleteFramebuffersEXT, glGenFramebuffersEXT,
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
    89
    glGenRenderbuffersEXT, glBindFramebufferEXT,
7065
e80e0d3273c5 Add missing identifiers
unc0rr
parents: 7064
diff changeset
    90
    glBindRenderbufferEXT, glRenderbufferStorageEXT,
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    91
    glFramebufferRenderbufferEXT, glFramebufferTexture2DEXT,
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    92
    glUniformMatrix4fv, glVertexAttribPointer, glCreateShader,
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    93
    glShaderSource, glCompileShader, glGetShaderiv, glGetShaderInfoLog,
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    94
    glCreateProgram, glAttachShader, glBindAttribLocation, glLinkProgram,
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    95
    glDeleteShader, glGetProgramiv, glGetProgramInfoLog, glUseProgram,
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    96
    glUniform1i, glGetUniformLocation, glEnableVertexAttribArray,
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    97
    glGetError, glDeleteProgram, glDeleteBuffers,
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    98
    glGenBuffers, glBufferData, glBindBuffer, glewInit,
10133
d73412fbf3b4 - Remove few PAS2C ifdef's
unc0rr
parents: 10131
diff changeset
    99
    glUniform4f, glDisableVertexAttribArray, glTexEnvi,
d73412fbf3b4 - Remove few PAS2C ifdef's
unc0rr
parents: 10131
diff changeset
   100
    glLoadMatrixf, glMultMatrixf, glGetFloatv: procedure;
7064
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   101
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   102
    GL_BGRA, GL_BLEND, GL_CLAMP_TO_EDGE, GL_COLOR_ARRAY,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   103
    GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT, GL_DEPTH_COMPONENT,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   104
    GL_DITHER, GL_EXTENSIONS, GL_FALSE, GL_FASTEST, GL_LINEAR,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   105
    GL_LINE_LOOP, GL_LINES, GL_LINE_SMOOTH, GL_LINE_STRIP,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   106
    GL_MAX_TEXTURE_SIZE, GL_MODELVIEW, GL_ONE_MINUS_SRC_ALPHA,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   107
    GL_PERSPECTIVE_CORRECTION_HINT, GL_PROJECTION, GL_QUADS,
10535
428085a1be6e fix pas2c(?)
sheepluva
parents: 10319
diff changeset
   108
    GL_RENDERER, GL_RGB, GL_RGB8, GL_RGBA, GL_RGBA8, GL_SRC_ALPHA, GL_TEXTURE_2D,
7064
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   109
    GL_TEXTURE_COORD_ARRAY, GL_TEXTURE_MAG_FILTER,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   110
    GL_TEXTURE_MIN_FILTER, GL_TEXTURE_PRIORITY, GL_TEXTURE_WRAP_S,
10319
240775460dc5 fix pas2c build
sheepluva
parents: 10133
diff changeset
   111
    GL_TEXTURE_WRAP_T, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_TRUE, GL_VENDOR,
7065
e80e0d3273c5 Add missing identifiers
unc0rr
parents: 7064
diff changeset
   112
    GL_VERSION, GL_VERTEX_ARRAY, GLenum,  GL_FRAMEBUFFER_EXT,
e80e0d3273c5 Add missing identifiers
unc0rr
parents: 7064
diff changeset
   113
    GL_RENDERBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
   114
    GL_COLOR_ATTACHMENT0_EXT, GL_FLOAT, GL_UNSIGNED_BYTE, GL_COMPILE_STATUS,
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
   115
    GL_INFO_LOG_LENGTH, GL_LINK_STATUS, GL_VERTEX_SHADER, GL_FRAGMENT_SHADER,
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
   116
    GL_NO_ERROR, GL_ARRAY_BUFFER, GL_STATIC_DRAW, GLEW_OK,
10133
d73412fbf3b4 - Remove few PAS2C ifdef's
unc0rr
parents: 10131
diff changeset
   117
    GL_AUX_BUFFERS, GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE, GL_ADD,
d73412fbf3b4 - Remove few PAS2C ifdef's
unc0rr
parents: 10131
diff changeset
   118
    GL_MODELVIEW_MATRIX: integer;
6838
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
   119
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
   120
    TThreadId : function : integer;
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
   121
7151
ec15d9e1a7e3 pas2c stuff
unc0rr
parents: 7134
diff changeset
   122
    _strconcat, _strappend, _strprepend, _chrconcat : function : string;
10124
aabd1b75d5a3 Even more explicit type conversions and other stuff to help pas2c use ansistrings
unc0rr
parents: 10120
diff changeset
   123
    _strcompare, _strncompare, _strcomparec, _strncompareA : function : boolean;
13342
774dd8762607 Pas2C: Add support for char + ansistring
Wuzzy <Wuzzy2@mail.ru>
parents: 12597
diff changeset
   124
    _strconcatA, _strappendA, _strprependA: function : ansistring;
6893
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
   125
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
   126
    png_structp, png_set_write_fn, png_get_io_ptr,
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
   127
    png_get_libpng_ver, png_create_write_struct,
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
   128
    png_create_info_struct, png_destroy_write_struct,
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
   129
    png_write_row, png_set_ihdr, png_write_info,
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
   130
    png_write_end : procedure;
6894
555a8d8db228 Some more progress with pas2c
unc0rr
parents: 6893
diff changeset
   131
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
   132
    clear_filelist_hook, add_file_hook, idb_loader_hook, mainloop_hook, drawworld_hook : procedure;
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
   133
    SDL_InitPatch : procedure;
7066
12cc2bd84b0b Make pas2c even more happier with uGears.c, allow assigning arrays in some cases
unc0rr
parents: 7065
diff changeset
   134
11643
3bff941c035f Fix pas2c build
unc0rr
parents: 10535
diff changeset
   135
    PHYSFS_init, PHYSFS_deinit, PHYSFS_mount, PHYSFS_readBytes, PHYSFS_writeBytes, PHYSFS_read : function : LongInt;
3bff941c035f Fix pas2c build
unc0rr
parents: 10535
diff changeset
   136
    PHYSFSRWOPS_openRead, PHYSFSRWOPS_openWrite, PHYSFS_openRead, PHYSFS_openWrite : function : pointer;
12597
f7ff98509580 make PHYSFS_setBuffer() known to pas2c
sheepluva
parents: 12104
diff changeset
   137
    PHYSFS_eof, PHYSFS_close, PHYSFS_exists, PHYSFS_mkdir, PHYSFS_flush, PHYSFS_setWriteDir, PHYSFS_setBuffer : function : boolean;
10080
ac51bcb534ef Even more love to pas2c
unc0rr
parents: 10015
diff changeset
   138
    PHYSFS_getLastError : function : PChar;
11643
3bff941c035f Fix pas2c build
unc0rr
parents: 10535
diff changeset
   139
    PHYSFS_enumerateFiles : function : PPChar;
3bff941c035f Fix pas2c build
unc0rr
parents: 10535
diff changeset
   140
    PHYSFS_freeList : procedure;
9260
64718974158f Reduce number of link errors
unc0rr
parents: 8105
diff changeset
   141
64718974158f Reduce number of link errors
unc0rr
parents: 8105
diff changeset
   142
    hedgewarsMountPackages, physfsReaderSetBuffer, hedgewarsMountPackage : procedure;
64718974158f Reduce number of link errors
unc0rr
parents: 8105
diff changeset
   143
    physfsReader : function : pointer;