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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: ptrstr.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 17:37:12  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.7
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef PTRSTR_HPP
  10. #define PTRSTR_HPP
  11. /*  $Id: ptrstr.hpp,v 1000.0 2003/10/29 17:37:12 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: ptrstr.hpp,v $
  43. * Revision 1000.0  2003/10/29 17:37:12  gouriano
  44. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.7
  45. *
  46. * Revision 1.7  2003/04/29 18:29:34  gouriano
  47. * object data member initialization verification
  48. *
  49. * Revision 1.6  2000/08/25 15:58:47  vasilche
  50. * Renamed directory tool -> datatool.
  51. *
  52. * Revision 1.5  2000/07/11 20:36:01  vasilche
  53. * Removed unnecessary generation of namespace references for enum members.
  54. * Removed obsolete methods.
  55. *
  56. * Revision 1.4  2000/06/16 16:31:13  vasilche
  57. * Changed implementation of choices and classes info to allow use of the same classes in generated and user written classes.
  58. *
  59. * Revision 1.3  2000/04/17 19:11:05  vasilche
  60. * Fixed failed assertion.
  61. * Removed redundant namespace specifications.
  62. *
  63. * Revision 1.2  2000/04/07 19:26:11  vasilche
  64. * Added namespace support to datatool.
  65. * By default with argument -oR datatool will generate objects in namespace
  66. * NCBI_NS_NCBI::objects (aka ncbi::objects).
  67. * Datatool's classes also moved to NCBI namespace.
  68. *
  69. * Revision 1.1  2000/03/07 14:06:05  vasilche
  70. * Added generation of reference counted objects.
  71. *
  72. * ===========================================================================
  73. */
  74. #include <serial/datatool/typestr.hpp>
  75. #include <corelib/ncbiutil.hpp>
  76. BEGIN_NCBI_SCOPE
  77. class CPointerTypeStrings : public CTypeStrings
  78. {
  79.     typedef CTypeStrings CParent;
  80. public:
  81.     CPointerTypeStrings(CTypeStrings* type);
  82.     CPointerTypeStrings(AutoPtr<CTypeStrings> type);
  83.     ~CPointerTypeStrings(void);
  84.     const CTypeStrings* GetDataType(void) const
  85.         {
  86.             return m_DataType.get();
  87.         }
  88.     void GenerateTypeCode(CClassContext& ctx) const;
  89.     EKind GetKind(void) const;
  90.     string GetCType(const CNamespace& ns) const;
  91.     string GetPrefixedCType(const CNamespace& ns,
  92.                             const string& methodPrefix) const;
  93.     string GetRef(const CNamespace& ns) const;
  94.     string GetInitializer(void) const;
  95.     string GetDestructionCode(const string& expr) const;
  96.     string GetIsSetCode(const string& var) const;
  97.     string GetResetCode(const string& var) const;
  98. private:
  99.     AutoPtr<CTypeStrings> m_DataType;
  100. };
  101. class CRefTypeStrings : public CPointerTypeStrings
  102. {
  103.     typedef CPointerTypeStrings CParent;
  104. public:
  105.     CRefTypeStrings(CTypeStrings* type);
  106.     CRefTypeStrings(AutoPtr<CTypeStrings> type);
  107.     ~CRefTypeStrings(void);
  108.     EKind GetKind(void) const;
  109.     string GetCType(const CNamespace& ns) const;
  110.     string GetPrefixedCType(const CNamespace& ns,
  111.                             const string& methodPrefix) const;
  112.     string GetRef(const CNamespace& ns) const;
  113.     string GetInitializer(void) const;
  114.     string GetDestructionCode(const string& expr) const;
  115.     string GetIsSetCode(const string& var) const;
  116.     string GetResetCode(const string& var) const;
  117. };
  118. END_NCBI_SCOPE
  119. #endif