A platform for high-performance distributed tool and library development written in C++. It can be deployed in two different cluster modes: standalone or distributed. API for v0.5.0, released on June 13, 2018.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
ParserHelperFunctions.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * *
3  * Copyright 2018 Rice University *
4  * *
5  * Licensed under the Apache License, Version 2.0 (the "License"); *
6  * you may not use this file except in compliance with the License. *
7  * You may obtain a copy of the License at *
8  * *
9  * http://www.apache.org/licenses/LICENSE-2.0 *
10  * *
11  * Unless required by applicable law or agreed to in writing, software *
12  * distributed under the License is distributed on an "AS IS" BASIS, *
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
14  * See the License for the specific language governing permissions and *
15  * limitations under the License. *
16  * *
17  *****************************************************************************/
18 
19 #ifndef IR_HEADERS_H
20 #define IR_HEADERS_H
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 /******************************************************/
27 // VARIOUS STRUCTURES ASSOCIATED WITH PRODCUTION RULES
28 /******************************************************/
29 
30 struct AttList;
31 struct AtomicComputation;
33 struct LogicalPlan;
35 struct TupleSpec;
36 struct KeyValueList;
37 
38 /***************************************************************************/
39 // C FUNCTIONS TO MANIPULATE THE VARIOUS STRUCTURES PRODUCED BY THE PARSER
40 /***************************************************************************/
42  struct TupleSpec *input,
43  struct TupleSpec *projection,
44  char *nodeName,
45  char *opName,
46  struct KeyValueList *useMe);
47 
48 struct KeyValueList *makeKeyValueList (char *keyName, char *valueName);
49 struct KeyValueList *pushBackKeyValue (struct KeyValueList *addToMe, char *keyName, char *valueName);
51 struct AtomicComputation *makeAggWithList (struct TupleSpec *output, struct TupleSpec *input, char *nodeName, struct KeyValueList *useMe);
52 struct AtomicComputation *makePartitionWithList (struct TupleSpec *output, struct TupleSpec *input, char *nodeName, struct KeyValueList *useMe);
53 struct AtomicComputation *makeFilterWithList (struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName, struct KeyValueList *useMe);
54 struct AtomicComputation *makeJoinWithList (struct TupleSpec *output, struct TupleSpec *lInput, struct TupleSpec *lProjection,
55  struct TupleSpec *rInput, struct TupleSpec *rProjection, char *opName, struct KeyValueList *useMe);
56 struct AtomicComputation *makeHashLeftWithList (struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName, char *opName, struct KeyValueList *useMe);
57 struct AtomicComputation *makeHashRightWithList (struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName, char *opName, struct KeyValueList *useMe);
58 struct AtomicComputation *makeHashOneWithList (struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName, struct KeyValueList *useMe);
59 struct AtomicComputation *makeFlattenWithList (struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName, struct KeyValueList *useMe);
60 struct AtomicComputation *makeScanWithList (struct TupleSpec *output, char *dbName, char *setName, char *nodeName, struct KeyValueList *useMe);
61 struct AtomicComputation *makeOutputWithList (struct TupleSpec *output, struct TupleSpec *input, char *dbName, char *setName, char *nodeName, struct KeyValueList *useMe);
62 struct AttList* makeAttList(char* fromMe);
63 struct TupleSpec* makeEmptyTupleSpec(char* setName);
64 struct AttList* pushBackAttribute(struct AttList* addToMe, char* fromMe);
66 struct TupleSpec* makeTupleSpec(char* setName, struct AttList* useMe);
68  struct AtomicComputation* addMe);
71  struct TupleSpec* output, struct TupleSpec* input, char* dbName, char* setName, char* nodeName);
73  char* dbName,
74  char* setName,
75  char* nodeName);
77  struct TupleSpec* input,
78  char* nodeName);
80  struct TupleSpec* input,
81  char* nodeName);
83  struct TupleSpec* input,
84  struct TupleSpec* projection,
85  char* nodeName,
86  char* opName);
88  struct TupleSpec* input,
89  struct TupleSpec* projection,
90  char* nodeName);
91 
93  struct TupleSpec* lInput,
94  struct TupleSpec* lProjection,
95  struct TupleSpec* rInput,
96  struct TupleSpec* rProjection,
97  char* opName);
98 
99 
101  struct TupleSpec* input,
102  struct TupleSpec* projection,
103  char* nodeName,
104  char* opName);
106  struct TupleSpec* input,
107  struct TupleSpec* projection,
108  char* nodeName,
109  char* opName);
111  struct TupleSpec* input,
112  struct TupleSpec* projection,
113  char* nodeName);
115  struct TupleSpec* input,
116  struct TupleSpec* projection,
117  char* nodeName);
118 #ifdef __cplusplus
119 }
120 #endif
121 
122 #endif
struct AtomicComputation * makeApply(struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName, char *opName)
struct TupleSpec * makeEmptyTupleSpec(char *setName)
struct AtomicComputation * makeAgg(struct TupleSpec *output, struct TupleSpec *input, char *nodeName)
struct AtomicComputation * makeOutput(struct TupleSpec *output, struct TupleSpec *input, char *dbName, char *setName, char *nodeName)
struct AtomicComputation * makeFilter(struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName)
struct AtomicComputation * makePartition(struct TupleSpec *output, struct TupleSpec *input, char *nodeName)
struct KeyValueList * makeEmptyKeyValueList()
struct AtomicComputation * makeAggWithList(struct TupleSpec *output, struct TupleSpec *input, char *nodeName, struct KeyValueList *useMe)
struct AtomicComputation * makeHashLeftWithList(struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName, char *opName, struct KeyValueList *useMe)
struct AtomicComputation * makeJoinWithList(struct TupleSpec *output, struct TupleSpec *lInput, struct TupleSpec *lProjection, struct TupleSpec *rInput, struct TupleSpec *rProjection, char *opName, struct KeyValueList *useMe)
struct AtomicComputation * makeHashOne(struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName)
struct AttList * makeAttList(char *fromMe)
struct AtomicComputation * makePartitionWithList(struct TupleSpec *output, struct TupleSpec *input, char *nodeName, struct KeyValueList *useMe)
struct AtomicComputation * makeJoin(struct TupleSpec *output, struct TupleSpec *lInput, struct TupleSpec *lProjection, struct TupleSpec *rInput, struct TupleSpec *rProjection, char *opName)
struct AtomicComputation * makeScanWithList(struct TupleSpec *output, char *dbName, char *setName, char *nodeName, struct KeyValueList *useMe)
AtomicComputationList computations
Definition: LogicalPlan.h:42
struct AtomicComputation * makeFlatten(struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName)
struct AtomicComputation * makeHashOneWithList(struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName, struct KeyValueList *useMe)
struct TupleSpec * makeTupleSpec(char *setName, struct AttList *useMe)
struct AtomicComputation * makeHashRight(struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName, char *opName)
struct LogicalPlan * makePlan(struct AtomicComputationList *computations)
std::string setName
Definition: TupleSpec.h:37
struct AtomicComputation * makeHashLeft(struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName, char *opName)
struct AtomicComputation * makeFlattenWithList(struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName, struct KeyValueList *useMe)
struct KeyValueList * makeKeyValueList(char *keyName, char *valueName)
struct AtomicComputationList * pushBackAtomicComputation(struct AtomicComputationList *input, struct AtomicComputation *addMe)
struct AtomicComputation * makeScan(struct TupleSpec *output, char *dbName, char *setName, char *nodeName)
struct AtomicComputation * makeApplyWithList(struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName, char *opName, struct KeyValueList *useMe)
struct KeyValueList * pushBackKeyValue(struct KeyValueList *addToMe, char *keyName, char *valueName)
struct AtomicComputation * makeFilterWithList(struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName, struct KeyValueList *useMe)
struct AttList * pushBackAttribute(struct AttList *addToMe, char *fromMe)
struct AtomicComputation * makeOutputWithList(struct TupleSpec *output, struct TupleSpec *input, char *dbName, char *setName, char *nodeName, struct KeyValueList *useMe)
struct AtomicComputationList * makeAtomicComputationList(struct AtomicComputation *fromMe)
struct AtomicComputation * makeHashRightWithList(struct TupleSpec *output, struct TupleSpec *input, struct TupleSpec *projection, char *nodeName, char *opName, struct KeyValueList *useMe)