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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: lds_db.hpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/04/12 17:35:01  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.14
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef LDS_DB_HPP__
  10. #define LDS_DB_HPP__
  11. /*  $Id: lds_db.hpp,v 1000.1 2004/04/12 17:35:01 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: Anatoliy Kuznetsov
  37.  *
  38.  * File Description:   Local data storage, database description.
  39.  *
  40.  */
  41. #include <bdb/bdb_file.hpp>
  42. BEGIN_NCBI_SCOPE
  43. BEGIN_SCOPE(objects)
  44. struct NCBI_LDS_EXPORT SLDS_FileDB : public CBDB_File
  45. {
  46.     CBDB_FieldInt4     file_id;
  47.     CBDB_FieldString   file_name;
  48.     CBDB_FieldInt4     format;
  49.     CBDB_FieldInt4     time_stamp;
  50.     CBDB_FieldInt4     CRC;
  51.     CBDB_FieldInt4     file_size;   
  52.     SLDS_FileDB();
  53. };
  54. struct NCBI_LDS_EXPORT SLDS_AnnotDB : public CBDB_File
  55. {
  56.     CBDB_FieldInt4    annot_id;
  57.     CBDB_FieldInt4    file_id;
  58.     CBDB_FieldInt4    annot_type;
  59.     CBDB_FieldInt4    file_offset;
  60.     CBDB_FieldInt4    top_level_id;
  61.     SLDS_AnnotDB();
  62. };
  63. struct NCBI_LDS_EXPORT SLDS_SeqId_List : public CBDB_File
  64. {
  65.     CBDB_FieldInt4    object_id;
  66.     CBDB_FieldString  seq_id;
  67.     SLDS_SeqId_List();
  68. };
  69. struct NCBI_LDS_EXPORT SLDS_ObjectTypeDB : public CBDB_File
  70. {
  71.     CBDB_FieldInt4    object_type;
  72.     CBDB_FieldString  type_name;
  73.     SLDS_ObjectTypeDB();
  74. };
  75. struct NCBI_LDS_EXPORT SLDS_ObjectDB : public CBDB_File
  76. {
  77.     CBDB_FieldInt4    object_id;
  78.     CBDB_FieldInt4    file_id; 
  79.     CBDB_FieldString  primary_seqid;
  80.     CBDB_FieldInt4    seqlist_id; 
  81.     CBDB_FieldInt4    object_type;
  82.     CBDB_FieldInt4    file_offset;
  83.     CBDB_FieldInt4    TSE_object_id;     // TOP level seq entry object id
  84.     CBDB_FieldInt4    parent_object_id;  // Parent SeqEntry object id
  85.     CBDB_FieldString  object_title;
  86.     CBDB_FieldString  organism;
  87.     CBDB_FieldString  keywords;
  88.     CBDB_FieldString  seq_ids;
  89.     SLDS_ObjectDB();
  90. };
  91. struct NCBI_LDS_EXPORT SLDS_Annot2ObjectDB : public CBDB_File
  92. {
  93.     CBDB_FieldInt4  object_id;
  94.     CBDB_FieldInt4  annot_id;
  95.     SLDS_Annot2ObjectDB();
  96. };
  97. //////////////////////////////////////////////////////////////////
  98. //
  99. // 
  100. // Structure puts together all tables used in LDS
  101. //
  102. struct NCBI_LDS_EXPORT SLDS_TablesCollection
  103. {
  104.     SLDS_FileDB          file_db;
  105.     SLDS_ObjectTypeDB    object_type_db;
  106.     SLDS_ObjectDB        object_db;
  107.     SLDS_AnnotDB         annot_db;
  108.     SLDS_Annot2ObjectDB  annot2obj_db;
  109.     SLDS_SeqId_List      seq_id_list;
  110. };
  111. /////////////////////////////////////////////////////////////////////////////
  112. //  IMPLEMENTATION of INLINE functions
  113. /////////////////////////////////////////////////////////////////////////////
  114. inline 
  115. SLDS_FileDB::SLDS_FileDB()
  116. {
  117.     BindKey("file_id", &file_id);
  118.     BindData("file_name", &file_name, 2048);
  119.     BindData("format", &format);
  120.     BindData("time_stamp", &time_stamp, 64);
  121.     BindData("CRC", &CRC);
  122.     BindData("file_size", &file_size);
  123. }
  124. inline 
  125. SLDS_AnnotDB::SLDS_AnnotDB()
  126. {
  127.     BindKey("annot_id", &annot_id);
  128.     BindData("file_id", &file_id);
  129.     BindData("annot_type", &annot_type);
  130.     BindData("file_offset", &file_offset);
  131.     BindData("top_level_id", &top_level_id);
  132. }
  133. inline
  134. SLDS_SeqId_List::SLDS_SeqId_List()
  135. : CBDB_File(CBDB_File::eDuplicatesEnable)
  136. {
  137.     BindKey("object_id", &object_id);
  138.     BindData("seq_id", &seq_id);
  139. }
  140. inline 
  141. SLDS_ObjectTypeDB::SLDS_ObjectTypeDB()
  142. {
  143.     BindKey("object_type", &object_type);
  144.     BindData("type_name",  &type_name);
  145. }
  146. inline 
  147. SLDS_ObjectDB::SLDS_ObjectDB()
  148. {
  149.     BindKey("object_id", &object_id);
  150.     BindData("file_id", &file_id);
  151.     BindData("primary_seqid", &primary_seqid);
  152.     BindData("seqlist_id", &seqlist_id);
  153.     BindData("object_type", &object_type);
  154.     BindData("file_offset", &file_offset);
  155.     BindData("TSE_object_id", &TSE_object_id);
  156.     BindData("parent_object_id", &parent_object_id);
  157.     BindData("object_title", &object_title, 1024, eNullable);
  158.     BindData("organism", &organism, 256, eNullable);
  159.     BindData("keywords", &keywords, 2048, eNullable);
  160.     BindData("seq_ids", &seq_ids, 65536, eNullable);
  161. }
  162. inline 
  163. SLDS_Annot2ObjectDB::SLDS_Annot2ObjectDB()
  164. {
  165.     BindKey("object_id", &object_id);
  166.     BindKey("annot_id", &annot_id);
  167. }
  168. END_SCOPE(objects)
  169. END_NCBI_SCOPE
  170. /*
  171. * ===========================================================================
  172. * $Log: lds_db.hpp,v $
  173. * Revision 1000.1  2004/04/12 17:35:01  gouriano
  174. * PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.14
  175. *
  176. * Revision 1.14  2004/03/17 17:20:59  kuznets
  177. * Code clean up
  178. *
  179. * Revision 1.13  2004/03/09 17:16:32  kuznets
  180. * Merge object attributes with objects
  181. *
  182. * Revision 1.12  2003/10/08 18:11:33  kuznets
  183. * Increased length of "object_title" field
  184. *
  185. * Revision 1.11  2003/07/09 19:27:59  kuznets
  186. * Added Sequence id list table.
  187. *
  188. * Revision 1.10  2003/06/27 14:37:22  kuznets
  189. * Fixed comilation problem
  190. *
  191. * Revision 1.9  2003/06/13 15:59:05  kuznets
  192. * Added space separated list of all sequence ids (object attributes)
  193. *
  194. * Revision 1.8  2003/06/04 16:33:32  kuznets
  195. * Increased length of object_title field in SLDS_ObjectAttrDB
  196. *
  197. * Revision 1.7  2003/06/03 19:14:02  kuznets
  198. * Added lds dll export/import specifications
  199. *
  200. * Revision 1.6  2003/05/30 20:26:33  kuznets
  201. * Fixed field binding in "objects"
  202. *
  203. * Revision 1.5  2003/05/30 14:05:39  kuznets
  204. * Added primary_seqid field to the objects table.
  205. *
  206. * Revision 1.4  2003/05/23 20:33:33  kuznets
  207. * Bulk changes in lds library, code reorganizations, implemented top level
  208. * objects read, metainformation persistance implemented for top level objects...
  209. *
  210. * Revision 1.3  2003/05/23 18:21:21  kuznets
  211. * +SLDS_TablesCollection
  212. *
  213. * Revision 1.2  2003/05/22 19:11:35  kuznets
  214. * +SLDS_ObjectTypeDB
  215. *
  216. * Revision 1.1  2003/05/22 13:24:45  kuznets
  217. * Initial revision
  218. *
  219. *
  220. * ===========================================================================
  221. */
  222. #endif