/*-------
 * Module:			pgapifunc.h
 *
 *-------
 */
#ifndef	_PG_API_FUNC_H__
#define	_PG_API_FUNC_H__

#include "psqlodbc.h"
#include <stdio.h>
#include <string.h>

#ifndef WIN32
#include "iodbc.h"
#include "isqlext.h"
#else
#include <windows.h>
#include <sqlext.h>
#endif

RETCODE  SQL_API PGAPI_AllocConnect(HENV EnvironmentHandle,
           HDBC FAR *ConnectionHandle);
RETCODE  SQL_API PGAPI_AllocEnv(HENV FAR *EnvironmentHandle);
RETCODE  SQL_API PGAPI_AllocStmt(HDBC ConnectionHandle,
           HSTMT *StatementHandle);
RETCODE  SQL_API PGAPI_BindCol(HSTMT StatementHandle, 
		   SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, 
		   PTR TargetValue, SQLINTEGER BufferLength, 
	   	   SQLINTEGER *StrLen_or_Ind);
RETCODE  SQL_API PGAPI_Cancel(HSTMT StatementHandle);
RETCODE  SQL_API PGAPI_Columns(HSTMT StatementHandle,
           SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
           SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
           SQLCHAR *TableName, SQLSMALLINT NameLength3,
           SQLCHAR *ColumnName, SQLSMALLINT NameLength4);
RETCODE  SQL_API PGAPI_Connect(HDBC ConnectionHandle,
           SQLCHAR *ServerName, SQLSMALLINT NameLength1,
           SQLCHAR *UserName, SQLSMALLINT NameLength2,
           SQLCHAR *Authentication, SQLSMALLINT NameLength3);
RETCODE  SQL_API PGAPI_DriverConnect(HDBC hdbc, HWND hwnd,
	   UCHAR FAR *szConnStrIn, SWORD cbConnStrIn,
	   UCHAR FAR *szConnStrOut, SWORD cbConnStrOutMax,
	   SWORD FAR *pcbConnStrOut, UWORD fDriverCompletion);
RETCODE SQL_API PGAPI_BrowseConnect(HDBC hdbc,
	  SQLCHAR *szConnStrIn, SQLSMALLINT cbConnStrIn,
	  SQLCHAR *szConnStrOut, SQLSMALLINT cbConnStrOutMax,
	  SQLSMALLINT *pcbConnStrOut);
RETCODE  SQL_API PGAPI_DataSources(HENV EnvironmentHandle,
           SQLUSMALLINT Direction, SQLCHAR *ServerName,
           SQLSMALLINT BufferLength1, SQLSMALLINT *NameLength1,
           SQLCHAR *Description, SQLSMALLINT BufferLength2,
           SQLSMALLINT *NameLength2);
RETCODE  SQL_API PGAPI_DescribeCol(HSTMT StatementHandle,
           SQLUSMALLINT ColumnNumber, SQLCHAR *ColumnName,
           SQLSMALLINT BufferLength, SQLSMALLINT *NameLength,
           SQLSMALLINT *DataType, SQLUINTEGER *ColumnSize,
           SQLSMALLINT *DecimalDigits, SQLSMALLINT *Nullable);
RETCODE  SQL_API PGAPI_Disconnect(HDBC ConnectionHandle);
RETCODE  SQL_API PGAPI_Error(HENV EnvironmentHandle,
           HDBC ConnectionHandle, HSTMT StatementHandle,
           SQLCHAR *Sqlstate, SQLINTEGER *NativeError,
           SQLCHAR *MessageText, SQLSMALLINT BufferLength,
           SQLSMALLINT *TextLength);
RETCODE  SQL_API PGAPI_ExecDirect(HSTMT StatementHandle,
           SQLCHAR *StatementText, SQLINTEGER TextLength);
RETCODE  SQL_API PGAPI_Execute(HSTMT StatementHandle);
RETCODE  SQL_API PGAPI_Fetch(HSTMT StatementHandle);
RETCODE  SQL_API PGAPI_FreeConnect(HDBC ConnectionHandle);
RETCODE  SQL_API PGAPI_FreeEnv(HENV EnvironmentHandle);
RETCODE  SQL_API PGAPI_FreeStmt(HSTMT StatementHandle,
           SQLUSMALLINT Option);
RETCODE  SQL_API PGAPI_GetConnectOption(HDBC ConnectionHandle,
           SQLUSMALLINT Option, PTR Value);
RETCODE  SQL_API PGAPI_GetCursorName(HSTMT StatementHandle,
           SQLCHAR *CursorName, SQLSMALLINT BufferLength,
           SQLSMALLINT *NameLength);
RETCODE  SQL_API PGAPI_GetData(HSTMT StatementHandle,
           SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
           PTR TargetValue, SQLINTEGER BufferLength,
           SQLINTEGER *StrLen_or_Ind);
RETCODE  SQL_API PGAPI_GetFunctions(HDBC ConnectionHandle,
           SQLUSMALLINT FunctionId, SQLUSMALLINT *Supported);
RETCODE  SQL_API PGAPI_GetFunctions30(HDBC ConnectionHandle,
           SQLUSMALLINT FunctionId, SQLUSMALLINT *Supported);
RETCODE  SQL_API PGAPI_GetInfo(HDBC ConnectionHandle,
           SQLUSMALLINT InfoType, PTR InfoValue,
           SQLSMALLINT BufferLength, SQLSMALLINT *StringLength);
RETCODE  SQL_API PGAPI_GetInfo30(HDBC ConnectionHandle,
           SQLUSMALLINT InfoType, PTR InfoValue,
           SQLSMALLINT BufferLength, SQLSMALLINT *StringLength);
RETCODE  SQL_API PGAPI_GetStmtOption(HSTMT StatementHandle,
           SQLUSMALLINT Option, PTR Value);
RETCODE  SQL_API PGAPI_GetTypeInfo(HSTMT StatementHandle,
           SQLSMALLINT DataType);
RETCODE  SQL_API PGAPI_NumResultCols(HSTMT StatementHandle,
           SQLSMALLINT *ColumnCount);
RETCODE  SQL_API PGAPI_ParamData(HSTMT StatementHandle,
           PTR *Value);
RETCODE  SQL_API PGAPI_Prepare(HSTMT StatementHandle,
           SQLCHAR *StatementText, SQLINTEGER TextLength);
RETCODE  SQL_API PGAPI_PutData(HSTMT StatementHandle,
           PTR Data, SQLINTEGER StrLen_or_Ind);
RETCODE  SQL_API PGAPI_RowCount(HSTMT StatementHandle, 
	   SQLINTEGER *RowCount);
RETCODE  SQL_API PGAPI_SetConnectOption(HDBC ConnectionHandle,
           SQLUSMALLINT Option, SQLUINTEGER Value);
RETCODE  SQL_API PGAPI_SetCursorName(HSTMT StatementHandle,
           SQLCHAR *CursorName, SQLSMALLINT NameLength);
RETCODE  SQL_API PGAPI_SetParam(HSTMT StatementHandle,
           SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
           SQLSMALLINT ParameterType, SQLUINTEGER LengthPrecision,
           SQLSMALLINT ParameterScale, PTR ParameterValue,
           SQLINTEGER *StrLen_or_Ind);
RETCODE  SQL_API PGAPI_SetStmtOption(HSTMT StatementHandle,
           SQLUSMALLINT Option, SQLUINTEGER Value);
RETCODE  SQL_API PGAPI_SpecialColumns(HSTMT StatementHandle,
           SQLUSMALLINT IdentifierType, SQLCHAR *CatalogName,
           SQLSMALLINT NameLength1, SQLCHAR *SchemaName,
           SQLSMALLINT NameLength2, SQLCHAR *TableName,
           SQLSMALLINT NameLength3, SQLUSMALLINT Scope,
           SQLUSMALLINT Nullable);
RETCODE  SQL_API PGAPI_Statistics(HSTMT StatementHandle,
           SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
           SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
           SQLCHAR *TableName, SQLSMALLINT NameLength3,
           SQLUSMALLINT Unique, SQLUSMALLINT Reserved);
RETCODE  SQL_API PGAPI_Tables(HSTMT StatementHandle,
           SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
           SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
           SQLCHAR *TableName, SQLSMALLINT NameLength3,
           SQLCHAR *TableType, SQLSMALLINT NameLength4);
RETCODE  SQL_API PGAPI_Transact(HENV EnvironmentHandle,
           HDBC ConnectionHandle, SQLUSMALLINT CompletionType);
RETCODE SQL_API PGAPI_ColAttributes(
	   HSTMT hstmt,
	   SQLUSMALLINT icol,
	   SQLUSMALLINT fDescType,
	   PTR  rgbDesc,
	   SQLSMALLINT cbDescMax,
	   SQLSMALLINT *pcbDesc,
	   SQLINTEGER *pfDesc);
RETCODE SQL_API PGAPI_ColumnPrivileges(
    HSTMT           hstmt,
    SQLCHAR 		  *szCatalogName,
    SQLSMALLINT        cbCatalogName,
    SQLCHAR 		  *szSchemaName,
    SQLSMALLINT        cbSchemaName,
    SQLCHAR 		  *szTableName,
    SQLSMALLINT        cbTableName,
    SQLCHAR 		  *szColumnName,
    SQLSMALLINT        cbColumnName);
RETCODE SQL_API PGAPI_DescribeParam(
    HSTMT           hstmt,
    SQLUSMALLINT       ipar,
    SQLSMALLINT 	  *pfSqlType,
    SQLUINTEGER 	  *pcbParamDef,
    SQLSMALLINT 	  *pibScale,
    SQLSMALLINT 	  *pfNullable);
RETCODE SQL_API PGAPI_ExtendedFetch(
    HSTMT           hstmt,
    SQLUSMALLINT       fFetchType,
    SQLINTEGER         irow,
    SQLUINTEGER 	  *pcrow,
    SQLUSMALLINT 	  *rgfRowStatus);
RETCODE SQL_API PGAPI_ForeignKeys(
    HSTMT           hstmt,
    SQLCHAR 		  *szPkCatalogName,
    SQLSMALLINT        cbPkCatalogName,
    SQLCHAR 		  *szPkSchemaName,
    SQLSMALLINT        cbPkSchemaName,
    SQLCHAR 		  *szPkTableName,
    SQLSMALLINT        cbPkTableName,
    SQLCHAR 		  *szFkCatalogName,
    SQLSMALLINT        cbFkCatalogName,
    SQLCHAR 		  *szFkSchemaName,
    SQLSMALLINT        cbFkSchemaName,
    SQLCHAR 		  *szFkTableName,
    SQLSMALLINT        cbFkTableName);
RETCODE SQL_API PGAPI_MoreResults(
    HSTMT           hstmt);
RETCODE SQL_API PGAPI_NativeSql(
    HDBC            hdbc,
    SQLCHAR 		  *szSqlStrIn,
    SQLINTEGER         cbSqlStrIn,
    SQLCHAR 		  *szSqlStr,
    SQLINTEGER         cbSqlStrMax,
    SQLINTEGER 		  *pcbSqlStr);
RETCODE SQL_API PGAPI_NumParams(
    HSTMT           hstmt,
    SQLSMALLINT 	  *pcpar);
RETCODE SQL_API PGAPI_ParamOptions(
    HSTMT           hstmt,
    SQLUINTEGER        crow,
    SQLUINTEGER 	  *pirow);
RETCODE SQL_API PGAPI_PrimaryKeys(
    HSTMT           hstmt,
    SQLCHAR 		  *szCatalogName,
    SQLSMALLINT        cbCatalogName,
    SQLCHAR 		  *szSchemaName,
    SQLSMALLINT        cbSchemaName,
    SQLCHAR 		  *szTableName,
    SQLSMALLINT        cbTableName);
RETCODE SQL_API PGAPI_ProcedureColumns(
    HSTMT           hstmt,
    SQLCHAR 		  *szCatalogName,
    SQLSMALLINT        cbCatalogName,
    SQLCHAR 		  *szSchemaName,
    SQLSMALLINT        cbSchemaName,
    SQLCHAR 		  *szProcName,
    SQLSMALLINT        cbProcName,
    SQLCHAR 		  *szColumnName,
    SQLSMALLINT        cbColumnName);
RETCODE SQL_API PGAPI_Procedures(
    HSTMT           hstmt,
    SQLCHAR 		  *szCatalogName,
    SQLSMALLINT        cbCatalogName,
    SQLCHAR 		  *szSchemaName,
    SQLSMALLINT        cbSchemaName,
    SQLCHAR 		  *szProcName,
    SQLSMALLINT        cbProcName);
RETCODE SQL_API PGAPI_SetPos(
    HSTMT           hstmt,
    SQLUSMALLINT       irow,
    SQLUSMALLINT       fOption,
    SQLUSMALLINT       fLock);
RETCODE SQL_API PGAPI_TablePrivileges(
    HSTMT           hstmt,
    SQLCHAR 		  *szCatalogName,
    SQLSMALLINT        cbCatalogName,
    SQLCHAR 		  *szSchemaName,
    SQLSMALLINT        cbSchemaName,
    SQLCHAR 		  *szTableName,
    SQLSMALLINT        cbTableName);
RETCODE SQL_API PGAPI_BindParameter(
    HSTMT           hstmt,
    SQLUSMALLINT       ipar,
    SQLSMALLINT        fParamType,
    SQLSMALLINT        fCType,
    SQLSMALLINT        fSqlType,
    SQLUINTEGER        cbColDef,
    SQLSMALLINT        ibScale,
    PTR         rgbValue,
    SQLINTEGER         cbValueMax,
    SQLINTEGER 		  *pcbValue);
RETCODE SQL_API PGAPI_SetScrollOptions(
	HSTMT hstmt,
	UWORD fConcurrency,
	SDWORD crowKeyset,
	UWORD crowRowset);
#endif /* define_PG_API_FUNC_H__ */
