486 lines
17 KiB
C
486 lines
17 KiB
C
/* srpersist.h */
|
|
|
|
#define SRP_PATCH_LEVEL ""
|
|
#define SRP_VERSION MZSCHEME_VERSION
|
|
|
|
#define sizeray(x) (sizeof(x)/sizeof(*x))
|
|
|
|
#define sql_return(v,retcode,f) if (retcode == success) \
|
|
{ return v; } \
|
|
else if (retcode == with_info) \
|
|
{ return raise_info_exn(v,f); } \
|
|
else if (retcode == need_data) \
|
|
{ return raise_need_data_exn(v,f); } \
|
|
else { \
|
|
scheme_signal_error("Unknown return code %X from %s",retcode,f); \
|
|
return scheme_void; \
|
|
}
|
|
|
|
#define SRP_PRIM_DECL(f) Scheme_Object *f(int,Scheme_Object **)
|
|
|
|
#ifdef NO_SQLUCODE
|
|
#define SQL_WCHAR (-8)
|
|
#define SQL_WVARCHAR (-9)
|
|
#define SQL_WLONGVARCHAR (-10)
|
|
#define SQL_C_WCHAR SQL_WCHAR
|
|
#endif
|
|
|
|
#define namedConstSearch(s,array) \
|
|
(SRP_NAMED_CONSTANT *) \
|
|
bsearch(s,array,sizeray(array),sizeof(*array), \
|
|
(int (*)(const void *,const void *))keyConstCmp)
|
|
|
|
#define namedSmallConstSearch(s,array) \
|
|
(SRP_NAMED_SMALL_CONSTANT *) \
|
|
bsearch(s,array,sizeray(array),sizeof(*array), \
|
|
(int (*)(const void *,const void *))keySmallConstCmp)
|
|
|
|
#define namedTypedConstSearch(s,array) \
|
|
(SRP_NAMED_TYPED_CONSTANT *) \
|
|
bsearch(s,array,sizeray(array),sizeof(*array), \
|
|
(int (*)(const void *,const void *))keyTypedConstCmp)
|
|
|
|
#define namedBitsDictSearch(s,array,asize) \
|
|
(SRP_NAMED_BITS_DICT *) \
|
|
bsearch(s,array,asize,sizeof(*array), \
|
|
(int (*)(const void *,const void *))keyBitsDictCmp)
|
|
|
|
#define namedConstSort(array) \
|
|
qsort(array,sizeray(array),sizeof(array[0]), \
|
|
(int (*)(const void *,const void *))namedConstCmp)
|
|
|
|
#define namedTypedConstSort(array) \
|
|
qsort(array,sizeray(array),sizeof(array[0]), \
|
|
(int (*)(const void *,const void *))namedTypedConstCmp)
|
|
|
|
#define namedBitsDictSort(array) \
|
|
qsort(array,sizeray(array),sizeof(array[0]), \
|
|
(int (*)(const void *,const void *))namedBitsDictCmp)
|
|
|
|
#define NO_BIT_NAME "sql-unknown-number"
|
|
|
|
#if (ODBCVER >= 0x0300)
|
|
typedef SQLUINTEGER *(*INTERVAL_FIELD_ACCESSOR)(SQL_INTERVAL_STRUCT *);
|
|
#endif
|
|
|
|
typedef enum _return_code_ {
|
|
success,with_info,need_data
|
|
} RETURN_CODE;
|
|
|
|
typedef struct _buffer_tbl_entry_ {
|
|
void *address;
|
|
SRP_SQL_BUFFER *buffer;
|
|
struct _buffer_tbl_entry_ *next;
|
|
} SRP_BUFFER_TBL_ENTRY;
|
|
|
|
#define BUFFER_TBL_SIZE 97
|
|
|
|
typedef struct _srp_prim_ {
|
|
Scheme_Object *(*c_fun)(int argc,Scheme_Object **);
|
|
char *name;
|
|
short minargs;
|
|
short maxargs;
|
|
} SRP_PRIM;
|
|
|
|
typedef struct _srp_struct_ {
|
|
char *name;
|
|
Scheme_Object ***pStructFuns;
|
|
char **fields;
|
|
int num_fields;
|
|
char **names;
|
|
int name_count;
|
|
} SRPSTRUCT;
|
|
|
|
typedef struct _named_constant_ {
|
|
char *scheme_name;
|
|
SQLINTEGER val;
|
|
} SRP_NAMED_CONSTANT;
|
|
|
|
typedef struct _named_small_constant_ {
|
|
char *scheme_name;
|
|
SQLSMALLINT val;
|
|
} SRP_NAMED_SMALL_CONSTANT;
|
|
|
|
typedef enum _const_type_ {
|
|
sqlinteger,
|
|
sqlsmallint,
|
|
sqlusmallint,
|
|
sqluinteger,
|
|
sqlbool,
|
|
namedusmallint,
|
|
namedinteger,
|
|
possiblynamedinteger,
|
|
nameduinteger,
|
|
possiblynameduinteger,
|
|
boolstring,
|
|
string,
|
|
bitmask,
|
|
henv,
|
|
hdbc,
|
|
hstmt,
|
|
hdesc,
|
|
sqlreturn,
|
|
opparms,
|
|
sqlindicator,
|
|
rowstatus,
|
|
arraystatus,
|
|
bindingoffset,
|
|
rowsprocessed,
|
|
octetlength,
|
|
sqlboxeduint,
|
|
sqlbuffer
|
|
} SRP_CONST_TYPE;
|
|
|
|
typedef struct _named_typed_constant_ {
|
|
char *scheme_name;
|
|
SQLINTEGER val;
|
|
SRP_CONST_TYPE type;
|
|
} SRP_NAMED_TYPED_CONSTANT;
|
|
|
|
typedef struct named_bits_dict_ {
|
|
char *scheme_name;
|
|
SRP_NAMED_CONSTANT *bits;
|
|
size_t numBits;
|
|
} SRP_NAMED_BITS_DICT;
|
|
|
|
/* misc */
|
|
|
|
char *intToHexString(int);
|
|
char *odbc_version(void);
|
|
Scheme_Object *raise_not_implemented(char *);
|
|
|
|
/* type-and-value predicates */
|
|
|
|
BOOL isSmallInt(Scheme_Object *);
|
|
BOOL isUnsignedSmallInt(Scheme_Object *);
|
|
BOOL isUnsignedInt(Scheme_Object *);
|
|
BOOL isCharInt(Scheme_Object *);
|
|
BOOL isUnsignedCharInt(Scheme_Object *);
|
|
|
|
/* buffer procedures */
|
|
|
|
Scheme_Object *readCharBuffer(char *,long,long,long);
|
|
void writeCharBuffer(char *,Scheme_Object *,long,long);
|
|
#if (ODBCVER >= 0x0300)
|
|
Scheme_Object *readWideCharBuffer(wchar_t *,long,long,long);
|
|
void writeWideCharBuffer(wchar_t *,Scheme_Object *,long,long);
|
|
#endif
|
|
Scheme_Object *readLongBuffer(long *,long,long);
|
|
void writeLongBuffer(long *,Scheme_Object *,long);
|
|
Scheme_Object *readULongBuffer(unsigned long *buffer,long,long);
|
|
void writeULongBuffer(unsigned long *,Scheme_Object *,long);
|
|
Scheme_Object *readShortBuffer(short *,long,long);
|
|
void writeShortBuffer(short *,Scheme_Object *,long);
|
|
Scheme_Object *readUShortBuffer(unsigned short *buffer,long,long);
|
|
void writeUShortBuffer(unsigned short *,Scheme_Object *,long);
|
|
Scheme_Object *readFloatBuffer(float *,long,long);
|
|
void writeFloatBuffer(float *,Scheme_Object *,long);
|
|
Scheme_Object *readDoubleBuffer(double *,long,long);
|
|
void writeDoubleBuffer(double *,Scheme_Object *,long);
|
|
|
|
#if (ODBCVER >= 0x0300)
|
|
Scheme_Object *readNumericBuffer(SQL_NUMERIC_STRUCT *,long,long);
|
|
void writeNumericBuffer(SQL_NUMERIC_STRUCT *,Scheme_Object *,long);
|
|
Scheme_Object *readDateBuffer(SQL_DATE_STRUCT *buffer,long,long);
|
|
void writeDateBuffer(SQL_DATE_STRUCT *,Scheme_Object *,long);
|
|
Scheme_Object *readTimeBuffer(SQL_TIME_STRUCT *buffer,long,long);
|
|
void writeTimeBuffer(SQL_TIME_STRUCT *,Scheme_Object *,long);
|
|
Scheme_Object *readTimeStampBuffer(SQL_TIMESTAMP_STRUCT *buffer,long,long);
|
|
void writeTimeStampBuffer(SQL_TIMESTAMP_STRUCT *,Scheme_Object *,long);
|
|
#else
|
|
Scheme_Object *readDateBuffer(DATE_STRUCT *buffer,long,long);
|
|
void writeDateBuffer(DATE_STRUCT *,Scheme_Object *,long);
|
|
Scheme_Object *readTimeBuffer(TIME_STRUCT *buffer,long,long);
|
|
void writeTimeBuffer(TIME_STRUCT *,Scheme_Object *,long);
|
|
Scheme_Object *readTimeStampBuffer(TIMESTAMP_STRUCT *buffer,long,long);
|
|
void writeTimeStampBuffer(TIMESTAMP_STRUCT *,Scheme_Object *,long);
|
|
#endif
|
|
|
|
#if (ODBCVER >= 0x0350)
|
|
Scheme_Object *readGuidBuffer(SQLGUID *buffer,long,long);
|
|
void writeGuidBuffer(SQLGUID *,Scheme_Object *,long);
|
|
#endif
|
|
|
|
#if (ODBCVER >= 0x0300)
|
|
Scheme_Object *readIntervalYearBuffer(SQL_INTERVAL_STRUCT *buffer,long,long);
|
|
Scheme_Object *readIntervalMonthBuffer(SQL_INTERVAL_STRUCT *buffer,long,long);
|
|
Scheme_Object *readIntervalDayBuffer(SQL_INTERVAL_STRUCT *buffer,long,long);
|
|
Scheme_Object *readIntervalHourBuffer(SQL_INTERVAL_STRUCT *buffer,long,long);
|
|
Scheme_Object *readIntervalMinuteBuffer(SQL_INTERVAL_STRUCT *buffer,long,long);
|
|
Scheme_Object *readIntervalSecondBuffer(SQL_INTERVAL_STRUCT *buffer,long,long);
|
|
Scheme_Object *readIntervalYearMonthBuffer(SQL_INTERVAL_STRUCT *buffer,long,long);
|
|
Scheme_Object *readIntervalDayHourBuffer(SQL_INTERVAL_STRUCT *buffer,long,long);
|
|
Scheme_Object *readIntervalDayMinuteBuffer(SQL_INTERVAL_STRUCT *buffer,long,long);
|
|
Scheme_Object *readIntervalDaySecondBuffer(SQL_INTERVAL_STRUCT *buffer,long,long);
|
|
Scheme_Object *readIntervalHourMinuteBuffer(SQL_INTERVAL_STRUCT *buffer,long,long);
|
|
Scheme_Object *readIntervalHourSecondBuffer(SQL_INTERVAL_STRUCT *buffer,long,long);
|
|
Scheme_Object *readIntervalMinuteSecondBuffer(SQL_INTERVAL_STRUCT *buffer,long,long);
|
|
#endif
|
|
|
|
Scheme_Object *readBinaryBuffer(char *buffer,long,long);
|
|
void writeBinaryBuffer(char *buffer,Scheme_Object *,long);
|
|
Scheme_Object *readBitBuffer(unsigned char *buffer,long,long);
|
|
void writeBitBuffer(char *buffer,Scheme_Object *,long);
|
|
Scheme_Object *readTinyBuffer(char *buffer,long,long);
|
|
void writeTinyBuffer(char *buffer,Scheme_Object *,long);
|
|
Scheme_Object *readUTinyBuffer(unsigned char *buffer,long,long);
|
|
void writeUTinyBuffer(unsigned char *buffer,Scheme_Object *,long);
|
|
|
|
#ifndef HASINT64
|
|
#define HASINT64 (WIN32 || __GNUC__)
|
|
#endif
|
|
|
|
#if WIN32
|
|
typedef __int64 SRPINT64;
|
|
typedef unsigned __int64 SRPUINT64;
|
|
#elif __GNUC__
|
|
typedef long long int SRPINT64;
|
|
typedef long long unsigned int SRPUINT64;
|
|
#endif
|
|
|
|
#if HASINT64
|
|
Scheme_Object *readBigIntBuffer(SRPINT64 *buffer,long,long);
|
|
void writeBigIntBuffer(SRPINT64 *buffer,Scheme_Object *,long);
|
|
Scheme_Object *readUBigIntBuffer(SRPUINT64 *buffer,long,long);
|
|
void writeUBigIntBuffer(SRPUINT64 *buffer,Scheme_Object *,long);
|
|
#endif
|
|
|
|
/* version info */
|
|
|
|
SRP_PRIM_DECL(srp_version);
|
|
SRP_PRIM_DECL(srp_odbc_version);
|
|
|
|
/* utilities */
|
|
|
|
SRP_PRIM_DECL(srp_make_length);
|
|
SRP_PRIM_DECL(srp_read_length);
|
|
SRP_PRIM_DECL(srp_free_length);
|
|
SRP_PRIM_DECL(srp_make_indicator);
|
|
SRP_PRIM_DECL(srp_read_indicator);
|
|
SRP_PRIM_DECL(srp_set_indicator);
|
|
SRP_PRIM_DECL(srp_free_indicator);
|
|
SRP_PRIM_DECL(srp_make_row_status);
|
|
SRP_PRIM_DECL(srp_read_row_status);
|
|
SRP_PRIM_DECL(srp_free_row_status);
|
|
SRP_PRIM_DECL(srp_make_boxed_uint);
|
|
SRP_PRIM_DECL(srp_read_boxed_uint);
|
|
SRP_PRIM_DECL(srp_free_boxed_uint);
|
|
SRP_PRIM_DECL(srp_read_op_parms);
|
|
SRP_PRIM_DECL(srp_make_buffer);
|
|
SRP_PRIM_DECL(srp_read_buffer);
|
|
SRP_PRIM_DECL(srp_write_buffer);
|
|
SRP_PRIM_DECL(srp_free_buffer);
|
|
|
|
/* from SQL.H */
|
|
|
|
SRP_PRIM_DECL(srp_SQLAllocConnect);
|
|
SRP_PRIM_DECL(srp_SQLAllocEnv);
|
|
SRP_PRIM_DECL(srp_SQLAllocHandle);
|
|
SRP_PRIM_DECL(srp_SQLAllocStmt);
|
|
SRP_PRIM_DECL(srp_SQLBindCol);
|
|
SRP_PRIM_DECL(srp_SQLBindParam);
|
|
SRP_PRIM_DECL(srp_SQLCancel);
|
|
SRP_PRIM_DECL(srp_SQLCloseCursor);
|
|
SRP_PRIM_DECL(srp_SQLColAttribute);
|
|
SRP_PRIM_DECL(srp_SQLColumns);
|
|
SRP_PRIM_DECL(srp_SQLConnect);
|
|
SRP_PRIM_DECL(srp_SQLCopyDesc);
|
|
SRP_PRIM_DECL(srp_SQLDataSources);
|
|
SRP_PRIM_DECL(srp_SQLDescribeCol);
|
|
SRP_PRIM_DECL(srp_SQLDisconnect);
|
|
SRP_PRIM_DECL(srp_SQLEndTran);
|
|
SRP_PRIM_DECL(srp_SQLError);
|
|
SRP_PRIM_DECL(srp_SQLExecDirect);
|
|
SRP_PRIM_DECL(srp_SQLExecute);
|
|
SRP_PRIM_DECL(srp_SQLFetch);
|
|
SRP_PRIM_DECL(srp_SQLFetchScroll);
|
|
SRP_PRIM_DECL(srp_SQLFreeConnect);
|
|
SRP_PRIM_DECL(srp_SQLFreeEnv);
|
|
SRP_PRIM_DECL(srp_SQLFreeHandle);
|
|
SRP_PRIM_DECL(srp_SQLFreeStmt);
|
|
SRP_PRIM_DECL(srp_SQLGetConnectAttr);
|
|
SRP_PRIM_DECL(srp_SQLGetConnectOption);
|
|
SRP_PRIM_DECL(srp_SQLGetCursorName);
|
|
SRP_PRIM_DECL(srp_SQLGetData);
|
|
SRP_PRIM_DECL(srp_SQLGetDescField);
|
|
SRP_PRIM_DECL(srp_SQLGetDescRec);
|
|
SRP_PRIM_DECL(srp_SQLGetDiagField);
|
|
SRP_PRIM_DECL(srp_SQLGetDiagRec);
|
|
SRP_PRIM_DECL(srp_SQLGetEnvAttr);
|
|
SRP_PRIM_DECL(srp_SQLGetFunctions);
|
|
SRP_PRIM_DECL(srp_SQLGetInfo);
|
|
SRP_PRIM_DECL(srp_SQLGetStmtAttr);
|
|
SRP_PRIM_DECL(srp_SQLGetStmtOption);
|
|
SRP_PRIM_DECL(srp_SQLGetTypeInfo);
|
|
SRP_PRIM_DECL(srp_SQLNumResultCols);
|
|
SRP_PRIM_DECL(srp_SQLParamData);
|
|
SRP_PRIM_DECL(srp_SQLPrepare);
|
|
SRP_PRIM_DECL(srp_SQLPutData);
|
|
SRP_PRIM_DECL(srp_SQLRowCount);
|
|
SRP_PRIM_DECL(srp_SQLSetConnectAttr);
|
|
SRP_PRIM_DECL(srp_SQLSetConnectOption);
|
|
SRP_PRIM_DECL(srp_SQLSetCursorName);
|
|
SRP_PRIM_DECL(srp_SQLSetDescField);
|
|
SRP_PRIM_DECL(srp_SQLSetDescRec);
|
|
SRP_PRIM_DECL(srp_SQLSetEnvAttr);
|
|
SRP_PRIM_DECL(srp_SQLSetParam);
|
|
SRP_PRIM_DECL(srp_SQLSetStmtAttr);
|
|
SRP_PRIM_DECL(srp_SQLSetStmtOption);
|
|
SRP_PRIM_DECL(srp_SQLSpecialColumns);
|
|
SRP_PRIM_DECL(srp_SQLStatistics);
|
|
SRP_PRIM_DECL(srp_SQLTables);
|
|
SRP_PRIM_DECL(srp_SQLTransact);
|
|
|
|
/* from SQLEXT.H */
|
|
|
|
SRP_PRIM_DECL(srp_SQLBulkOperations);
|
|
SRP_PRIM_DECL(srp_SQLDriverConnect);
|
|
SRP_PRIM_DECL(srp_SQLBrowseConnect);
|
|
SRP_PRIM_DECL(srp_SQLColAttributes);
|
|
SRP_PRIM_DECL(srp_SQLColumnPrivileges);
|
|
SRP_PRIM_DECL(srp_SQLDescribeParam);
|
|
SRP_PRIM_DECL(srp_SQLExtendedFetch);
|
|
SRP_PRIM_DECL(srp_SQLForeignKeys);
|
|
SRP_PRIM_DECL(srp_SQLMoreResults);
|
|
SRP_PRIM_DECL(srp_SQLNativeSql);
|
|
SRP_PRIM_DECL(srp_SQLNumParams);
|
|
SRP_PRIM_DECL(srp_SQLParamOptions);
|
|
SRP_PRIM_DECL(srp_SQLPrimaryKeys);
|
|
SRP_PRIM_DECL(srp_SQLProcedureColumns);
|
|
SRP_PRIM_DECL(srp_SQLProcedures);
|
|
SRP_PRIM_DECL(srp_SQLSetPos);
|
|
SRP_PRIM_DECL(srp_SQLTablePrivileges);
|
|
SRP_PRIM_DECL(srp_SQLDrivers);
|
|
SRP_PRIM_DECL(srp_SQLBindParameter);
|
|
SRP_PRIM_DECL(srp_SQLSetScrollOptions);
|
|
SRP_PRIM_DECL(srp_SQLLenBinaryAttr);
|
|
|
|
/* structure info */
|
|
|
|
extern Scheme_Object **numericStructFuns;
|
|
extern Scheme_Object **dateStructFuns;
|
|
extern Scheme_Object **timeStructFuns;
|
|
extern Scheme_Object **timeStampStructFuns;
|
|
extern Scheme_Object **guidStructFuns;
|
|
extern Scheme_Object **yearIntervalStructFuns;
|
|
extern Scheme_Object **monthIntervalStructFuns;
|
|
extern Scheme_Object **dayIntervalStructFuns;
|
|
extern Scheme_Object **hourIntervalStructFuns;
|
|
extern Scheme_Object **minuteIntervalStructFuns;
|
|
extern Scheme_Object **secondIntervalStructFuns;
|
|
extern Scheme_Object **yearToMonthIntervalStructFuns;
|
|
extern Scheme_Object **dayToHourIntervalStructFuns;
|
|
extern Scheme_Object **dayToMinuteIntervalStructFuns;
|
|
extern Scheme_Object **dayToSecondIntervalStructFuns;
|
|
extern Scheme_Object **hourToMinuteIntervalStructFuns;
|
|
extern Scheme_Object **hourToSecondIntervalStructFuns;
|
|
extern Scheme_Object **minuteToSecondIntervalStructFuns;
|
|
|
|
/* structure #defines */
|
|
|
|
#define TYPE 0
|
|
#define PI_1 3
|
|
#define PI_2 5
|
|
#define PI_3 7
|
|
#define PI_4 9
|
|
#define PI_5 11
|
|
#define PI_6 13
|
|
#define PI_7 15
|
|
#define PI_8 17
|
|
#define PI_9 19
|
|
|
|
|
|
#define NUMERIC_STRUCT_TYPE numericStructFuns[TYPE]
|
|
#define NUMERIC_PRECISION numericStructFuns[PI_1]
|
|
#define NUMERIC_SCALE numericStructFuns[PI_2]
|
|
#define NUMERIC_SIGN numericStructFuns[PI_3]
|
|
#define NUMERIC_VAL numericStructFuns[PI_4]
|
|
|
|
#define DATE_STRUCT_TYPE dateStructFuns[TYPE]
|
|
#define DATE_YEAR dateStructFuns[PI_1]
|
|
#define DATE_MONTH dateStructFuns[PI_2]
|
|
#define DATE_DAY dateStructFuns[PI_3]
|
|
|
|
#define TIME_STRUCT_TYPE timeStructFuns[TYPE]
|
|
#define TIME_HOUR timeStructFuns[PI_1]
|
|
#define TIME_MINUTE timeStructFuns[PI_2]
|
|
#define TIME_SECOND timeStructFuns[PI_3]
|
|
|
|
#define TIMESTAMP_STRUCT_TYPE timeStampStructFuns[TYPE]
|
|
#define TIMESTAMP_YEAR timeStampStructFuns[PI_1]
|
|
#define TIMESTAMP_MONTH timeStampStructFuns[PI_2]
|
|
#define TIMESTAMP_DAY timeStampStructFuns[PI_3]
|
|
#define TIMESTAMP_HOUR timeStampStructFuns[PI_4]
|
|
#define TIMESTAMP_MINUTE timeStampStructFuns[PI_5]
|
|
#define TIMESTAMP_SECOND timeStampStructFuns[PI_6]
|
|
#define TIMESTAMP_FRACTION timeStampStructFuns[PI_7]
|
|
|
|
#define GUID_STRUCT_TYPE guidStructFuns[TYPE]
|
|
#define GUID_DATA1 guidStructFuns[PI_1]
|
|
#define GUID_DATA2 guidStructFuns[PI_2]
|
|
#define GUID_DATA3 guidStructFuns[PI_3]
|
|
#define GUID_DATA4 guidStructFuns[PI_4]
|
|
|
|
#define YEAR_INTERVAL_STRUCT_TYPE yearIntervalStructFuns[TYPE]
|
|
#define YEAR_INTERVAL_SIGN yearIntervalStructFuns[PI_1]
|
|
#define YEAR_INTERVAL_YEAR yearIntervalStructFuns[PI_2]
|
|
|
|
#define MONTH_INTERVAL_STRUCT_TYPE monthIntervalStructFuns[TYPE]
|
|
#define MONTH_INTERVAL_SIGN monthIntervalStructFuns[PI_1]
|
|
#define MONTH_INTERVAL_MONTH monthIntervalStructFuns[PI_2]
|
|
|
|
#define DAY_INTERVAL_STRUCT_TYPE dayIntervalStructFuns[TYPE]
|
|
#define DAY_INTERVAL_SIGN dayIntervalStructFuns[PI_1]
|
|
#define DAY_INTERVAL_DAY dayIntervalStructFuns[PI_2]
|
|
|
|
#define HOUR_INTERVAL_STRUCT_TYPE hourIntervalStructFuns[TYPE]
|
|
#define HOUR_INTERVAL_SIGN hourIntervalStructFuns[PI_1]
|
|
#define HOUR_INTERVAL_HOUR hourIntervalStructFuns[PI_2]
|
|
|
|
#define MINUTE_INTERVAL_STRUCT_TYPE minuteIntervalStructFuns[TYPE]
|
|
#define MINUTE_INTERVAL_SIGN minuteIntervalStructFuns[PI_1]
|
|
#define MINUTE_INTERVAL_MINUTE minuteIntervalStructFuns[PI_2]
|
|
|
|
#define SECOND_INTERVAL_STRUCT_TYPE secondIntervalStructFuns[TYPE]
|
|
#define SECOND_INTERVAL_SIGN secondIntervalStructFuns[PI_1]
|
|
#define SECOND_INTERVAL_SECOND secondIntervalStructFuns[PI_2]
|
|
|
|
#define YEAR_TO_MONTH_INTERVAL_STRUCT_TYPE yearToMonthIntervalStructFuns[TYPE]
|
|
#define YEAR_TO_MONTH_INTERVAL_SIGN yearToMonthIntervalStructFuns[PI_1]
|
|
#define YEAR_TO_MONTH_INTERVAL_YEAR yearToMonthIntervalStructFuns[PI_2]
|
|
#define YEAR_TO_MONTH_INTERVAL_MONTH yearToMonthIntervalStructFuns[PI_3]
|
|
|
|
#define DAY_TO_HOUR_INTERVAL_STRUCT_TYPE dayToHourIntervalStructFuns[TYPE]
|
|
#define DAY_TO_HOUR_INTERVAL_SIGN dayToHourIntervalStructFuns[PI_1]
|
|
#define DAY_TO_HOUR_INTERVAL_DAY dayToHourIntervalStructFuns[PI_2]
|
|
#define DAY_TO_HOUR_INTERVAL_HOUR dayToHourIntervalStructFuns[PI_3]
|
|
|
|
#define DAY_TO_MINUTE_INTERVAL_STRUCT_TYPE dayToMinuteIntervalStructFuns[TYPE]
|
|
#define DAY_TO_MINUTE_INTERVAL_SIGN dayToMinuteIntervalStructFuns[PI_1]
|
|
#define DAY_TO_MINUTE_INTERVAL_DAY dayToMinuteIntervalStructFuns[PI_2]
|
|
#define DAY_TO_MINUTE_INTERVAL_HOUR dayToMinuteIntervalStructFuns[PI_3]
|
|
#define DAY_TO_MINUTE_INTERVAL_MINUTE dayToMinuteIntervalStructFuns[PI_4]
|
|
|
|
#define DAY_TO_SECOND_INTERVAL_STRUCT_TYPE dayToSecondIntervalStructFuns[TYPE]
|
|
#define DAY_TO_SECOND_INTERVAL_SIGN dayToSecondIntervalStructFuns[PI_1]
|
|
#define DAY_TO_SECOND_INTERVAL_DAY dayToSecondIntervalStructFuns[PI_2]
|
|
#define DAY_TO_SECOND_INTERVAL_HOUR dayToSecondIntervalStructFuns[PI_3]
|
|
#define DAY_TO_SECOND_INTERVAL_MINUTE dayToSecondIntervalStructFuns[PI_4]
|
|
#define DAY_TO_SECOND_INTERVAL_SECOND dayToSecondIntervalStructFuns[PI_5]
|
|
|
|
#define HOUR_TO_MINUTE_INTERVAL_STRUCT_TYPE hourToMinuteIntervalStructFuns[TYPE]
|
|
#define HOUR_TO_MINUTE_INTERVAL_SIGN hourToMinuteIntervalStructFuns[PI_1]
|
|
#define HOUR_TO_MINUTE_INTERVAL_HOUR hourToMinuteIntervalStructFuns[PI_2]
|
|
#define HOUR_TO_MINUTE_INTERVAL_MINUTE hourToMinuteIntervalStructFuns[PI_3]
|
|
|
|
#define HOUR_TO_SECOND_INTERVAL_STRUCT_TYPE hourToSecondIntervalStructFuns[TYPE]
|
|
#define HOUR_TO_SECOND_INTERVAL_SIGN hourToSecondIntervalStructFuns[PI_1]
|
|
#define HOUR_TO_SECOND_INTERVAL_HOUR hourToSecondIntervalStructFuns[PI_2]
|
|
#define HOUR_TO_SECOND_INTERVAL_MINUTE hourToSecondIntervalStructFuns[PI_3]
|
|
#define HOUR_TO_SECOND_INTERVAL_SECOND hourToSecondIntervalStructFuns[PI_4]
|
|
|
|
#define MINUTE_TO_SECOND_INTERVAL_STRUCT_TYPE minuteToSecondIntervalStructFuns[TYPE]
|
|
#define MINUTE_TO_SECOND_INTERVAL_SIGN minuteToSecondIntervalStructFuns[PI_1]
|
|
#define MINUTE_TO_SECOND_INTERVAL_MINUTE minuteToSecondIntervalStructFuns[PI_2]
|
|
#define MINUTE_TO_SECOND_INTERVAL_SECOND minuteToSecondIntervalStructFuns[PI_3]
|