////////////////////////////////////////////////////////////////////////////////
//
// LIBDB.H  
//
////////////////////////////////////////////////////////////////////////////////
#ifndef __LIBDB_H
#define __LIBDB_H

#define LODBC_FUNC WINAPI

typedef  long reference;


extern "C" {


//   - 2    libodbc.dll
//------------------------------------------------------------------------------
//   -     .
//         .
//       
// Relation( bd );      struct {
//   RInt("d");                                      short int d;  -  
//   RFloat("");                                     float     l;
//  EndRelation( );                                }
// ---
reference LODBC_FUNC Relation( reference db );  // db -  

//   - 3    libodbc.dll
//------------------------------------------------------------------------------
//     
// ---
void      LODBC_FUNC EndRelation( );

//   - 4    libodbc.dll
//------------------------------------------------------------------------------
//     
//        0   
//        
// ---
reference LODBC_FUNC CreateDB( char *s );  //s  -   "TXT_DB"-    "ODBC_DB" - ODBC 

//   - 935    libodbc.dll
//------------------------------------------------------------------------------
//     
//        0   
//        
//  (Unicode)
// ---
reference LODBC_FUNC CreateDBW( LPWSTR s );  //s  -   "TXT_DB"-    "ODBC_DB" - ODBC 

#ifdef _UNICODE
#define CreateDBT  CreateDBW
#else
#define CreateDBT  CreateDB
#endif // !UNICODE

//   - 5    libodbc.dll
//------------------------------------------------------------------------------
//    .   ,   ,      
//   1      0   
// ---
int       LODBC_FUNC DeleteDB( reference db );

//   - 6    libodbc.dll
//------------------------------------------------------------------------------
//       
//   1      0   
// ---
int       LODBC_FUNC ConnectDB( reference db, //   
															  char * DBName );//  (  ODBC -     ODBC,    -   )

//   - 936    libodbc.dll
//------------------------------------------------------------------------------
//       
//   1      0   
// (Unicode)
// ---
int       LODBC_FUNC ConnectDBW( reference db, //   
															   LPWSTR DBName );//  (  ODBC -     ODBC,    -   )

#ifdef _UNICODE
#define ConnectDBT  ConnectDBW
#else
#define ConnectDBT  ConnectDB
#endif // !UNICODE


//   - 7    libodbc.dll
//------------------------------------------------------------------------------
//         .
//   1      0   .
// ---
int       LODBC_FUNC DisconnectDB( reference db );

//   - 8    libodbc.dll
int       LODBC_FUNC FreeStatement( reference db,
																	reference r,
																	unsigned short int fOption );

//   - 9    libodbc.dll
//------------------------------------------------------------------------------
//     
// Select d, s, p from bolt where d = 10  -     ,  d, s, p -    *   .
//                                            -   "2, 4, 7"   ,     .
//                                          bolt -      ""     , d -    
//                                             r  .
// Insert into bolt (d,p,s) values( 10, 1.5, 14 ) -        bolt
// Delete from bolt where d = 10                  -        bolt
// Update bolt set p = 2.5, s = 20 where d =10    -         bolt
//  ODBC       Insert, Delete, Update.    
//    ,     
// ---
int       LODBC_FUNC DoStatement( reference db,
                                reference r,
                                char * stSQL );

//   - 937    libodbc.dll
//------------------------------------------------------------------------------
//     
// Select d, s, p from bolt where d = 10  -     ,  d, s, p -    *   .
//                                            -   "2, 4, 7"   ,     .
//                                          bolt -      ""     , d -    
//                                             r  .
// Insert into bolt (d,p,s) values( 10, 1.5, 14 ) -        bolt
// Delete from bolt where d = 10                  -        bolt
// Update bolt set p = 2.5, s = 20 where d =10    -         bolt
//  ODBC       Insert, Delete, Update.    
//    ,     
// (Unicode)
// ---
int       LODBC_FUNC DoStatementW( reference db,
                                   reference r,
                                   LPWSTR stSQL );

#ifdef _UNICODE
#define DoStatementT  DoStatementW
#else
#define DoStatementT  DoStatement
#endif // !UNICODE


//   - 10    libodbc.dll
//------------------------------------------------------------------------------
//  .    Select...
//   1,      . 0 -     
// ---
int       LODBC_FUNC ReadRecord( reference db,
                               reference r,
                               void *v );

//   - 11    libodbc.dll
//------------------------------------------------------------------------------
//     .    Select...
//   - "where d > 10 and d < 14"
// ---
int       LODBC_FUNC Condition( reference db,
                              reference r,
                              char * stSQL );

//   - 938    libodbc.dll
//------------------------------------------------------------------------------
//     .    Select...
//   - "where d > 10 and d < 14"
// (Unicode)
// ---
int       LODBC_FUNC ConditionW( reference db,
                                 reference r,
                                    LPWSTR stSQL );

#ifdef _UNICODE
#define ConditionT  ConditionW
#else
#define ConditionT  Condition
#endif // !UNICODE


//   - 12    libodbc.dll
//--------------------------------------------------------------------------
//     double    
// ---
int       LODBC_FUNC RDouble( char *name );

//   - 939    libodbc.dll
//--------------------------------------------------------------------------
//     double     (Unicode)
// ---
int       LODBC_FUNC RDoubleW( LPWSTR name );

#ifdef _UNICODE
#define RDoubleT  RDoubleW
#else
#define RDoubleT  RDouble
#endif // !UNICODE

//   - 13    libodbc.dll
//--------------------------------------------------------------------------
//     float    
// ---
int       LODBC_FUNC RFloat( char *name );

//   - 940    libodbc.dll
//--------------------------------------------------------------------------
//     float     (Unicode)
// ---
int       LODBC_FUNC RFloatW( LPWSTR name );

#ifdef _UNICODE
#define RFloatT  RFloatW
#else
#define RFloatT  RFloat
#endif // !UNICODE

//   - 14    libodbc.dll
//--------------------------------------------------------------------------
//     short int    
// ---
int       LODBC_FUNC RInt( char *name  );

//   - 941    libodbc.dll
//--------------------------------------------------------------------------
//     short int     (Unicode)
// ---
int       LODBC_FUNC RIntW( LPWSTR name  );

#ifdef _UNICODE
#define RIntT  RIntW
#else
#define RIntT  RInt
#endif // !UNICODE

//   - 15    libodbc.dll
//--------------------------------------------------------------------------
//     int  long int    
// ---
int       LODBC_FUNC RLong( char *name );

//   - 942    libodbc.dll
//--------------------------------------------------------------------------
//     int  long int     (Unicode)
// ---
int       LODBC_FUNC RLongW( LPWSTR name );

#ifdef _UNICODE
#define RLongT  RLongW
#else
#define RLongT  RLong
#endif // !UNICODE

//   - 16    libodbc.dll
//--------------------------------------------------------------------------
//     char[size]    
// ---
int       LODBC_FUNC RChar( char *name,// ;   TXT 
                          int size,    // 
                          long int  ); //    ;   ODBC 

//   - 943    libodbc.dll
//--------------------------------------------------------------------------
//     wchar_t[size]     (Unicode)
// ---
int       LODBC_FUNC RCharW( LPWSTR name,// ;   TXT 
                             int size,    // 
                             long int  ); //    ;   ODBC 

#ifdef _UNICODE
#define RCharT  RCharW
#else
#define RCharT  RChar
#endif // !UNICODE

//   - 17    libodbc.dll
//-----------------------------------------------------------------------------
//    
//         
// :
//   1:  1  
// ---
reference LODBC_FUNC OpenTextFile( char * fileName );

//   - 944    libodbc.dll (Unicode)
//-----------------------------------------------------------------------------
//    
//         
// :
//   1:  1  
// ---
reference LODBC_FUNC OpenTextFileW( LPWSTR fileName );

#ifdef _UNICODE
#define OpenTextFileT  OpenTextFileW
#else
#define OpenTextFileT  OpenTextFile
#endif // !UNICODE

//   - 17    libodbc.dll
//////////////////////////////////////////////////////////////////////////
//       SQL 
// textFileType - 0 -   
// textFileType - 1 -   
// textFileType - 2 -     (    )
//                       
/*
  
   
*/
//  
//    
//////////////////////////////////////////////////////////////////////////
reference LODBC_FUNC ksOpenTextFileEx( char * fileName, int textFileType );

//   - 944    libodbc.dll (Unicode)
//-----------------------------------------------------------------------------
// textFileType - 0 -   
// textFileType - 1 -   
// textFileType - 2 -     (    )
// ---
//                       
/*
  
   
*/
//  
reference LODBC_FUNC ksOpenTextFileExW( LPWSTR fileName, int textFileType );

#ifdef _UNICODE
#define ksOpenTextFileExT  ksOpenTextFileExW
#else
#define ksOpenTextFileExT  ksOpenTextFileEx
#endif // !UNICODE


//   - 18    libodbc.dll
//-----------------------------------------------------------------------------
//    
// ---
void      LODBC_FUNC CloseTextFile( reference f );

//   - 19    
//-----------------------------------------------------------------------------
//      
// ---
int       LODBC_FUNC ReadStrFromTextFile( reference f,
                                          char * buff,
                                          int numb );

//   - 946    
//-----------------------------------------------------------------------------
//      
// ---
int       LODBC_FUNC ReadStrFromTextFileW( reference f,
                                           LPWSTR buff,
                                           int numb );

#ifdef _UNICODE
#define ReadStrFromTextFileT  ReadStrFromTextFileW
#else
#define ReadStrFromTextFileT  ReadStrFromTextFile
#endif // !UNICODE


//   - 20    
//------------------------------------------------------------------------------
//   .
//   1,       .
// 0 -     
// ---
int       LODBC_FUNC GetTableName( reference db,       // db -  
                                   char * tableName,       //   
                                   int size,               //  
                                   unsigned char firstOrNext  );  // F -  , N - 

//   - 935    
//------------------------------------------------------------------------------
//   .
//   1,       .
// 0 -     
// (Unicode)
// ---
int       LODBC_FUNC GetTableNameW( reference db,       // db -  
                               LPWSTR tableName,       //   
                               int size,               //  
                               unsigned char firstOrNext  );  // F -  , N - 

#ifdef _UNICODE
#define GetTableNameT  GetTableNameW
#else
#define GetTableNameT  GetTableName
#endif // !UNICODE

//   - 21    
//------------------------------------------------------------------------------
//    .
//   1,        .
// 0 -      
// ---
int       LODBC_FUNC GetColumnName( reference db,      // db -  
                               char * tableName,       // ODBC- , - 
                               char * columnName,      //   
                               int size,               //  
                               unsigned char firstOrNext  );  // F -   N - 

//   - 955   
//------------------------------------------------------------------------------
//    .
//   1,        .
// 0 -      
// (Unicode)
// ---
int       LODBC_FUNC GetColumnNameW( reference db,      // db -  
                               LPWSTR tableName,       // ODBC- , - 
                               LPWSTR columnName,      //   
                               int size,               //  
                               unsigned char firstOrNext  );  // F -   N - 

#ifdef _UNICODE
#define GetColumnNameT  GetColumnNameW
#else
#define GetColumnNameT  GetColumnName
#endif // !UNICODE

//   - 22    
//------------------------------------------------------------------------------
//    ODBC
// ---
int       LODBC_FUNC IsODBCOkey();

} //extern "C"


#endif
