FORM v5.0.0-35-g6318119
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 4329 of file pre.c.

◆ STRINGIFY__

#define STRINGIFY__ (   x)    #x

Definition at line 4330 of file pre.c.

◆ SKIPBUFSIZE

#define SKIPBUFSIZE   20

Definition at line 4453 of file pre.c.

◆ KILL

#define KILL   "kill"

Definition at line 5673 of file pre.c.

◆ KILLALL

#define KILLALL   "killall"

Definition at line 5674 of file pre.c.

◆ DAEMON

#define DAEMON   "daemon"

Definition at line 5675 of file pre.c.

◆ SHELL

#define SHELL   "shell"

Definition at line 5676 of file pre.c.

◆ STDERR

#define STDERR   "stderr"

Definition at line 5677 of file pre.c.

◆ TRUE_EXPR

#define TRUE_EXPR   "true"

Definition at line 5679 of file pre.c.

◆ FALSE_EXPR

#define FALSE_EXPR   "false"

Definition at line 5680 of file pre.c.

◆ NOSHELL

#define NOSHELL   "noshell"

Definition at line 5681 of file pre.c.

◆ TERMINAL

#define TERMINAL   "terminal"

Definition at line 5682 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 1260 of file pre.c.

◆ LoadStatement()

int LoadStatement ( int  type)

Definition at line 1463 of file pre.c.

◆ ExpandTripleDots()

int ExpandTripleDots ( int  par)

Definition at line 1601 of file pre.c.

◆ FindKeyWord()

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

Definition at line 1969 of file pre.c.

◆ FindInKeyWord()

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

Definition at line 2000 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 2030 of file pre.c.

References PutPreVar().

Here is the call graph for this function:

◆ DoCommentChar()

int DoCommentChar ( UBYTE *  s)

Definition at line 2103 of file pre.c.

◆ DoPreAssign()

int DoPreAssign ( UBYTE *  s)

Definition at line 2134 of file pre.c.

◆ DoDefine()

int DoDefine ( UBYTE *  s)

Definition at line 2165 of file pre.c.

◆ DoRedefine()

int DoRedefine ( UBYTE *  s)

Definition at line 2175 of file pre.c.

◆ ClearMacro()

int ClearMacro ( UBYTE *  name)

Definition at line 2187 of file pre.c.

◆ TheUndefine()

int TheUndefine ( UBYTE *  name)

Definition at line 2215 of file pre.c.

◆ DoUndefine()

int DoUndefine ( UBYTE *  s)

Definition at line 2269 of file pre.c.

◆ DoInclude()

int DoInclude ( UBYTE *  s)

Definition at line 2321 of file pre.c.

◆ DoReverseInclude()

int DoReverseInclude ( UBYTE *  s)

Definition at line 2328 of file pre.c.

◆ Include()

int Include ( UBYTE *  s,
int  type 
)

Definition at line 2335 of file pre.c.

◆ DoPreExchange()

int DoPreExchange ( UBYTE *  s)

Definition at line 2496 of file pre.c.

◆ DoCall()

int DoCall ( UBYTE *  s)

Definition at line 2557 of file pre.c.

◆ DoDebug()

int DoDebug ( UBYTE *  s)

Definition at line 2729 of file pre.c.

◆ DoTerminate()

int DoTerminate ( UBYTE *  s)

Definition at line 2766 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 2800 of file pre.c.

◆ DoDo()

int DoDo ( UBYTE *  s)

Definition at line 2864 of file pre.c.

◆ DoBreakDo()

int DoBreakDo ( UBYTE *  s)

Definition at line 3079 of file pre.c.

◆ DoElse()

int DoElse ( UBYTE *  s)

Definition at line 3157 of file pre.c.

◆ DoElseif()

int DoElseif ( UBYTE *  s)

Definition at line 3194 of file pre.c.

◆ DoEnddo()

int DoEnddo ( UBYTE *  s)

Definition at line 3229 of file pre.c.

◆ DoEndif()

int DoEndif ( UBYTE *  s)

Definition at line 3375 of file pre.c.

◆ DoEndprocedure()

int DoEndprocedure ( UBYTE *  s)

Definition at line 3403 of file pre.c.

◆ DoIf()

int DoIf ( UBYTE *  s)

Definition at line 3430 of file pre.c.

◆ DoIfdef()

int DoIfdef ( UBYTE *  s,
int  par 
)

Definition at line 3454 of file pre.c.

◆ DoIfydef()

int DoIfydef ( UBYTE *  s)

Definition at line 3479 of file pre.c.

◆ DoIfndef()

int DoIfndef ( UBYTE *  s)

Definition at line 3489 of file pre.c.

◆ DoInside()

int DoInside ( UBYTE *  s)

Definition at line 3514 of file pre.c.

◆ DoEndInside()

int DoEndInside ( UBYTE *  s)

Definition at line 3607 of file pre.c.

◆ DoMessage()

int DoMessage ( UBYTE *  s)

Definition at line 3739 of file pre.c.

◆ DoPipe()

int DoPipe ( UBYTE *  s)

Definition at line 3753 of file pre.c.

◆ DoPrcExtension()

int DoPrcExtension ( UBYTE *  s)

Definition at line 3776 of file pre.c.

◆ DoPreOut()

int DoPreOut ( UBYTE *  s)

Definition at line 3810 of file pre.c.

◆ DoPrePrintTimes()

int DoPrePrintTimes ( UBYTE *  s)

Definition at line 3833 of file pre.c.

◆ DoPreSortReallocate()

int DoPreSortReallocate ( UBYTE *  s)

Definition at line 3847 of file pre.c.

◆ DoPreAppend()

int DoPreAppend ( UBYTE *  s)

Definition at line 3867 of file pre.c.

◆ DoPreCreate()

int DoPreCreate ( UBYTE *  s)

Definition at line 3910 of file pre.c.

◆ DoPreRemove()

int DoPreRemove ( UBYTE *  s)

Definition at line 3950 of file pre.c.

◆ DoPreClose()

int DoPreClose ( UBYTE *  s)

Definition at line 3983 of file pre.c.

◆ DoPreWrite()

int DoPreWrite ( UBYTE *  s)

Definition at line 4027 of file pre.c.

◆ DoProcedure()

int DoProcedure ( UBYTE *  s)

Definition at line 4068 of file pre.c.

◆ DoPreBreak()

int DoPreBreak ( UBYTE *  s)

Definition at line 4125 of file pre.c.

◆ DoPreCase()

int DoPreCase ( UBYTE *  s)

Definition at line 4149 of file pre.c.

◆ DoPreDefault()

int DoPreDefault ( UBYTE *  s)

Definition at line 4188 of file pre.c.

◆ DoPreEndSwitch()

int DoPreEndSwitch ( UBYTE *  s)

Definition at line 4212 of file pre.c.

◆ DoPreSwitch()

int DoPreSwitch ( UBYTE *  s)

Definition at line 4239 of file pre.c.

◆ DoPreShow()

int DoPreShow ( UBYTE *  s)

Definition at line 4293 of file pre.c.

◆ DoSystem()

int DoSystem ( UBYTE *  s)

Definition at line 4332 of file pre.c.

◆ PreLoad()

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

Definition at line 4372 of file pre.c.

◆ PreSkip()

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

Definition at line 4455 of file pre.c.

◆ StartPrepro()

void StartPrepro ( void  )

Definition at line 4510 of file pre.c.

◆ EvalPreIf()

int EvalPreIf ( UBYTE *  s)

Definition at line 4538 of file pre.c.

◆ PreIfEval()

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

Definition at line 4573 of file pre.c.

◆ PreCmp()

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

Definition at line 4702 of file pre.c.

◆ PreEq()

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

Definition at line 4726 of file pre.c.

◆ pParseObject()

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

Definition at line 4755 of file pre.c.

◆ PreCalc()

UBYTE * PreCalc ( void  )

Definition at line 5191 of file pre.c.

◆ PreEval()

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

Definition at line 5269 of file pre.c.

◆ AddToPreTypes()

void AddToPreTypes ( int  type)

Definition at line 5419 of file pre.c.

◆ MessPreNesting()

void MessPreNesting ( int  par)

Definition at line 5437 of file pre.c.

◆ DoPreAddSeparator()

int DoPreAddSeparator ( UBYTE *  s)

Definition at line 5460 of file pre.c.

◆ DoPreRmSeparator()

int DoPreRmSeparator ( UBYTE *  s)

Definition at line 5485 of file pre.c.

◆ DoExternal()

int DoExternal ( UBYTE *  s)

Definition at line 5502 of file pre.c.

◆ DoPrompt()

int DoPrompt ( UBYTE *  s)

Definition at line 5584 of file pre.c.

◆ DoSetExternal()

int DoSetExternal ( UBYTE *  s)

Definition at line 5617 of file pre.c.

◆ DoSetExternalAttr()

int DoSetExternalAttr ( UBYTE *  s)

Definition at line 5687 of file pre.c.

◆ DoRmExternal()

int DoRmExternal ( UBYTE *  s)

Definition at line 5804 of file pre.c.

◆ DoFromExternal()

int DoFromExternal ( UBYTE *  s)

Definition at line 5869 of file pre.c.

◆ DoToExternal()

int DoToExternal ( UBYTE *  s)

Definition at line 6064 of file pre.c.

◆ defineChannel()

UBYTE * defineChannel ( UBYTE *  s,
HANDLERS h 
)

Definition at line 6111 of file pre.c.

◆ writeToChannel()

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

Definition at line 6146 of file pre.c.

◆ DoFactDollar()

int DoFactDollar ( UBYTE *  s)

Definition at line 6711 of file pre.c.

◆ GetDollarNumber()

WORD GetDollarNumber ( UBYTE **  inp,
DOLLARS  d 
)

Definition at line 6748 of file pre.c.

◆ DoSetRandom()

int DoSetRandom ( UBYTE *  s)

Definition at line 6838 of file pre.c.

◆ DoOptimize()

int DoOptimize ( UBYTE *  s)

Definition at line 6881 of file pre.c.

◆ DoClearOptimize()

int DoClearOptimize ( UBYTE *  s)

Definition at line 7014 of file pre.c.

◆ DoSkipExtraSymbols()

int DoSkipExtraSymbols ( UBYTE *  s)

Definition at line 7034 of file pre.c.

◆ DoPreReset()

int DoPreReset ( UBYTE *  s)

Definition at line 7073 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 7231 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 7248 of file pre.c.

◆ DoTimeOutAfter()

int DoTimeOutAfter ( UBYTE *  s)

Definition at line 7260 of file pre.c.

◆ DoNamespace()

int DoNamespace ( UBYTE *  s)

Definition at line 7312 of file pre.c.

◆ DoEndNamespace()

int DoEndNamespace ( UBYTE *  s)

Definition at line 7360 of file pre.c.

◆ SkipName()

UBYTE * SkipName ( UBYTE *  s)

Definition at line 7383 of file pre.c.

◆ ConstructName()

UBYTE * ConstructName ( UBYTE *  s,
UBYTE  type 
)

Definition at line 7483 of file pre.c.

◆ DoUse()

int DoUse ( UBYTE *  s)

Definition at line 7575 of file pre.c.

◆ UserFlags()

int UserFlags ( UBYTE *  s,
int  par 
)

Definition at line 7623 of file pre.c.

◆ DoClearUserFlag()

int DoClearUserFlag ( UBYTE *  s)

Definition at line 7730 of file pre.c.

◆ DoSetUserFlag()

int DoSetUserFlag ( UBYTE *  s)

Definition at line 7740 of file pre.c.