DCL 4.1
Loading...
Searching...
No Matches
IBField.cpp File Reference
#include <dcl/Config.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <ibase.h>
#include <dcl/Object.h>
#include <dcl/Numeric.h>
#include <dcl/BytesOutputStream.h>
#include <dcl/Charset.h>
#include <dcl/SQLCore.h>
#include "IBConnection.h"
#include "IBQuery.h"
#include "IBField.h"

Go to the source code of this file.

Classes

union  __INT_TYPE

Macros

#define __SQLTYPE_IS(__sqltype)
#define SQLTYPE_NAME(_dataType, name)

Functions

__DCL_BEGIN_NAMESPACE IMPLEMENT_CLASSINFO (IBField, SQL::Field) IBField
const wchar_t * __dataTypeName (const XSQLVAR *_sqlvar)
int __ABS (int n)
size_t __MIN (size_t x, size_t y)

Macro Definition Documentation

◆ __SQLTYPE_IS

#define __SQLTYPE_IS ( __sqltype)
Value:
((__sqlvar->sqltype & ~1) == __sqltype)

◆ SQLTYPE_NAME

#define SQLTYPE_NAME ( _dataType,
name )
Value:
case _dataType : return L ## name

Definition at line 209 of file IBField.cpp.

Function Documentation

◆ __ABS()

int __ABS ( int n)
inline

Definition at line 1092 of file IBField.cpp.

1092 {
1093 return n < 0 ? -n : n;
1094}
void CharsetConvertException *size_t n
Definition SQLField.cpp:254

◆ __dataTypeName()

const wchar_t * __dataTypeName ( const XSQLVAR * _sqlvar)

Definition at line 211 of file IBField.cpp.

212{
213 switch(_sqlvar->sqltype & ~1) {
214 case SQL_SHORT:
215 case SQL_LONG:
216 case SQL_INT64: {
217 if (_sqlvar->sqlscale) {
218 switch (_sqlvar->sqltype & ~1) {
219 SQLTYPE_NAME(SQL_SHORT, "DECIMAL16");
220 SQLTYPE_NAME(SQL_LONG, "DECIMAL32");
221 SQLTYPE_NAME(SQL_INT64, "DECIMAL64");
222 }
223 }
224 else {
225 switch (_sqlvar->sqltype & ~1) {
226 SQLTYPE_NAME(SQL_SHORT, "SMALLINT");
227 SQLTYPE_NAME(SQL_LONG, "INTEGER");
228 SQLTYPE_NAME(SQL_INT64, "INT64");
229 }
230 }
231 }
232 SQLTYPE_NAME(SQL_FLOAT, "FLOAT");
233 SQLTYPE_NAME(SQL_DOUBLE, "DOUBLE");
234 SQLTYPE_NAME(SQL_TYPE_DATE, "DATE");
235 SQLTYPE_NAME(SQL_TYPE_TIME, "TIME");
236 SQLTYPE_NAME(SQL_TIMESTAMP, "TIMESTAMP");
237#if defined(FIREBIRD_IBASE_H) && FB_API_VER >= 40
238 SQLTYPE_NAME(SQL_TIME_TZ_EX, "TIME WITH TIMEZONE");
239 SQLTYPE_NAME(SQL_TIMESTAMP_TZ_EX, "TIMESTAMP WITH TIMEZONE");
240#endif
241 SQLTYPE_NAME(SQL_TEXT, "CHAR");
242 SQLTYPE_NAME(SQL_VARYING, "VARCHAR");
243 case SQL_BLOB: {
244 if (_sqlvar->sqlsubtype == 1)
245 return L"BLOB(TEXT)";
246 else
247 return L"BLOB";
248 }
249 }
250 return L"Unknown Type: Driver is not Support";
251}
#define SQLTYPE_NAME(_dataType, name)
Definition IBField.cpp:209

◆ __MIN()

size_t __MIN ( size_t x,
size_t y )
inline

Definition at line 1287 of file IBField.cpp.

1288{
1289 return x < y ? x : y;
1290}

◆ IMPLEMENT_CLASSINFO()

__DCL_BEGIN_NAMESPACE IMPLEMENT_CLASSINFO ( IBField ,
SQL::Field  )

Definition at line 29 of file IBField.cpp.

34 : Field(NULL)
35{
36 __sqlvar = NULL;
37 __indicator = 0; /* NOT NULL의 경우 체크하지 않는다. 때문에 초기값은
38 NOT NULL (0) 으로 둔다. */
39
40 __maxDataSize = 0;
41 __dataSize = 0;
42}
#define NULL
Definition Config.h:340