FORM v5.0.1-33-gdf7fc94
Macros | Functions
pre.c File Reference
#include "form3.h"
#include "comtool.h"
#include "vector.h"
Include dependency graph for pre.c:

Go to the source code of this file.

Macros

#define STRINGIFY(x)   STRINGIFY__(x)
 
#define STRINGIFY__(x)   #x
 
#define SKIPBUFSIZE   20
 
#define KILL   "kill"
 
#define KILLALL   "killall"
 
#define DAEMON   "daemon"
 
#define SHELL   "shell"
 
#define STDERR   "stderr"
 
#define TRUE_EXPR   "true"
 
#define FALSE_EXPR   "false"
 
#define NOSHELL   "noshell"
 
#define TERMINAL   "terminal"
 

Functions

UBYTE GetInput (void)
 
void ClearPushback (void)
 
UBYTE GetChar (int level)
 
void CharOut (UBYTE c)
 
void UnsetAllowDelay (void)
 
UBYTE * GetPreVar (UBYTE *name, int flag)
 
int PutPreVar (UBYTE *name, UBYTE *value, UBYTE *args, int mode)
 
void PopPreVars (int tonumber)
 
void IniModule (int type)
 
void IniSpecialModule (int type)
 
void PreProcessor (void)
 
int PreProInstruction (void)
 
int LoadInstruction (int mode)
 
int LoadStatement (int type)
 
int ExpandTripleDots (int par)
 
KEYWORDFindKeyWord (UBYTE *theword, KEYWORD *table, int size)
 
KEYWORDFindInKeyWord (UBYTE *theword, KEYWORD *table, int size)
 
int TheDefine (UBYTE *s, int mode)
 
int DoCommentChar (UBYTE *s)
 
int DoPreAssign (UBYTE *s)
 
int DoDefine (UBYTE *s)
 
int DoRedefine (UBYTE *s)
 
int ClearMacro (UBYTE *name)
 
int TheUndefine (UBYTE *name)
 
int DoUndefine (UBYTE *s)
 
int DoInclude (UBYTE *s)
 
int DoReverseInclude (UBYTE *s)
 
int Include (UBYTE *s, int type)
 
int DoPreExchange (UBYTE *s)
 
int DoCall (UBYTE *s)
 
int DoDebug (UBYTE *s)
 
int DoTerminate (UBYTE *s)
 
int DoContinueDo (UBYTE *s)
 
int DoDo (UBYTE *s)
 
int DoBreakDo (UBYTE *s)
 
int DoElse (UBYTE *s)
 
int DoElseif (UBYTE *s)
 
int DoEnddo (UBYTE *s)
 
int DoEndif (UBYTE *s)
 
int DoEndprocedure (UBYTE *s)
 
int DoIf (UBYTE *s)
 
int DoIfdef (UBYTE *s, int par)
 
int DoIfydef (UBYTE *s)
 
int DoIfndef (UBYTE *s)
 
int DoInside (UBYTE *s)
 
int DoEndInside (UBYTE *s)
 
int DoMessage (UBYTE *s)
 
int DoPipe (UBYTE *s)
 
int DoPrcExtension (UBYTE *s)
 
int DoPreOut (UBYTE *s)
 
int DoPrePrintTimes (UBYTE *s)
 
int DoPreSortReallocate (UBYTE *s)
 
int DoPreAppend (UBYTE *s)
 
int DoPreCreate (UBYTE *s)
 
int DoPreRemove (UBYTE *s)
 
int DoPreClose (UBYTE *s)
 
int DoPreWrite (UBYTE *s)
 
int DoProcedure (UBYTE *s)
 
int DoPreBreak (UBYTE *s)
 
int DoPreCase (UBYTE *s)
 
int DoPreDefault (UBYTE *s)
 
int DoPreEndSwitch (UBYTE *s)
 
int DoPreSwitch (UBYTE *s)
 
int DoPreShow (UBYTE *s)
 
int DoSystem (UBYTE *s)
 
int PreLoad (PRELOAD *p, UBYTE *start, UBYTE *stop, int mode, char *message)
 
int PreSkip (UBYTE *start, UBYTE *stop, int mode)
 
void StartPrepro (void)
 
int EvalPreIf (UBYTE *s)
 
UBYTE * PreIfEval (UBYTE *s, int *value)
 
int PreCmp (int type, int val, UBYTE *t, int type2, int val2, UBYTE *t2, int cmpop)
 
int PreEq (int type, int val, UBYTE *t, int type2, int val2, UBYTE *t2, int eqop)
 
UBYTE * pParseObject (UBYTE *s, int *type, LONG *val2)
 
UBYTE * PreCalc (void)
 
UBYTE * PreEval (UBYTE *s, LONG *x)
 
void AddToPreTypes (int type)
 
void MessPreNesting (int par)
 
int DoPreAddSeparator (UBYTE *s)
 
int DoPreRmSeparator (UBYTE *s)
 
int DoExternal (UBYTE *s)
 
int DoPrompt (UBYTE *s)
 
int DoSetExternal (UBYTE *s)
 
int DoSetExternalAttr (UBYTE *s)
 
int DoRmExternal (UBYTE *s)
 
int DoFromExternal (UBYTE *s)
 
int DoToExternal (UBYTE *s)
 
UBYTE * defineChannel (UBYTE *s, HANDLERS *h)
 
int writeToChannel (int wtype, UBYTE *s, HANDLERS *h)
 
int DoFactDollar (UBYTE *s)
 
WORD GetDollarNumber (UBYTE **inp, DOLLARS d)
 
int DoSetRandom (UBYTE *s)
 
int DoOptimize (UBYTE *s)
 
int DoClearOptimize (UBYTE *s)
 
int DoSkipExtraSymbols (UBYTE *s)
 
int DoPreReset (UBYTE *s)
 
int DoPreAppendPath (UBYTE *s)
 
int DoPrePrependPath (UBYTE *s)
 
int DoTimeOutAfter (UBYTE *s)
 
int DoNamespace (UBYTE *s)
 
int DoEndNamespace (UBYTE *s)
 
UBYTE * SkipName (UBYTE *s)
 
UBYTE * ConstructName (UBYTE *s, UBYTE type)
 
int DoUse (UBYTE *s)
 
int UserFlags (UBYTE *s, int par)
 
int DoClearUserFlag (UBYTE *s)
 
int DoSetUserFlag (UBYTE *s)
 

Detailed Description

This is the preprocessor and all its routines.

Definition in file pre.c.

Macro Definition Documentation

◆ STRINGIFY

#define STRINGIFY (   x)    STRINGIFY__(x)

Definition at line 4342 of file pre.c.

◆ STRINGIFY__

#define STRINGIFY__ (   x)    #x

Definition at line 4343 of file pre.c.

◆ SKIPBUFSIZE

#define SKIPBUFSIZE   20

Definition at line 4466 of file pre.c.

◆ KILL

#define KILL   "kill"

Definition at line 5686 of file pre.c.

◆ KILLALL

#define KILLALL   "killall"

Definition at line 5687 of file pre.c.

◆ DAEMON

#define DAEMON   "daemon"

Definition at line 5688 of file pre.c.

◆ SHELL

#define SHELL   "shell"

Definition at line 5689 of file pre.c.

◆ STDERR

#define STDERR   "stderr"

Definition at line 5690 of file pre.c.

◆ TRUE_EXPR

#define TRUE_EXPR   "true"

Definition at line 5692 of file pre.c.

◆ FALSE_EXPR

#define FALSE_EXPR   "false"

Definition at line 5693 of file pre.c.

◆ NOSHELL

#define NOSHELL   "noshell"

Definition at line 5694 of file pre.c.

◆ TERMINAL

#define TERMINAL   "terminal"

Definition at line 5695 of file pre.c.

Function Documentation

◆ GetInput()

UBYTE GetInput ( void  )

Definition at line 138 of file pre.c.

◆ ClearPushback()

void ClearPushback ( void  )

Definition at line 167 of file pre.c.

◆ GetChar()

UBYTE GetChar ( int  level)

Definition at line 185 of file pre.c.

◆ CharOut()

void CharOut ( UBYTE  c)

Definition at line 495 of file pre.c.

◆ UnsetAllowDelay()

void UnsetAllowDelay ( void  )

Definition at line 516 of file pre.c.

◆ GetPreVar()

UBYTE * GetPreVar ( UBYTE *  name,
int  flag 
)

Definition at line 542 of file pre.c.

◆ PutPreVar()

int PutPreVar ( UBYTE *  name,
UBYTE *  value,
UBYTE *  args,
int  mode 
)

Inserts/Updates a preprocessor variable in the name administration.

Parameters
nameCharacter string with the variable name.
valueCharacter string with a possible value. Special case: if this argument is zero, then we have no value. Note: This is different from having an empty argument! This should only occur when the name starts with a ?
argsCharacter string with possible arguments.
mode=0: always create a new name entry, =1: try to do a redefinition if possible.
Returns
Index of used entry in name list.

Definition at line 724 of file pre.c.

Referenced by ClearOptimize(), Generator(), Optimize(), PF_BroadcastRedefinedPreVars(), StartVariables(), and TheDefine().

◆ PopPreVars()

void PopPreVars ( int  tonumber)

Definition at line 826 of file pre.c.

◆ IniModule()

void IniModule ( int  type)

Definition at line 841 of file pre.c.

◆ IniSpecialModule()

void IniSpecialModule ( int  type)

Definition at line 943 of file pre.c.

◆ PreProcessor()

void PreProcessor ( void  )

Definition at line 953 of file pre.c.

◆ PreProInstruction()

int PreProInstruction ( void  )

Definition at line 1172 of file pre.c.

◆ LoadInstruction()

int LoadInstruction ( int  mode)

Definition at line 1269 of file pre.c.

◆ LoadStatement()

int LoadStatement ( int  type)

Definition at line 1472 of file pre.c.

◆ ExpandTripleDots()

int ExpandTripleDots ( int  par)

Definition at line 1610 of file pre.c.

◆ FindKeyWord()

KEYWORD * FindKeyWord ( UBYTE *  theword,
KEYWORD table,
int  size 
)

Definition at line 1978 of file pre.c.

◆ FindInKeyWord()

KEYWORD * FindInKeyWord ( UBYTE *  theword,
KEYWORD table,
int  size 
)

Definition at line 2009 of file pre.c.

◆ TheDefine()

int TheDefine ( UBYTE *  s,
int  mode 
)

Preprocessor assignment. Possible arguments and values are treated and the new preprocessor variable is put into the name administration.

Parameters
sPointer to the character string following the preprocessor command.
modeBitmask. 0-bit clear: always create a new name entry, 0-bit set: try to redefine an existing name, 1-bit set: ignore preprocessor if/switch status.
Returns
zero: no errors, negative number: errors.

Definition at line 2039 of file pre.c.

References PutPreVar().

Here is the call graph for this function:

◆ DoCommentChar()

int DoCommentChar ( UBYTE *  s)

Definition at line 2112 of file pre.c.

◆ DoPreAssign()

int DoPreAssign ( UBYTE *  s)

Definition at line 2143 of file pre.c.

◆ DoDefine()

int DoDefine ( UBYTE *  s)

Definition at line 2174 of file pre.c.

◆ DoRedefine()

int DoRedefine ( UBYTE *  s)

Definition at line 2184 of file pre.c.

◆ ClearMacro()

int ClearMacro ( UBYTE *  name)

Definition at line 2196 of file pre.c.

◆ TheUndefine()

int TheUndefine ( UBYTE *  name)

Definition at line 2224 of file pre.c.

◆ DoUndefine()

int DoUndefine ( UBYTE *  s)

Definition at line 2278 of file pre.c.

◆ DoInclude()

int DoInclude ( UBYTE *  s)

Definition at line 2330 of file pre.c.

◆ DoReverseInclude()

int DoReverseInclude ( UBYTE *  s)

Definition at line 2337 of file pre.c.

◆ Include()

int Include ( UBYTE *  s,
int  type 
)

Definition at line 2344 of file pre.c.

◆ DoPreExchange()

int DoPreExchange ( UBYTE *  s)

Definition at line 2505 of file pre.c.

◆ DoCall()

int DoCall ( UBYTE *  s)

Definition at line 2566 of file pre.c.

◆ DoDebug()

int DoDebug ( UBYTE *  s)

Definition at line 2742 of file pre.c.

◆ DoTerminate()

int DoTerminate ( UBYTE *  s)

Definition at line 2779 of file pre.c.

◆ DoContinueDo()

int DoContinueDo ( UBYTE *  s)

Jumps forward to the corresponding #enddo of the specified number of outer #do loops.

Syntax:
#continuedo [<number>=1]

If number is omitted, it defaults to 1. If number is zero then the instruction has no effect.

Definition at line 2813 of file pre.c.

◆ DoDo()

int DoDo ( UBYTE *  s)

Definition at line 2877 of file pre.c.

◆ DoBreakDo()

int DoBreakDo ( UBYTE *  s)

Definition at line 3092 of file pre.c.

◆ DoElse()

int DoElse ( UBYTE *  s)

Definition at line 3170 of file pre.c.

◆ DoElseif()

int DoElseif ( UBYTE *  s)

Definition at line 3207 of file pre.c.

◆ DoEnddo()

int DoEnddo ( UBYTE *  s)

Definition at line 3242 of file pre.c.

◆ DoEndif()

int DoEndif ( UBYTE *  s)

Definition at line 3388 of file pre.c.

◆ DoEndprocedure()

int DoEndprocedure ( UBYTE *  s)

Definition at line 3416 of file pre.c.

◆ DoIf()

int DoIf ( UBYTE *  s)

Definition at line 3443 of file pre.c.

◆ DoIfdef()

int DoIfdef ( UBYTE *  s,
int  par 
)

Definition at line 3467 of file pre.c.

◆ DoIfydef()

int DoIfydef ( UBYTE *  s)

Definition at line 3492 of file pre.c.

◆ DoIfndef()

int DoIfndef ( UBYTE *  s)

Definition at line 3502 of file pre.c.

◆ DoInside()

int DoInside ( UBYTE *  s)

Definition at line 3527 of file pre.c.

◆ DoEndInside()

int DoEndInside ( UBYTE *  s)

Definition at line 3620 of file pre.c.

◆ DoMessage()

int DoMessage ( UBYTE *  s)

Definition at line 3752 of file pre.c.

◆ DoPipe()

int DoPipe ( UBYTE *  s)

Definition at line 3766 of file pre.c.

◆ DoPrcExtension()

int DoPrcExtension ( UBYTE *  s)

Definition at line 3789 of file pre.c.

◆ DoPreOut()

int DoPreOut ( UBYTE *  s)

Definition at line 3823 of file pre.c.

◆ DoPrePrintTimes()

int DoPrePrintTimes ( UBYTE *  s)

Definition at line 3846 of file pre.c.

◆ DoPreSortReallocate()

int DoPreSortReallocate ( UBYTE *  s)

Definition at line 3860 of file pre.c.

◆ DoPreAppend()

int DoPreAppend ( UBYTE *  s)

Definition at line 3880 of file pre.c.

◆ DoPreCreate()

int DoPreCreate ( UBYTE *  s)

Definition at line 3923 of file pre.c.

◆ DoPreRemove()

int DoPreRemove ( UBYTE *  s)

Definition at line 3963 of file pre.c.

◆ DoPreClose()

int DoPreClose ( UBYTE *  s)

Definition at line 3996 of file pre.c.

◆ DoPreWrite()

int DoPreWrite ( UBYTE *  s)

Definition at line 4040 of file pre.c.

◆ DoProcedure()

int DoProcedure ( UBYTE *  s)

Definition at line 4081 of file pre.c.

◆ DoPreBreak()

int DoPreBreak ( UBYTE *  s)

Definition at line 4138 of file pre.c.

◆ DoPreCase()

int DoPreCase ( UBYTE *  s)

Definition at line 4162 of file pre.c.

◆ DoPreDefault()

int DoPreDefault ( UBYTE *  s)

Definition at line 4201 of file pre.c.

◆ DoPreEndSwitch()

int DoPreEndSwitch ( UBYTE *  s)

Definition at line 4225 of file pre.c.

◆ DoPreSwitch()

int DoPreSwitch ( UBYTE *  s)

Definition at line 4252 of file pre.c.

◆ DoPreShow()

int DoPreShow ( UBYTE *  s)

Definition at line 4306 of file pre.c.

◆ DoSystem()

int DoSystem ( UBYTE *  s)

Definition at line 4345 of file pre.c.

◆ PreLoad()

int PreLoad ( PRELOAD p,
UBYTE *  start,
UBYTE *  stop,
int  mode,
char *  message 
)

Definition at line 4385 of file pre.c.

◆ PreSkip()

int PreSkip ( UBYTE *  start,
UBYTE *  stop,
int  mode 
)

Definition at line 4468 of file pre.c.

◆ StartPrepro()

void StartPrepro ( void  )

Definition at line 4523 of file pre.c.

◆ EvalPreIf()

int EvalPreIf ( UBYTE *  s)

Definition at line 4551 of file pre.c.

◆ PreIfEval()

UBYTE * PreIfEval ( UBYTE *  s,
int *  value 
)

Definition at line 4586 of file pre.c.

◆ PreCmp()

int PreCmp ( int  type,
int  val,
UBYTE *  t,
int  type2,
int  val2,
UBYTE *  t2,
int  cmpop 
)

Definition at line 4715 of file pre.c.

◆ PreEq()

int PreEq ( int  type,
int  val,
UBYTE *  t,
int  type2,
int  val2,
UBYTE *  t2,
int  eqop 
)

Definition at line 4739 of file pre.c.

◆ pParseObject()

UBYTE * pParseObject ( UBYTE *  s,
int *  type,
LONG *  val2 
)

Definition at line 4768 of file pre.c.

◆ PreCalc()

UBYTE * PreCalc ( void  )

Definition at line 5204 of file pre.c.

◆ PreEval()

UBYTE * PreEval ( UBYTE *  s,
LONG *  x 
)

Definition at line 5282 of file pre.c.

◆ AddToPreTypes()

void AddToPreTypes ( int  type)

Definition at line 5432 of file pre.c.

◆ MessPreNesting()

void MessPreNesting ( int  par)

Definition at line 5450 of file pre.c.

◆ DoPreAddSeparator()

int DoPreAddSeparator ( UBYTE *  s)

Definition at line 5473 of file pre.c.

◆ DoPreRmSeparator()

int DoPreRmSeparator ( UBYTE *  s)

Definition at line 5498 of file pre.c.

◆ DoExternal()

int DoExternal ( UBYTE *  s)

Definition at line 5515 of file pre.c.

◆ DoPrompt()

int DoPrompt ( UBYTE *  s)

Definition at line 5597 of file pre.c.

◆ DoSetExternal()

int DoSetExternal ( UBYTE *  s)

Definition at line 5630 of file pre.c.

◆ DoSetExternalAttr()

int DoSetExternalAttr ( UBYTE *  s)

Definition at line 5700 of file pre.c.

◆ DoRmExternal()

int DoRmExternal ( UBYTE *  s)

Definition at line 5817 of file pre.c.

◆ DoFromExternal()

int DoFromExternal ( UBYTE *  s)

Definition at line 5882 of file pre.c.

◆ DoToExternal()

int DoToExternal ( UBYTE *  s)

Definition at line 6077 of file pre.c.

◆ defineChannel()

UBYTE * defineChannel ( UBYTE *  s,
HANDLERS h 
)

Definition at line 6124 of file pre.c.

◆ writeToChannel()

int writeToChannel ( int  wtype,
UBYTE *  s,
HANDLERS h 
)

Definition at line 6159 of file pre.c.

◆ DoFactDollar()

int DoFactDollar ( UBYTE *  s)

Definition at line 6724 of file pre.c.

◆ GetDollarNumber()

WORD GetDollarNumber ( UBYTE **  inp,
DOLLARS  d 
)

Definition at line 6761 of file pre.c.

◆ DoSetRandom()

int DoSetRandom ( UBYTE *  s)

Definition at line 6851 of file pre.c.

◆ DoOptimize()

int DoOptimize ( UBYTE *  s)

Definition at line 6894 of file pre.c.

◆ DoClearOptimize()

int DoClearOptimize ( UBYTE *  s)

Definition at line 7031 of file pre.c.

◆ DoSkipExtraSymbols()

int DoSkipExtraSymbols ( UBYTE *  s)

Definition at line 7051 of file pre.c.

◆ DoPreReset()

int DoPreReset ( UBYTE *  s)

Definition at line 7090 of file pre.c.

◆ DoPreAppendPath()

int DoPreAppendPath ( UBYTE *  s)

Appends the given path (absolute or relative to the current file directory) to the FORM path.

Syntax: #appendpath <path>

Definition at line 7248 of file pre.c.

◆ DoPrePrependPath()

int DoPrePrependPath ( UBYTE *  s)

Prepends the given path (absolute or relative to the current file directory) to the FORM path.

Syntax: #prependpath <path>

Definition at line 7265 of file pre.c.

◆ DoTimeOutAfter()

int DoTimeOutAfter ( UBYTE *  s)

Definition at line 7277 of file pre.c.

◆ DoNamespace()

int DoNamespace ( UBYTE *  s)

Definition at line 7329 of file pre.c.

◆ DoEndNamespace()

int DoEndNamespace ( UBYTE *  s)

Definition at line 7377 of file pre.c.

◆ SkipName()

UBYTE * SkipName ( UBYTE *  s)

Definition at line 7400 of file pre.c.

◆ ConstructName()

UBYTE * ConstructName ( UBYTE *  s,
UBYTE  type 
)

Definition at line 7500 of file pre.c.

◆ DoUse()

int DoUse ( UBYTE *  s)

Definition at line 7594 of file pre.c.

◆ UserFlags()

int UserFlags ( UBYTE *  s,
int  par 
)

Definition at line 7642 of file pre.c.

◆ DoClearUserFlag()

int DoClearUserFlag ( UBYTE *  s)

Definition at line 7749 of file pre.c.

◆ DoSetUserFlag()

int DoSetUserFlag ( UBYTE *  s)

Definition at line 7759 of file pre.c.