hedgewars/pas2cSystem.pas
author unc0rr
Wed, 14 May 2014 21:41:42 +0400
changeset 10243 9a3ba4e76e38
parent 10133 d73412fbf3b4
child 10319 240775460dc5
permissions -rw-r--r--
Small optimization (no need to draw last point of the path)
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;
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    10
    Word = uinteger;
6520
6fecdc5d182f Some more work on scopes
unc0rr
parents: 6516
diff changeset
    11
    Byte = integer;
6fecdc5d182f Some more work on scopes
unc0rr
parents: 6516
diff changeset
    12
    SmallInt = integer;
6fecdc5d182f Some more work on scopes
unc0rr
parents: 6516
diff changeset
    13
    ShortInt = integer;
8105
d088be5ecdcb ok at least pas2c now parses allnots.......
koda
parents: 8026
diff changeset
    14
    Int64 = integer;
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    15
    QWord = uinteger;
6891
ab9843957664 Improve rendering of function types, ranges, and more
unc0rr
parents: 6873
diff changeset
    16
    GLint = integer;
ab9843957664 Improve rendering of function types, ranges, and more
unc0rr
parents: 6873
diff changeset
    17
    GLuint = integer;
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    18
    GLenum = integer;
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    19
7044
46cb4e8cedfb Fix for Int type and sysutils in hwengine.pas
unc0rr
parents: 7041
diff changeset
    20
    int = integer;
7073
26f960656cc9 help pas2c
unc0rr
parents: 7069
diff changeset
    21
    size_t = integer;
6516
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    22
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    23
    pointer = pointer;
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    24
6649
7f78e8a6db69 Fix a bug with type declaration trying to resolve type being declared
unc0rr
parents: 6635
diff changeset
    25
    float = float;
6838
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    26
    single = float;
6516
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    27
    double = float;
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    28
    real = float;
6653
d45b6dbd2ad6 Move a bit further
unc0rr
parents: 6649
diff changeset
    29
    extended = float;
6891
ab9843957664 Improve rendering of function types, ranges, and more
unc0rr
parents: 6873
diff changeset
    30
    GLfloat = float;
6516
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    31
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    32
    boolean = boolean;
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    33
    LongBool = boolean;
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    34
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    35
    string = string;
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    36
    shortstring = string;
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    37
    ansistring = string;
6838
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    38
    widechar = string;
6516
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    39
addaeb1b9539 Further progress on dealing with namespaces
unc0rr
parents: 6512
diff changeset
    40
    char = char;
6873
30840365af0a Eraser tool
unc0rr
parents: 6860
diff changeset
    41
    PChar = ^char;
6926
6e832f8f4d8e Make adler32 friendlier for pas2c - this should work the same (needs testing ofc)
nemo
parents: 6902
diff changeset
    42
    PPChar = ^Pchar;
10131
4b4a043111f4 - pas2c recognizes typecasts in initialization expressions
unc0rr
parents: 10129
diff changeset
    43
    PWideChar = ^WideChar;
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
    44
6520
6fecdc5d182f Some more work on scopes
unc0rr
parents: 6516
diff changeset
    45
    PByte = ^Byte;
7616
dcda1c2b77e4 Small fix
unc0rr
parents: 7151
diff changeset
    46
    PWord = ^Word;
6520
6fecdc5d182f Some more work on scopes
unc0rr
parents: 6516
diff changeset
    47
    PLongInt = ^LongInt;
6fecdc5d182f Some more work on scopes
unc0rr
parents: 6516
diff changeset
    48
    PLongWord = ^LongWord;
6fecdc5d182f Some more work on scopes
unc0rr
parents: 6516
diff changeset
    49
    PInteger = ^Integer;
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
    50
6663
2c4151afad0c Workaround pointers to not yet defined types
unc0rr
parents: 6653
diff changeset
    51
    Handle = integer;
6838
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    52
6893
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
    53
    png_structp = pointer;
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
    54
    png_size_t = integer;
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
    55
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
    56
var
6512
0df7f6697939 "System" unit to help converter
unc0rr
parents:
diff changeset
    57
    false, true: boolean;
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
    58
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    59
    ord, Succ, Pred : function : integer;
6838
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    60
    inc, dec, Low, High, Lo, Hi : function : integer;
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    61
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
    62
    IOResult : integer;
6853
affeaba0af71 Fix withState' not returning lastType
unc0rr
parents: 6843
diff changeset
    63
    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
    64
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    65
    TextFile, File : Handle;
6853
affeaba0af71 Fix withState' not returning lastType
unc0rr
parents: 6843
diff changeset
    66
    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
    67
    exitcode : integer;
7151
ec15d9e1a7e3 pas2c stuff
unc0rr
parents: 7134
diff changeset
    68
    stdout, stderr : Handle;
6838
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    69
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    70
    sqrt, cos, sin: function : float;
7062
7efe16575779 Recognize length on arrays as a separate function
unc0rr
parents: 7054
diff changeset
    71
    pi : float;
6838
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    72
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    73
    sizeof : function : integer;
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
    74
7064
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    75
    glGetString : function : pchar;
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
    76
7064
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    77
    glBegin, glBindTexture, glBlendFunc, glClear, glClearColor,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    78
    glColor4ub, glColorMask, glColorPointer, glDeleteTextures,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    79
    glDisable, glDisableClientState, glDrawArrays, glEnable,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    80
    glEnableClientState, glEnd, glGenTextures, glGetIntegerv,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    81
    glHint, glLineWidth, glLoadIdentity, glMatrixMode, glPopMatrix,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    82
    glPushMatrix, glReadPixels, glRotatef, glScalef, glTexCoord2f,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    83
    glTexCoordPointer, glTexImage2D, glTexParameterf,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    84
    glTexParameteri, glTranslatef, glVertex2d, glVertexPointer,
7065
e80e0d3273c5 Add missing identifiers
unc0rr
parents: 7064
diff changeset
    85
    glViewport, glext_LoadExtension, glDeleteRenderbuffersEXT,
e80e0d3273c5 Add missing identifiers
unc0rr
parents: 7064
diff changeset
    86
    glDeleteFramebuffersEXT, glGenFramebuffersEXT,
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
    87
    glGenRenderbuffersEXT, glBindFramebufferEXT,
7065
e80e0d3273c5 Add missing identifiers
unc0rr
parents: 7064
diff changeset
    88
    glBindRenderbufferEXT, glRenderbufferStorageEXT,
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    89
    glFramebufferRenderbufferEXT, glFramebufferTexture2DEXT,
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    90
    glUniformMatrix4fv, glVertexAttribPointer, glCreateShader,
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    91
    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
    92
    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
    93
    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
    94
    glUniform1i, glGetUniformLocation, glEnableVertexAttribArray,
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    95
    glGetError, glDeleteProgram, glDeleteBuffers,
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
    96
    glGenBuffers, glBufferData, glBindBuffer, glewInit,
10133
d73412fbf3b4 - Remove few PAS2C ifdef's
unc0rr
parents: 10131
diff changeset
    97
    glUniform4f, glDisableVertexAttribArray, glTexEnvi,
d73412fbf3b4 - Remove few PAS2C ifdef's
unc0rr
parents: 10131
diff changeset
    98
    glLoadMatrixf, glMultMatrixf, glGetFloatv: procedure;
7064
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
    99
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   100
    GL_BGRA, GL_BLEND, GL_CLAMP_TO_EDGE, GL_COLOR_ARRAY,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   101
    GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT, GL_DEPTH_COMPONENT,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   102
    GL_DITHER, GL_EXTENSIONS, GL_FALSE, GL_FASTEST, GL_LINEAR,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   103
    GL_LINE_LOOP, GL_LINES, GL_LINE_SMOOTH, GL_LINE_STRIP,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   104
    GL_MAX_TEXTURE_SIZE, GL_MODELVIEW, GL_ONE_MINUS_SRC_ALPHA,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   105
    GL_PERSPECTIVE_CORRECTION_HINT, GL_PROJECTION, GL_QUADS,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   106
    GL_RENDERER, GL_RGBA, GL_RGBA8, GL_SRC_ALPHA, GL_TEXTURE_2D,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   107
    GL_TEXTURE_COORD_ARRAY, GL_TEXTURE_MAG_FILTER,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   108
    GL_TEXTURE_MIN_FILTER, GL_TEXTURE_PRIORITY, GL_TEXTURE_WRAP_S,
0cf7cad767aa Fix casing and type for gl
nemo
parents: 7062
diff changeset
   109
    GL_TEXTURE_WRAP_T, GL_TRIANGLE_FAN, GL_TRUE, GL_VENDOR,
7065
e80e0d3273c5 Add missing identifiers
unc0rr
parents: 7064
diff changeset
   110
    GL_VERSION, GL_VERTEX_ARRAY, GLenum,  GL_FRAMEBUFFER_EXT,
e80e0d3273c5 Add missing identifiers
unc0rr
parents: 7064
diff changeset
   111
    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
   112
    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
   113
    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
   114
    GL_NO_ERROR, GL_ARRAY_BUFFER, GL_STATIC_DRAW, GLEW_OK,
10133
d73412fbf3b4 - Remove few PAS2C ifdef's
unc0rr
parents: 10131
diff changeset
   115
    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
   116
    GL_MODELVIEW_MATRIX: integer;
6838
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
   117
b1a0e7a52c04 More clean namespace, some fixes
unc0rr
parents: 6837
diff changeset
   118
    TThreadId : function : integer;
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9954
diff changeset
   119
7151
ec15d9e1a7e3 pas2c stuff
unc0rr
parents: 7134
diff changeset
   120
    _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
   121
    _strcompare, _strncompare, _strcomparec, _strncompareA : function : boolean;
10120
b7f632c12784 Pas2C recognizes ansistrings
unc0rr
parents: 10080
diff changeset
   122
    _strconcatA, _strappendA : function : ansistring;
6893
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
   123
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
   124
    png_structp, png_set_write_fn, png_get_io_ptr,
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
   125
    png_get_libpng_ver, png_create_write_struct,
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
   126
    png_create_info_struct, png_destroy_write_struct,
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
   127
    png_write_row, png_set_ihdr, png_write_info,
69cc0166be8d - Track array size to use for High function
unc0rr
parents: 6891
diff changeset
   128
    png_write_end : procedure;
6894
555a8d8db228 Some more progress with pas2c
unc0rr
parents: 6893
diff changeset
   129
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7616
diff changeset
   130
    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
   131
    SDL_InitPatch : procedure;
7066
12cc2bd84b0b Make pas2c even more happier with uGears.c, allow assigning arrays in some cases
unc0rr
parents: 7065
diff changeset
   132
10129
cd2a64a1f4aa - Pas2C: make use of 'external' function decorator
unc0rr
parents: 10124
diff changeset
   133
    PHYSFS_init, PHYSFS_deinit, PHYSFS_mount, PHYSFS_readBytes, PHYSFS_read : function : LongInt;
9260
64718974158f Reduce number of link errors
unc0rr
parents: 8105
diff changeset
   134
    PHYSFSRWOPS_openRead, PHYSFSRWOPS_openWrite, PHYSFS_openRead : function : pointer;
64718974158f Reduce number of link errors
unc0rr
parents: 8105
diff changeset
   135
    PHYSFS_eof, PHYSFS_close, PHYSFS_exists : function : boolean;
10080
ac51bcb534ef Even more love to pas2c
unc0rr
parents: 10015
diff changeset
   136
    PHYSFS_getLastError : function : PChar;
9260
64718974158f Reduce number of link errors
unc0rr
parents: 8105
diff changeset
   137
64718974158f Reduce number of link errors
unc0rr
parents: 8105
diff changeset
   138
    hedgewarsMountPackages, physfsReaderSetBuffer, hedgewarsMountPackage : procedure;
64718974158f Reduce number of link errors
unc0rr
parents: 8105
diff changeset
   139
    physfsReader : function : pointer;