#ifndef __TABLEREF_H__ #define __TABLEREF_H__ #include <stdio.h> namespace hsql { class SelectStatement; /** * TableRef * Holds reference to tables. Can be either table names or a select statement. */ typedef enum { kTableName, kTableSelect, kTableJoin, kTableCrossProduct } TableRefType; typedef enum { kJoinInner, kJoinOuter, kJoinLeft, kJoinRight } JoinType; typedef struct TableRef TableRef; struct TableRef { TableRef(TableRefType type) : type(type), name(NULL), alias(NULL), select(NULL), list(NULL), left(NULL), right(NULL), join_condition(NULL) {} virtual ~TableRef(); // defined in destructors.cpp TableRefType type; char* name; char* alias; SelectStatement* select; List<TableRef*>* list; // Join memberbs TableRef* left; TableRef* right; JoinType join_type; Expr* join_condition; }; } // namespace hsql #endif