8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-27 06:43:04 +01:00
firebird-mirror/src/dsql/sqlda.h

127 lines
2.5 KiB
C
Raw Normal View History

2001-05-23 15:26:42 +02:00
/*
* PROGRAM: C preprocessor
* MODULE: sqlda.h
* DESCRIPTION: DSQL definitions for non-DSQL modules
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
2003-09-26 13:02:12 +02:00
#ifndef DSQL_SQLDA_H
#define DSQL_SQLDA_H
2001-05-23 15:26:42 +02:00
#include "../jrd/gds_proto.h"
2008-12-05 01:56:15 +01:00
// SQLDA dialects
2001-05-23 15:26:42 +02:00
2004-05-18 18:32:07 +02:00
const USHORT DIALECT_sqlda = 0;
const USHORT DIALECT_xsqlda = 1;
2001-05-23 15:26:42 +02:00
2004-05-24 19:22:35 +02:00
struct SQLVAR
2001-05-23 15:26:42 +02:00
{
SSHORT sqltype;
SSHORT sqllen;
SCHAR* sqldata;
SSHORT* sqlind;
SSHORT sqlname_length;
SCHAR sqlname[30];
2004-05-24 19:22:35 +02:00
};
2001-05-23 15:26:42 +02:00
2004-05-24 19:22:35 +02:00
struct SQLDA
2001-05-23 15:26:42 +02:00
{
SCHAR sqldaid[8];
SLONG sqldabc;
SSHORT sqln;
SSHORT sqld;
SQLVAR sqlvar[1];
2004-05-24 19:22:35 +02:00
};
2001-05-23 15:26:42 +02:00
2004-12-08 06:58:41 +01:00
#define SQLDA_LENGTH(n) (sizeof (SQLDA) + (n - 1) * sizeof (SQLVAR))
2001-05-23 15:26:42 +02:00
2008-12-05 01:56:15 +01:00
// Structure to support conversion of SQLDA's to messages
2001-05-23 15:26:42 +02:00
// enum would be troblesome here
const USHORT DASUP_CLAUSE_select = 0;
const USHORT DASUP_CLAUSE_bind = 1;
2004-02-02 12:02:12 +01:00
struct sqlda_sup
2001-05-23 15:26:42 +02:00
{
struct dasup_clause
{
SCHAR* dasup_blr;
SCHAR* dasup_msg;
USHORT dasup_blr_length;
USHORT dasup_blr_buf_len;
USHORT dasup_msg_buf_len;
SCHAR* dasup_info_buf;
USHORT dasup_info_len;
2001-05-23 15:26:42 +02:00
} dasup_clauses[2];
2008-12-05 01:56:15 +01:00
USHORT dasup_dialect; // Dialect associated with statement
USHORT dasup_stmt_type; // Type of statement
2001-05-23 15:26:42 +02:00
public:
sqlda_sup()
{
init();
}
2001-05-23 15:26:42 +02:00
void reset()
{
release();
init();
}
~sqlda_sup()
{
release();
}
private:
void freeIfSet(SCHAR** pMem)
{
if (*pMem)
{
gds__free(*pMem);
*pMem = 0;
}
}
void init()
{
memset(dasup_clauses, 0, sizeof(dasup_clauses));
dasup_dialect = 0;
dasup_stmt_type = 0;
}
void release()
{
freeIfSet(&dasup_clauses[DASUP_CLAUSE_bind].dasup_blr);
freeIfSet(&dasup_clauses[DASUP_CLAUSE_select].dasup_blr);
freeIfSet(&dasup_clauses[DASUP_CLAUSE_bind].dasup_msg);
freeIfSet(&dasup_clauses[DASUP_CLAUSE_select].dasup_msg);
freeIfSet(&dasup_clauses[DASUP_CLAUSE_bind].dasup_info_buf);
freeIfSet(&dasup_clauses[DASUP_CLAUSE_select].dasup_info_buf);
}
};
2001-05-23 15:26:42 +02:00
#include "../dsql/sqlda_pub.h"
2003-09-26 13:02:12 +02:00
#endif // DSQL_SQLDA_H