Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Class Members

SmacqGraph Class Reference

#include <SmacqGraph-interface.h>

Inheritance diagram for SmacqGraph:

Inheritance graph
[legend]
Collaboration diagram for SmacqGraph:

Collaboration graph
[legend]
List of all members.

Detailed Description

A graph of SmacqGraphNode nodes.


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

SmacqGraphnew_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.

SmacqGraphclone (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)
SmacqGraphinit (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
SmacqGraphgetInvariants (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.

SmacqGraphgetChildInvariants (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< DtsObjectinputq
 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.


Member Function Documentation

void SmacqGraph::move_children SmacqGraph from,
SmacqGraph to,
bool  addvector = false
[inline, static]
 

If the module is vectorized, then add a new vector element; otherwise add it to channel 0


The documentation for this class was generated from the following files:
Generated on Thu May 4 10:32:17 2006 for SMACQ by doxygen 1.3.5