#include <SmacqGraph-interface.h>
Inheritance diagram for SmacqGraph:
Parent/Child Relationships | |
void | join (SmacqGraph *) |
Attach the specified graph onto the tail(s) of the graph(s). | |
void | join (SmacqGraphContainer *, bool dofree=false) |
Attach the specified graph onto the tail(s) of the graph(s). | |
void | replace (SmacqGraphContainer *) |
Modify parent(s) and children to replace myself with the specified graph. | |
void | dynamic_insert (SmacqGraph *, DTS *) |
Insert a new graph between my parents and me. | |
void | add_child (SmacqGraph *child, unsigned int channel=0) |
Add a new graph as one of my children. | |
void | add_child (SmacqGraphContainer *child, unsigned int channel=0) |
Establish a parent/child relationship on the specified channel. | |
void | remove_parent (SmacqGraph *parent) |
Remove the specified graph from the list of this graph's parents. | |
void | remove_child (int, int) |
void | remove_child (SmacqGraph *) |
void | replace_child (int, int, SmacqGraph *newchild) |
void | replace_child (int, int, SmacqGraphContainer *newchild) |
void | replace_child (SmacqGraph *oldchild, SmacqGraph *newchild) |
void | replace_child (SmacqGraph *oldchild, SmacqGraphContainer *newchild) |
void | remove_children () |
bool | live_children () |
bool | live_parents () |
const std::vector< PointerVector< SmacqGraph_ptr > > | getChildren () const |
void | move_children (SmacqGraph *from, SmacqGraph *to, bool addvector=false) |
Factories | |
SmacqGraph * | new_child (int argc, char **argv) |
Construct a new graph using the given arguments. The new graph is automatically attached as a child of the current graph. | |
SmacqGraph * | clone (SmacqGraph *newParent) |
Recursively clone a graph. The clone is made a child of newParent, unless newParent is NULL. | |
SmacqGraphContainer * | newQuery (DTS *, SmacqScheduler *, int argc, char **argv) |
Parse a query and construct a new graph to execute it. | |
Public Member Functions | |
SmacqGraph (int argc, char **argv) | |
SmacqGraph * | init (DTS *, SmacqScheduler *) |
This method must be called before a graph is used. The graph may be modified as a side-effect, so the caller should replace the called object with the return pointer. | |
void | print (FILE *fh, int indent) |
Print the graph. | |
std::string | print_query () |
Print the graph in re-parsable syntax. | |
bool | distribute_children (DTS *) |
Attempt to distribute children of this graph. Return true iff successful. | |
Invariant Optimization | |
SmacqGraph * | getInvariants (DTS *, SmacqScheduler *, DtsField &) |
Return a subgraph containing only invariants over the specified field. The subgraph will contain only stateless filters that are applied to all objects in the graph (e.g. not within an OR) and that do NOT use the specified field. The returned graph is newly allocated. | |
SmacqGraph * | getChildInvariants (DTS *, SmacqScheduler *, DtsField &) |
Same as getInvariants() but operates only on the graph's children. | |
Static Public Member Functions | |
void | do_shutdown (SmacqGraph *f) |
Shutdown a graph node (will propagate to parents and children). The node may be destroyed by this call. | |
Public Attributes | |
runq< DtsObject > | inputq |
Queue of input items to consume. | |
Friends | |
void | intrusive_ptr_add_ref (SmacqGraph *o) |
void | intrusive_ptr_release (SmacqGraph *o) |
Decrement the reference count. If the refcount is 0, then clean-up references and destroy. |
|
If the module is vectorized, then add a new vector element; otherwise add it to channel 0 |