public: \
virtual const char* defaultName() const { return #tb ;} \
tb& operator[](const dbQueryClause& rhs) { search(rhs); return *this; } \
tb& operator[](unsigned long index) { gotoRecord(index); return *this;} \
tb& operator[](long index) { assert(index>=0); gotoRecord(index); return *this;} \
virtual dbTable* cloneTableWithoutSelection() const { return cloneTableConst(selNotShared); } \
virtual dbTable* cloneTableSharingSelection() const { return cloneTableConst(selShared); } \
virtual dbTable* cloneTbleWithCachNoSelection() const { return cloneTableConst(selNotSharedCacheCopied); } \
tb* cloneWithoutSelection() const { return (tb*) cloneTableConst(selNotShared); } \
tb* cloneSharingSelection() const { return (tb*) cloneTableConst(selShared); } \
tb* cloneWithCachNoSelection() const { return (tb*) cloneTableConst(selNotSharedCacheCopied); } \
tb& operator-(tb& rhs) { dbTable::difference_with(rhs); return *this; } \
tb& difference_with(tb& rhs) { dbTable::difference_with(rhs); return *this; } \
tb& operator&(tb& rhs) { dbTable::intersection_with(rhs); return *this; } \
tb& intersection_with(tb& rhs) { dbTable::intersection_with(rhs); return *this; } \
tb& operator|(tb& rhs) { dbTable::union_with(rhs); return *this; } \
tb& operator+(tb& rhs) { dbTable::union_with(rhs); return *this; } \
tb& union_with(tb& rhs) { dbTable::union_with(rhs); return *this; } \
tb& operator=(const tb& rhs) { if (&rhs!=this) copyRecFrom(&rhs); return *this; } \
friend std::ostream& operator<<(std::ostream& os, tb& tbl) {tbl.extract(os); return os;} \
friend std::ostream& operator<<(std::ostream& os, tb* tbl) {tbl->extract(os); return os;} \
friend std::istream& operator>>(std::istream& is, tb& tbl) {tbl.insert(is); return is;} \
friend std::istream& operator>>(std::istream& is, tb* tbl) {tbl->insert(is); return is;}