project_files/hwc/rtl/misc.h
changeset 10015 4feced261c68
parent 7983 02f36c3e7f6c
child 10121 8b65699beb56
equal deleted inserted replaced
10014:56d2f2d5aad8 10015:4feced261c68
       
     1 #ifndef _FPCRTL_MISC_H_
       
     2 #define _FPCRTL_MISC_H_
       
     3 
       
     4 #include "pas2c.h"
       
     5 #include <assert.h>
       
     6 #include <stdbool.h>
       
     7 
       
     8 #ifdef EMSCRIPTEN
       
     9 #include <GL/gl.h>
       
    10 #else
       
    11 #include <GL/glew.h>
       
    12 #endif
       
    13 
       
    14 #define     VA_NUM_ARGS(...)                        VA_NUM_ARGS_IMPL(__VA_ARGS__, 5,4,3,2,1)
       
    15 #define     VA_NUM_ARGS_IMPL(_1,_2,_3,_4,_5,N,...)  N
       
    16 
       
    17 #define     macro_dispatcher(func, ...)             macro_dispatcher_(func, VA_NUM_ARGS(__VA_ARGS__))
       
    18 #define     macro_dispatcher_(func, nargs)          macro_dispatcher__(func, nargs)
       
    19 #define     macro_dispatcher__(func, nargs)         func ## nargs
       
    20 
       
    21 #define     FPCRTL_DEBUG
       
    22 
       
    23 #define     FIX_STRING(s)                           (s.str[s.len] = 0)
       
    24 
       
    25 //#define fpcrtl_check_string(s)     do{ if(strlen((s).str) != (s).len){ \
       
    26 //                                        printf("String %s internal inconsistency error. Length should be %d but actually is %d.\n", (s).str, strlen((s).str), (s).len); \
       
    27 //                                        assert(0);\
       
    28 //                                    }}while(0)
       
    29 
       
    30 void        fpcrtl_assert(int);
       
    31 void        fpcrtl_print_trace (void);
       
    32 
       
    33 int         fpcrtl_round(double number);
       
    34 void        fpcrtl_printf(const char* format, ...);
       
    35 
       
    36 string255   fpcrtl_make_string(const char* s);
       
    37 
       
    38 string255   fpcrtl_strconcat(string255 str1, string255 str2);
       
    39 string255   fpcrtl_strappend(string255 s, char c);
       
    40 string255   fpcrtl_strprepend(char c, string255 s);
       
    41 string255   fpcrtl_chrconcat(char a, char b);
       
    42 
       
    43 // return true if str1 == str2
       
    44 bool        fpcrtl_strcompare(string255 str1, string255 str2);
       
    45 bool        fpcrtl_strcomparec(string255 a, char b);
       
    46 bool        fpcrtl_strncompare(string255 a, string255 b);
       
    47 
       
    48 #define     fpcrtl__pchar(s)                        ((s).str)
       
    49 string255   fpcrtl_pchar2str(char *s);
       
    50 
       
    51 #define     fpcrtl_TypeInfo                         sizeof // dummy
       
    52 
       
    53 #ifdef EMSCRIPTEN
       
    54 #define     GLEW_OK                                 1
       
    55 GLenum      glewInit();
       
    56 #endif
       
    57 
       
    58 #endif