00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #pragma once
00022
00023 namespace drizzled
00024 {
00025
00026 namespace table
00027 {
00028
00029 class Temporary : public Table
00030 {
00031 instance::Singular *_share;
00033 public:
00034 Temporary(const identifier::Table::Type type_arg,
00035 const identifier::Table &identifier,
00036 char *path_arg, uint32_t path_length_arg) :
00037 Table()
00038 {
00039 _share= new instance::Singular(type_arg, identifier, path_arg, path_length_arg);
00040 }
00041
00042 ~Temporary()
00043 {
00044 }
00045
00046 virtual const TableShare *getShare() const { assert(_share); return _share; }
00047 virtual TableShare *getMutableShare() { assert(_share); return _share; }
00048 virtual bool hasShare() const { return _share ? true : false ; }
00049 virtual void setShare(TableShare *new_share)
00050 {
00051 _share= static_cast<instance::Singular *>(new_share);
00052 }
00053
00054 void release(void)
00055 {
00056 delete _share;
00057 _share= NULL;
00058 }
00059 };
00060
00061
00062 }
00063 }
00064