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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: regexp_loc.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 19:28:46  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.3
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef REGEXP__LOC__HPP
  10. #define REGEXP__LOC__HPP
  11. /*  $Id: regexp_loc.hpp,v 1000.0 2003/10/29 19:28:46 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.  * Authors:  Clifford Clausen
  37.  *
  38.  */
  39. /// @file regexp_loc.hpp
  40. /// header file for creating CSeq_locs from CRegexps.
  41. ///
  42. /// Class definition file for CRegexp_loc which is used to convert a PCRE
  43. /// match to a char* sequence into a CSeq_loc.
  44. #include <corelib/ncbistd.hpp>
  45. #include <util/regexp.hpp>
  46. #include <objects/seqloc/Seq_loc.hpp>
  47. #include <objects/seqloc/Packed_seqint.hpp>
  48. #include <objects/seqloc/Seq_interval.hpp>
  49. #include <memory>
  50. BEGIN_NCBI_SCOPE
  51. USING_SCOPE(objects);
  52. /// Class used to convert a PCRE match to a char* sequence into a CSeq_loc.
  53. class NCBI_XALGOSEQ_EXPORT CRegexp_loc
  54. {
  55. public:
  56.     /// Constructor for CRegexp_loc
  57.     /// Compiles the Perl Compatible Regular Expression (PCRE) pat, and sets
  58.     /// compiled pattern options. See CRegexp.hpp for more information.
  59.     CRegexp_loc(const string &pat,            // Perl regular expression
  60.                 CRegexp::TCompile flags = 0); // Compile options
  61.     virtual  ~CRegexp_loc();
  62.     /// Sets PCRE pattern
  63.     /// Sets and compiles Perl Compatible Regular Expression (PCRE) pat, and
  64.     /// sets compiled pattern options. See CRegexp.hpp for more information.
  65.     void Set(const string &pat,             // Perl regular expression
  66.              CRegexp::TCompile flags = 0);  // Compile options
  67.     ///Gets a CSeq_loc for PCRE match to char* sequence
  68.     /// Gets a CSeq_loc (loc) of match between currently set regular
  69.     /// expression and seq. Returned loc is of type CPacked_seqint. The first
  70.     /// CSeq_interval in the CPacked_seqint is the overall match. Subsequent
  71.     /// CSeq_intervals are matches to sub-patterns. Begins search of seq at 0
  72.     /// based offset. Returns 0 based position of first character in seq of
  73.     /// match.  If no match found, returns kMax_ULong and loc is set to
  74.     /// an empty packed-int type CSeq_loc. See CRegexp.hpp for information
  75.     /// about flags.
  76.     TSeqPos GetLoc (const char *seq,            // Sequence to search
  77.                     CSeq_loc *loc,              // Pattern location(s)
  78.                     TSeqPos offset = 0,         // Starting offset in sequence
  79.                     CRegexp::TMatch flags = 0); // Match options
  80. private:
  81.     // Disable copy constructor and assignment operator
  82.     CRegexp_loc(const CRegexp_loc &);
  83.     void operator= (const CRegexp_loc &);
  84.     /// PCRE used to match against char* sequence passed as argument to GetLoc
  85.     auto_ptr<CRegexp> m_regexp;
  86. };
  87. END_NCBI_SCOPE
  88. #endif /*REGEXP__LOC__HPP*/
  89. /*===========================================================================
  90. * $Log: regexp_loc.hpp,v $
  91. * Revision 1000.0  2003/10/29 19:28:46  gouriano
  92. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.3
  93. *
  94. * Revision 1.3  2003/08/18 20:07:04  dicuccio
  95. * Corrected export specifiers
  96. *
  97. * Revision 1.2  2003/07/17 12:27:56  ucko
  98. * +<memory> for auto_ptr<>
  99. *
  100. * Revision 1.1  2003/07/16 19:16:59  clausen
  101. * Initial version
  102. *
  103. *
  104. * ===========================================================================
  105. */