8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-26 10:03:03 +01:00
firebird-mirror/src/dsql/sqlda.h

127 lines
2.5 KiB
C++

/*
* 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): ______________________________________.
*/
#ifndef DSQL_SQLDA_H
#define DSQL_SQLDA_H
#include "../jrd/gds_proto.h"
// SQLDA dialects
const USHORT DIALECT_sqlda = 0;
const USHORT DIALECT_xsqlda = 1;
struct SQLVAR
{
SSHORT sqltype;
SSHORT sqllen;
SCHAR* sqldata;
SSHORT* sqlind;
SSHORT sqlname_length;
SCHAR sqlname[30];
};
struct SQLDA
{
SCHAR sqldaid[8];
SLONG sqldabc;
SSHORT sqln;
SSHORT sqld;
SQLVAR sqlvar[1];
};
#define SQLDA_LENGTH(n) (sizeof (SQLDA) + (n - 1) * sizeof (SQLVAR))
// Structure to support conversion of SQLDA's to messages
// enum would be troblesome here
const USHORT DASUP_CLAUSE_select = 0;
const USHORT DASUP_CLAUSE_bind = 1;
struct sqlda_sup
{
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;
} dasup_clauses[2];
USHORT dasup_dialect; // Dialect associated with statement
USHORT dasup_stmt_type; // Type of statement
public:
sqlda_sup()
{
init();
}
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);
}
};
#include "../dsql/sqlda_pub.h"
#endif // DSQL_SQLDA_H