Port sc3 to C++.
This commit is contained in:
		
							parent
							
								
									234b4907ed
								
							
						
					
					
						commit
						4608050bd2
					
				| @ -84,7 +84,7 @@ binary.sources += [ | ||||
|   'pawncc.cpp', | ||||
|   'sc1.c', | ||||
|   'sc2.c', | ||||
|   'sc3.c', | ||||
|   'sc3.cpp', | ||||
|   'sc4.cpp', | ||||
|   'sc5.cpp', | ||||
|   'sc6.cpp', | ||||
|  | ||||
| @ -547,8 +547,8 @@ typedef enum s_optmark { | ||||
|  */ | ||||
| int pc_compile(int argc, char **argv); | ||||
| int pc_addconstant(char *name,cell value,int tag); | ||||
| int pc_addtag(char *name); | ||||
| int pc_addtag_flags(char *name, int flags); | ||||
| int pc_addtag(const char *name); | ||||
| int pc_addtag_flags(const char *name, int flags); | ||||
| int pc_findtag(const char *name); | ||||
| constvalue *pc_tagptr(const char *name); | ||||
| int pc_enablewarning(int number,int enable); | ||||
|  | ||||
| @ -681,17 +681,19 @@ int pc_findtag(const char *name) | ||||
| #if defined __cplusplus | ||||
|   extern "C" | ||||
| #endif | ||||
| int pc_addtag(char *name) | ||||
| int pc_addtag(const char *name) | ||||
| { | ||||
|   int val; | ||||
|   int flags = 0; | ||||
| 
 | ||||
|   if (name==NULL) { | ||||
|     /* no tagname was given, check for one */ | ||||
|     if (lex(&val,&name)!=tLABEL) { | ||||
|     char *nameptr; | ||||
|     if (lex(&val,&nameptr)!=tLABEL) { | ||||
|       lexpush(); | ||||
|       return 0;         /* untagged */ | ||||
|     } /* if */ | ||||
|     name = nameptr; | ||||
|   } /* if */ | ||||
| 
 | ||||
|   if (isupper(*name)) | ||||
| @ -700,7 +702,7 @@ int pc_addtag(char *name) | ||||
|   return pc_addtag_flags(name, flags); | ||||
| } | ||||
| 
 | ||||
| int pc_addtag_flags(char *name, int flags) | ||||
| int pc_addtag_flags(const char *name, int flags) | ||||
| { | ||||
|   constvalue *ptr; | ||||
|   int last,tag; | ||||
|  | ||||
| @ -35,7 +35,7 @@ static int skim(int *opstr,void (*testfunc)(int),int dropval,int endval, | ||||
|                 int (*hier)(value*),value *lval); | ||||
| static void dropout(int lvalue,void (*testfunc)(int val),int exit1,value *lval); | ||||
| static int plnge(int *opstr,int opoff,int (*hier)(value *lval),value *lval, | ||||
|                  char *forcetag,int chkbitwise); | ||||
|                  const char *forcetag,int chkbitwise); | ||||
| static int plnge1(int (*hier)(value *lval),value *lval); | ||||
| static void plnge2(void (*oper)(void), | ||||
|                    int (*hier)(value *lval), | ||||
| @ -116,13 +116,17 @@ static int nextop(int *opidx,int *list) | ||||
| SC_FUNC int check_userop(void (*oper)(void),int tag1,int tag2,int numparam, | ||||
|                          value *lval,int *resulttag) | ||||
| { | ||||
| static char *binoperstr[] = { "*", "/", "%", "+", "-", "", "", "", | ||||
|                               "", "", "", "<=", ">=", "<", ">", "==", "!=" }; | ||||
| static int binoper_savepri[] = { FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, | ||||
|   static const char *binoperstr[] = { | ||||
|     "*", "/", "%", "+", "-", "", "", "", | ||||
|     "", "", "", "<=", ">=", "<", ">", "==", "!=" | ||||
|   }; | ||||
|   static int binoper_savepri[] = { FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, | ||||
|                                    FALSE, FALSE, FALSE, FALSE, FALSE, | ||||
|                                  TRUE, TRUE, TRUE, TRUE, FALSE, FALSE }; | ||||
| static char *unoperstr[] = { "!", "-", "++", "--" }; | ||||
| static void (*unopers[])(void) = { lneg, neg, user_inc, user_dec }; | ||||
|                                    TRUE, TRUE, TRUE, TRUE, FALSE, FALSE | ||||
|   }; | ||||
|   static const char *unoperstr[] = { "!", "-", "++", "--" }; | ||||
|   static void (*unopers[])(void) = { lneg, neg, user_inc, user_dec }; | ||||
| 
 | ||||
|   char opername[4] = "", symbolname[sNAMEMAX+1]; | ||||
|   int i,swapparams,savepri,savealt; | ||||
|   int paramspassed; | ||||
| @ -719,7 +723,7 @@ static void checkfunction(value *lval) | ||||
|  *  Plunge to a lower level | ||||
|  */ | ||||
| static int plnge(int *opstr,int opoff,int (*hier)(value *lval),value *lval, | ||||
|                  char *forcetag,int chkbitwise) | ||||
|                  const char *forcetag,int chkbitwise) | ||||
| { | ||||
|   int lvalue,opidx; | ||||
|   int count; | ||||
| @ -862,10 +866,10 @@ static void plnge2(void (*oper)(void), | ||||
|     checkfunction(lval1); | ||||
|     checkfunction(lval2); | ||||
|     if (lval1->ident==iARRAY || lval1->ident==iREFARRAY) { | ||||
|       char *ptr=(lval1->sym!=NULL) ? lval1->sym->name : "-unknown-"; | ||||
|       const char *ptr=(lval1->sym!=NULL) ? lval1->sym->name : "-unknown-"; | ||||
|       error(33,ptr);                    /* array must be indexed */ | ||||
|     } else if (lval2->ident==iARRAY || lval2->ident==iREFARRAY) { | ||||
|       char *ptr=(lval2->sym!=NULL) ? lval2->sym->name : "-unknown-"; | ||||
|       const char *ptr=(lval2->sym!=NULL) ? lval2->sym->name : "-unknown-"; | ||||
|       error(33,ptr);                    /* array must be indexed */ | ||||
|     } /* if */ | ||||
|     /* ??? ^^^ should do same kind of error checking with functions */ | ||||
| @ -1033,7 +1037,7 @@ SC_FUNC int sc_getstateid(constvalue **automaton,constvalue **state) | ||||
|   assert(*automaton!=NULL); | ||||
|   *state=state_find(name,fsa); | ||||
|   if (*state==NULL) { | ||||
|     char *fsaname=(*automaton)->name; | ||||
|     const char *fsaname=(*automaton)->name; | ||||
|     if (*fsaname=='\0') | ||||
|       fsaname="<main>"; | ||||
|     error(87,name,fsaname);   /* unknown state for automaton */ | ||||
| @ -2526,7 +2530,7 @@ static int nesting=0; | ||||
|   sc_allowproccall=FALSE;       /* parameters may not use procedure call syntax */ | ||||
| 
 | ||||
|   if ((sym->flags & flgDEPRECATED)!=0) { | ||||
|     char *ptr= (sym->documentation!=NULL) ? sym->documentation : ""; | ||||
|     const char *ptr= (sym->documentation!=NULL) ? sym->documentation : ""; | ||||
|     error(234,sym->name,ptr);   /* deprecated (probably a native function) */ | ||||
|   } /* if */ | ||||
| 
 | ||||
| @ -2557,10 +2561,9 @@ static int nesting=0; | ||||
|     do { | ||||
|       if (!pending_this && matchtoken('.')) { | ||||
|         namedparams=TRUE; | ||||
|         if (needtoken(tSYMBOL)) | ||||
|         if (!needtoken(tSYMBOL)) | ||||
|           break; | ||||
|         tokeninfo(&lexval,&lexstr); | ||||
|         else | ||||
|           lexstr=""; | ||||
|         argpos=findnamedarg(arg,lexstr); | ||||
|         if (argpos<0) { | ||||
|           error(17,lexstr);       /* undefined symbol */ | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user