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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: Int_fuzz.hpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/04/12 17:23:42  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.5
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: Int_fuzz.hpp,v 1000.1 2004/04/12 17:23:42 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:  .......
  35.  *
  36.  * File Description:
  37.  *   .......
  38.  *
  39.  * Remark:
  40.  *   This code was originally generated by application DATATOOL
  41.  *   using specifications from the ASN data definition file
  42.  *   'general.asn'.
  43.  *
  44.  * ===========================================================================
  45.  */
  46. #ifndef OBJECTS_GENERAL_INT_FUZZ_HPP
  47. #define OBJECTS_GENERAL_INT_FUZZ_HPP
  48. // generated includes
  49. #include <objects/general/Int_fuzz_.hpp>
  50. // generated classes
  51. BEGIN_NCBI_SCOPE
  52. BEGIN_objects_SCOPE // namespace ncbi::objects::
  53. // Forward declarations
  54. class NCBI_GENERAL_EXPORT CInt_fuzz : public CInt_fuzz_Base
  55. {
  56.     typedef CInt_fuzz_Base Tparent;
  57. public:
  58.     // constructor
  59.     CInt_fuzz(void);
  60.     // destructor
  61.     ~CInt_fuzz(void);
  62.     void GetLabel(string* label, TSeqPos pos, bool right = true) const;
  63.     /// n1 and n2 are the targets of the fuzz
  64.     void AssignTranslated(const CInt_fuzz& f2, TSeqPos n1, TSeqPos n2);
  65.     enum ECombine {
  66.         /// go for the largest possible range
  67.         eAmplify,
  68.         /// go for the smallest range that allows each value
  69.         /// individually to vary freely as long as the other balances
  70.         /// it out to the extent possible
  71.         eReduce
  72.     };
  73.     // Manipulators; n1 and n2 are the targets of the fuzz.
  74.     // Adding anything to its negation (subtracting it from itself)
  75.     // in eReduce mode should always yield zero.
  76.     void Add     (const CInt_fuzz& f2, TSeqPos& n1, TSeqPos n2,
  77.                   ECombine mode = eAmplify);
  78.     void Subtract(const CInt_fuzz& f2, TSeqPos& n1, TSeqPos n2,
  79.                   ECombine mode = eReduce);
  80.     void Negate  (TSeqPos n);
  81.     CRef<CInt_fuzz> Negative(TSeqPos n) const;
  82. private:
  83.     // Prohibit copy constructor and assignment operator
  84.     CInt_fuzz(const CInt_fuzz& value);
  85.     CInt_fuzz& operator=(const CInt_fuzz& value);
  86. };
  87. /////////////////// CInt_fuzz inline methods
  88. // constructor
  89. inline
  90. CInt_fuzz::CInt_fuzz(void)
  91. {
  92. }
  93. inline
  94. CRef<CInt_fuzz> CInt_fuzz::Negative(TSeqPos n) const
  95. {
  96.     CRef<CInt_fuzz> result(new CInt_fuzz);
  97.     result->Assign(*this);
  98.     result->Negate(n);
  99.     return result;
  100. }
  101. inline
  102. void CInt_fuzz::Subtract(const CInt_fuzz& f2, TSeqPos& n1, TSeqPos n2,
  103.                          ECombine mode)
  104. {
  105.     CRef<CInt_fuzz> neg(f2.Negative(n2));
  106.     Add(*neg, n1, n2, mode);
  107. }
  108. /////////////////// end of CInt_fuzz inline methods
  109. END_objects_SCOPE // namespace ncbi::objects::
  110. END_NCBI_SCOPE
  111. /*
  112.  * ===========================================================================
  113.  *
  114.  * $Log: Int_fuzz.hpp,v $
  115.  * Revision 1000.1  2004/04/12 17:23:42  gouriano
  116.  * PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.5
  117.  *
  118.  * Revision 1.5  2004/02/17 21:10:07  vasilche
  119.  * Fixed 'non-const reference to temp var' warning.
  120.  * Reordered inlined method to allow inlining.
  121.  *
  122.  * Revision 1.4  2003/10/15 15:42:58  ucko
  123.  * Add more operations: AssignTranslated, Add, Subtract, and Negate/Negative.
  124.  *
  125.  * Revision 1.3  2002/12/26 12:40:33  dicuccio
  126.  * Added Win32 export specifiers
  127.  *
  128.  * Revision 1.2  2002/10/03 19:02:27  clausen
  129.  * Removed extra whitespace
  130.  *
  131.  * Revision 1.1  2002/10/03 16:42:36  clausen
  132.  * First version
  133.  *
  134.  * ===========================================================================
  135. */
  136. #endif // OBJECTS_GENERAL_INT_FUZZ_HPP
  137. /* Original file checksum: lines: 90, chars: 2388, CRC32: e4127209 */