interfaces.hpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:23k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: interfaces.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 20:19:28  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.18
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef DBAPI_DRIVER_DBLIB___INTERFACES__HPP
  10. #define DBAPI_DRIVER_DBLIB___INTERFACES__HPP
  11. /* $Id: interfaces.hpp,v 1000.0 2003/10/29 20:19:28 gouriano Exp $
  12.  * ===========================================================================
  13.  *
  14.  *                            PUBLIC DOMAIN NOTICE
  15.  *               National Center for Biotechnology Information
  16.  *
  17.  *  This software/database is a "United States Government Work" under the
  18.  *  terms of the United States Copyright Act.  It was written as part of
  19.  *  the author's official duties as a United States Government employee and
  20.  *  thus cannot be copyrighted.  This software/database is freely available
  21.  *  to the public for use. The National Library of Medicine and the U.S.
  22.  *  Government have not placed any restriction on its use or reproduction.
  23.  *
  24.  *  Although all reasonable efforts have been taken to ensure the accuracy
  25.  *  and reliability of the software and data, the NLM and the U.S.
  26.  *  Government do not and cannot warrant the performance or results that
  27.  *  may be obtained by using this software or data. The NLM and the U.S.
  28.  *  Government disclaim all warranties, express or implied, including
  29.  *  warranties of performance, merchantability or fitness for any particular
  30.  *  purpose.
  31.  *
  32.  *  Please cite the author in any work or product based on this material.
  33.  *
  34.  * ===========================================================================
  35.  *
  36.  * Author:  Vladimir Soussov
  37.  *
  38.  * File Description:  Driver for Sybase DBLib server
  39.  *
  40.  */
  41. #include <dbapi/driver/public.hpp>
  42. #include <dbapi/driver/util/parameters.hpp>
  43. #include <dbapi/driver/util/handle_stack.hpp>
  44. #include <dbapi/driver/util/pointer_pot.hpp>
  45. #include <sybfront.h>
  46. #include <sybdb.h>
  47. #include <syberror.h>
  48. BEGIN_NCBI_SCOPE
  49. class CDBLibContext;
  50. class CDBL_Connection;
  51. class CDBL_LangCmd;
  52. class CDBL_RPCCmd;
  53. class CDBL_CursorCmd;
  54. class CDBL_BCPInCmd;
  55. class CDBL_SendDataCmd;
  56. class CDBL_RowResult;
  57. class CDBL_ParamResult;
  58. class CDBL_ComputeResult;
  59. class CDBL_StatusResult;
  60. class CDBL_CursorResult;
  61. class CDBL_BlobResult;
  62. const unsigned int kDBLibMaxNameLen = 128 + 4;
  63. /////////////////////////////////////////////////////////////////////////////
  64. //
  65. //  CDBLibContext::
  66. //
  67. class NCBI_DBAPIDRIVER_DBLIB_EXPORT CDBLibContext : public I_DriverContext
  68. {
  69.     friend class CDB_Connection;
  70. public:
  71.     CDBLibContext(DBINT version = DBVERSION_46);
  72.     //
  73.     // GENERIC functionality (see in <dbapi/driver/interfaces.hpp>)
  74.     //
  75.     virtual bool SetLoginTimeout (unsigned int nof_secs = 0);
  76.     virtual bool SetTimeout      (unsigned int nof_secs = 0);
  77.     virtual bool SetMaxTextImageSize(size_t nof_bytes);
  78.     virtual CDB_Connection* Connect(const string&   srv_name,
  79.                                     const string&   user_name,
  80.                                     const string&   passwd,
  81.                                     TConnectionMode mode,
  82.                                     bool            reusable  = false,
  83.                                     const string&   pool_name = kEmptyStr);
  84.     virtual bool IsAbleTo(ECapability cpb) const;
  85.     virtual ~CDBLibContext();
  86.     //
  87.     // DBLIB specific functionality
  88.     //
  89.     // the following methods are optional (driver will use the default
  90.     // values if not called)
  91.     // the values will affect the new connections only
  92.     virtual void DBLIB_SetApplicationName(const string& a_name);
  93.     virtual void DBLIB_SetHostName(const string& host_name);
  94.     virtual void DBLIB_SetPacketSize(int p_size);
  95.     virtual bool DBLIB_SetMaxNofConns(int n);
  96.     static  int  DBLIB_dberr_handler(DBPROCESS*    dblink,   int     severity,
  97.                                      int           dberr,    int     oserr,
  98.                                      const string& dberrstr,
  99.                                      const string& oserrstr);
  100.     static  void DBLIB_dbmsg_handler(DBPROCESS*    dblink,   DBINT   msgno,
  101.                                      int           msgstate, int     severity,
  102.                                      const string& msgtxt,
  103.                                      const string& srvname,
  104.                                      const string& procname,
  105.                                      int           line);
  106. private:
  107.     static CDBLibContext* m_pDBLibContext;
  108.     string                m_AppName;
  109.     string                m_HostName;
  110.     short                 m_PacketSize;
  111.     LOGINREC*             m_Login;
  112.     DBPROCESS* x_ConnectToServer(const string&   srv_name,
  113.                                  const string&   user_name,
  114.                                  const string&   passwd,
  115.                                  TConnectionMode mode);
  116. };
  117. /////////////////////////////////////////////////////////////////////////////
  118. //
  119. //  CTL_Connection::
  120. //
  121. class NCBI_DBAPIDRIVER_DBLIB_EXPORT CDBL_Connection : public I_Connection
  122. {
  123.     friend class CDBLibContext;
  124.     friend class CDB_Connection;
  125.     friend class CDBL_LangCmd;
  126.     friend class CDBL_RPCCmd;
  127.     friend class CDBL_CursorCmd;
  128.     friend class CDBL_BCPInCmd;
  129.     friend class CDBL_SendDataCmd;
  130. protected:
  131.     CDBL_Connection(CDBLibContext* cntx, DBPROCESS* con,
  132.                     bool reusable, const string& pool_name);
  133.     virtual bool IsAlive();
  134.     virtual CDB_LangCmd*     LangCmd(const string&       lang_query,
  135.                                      unsigned int        nof_params = 0);
  136.     virtual CDB_RPCCmd*      RPC(const string&           rpc_name,
  137.                                  unsigned int            nof_args);
  138.     virtual CDB_BCPInCmd*    BCPIn(const string&         table_name,
  139.                                    unsigned int          nof_columns);
  140.     virtual CDB_CursorCmd*   Cursor(const string&        cursor_name,
  141.                                     const string&        query,
  142.                                     unsigned int         nof_params,
  143.                                     unsigned int         batch_size = 1);
  144.     virtual CDB_SendDataCmd* SendDataCmd(I_ITDescriptor& desc,
  145.                                          size_t          data_size,
  146.                                          bool            log_it = true);
  147.     virtual bool SendData(I_ITDescriptor& desc, CDB_Image& img,
  148.                           bool log_it = true);
  149.     virtual bool SendData(I_ITDescriptor& desc, CDB_Text&  txt,
  150.                           bool log_it = true);
  151.     virtual bool Refresh();
  152.     virtual const string& ServerName() const;
  153.     virtual const string& UserName()   const;
  154.     virtual const string& Password()   const;
  155.     virtual I_DriverContext::TConnectionMode ConnectMode() const;
  156.     virtual bool IsReusable() const;
  157.     virtual const string& PoolName() const;
  158.     virtual I_DriverContext* Context() const;
  159.     virtual void PushMsgHandler(CDB_UserHandler* h);
  160.     virtual void PopMsgHandler (CDB_UserHandler* h);
  161.     virtual CDB_ResultProcessor* SetResultProcessor(CDB_ResultProcessor* rp);
  162.     virtual void Release();
  163.     virtual ~CDBL_Connection();
  164.     void DropCmd(CDB_BaseEnt& cmd);
  165. private:
  166.     bool x_SendData(I_ITDescriptor& desc, CDB_Stream& img, bool log_it = true);
  167.     I_ITDescriptor* x_GetNativeITDescriptor(const CDB_ITDescriptor& descr_in);
  168.     RETCODE x_Results(DBPROCESS* pLink);
  169.     DBPROCESS*      m_Link;
  170.     CDBLibContext*  m_Context;
  171.     CPointerPot     m_CMDs;
  172.     CDBHandlerStack m_MsgHandlers;
  173.     string          m_Server;
  174.     string          m_User;
  175.     string          m_Passwd;
  176.     string          m_Pool;
  177.     bool            m_Reusable;
  178.     bool            m_BCPAble;
  179.     bool            m_SecureLogin;
  180.     CDB_ResultProcessor* m_ResProc;
  181. };
  182. /////////////////////////////////////////////////////////////////////////////
  183. //
  184. //  CDBL_LangCmd::
  185. //
  186. class NCBI_DBAPIDRIVER_DBLIB_EXPORT CDBL_LangCmd : public I_LangCmd
  187. {
  188.     friend class CDBL_Connection;
  189. protected:
  190.     CDBL_LangCmd(CDBL_Connection* conn, DBPROCESS* cmd,
  191.                  const string& lang_query, unsigned int nof_params);
  192.     virtual bool More(const string& query_text);
  193.     virtual bool BindParam(const string& param_name, CDB_Object* param_ptr);
  194.     virtual bool SetParam(const string& param_name, CDB_Object* param_ptr);
  195.     virtual bool Send();
  196.     virtual bool WasSent() const;
  197.     virtual bool Cancel();
  198.     virtual bool WasCanceled() const;
  199.     virtual CDB_Result* Result();
  200.     virtual bool HasMoreResults() const;
  201.     virtual bool HasFailed() const;
  202.     virtual int  RowCount() const;
  203.     virtual void DumpResults();
  204.     virtual void Release();
  205.     virtual ~CDBL_LangCmd();
  206. private:
  207.     bool x_AssignParams();
  208.     CDBL_Connection* m_Connect;
  209.     DBPROCESS*       m_Cmd;
  210.     string           m_Query;
  211.     CDB_Params       m_Params;
  212.     bool             m_WasSent;
  213.     bool             m_HasFailed;
  214.     I_Result*        m_Res;
  215.     int              m_RowCount;
  216.     unsigned int     m_Status;
  217. };
  218. /////////////////////////////////////////////////////////////////////////////
  219. //
  220. //  CTL_RPCCmd::
  221. //
  222. class NCBI_DBAPIDRIVER_DBLIB_EXPORT CDBL_RPCCmd : public I_RPCCmd
  223. {
  224.     friend class CDBL_Connection;
  225. protected:
  226.     CDBL_RPCCmd(CDBL_Connection* con, DBPROCESS* cmd,
  227.                 const string& proc_name, unsigned int nof_params);
  228.     virtual bool BindParam(const string& param_name, CDB_Object* param_ptr,
  229.                            bool out_param = false);
  230.     virtual bool SetParam(const string& param_name, CDB_Object* param_ptr,
  231.                           bool out_param = false);
  232.     virtual bool Send();
  233.     virtual bool WasSent() const;
  234.     virtual bool Cancel();
  235.     virtual bool WasCanceled() const;
  236.     virtual CDB_Result* Result();
  237.     virtual bool HasMoreResults() const;
  238.     virtual bool HasFailed() const ;
  239.     virtual int  RowCount() const;
  240.     virtual void DumpResults();
  241.     virtual void SetRecompile(bool recompile = true);
  242.     virtual void Release();
  243.     ~CDBL_RPCCmd();
  244. private:
  245.     bool x_AssignParams(char* param_buff);
  246.     CDBL_Connection* m_Connect;
  247.     DBPROCESS*       m_Cmd;
  248.     string           m_Query;
  249.     CDB_Params       m_Params;
  250.     bool             m_WasSent;
  251.     bool             m_HasFailed;
  252.     bool             m_Recompile;
  253.     I_Result*        m_Res;
  254.     int              m_RowCount;
  255.     unsigned int     m_Status;
  256. };
  257. /////////////////////////////////////////////////////////////////////////////
  258. //
  259. //  CDBL_CursorCmd::
  260. //
  261. class NCBI_DBAPIDRIVER_DBLIB_EXPORT CDBL_CursorCmd : public I_CursorCmd
  262. {
  263.     friend class CDBL_Connection;
  264. protected:
  265.     CDBL_CursorCmd(CDBL_Connection* con, DBPROCESS* cmd,
  266.                    const string& cursor_name, const string& query,
  267.                    unsigned int nof_params);
  268.     virtual bool BindParam(const string& param_name, CDB_Object* pVal);
  269.     virtual CDB_Result* Open();
  270.     virtual bool Update(const string& table_name, const string& upd_query);
  271.     virtual bool UpdateTextImage(unsigned int item_num, CDB_Stream& data, 
  272.  bool log_it = true);
  273.     virtual CDB_SendDataCmd* SendDataCmd(unsigned int item_num, size_t size, 
  274.  bool log_it = true);
  275.     virtual bool Delete(const string& table_name);
  276.     virtual int  RowCount() const;
  277.     virtual bool Close();
  278.     virtual void Release();
  279.     virtual ~CDBL_CursorCmd();
  280. private:
  281.     bool x_AssignParams();
  282.     I_ITDescriptor* x_GetITDescriptor(unsigned int item_num);
  283.     CDBL_Connection*   m_Connect;
  284.     DBPROCESS*         m_Cmd;
  285.     string             m_Name;
  286.     CDB_LangCmd*       m_LCmd;
  287.     string             m_Query;
  288.     CDB_Params         m_Params;
  289.     bool               m_IsOpen;
  290.     bool               m_HasFailed;
  291.     bool               m_IsDeclared;
  292.     CDBL_CursorResult* m_Res;
  293.     int                m_RowCount;
  294. };
  295. /////////////////////////////////////////////////////////////////////////////
  296. //
  297. //  CDBL_BCPInCmd::
  298. //
  299. class NCBI_DBAPIDRIVER_DBLIB_EXPORT CDBL_BCPInCmd : public I_BCPInCmd
  300. {
  301.     friend class CDBL_Connection;
  302. protected:
  303.     CDBL_BCPInCmd(CDBL_Connection* con, DBPROCESS* cmd,
  304.                   const string& table_name, unsigned int nof_columns);
  305.     virtual bool Bind(unsigned int column_num, CDB_Object* param_ptr);
  306.     virtual bool SendRow();
  307.     virtual bool CompleteBatch();
  308.     virtual bool Cancel();
  309.     virtual bool CompleteBCP();
  310.     virtual void Release();
  311.     ~CDBL_BCPInCmd();
  312. private:
  313.     bool x_AssignParams(void* pb);
  314.     CDBL_Connection* m_Connect;
  315.     DBPROCESS*       m_Cmd;
  316.     CDB_Params       m_Params;
  317.     bool             m_WasSent;
  318.     bool             m_HasFailed;
  319.     bool             m_HasTextImage;
  320.     bool             m_WasBound;
  321. };
  322. /////////////////////////////////////////////////////////////////////////////
  323. //
  324. //  CDBL_SendDataCmd::
  325. //
  326. class NCBI_DBAPIDRIVER_DBLIB_EXPORT CDBL_SendDataCmd : public I_SendDataCmd {
  327.     friend class CDBL_Connection;
  328. protected:
  329.     CDBL_SendDataCmd(CDBL_Connection* con, DBPROCESS* cmd, size_t nof_bytes);
  330.     virtual size_t SendChunk(const void* chunk_ptr, size_t nof_bytes);
  331.     virtual void   Release();
  332.     ~CDBL_SendDataCmd();
  333. private:
  334.     CDBL_Connection* m_Connect;
  335.     DBPROCESS*       m_Cmd;
  336.     size_t           m_Bytes2go;
  337. };
  338. /////////////////////////////////////////////////////////////////////////////
  339. //
  340. //  SDBL_ColDescr::
  341. //
  342. struct SDBL_ColDescr
  343. {
  344.     DBINT      max_length;
  345.     EDB_Type   data_type;
  346.     string     col_name;
  347. };
  348. /////////////////////////////////////////////////////////////////////////////
  349. //
  350. //  CDBL_RowResult::
  351. //
  352. class NCBI_DBAPIDRIVER_DBLIB_EXPORT CDBL_RowResult : public I_Result
  353. {
  354.     friend class CDBL_LangCmd;
  355.     friend class CDBL_RPCCmd;
  356.     friend class CDBL_Connection;
  357. protected:
  358.     CDBL_RowResult(DBPROCESS* cmd, unsigned int* res_status,
  359.                    bool need_init = true);
  360.     virtual EDB_ResType     ResultType() const;
  361.     virtual unsigned int    NofItems() const;
  362.     virtual const char*     ItemName    (unsigned int item_num) const;
  363.     virtual size_t          ItemMaxSize (unsigned int item_num) const;
  364.     virtual EDB_Type        ItemDataType(unsigned int item_num) const;
  365.     virtual bool            Fetch();
  366.     virtual int             CurrentItemNo() const;
  367.     virtual CDB_Object*     GetItem(CDB_Object* item_buf = 0);
  368.     virtual size_t          ReadItem(void* buffer, size_t buffer_size,
  369.                                      bool* is_null = 0);
  370.     virtual I_ITDescriptor* GetImageOrTextDescriptor();
  371.     virtual bool            SkipItem();
  372.     virtual ~CDBL_RowResult();
  373.     // data
  374.     DBPROCESS*     m_Cmd;
  375.     int            m_CurrItem;
  376.     bool           m_EOR;
  377.     unsigned int   m_NofCols;
  378.     int            m_CmdNum;
  379.     unsigned int*  m_ResStatus;
  380.     size_t         m_Offset;
  381.     SDBL_ColDescr* m_ColFmt;
  382. };
  383. /////////////////////////////////////////////////////////////////////////////
  384. //
  385. //  CDBL_BlobResult::
  386. //
  387. class NCBI_DBAPIDRIVER_DBLIB_EXPORT CDBL_BlobResult : public I_Result
  388. {
  389.     friend class CDBL_LangCmd;
  390.     friend class CDBL_RPCCmd;
  391.     friend class CDBL_Connection;
  392. protected:
  393.     CDBL_BlobResult(DBPROCESS* cmd);
  394.     virtual EDB_ResType     ResultType() const;
  395.     virtual unsigned int    NofItems() const;
  396.     virtual const char*     ItemName    (unsigned int item_num) const;
  397.     virtual size_t          ItemMaxSize (unsigned int item_num) const;
  398.     virtual EDB_Type        ItemDataType(unsigned int item_num) const;
  399.     virtual bool            Fetch();
  400.     virtual int             CurrentItemNo() const;
  401.     virtual CDB_Object*     GetItem(CDB_Object* item_buf = 0);
  402.     virtual size_t          ReadItem(void* buffer, size_t buffer_size,
  403.                                      bool* is_null = 0);
  404.     virtual I_ITDescriptor* GetImageOrTextDescriptor();
  405.     virtual bool            SkipItem();
  406.     virtual ~CDBL_BlobResult();
  407.     // data
  408.     DBPROCESS*    m_Cmd;
  409.     int           m_CurrItem;
  410.     bool          m_EOR;
  411.     int           m_CmdNum;
  412.     char          m_Buff[2048];
  413.     SDBL_ColDescr m_ColFmt;
  414.     int           m_BytesInBuffer;
  415.     int           m_ReadedBytes;
  416. };
  417. /////////////////////////////////////////////////////////////////////////////
  418. //
  419. //  CDBL_ParamResult::
  420. //  CDBL_ComputeResult::
  421. //  CDBL_StatusResult::
  422. //  CDBL_CursorResult::
  423. //
  424. class NCBI_DBAPIDRIVER_DBLIB_EXPORT CDBL_ParamResult : public CDBL_RowResult
  425. {
  426.     friend class CDBL_LangCmd;
  427.     friend class CDBL_RPCCmd;
  428.     friend class CDBL_Connection;
  429. protected:
  430.     CDBL_ParamResult(DBPROCESS* cmd, int nof_params);
  431.     virtual EDB_ResType     ResultType() const;
  432.     virtual bool            Fetch();
  433.     virtual CDB_Object*     GetItem(CDB_Object* item_buff = 0);
  434.     virtual size_t          ReadItem(void* buffer, size_t buffer_size,
  435.                                      bool* is_null = 0);
  436.     virtual I_ITDescriptor* GetImageOrTextDescriptor();
  437.     virtual ~CDBL_ParamResult();
  438.     // data
  439.     bool m_1stFetch;
  440. };
  441. class NCBI_DBAPIDRIVER_DBLIB_EXPORT CDBL_ComputeResult : public CDBL_RowResult
  442. {
  443.     friend class CDBL_LangCmd;
  444.     friend class CDBL_RPCCmd;
  445.     friend class CDBL_Connection;
  446. protected:
  447.     CDBL_ComputeResult(DBPROCESS* cmd, unsigned int* res_stat);
  448.     virtual EDB_ResType     ResultType() const;
  449.     virtual bool            Fetch();
  450.     virtual int             CurrentItemNo() const;
  451.     virtual CDB_Object*     GetItem(CDB_Object* item_buff = 0);
  452.     virtual size_t          ReadItem(void* buffer, size_t buffer_size,
  453.                                      bool* is_null = 0);
  454.     virtual I_ITDescriptor* GetImageOrTextDescriptor();
  455.     virtual ~CDBL_ComputeResult();
  456.     // data
  457.     int  m_ComputeId;
  458.     bool m_1stFetch;
  459. };
  460. class NCBI_DBAPIDRIVER_DBLIB_EXPORT CDBL_StatusResult : public I_Result
  461. {
  462.     friend class CDBL_LangCmd;
  463.     friend class CDBL_RPCCmd;
  464.     friend class CDBL_Connection;
  465. protected:
  466.     CDBL_StatusResult(DBPROCESS* cmd);
  467.     virtual EDB_ResType     ResultType() const;
  468.     virtual unsigned int    NofItems() const;
  469.     virtual const char*     ItemName    (unsigned int item_num) const;
  470.     virtual size_t          ItemMaxSize (unsigned int item_num) const;
  471.     virtual EDB_Type        ItemDataType(unsigned int item_num) const;
  472.     virtual bool            Fetch();
  473.     virtual int             CurrentItemNo() const ;
  474.     virtual CDB_Object*     GetItem(CDB_Object* item_buff = 0);
  475.     virtual size_t          ReadItem(void* buffer, size_t buffer_size,
  476.                                      bool* is_null = 0);
  477.     virtual I_ITDescriptor* GetImageOrTextDescriptor();
  478.     virtual bool            SkipItem();
  479.     virtual ~CDBL_StatusResult();
  480.     // data
  481.     int    m_Val;
  482.     size_t m_Offset;
  483.     bool   m_1stFetch;
  484. };
  485. class NCBI_DBAPIDRIVER_DBLIB_EXPORT CDBL_CursorResult : public I_Result
  486. {
  487.     friend class CDBL_CursorCmd;
  488. protected:
  489.     CDBL_CursorResult(CDB_LangCmd* cmd);
  490.     virtual EDB_ResType     ResultType() const;
  491.     virtual unsigned int    NofItems() const;
  492.     virtual const char*     ItemName    (unsigned int item_num) const;
  493.     virtual size_t          ItemMaxSize (unsigned int item_num) const;
  494.     virtual EDB_Type        ItemDataType(unsigned int item_num) const;
  495.     virtual bool            Fetch();
  496.     virtual int             CurrentItemNo() const;
  497.     virtual CDB_Object*     GetItem(CDB_Object* item_buff = 0);
  498.     virtual size_t          ReadItem(void* buffer, size_t buffer_size,
  499.                                      bool* is_null = 0);
  500.     virtual I_ITDescriptor* GetImageOrTextDescriptor();
  501.     virtual bool            SkipItem();
  502.     virtual ~CDBL_CursorResult();
  503.     // data
  504.     CDB_LangCmd* m_Cmd;
  505.     CDB_Result*  m_Res;
  506. };
  507. /////////////////////////////////////////////////////////////////////////////
  508. //
  509. //  CDBL_ITDescriptor::
  510. //
  511. #define CDBL_ITDESCRIPTOR_TYPE_MAGNUM 0xd00
  512. class NCBI_DBAPIDRIVER_DBLIB_EXPORT CDBL_ITDescriptor : public I_ITDescriptor
  513. {
  514.     friend class CDBL_RowResult;
  515.     friend class CDBL_BlobResult;
  516.     friend class CDBL_Connection;
  517.     friend class CDBL_CursorCmd;
  518. public:
  519.     virtual int DescriptorType() const;
  520.     virtual ~CDBL_ITDescriptor();
  521. private:
  522.     bool x_MakeObjName(DBCOLINFO* col_info);
  523. protected:
  524.     CDBL_ITDescriptor(DBPROCESS* m_link, int col_num);
  525.     CDBL_ITDescriptor(DBPROCESS* m_link, const CDB_ITDescriptor& inp_d);
  526.     // data
  527.     string   m_ObjName;
  528.     DBBINARY m_TxtPtr[DBTXPLEN];
  529.     DBBINARY m_TimeStamp[DBTXTSLEN];
  530.     bool     m_TxtPtr_is_NULL;
  531.     bool     m_TimeStamp_is_NULL;
  532. };
  533. END_NCBI_SCOPE
  534. #endif  /* DBAPI_DRIVER_DBLIB___INTERFACES__HPP */
  535. /*
  536.  * ===========================================================================
  537.  * $Log: interfaces.hpp,v $
  538.  * Revision 1000.0  2003/10/29 20:19:28  gouriano
  539.  * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.18
  540.  *
  541.  * Revision 1.18  2003/07/17 20:42:02  soussov
  542.  * connections pool improvements
  543.  *
  544.  * Revision 1.17  2003/06/05 15:55:34  soussov
  545.  * adds DumpResults method for LangCmd and RPC, SetResultProcessor method for Connection interface
  546.  *
  547.  * Revision 1.16  2003/04/01 20:27:17  vakatov
  548.  * Temporarily rollback to R1.14 -- until more backward-incompatible
  549.  * changes (in CException) are ready to commit (to avoid breaking the
  550.  * compatibility twice).
  551.  *
  552.  * Revision 1.14  2003/02/13 15:43:00  ivanov
  553.  * Added export specifier NCBI_DBAPIDRIVER_DBLIB_EXPORT for class definitions
  554.  *
  555.  * Revision 1.13  2002/07/02 16:03:28  soussov
  556.  * splitting Sybase dblib and MS dblib
  557.  *
  558.  * Revision 1.12  2002/06/21 14:33:19  soussov
  559.  * defines version for microsoft
  560.  *
  561.  * Revision 1.11  2002/06/19 16:46:31  soussov
  562.  * changes default version from unknown to 46
  563.  *
  564.  * Revision 1.10  2002/05/29 22:04:43  soussov
  565.  * Makes BlobResult read ahead
  566.  *
  567.  * Revision 1.9  2002/03/28 00:39:49  vakatov
  568.  * CDBL_CursorCmd::  use CDBL_CursorResult rather than I_Result (to fix access)
  569.  *
  570.  * Revision 1.8  2002/03/26 15:26:23  soussov
  571.  * new image/text operations added
  572.  *
  573.  * Revision 1.7  2002/01/14 20:26:15  sapojnik
  574.  * new SampleDBAPI_Blob, etc.
  575.  *
  576.  * Revision 1.6  2002/01/08 18:09:39  sapojnik
  577.  * Syabse to MSSQL name translations moved to interface_p.hpp
  578.  *
  579.  * Revision 1.5  2002/01/08 15:58:00  sapojnik
  580.  * Moved to const_syb2ms.hpp: Sybase dblib constants translations to
  581.  * Microsoft-compatible ones
  582.  *
  583.  * Revision 1.4  2002/01/03 17:07:53  sapojnik
  584.  * fixing CR/LF mixup
  585.  *
  586.  * Revision 1.3  2002/01/03 15:46:24  sapojnik
  587.  * ported to MS SQL (about 12 'ifdef NCBI_OS_MSWIN' in 6 files)
  588.  *
  589.  * Revision 1.2  2001/10/24 16:36:05  lavr
  590.  * Type of CDBL_*Result::m_Offset changed to 'size_t'
  591.  *
  592.  * Revision 1.1  2001/10/22 15:17:54  lavr
  593.  * This is a major revamp (by Anton Lavrentiev, with help from Vladimir
  594.  * Soussov and Denis Vakatov) of the DBAPI "driver" libs originally
  595.  * written by Vladimir Soussov. The revamp follows the one of CTLib
  596.  * driver, and it involved massive code shuffling and grooming, numerous
  597.  * local API redesigns, adding comments and incorporating DBAPI to
  598.  * the C++ Toolkit.
  599.  *
  600.  * ===========================================================================
  601.  */