irods  4.2.8
About: iRODS (the integrated Rule Oriented Data System) is a distributed data-management system for creating data grids, digital libraries, persistent archives, and real-time data systems.
  Fossies Dox: irods-4.2.8.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

restructs.hpp
Go to the documentation of this file.
1 /* For copyright information please refer to files in the COPYRIGHT directory
2  */
3 
4 
5 #ifndef RESTRUCTS_HPP
6 #define RESTRUCTS_HPP
7 #include <ctype.h>
8 #include <stdio.h>
9 #include <string.h>
10 //#include "reGlobalsExtern.hpp"
11 #include "irods_re_structs.hpp"
12 
13 #ifndef DEBUG
14 #include "rodsType.h"
15 #include "msParam.h"
16 #endif
17 
18 //#include "reconstants.hpp"
19 #include "region.h"
20 #include "irods_hashtable.h"
21 #include "irods_list.h"
22 
23 #define TYPE(x) ((x)->exprType->nodeType)
24 
25 #define T_CONS_TYPE_ARGS(x) ((x)->subtrees)
26 #define T_CONS_TYPE_ARG(x, n) ((x)->subtrees[n])
27 #define T_CONS_TYPE_NAME(x) ((x)->text)
28 #define T_CONS_ARITY(x) ((x)->degree)
29 #define T_FUNC_PARAM_TYPE(x, n) (T_CONS_TYPE_ARG((x)->subtrees[0], n))
30 #define T_FUNC_PARAM_TYPE_VARARG(x, n) (n<T_FUNC_ARITY(x)?T_FUNC_PARAM_TYPE(x,n):T_FUNC_PARAM_TYPE(x,T_FUNC_ARITY(x)-1))
31 #define T_FUNC_RET_TYPE(x) ((x)->subtrees[1])
32 #define T_FUNC_ARITY(x) ((x)->subtrees[0]->degree)
33 #define T_FUNC_VARARG(x) ((x)->vararg)
34 #define T_VAR_ID(x) ((x)->ival)
35 #define T_VAR_DISJUNCT(x, n) ((x)->subtrees[n])
36 #define T_VAR_DISJUNCTS(x) ((x)->subtrees)
37 #define T_VAR_NUM_DISJUNCTS(x) ((x)->degree)
38 #define TC_A(tc) ((tc)->subtrees[0])
39 #define TC_B(tc) ((tc)->subtrees[1])
40 #define TC_NODE(tc) ((tc)->subtrees[2])
41 #define TC_NEXT(tc) ((tc)->subtrees[3])
42 #define N_APP_ARG(x, n) ((x)->subtrees[1]->subtrees[n])
43 #define N_APP_FUNC(x) ((x)->subtrees[0])
44 #define N_APP_ARITY(x) ((x)->subtrees[1]->degree)
45 #define RULE_NODE_NUM_PARAMS(r) ((r)->subtrees[0]->subtrees[0]->degree)
46 #define RULE_NAME(r) ((r)->subtrees[0]->text)
47 
48 #define FD_PROJ(x) (x)->ival
49 #define RES_FUNC_N_ARGS(x) (x)->ival
50 #define RES_ERR_CODE(x) (x)->ival
51 #define RES_FUNC_N_ARGS(x) (x)->ival
52 #define N_TUPLE_CONSTRUCT_TUPLE(x) (x)->ival
53 #define RES_STRING_STR_LEN(x) (x)->ival
54 #define RES_DOUBLE_VAL_LVAL(x) ((x)->dval)
55 #define RES_INT_VAL_LVAL(x) ((x)->dval)
56 #define RES_BOOL_VAL_LVAL(x) ((x)->dval)
57 #define RES_DOUBLE_VAL(x) ((x)->dval)
58 #define RES_INT_VAL(x) ((int)(x)->dval)
59 #define RES_BOOL_VAL(x) ((int)(x)->dval)
60 #define RES_TIME_VAL(x) ((x)->lval)
61 #define FD_RULE_INDEX_LIST(x) ((x)->ruleIndexList)
62 #define FD_RULE_INDEX_LIST_LVAL(x) FD_RULE_INDEX_LIST(x)
63 #define FD_SMSI_FUNC_PTR(x) ((x)->func)
64 #define FD_SMSI_FUNC_PTR_LVAL(x) FD_SMSI_FUNC_PTR(x)
65 #define RES_UNINTER_STRUCT(x) ((x)->param->inOutStruct)
66 #define RES_UNINTER_BUFFER(x) ((x)->param->inpOutBuf)
67 #define RES_IRODS_TYPE(x) ((x)->param->type)
68 #define NODE_EXPR_POS(x) ((x)->expr)
69 #define getNodeType(x) ((NodeType)((x)->nodeType))
70 #define setNodeType(x, t) ((x)->nodeType = (int) t)
71 
72 #define OPTION_VARARG_ONCE 0x0
73 #define OPTION_VARARG_STAR 0x1
74 #define OPTION_VARARG_PLUS 0x2
75 #define OPTION_VARARG_OPTIONAL 0x3
76 #define OPTION_VARARG_MASK 0xf
77 #define OPTION_COERCE 0x10
78 #define OPTION_TYPED 0x20
79 
80 #define OPTION_IO_TYPE_MASK 0xff00
81 #define IO_TYPE_INPUT 0x100
82 #define IO_TYPE_OUTPUT 0x200
83 #define IO_TYPE_DYNAMIC 0x400
84 #define IO_TYPE_EXPRESSION 0x800
85 #define IO_TYPE_ACTIONS 0x1000
86 
87 #define getVararg(n) ((n)->option & OPTION_VARARG_MASK)
88 #define setVararg(n, v) (n)->option ^= ((n)->option & OPTION_VARARG_MASK) ^ (v);
89 #define getIOType(n) ((n)->option & OPTION_IO_TYPE_MASK)
90 #define setIOType(n, v) (n)->option ^= ((n)->option & OPTION_IO_TYPE_MASK) ^ (v);
91 
92 #define SYSTEM_SPACE_RULE 0x100
93 #define DISCARD_EXPRESSION_RESULT 0x200
94 
95 typedef struct node Node;
96 typedef struct node ExprType;
97 typedef struct node Res;
98 typedef struct node FunctionDesc;
99 typedef struct node TypingConstraint;
100 typedef struct node *NodePtr;
101 
102 typedef char *charPtr;
104 typedef struct bucket Bucket;
105 typedef Bucket *BucketPtr;
107 
108 
109 typedef enum node_type {
110  TK_EOS = -1,
111  N_ERROR = 0,
112  TK_INT = 1,
114  TK_TEXT = 3,
116  TK_BOOL = 5,
118  TK_DATETIME = 7, /* unused */
119  TK_VAR = 8,
122  TK_OP = 12,
124  TK_COL = 16,
125  TK_PATH = 18,
126  N_VAL = 20,
127  N_TUPLE = 21,
130  N_ATTR = 25,
133  N_QUERY = 28,
134  N_ACTIONS = 30,
139  N_AVU = 35,
142  N_RULESET = 38,
150  N_RULE = 60,
155  /* K_FLEX = 90, */
156  T_UNSPECED = 100, /* indicates a variable which is not assigned a value is passed in to a microservice */
157  T_ERROR = 101,
158  T_DYNAMIC = 200,
159  T_DOUBLE = 201,
160  T_INT = 202,
161  T_STRING = 203,
162  T_DATETIME = 204,
163  T_BOOL = 205,
164  T_FLEX = 206,
165  T_FIXD = 207,
166  T_TUPLE = 208,
167  T_CONS = 209,
168  T_PATH = 220,
169  T_BREAK = 230,
170  T_SUCCESS = 231,
171  T_VAR = 300,
172  T_IRODS = 400,
173  T_TYPE = 500,
174  TC_LT = 600,
175  TC_SET = 660,
176  PI_BIN = 1002,
177  PI_CHAR = 1008,
178  PI_STR = 1009,
179  PI_PISTR = 1010,
180  PI_INT16 = 1016,
181  PI_INT = 1032,
182  PI_DOUBLE = 1064,
183  PI_POINTER = 2001,
184  PI_STRUCT = 2002,
185  PI_DEPENDENT = 2003,
187  PI_DIM = 2006,
188  PI_MEMBER = 2007,
189  PI_INDEX = 2008,
190  PI_CASE = 2009,
191  PI_DEFAULT = 2010,
192  PI_TYPE = 2011,
194  C_BASE_TYPE = 2020,
196  C_ARRAY_TYPE = 2022,
200  C_STRUCT_DEF = 2026,
201  C_DEF_SET = 2030,
206 
207 typedef struct condIndexVal {
210  Hashtable *valIndex; /* char * -> int * */
212 
213 typedef struct ruleIndexListNode {
219 
220 typedef struct ruleIndexList {
221  char *ruleName;
224 
225 typedef struct env Env;
226 struct env {
230 };
231 
232 typedef Res *( SmsiFuncType )( Node **, int, Node *, ruleExecInfo_t *, int, Env *, rError_t *, Region * );
234 
235 
236 
237 typedef struct str_list {
238  char *str;
239  struct str_list *next;
241 
242 
243 
244 struct node {
245  int nodeType; /* node type */
246  int degree;
247  int option; /* weather runtime coercion is needed */
248  int ival;
249  /* when this node represents a type or a pattern, this field indicates whether the trailing subtree represents varargs */
250  ExprType *exprType; /* expression type */
251  ExprType *coercionType; /* coercion type */
252  char *text;
254  struct node **subtrees;
255  char *base;
256  double dval;
261 };
262 
263 typedef enum ruleType {
269  /* RK_UNPARSED, */
271 
272 typedef struct {
273  int id;
278 } RuleDesc;
279 
281 
282 typedef struct ruleSet {
283  int len;
285  /* Region *region; */
287 
288 typedef struct label {
289  long exprloc;
290  char *base;
292 
293 typedef struct token {
296  int vars[100];
297  long exprloc;
299 
300 /* rule engine events */
301 typedef enum ruleEngineEvent {
302  EXEC_RULE_BEGIN, /* execute a rule */
303  EXEC_ACTION_BEGIN, /* execute an action */
304  EXEC_MICRO_SERVICE_BEGIN, /* execute a microservice */
305  EXEC_RULE_END, /* execute a rule */
306  EXEC_ACTION_END, /* execute an action */
307  EXEC_MICRO_SERVICE_END, /* execute a microservice */
308  GOT_RULE, /* got a rule from rule index */
309  APPLY_RULE_BEGIN, /* apply a rule */
310  APPLY_RULE_END, /* apply a rule */
311  APPLY_ALL_RULES_BEGIN, /* apply all rules */
312  APPLY_ALL_RULES_END, /* apply all rules */
313  EXEC_MY_RULE_BEGIN, /* execute user submitted rule */
314  EXEC_MY_RULE_END /* execute user submitted rule */
316 
317 typedef struct ruleEngineEventParam {
319  char *actionName;
321 
322 Node *newNode( NodeType type, const char* text, Label * exprloc, Region *r );
323 Node *newExprType( NodeType t, int degree, Node **subtrees, Region *r );
324 ExprType *newTVar( Region *r );
325 ExprType *newTVar2( int numDisjuncts, Node **disjuncts, Region *r );
326 ExprType *newCollType( ExprType *elemType, Region *r );
327 ExprType *newTupleType( int arity, ExprType **typeArgs, Region *r );
328 ExprType *newUnaryType( NodeType nodeType, ExprType *typeArg, Region *r );
329 ExprType *newFuncType( ExprType *paramType, ExprType *retType, Region *r );
330 ExprType *newFuncTypeVarArg( int arity, int vararg, ExprType **paramTypes, ExprType *elemType, Region *r );
331 ExprType *newConsType( int arity, char *cons, ExprType **paramTypes, Region *r );
332 ExprType *newTupleTypeVarArg( int arity, int vararg, ExprType **paramTypes, Region *r );
334 ExprType *newErrorType( int errcode, Region *r );
335 ExprType *newIRODSType( const char *name, Region *r );
336 ExprType *newFlexKind( int arity, ExprType **typeArgs, Region *r );
337 FunctionDesc *newFuncSymLink( char *fn , int nArgs, Region *r );
338 Node *newPartialApplication( Node *func, Node *arg, int nArgsLeft, Region *r );
339 
341 Res* newRes( Region *r );
342 Res* newIntRes( Region *r, int n );
343 Res* newDoubleRes( Region *r, double a );
344 Res* newBoolRes( Region *r, int n );
345 Res* newErrorRes( Region *r, int errcode );
347 Res* newStringRes( Region *r, const char *s );
348 Res* newPathRes( Region *r, const char *s );
349 Res* newDatetimeRes( Region *r, long dt );
350 Res* newCollRes( int size, ExprType *elemType, Region *r );
351 Res* newUninterpretedRes( Region *r, const char *typeName, void *ioStruct, bytesBuf_t *ioBuf );
352 Res* newTupleRes( int arity, Res **compTypes, Region *r );
353 msParam_t *newMsParam( const char *typeName, void *ioStruct, bytesBuf_t *ioBuf, Region *r );
354 
355 Env *newEnv( Hashtable *current, Env *previous, Env *lower, Region *r );
356 /* void deleteEnv(Env *env, int deleteCurrent); */
358 void deleteMsParamArray( msParamArray_t *msParamArray );
359 
361 
366 FunctionDesc *newDeconstructorFD( char *type, int proj, Region *r );
368 
369 void setBase( Node *node, char *base, Region *r );
370 Node **setDegree( Node *node, int d, Region *r );
371 Node *createUnaryFunctionNode( char *fn, Node *a, Label * exprloc, Region *r );
372 Node *createBinaryFunctionNode( char *fn, Node *a, Node *b, Label * exprloc, Region *r );
373 Node *createFunctionNode( const char *fn, Node **params, int paramsLen, Label * exprloc, Region *r );
374 Node *createActionsNode( Node **params, int paramsLen, Label * exprloc, Region *r );
375 Node *createTextNode( char *t, Label * exprloc, Region *r );
376 Node *createNumberNode( char *t, Label * exprloc, Region *r );
377 Node *createStringNode( char *t, Label * exprloc, Region *r );
378 Node *createErrorNode( char *error, Label * exprloc, Region *r );
379 
380 RuleSet *newRuleSet( Region *r );
381 RuleDesc *newRuleDesc( RuleType rk, Node *n, int dynamictyping, Region *r );
382 
383 #endif
RuleDescPtr
RuleDesc * RuleDescPtr
Definition: restructs.hpp:280
ruleSet::rules
RuleDesc * rules[50000]
Definition: restructs.hpp:284
T_TYPE
@ T_TYPE
Definition: restructs.hpp:173
charPtr
char * charPtr
Definition: restructs.hpp:102
newExternalFD
FunctionDesc * newExternalFD(Node *type, Region *r)
Definition: restructs.cpp:342
TK_BOOL
@ TK_BOOL
Definition: restructs.hpp:116
Label
struct label Label
RuleIndexListNode
struct ruleIndexListNode RuleIndexListNode
N_PARAM_TYPE_LIST
@ N_PARAM_TYPE_LIST
Definition: restructs.hpp:138
PI_TYPE
@ PI_TYPE
Definition: restructs.hpp:192
PI_ARRAY_MEMBER
@ PI_ARRAY_MEMBER
Definition: restructs.hpp:193
newTypingConstraint
TypingConstraint * newTypingConstraint(ExprType *a, ExprType *b, NodeType type, Node *node, Region *r)
Definition: restructs.cpp:307
irods_list.h
PI_MEMBER
@ PI_MEMBER
Definition: restructs.hpp:188
N_FD_DECONSTRUCTOR
@ N_FD_DECONSTRUCTOR
Definition: restructs.hpp:145
RK_FUNC
@ RK_FUNC
Definition: restructs.hpp:265
N_UNPARSED
@ N_UNPARSED
Definition: restructs.hpp:154
newIRODSType
ExprType * newIRODSType(const char *name, Region *r)
Definition: restructs.cpp:99
setDegree
Node ** setDegree(Node *node, int d, Region *r)
Definition: restructs.cpp:392
token::type
NodeType type
Definition: restructs.hpp:294
msParam.h
EXEC_MICRO_SERVICE_BEGIN
@ EXEC_MICRO_SERVICE_BEGIN
Definition: restructs.hpp:304
N_ATTR
@ N_ATTR
Definition: restructs.hpp:130
newDeconstructorFD
FunctionDesc * newDeconstructorFD(char *type, int proj, Region *r)
Definition: restructs.cpp:349
TK_DATETIME
@ TK_DATETIME
Definition: restructs.hpp:118
ruleIndexList::tail
RuleIndexListNode * tail
Definition: restructs.hpp:222
node::dval
double dval
Definition: restructs.hpp:256
createFunctionNode
Node * createFunctionNode(const char *fn, Node **params, int paramsLen, Label *exprloc, Region *r)
Definition: restructs.cpp:429
node::ival
int ival
Definition: restructs.hpp:248
env::previous
Env * previous
Definition: restructs.hpp:228
T_UNSPECED
@ T_UNSPECED
Definition: restructs.hpp:156
node::param
msParam_t * param
Definition: restructs.hpp:260
N_PARTIAL_APPLICATION
@ N_PARTIAL_APPLICATION
Definition: restructs.hpp:129
EXEC_MY_RULE_END
@ EXEC_MY_RULE_END
Definition: restructs.hpp:314
bucket
Definition: irods_hashtable.h:11
env
Definition: restructs.hpp:226
EXEC_ACTION_END
@ EXEC_ACTION_END
Definition: restructs.hpp:306
ruleIndexListNode::prev
struct ruleIndexListNode * prev
Definition: restructs.hpp:214
createTextNode
Node * createTextNode(char *t, Label *exprloc, Region *r)
Definition: restructs.cpp:452
PI_DIM
@ PI_DIM
Definition: restructs.hpp:187
TK_SESSION_VAR
@ TK_SESSION_VAR
Definition: restructs.hpp:121
RuleDesc::ruleType
RuleType ruleType
Definition: restructs.hpp:276
C_ARRAY_TYPE
@ C_ARRAY_TYPE
Definition: restructs.hpp:196
TC_LT
@ TC_LT
Definition: restructs.hpp:174
ruleSet::len
int len
Definition: restructs.hpp:283
newMsParam
msParam_t * newMsParam(const char *typeName, void *ioStruct, bytesBuf_t *ioBuf, Region *r)
Definition: restructs.cpp:189
T_DOUBLE
@ T_DOUBLE
Definition: restructs.hpp:159
T_PATH
@ T_PATH
Definition: restructs.hpp:168
newUnaryType
ExprType * newUnaryType(NodeType nodeType, ExprType *typeArg, Region *r)
Definition: restructs.cpp:119
token::text
char text[1023+1]
Definition: restructs.hpp:295
EXEC_MY_RULE_BEGIN
@ EXEC_MY_RULE_BEGIN
Definition: restructs.hpp:313
C_ARRAY_TYPE_DIM
@ C_ARRAY_TYPE_DIM
Definition: restructs.hpp:197
N_APPLICATION
@ N_APPLICATION
Definition: restructs.hpp:128
T_BREAK
@ T_BREAK
Definition: restructs.hpp:169
node
Definition: restructs.hpp:244
PI_POINTER
@ PI_POINTER
Definition: restructs.hpp:183
PI_DEPENDENT
@ PI_DEPENDENT
Definition: restructs.hpp:185
C_STRUCT_TYPE
@ C_STRUCT_TYPE
Definition: restructs.hpp:198
PI_BIN
@ PI_BIN
Definition: restructs.hpp:176
ruleIndexList::head
RuleIndexListNode * head
Definition: restructs.hpp:222
CG_ANNOTATIONS
@ CG_ANNOTATIONS
Definition: restructs.hpp:204
condIndexVal::condExp
Node * condExp
Definition: restructs.hpp:209
RK_DATA
@ RK_DATA
Definition: restructs.hpp:266
N_FD_RULE_INDEX_LIST
@ N_FD_RULE_INDEX_LIST
Definition: restructs.hpp:147
ruleIndexListNode::ruleIndex
int ruleIndex
Definition: restructs.hpp:216
N_RULE_NAME
@ N_RULE_NAME
Definition: restructs.hpp:136
token
Definition: restructs.hpp:293
ruleIndexListNode::secondaryIndex
int secondaryIndex
Definition: restructs.hpp:215
generate_iadmin_commands_for_41_to_42_upgrade.name
name
Definition: generate_iadmin_commands_for_41_to_42_upgrade.py:23
createBinaryFunctionNode
Node * createBinaryFunctionNode(char *fn, Node *a, Node *b, Label *exprloc, Region *r)
Definition: restructs.cpp:419
label::exprloc
long exprloc
Definition: restructs.hpp:289
TK_MISC_OP
@ TK_MISC_OP
Definition: restructs.hpp:123
N_SYM_LINK
@ N_SYM_LINK
Definition: restructs.hpp:148
TK_INT
@ TK_INT
Definition: restructs.hpp:112
ruleEngineEventParam::actionName
char * actionName
Definition: restructs.hpp:319
region.h
createNumberNode
Node * createNumberNode(char *t, Label *exprloc, Region *r)
T_CONS
@ T_CONS
Definition: restructs.hpp:167
N_PARAM_LIST
@ N_PARAM_LIST
Definition: restructs.hpp:137
newTVar
ExprType * newTVar(Region *r)
Definition: restructs.cpp:62
newPartialApplication
Node * newPartialApplication(Node *func, Node *arg, int nArgsLeft, Region *r)
Definition: restructs.cpp:137
newCollType
ExprType * newCollType(ExprType *elemType, Region *r)
Definition: restructs.cpp:110
env::lower
Env * lower
Definition: restructs.hpp:229
RK_CONSTRUCTOR
@ RK_CONSTRUCTOR
Definition: restructs.hpp:267
node::text
char * text
Definition: restructs.hpp:252
PI_DOUBLE
@ PI_DOUBLE
Definition: restructs.hpp:182
TK_VAR
@ TK_VAR
Definition: restructs.hpp:119
APPLY_ALL_RULES_END
@ APPLY_ALL_RULES_END
Definition: restructs.hpp:312
N_RULE_PACK
@ N_RULE_PACK
Definition: restructs.hpp:141
newIntRes
Res * newIntRes(Region *r, int n)
Definition: restructs.cpp:204
str_list::next
struct str_list * next
Definition: restructs.hpp:239
TK_EOS
@ TK_EOS
Definition: restructs.hpp:110
EXEC_MICRO_SERVICE_END
@ EXEC_MICRO_SERVICE_END
Definition: restructs.hpp:307
newUninterpretedRes
Res * newUninterpretedRes(Region *r, const char *typeName, void *ioStruct, bytesBuf_t *ioBuf)
Definition: restructs.cpp:183
rError_t
Definition: rodsError.h:24
T_IRODS
@ T_IRODS
Definition: restructs.hpp:172
newErrorRes
Res * newErrorRes(Region *r, int errcode)
Definition: restructs.cpp:259
ruleType
ruleType
Definition: restructs.hpp:263
N_ACTIONS
@ N_ACTIONS
Definition: restructs.hpp:134
TK_LOCAL_VAR
@ TK_LOCAL_VAR
Definition: restructs.hpp:120
TK_TEXT
@ TK_TEXT
Definition: restructs.hpp:114
TC_SET
@ TC_SET
Definition: restructs.hpp:175
N_META_DATA
@ N_META_DATA
Definition: restructs.hpp:140
N_EXTERN_DEF
@ N_EXTERN_DEF
Definition: restructs.hpp:152
node::subtrees
struct node ** subtrees
Definition: restructs.hpp:254
MAX_NUM_RULES
#define MAX_NUM_RULES
Definition: reconstants.hpp:27
newExprType
Node * newExprType(NodeType t, int degree, Node **subtrees, Region *r)
Definition: restructs.cpp:39
CondIndexVal
struct condIndexVal CondIndexVal
rodsType.h
N_FD_EXTERNAL
@ N_FD_EXTERNAL
Definition: restructs.hpp:146
N_ACTIONS_RECOVERY
@ N_ACTIONS_RECOVERY
Definition: restructs.hpp:135
newDoubleRes
Res * newDoubleRes(Region *r, double a)
Definition: restructs.cpp:210
N_QUERY
@ N_QUERY
Definition: restructs.hpp:133
condIndexVal::params
Node * params
Definition: restructs.hpp:208
PI_INT_DEPENDENT
@ PI_INT_DEPENDENT
Definition: restructs.hpp:186
ruleIndexList
Definition: restructs.hpp:220
N_QUERY_COND
@ N_QUERY_COND
Definition: restructs.hpp:131
T_DATETIME
@ T_DATETIME
Definition: restructs.hpp:162
node::degree
int degree
Definition: restructs.hpp:246
node::expr
rodsLong_t expr
Definition: restructs.hpp:253
N_RULE_CODE
@ N_RULE_CODE
Definition: restructs.hpp:149
N_QUERY_COND_JUNCTION
@ N_QUERY_COND_JUNCTION
Definition: restructs.hpp:132
newNode
Node * newNode(NodeType type, const char *text, Label *exprloc, Region *r)
Definition: restructs.cpp:10
C_STRUCT_MEMBER
@ C_STRUCT_MEMBER
Definition: restructs.hpp:199
node::lval
rodsLong_t lval
Definition: restructs.hpp:257
TK_COL
@ TK_COL
Definition: restructs.hpp:124
newPathRes
Res * newPathRes(Region *r, const char *s)
Definition: restructs.cpp:241
T_STRING
@ T_STRING
Definition: restructs.hpp:161
BucketPtr
Bucket * BucketPtr
Definition: restructs.hpp:105
msParam_tPtr
msParam_t * msParam_tPtr
Definition: restructs.hpp:106
setBase
void setBase(Node *node, char *base, Region *r)
Definition: restructs.cpp:384
irods_hashtable.h
newSimpType
ExprType * newSimpType(NodeType t, Region *r)
Definition: restructs.cpp:70
EXEC_RULE_BEGIN
@ EXEC_RULE_BEGIN
Definition: restructs.hpp:302
ruleIndexListNode
Definition: restructs.hpp:213
C_POINTER_TYPE
@ C_POINTER_TYPE
Definition: restructs.hpp:195
C_DEF_SET
@ C_DEF_SET
Definition: restructs.hpp:201
label::base
char * base
Definition: restructs.hpp:290
str_list::str
char * str
Definition: restructs.hpp:238
RK_EXTERN
@ RK_EXTERN
Definition: restructs.hpp:268
newFuncSymLink
FunctionDesc * newFuncSymLink(char *fn, int nArgs, Region *r)
Definition: restructs.cpp:128
newFuncType
ExprType * newFuncType(ExprType *paramType, ExprType *retType, Region *r)
Definition: restructs.cpp:79
N_FD_CONSTRUCTOR
@ N_FD_CONSTRUCTOR
Definition: restructs.hpp:144
MAX_TOKEN_TEXT_LEN
#define MAX_TOKEN_TEXT_LEN
Definition: reconstants.hpp:24
CG_ANNOTATION
@ CG_ANNOTATION
Definition: restructs.hpp:203
TK_DOUBLE
@ TK_DOUBLE
Definition: restructs.hpp:113
newDatetimeRes
Res * newDatetimeRes(Region *r, long dt)
Definition: restructs.cpp:253
MsParam
Definition: msParam.h:76
N_FD_FUNCTION
@ N_FD_FUNCTION
Definition: restructs.hpp:143
newTupleTypeVarArg
ExprType * newTupleTypeVarArg(int arity, int vararg, ExprType **paramTypes, Region *r)
Definition: restructs.cpp:93
StringList
struct str_list StringList
C_DEF_SET_SET
@ C_DEF_SET_SET
Definition: restructs.hpp:202
RuleDesc::type
Node * type
Definition: restructs.hpp:274
TK_PATH
@ TK_PATH
Definition: restructs.hpp:125
ruleEngineEventParam::ruleIndex
int ruleIndex
Definition: restructs.hpp:318
node::coercionType
ExprType * coercionType
Definition: restructs.hpp:251
newFlexKind
ExprType * newFlexKind(int arity, ExprType **typeArgs, Region *r)
node::base
char * base
Definition: restructs.hpp:255
token::vars
int vars[100]
Definition: restructs.hpp:296
APPLY_ALL_RULES_BEGIN
@ APPLY_ALL_RULES_BEGIN
Definition: restructs.hpp:311
T_FIXD
@ T_FIXD
Definition: restructs.hpp:165
RuleDesc::id
int id
Definition: restructs.hpp:273
BytesBuf
Definition: rodsDef.h:197
region
Definition: region.h:45
T_BOOL
@ T_BOOL
Definition: restructs.hpp:163
ExprTypePtr
ExprType * ExprTypePtr
Definition: restructs.hpp:103
RuleIndexList
struct ruleIndexList RuleIndexList
createActionsNode
Node * createActionsNode(Node **params, int paramsLen, Label *exprloc, Region *r)
Definition: restructs.cpp:443
RuleDesc
Definition: restructs.hpp:272
N_VAL
@ N_VAL
Definition: restructs.hpp:126
C_STRUCT_DEF
@ C_STRUCT_DEF
Definition: restructs.hpp:200
newEnv
Env * newEnv(Hashtable *current, Env *previous, Env *lower, Region *r)
Definition: restructs.cpp:281
node::exprType
ExprType * exprType
Definition: restructs.hpp:250
TK_OP
@ TK_OP
Definition: restructs.hpp:122
N_TUPLE
@ N_TUPLE
Definition: restructs.hpp:127
newBoolRes
Res * newBoolRes(Region *r, int n)
Definition: restructs.cpp:216
PI_INT
@ PI_INT
Definition: restructs.hpp:181
NodeType
enum node_type NodeType
condIndexVal
Definition: restructs.hpp:207
ruleEngineEvent
ruleEngineEvent
Definition: restructs.hpp:301
PI_DEFAULT
@ PI_DEFAULT
Definition: restructs.hpp:191
PI_CASE
@ PI_CASE
Definition: restructs.hpp:190
newRes
Res * newRes(Region *r)
Definition: restructs.cpp:176
RuleSet
struct ruleSet RuleSet
newRuleDesc
RuleDesc * newRuleDesc(RuleType rk, Node *n, int dynamictyping, Region *r)
Definition: restructs.cpp:366
newTVar2
ExprType * newTVar2(int numDisjuncts, Node **disjuncts, Region *r)
Definition: restructs.cpp:51
irods.six.b
def b(s)
Definition: six.py:606
T_VAR
@ T_VAR
Definition: restructs.hpp:171
error
int error
Definition: filesystem.cpp:101
ruleIndexListNode::condIndex
CondIndexVal * condIndex
Definition: restructs.hpp:217
RuleDesc::node
Node * node
Definition: restructs.hpp:275
RuleExecInfo
Definition: irods_re_structs.hpp:18
T_INT
@ T_INT
Definition: restructs.hpp:160
APPLY_RULE_END
@ APPLY_RULE_END
Definition: restructs.hpp:310
irods_re_structs.hpp
N_ERROR
@ N_ERROR
Definition: restructs.hpp:111
node_type
node_type
Definition: restructs.hpp:109
RuleDesc::dynamictyping
int dynamictyping
Definition: restructs.hpp:277
T_TUPLE
@ T_TUPLE
Definition: restructs.hpp:166
newCollRes
Res * newCollRes(int size, ExprType *elemType, Region *r)
Definition: restructs.cpp:161
newTupleType
ExprType * newTupleType(int arity, ExprType **typeArgs, Region *r)
Definition: restructs.cpp:116
env::current
Hashtable * current
Definition: restructs.hpp:227
TK_STRING
@ TK_STRING
Definition: restructs.hpp:115
deleteMsParamArray
void deleteMsParamArray(msParamArray_t *msParamArray)
Definition: restructs.cpp:274
newFunctionFD
FunctionDesc * newFunctionFD(char *type, SmsiFuncTypePtr func, Region *r)
Definition: restructs.cpp:323
ruleEngineEventParam
Definition: restructs.hpp:317
node::option
int option
Definition: restructs.hpp:247
GOT_RULE
@ GOT_RULE
Definition: restructs.hpp:308
newConsType
ExprType * newConsType(int arity, char *cons, ExprType **paramTypes, Region *r)
Definition: restructs.cpp:88
T_DYNAMIC
@ T_DYNAMIC
Definition: restructs.hpp:158
newUnspecifiedRes
Res * newUnspecifiedRes(Region *r)
Definition: restructs.cpp:247
node::func
SmsiFuncTypePtr func
Definition: restructs.hpp:259
node::ruleIndexList
RuleIndexList * ruleIndexList
Definition: restructs.hpp:258
newErrorType
ExprType * newErrorType(int errcode, Region *r)
Definition: restructs.cpp:73
PI_STRUCT
@ PI_STRUCT
Definition: restructs.hpp:184
NodePtr
struct node * NodePtr
Definition: restructs.hpp:100
condIndexVal::valIndex
Hashtable * valIndex
Definition: restructs.hpp:210
newConstructorFD2
FunctionDesc * newConstructorFD2(Node *type, Region *r)
Definition: restructs.cpp:335
newTupleRes
Res * newTupleRes(int arity, Res **compTypes, Region *r)
Definition: restructs.cpp:148
createStringNode
Node * createStringNode(char *t, Label *exprloc, Region *r)
Definition: restructs.cpp:473
PI_INT16
@ PI_INT16
Definition: restructs.hpp:180
hashtable
Definition: irods_hashtable.h:16
TK_BACKQUOTED
@ TK_BACKQUOTED
Definition: restructs.hpp:117
ruleIndexListNode::next
struct ruleIndexListNode * next
Definition: restructs.hpp:214
newConstructorFD
FunctionDesc * newConstructorFD(char *type, Region *r)
Definition: restructs.cpp:331
EXEC_RULE_END
@ EXEC_RULE_END
Definition: restructs.hpp:305
SmsiFuncTypePtr
SmsiFuncType * SmsiFuncTypePtr
Definition: restructs.hpp:233
size
long long size
Definition: filesystem.cpp:102
PI_CHAR
@ PI_CHAR
Definition: restructs.hpp:177
label
Definition: restructs.hpp:288
PI_INDEX
@ PI_INDEX
Definition: restructs.hpp:189
N_CONSTRUCTOR_DEF
@ N_CONSTRUCTOR_DEF
Definition: restructs.hpp:151
MsParamArray
Definition: msParam.h:84
token::exprloc
long exprloc
Definition: restructs.hpp:297
str_list
Definition: restructs.hpp:237
RuleEngineEventParam
struct ruleEngineEventParam RuleEngineEventParam
T_ERROR
@ T_ERROR
Definition: restructs.hpp:157
N_AVU
@ N_AVU
Definition: restructs.hpp:139
newRuleSet
RuleSet * newRuleSet(Region *r)
Definition: restructs.cpp:377
newMsParamArray
msParamArray_t * newMsParamArray()
Definition: restructs.cpp:266
N_RULESET
@ N_RULESET
Definition: restructs.hpp:142
C_BASE_TYPE
@ C_BASE_TYPE
Definition: restructs.hpp:194
newStringRes
Res * newStringRes(Region *r, const char *s)
Definition: restructs.cpp:235
node::nodeType
int nodeType
Definition: restructs.hpp:245
PI_PISTR
@ PI_PISTR
Definition: restructs.hpp:179
type
int type
Definition: filesystem.cpp:103
APPLY_RULE_BEGIN
@ APPLY_RULE_BEGIN
Definition: restructs.hpp:309
createErrorNode
Node * createErrorNode(char *error, Label *exprloc, Region *r)
Definition: restructs.cpp:480
RuleType
enum ruleType RuleType
ruleIndexList::ruleName
char * ruleName
Definition: restructs.hpp:221
T_SUCCESS
@ T_SUCCESS
Definition: restructs.hpp:170
createUnaryFunctionNode
Node * createUnaryFunctionNode(char *fn, Node *a, Label *exprloc, Region *r)
Definition: restructs.cpp:410
N_DATA_DEF
@ N_DATA_DEF
Definition: restructs.hpp:153
newFuncTypeVarArg
ExprType * newFuncTypeVarArg(int arity, int vararg, ExprType **paramTypes, ExprType *elemType, Region *r)
Definition: restructs.cpp:85
N_RULE
@ N_RULE
Definition: restructs.hpp:150
Token
struct token Token
newRuleIndexListFD
FunctionDesc * newRuleIndexListFD(RuleIndexList *ruleIndexList, ExprType *, Region *r)
Definition: restructs.cpp:357
rodsLong_t
long long rodsLong_t
Definition: rodsType.h:32
T_FLEX
@ T_FLEX
Definition: restructs.hpp:164
RuleEngineEvent
enum ruleEngineEvent RuleEngineEvent
EXEC_ACTION_BEGIN
@ EXEC_ACTION_BEGIN
Definition: restructs.hpp:303
SmsiFuncType
Res *() SmsiFuncType(Node **, int, Node *, ruleExecInfo_t *, int, Env *, rError_t *, Region *)
Definition: restructs.hpp:232
PI_STR
@ PI_STR
Definition: restructs.hpp:178
RK_REL
@ RK_REL
Definition: restructs.hpp:264
ruleSet
Definition: restructs.hpp:282