1 #ifndef BZS_DB_PROTOCOL_TDAP_CLIENT_FIELDS_H
2 #define BZS_DB_PROTOCOL_TDAP_CLIENT_FIELDS_H
23 #include <boost/shared_ptr.hpp>
38 #define MEM_ALLOC_TYPE_NONE 0
39 #define MEM_ALLOC_TYPE_ONE 1
40 #define MEM_ALLOC_TYPE_ARRAY 2
55 unsigned char m_allocType;
57 virtual void releaseMemory() = 0;
61 refarymem(
const refarymem& r):m_parent(NULL),
62 m_child(0), m_allocType(MEM_ALLOC_TYPE_NONE){}
64 virtual ~refarymem(){}
66 refarymem& operator=(
const refarymem& r)
71 inline int allocType() {
return m_allocType;}
75 refarymem():m_parent(NULL), m_child(0), m_allocType(MEM_ALLOC_TYPE_NONE){}
77 inline void setAllocParent(refarymem* v)
80 m_child = (v != NULL);
83 void setAllocTypeThis(
int v) { m_allocType = (
unsigned char)v; }
105 int refcount()
const {
return m_refCount; }
107 bool tryFastRelease(
int totalRefCount)
109 if (!m_child && (m_refCount == totalRefCount))
129 virtual unsigned char* ptr(
int index)
const = 0;
134 bool m_invalidRecord;
135 virtual table* tbptr()
const {
return NULL; }
137 void throwIndexError(
short index)
const
141 tbptr()->
setStat(STATUS_INVARID_FIELD_IDX);
147 _stprintf_s(tmp, 100, _T(
"field access index %d of %s"), index,
148 tbptr() ? tbptr()->tableDef()->tableName() : _T(
""));
153 explicit inline fieldsBase(fielddefs* fns)
154 : refarymem(), m_fns(fns), m_invalidRecord(false)
158 inline void setFielddefs(fielddefs* def) { m_fns = def; }
160 virtual void removeLastMemBlock(){};
162 virtual void setRecordData(autoMemory* am,
unsigned char* ptr,
size_t size,
163 short* endFieldIndex,
bool owner =
false){};
175 return field(ptr((
short)index), (*m_fns)[(
short)index], m_fns);
180 if (m_fns->checkIndex(index))
181 return field(ptr((
short)index), (*m_fns)[(
short)index], m_fns);
183 throwIndexError(index);
184 return field(NULL, dummyFd(), m_fns);
194 short index = m_fns->indexByName(name);
198 inline size_t size()
const {
return m_fns->size(); }
204 int index = m_fns->indexByName(name);
210 return m_fns->indexByName(name);
215 virtual void clear() = 0;
228 void releaseMemory(){}
230 inline unsigned char* ptr(
int index)
const
232 return (
unsigned char*)m_tb.
data();
235 table* tbptr()
const {
return &m_tb; }
267 #endif // BZS_DB_PROTOCOL_TDAP_CLIENT_FIELDS_H
bool isInvalidRecord() const
Definition: fields.h:171
const _TCHAR * protocol(const _TCHAR *uri)
Definition: uri.h:42
const fielddefs * fieldDefs() const
Definition: fields.h:213
friend class multiRecordAlocatorImple
Definition: fields.h:125
virtual ~fieldsBase()
Definition: fields.h:167
field fd(const _TCHAR *name) const
Definition: fields.h:202
const void * data() const
Definition: nsTable.h:158
field operator[](const _TCHAR *name) const
Definition: fields.h:187
short getCurProcFieldCount() const
static void throwError(const _TCHAR *caption, short statusCode)
field operator[](const std::_tstring &name) const
Definition: fields.h:192
field getFieldNoCheck(short index) const
Definition: fields.h:173
field inproc_fd(short index) const
Definition: fields.h:255
boost::shared_ptr< table > table_ptr
Definition: fields.h:219
friend class recordsetImple
Definition: fields.h:126
フィールドコレクションクラス
Definition: fields.h:224
row * row_ptr
Definition: fields.h:221
boost::shared_ptr< database > database_ptr
Definition: fields.h:218
field operator[](short index) const
Definition: fields.h:178
テーブルアクセスクラス (nocopyable)
Definition: table.h:89
void setStat(short_td v)
Definition: nsTable.h:164
fielddef のコレクションクラス
Definition: field.h:73
size_t size() const
Definition: fields.h:198
recordset フィルタリングクエリー
Definition: groupQuery.h:95
fields(table &tb)
Definition: fields.h:242
void setInvalidRecord(bool v)
Definition: fields.h:169
フィールドコレクションのベースクラス
Definition: fields.h:123
void clear()
Definition: fields.h:249
fieldsBase row
Definition: fields.h:220
short getCurProcFieldIndex(short index) const
field fd(short index) const
Definition: fields.h:200
typedef short(__STDCALL *schemaMgrFn)(database *db)
short inproc_size() const
Definition: fields.h:253
table & tb() const
Definition: fields.h:251
short indexByName(const _TCHAR *name) const
Definition: fields.h:208
fields(table_ptr tb)
Definition: fields.h:244
フィールドアクセスクラス
Definition: field.h:123