| /* do not edit automatically generated by mc from mcMetaError. */ |
| /* This file is part of GNU Modula-2. |
| |
| GNU Modula-2 is free software; you can redistribute it and/or modify it under |
| the terms of the GNU General Public License as published by the Free |
| Software Foundation; either version 3, or (at your option) any later |
| version. |
| |
| GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY |
| WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with GCC; see the file COPYING3. If not see |
| <http://www.gnu.org/licenses/>. */ |
| |
| #include "config.h" |
| #include "system.h" |
| #include <stdbool.h> |
| # if !defined (PROC_D) |
| # define PROC_D |
| typedef void (*PROC_t) (void); |
| typedef struct { PROC_t proc; } PROC; |
| # endif |
| |
| # if !defined (TRUE) |
| # define TRUE (1==1) |
| # endif |
| |
| # if !defined (FALSE) |
| # define FALSE (1==0) |
| # endif |
| |
| #if defined(__cplusplus) |
| # undef NULL |
| # define NULL 0 |
| #endif |
| #define _mcMetaError_C |
| |
| #include "GmcMetaError.h" |
| # include "GnameKey.h" |
| # include "GStrLib.h" |
| # include "GmcLexBuf.h" |
| # include "GmcError.h" |
| # include "GFIO.h" |
| # include "GSFIO.h" |
| # include "GStringConvert.h" |
| # include "Gvarargs.h" |
| # include "GDynamicStrings.h" |
| # include "Gdecl.h" |
| |
| typedef enum {mcMetaError_newerror, mcMetaError_newwarning, mcMetaError_chained} mcMetaError_errorType; |
| |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaError1 (const char *m_, unsigned int _m_high, const unsigned char *s_, unsigned int _s_high); |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaError2 (const char *m_, unsigned int _m_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high); |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaError3 (const char *m_, unsigned int _m_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high); |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaError4 (const char *m_, unsigned int _m_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high, const unsigned char *s4_, unsigned int _s4_high); |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrors1 (const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s_, unsigned int _s_high); |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrors2 (const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high); |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrors3 (const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high); |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrors4 (const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high, const unsigned char *s4_, unsigned int _s4_high); |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorT1 (unsigned int tok, const char *m_, unsigned int _m_high, const unsigned char *s_, unsigned int _s_high); |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorT2 (unsigned int tok, const char *m_, unsigned int _m_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high); |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorT3 (unsigned int tok, const char *m_, unsigned int _m_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high); |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorT4 (unsigned int tok, const char *m_, unsigned int _m_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high, const unsigned char *s4_, unsigned int _s4_high); |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorsT1 (unsigned int tok, const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s_, unsigned int _s_high); |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorsT2 (unsigned int tok, const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high); |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorsT3 (unsigned int tok, const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high); |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorsT4 (unsigned int tok, const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high, const unsigned char *s4_, unsigned int _s4_high); |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorString1 (DynamicStrings_String m, const unsigned char *s_, unsigned int _s_high); |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorString2 (DynamicStrings_String m, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high); |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorString3 (DynamicStrings_String m, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high); |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorString4 (DynamicStrings_String m, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high, const unsigned char *s4_, unsigned int _s4_high); |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorStringT1 (unsigned int tok, DynamicStrings_String m, const unsigned char *s_, unsigned int _s_high); |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorStringT2 (unsigned int tok, DynamicStrings_String m, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high); |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorStringT3 (unsigned int tok, DynamicStrings_String m, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high); |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorStringT4 (unsigned int tok, DynamicStrings_String m, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high, const unsigned char *s4_, unsigned int _s4_high); |
| |
| /* |
| internalFormat - produces an informative internal error. |
| */ |
| |
| static void internalFormat (DynamicStrings_String s, int i, const char *m_, unsigned int _m_high); |
| |
| /* |
| x - checks to see that a=b. |
| */ |
| |
| static DynamicStrings_String x (DynamicStrings_String a, DynamicStrings_String b); |
| |
| /* |
| isWhite - returns TRUE if, ch, is a space. |
| */ |
| |
| static bool isWhite (char ch); |
| |
| /* |
| then := [ ':' ebnf ] =: |
| */ |
| |
| static void then (mcError_error *e, mcMetaError_errorType *t, DynamicStrings_String *r, DynamicStrings_String s, varargs_vararg sym, int *i, int l, DynamicStrings_String o, bool positive); |
| |
| /* |
| doNumber - |
| */ |
| |
| static DynamicStrings_String doNumber (unsigned int bol, varargs_vararg sym, DynamicStrings_String o, bool *quotes); |
| |
| /* |
| doCount - |
| */ |
| |
| static DynamicStrings_String doCount (unsigned int bol, varargs_vararg sym, DynamicStrings_String o, bool *quotes); |
| |
| /* |
| doCount - |
| */ |
| |
| static DynamicStrings_String doAscii (unsigned int bol, varargs_vararg sym, DynamicStrings_String o); |
| |
| /* |
| doCount - |
| */ |
| |
| static DynamicStrings_String doName (unsigned int bol, varargs_vararg sym, DynamicStrings_String o, bool *quotes); |
| |
| /* |
| doCount - |
| */ |
| |
| static DynamicStrings_String doQualified (unsigned int bol, varargs_vararg sym, DynamicStrings_String o); |
| |
| /* |
| doType - returns a string containing the type name of |
| sym. It will skip pseudonym types. It also |
| returns the type symbol found. |
| */ |
| |
| static DynamicStrings_String doType (unsigned int bol, varargs_vararg *sym, DynamicStrings_String o); |
| |
| /* |
| doSkipType - will skip all pseudonym types. It also |
| returns the type symbol found and name. |
| */ |
| |
| static DynamicStrings_String doSkipType (unsigned int bol, varargs_vararg *sym, DynamicStrings_String o); |
| |
| /* |
| doSkipType - will skip all pseudonym types. It also |
| returns the type symbol found and name. |
| */ |
| |
| static DynamicStrings_String doKey (unsigned int bol, varargs_vararg sym, DynamicStrings_String o); |
| |
| /* |
| doError - creates and returns an error note. |
| */ |
| |
| static mcError_error doError (mcError_error e, mcMetaError_errorType t, unsigned int tok); |
| |
| /* |
| doDeclaredDef - creates an error note where sym[bol] was declared. |
| */ |
| |
| static mcError_error doDeclaredDef (mcError_error e, mcMetaError_errorType t, unsigned int bol, varargs_vararg sym); |
| |
| /* |
| doDeclaredMod - creates an error note where sym[bol] was declared. |
| */ |
| |
| static mcError_error doDeclaredMod (mcError_error e, mcMetaError_errorType t, unsigned int bol, varargs_vararg sym); |
| |
| /* |
| doUsed - creates an error note where sym[bol] was first used. |
| */ |
| |
| static mcError_error doUsed (mcError_error e, mcMetaError_errorType t, unsigned int bol, varargs_vararg sym); |
| |
| /* |
| ConCatWord - joins sentances, a, b, together. |
| */ |
| |
| static DynamicStrings_String ConCatWord (DynamicStrings_String a, DynamicStrings_String b); |
| |
| /* |
| symDesc - |
| */ |
| |
| static DynamicStrings_String symDesc (decl_node n, DynamicStrings_String o); |
| |
| /* |
| doDesc - |
| */ |
| |
| static DynamicStrings_String doDesc (unsigned int bol, varargs_vararg sym, DynamicStrings_String o, bool *quotes); |
| |
| /* |
| addQuoted - if, o, is not empty then add it to, r. |
| */ |
| |
| static DynamicStrings_String addQuoted (DynamicStrings_String r, DynamicStrings_String o, bool quotes); |
| |
| /* |
| op := {'a'|'q'|'t'|'d'|'k'|'n'|'s'|'D'|'I'|'U'|'E'|'W'} then =: |
| */ |
| |
| static void op (mcError_error *e, mcMetaError_errorType *t, DynamicStrings_String *r, DynamicStrings_String s, varargs_vararg sym, int *i, int l, unsigned int bol, bool positive); |
| |
| /* |
| percenttoken := '%' ( |
| '1' % doOperand(1) % |
| op |
| | '2' % doOperand(2) % |
| op |
| | '3' % doOperand(3) % |
| op |
| | '4' % doOperand(4) % |
| op |
| ) |
| } =: |
| */ |
| |
| static void percenttoken (mcError_error *e, mcMetaError_errorType t, DynamicStrings_String *r, DynamicStrings_String s, varargs_vararg sym, int *i, int l, bool positive); |
| |
| /* |
| percent := '%' anych % copy anych % |
| =: |
| */ |
| |
| static void percent (DynamicStrings_String *r, DynamicStrings_String s, varargs_vararg sym, int *i, int l); |
| |
| /* |
| lbra := '{' [ '!' ] percenttoken '}' =: |
| */ |
| |
| static void lbra (mcError_error *e, mcMetaError_errorType *t, DynamicStrings_String *r, DynamicStrings_String s, varargs_vararg sym, int *i, int l); |
| |
| /* |
| lbra := '{' [ '!' ] percenttoken '}' =: |
| */ |
| |
| static void stop (void); |
| |
| /* |
| ebnf := { percent |
| | lbra |
| | any % copy ch % |
| } |
| =: |
| */ |
| |
| static void ebnf (mcError_error *e, mcMetaError_errorType *t, DynamicStrings_String *r, DynamicStrings_String s, varargs_vararg sym, int *i, int l); |
| |
| /* |
| doFormat - |
| */ |
| |
| static DynamicStrings_String doFormat (mcError_error *e, mcMetaError_errorType *t, DynamicStrings_String s, varargs_vararg sym); |
| |
| /* |
| wrapErrors - |
| */ |
| |
| static void wrapErrors (unsigned int tok, const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, varargs_vararg sym); |
| |
| |
| /* |
| internalFormat - produces an informative internal error. |
| */ |
| |
| static void internalFormat (DynamicStrings_String s, int i, const char *m_, unsigned int _m_high) |
| { |
| mcError_error e; |
| char m[_m_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m, m_, _m_high+1); |
| |
| e = mcError_newError (mcLexBuf_getTokenNo ()); |
| s = SFIO_WriteS (FIO_StdOut, s); |
| FIO_WriteLine (FIO_StdOut); |
| s = DynamicStrings_KillString (s); |
| if (i > 0) |
| { |
| i -= 1; |
| } |
| s = DynamicStrings_Mult (DynamicStrings_InitString ((const char *) " ", 1), static_cast<unsigned int> (i)); |
| s = DynamicStrings_ConCatChar (s, '^'); |
| s = SFIO_WriteS (FIO_StdOut, s); |
| FIO_WriteLine (FIO_StdOut); |
| mcError_internalError ((const char *) m, _m_high, (const char *) "../../gcc/m2/mc/mcMetaError.mod", 31, 97); |
| } |
| |
| |
| /* |
| x - checks to see that a=b. |
| */ |
| |
| static DynamicStrings_String x (DynamicStrings_String a, DynamicStrings_String b) |
| { |
| if (a != b) |
| { |
| mcError_internalError ((const char *) "different string returned", 25, (const char *) "../../gcc/m2/mc/mcMetaError.mod", 31, 109); |
| } |
| return a; |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| isWhite - returns TRUE if, ch, is a space. |
| */ |
| |
| static bool isWhite (char ch) |
| { |
| return ch == ' '; |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| then := [ ':' ebnf ] =: |
| */ |
| |
| static void then (mcError_error *e, mcMetaError_errorType *t, DynamicStrings_String *r, DynamicStrings_String s, varargs_vararg sym, int *i, int l, DynamicStrings_String o, bool positive) |
| { |
| if ((DynamicStrings_char (s, (*i))) == ':') |
| { |
| (*i) += 1; |
| ebnf (e, t, r, s, sym, i, l); |
| if (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}')) |
| { |
| internalFormat (s, (*i), (const char *) "expecting to see }", 18); |
| } |
| } |
| } |
| |
| |
| /* |
| doNumber - |
| */ |
| |
| static DynamicStrings_String doNumber (unsigned int bol, varargs_vararg sym, DynamicStrings_String o, bool *quotes) |
| { |
| unsigned int c; |
| |
| if ((DynamicStrings_Length (o)) > 0) |
| { |
| return o; |
| } |
| else |
| { |
| (*quotes) = false; |
| varargs_next (sym, bol); |
| varargs_arg (sym, (unsigned char *) &c, (sizeof (c)-1)); |
| return DynamicStrings_ConCat (o, StringConvert_ctos (c, 0, ' ')); |
| } |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| doCount - |
| */ |
| |
| static DynamicStrings_String doCount (unsigned int bol, varargs_vararg sym, DynamicStrings_String o, bool *quotes) |
| { |
| unsigned int c; |
| |
| if ((DynamicStrings_Length (o)) > 0) |
| { |
| return o; |
| } |
| else |
| { |
| (*quotes) = false; |
| varargs_next (sym, bol); |
| varargs_arg (sym, (unsigned char *) &c, (sizeof (c)-1)); |
| o = DynamicStrings_ConCat (o, StringConvert_ctos (c, 0, ' ')); |
| if (((c % 100) >= 11) && ((c % 100) <= 13)) |
| { |
| o = DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "th", 2))); |
| } |
| |
| else { |
| switch (c % 10) |
| { |
| case 1: |
| o = DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "st", 2))); |
| break; |
| |
| case 2: |
| o = DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "nd", 2))); |
| break; |
| |
| case 3: |
| o = DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "rd", 2))); |
| break; |
| |
| |
| default: |
| o = DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "th", 2))); |
| break; |
| } |
| } |
| return o; |
| } |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| doCount - |
| */ |
| |
| static DynamicStrings_String doAscii (unsigned int bol, varargs_vararg sym, DynamicStrings_String o) |
| { |
| decl_node n; |
| |
| varargs_next (sym, bol); |
| varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1)); |
| if (((DynamicStrings_Length (o)) > 0) || (decl_isTemporary (n))) |
| { |
| return o; |
| } |
| else |
| { |
| return DynamicStrings_ConCat (o, DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n)))); |
| } |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| doCount - |
| */ |
| |
| static DynamicStrings_String doName (unsigned int bol, varargs_vararg sym, DynamicStrings_String o, bool *quotes) |
| { |
| decl_node n; |
| |
| varargs_next (sym, bol); |
| varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1)); |
| if (((DynamicStrings_Length (o)) > 0) || (decl_isTemporary (n))) |
| { |
| return o; |
| } |
| else |
| { |
| if (decl_isZtype (n)) |
| { |
| (*quotes) = false; |
| return DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "the ZType", 9))); |
| } |
| else if (decl_isRtype (n)) |
| { |
| /* avoid dangling else. */ |
| (*quotes) = false; |
| return DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "the RType", 9))); |
| } |
| else if ((decl_getSymName (n)) != nameKey_NulName) |
| { |
| /* avoid dangling else. */ |
| return DynamicStrings_ConCat (o, DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n)))); |
| } |
| else |
| { |
| /* avoid dangling else. */ |
| return o; |
| } |
| } |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| doCount - |
| */ |
| |
| static DynamicStrings_String doQualified (unsigned int bol, varargs_vararg sym, DynamicStrings_String o) |
| { |
| decl_node s; |
| decl_node n; |
| varargs_vararg mod; |
| |
| varargs_next (sym, bol); |
| varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1)); |
| if (((DynamicStrings_Length (o)) > 0) || (decl_isTemporary (n))) |
| { |
| return o; |
| } |
| else |
| { |
| s = decl_getScope (n); |
| mod = varargs_start1 ((const unsigned char *) &s, (sizeof (s)-1)); |
| if ((decl_isDef (s)) && (decl_isExported (n))) |
| { |
| o = x (o, doAscii (0, mod, o)); |
| o = x (o, DynamicStrings_ConCatChar (o, '.')); |
| o = x (o, DynamicStrings_ConCat (o, DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n))))); |
| } |
| else |
| { |
| o = x (o, doAscii (bol, sym, o)); |
| } |
| varargs_end (&mod); |
| return o; |
| } |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| doType - returns a string containing the type name of |
| sym. It will skip pseudonym types. It also |
| returns the type symbol found. |
| */ |
| |
| static DynamicStrings_String doType (unsigned int bol, varargs_vararg *sym, DynamicStrings_String o) |
| { |
| decl_node n; |
| |
| varargs_next ((*sym), bol); |
| varargs_arg ((*sym), (unsigned char *) &n, (sizeof (n)-1)); |
| if (((DynamicStrings_Length (o)) > 0) || ((decl_getType (n)) == NULL)) |
| { |
| return o; |
| } |
| else |
| { |
| n = decl_skipType (decl_getType (n)); |
| varargs_next ((*sym), bol); |
| varargs_replace ((*sym), (unsigned char *) &n, (sizeof (n)-1)); |
| return x (o, doAscii (bol, (*sym), o)); |
| } |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| doSkipType - will skip all pseudonym types. It also |
| returns the type symbol found and name. |
| */ |
| |
| static DynamicStrings_String doSkipType (unsigned int bol, varargs_vararg *sym, DynamicStrings_String o) |
| { |
| decl_node n; |
| |
| varargs_next ((*sym), bol); |
| varargs_arg ((*sym), (unsigned char *) &n, (sizeof (n)-1)); |
| if ((DynamicStrings_Length (o)) > 0) |
| { |
| return o; |
| } |
| else |
| { |
| n = decl_skipType (decl_getType (n)); |
| varargs_next ((*sym), bol); |
| varargs_replace ((*sym), (unsigned char *) &n, (sizeof (n)-1)); |
| if ((decl_getSymName (n)) == nameKey_NulName) |
| { |
| return o; |
| } |
| else |
| { |
| return x (o, doAscii (bol, (*sym), o)); |
| } |
| } |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| doSkipType - will skip all pseudonym types. It also |
| returns the type symbol found and name. |
| */ |
| |
| static DynamicStrings_String doKey (unsigned int bol, varargs_vararg sym, DynamicStrings_String o) |
| { |
| nameKey_Name n; |
| |
| if ((DynamicStrings_Length (o)) > 0) |
| { |
| return o; |
| } |
| else |
| { |
| varargs_next (sym, bol); |
| varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1)); |
| return DynamicStrings_ConCat (o, DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (n))); |
| } |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| doError - creates and returns an error note. |
| */ |
| |
| static mcError_error doError (mcError_error e, mcMetaError_errorType t, unsigned int tok) |
| { |
| switch (t) |
| { |
| case mcMetaError_chained: |
| if (e == NULL) |
| { |
| mcError_internalError ((const char *) "should not be chaining an error onto an empty error note", 56, (const char *) "../../gcc/m2/mc/mcMetaError.mod", 31, 355); |
| } |
| else |
| { |
| e = mcError_chainError (tok, e); |
| } |
| break; |
| |
| case mcMetaError_newerror: |
| if (e == NULL) |
| { |
| e = mcError_newError (tok); |
| } |
| break; |
| |
| case mcMetaError_newwarning: |
| if (e == NULL) |
| { |
| e = mcError_newWarning (tok); |
| } |
| break; |
| |
| |
| default: |
| mcError_internalError ((const char *) "unexpected enumeration value", 28, (const char *) "../../gcc/m2/mc/mcMetaError.mod", 31, 369); |
| break; |
| } |
| return e; |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| doDeclaredDef - creates an error note where sym[bol] was declared. |
| */ |
| |
| static mcError_error doDeclaredDef (mcError_error e, mcMetaError_errorType t, unsigned int bol, varargs_vararg sym) |
| { |
| decl_node n; |
| |
| if (bol <= (varargs_nargs (sym))) |
| { |
| varargs_next (sym, bol); |
| varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1)); |
| e = doError (e, t, decl_getDeclaredDef (n)); |
| } |
| return e; |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| doDeclaredMod - creates an error note where sym[bol] was declared. |
| */ |
| |
| static mcError_error doDeclaredMod (mcError_error e, mcMetaError_errorType t, unsigned int bol, varargs_vararg sym) |
| { |
| decl_node n; |
| |
| if (bol <= (varargs_nargs (sym))) |
| { |
| varargs_next (sym, bol); |
| varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1)); |
| e = doError (e, t, decl_getDeclaredMod (n)); |
| } |
| return e; |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| doUsed - creates an error note where sym[bol] was first used. |
| */ |
| |
| static mcError_error doUsed (mcError_error e, mcMetaError_errorType t, unsigned int bol, varargs_vararg sym) |
| { |
| decl_node n; |
| |
| if (bol <= (varargs_nargs (sym))) |
| { |
| varargs_next (sym, bol); |
| varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1)); |
| e = doError (e, t, decl_getFirstUsed (n)); |
| } |
| return e; |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| ConCatWord - joins sentances, a, b, together. |
| */ |
| |
| static DynamicStrings_String ConCatWord (DynamicStrings_String a, DynamicStrings_String b) |
| { |
| if (((DynamicStrings_Length (a)) == 1) && ((DynamicStrings_char (a, 0)) == 'a')) |
| { |
| a = x (a, DynamicStrings_ConCatChar (a, 'n')); |
| } |
| else if ((((DynamicStrings_Length (a)) > 1) && ((DynamicStrings_char (a, -1)) == 'a')) && (isWhite (DynamicStrings_char (a, -2)))) |
| { |
| /* avoid dangling else. */ |
| a = x (a, DynamicStrings_ConCatChar (a, 'n')); |
| } |
| if (((DynamicStrings_Length (a)) > 0) && (! (isWhite (DynamicStrings_char (a, -1))))) |
| { |
| a = x (a, DynamicStrings_ConCatChar (a, ' ')); |
| } |
| return x (a, DynamicStrings_ConCat (a, b)); |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| symDesc - |
| */ |
| |
| static DynamicStrings_String symDesc (decl_node n, DynamicStrings_String o) |
| { |
| if (decl_isLiteral (n)) |
| { |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "literal", 7))); |
| } |
| else if (decl_isConstSet (n)) |
| { |
| /* avoid dangling else. */ |
| /* |
| ELSIF IsConstructor(n) |
| THEN |
| RETURN( ConCatWord (o, Mark (InitString ('constructor'))) ) |
| */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "constant set", 12))); |
| } |
| else if (decl_isConst (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "constant", 8))); |
| } |
| else if (decl_isArray (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "array", 5))); |
| } |
| else if (decl_isVar (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "variable", 8))); |
| } |
| else if (decl_isEnumeration (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "enumeration type", 16))); |
| } |
| else if (decl_isEnumerationField (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "enumeration field", 17))); |
| } |
| else if (decl_isUnbounded (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "unbounded parameter", 19))); |
| } |
| else if (decl_isProcType (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "procedure type", 14))); |
| } |
| else if (decl_isProcedure (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "procedure", 9))); |
| } |
| else if (decl_isPointer (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "pointer", 7))); |
| } |
| else if (decl_isParameter (n)) |
| { |
| /* avoid dangling else. */ |
| if (decl_isVarParam (n)) |
| { |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "var parameter", 13))); |
| } |
| else |
| { |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "parameter", 9))); |
| } |
| } |
| else if (decl_isType (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "type", 4))); |
| } |
| else if (decl_isRecord (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "record", 6))); |
| } |
| else if (decl_isRecordField (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "record field", 12))); |
| } |
| else if (decl_isVarient (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "varient record", 14))); |
| } |
| else if (decl_isModule (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "module", 6))); |
| } |
| else if (decl_isDef (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "definition module", 17))); |
| } |
| else if (decl_isImp (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "implementation module", 21))); |
| } |
| else if (decl_isSet (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "set", 3))); |
| } |
| else if (decl_isSubrange (n)) |
| { |
| /* avoid dangling else. */ |
| return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "subrange", 8))); |
| } |
| else |
| { |
| /* avoid dangling else. */ |
| return o; |
| } |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| doDesc - |
| */ |
| |
| static DynamicStrings_String doDesc (unsigned int bol, varargs_vararg sym, DynamicStrings_String o, bool *quotes) |
| { |
| decl_node n; |
| |
| if ((DynamicStrings_Length (o)) == 0) |
| { |
| varargs_next (sym, bol); |
| varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1)); |
| o = symDesc (n, o); |
| if ((DynamicStrings_Length (o)) > 0) |
| { |
| (*quotes) = false; |
| } |
| } |
| return o; |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| addQuoted - if, o, is not empty then add it to, r. |
| */ |
| |
| static DynamicStrings_String addQuoted (DynamicStrings_String r, DynamicStrings_String o, bool quotes) |
| { |
| if ((DynamicStrings_Length (o)) > 0) |
| { |
| if (! (isWhite (DynamicStrings_char (r, -1)))) |
| { |
| r = x (r, DynamicStrings_ConCatChar (r, ' ')); |
| } |
| if (quotes) |
| { |
| r = x (r, DynamicStrings_ConCatChar (r, '\'')); |
| } |
| r = x (r, DynamicStrings_ConCat (r, o)); |
| if (quotes) |
| { |
| r = x (r, DynamicStrings_ConCatChar (r, '\'')); |
| } |
| } |
| return r; |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| op := {'a'|'q'|'t'|'d'|'k'|'n'|'s'|'D'|'I'|'U'|'E'|'W'} then =: |
| */ |
| |
| static void op (mcError_error *e, mcMetaError_errorType *t, DynamicStrings_String *r, DynamicStrings_String s, varargs_vararg sym, int *i, int l, unsigned int bol, bool positive) |
| { |
| DynamicStrings_String o; |
| varargs_vararg c; |
| bool quotes; |
| |
| c = varargs_copy (sym); |
| o = DynamicStrings_InitString ((const char *) "", 0); |
| quotes = true; |
| while (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}')) |
| { |
| switch (DynamicStrings_char (s, (*i))) |
| { |
| case 'a': |
| o = x (o, doName (bol, sym, o, "es)); |
| break; |
| |
| case 'q': |
| o = x (o, doQualified (bol, sym, o)); |
| break; |
| |
| case 't': |
| o = x (o, doType (bol, &sym, o)); |
| break; |
| |
| case 'd': |
| o = x (o, doDesc (bol, sym, o, "es)); |
| break; |
| |
| case 'n': |
| o = x (o, doNumber (bol, sym, o, "es)); |
| break; |
| |
| case 'N': |
| o = x (o, doCount (bol, sym, o, "es)); |
| break; |
| |
| case 's': |
| o = x (o, doSkipType (bol, &sym, o)); |
| break; |
| |
| case 'k': |
| o = x (o, doKey (bol, sym, o)); |
| break; |
| |
| case 'D': |
| (*e) = doDeclaredDef ((*e), (*t), bol, sym); |
| break; |
| |
| case 'M': |
| (*e) = doDeclaredMod ((*e), (*t), bol, sym); |
| break; |
| |
| case 'U': |
| (*e) = doUsed ((*e), (*t), bol, sym); |
| break; |
| |
| case 'E': |
| (*t) = mcMetaError_newerror; |
| break; |
| |
| case 'W': |
| (*t) = mcMetaError_newwarning; |
| break; |
| |
| case ':': |
| varargs_end (&sym); |
| sym = varargs_copy (c); |
| then (e, t, r, s, sym, i, l, o, positive); |
| o = DynamicStrings_KillString (o); |
| o = DynamicStrings_InitString ((const char *) "", 0); |
| if (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}')) |
| { |
| internalFormat (s, (*i), (const char *) "expecting to see }", 18); |
| } |
| (*i) -= 1; |
| break; |
| |
| |
| default: |
| internalFormat (s, (*i), (const char *) "expecting one of [aqtdnNsDUEW:]", 31); |
| break; |
| } |
| (*i) += 1; |
| } |
| (*r) = x ((*r), addQuoted ((*r), o, quotes)); |
| o = DynamicStrings_KillString (o); |
| } |
| |
| |
| /* |
| percenttoken := '%' ( |
| '1' % doOperand(1) % |
| op |
| | '2' % doOperand(2) % |
| op |
| | '3' % doOperand(3) % |
| op |
| | '4' % doOperand(4) % |
| op |
| ) |
| } =: |
| */ |
| |
| static void percenttoken (mcError_error *e, mcMetaError_errorType t, DynamicStrings_String *r, DynamicStrings_String s, varargs_vararg sym, int *i, int l, bool positive) |
| { |
| if ((DynamicStrings_char (s, (*i))) == '%') |
| { |
| (*i) += 1; |
| switch (DynamicStrings_char (s, (*i))) |
| { |
| case '1': |
| (*i) += 1; |
| op (e, &t, r, s, sym, i, l, 0, positive); |
| break; |
| |
| case '2': |
| (*i) += 1; |
| op (e, &t, r, s, sym, i, l, 1, positive); |
| break; |
| |
| case '3': |
| (*i) += 1; |
| op (e, &t, r, s, sym, i, l, 2, positive); |
| break; |
| |
| case '4': |
| (*i) += 1; |
| op (e, &t, r, s, sym, i, l, 3, positive); |
| break; |
| |
| |
| default: |
| internalFormat (s, (*i), (const char *) "expecting one of [123]", 22); |
| break; |
| } |
| if (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}')) |
| { |
| internalFormat (s, (*i), (const char *) "expecting to see }", 18); |
| } |
| } |
| } |
| |
| |
| /* |
| percent := '%' anych % copy anych % |
| =: |
| */ |
| |
| static void percent (DynamicStrings_String *r, DynamicStrings_String s, varargs_vararg sym, int *i, int l) |
| { |
| if ((DynamicStrings_char (s, (*i))) == '%') |
| { |
| (*i) += 1; |
| if ((*i) < l) |
| { |
| (*r) = x ((*r), DynamicStrings_ConCatChar ((*r), DynamicStrings_char (s, (*i)))); |
| (*i) += 1; |
| } |
| } |
| } |
| |
| |
| /* |
| lbra := '{' [ '!' ] percenttoken '}' =: |
| */ |
| |
| static void lbra (mcError_error *e, mcMetaError_errorType *t, DynamicStrings_String *r, DynamicStrings_String s, varargs_vararg sym, int *i, int l) |
| { |
| bool positive; |
| |
| if ((DynamicStrings_char (s, (*i))) == '{') |
| { |
| positive = true; |
| (*i) += 1; |
| if ((DynamicStrings_char (s, (*i))) == '!') |
| { |
| positive = false; |
| (*i) += 1; |
| } |
| if ((DynamicStrings_char (s, (*i))) != '%') |
| { |
| internalFormat (s, (*i), (const char *) "expecting to see %", 18); |
| } |
| percenttoken (e, (*t), r, s, sym, i, l, positive); |
| if (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}')) |
| { |
| internalFormat (s, (*i), (const char *) "expecting to see }", 18); |
| } |
| } |
| } |
| |
| |
| /* |
| lbra := '{' [ '!' ] percenttoken '}' =: |
| */ |
| |
| static void stop (void) |
| { |
| } |
| |
| |
| /* |
| ebnf := { percent |
| | lbra |
| | any % copy ch % |
| } |
| =: |
| */ |
| |
| static void ebnf (mcError_error *e, mcMetaError_errorType *t, DynamicStrings_String *r, DynamicStrings_String s, varargs_vararg sym, int *i, int l) |
| { |
| while ((*i) < l) |
| { |
| switch (DynamicStrings_char (s, (*i))) |
| { |
| case '%': |
| percent (r, s, sym, i, l); |
| break; |
| |
| case '{': |
| lbra (e, t, r, s, sym, i, l); |
| if (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}')) |
| { |
| internalFormat (s, (*i), (const char *) "expecting to see }", 18); |
| } |
| break; |
| |
| case '}': |
| return; |
| break; |
| |
| |
| default: |
| if ((((isWhite (DynamicStrings_char (s, (*i)))) && ((DynamicStrings_Length ((*r))) > 0)) && (! (isWhite (DynamicStrings_char ((*r), -1))))) || (! (isWhite (DynamicStrings_char (s, (*i)))))) |
| { |
| (*r) = x ((*r), DynamicStrings_ConCatChar ((*r), DynamicStrings_char (s, (*i)))); |
| } |
| break; |
| } |
| (*i) += 1; |
| } |
| } |
| |
| |
| /* |
| doFormat - |
| */ |
| |
| static DynamicStrings_String doFormat (mcError_error *e, mcMetaError_errorType *t, DynamicStrings_String s, varargs_vararg sym) |
| { |
| DynamicStrings_String r; |
| int i; |
| int l; |
| |
| r = DynamicStrings_InitString ((const char *) "", 0); |
| i = 0; |
| l = DynamicStrings_Length (s); |
| ebnf (e, t, &r, s, sym, &i, l); |
| s = DynamicStrings_KillString (s); |
| return r; |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| wrapErrors - |
| */ |
| |
| static void wrapErrors (unsigned int tok, const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, varargs_vararg sym) |
| { |
| mcError_error e; |
| mcError_error f; |
| DynamicStrings_String str; |
| mcMetaError_errorType t; |
| char m1[_m1_high+1]; |
| char m2[_m2_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m1, m1_, _m1_high+1); |
| memcpy (m2, m2_, _m2_high+1); |
| |
| e = static_cast<mcError_error> (NULL); |
| t = mcMetaError_newerror; |
| str = doFormat (&e, &t, DynamicStrings_InitString ((const char *) m1, _m1_high), sym); |
| e = doError (e, t, tok); |
| mcError_errorString (e, str); |
| f = e; |
| t = mcMetaError_chained; |
| str = doFormat (&f, &t, DynamicStrings_InitString ((const char *) m2, _m2_high), sym); |
| if (e == f) |
| { |
| t = mcMetaError_chained; |
| f = doError (e, t, tok); |
| } |
| mcError_errorString (f, str); |
| } |
| |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaError1 (const char *m_, unsigned int _m_high, const unsigned char *s_, unsigned int _s_high) |
| { |
| char m[_m_high+1]; |
| unsigned char s[_s_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m, m_, _m_high+1); |
| memcpy (s, s_, _s_high+1); |
| |
| mcMetaError_metaErrorT1 (mcLexBuf_getTokenNo (), (const char *) m, _m_high, (const unsigned char *) s, _s_high); |
| } |
| |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaError2 (const char *m_, unsigned int _m_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high) |
| { |
| char m[_m_high+1]; |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m, m_, _m_high+1); |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| |
| mcMetaError_metaErrorT2 (mcLexBuf_getTokenNo (), (const char *) m, _m_high, (const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high); |
| } |
| |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaError3 (const char *m_, unsigned int _m_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high) |
| { |
| char m[_m_high+1]; |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| unsigned char s3[_s3_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m, m_, _m_high+1); |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| memcpy (s3, s3_, _s3_high+1); |
| |
| mcMetaError_metaErrorT3 (mcLexBuf_getTokenNo (), (const char *) m, _m_high, (const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high, (const unsigned char *) s3, _s3_high); |
| } |
| |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaError4 (const char *m_, unsigned int _m_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high, const unsigned char *s4_, unsigned int _s4_high) |
| { |
| char m[_m_high+1]; |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| unsigned char s3[_s3_high+1]; |
| unsigned char s4[_s4_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m, m_, _m_high+1); |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| memcpy (s3, s3_, _s3_high+1); |
| memcpy (s4, s4_, _s4_high+1); |
| |
| mcMetaError_metaErrorT4 (mcLexBuf_getTokenNo (), (const char *) m, _m_high, (const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high, (const unsigned char *) s3, _s3_high, (const unsigned char *) s4, _s4_high); |
| } |
| |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrors1 (const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s_, unsigned int _s_high) |
| { |
| char m1[_m1_high+1]; |
| char m2[_m2_high+1]; |
| unsigned char s[_s_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m1, m1_, _m1_high+1); |
| memcpy (m2, m2_, _m2_high+1); |
| memcpy (s, s_, _s_high+1); |
| |
| mcMetaError_metaErrorsT1 (mcLexBuf_getTokenNo (), (const char *) m1, _m1_high, (const char *) m2, _m2_high, (const unsigned char *) s, _s_high); |
| } |
| |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrors2 (const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high) |
| { |
| char m1[_m1_high+1]; |
| char m2[_m2_high+1]; |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m1, m1_, _m1_high+1); |
| memcpy (m2, m2_, _m2_high+1); |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| |
| mcMetaError_metaErrorsT2 (mcLexBuf_getTokenNo (), (const char *) m1, _m1_high, (const char *) m2, _m2_high, (const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high); |
| } |
| |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrors3 (const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high) |
| { |
| char m1[_m1_high+1]; |
| char m2[_m2_high+1]; |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| unsigned char s3[_s3_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m1, m1_, _m1_high+1); |
| memcpy (m2, m2_, _m2_high+1); |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| memcpy (s3, s3_, _s3_high+1); |
| |
| mcMetaError_metaErrorsT3 (mcLexBuf_getTokenNo (), (const char *) m1, _m1_high, (const char *) m2, _m2_high, (const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high, (const unsigned char *) s3, _s3_high); |
| } |
| |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrors4 (const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high, const unsigned char *s4_, unsigned int _s4_high) |
| { |
| char m1[_m1_high+1]; |
| char m2[_m2_high+1]; |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| unsigned char s3[_s3_high+1]; |
| unsigned char s4[_s4_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m1, m1_, _m1_high+1); |
| memcpy (m2, m2_, _m2_high+1); |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| memcpy (s3, s3_, _s3_high+1); |
| memcpy (s4, s4_, _s4_high+1); |
| |
| mcMetaError_metaErrorsT4 (mcLexBuf_getTokenNo (), (const char *) m1, _m1_high, (const char *) m2, _m2_high, (const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high, (const unsigned char *) s3, _s3_high, (const unsigned char *) s4, _s4_high); |
| } |
| |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorT1 (unsigned int tok, const char *m_, unsigned int _m_high, const unsigned char *s_, unsigned int _s_high) |
| { |
| char m[_m_high+1]; |
| unsigned char s[_s_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m, m_, _m_high+1); |
| memcpy (s, s_, _s_high+1); |
| |
| mcMetaError_metaErrorStringT1 (tok, DynamicStrings_InitString ((const char *) m, _m_high), (const unsigned char *) s, _s_high); |
| } |
| |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorT2 (unsigned int tok, const char *m_, unsigned int _m_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high) |
| { |
| char m[_m_high+1]; |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m, m_, _m_high+1); |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| |
| mcMetaError_metaErrorStringT2 (tok, DynamicStrings_InitString ((const char *) m, _m_high), (const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high); |
| } |
| |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorT3 (unsigned int tok, const char *m_, unsigned int _m_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high) |
| { |
| char m[_m_high+1]; |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| unsigned char s3[_s3_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m, m_, _m_high+1); |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| memcpy (s3, s3_, _s3_high+1); |
| |
| mcMetaError_metaErrorStringT3 (tok, DynamicStrings_InitString ((const char *) m, _m_high), (const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high, (const unsigned char *) s3, _s3_high); |
| } |
| |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorT4 (unsigned int tok, const char *m_, unsigned int _m_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high, const unsigned char *s4_, unsigned int _s4_high) |
| { |
| char m[_m_high+1]; |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| unsigned char s3[_s3_high+1]; |
| unsigned char s4[_s4_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m, m_, _m_high+1); |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| memcpy (s3, s3_, _s3_high+1); |
| memcpy (s4, s4_, _s4_high+1); |
| |
| mcMetaError_metaErrorStringT4 (tok, DynamicStrings_InitString ((const char *) m, _m_high), (const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high, (const unsigned char *) s3, _s3_high, (const unsigned char *) s4, _s4_high); |
| } |
| |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorsT1 (unsigned int tok, const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s_, unsigned int _s_high) |
| { |
| varargs_vararg sym; |
| char m1[_m1_high+1]; |
| char m2[_m2_high+1]; |
| unsigned char s[_s_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m1, m1_, _m1_high+1); |
| memcpy (m2, m2_, _m2_high+1); |
| memcpy (s, s_, _s_high+1); |
| |
| sym = varargs_start1 ((const unsigned char *) s, _s_high); |
| wrapErrors (tok, (const char *) m1, _m1_high, (const char *) m2, _m2_high, sym); |
| varargs_end (&sym); |
| } |
| |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorsT2 (unsigned int tok, const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high) |
| { |
| varargs_vararg sym; |
| char m1[_m1_high+1]; |
| char m2[_m2_high+1]; |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m1, m1_, _m1_high+1); |
| memcpy (m2, m2_, _m2_high+1); |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| |
| sym = varargs_start2 ((const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high); |
| wrapErrors (tok, (const char *) m1, _m1_high, (const char *) m2, _m2_high, sym); |
| varargs_end (&sym); |
| } |
| |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorsT3 (unsigned int tok, const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high) |
| { |
| varargs_vararg sym; |
| char m1[_m1_high+1]; |
| char m2[_m2_high+1]; |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| unsigned char s3[_s3_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m1, m1_, _m1_high+1); |
| memcpy (m2, m2_, _m2_high+1); |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| memcpy (s3, s3_, _s3_high+1); |
| |
| sym = varargs_start3 ((const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high, (const unsigned char *) s3, _s3_high); |
| wrapErrors (tok, (const char *) m1, _m1_high, (const char *) m2, _m2_high, sym); |
| varargs_end (&sym); |
| } |
| |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorsT4 (unsigned int tok, const char *m1_, unsigned int _m1_high, const char *m2_, unsigned int _m2_high, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high, const unsigned char *s4_, unsigned int _s4_high) |
| { |
| varargs_vararg sym; |
| char m1[_m1_high+1]; |
| char m2[_m2_high+1]; |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| unsigned char s3[_s3_high+1]; |
| unsigned char s4[_s4_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (m1, m1_, _m1_high+1); |
| memcpy (m2, m2_, _m2_high+1); |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| memcpy (s3, s3_, _s3_high+1); |
| memcpy (s4, s4_, _s4_high+1); |
| |
| sym = varargs_start4 ((const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high, (const unsigned char *) s3, _s3_high, (const unsigned char *) s4, _s4_high); |
| wrapErrors (tok, (const char *) m1, _m1_high, (const char *) m2, _m2_high, sym); |
| varargs_end (&sym); |
| } |
| |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorString1 (DynamicStrings_String m, const unsigned char *s_, unsigned int _s_high) |
| { |
| unsigned char s[_s_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (s, s_, _s_high+1); |
| |
| mcMetaError_metaErrorStringT1 (mcLexBuf_getTokenNo (), m, (const unsigned char *) s, _s_high); |
| } |
| |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorString2 (DynamicStrings_String m, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high) |
| { |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| |
| mcMetaError_metaErrorStringT2 (mcLexBuf_getTokenNo (), m, (const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high); |
| } |
| |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorString3 (DynamicStrings_String m, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high) |
| { |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| unsigned char s3[_s3_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| memcpy (s3, s3_, _s3_high+1); |
| |
| mcMetaError_metaErrorStringT3 (mcLexBuf_getTokenNo (), m, (const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high, (const unsigned char *) s3, _s3_high); |
| } |
| |
| |
| /* |
| wrapErrors - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorString4 (DynamicStrings_String m, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high, const unsigned char *s4_, unsigned int _s4_high) |
| { |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| unsigned char s3[_s3_high+1]; |
| unsigned char s4[_s4_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| memcpy (s3, s3_, _s3_high+1); |
| memcpy (s4, s4_, _s4_high+1); |
| |
| mcMetaError_metaErrorStringT4 (mcLexBuf_getTokenNo (), m, (const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high, (const unsigned char *) s3, _s3_high, (const unsigned char *) s4, _s4_high); |
| } |
| |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorStringT1 (unsigned int tok, DynamicStrings_String m, const unsigned char *s_, unsigned int _s_high) |
| { |
| DynamicStrings_String str; |
| mcError_error e; |
| varargs_vararg sym; |
| mcMetaError_errorType t; |
| unsigned char s[_s_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (s, s_, _s_high+1); |
| |
| e = static_cast<mcError_error> (NULL); |
| sym = varargs_start1 ((const unsigned char *) s, _s_high); |
| t = mcMetaError_newerror; |
| str = doFormat (&e, &t, m, sym); |
| e = doError (e, t, tok); |
| mcError_errorString (e, str); |
| varargs_end (&sym); |
| } |
| |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorStringT2 (unsigned int tok, DynamicStrings_String m, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high) |
| { |
| DynamicStrings_String str; |
| mcError_error e; |
| varargs_vararg sym; |
| mcMetaError_errorType t; |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| |
| e = static_cast<mcError_error> (NULL); |
| sym = varargs_start2 ((const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high); |
| t = mcMetaError_newerror; |
| str = doFormat (&e, &t, m, sym); |
| e = doError (e, t, tok); |
| mcError_errorString (e, str); |
| varargs_end (&sym); |
| } |
| |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorStringT3 (unsigned int tok, DynamicStrings_String m, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high) |
| { |
| DynamicStrings_String str; |
| mcError_error e; |
| varargs_vararg sym; |
| mcMetaError_errorType t; |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| unsigned char s3[_s3_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| memcpy (s3, s3_, _s3_high+1); |
| |
| e = static_cast<mcError_error> (NULL); |
| sym = varargs_start3 ((const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high, (const unsigned char *) s3, _s3_high); |
| t = mcMetaError_newerror; |
| str = doFormat (&e, &t, m, sym); |
| e = doError (e, t, tok); |
| mcError_errorString (e, str); |
| varargs_end (&sym); |
| } |
| |
| |
| /* |
| doFormat - |
| */ |
| |
| extern "C" void mcMetaError_metaErrorStringT4 (unsigned int tok, DynamicStrings_String m, const unsigned char *s1_, unsigned int _s1_high, const unsigned char *s2_, unsigned int _s2_high, const unsigned char *s3_, unsigned int _s3_high, const unsigned char *s4_, unsigned int _s4_high) |
| { |
| DynamicStrings_String str; |
| mcError_error e; |
| varargs_vararg sym; |
| mcMetaError_errorType t; |
| unsigned char s1[_s1_high+1]; |
| unsigned char s2[_s2_high+1]; |
| unsigned char s3[_s3_high+1]; |
| unsigned char s4[_s4_high+1]; |
| |
| /* make a local copy of each unbounded array. */ |
| memcpy (s1, s1_, _s1_high+1); |
| memcpy (s2, s2_, _s2_high+1); |
| memcpy (s3, s3_, _s3_high+1); |
| memcpy (s4, s4_, _s4_high+1); |
| |
| e = static_cast<mcError_error> (NULL); |
| sym = varargs_start4 ((const unsigned char *) s1, _s1_high, (const unsigned char *) s2, _s2_high, (const unsigned char *) s3, _s3_high, (const unsigned char *) s4, _s4_high); |
| t = mcMetaError_newerror; |
| str = doFormat (&e, &t, m, sym); |
| e = doError (e, t, tok); |
| mcError_errorString (e, str); |
| varargs_end (&sym); |
| } |
| |
| extern "C" void _M2_mcMetaError_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[]) |
| { |
| } |
| |
| extern "C" void _M2_mcMetaError_fini (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[]) |
| { |
| } |