diff --git a/plugins/include/core.inc b/plugins/include/core.inc index 446d8591..9b216493 100644 --- a/plugins/include/core.inc +++ b/plugins/include/core.inc @@ -48,14 +48,6 @@ struct PlVers String:time[] }; -/** - * Function helper values. - */ -enum Function -{ - INVALID_FUNCTION = -1, -}; - /** * Specifies what to do after a hook completes. */ diff --git a/sourcepawn/compiler/sc.h b/sourcepawn/compiler/sc.h index 4e6a1b20..f1350e04 100644 --- a/sourcepawn/compiler/sc.h +++ b/sourcepawn/compiler/sc.h @@ -411,6 +411,7 @@ enum { tFORWARD, tFUNCENUM, tFUNCTAG, + tFUNCTION, tGOTO, tIF, tINT, @@ -938,6 +939,7 @@ SC_VDECL int pc_tag_void; /* global void tag */ SC_VDECL int pc_tag_object; /* root object tag */ SC_VDECL int pc_tag_bool; /* global bool tag */ SC_VDECL int pc_tag_null_t; /* the null type */ +SC_VDECL int pc_tag_nullfunc_t; /* the null function type */ SC_VDECL int pc_anytag; /* global any tag */ SC_VDECL int glbstringread; /* last global string read */ SC_VDECL int sc_require_newdecls; /* only newdecls are allowed */ diff --git a/sourcepawn/compiler/sc1.c b/sourcepawn/compiler/sc1.c index 19f170dc..593df220 100644 --- a/sourcepawn/compiler/sc1.c +++ b/sourcepawn/compiler/sc1.c @@ -80,6 +80,7 @@ int pc_tag_void = 0; int pc_tag_object = 0; int pc_tag_bool = 0; int pc_tag_null_t = 0; +int pc_tag_nullfunc_t = 0; static void resetglobals(void); static void initglobals(void); @@ -1351,10 +1352,12 @@ static void setconstants(void) pc_tag_object = pc_addtag_flags("object", FIXEDTAG|OBJECTTAG); pc_tag_bool = pc_addtag("bool"); pc_tag_null_t = pc_addtag_flags("null_t", FIXEDTAG|OBJECTTAG); + pc_tag_nullfunc_t = pc_addtag_flags("nullfunc_t", FIXEDTAG|OBJECTTAG); add_constant("true",1,sGLOBAL,1); /* boolean flags */ add_constant("false",0,sGLOBAL,1); add_constant("EOS",0,sGLOBAL,0); /* End Of String, or '\0' */ + add_constant("INVALID_FUNCTION", -1, sGLOBAL, pc_tag_nullfunc_t); #if PAWN_CELL_SIZE==16 add_constant("cellbits",16,sGLOBAL,0); #if defined _I16_MAX diff --git a/sourcepawn/compiler/sc2.c b/sourcepawn/compiler/sc2.c index 23c46561..b1ae61b9 100644 --- a/sourcepawn/compiler/sc2.c +++ b/sourcepawn/compiler/sc2.c @@ -1952,7 +1952,7 @@ char *sc_tokens[] = { "case", "cellsof", "char", "class", "const", "continue", "decl", "default", "defined", "delete", "do", "else", "*end", "enum", "exit", - "for", "forward", "funcenum", "functag", + "for", "forward", "funcenum", "functag", "function", "goto", "if", "int", "methodmap", diff --git a/sourcepawn/compiler/sc3.c b/sourcepawn/compiler/sc3.c index 28e85bce..c15e30bd 100644 --- a/sourcepawn/compiler/sc3.c +++ b/sourcepawn/compiler/sc3.c @@ -357,6 +357,16 @@ static int matchobjecttags(int formaltag, int actualtag, int flags) if ((formaltag & OBJECTTAG) && !(actualtag & OBJECTTAG)) return obj_typeerror(132, formaltag, actualtag); + if (actualtag == pc_tag_nullfunc_t) { + // All functions are nullable. We use a separate constant for backward + // compatibility; plugins and extensions check -1, not 0. + if (formaltag & FUNCTAG) + return TRUE; + + error(154, pc_tagname(formaltag)); + return FALSE; + } + if (actualtag == pc_tag_null_t) { // All objects are nullable. if (formaltag & OBJECTTAG) @@ -403,126 +413,116 @@ static int matchreturntag(functag_t *t, symbol *sym) static int matchfunctags(int formaltag, int actualtag) { - if (actualtag == pc_functag || (formaltag == pc_functag && actualtag & FUNCTAG)) + if (formaltag == pc_functag && (actualtag & FUNCTAG)) return TRUE; - if (actualtag & FUNCTAG) { - constvalue *v = find_tag_byval(actualtag); - int index; - short usage = uPUBLIC; - symbol *sym, *found = NULL; - funcenum_t *e; - functag_t *t; + if (actualtag == pc_tag_nullfunc_t) + return TRUE; - if (strncmp(v->name, "$Func", 5) != 0) - return FALSE; + if (!(actualtag & FUNCTAG)) + return FALSE; - /* Now we have to go about looking up each function in this enum. WHICH IS IT. */ - e = funcenums_find_byval(formaltag); - if (!e) - return FALSE; + constvalue *v = find_tag_byval(actualtag); + int index; + short usage = uPUBLIC; + symbol *sym, *found = NULL; + funcenum_t *e; + functag_t *t; - assert(v->name[5] == '@' || v->name[5] == '!'); + if (strncmp(v->name, "$Func", 5) != 0) + return FALSE; - /* Deduce which function type this is */ - if (v->name[5] == '@') - { - usage = uPUBLIC; - } else if (v->name[5] == '!') { - usage = uSTOCK; - } + /* Now we have to go about looking up each function in this enum. WHICH IS IT. */ + e = funcenums_find_byval(formaltag); + if (!e) + return FALSE; - index = atoi(&v->name[6]); + assert(v->name[5] == '@' || v->name[5] == '!'); - assert(index >= 0); + /* Deduce which function type this is */ + if (v->name[5] == '@') + { + usage = uPUBLIC; + } else if (v->name[5] == '!') { + usage = uSTOCK; + } - /* Find the function, either by public idx or code addr */ - if (usage == uPUBLIC) { - for (sym=glbtab.next; sym!=NULL; sym=sym->next) { - if (sym->ident==iFUNCTN && (sym->usage & uPUBLIC)!=0 && (sym->vclass == sGLOBAL)) { - if (index-- == 0) { - found = sym; - break; - } - } - } - } else if (usage == uSTOCK) { - for (sym=glbtab.next; sym!=NULL; sym=sym->next) { - if (sym->ident==iFUNCTN && (sym->vclass == sGLOBAL)) { - if (sym->codeaddr == index) { - found = sym; - break; - } + index = atoi(&v->name[6]); + + assert(index >= 0); + + /* Find the function, either by public idx or code addr */ + if (usage == uPUBLIC) { + for (sym=glbtab.next; sym!=NULL; sym=sym->next) { + if (sym->ident==iFUNCTN && (sym->usage & uPUBLIC)!=0 && (sym->vclass == sGLOBAL)) { + if (index-- == 0) { + found = sym; + break; } } } - - if (!found) { - assert(found); - return FALSE; + } else if (usage == uSTOCK) { + for (sym=glbtab.next; sym!=NULL; sym=sym->next) { + if (sym->ident==iFUNCTN && (sym->vclass == sGLOBAL)) { + if (sym->codeaddr == index) { + found = sym; + break; + } + } } + } - /* Wow, we now have: - * 1) The functional enum deduced from formaltag - * 2) The function trying to be shoved in deduced from actualtag - * Now we have to check if it matches any one of the functags inside the enum. - */ - t = e->first; - while (t) { - int curarg,skip=0,i; - arginfo *func_arg; - funcarg_t *enum_arg; - /* Check return type first. */ - if (!matchreturntag(t, sym)) { - t = t->next; - continue; + if (!found) { + assert(found); + return FALSE; + } + + /* Wow, we now have: + * 1) The functional enum deduced from formaltag + * 2) The function trying to be shoved in deduced from actualtag + * Now we have to check if it matches any one of the functags inside the enum. + */ + t = e->first; + while (t) { + int curarg,skip=0,i; + arginfo *func_arg; + funcarg_t *enum_arg; + /* Check return type first. */ + if (!matchreturntag(t, sym)) { + t = t->next; + continue; + } + /* Check usage */ + if (t->type != usage) { + t = t->next; + continue; + } + /* Begin iterating arguments */ + for (curarg=0; curargargcount; curarg++) { + enum_arg = &t->args[curarg]; + /* Check whether we've exhausted our arguments */ + if (sym->dim.arglist[curarg].ident == 0) { + /* Can we bail out early? */ + if (!enum_arg->ommittable) { + /* No! */ + skip = 1; + } + break; } - /* Check usage */ - if (t->type != usage) { - t = t->next; - continue; + func_arg = &sym->dim.arglist[curarg]; + /* First check the ident type */ + if (enum_arg->ident != func_arg->ident) { + skip = 1; + break; } - /* Begin iterating arguments */ - for (curarg=0; curargargcount; curarg++) { - enum_arg = &t->args[curarg]; - /* Check whether we've exhausted our arguments */ - if (sym->dim.arglist[curarg].ident == 0) { - /* Can we bail out early? */ - if (!enum_arg->ommittable) { - /* No! */ - skip = 1; - } - break; - } - func_arg = &sym->dim.arglist[curarg]; - /* First check the ident type */ - if (enum_arg->ident != func_arg->ident) { - skip = 1; - break; - } - /* Next check arrayness */ - if (enum_arg->dimcount != func_arg->numdim) { - skip = 1; - break; - } - if (enum_arg->dimcount > 0) { - for (i=0; idimcount; i++) { - if (enum_arg->dims[i] != func_arg->dim[i]) { - skip = 1; - break; - } - } - if (skip) - break; - } - /* Lastly, check the tags */ - if (enum_arg->tagcount != func_arg->numtags) { - skip = 1; - break; - } - /* They should all be in the same order just for clarity... */ - for (i=0; itagcount; i++) { - if (!matchtag(func_arg->tags[i], enum_arg->tags[i], MATCHTAG_SILENT|MATCHTAG_COERCE)) { + /* Next check arrayness */ + if (enum_arg->dimcount != func_arg->numdim) { + skip = 1; + break; + } + if (enum_arg->dimcount > 0) { + for (i=0; idimcount; i++) { + if (enum_arg->dims[i] != func_arg->dim[i]) { skip = 1; break; } @@ -530,13 +530,27 @@ static int matchfunctags(int formaltag, int actualtag) if (skip) break; } - if (!skip) { - /* Make sure there are no trailing arguments */ - if (sym->dim.arglist[curarg].ident == 0) - return TRUE; + /* Lastly, check the tags */ + if (enum_arg->tagcount != func_arg->numtags) { + skip = 1; + break; } - t = t->next; + /* They should all be in the same order just for clarity... */ + for (i=0; itagcount; i++) { + if (!matchtag(func_arg->tags[i], enum_arg->tags[i], MATCHTAG_SILENT|MATCHTAG_COERCE)) { + skip = 1; + break; + } + } + if (skip) + break; } + if (!skip) { + /* Make sure there are no trailing arguments */ + if (sym->dim.arglist[curarg].ident == 0) + return TRUE; + } + t = t->next; } return FALSE; @@ -2266,6 +2280,7 @@ restart: } else { lval1->constval=(code_addr<<1)|0; snprintf(faketag, sizeof(faketag)-1, "$Func!%d", code_addr); + error(153); } lval1->tag=pc_addtag_flags(faketag, FIXEDTAG|FUNCTAG); oldsym->usage |= uREAD; diff --git a/sourcepawn/compiler/sc5.scp b/sourcepawn/compiler/sc5.scp index c4deec3a..23c1a275 100644 --- a/sourcepawn/compiler/sc5.scp +++ b/sourcepawn/compiler/sc5.scp @@ -31,14 +31,14 @@ SC_FUNC int strexpand(char *dest, unsigned char *source, int maxlen, unsigned ch #define SCPACK_TABLE errstr_table /*-*SCPACK start of pair table, do not change or remove this line */ unsigned char errstr_table [][2] = { - {101,32}, {116,32}, {111,110}, {115,32}, {100,32}, {97,114}, {105,110}, {116,105}, {101,114}, {37,115}, {110,111}, {97,110}, {101,110}, {114,101}, {97,108}, {135,130}, - {111,114}, {117,110}, {34,137}, {146,34}, {121,32}, {138,129}, {115,105}, {115,116}, {100,101}, {97,116}, {101,132}, {109,140}, {32,147}, {41,10}, {109,98}, {116,104}, - {114,97}, {117,115}, {144,32}, {98,108}, {145,99}, {101,120}, {164,143}, {102,166}, {97,32}, {116,121}, {118,142}, {111,108}, {169,112}, {99,139}, {173,149}, {115,121}, - {175,158}, {133,160}, {136,32}, {176,171}, {115,10}, {103,32}, {103,117}, {105,132}, {115,150}, {182,155}, {133,185}, {116,111}, {161,129}, {97,163}, {109,188}, {101,131}, - {102,134}, {44,32}, {170,183}, {99,104}, {101,10}, {134,194}, {104,97}, {111,102}, {117,108}, {99,116}, {105,131}, {167,32}, {98,128}, {97,143}, {177,148}, {109,97}, - {101,100}, {165,112}, {99,130}, {37,131}, {118,133}, {179,156}, {110,32}, {199,32}, {105,189}, {212,216}, {109,101}, {99,111}, {111,112}, {137,10}, {130,32}, {99,108}, - {118,128}, {186,129}, {152,192}, {102,105}, {172,128}, {220,136}, {116,97}, {100,105}, {119,105}, {97,115}, {108,128}, {97,131}, {156,10}, {109,153}, {151,153}, {217,128}, - {213,157}, {198,224}, {40,240}, {150,122}, {210,151}, {34,32}, {138,32}, {139,32}, {142,32}, {159,32}, {110,97}, {115,101}, {116,117}, {139,132}, {209,141} + {101,32}, {116,32}, {111,110}, {115,32}, {100,32}, {97,114}, {105,110}, {116,105}, {101,114}, {37,115}, {110,111}, {97,110}, {101,110}, {135,130}, {97,108}, {114,101}, + {117,110}, {111,114}, {34,137}, {146,34}, {121,32}, {138,129}, {115,105}, {115,116}, {100,101}, {97,116}, {101,132}, {109,140}, {32,147}, {41,10}, {109,98}, {116,104}, + {117,115}, {114,97}, {145,32}, {144,99}, {98,108}, {163,141}, {102,165}, {101,120}, {97,32}, {116,121}, {99,139}, {118,142}, {111,108}, {169,112}, {170,149}, {115,121}, + {175,158}, {136,32}, {133,161}, {176,172}, {115,10}, {115,150}, {103,32}, {116,111}, {103,117}, {105,132}, {184,155}, {133,186}, {160,129}, {97,164}, {109,188}, {101,131}, + {102,134}, {101,10}, {44,32}, {171,185}, {99,104}, {166,32}, {134,195}, {104,97}, {111,102}, {117,108}, {99,116}, {105,131}, {98,128}, {97,141}, {178,148}, {110,32}, + {109,97}, {101,100}, {167,112}, {99,130}, {37,131}, {118,133}, {179,156}, {200,32}, {105,189}, {213,216}, {109,101}, {99,111}, {111,112}, {137,10}, {130,32}, {99,108}, + {118,128}, {187,129}, {152,192}, {102,105}, {97,131}, {173,128}, {220,136}, {116,97}, {100,105}, {119,105}, {97,115}, {108,128}, {156,10}, {109,153}, {151,153}, {217,128}, + {214,157}, {199,224}, {40,240}, {150,122}, {211,151}, {34,32}, {138,32}, {139,32}, {142,32}, {159,32}, {110,97}, {115,101}, {116,117}, {139,132}, {210,143} }; /*-*SCPACK end of pair table, do not change or remove this line */ @@ -196,159 +196,163 @@ static char *errmsg[] = { /*150*/ "setter must take exactly one extra argument with type %s\n", /*151*/ "setter must return void\n", /*152*/ "no setter found for property %s\n", +/*153*/ "cannot use non-public functions as callbacks\n", +/*154*/ "cannot assign INVALID_FUNCTION to a non-function type\n", #else - "\321e\311\232\273k\214:\234\301bu\201fo\221\204\223\012", - "\202l\224\250s\206g\352\356e\233\201(\242\376\270\202) \255 f\253low ea\303 \042c\351e\042\012", - "\230\337\205\315 \327\250loc\370\357\276appe\205 \206 \250\333mpo\221\204\243ock\012", - "\247\234 \312\225imple\233t\320\012", - "\313\317\224\225\361\272t\264", - "\276\314a\270gn\232\273 \367\261y\012", - "\345\231\242\256\314\215\342\320\012", - "\276\314\250\364\213\201\376\270\202; \351sum\232z\210o\012", - "\305\316\363\200(nega\207ve\301z\210o \242ou\201\327bo\221ds\235", - "\305\313\242\230\337\205\315\012", - "\305out\226d\200\247\264", - "\305\313c\216l\301\225\250\302add\215s\264", - "\366\214tr\224po\206\201(\366pu\243ic \247s\235", - "\305\356e\233t; \225\206 s\350t\303\012", - "\042\230fa\310t\365c\351\200\276\314\237\200l\351\201c\351\200\206 s\350t\303 \356e\233t\012", - "m\310\207p\352\230fa\310t\203\206 \042s\350t\303\042\012", - "\221\342\232\325\012", - "\206i\207\216iz\315 d\231\250\245ce\320\203\230\337\205\232\363\304", + "\322e\312\232\267k\214:\234\302bu\201fo\220\204\223\012", + "\202l\224\250s\206g\353\356e\233\201(\242\376\265\202) \252 f\254low ea\304 \042c\352e\042\012", + "\230\337\205\315 \327\250loc\370\357\276appe\205 \206 \250\333mpo\220\204\244ock\012", + "\246\234 \313\225imple\233t\321\012", + "\305\320\224\225\361\273t\264", + "\276\314a\265gn\232\267 \367\262y\012", + "\346\231\242\256\314\217\342\321\012", + "\276\314\250\364\213\201\376\265\202; \352sum\232z\210o\012", + "\306\316\363\200(nega\207ve\302z\210o \242ou\201\327bo\220ds\235", + "\306\305\242\230\337\205\315\012", + "\306out\226d\200\246\264", + "\306\305c\216l\302\225\250\303add\217s\264", + "\366\214tr\224po\206\201(\366pu\244ic \246s\235", + "\306\356e\233t; \225\206 s\351t\304\012", + "\042\230fa\311t\365c\352\200\276\314\237\200l\352\201c\352\200\206 s\351t\304 \356e\233t\012", + "m\311\207p\353\230fa\311t\203\206 \042s\351t\304\042\012", + "\220\342\232\326\012", + "\206i\207\216iz\315 d\231\250\247ce\321\203\230\337\205\232\363\301", "\225\250label:\354", - "\305\263 \372m\200\223\012", - "\263 \216\215ad\224\342\320:\354", - "\276\314l\252u\200(n\202-\364\213t\235", - "\316a\270gn\233\201\276\314\226mp\352a\270gn\233t\012", - "\042b\215ak\365\242\042\322t\206ue\365\312ou\201\327\322t\245t\012", - "\313head\206\265\347ff\210\203from pro\273\254\304", - "\366\355\303\206\265\042#if...\042\012", - "\305\303\205a\311\262\364\213t\012", - "\305subscrip\201(\225\367\316\242\273o m\213\224subscripts):\354", - "\305\376\270\202\301\351sum\232z\210o\012", - "\333mpo\221\204\356e\233\201\225\337os\232a\201\237\200\214\204\327\343\352(\227\205t\232a\201l\206\200%d\235", - "\221k\212w\326\347\215c\207v\304", - "\316\206\230x ou\201\327bo\221d\203(\357\223\235", + "\306\263 \372m\200\223\012", + "\263 \216\217ad\224\342\321:\354", + "\276\314l\253u\200(n\202-\364\213t\235", + "\316a\265gn\233\201\276\314\226mp\353a\265gn\233t\012", + "\042b\217ak\365\242\042\323t\206ue\365\313ou\201\327\323t\247t\012", + "\305head\206\266\350ff\210\203from pro\267\255\301", + "\366\355\304\206\266\042#if...\042\012", + "\306\304\205a\312\261\364\213t\012", + "\306subscrip\201(\225\367\316\242\267o m\213\224subscripts):\354", + "\306\376\265\202\302\352sum\232z\210o\012", + "\333mpo\220\204\356e\233\201\225\337os\232a\201\237\200\214\204\327\343\353(\227\205t\232a\201l\206\200%d\235", + "\220k\212w\317\350\217c\207v\301", + "\316\206\230x ou\201\327bo\220d\203(\357\223\235", "\316\276\314\206\230x\232(\357\223\235", - "\341do\277\225\361\250\230fa\310\201\252u\200(\341%d\235", - "\341\344mis\355\303 (\341%d\235", + "\341do\277\225\361\250\230fa\311\201\253u\200(\341%d\235", + "\341\345mis\355\304 (\341%d\235", "empt\224\356e\233t\012", - "\305\227r\206\265(po\270\243\224n\202-t\210m\206\231\232\227r\206g\235", - "\245t\240 \303\205a\311\210\203\336l\206\304", - "\364\213\201\263 \306\203\366\363\304", - "duplic\231\200\042c\351e\365label (\252u\200%d\235", - "\305ellip\226s\301\316\363\200\312\225k\212wn\012", - "\305\333\236\206\315 \327\337\351\203speci\343\210\264", - "\303\205a\311\262\364\213\201\245ce\320\203r\213g\200f\242pack\232\227r\206g\012", - "po\226\217\370p\205a\332t\210\203\276p\215c\320\200\216l \372m\232p\205a\332t\210\264", - "\273o m\213\224\313\272t\264", - "\221k\212w\326\316\363\200(\357\223\235", - "\316\363\277do \225\355\303\301\242\230\227\206\315 \316\312\273o sm\216l\012", - "\316(\203do \225\355\303\012", - "\305l\206\200\322t\206u\315\012", - "\305r\213g\304", - "\305subscript\301\241\200\042[ ]\365\345\231\220\203\336\317j\242\347\233\226\202\264", - "m\310\207-\347\233\226\202\370\261y\203\276\314f\310l\224\206i\207\216iz\320\012", - "\245ce\320\206\265\317ximum nu\236\262\327\347\233\226\202\264", - "\221\355\303\232\337os\206\265b\240c\200(\042}\042\235", - "\227\205\201\327\313bod\224\350\237ou\201\313head\210\012", - "\261ys\301loc\370\331\277\375\313\272t\203\256\314pu\243ic (\357\223\235", - "\221\300ish\232\376\270\336bef\220\200\333mpil\262\347\215c\207v\304", - "duplic\231\200\272t; sam\200\341\312p\351s\232t\350c\304", - "\313\341\317\224\225\361\250\230fa\310\201\252u\200(\357\223\235", - "m\310\207p\352\042#el\373\365\347\215c\207v\277betwe\214 \042#if ... #\214\347f\042\012", - "\042#el\373if\365\347\215c\207\340f\253low\203\367\042#el\373\365\347\215c\207v\304", - "nu\236\262\327\345\213d\203do\277\225\343\201\237\200\345\231\220\012", - "\313\215s\310\201\346\265\327\345\231\220\234 \276\314\223\012", - "\256\303\213g\200p\215\342\232\345\231\220\264", - "\313\341\317\224\202l\224\361\250s\206g\352\346\265(\341%d\235", - "\313\341\317\224\225\314\250\215f\210\214c\200\341\242\367\316(\341\223\235", - "\357\256\314bo\371\250\215f\210\214c\200\375\367\316(\357\223\235", - "\305\240\217\370nu\236\262p\215ci\226\336\206 #p\240g\317\012", - "\240\217\370nu\236\262f\220\317\201\216\215ad\224\342\320\012", - "\240\217\370nu\236\262supp\220\201w\353\225\214\275\320\012", - "\241\210-\342\232\345\231\242\276\314\230\337\205\232bef\220\200\241\200(\247\234\235", - "\042\363e\307\365\345\231\242\312\305\336\042\247\365\263\264", - "\313\341\276\314\367\316(\341\223\235", - "#\342\200p\231t\210\326\276\227\205\201\350\371\367\216p\306be\207c \303\205a\311\210\012", - "\206pu\201l\206\200\273o l\202\265(aft\262subs\207\374\217s\235", - "\257n\346x \210r\242\206 \237\200\376\270\202\301\242\305\313c\216l\012", - "m\216f\220m\232UTF-8 \214\333d\206g\301\242c\220rupt\232\343le: \335", - "\313\241\277bo\371\042\215\374rn\365\375\042\215\374r\326<\252ue>\042\012", - "\206\322\226\227\214\201\215\374r\326\254\277(\316& n\202-\261y\235", - "\221k\212w\326\263\301\242\225\250\364\213\201\263 \362", - "\256\346k\200\250\346\265\353\250\230fa\310\201\252u\200f\242\367\206\230x\232\316p\205a\332t\262\362", - "\241\210-\342\232\345\231\220\203\375\372\207\340\247\203\317\224\225\361\356e\264", - "\250\313\242\357\317\224\202l\224bel\202\265\273 \250s\206g\352au\273\355\336\362", - "\356\200\322fli\311: \202\200\327\237\200\356\277\312\216\215ad\224a\270gn\232\273 a\212\237\262imple\233t\315 \362", - "\366\356\277\205\200\342\232f\242\325\012", - "\221k\212w\326au\273\355\202\354", - "\221k\212w\326\356\200\223 f\242au\273\355\202\354", - "pu\243ic \331\277\375loc\370\331\277\317\224\225\361\356\277\362", - "\356\200\331\277\317\224\225\314\206i\207\216iz\232\362", - "pu\243ic \247\203\317\224\225\215\374r\326\261y\203\362", - "a\236i\266ou\203\364\213t; \346\265ov\210rid\200\312\215qui\215\204\362", - "nu\236\262\327\272t\203do\277\225\355\303 \342i\217\012", - "\321e\311\232\346\265\372m\200id\214\207\343\210\012", - "\313\214um\210\315 \215qui\215\203\221iqu\200\346g\012", - "\256\361\215qui\215\204p\205a\332t\210\203aft\262\334\217\370p\205a\332t\210\264", - "\333\310\204\225\300\204\332\236\210\234 \206 \227ruc\201\223\012", - "\325 do\277\225\361\250\355\303\206\265\254\304", - "\344\223 sho\310\204\314\223 \206 new-\227y\352\230\337\205\315\264", - "\323sho\310\204\225\361\367\321lici\201\215\374r\326\254\304", - "\313pro\273\254\277do \225\355\303\012", - "specif\224ei\237\262\216l \347\233\226\202\203\242\202l\224\237\200l\351\201\347\233\226\202\012", - "\256\300\204\323\335", - "\323w\353\216\215ad\224\342\232\336\237\312\335", + "\306\227r\206\266(po\265\244\224n\202-t\210m\206\231\232\227r\206g\235", + "\247t\241 \304\205a\312\210\203\336l\206\301", + "\364\213\201\263 \307\203\366\363\301", + "duplic\231\200\042c\352e\365label (\253u\200%d\235", + "\306ellip\226s\302\316\363\200\313\225k\212wn\012", + "\306\333\236\206\315 \327\337\352\203speci\343\210\264", + "\304\205a\312\261\364\213\201\247ce\321\203r\213g\200f\242pack\232\227r\206g\012", + "po\226\215\370p\205a\332t\210\203\276p\217c\321\200\216l \372m\232p\205a\332t\210\264", + "\267o m\213\224\305\273t\264", + "\220k\212w\317\316\363\200(\357\223\235", + "\316\363\277do \225\355\304\302\242\230\227\206\315 \316\313\267o sm\216l\012", + "\316(\203do \225\355\304\012", + "\306l\206\200\323t\206u\315\012", + "\306r\213g\301", + "\306subscript\302\240\200\042[ ]\365\346\231\221\203\336\320j\242\350\233\226\202\264", + "m\311\207-\350\233\226\202\370\262y\203\276\314f\311l\224\206i\207\216iz\321\012", + "\247ce\321\206\266\320ximum nu\236\261\327\350\233\226\202\264", + "\220\355\304\232\337os\206\266b\241c\200(\042}\042\235", + "\227\205\201\327\305bod\224\351\237ou\201\305head\210\012", + "\262ys\302loc\370\331\277\375\305\273t\203\256\314pu\244ic (\357\223\235", + "\220\300ish\232\376\265\336bef\221\200\333mpil\261\350\217c\207v\301", + "duplic\231\200\273t; sam\200\341\313p\352s\232t\351c\301", + "\305\341\320\224\225\361\250\230fa\311\201\253u\200(\357\223\235", + "m\311\207p\353\042#el\373\365\350\217c\207v\277betwe\214 \042#if ... #\214\350f\042\012", + "\042#el\373if\365\350\217c\207\340f\254low\203\367\042#el\373\365\350\217c\207v\301", + "nu\236\261\327\346\213d\203do\277\225\343\201\237\200\346\231\221\012", + "\305\217s\311\201\347\266\327\346\231\221\234 \276\314\223\012", + "\256\304\213g\200p\217\342\232\346\231\221\264", + "\305\341\320\224\202l\224\361\250s\206g\353\347\266(\341%d\235", + "\305\341\320\224\225\314\250\217f\210\214c\200\341\242\367\316(\341\223\235", + "\357\256\314bo\371\250\217f\210\214c\200\375\367\316(\357\223\235", + "\306\241\215\370nu\236\261p\217ci\226\336\206 #p\241g\320\012", + "\241\215\370nu\236\261f\221\320\201\216\217ad\224\342\321\012", + "\241\215\370nu\236\261supp\221\201w\344\225\214\275\321\012", + "\240\210-\342\232\346\231\242\276\314\230\337\205\232bef\221\200\240\200(\246\234\235", + "\042\363e\310\365\346\231\242\313\306\336\042\246\365\263\264", + "\305\341\276\314\367\316(\341\223\235", + "#\342\200p\231t\210\317\276\227\205\201\351\371\367\216p\307be\207c \304\205a\312\210\012", + "\206pu\201l\206\200\267o l\202\266(aft\261subs\207\374\215s\235", + "\257n\347x \210r\242\206 \237\200\376\265\202\302\242\306\305c\216l\012", + "m\216f\221m\232UTF-8 \214\333d\206g\302\242c\221rupt\232\343le: \335", + "\305\240\277bo\371\042\217\374rn\365\375\042\217\374r\317<\253ue>\042\012", + "\206\323\226\227\214\201\217\374r\317\255\277(\316& n\202-\262y\235", + "\220k\212w\317\263\302\242\225\250\364\213\201\263 \362", + "\256\347k\200\250\347\266\344\250\230fa\311\201\253u\200f\242\367\206\230x\232\316p\205a\332t\261\362", + "\240\210-\342\232\346\231\221\203\375\372\207\340\246\203\320\224\225\361\356e\264", + "\250\305\242\357\320\224\202l\224bel\202\266\267 \250s\206g\353au\267\355\336\362", + "\356\200\323fli\312: \202\200\327\237\200\356\277\313\216\217ad\224a\265gn\232\267 a\212\237\261imple\233t\315 \362", + "\366\356\277\205\200\342\232f\242\326\012", + "\220k\212w\317au\267\355\202\354", + "\220k\212w\317\356\200\223 f\242au\267\355\202\354", + "pu\244ic \331\277\375loc\370\331\277\320\224\225\361\356\277\362", + "\356\200\331\277\320\224\225\314\206i\207\216iz\232\362", + "pu\244ic \246\203\320\224\225\217\374r\317\262y\203\362", + "a\236i\270ou\203\364\213t; \347\266ov\210rid\200\313\217qui\217\204\362", + "nu\236\261\327\273t\203do\277\225\355\304 \342i\215\012", + "\322e\312\232\347\266\372m\200id\214\207\343\210\012", + "\305\214um\210\315 \217qui\217\203\220iqu\200\347g\012", + "\256\361\217qui\217\204p\205a\332t\210\203aft\261\334\215\370p\205a\332t\210\264", + "\333\311\204\225\300\204\332\236\210\234 \206 \227ruc\201\223\012", + "\326 do\277\225\361\250\355\304\206\266\255\301", + "\345\223 sho\311\204\314\223 \206 new-\227y\353\230\337\205\315\264", + "\324sho\311\204\225\361\367\322lici\201\217\374r\317\255\301", + "\305pro\267\255\277do \225\355\304\012", + "specif\224ei\237\261\216l \350\233\226\202\203\242\202l\224\237\200l\352\201\350\233\226\202\012", + "\256\300\204\324\335", + "\324w\344\216\217ad\224\342\232\336\237\313\335", "\256\300\204\213\224\332\237od\203f\242\335", - "\256\300\204\332\237o\204\242pr\345t\224\211.\335", - "\256c\216l \332\237od\203\336\367\261y\012", - "\256c\216l \332\237od\203\336\250\247\012", - "\332\237o\204\276\361\250\343rs\201\341\333mpa\207\243\200\350\371\237\200\323\344(\211\235", - "\323\372m\200\276\227\205\201\350\371\367upp\210c\351\200lett\210\012", - "\323\306\203\216\215ad\224be\214 \342\232(p\215vio\241l\224\373\214 \353\211\235", - "\321e\311\232id\214\207\343\262- d\267you f\220ge\201\250\254e?\012", - "\364ru\311\242\313\276\215\374r\326\346\265\335", - "\256\342\200\364ru\311\242f\220\234; \216\215ad\224\245i\227\203\353\250\335", - "miss\206\265\254e\301\242\323\276\361\237\200sam\200\372m\200\353\323\223\012", - "\256\241\200\230lete\301\323\323\306\203\366\230\227ru\311\220\012", - "\366\332\237od\317p \242\337\351\203w\353fo\221\204f\242\335", - "\366\230\227ru\311\242w\353fo\221\204f\242\323\335", - "\230\227ru\311\220\203\276\314\372\207\340\247\264", - "\230\227ru\311\220\203\256\361\245t\240 \272t\264", - "\332\237od\317p \375\337\351\203\226gn\231u\215\203\276\241\200new-\227y\352\344\230\337\205\315\264", - "\256specif\224\316\347\233\226\202\203\336bo\371\344\375\372m\304", - "\321e\311\232\344\376\270\202\012", - "f\310ly-qu\216i\343\232\372m\200\223 \312\273o l\202g\301wo\310\204\314tr\244\231\232\273\354", - "\221\321e\311\232\273k\214\301\321e\311\232\332\237o\204\242pr\345\251\012", - "\321e\311\232\042\372\207ve\042\301\042get\042\301\242\042\373t\042\012", - "\323f\242\323\216\215ad\224\245i\227\264", - "pr\345t\224gett\210\203\256accep\201\245t\240 \272t\264", - "\323\276\361\237\200sam\200\215\374r\326\344\353pr\345t\224\323(\211\235", - "\256mix \332\237od\317p\203\375\337\351s\277\350\371\206h\210it\213c\304", - "\256\333\210c\200\247\203\273 \252ue\264", - "\256\333\210c\200objec\201\344\323\273 n\202-objec\201\344\335", - "\256\333\210c\200n\202-objec\201\344\323\273 objec\201\344\335", - "\256\333\210c\200\221\215l\231\232objec\201\254\277\323\375\335", - "\344mis\355\303 (\323\375\211\235", - "\256\241\200\367objec\201\206 \250m\310\207-\346\265\373le\311\220\012", - "\261y\203\205\200\225supp\220t\232\353\215\374r\326\254e\264", - "\256mix \215f\210\214c\200\375\316\254e\264", - "\322s\201w\353speci\343\232t\350c\304", - "\333\310\204\225\300\204\344\223\012", - "new-\227y\352\316\254\277\256specif\224\347\233\226\336\363\277\353p\205\201\327\237eir \254\304", - "\372\207ves\301f\220w\205ds\301\375pu\243ic \247\203\256\215\374r\326\261y\264", - "\305\344\230\337\205\315\012", - "new-\227y\352\230\337\205\315\203sho\310\204\225\361\042new\042\012", - "vo\267\256\314\241\232\353\250\357\254\304", - "\305\344\376\270\202\012", - "#p\240gm\250new\230\337\203\276\314\215qui\215\204\242\334\217\216\012", - "new-\227y\352\230\337\205\315\203\205\200\215qui\215d\012", - "\256a\270g\326n\310l \273 \250n\202-n\310l\275\200\254\304", - "\366gett\262fo\221\204f\242pr\345t\224\335", - "\373tt\262\276\346k\200\245a\311l\224\202\200\245t\240 \341\350\371\344\335", - "\373tt\262\276\215\374r\326void\012", - "\366\373tt\262fo\221\204f\242pr\345t\224\335" + "\256\300\204\332\237o\204\242pr\346t\224\211.\335", + "\256c\216l \332\237od\203\336\367\262y\012", + "\256c\216l \332\237od\203\336\250\246\012", + "\332\237o\204\276\361\250\343rs\201\341\333mpa\207\244\200\351\371\237\200\324\345(\211\235", + "\324\372m\200\276\227\205\201\351\371\367upp\210c\352\200lett\210\012", + "\324\307\203\216\217ad\224be\214 \342\232(p\217vio\240l\224\373\214 \344\211\235", + "\322e\312\232id\214\207\343\261- d\271you f\221ge\201\250\255e?\012", + "\364ru\312\242\305\276\217\374r\317\347\266\335", + "\256\342\200\364ru\312\242f\221\234; \216\217ad\224\247i\227\203\344\250\335", + "miss\206\266\255e\302\242\324\276\361\237\200sam\200\372m\200\344\324\223\012", + "\256\240\200\230lete\302\324\324\307\203\366\230\227ru\312\221\012", + "\366\332\237od\320p \242\337\352\203w\344fo\220\204f\242\335", + "\366\230\227ru\312\242w\344fo\220\204f\242\324\335", + "\230\227ru\312\221\203\276\314\372\207\340\246\264", + "\230\227ru\312\221\203\256\361\247t\241 \273t\264", + "\332\237od\320p \375\337\352\203\226gn\231u\217\203\276\240\200new-\227y\353\345\230\337\205\315\264", + "\256specif\224\316\350\233\226\202\203\336bo\371\345\375\372m\301", + "\322e\312\232\345\376\265\202\012", + "f\311ly-qu\216i\343\232\372m\200\223 \313\267o l\202g\302wo\311\204\314tr\243\231\232\267\354", + "\220\322e\312\232\267k\214\302\322e\312\232\332\237o\204\242pr\346\251\012", + "\322e\312\232\042\372\207ve\042\302\042get\042\302\242\042\373t\042\012", + "\324f\242\324\216\217ad\224\247i\227\264", + "pr\346t\224gett\210\203\256accep\201\247t\241 \273t\264", + "\324\276\361\237\200sam\200\217\374r\317\345\344pr\346t\224\324(\211\235", + "\256mix \332\237od\320p\203\375\337\352s\277\351\371\206h\210it\213c\301", + "\256\333\210c\200\246\203\267 \253ue\264", + "\256\333\210c\200objec\201\345\324\267 n\202-objec\201\345\335", + "\256\333\210c\200n\202-objec\201\345\324\267 objec\201\345\335", + "\256\333\210c\200\220\217l\231\232objec\201\255\277\324\375\335", + "\345mis\355\304 (\324\375\211\235", + "\256\240\200\367objec\201\206 \250m\311\207-\347\266\373le\312\221\012", + "\262y\203\205\200\225supp\221t\232\344\217\374r\317\255e\264", + "\256mix \217f\210\214c\200\375\316\255e\264", + "\323s\201w\344speci\343\232t\351c\301", + "\333\311\204\225\300\204\345\223\012", + "new-\227y\353\316\255\277\256specif\224\350\233\226\336\363\277\344p\205\201\327\237eir \255\301", + "\372\207ves\302f\221w\205ds\302\375pu\244ic \246\203\256\217\374r\317\262y\264", + "\306\345\230\337\205\315\012", + "new-\227y\353\230\337\205\315\203sho\311\204\225\361\042new\042\012", + "vo\271\256\314\240\232\344\250\357\255\301", + "\306\345\376\265\202\012", + "#p\241gm\250new\230\337\203\276\314\217qui\217\204\242\334\215\216\012", + "new-\227y\353\230\337\205\315\203\205\200\217qui\217d\012", + "\256a\265g\317n\311l \267 \250n\202-n\311l\275\200\255\301", + "\366gett\261fo\220\204f\242pr\346t\224\335", + "\373tt\261\276\347k\200\247a\312l\224\202\200\247t\241 \341\351\371\345\335", + "\373tt\261\276\217\374r\317void\012", + "\366\373tt\261fo\220\204f\242pr\346t\224\335", + "\256\240\200n\202-pu\244ic \246\203\344c\216lback\264", + "\256a\265g\317INVALID_FUNCTION \267 \250n\202-\305\255\301" #endif }; @@ -373,18 +377,18 @@ static char *fatalmsg[] = { /*170*/ "assertion failed: %s\n", /*171*/ "user error: %s\n", #else - "\256\215a\204from \343le:\354", - "\256writ\200\273 \343le:\354", + "\256\217a\204from \343le:\354", + "\256writ\200\267 \343le:\354", "t\275\200ov\210flow:\354", - "\206suf\343ci\214\201\332m\220y\012", - "\305\351\373\236l\262\206\227ruc\217\354", - "num\210ic ov\210flow\301\245ce\320\206\265capaci\251\012", - "\333mpil\232scrip\201\245ce\320\203\237\200\317ximum \332m\220\224\363\200(%l\204bytes\235", - "\273o m\213\224\210r\242\332ssag\277\336\202\200l\206\304", - "\333\230pag\200\317pp\206\265\343\352\225fo\221d\012", - "\305p\231h:\354", - "\351s\210\217 fail\320: \335", - "\241\262\210r\220: \335" + "\206suf\343ci\214\201\332m\221y\012", + "\306\352\373\236l\261\206\227ruc\215\354", + "num\210ic ov\210flow\302\247ce\321\206\266capaci\251\012", + "\333mpil\232scrip\201\247ce\321\203\237\200\320ximum \332m\221\224\363\200(%l\204bytes\235", + "\267o m\213\224\210r\242\332ssag\277\336\202\200l\206\301", + "\333\230pag\200\320pp\206\266\343\353\225fo\220d\012", + "\306p\231h:\354", + "\352s\210\215 fail\321: \335", + "\240\261\210r\221: \335" #endif }; @@ -428,43 +432,43 @@ static char *warnmsg[] = { /*235*/ "public function lacks forward declaration (symbol \"%s\")\n", /*236*/ "unknown parameter in substitution (incorrect #define pattern)\n" #else - "\325 \312tr\244\231\232\273 %\204\303\205a\311\210\264", - "\215\342i\217 \327\364\213t/\317cro \362", - "nu\236\262\327\272t\203do\277\225\355\303 \342i\217\012", - "\263 \312nev\262\241\320:\354", - "\263 \312a\270gn\232\250\252u\200\237a\201\312nev\262\241\320:\354", - "\215d\221d\213\201\333\230: \364\213\201\376\270\336\312z\210o\012", - "\215d\221d\213\201te\227: \364\213\201\376\270\336\312n\202-z\210o\012", - "\221k\212w\326#p\240g\317\012", - "\313\350\371\346\265\215s\310\201\241\232bef\220\200\342i\217\301f\220c\206\265\215p\205s\304", - "\247\234 sho\310\204\215\374r\326\250\252u\304", - "po\270\243\200\241\200\327\263 bef\220\200\206i\207\216iz\315:\354", - "po\270\243\224\221\206t\214\230\204a\270gn\233t\012", - "po\270\243\224\221\206t\214\230\204bit\350s\200\345\315\012", - "\346\265mis\355\303\012", - "po\270\243\224\250\042\364\365\316\341w\353\206t\214\230d:\354", - "\376\270\336\306\203\366effe\311\012", + "\326 \313tr\243\231\232\267 %\204\304\205a\312\210\264", + "\217\342i\215 \327\364\213t/\320cro \362", + "nu\236\261\327\273t\203do\277\225\355\304 \342i\215\012", + "\263 \313nev\261\240\321:\354", + "\263 \313a\265gn\232\250\253u\200\237a\201\313nev\261\240\321:\354", + "\217d\220d\213\201\333\230: \364\213\201\376\265\336\313z\210o\012", + "\217d\220d\213\201te\227: \364\213\201\376\265\336\313n\202-z\210o\012", + "\220k\212w\317#p\241g\320\012", + "\305\351\371\347\266\217s\311\201\240\232bef\221\200\342i\215\302f\221c\206\266\217p\205s\301", + "\246\234 sho\311\204\217\374r\317\250\253u\301", + "po\265\244\200\240\200\327\263 bef\221\200\206i\207\216iz\315:\354", + "po\265\244\224\220\206t\214\230\204a\265gn\233t\012", + "po\265\244\224\220\206t\214\230\204bit\351s\200\346\315\012", + "\347\266mis\355\304\012", + "po\265\244\224\250\042\364\365\316\341w\344\206t\214\230d:\354", + "\376\265\336\307\203\366effe\312\012", "ne\227\232\333m\233t\012", "loos\200\206d\214t\315\012", - "\253\204\227y\352pro\273\254\277\241\232\350\371\334\217\370\373mic\253umn\264", - "loc\370\357\223 s\306dow\203\250\357a\201\250p\215c\320\206\265level\012", - "\376\270\336\350\371\346\265ov\210rid\200\276appe\205 betwe\214 p\205\214\237e\373\264", - "label \372m\200\223 s\306dow\203\346\265\372m\304", - "nu\236\262\327\347git\203\245ce\320\203\240\217\370nu\236\262p\215ci\226\202\012", - "\215d\221d\213\201\042\363e\307\042: \341\363\200\312\216way\2031 \362", - "\206\230t\210m\206\231\200\316\363\200\206 \042\363e\307\365\376\270\336\362", - "\221\215a\303\275\200\333\230\012", - "\250\357\312a\270gn\232\273 it\373lf \362", - "m\220\200\206i\207\216iz\210\203\237\367\214um \343eld\264", - "l\214g\371\327\206i\207\216iz\262\245ce\320\203\363\200\327\237\200\214um \343eld\012", - "\206\230x \346\265mis\355\303 \362", - "\366imple\233t\315 f\242\356\200\223 \206 \247\234\301\366f\216l-back\012", - "\356\200speci\343c\315 \336f\220w\205\204\230\337\205\315 \312ig\212\215d\012", - "outpu\201\343\352\312writt\214\301bu\201\350\371\333mpac\201\214\333d\206\265\347s\275\320\012", - "\356\200\357\223 s\306dow\203\250glob\370\331\304", - "\325 \312m\205k\232\353\230p\215c\231\320: \335", - "pu\243ic \313lack\203f\220w\205\204\230\337\205\315 \362", - "\221k\212w\326p\205a\332t\262\206 subs\207\374\217 (\206c\220\215c\201#\342\200p\231t\210n\235" + "\254\204\227y\353pro\267\255\277\240\232\351\371\334\215\370\373mic\254umn\264", + "loc\370\357\223 s\307dow\203\250\357a\201\250p\217c\321\206\266level\012", + "\376\265\336\351\371\347\266ov\210rid\200\276appe\205 betwe\214 p\205\214\237e\373\264", + "label \372m\200\223 s\307dow\203\347\266\372m\301", + "nu\236\261\327\350git\203\247ce\321\203\241\215\370nu\236\261p\217ci\226\202\012", + "\217d\220d\213\201\042\363e\310\042: \341\363\200\313\216way\2031 \362", + "\206\230t\210m\206\231\200\316\363\200\206 \042\363e\310\365\376\265\336\362", + "\220\217a\304\275\200\333\230\012", + "\250\357\313a\265gn\232\267 it\373lf \362", + "m\221\200\206i\207\216iz\210\203\237\367\214um \343eld\264", + "l\214g\371\327\206i\207\216iz\261\247ce\321\203\363\200\327\237\200\214um \343eld\012", + "\206\230x \347\266mis\355\304 \362", + "\366imple\233t\315 f\242\356\200\223 \206 \246\234\302\366f\216l-back\012", + "\356\200speci\343c\315 \336f\221w\205\204\230\337\205\315 \313ig\212\217d\012", + "outpu\201\343\353\313writt\214\302bu\201\351\371\333mpac\201\214\333d\206\266\350s\275\321\012", + "\356\200\357\223 s\307dow\203\250glob\370\331\301", + "\326 \313m\205k\232\344\230p\217c\231\321: \335", + "pu\244ic \305lack\203f\221w\205\204\230\337\205\315 \362", + "\220k\212w\317p\205a\332t\261\206 subs\207\374\215 (\206c\221\217c\201#\342\200p\231t\210n\235" #endif };