FORM v5.0.1-23-g7a8f756
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 4338 of file pre.c.

◆ STRINGIFY__

#define STRINGIFY__ (   x)    #x

Definition at line 4339 of file pre.c.

◆ SKIPBUFSIZE

#define SKIPBUFSIZE   20

Definition at line 4462 of file pre.c.

◆ KILL

#define KILL   "kill"

Definition at line 5682 of file pre.c.

◆ KILLALL

#define KILLALL   "killall"

Definition at line 5683 of file pre.c.

◆ DAEMON

#define DAEMON   "daemon"

Definition at line 5684 of file pre.c.

◆ SHELL

#define SHELL   "shell"

Definition at line 5685 of file pre.c.

◆ STDERR

#define STDERR   "stderr"

Definition at line 5686 of file pre.c.

◆ TRUE_EXPR

#define TRUE_EXPR   "true"

Definition at line 5688 of file pre.c.

◆ FALSE_EXPR

#define FALSE_EXPR   "false"

Definition at line 5689 of file pre.c.

◆ NOSHELL

#define NOSHELL   "noshell"

Definition at line 5690 of file pre.c.

◆ TERMINAL

#define TERMINAL   "terminal"

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

◆ DoTerminate()

int DoTerminate ( UBYTE *  s)

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

◆ DoDo()

int DoDo ( UBYTE *  s)

Definition at line 2873 of file pre.c.

◆ DoBreakDo()

int DoBreakDo ( UBYTE *  s)

Definition at line 3088 of file pre.c.

◆ DoElse()

int DoElse ( UBYTE *  s)

Definition at line 3166 of file pre.c.

◆ DoElseif()

int DoElseif ( UBYTE *  s)

Definition at line 3203 of file pre.c.

◆ DoEnddo()

int DoEnddo ( UBYTE *  s)

Definition at line 3238 of file pre.c.

◆ DoEndif()

int DoEndif ( UBYTE *  s)

Definition at line 3384 of file pre.c.

◆ DoEndprocedure()

int DoEndprocedure ( UBYTE *  s)

Definition at line 3412 of file pre.c.

◆ DoIf()

int DoIf ( UBYTE *  s)

Definition at line 3439 of file pre.c.

◆ DoIfdef()

int DoIfdef ( UBYTE *  s,
int  par 
)

Definition at line 3463 of file pre.c.

◆ DoIfydef()

int DoIfydef ( UBYTE *  s)

Definition at line 3488 of file pre.c.

◆ DoIfndef()

int DoIfndef ( UBYTE *  s)

Definition at line 3498 of file pre.c.

◆ DoInside()

int DoInside ( UBYTE *  s)

Definition at line 3523 of file pre.c.

◆ DoEndInside()

int DoEndInside ( UBYTE *  s)

Definition at line 3616 of file pre.c.

◆ DoMessage()

int DoMessage ( UBYTE *  s)

Definition at line 3748 of file pre.c.

◆ DoPipe()

int DoPipe ( UBYTE *  s)

Definition at line 3762 of file pre.c.

◆ DoPrcExtension()

int DoPrcExtension ( UBYTE *  s)

Definition at line 3785 of file pre.c.

◆ DoPreOut()

int DoPreOut ( UBYTE *  s)

Definition at line 3819 of file pre.c.

◆ DoPrePrintTimes()

int DoPrePrintTimes ( UBYTE *  s)

Definition at line 3842 of file pre.c.

◆ DoPreSortReallocate()

int DoPreSortReallocate ( UBYTE *  s)

Definition at line 3856 of file pre.c.

◆ DoPreAppend()

int DoPreAppend ( UBYTE *  s)

Definition at line 3876 of file pre.c.

◆ DoPreCreate()

int DoPreCreate ( UBYTE *  s)

Definition at line 3919 of file pre.c.

◆ DoPreRemove()

int DoPreRemove ( UBYTE *  s)

Definition at line 3959 of file pre.c.

◆ DoPreClose()

int DoPreClose ( UBYTE *  s)

Definition at line 3992 of file pre.c.

◆ DoPreWrite()

int DoPreWrite ( UBYTE *  s)

Definition at line 4036 of file pre.c.

◆ DoProcedure()

int DoProcedure ( UBYTE *  s)

Definition at line 4077 of file pre.c.

◆ DoPreBreak()

int DoPreBreak ( UBYTE *  s)

Definition at line 4134 of file pre.c.

◆ DoPreCase()

int DoPreCase ( UBYTE *  s)

Definition at line 4158 of file pre.c.

◆ DoPreDefault()

int DoPreDefault ( UBYTE *  s)

Definition at line 4197 of file pre.c.

◆ DoPreEndSwitch()

int DoPreEndSwitch ( UBYTE *  s)

Definition at line 4221 of file pre.c.

◆ DoPreSwitch()

int DoPreSwitch ( UBYTE *  s)

Definition at line 4248 of file pre.c.

◆ DoPreShow()

int DoPreShow ( UBYTE *  s)

Definition at line 4302 of file pre.c.

◆ DoSystem()

int DoSystem ( UBYTE *  s)

Definition at line 4341 of file pre.c.

◆ PreLoad()

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

Definition at line 4381 of file pre.c.

◆ PreSkip()

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

Definition at line 4464 of file pre.c.

◆ StartPrepro()

void StartPrepro ( void  )

Definition at line 4519 of file pre.c.

◆ EvalPreIf()

int EvalPreIf ( UBYTE *  s)

Definition at line 4547 of file pre.c.

◆ PreIfEval()

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

Definition at line 4582 of file pre.c.

◆ PreCmp()

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

Definition at line 4711 of file pre.c.

◆ PreEq()

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

Definition at line 4735 of file pre.c.

◆ pParseObject()

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

Definition at line 4764 of file pre.c.

◆ PreCalc()

UBYTE * PreCalc ( void  )

Definition at line 5200 of file pre.c.

◆ PreEval()

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

Definition at line 5278 of file pre.c.

◆ AddToPreTypes()

void AddToPreTypes ( int  type)

Definition at line 5428 of file pre.c.

◆ MessPreNesting()

void MessPreNesting ( int  par)

Definition at line 5446 of file pre.c.

◆ DoPreAddSeparator()

int DoPreAddSeparator ( UBYTE *  s)

Definition at line 5469 of file pre.c.

◆ DoPreRmSeparator()

int DoPreRmSeparator ( UBYTE *  s)

Definition at line 5494 of file pre.c.

◆ DoExternal()

int DoExternal ( UBYTE *  s)

Definition at line 5511 of file pre.c.

◆ DoPrompt()

int DoPrompt ( UBYTE *  s)

Definition at line 5593 of file pre.c.

◆ DoSetExternal()

int DoSetExternal ( UBYTE *  s)

Definition at line 5626 of file pre.c.

◆ DoSetExternalAttr()

int DoSetExternalAttr ( UBYTE *  s)

Definition at line 5696 of file pre.c.

◆ DoRmExternal()

int DoRmExternal ( UBYTE *  s)

Definition at line 5813 of file pre.c.

◆ DoFromExternal()

int DoFromExternal ( UBYTE *  s)

Definition at line 5878 of file pre.c.

◆ DoToExternal()

int DoToExternal ( UBYTE *  s)

Definition at line 6073 of file pre.c.

◆ defineChannel()

UBYTE * defineChannel ( UBYTE *  s,
HANDLERS h 
)

Definition at line 6120 of file pre.c.

◆ writeToChannel()

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

Definition at line 6155 of file pre.c.

◆ DoFactDollar()

int DoFactDollar ( UBYTE *  s)

Definition at line 6720 of file pre.c.

◆ GetDollarNumber()

WORD GetDollarNumber ( UBYTE **  inp,
DOLLARS  d 
)

Definition at line 6757 of file pre.c.

◆ DoSetRandom()

int DoSetRandom ( UBYTE *  s)

Definition at line 6847 of file pre.c.

◆ DoOptimize()

int DoOptimize ( UBYTE *  s)

Definition at line 6890 of file pre.c.

◆ DoClearOptimize()

int DoClearOptimize ( UBYTE *  s)

Definition at line 7023 of file pre.c.

◆ DoSkipExtraSymbols()

int DoSkipExtraSymbols ( UBYTE *  s)

Definition at line 7043 of file pre.c.

◆ DoPreReset()

int DoPreReset ( UBYTE *  s)

Definition at line 7082 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 7240 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 7257 of file pre.c.

◆ DoTimeOutAfter()

int DoTimeOutAfter ( UBYTE *  s)

Definition at line 7269 of file pre.c.

◆ DoNamespace()

int DoNamespace ( UBYTE *  s)

Definition at line 7321 of file pre.c.

◆ DoEndNamespace()

int DoEndNamespace ( UBYTE *  s)

Definition at line 7369 of file pre.c.

◆ SkipName()

UBYTE * SkipName ( UBYTE *  s)

Definition at line 7392 of file pre.c.

◆ ConstructName()

UBYTE * ConstructName ( UBYTE *  s,
UBYTE  type 
)

Definition at line 7492 of file pre.c.

◆ DoUse()

int DoUse ( UBYTE *  s)

Definition at line 7584 of file pre.c.

◆ UserFlags()

int UserFlags ( UBYTE *  s,
int  par 
)

Definition at line 7632 of file pre.c.

◆ DoClearUserFlag()

int DoClearUserFlag ( UBYTE *  s)

Definition at line 7739 of file pre.c.

◆ DoSetUserFlag()

int DoSetUserFlag ( UBYTE *  s)

Definition at line 7749 of file pre.c.