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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: stdstr.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 17:37:52  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.10
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef STDSTR_HPP
  10. #define STDSTR_HPP
  11. /*  $Id: stdstr.hpp,v 1000.0 2003/10/29 17:37:52 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: Eugene Vasilchenko
  37. *
  38. * File Description:
  39. *   C++ class info: includes, used classes, C++ code etc.
  40. *
  41. * ---------------------------------------------------------------------------
  42. * $Log: stdstr.hpp,v $
  43. * Revision 1000.0  2003/10/29 17:37:52  gouriano
  44. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.10
  45. *
  46. * Revision 1.10  2003/08/13 15:45:00  gouriano
  47. * implemented generation of code, which uses AnyContent objects
  48. *
  49. * Revision 1.9  2003/04/29 18:29:34  gouriano
  50. * object data member initialization verification
  51. *
  52. * Revision 1.8  2000/08/25 15:58:48  vasilche
  53. * Renamed directory tool -> datatool.
  54. *
  55. * Revision 1.7  2000/07/11 20:36:01  vasilche
  56. * Removed unnecessary generation of namespace references for enum members.
  57. * Removed obsolete methods.
  58. *
  59. * Revision 1.6  2000/06/16 16:31:13  vasilche
  60. * Changed implementation of choices and classes info to allow use of the same classes in generated and user written classes.
  61. *
  62. * Revision 1.5  2000/04/17 19:11:05  vasilche
  63. * Fixed failed assertion.
  64. * Removed redundant namespace specifications.
  65. *
  66. * Revision 1.4  2000/04/12 15:36:41  vasilche
  67. * Added -on <namespace> argument to datatool.
  68. * Removed unnecessary namespace specifications in generated files.
  69. *
  70. * Revision 1.3  2000/04/07 19:26:12  vasilche
  71. * Added namespace support to datatool.
  72. * By default with argument -oR datatool will generate objects in namespace
  73. * NCBI_NS_NCBI::objects (aka ncbi::objects).
  74. * Datatool's classes also moved to NCBI namespace.
  75. *
  76. * Revision 1.2  2000/02/17 20:05:03  vasilche
  77. * Inline methods now will be generated in *_Base.inl files.
  78. * Fixed processing of StringStore.
  79. * Renamed in choices: Selected() -> Which(), E_choice -> E_Choice.
  80. * Enumerated values now will preserve case as in ASN.1 definition.
  81. *
  82. * Revision 1.1  2000/02/01 21:46:22  vasilche
  83. * Added CGeneratedChoiceTypeInfo for generated choice classes.
  84. * Removed CMemberInfo subclasses.
  85. * Added support for DEFAULT/OPTIONAL members.
  86. * Changed class generation.
  87. * Moved datatool headers to include/internal/serial/tool.
  88. *
  89. * Revision 1.5  2000/01/10 19:46:47  vasilche
  90. * Fixed encoding/decoding of REAL type.
  91. * Fixed encoding/decoding of StringStore.
  92. * Fixed encoding/decoding of NULL type.
  93. * Fixed error reporting.
  94. * Reduced object map (only classes).
  95. *
  96. * Revision 1.4  1999/12/01 17:36:28  vasilche
  97. * Fixed CHOICE processing.
  98. *
  99. * Revision 1.3  1999/11/16 15:41:17  vasilche
  100. * Added plain pointer choice.
  101. * By default we use C pointer instead of auto_ptr.
  102. * Start adding initializers.
  103. *
  104. * Revision 1.2  1999/11/15 19:36:21  vasilche
  105. * Fixed warnings on GCC
  106. *
  107. * ===========================================================================
  108. */
  109. #include <serial/datatool/typestr.hpp>
  110. #include <serial/datatool/namespace.hpp>
  111. BEGIN_NCBI_SCOPE
  112. class CStdTypeStrings : public CTypeStrings
  113. {
  114. public:
  115.     CStdTypeStrings(const string& type);
  116.     EKind GetKind(void) const;
  117.     string GetCType(const CNamespace& ns) const;
  118.     string GetPrefixedCType(const CNamespace& ns,
  119.                             const string& methodPrefix) const;
  120.     string GetRef(const CNamespace& ns) const;
  121.     string GetInitializer(void) const;
  122. private:
  123.     string m_CType;
  124.     CNamespace m_Namespace;
  125. };
  126. class CNullTypeStrings : public CTypeStrings
  127. {
  128. public:
  129.     EKind GetKind(void) const;
  130.     bool HaveSpecialRef(void) const;
  131.     string GetCType(const CNamespace& ns) const;
  132.     string GetPrefixedCType(const CNamespace& ns,
  133.                             const string& methodPrefix) const;
  134.     string GetRef(const CNamespace& ns) const;
  135.     string GetInitializer(void) const;
  136. };
  137. class CStringTypeStrings : public CStdTypeStrings
  138. {
  139.     typedef CStdTypeStrings CParent;
  140. public:
  141.     CStringTypeStrings(const string& type);
  142.     EKind GetKind(void) const;
  143.     string GetInitializer(void) const;
  144.     string GetResetCode(const string& var) const;
  145.     void GenerateTypeCode(CClassContext& ctx) const;
  146. };
  147. class CStringStoreTypeStrings : public CStringTypeStrings
  148. {
  149.     typedef CStringTypeStrings CParent;
  150. public:
  151.     CStringStoreTypeStrings(const string& type);
  152.     bool HaveSpecialRef(void) const;
  153.     string GetRef(const CNamespace& ns) const;
  154. };
  155. class CAnyContentTypeStrings : public CStdTypeStrings
  156. {
  157.     typedef CStdTypeStrings CParent;
  158. public:
  159.     CAnyContentTypeStrings(const string& type);
  160.     EKind GetKind(void) const;
  161.     string GetInitializer(void) const;
  162.     string GetResetCode(const string& var) const;
  163.     void GenerateTypeCode(CClassContext& ctx) const;
  164. };
  165. END_NCBI_SCOPE
  166. #endif