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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: ptrstr.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 19:43:33  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: ptrstr.cpp,v 1000.1 2004/06/01 19:43:33 gouriano Exp $
  10. * ===========================================================================
  11. *
  12. *                            PUBLIC DOMAIN NOTICE
  13. *               National Center for Biotechnology Information
  14. *
  15. *  This software/database is a "United States Government Work" under the
  16. *  terms of the United States Copyright Act.  It was written as part of
  17. *  the author's official duties as a United States Government employee and
  18. *  thus cannot be copyrighted.  This software/database is freely available
  19. *  to the public for use. The National Library of Medicine and the U.S.
  20. *  Government have not placed any restriction on its use or reproduction.
  21. *
  22. *  Although all reasonable efforts have been taken to ensure the accuracy
  23. *  and reliability of the software and data, the NLM and the U.S.
  24. *  Government do not and cannot warrant the performance or results that
  25. *  may be obtained by using this software or data. The NLM and the U.S.
  26. *  Government disclaim all warranties, express or implied, including
  27. *  warranties of performance, merchantability or fitness for any particular
  28. *  purpose.
  29. *
  30. *  Please cite the author in any work or product based on this material.
  31. *
  32. * ===========================================================================
  33. *
  34. * Author: Eugene Vasilchenko
  35. *
  36. * File Description:
  37. *   Type info for class generation: includes, used classes, C code etc.
  38. *
  39. * ---------------------------------------------------------------------------
  40. * $Log: ptrstr.cpp,v $
  41. * Revision 1000.1  2004/06/01 19:43:33  gouriano
  42. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9
  43. *
  44. * Revision 1.9  2004/05/17 21:03:14  gorelenk
  45. * Added include of PCH ncbi_pch.hpp
  46. *
  47. * Revision 1.8  2003/04/29 18:31:09  gouriano
  48. * object data member initialization verification
  49. *
  50. * Revision 1.7  2000/08/25 15:59:23  vasilche
  51. * Renamed directory tool -> datatool.
  52. *
  53. * Revision 1.6  2000/07/11 20:36:29  vasilche
  54. * Removed unnecessary generation of namespace references for enum members.
  55. * Removed obsolete methods.
  56. *
  57. * Revision 1.5  2000/06/16 16:31:39  vasilche
  58. * Changed implementation of choices and classes info to allow use of the same classes in generated and user written classes.
  59. *
  60. * Revision 1.4  2000/04/17 19:11:09  vasilche
  61. * Fixed failed assertion.
  62. * Removed redundant namespace specifications.
  63. *
  64. * Revision 1.3  2000/04/12 15:36:52  vasilche
  65. * Added -on <namespace> argument to datatool.
  66. * Removed unnecessary namespace specifications in generated files.
  67. *
  68. * Revision 1.2  2000/04/07 19:26:33  vasilche
  69. * Added namespace support to datatool.
  70. * By default with argument -oR datatool will generate objects in namespace
  71. * NCBI_NS_NCBI::objects (aka ncbi::objects).
  72. * Datatool's classes also moved to NCBI namespace.
  73. *
  74. * Revision 1.1  2000/03/07 14:06:32  vasilche
  75. * Added generation of reference counted objects.
  76. *
  77. * ===========================================================================
  78. */
  79. #include <ncbi_pch.hpp>
  80. #include <serial/datatool/ptrstr.hpp>
  81. #include <serial/datatool/classctx.hpp>
  82. #include <serial/datatool/namespace.hpp>
  83. BEGIN_NCBI_SCOPE
  84. CPointerTypeStrings::CPointerTypeStrings(CTypeStrings* dataType)
  85.     : m_DataType(dataType)
  86. {
  87. }
  88. CPointerTypeStrings::CPointerTypeStrings(AutoPtr<CTypeStrings> dataType)
  89.     : m_DataType(dataType)
  90. {
  91. }
  92. CPointerTypeStrings::~CPointerTypeStrings(void)
  93. {
  94. }
  95. CTypeStrings::EKind CPointerTypeStrings::GetKind(void) const
  96. {
  97.     return eKindPointer;
  98. }
  99. string CPointerTypeStrings::GetCType(const CNamespace& ns) const
  100. {
  101.     return GetDataType()->GetCType(ns)+'*';
  102. }
  103. string CPointerTypeStrings::GetPrefixedCType(const CNamespace& ns,
  104.                                              const string& /*methodPrefix*/) const
  105. {
  106.     return GetCType(ns);
  107. }
  108. string CPointerTypeStrings::GetRef(const CNamespace& ns) const
  109. {
  110.     return "POINTER, ("+GetDataType()->GetRef(ns)+')';
  111. }
  112. string CPointerTypeStrings::GetInitializer(void) const
  113. {
  114.     return "0";
  115. }
  116. string CPointerTypeStrings::GetDestructionCode(const string& expr) const
  117. {
  118.     return
  119.         GetDataType()->GetDestructionCode("*(" + expr + ')')+
  120.         "delete ("+expr+");n";
  121. }
  122. string CPointerTypeStrings::GetIsSetCode(const string& var) const
  123. {
  124.     return "("+var+") != 0";
  125. }
  126. string CPointerTypeStrings::GetResetCode(const string& var) const
  127. {
  128.     return var + " = 0;n";
  129. }
  130. void CPointerTypeStrings::GenerateTypeCode(CClassContext& ctx) const
  131. {
  132.     GetDataType()->GeneratePointerTypeCode(ctx);
  133. }
  134. CRefTypeStrings::CRefTypeStrings(CTypeStrings* dataType)
  135.     : CParent(dataType)
  136. {
  137. }
  138. CRefTypeStrings::CRefTypeStrings(AutoPtr<CTypeStrings> dataType)
  139.     : CParent(dataType)
  140. {
  141. }
  142. CRefTypeStrings::~CRefTypeStrings(void)
  143. {
  144. }
  145. CTypeStrings::EKind CRefTypeStrings::GetKind(void) const
  146. {
  147.     return eKindRef;
  148. }
  149. string CRefTypeStrings::GetCType(const CNamespace& ns) const
  150. {
  151.     return ns.GetNamespaceRef(CNamespace::KNCBINamespace)+"CRef< "+GetDataType()->GetCType(ns)+" >";
  152. }
  153. string CRefTypeStrings::GetPrefixedCType(const CNamespace& ns,
  154.                                          const string& methodPrefix) const
  155. {
  156.     return ns.GetNamespaceRef(CNamespace::KNCBINamespace)+"CRef< "
  157.         + GetDataType()->GetPrefixedCType(ns,methodPrefix)+" >";
  158. }
  159. string CRefTypeStrings::GetRef(const CNamespace& ns) const
  160. {
  161.     return "STL_CRef, ("+GetDataType()->GetRef(ns)+')';
  162. }
  163. string CRefTypeStrings::GetInitializer(void) const
  164. {
  165.     return NcbiEmptyString;
  166. }
  167. string CRefTypeStrings::GetDestructionCode(const string& expr) const
  168. {
  169.     return GetDataType()->GetDestructionCode("*(" + expr + ')');
  170. }
  171. string CRefTypeStrings::GetIsSetCode(const string& var) const
  172. {
  173.     return var;
  174. }
  175. string CRefTypeStrings::GetResetCode(const string& var) const
  176. {
  177.     return var + ".Reset();n";
  178. }
  179. END_NCBI_SCOPE