00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _H_prccode
00024 #define _H_prccode
00025
00026 #ifndef _H_expressn
00027 #include "expressn.h"
00028 #endif
00029 #ifndef _H_evaluatn
00030 #include "evaluatn.h"
00031 #endif
00032 #ifndef _H_moduldef
00033 #include "moduldef.h"
00034 #endif
00035 #ifndef _H_scanner
00036 #include "scanner.h"
00037 #endif
00038 #ifndef _H_symbol
00039 #include "symbol.h"
00040 #endif
00041
00042 typedef struct ProcParamStack
00043 {
00044 DATA_OBJECT *ParamArray;
00045
00046 #if DEFGENERIC_CONSTRUCT
00047 EXPRESSION *ParamExpressions;
00048 #endif
00049
00050 int ParamArraySize;
00051 DATA_OBJECT *WildcardValue;
00052 void (*UnboundErrFunc)(void *);
00053 struct ProcParamStack *nxt;
00054 } PROC_PARAM_STACK;
00055
00056 #define PROCEDURAL_PRIMITIVE_DATA 37
00057
00058 struct proceduralPrimitiveData
00059 {
00060 void *NoParamValue;
00061 DATA_OBJECT *ProcParamArray;
00062 int ProcParamArraySize;
00063 EXPRESSION *CurrentProcActions;
00064 #if DEFGENERIC_CONSTRUCT
00065 EXPRESSION *ProcParamExpressions;
00066 #endif
00067 PROC_PARAM_STACK *pstack;
00068 DATA_OBJECT *WildcardValue;
00069 DATA_OBJECT *LocalVarArray;
00070 void (*ProcUnboundErrFunc)(void *);
00071 ENTITY_RECORD ProcParameterInfo;
00072 ENTITY_RECORD ProcWildInfo;
00073 ENTITY_RECORD ProcGetInfo;
00074 ENTITY_RECORD ProcBindInfo;
00075 #if ! DEFFUNCTION_CONSTRUCT
00076 ENTITY_RECORD DeffunctionEntityRecord;
00077 #endif
00078 #if ! DEFGENERIC_CONSTRUCT
00079 ENTITY_RECORD GenericEntityRecord;
00080 #endif
00081 int Oldindex;
00082 };
00083
00084 #define ProceduralPrimitiveData(theEnv) ((struct proceduralPrimitiveData *) GetEnvironmentData(theEnv,PROCEDURAL_PRIMITIVE_DATA))
00085
00086 #ifdef LOCALE
00087 #undef LOCALE
00088 #endif
00089
00090 #ifdef _PRCCODE_SOURCE_
00091 #define LOCALE
00092 #else
00093 #define LOCALE extern
00094 #endif
00095
00096 LOCALE void InstallProcedurePrimitives(void *);
00097
00098 #if (! BLOAD_ONLY) && (! RUN_TIME)
00099
00100 #if DEFFUNCTION_CONSTRUCT || OBJECT_SYSTEM
00101 LOCALE EXPRESSION *ParseProcParameters(void *,char *,struct token *,EXPRESSION *,
00102 SYMBOL_HN **,int *,int *,int *,
00103 int (*)(void *,char *));
00104 #endif
00105 LOCALE EXPRESSION *ParseProcActions(void *,char *,char *,struct token *,EXPRESSION *,SYMBOL_HN *,
00106 int (*)(void *,EXPRESSION *,void *),
00107 int (*)(void *,EXPRESSION *,void *),
00108 int *,void *);
00109 LOCALE intBool ReplaceProcVars(void *,char *,EXPRESSION *,EXPRESSION *,SYMBOL_HN *,
00110 int (*)(void *,EXPRESSION *,void *),void *);
00111 #if DEFGENERIC_CONSTRUCT
00112 LOCALE EXPRESSION *GenProcWildcardReference(void *,int);
00113 #endif
00114 #endif
00115
00116 LOCALE void PushProcParameters(void *,EXPRESSION *,int,char *,char *,void (*)(void *));
00117 LOCALE void PopProcParameters(void *);
00118
00119 #if DEFGENERIC_CONSTRUCT
00120 LOCALE EXPRESSION *GetProcParamExpressions(void *);
00121 #endif
00122
00123 LOCALE void EvaluateProcActions(void *,struct defmodule *,EXPRESSION *,int,
00124 DATA_OBJECT *,void (*)(void *));
00125 LOCALE void PrintProcParamArray(void *,char *);
00126 LOCALE void GrabProcWildargs(void *,DATA_OBJECT *,int);
00127
00128 #endif
00129
00130
00131
00132
00133