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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: alnread.h,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 19:39:31  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.3
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef UTIL_CREADERS___ALNREAD__H
  10. #define UTIL_CREADERS___ALNREAD__H
  11. /*
  12.  * $Id: alnread.h,v 1000.1 2004/06/01 19:39:31 gouriano Exp $
  13.  *
  14.  * ===========================================================================
  15.  *
  16.  *                            PUBLIC DOMAIN NOTICE
  17.  *               National Center for Biotechnology Information
  18.  *
  19.  *  This software/database is a "United States Government Work" under the
  20.  *  terms of the United States Copyright Act.  It was written as part of
  21.  *  the author's official duties as a United States Government employee and
  22.  *  thus cannot be copyrighted.  This software/database is freely available
  23.  *  to the public for use. The National Library of Medicine and the U.S.
  24.  *  Government have not placed any restriction on its use or reproduction.
  25.  *
  26.  *  Although all reasonable efforts have been taken to ensure the accuracy
  27.  *  and reliability of the software and data, the NLM and the U.S.
  28.  *  Government do not and cannot warrant the performance or results that
  29.  *  may be obtained by using this software or data. The NLM and the U.S.
  30.  *  Government disclaim all warranties, express or implied, including
  31.  *  warranties of performance, merchantability or fitness for any particular
  32.  *  purpose.
  33.  *
  34.  *  Please cite the author in any work or product based on this material.
  35.  *
  36.  * ===========================================================================
  37.  *
  38.  * Authors:  Colleen Bollin
  39.  *
  40.  */
  41. #include <util/creaders/creaders_export.h>
  42. #ifdef __cplusplus
  43. extern "C" {
  44. #endif
  45. /* defines from ncbistd.h */
  46. #ifndef FAR
  47. #define FAR
  48. #endif
  49. #ifndef PASCAL
  50. #define PASCAL
  51. #endif
  52. #ifndef EXPORT
  53. #define EXPORT
  54. #endif
  55. #ifndef PASCAL
  56. #define PASCAL
  57. #endif
  58. #ifndef EXPORT
  59. #define EXPORT
  60. #endif
  61. #if defined (WIN32)
  62. #    define ALIGNMENT_CALLBACK __stdcall
  63. #else
  64. #    define ALIGNMENT_CALLBACK
  65. #endif
  66. typedef char * (ALIGNMENT_CALLBACK *FReadLineFunction) (void * userdata);
  67. typedef enum {
  68.     eAlnErr_Unknown = -1,
  69.     eAlnErr_NoError = 0,
  70.     eAlnErr_Fatal,
  71.     eAlnErr_BadData,
  72.     eAlnErr_BadFormat
  73. } EAlnErr;
  74. /* This structure and the accompanying functions are used for storing
  75.  * information about errors encountered while reading the alignment data.
  76.  */
  77. typedef struct SErrorInfo {
  78.     EAlnErr             category;
  79.     int                 line_num;
  80.     char *              id;
  81.     char *              message;
  82.     struct SErrorInfo * next;
  83. } SErrorInfo, * TErrorInfoPtr;
  84. typedef void (ALIGNMENT_CALLBACK *FReportErrorFunction) (
  85.   TErrorInfoPtr err_ptr, /* error to report */
  86.   void *        userdata /* data supplied by calling program to library */
  87. );
  88. extern NCBI_CREADERS_EXPORT TErrorInfoPtr ErrorInfoNew (TErrorInfoPtr list);
  89. extern NCBI_CREADERS_EXPORT void ErrorInfoFree (TErrorInfoPtr eip);
  90. typedef struct SSequenceInfo {
  91.     char * missing;
  92.     char * match;
  93.     char * beginning_gap;
  94.     char * middle_gap;
  95.     char * end_gap;
  96.     char * alphabet;
  97. } SSequenceInfo, * TSequenceInfoPtr;
  98. extern NCBI_CREADERS_EXPORT TSequenceInfoPtr SequenceInfoNew (void);
  99. extern NCBI_CREADERS_EXPORT void SequenceInfoFree (TSequenceInfoPtr sip);
  100. typedef struct SAlignmentFile {
  101.     int     num_sequences;
  102.     int     num_organisms;
  103.     int     num_deflines;
  104.     int     num_segments;
  105.     char ** ids;
  106.     char ** sequences;
  107.     char ** organisms;
  108.     char ** deflines;
  109. } SAlignmentFile, * TAlignmentFilePtr;
  110. extern NCBI_CREADERS_EXPORT TAlignmentFilePtr AlignmentFileNew (void);
  111. extern NCBI_CREADERS_EXPORT void AlignmentFileFree (TAlignmentFilePtr afp);
  112. extern NCBI_CREADERS_EXPORT TAlignmentFilePtr ReadAlignmentFile (
  113.   FReadLineFunction    readfunc,      /* function for reading lines of 
  114.                                        * alignment file
  115.                                        */
  116.   void *               fileuserdata,  /* data to be passed back each time
  117.                                        * readfunc is invoked
  118.                                        */
  119.   FReportErrorFunction errfunc,       /* function for reporting errors */
  120.   void *               erroruserdata, /* data to be passed back each time
  121.                                        * errfunc is invoked
  122.                                        */
  123.   TSequenceInfoPtr     sequence_info  /* structure containing sequence
  124.                                        * alphabet and special characters
  125.                                        */
  126. );
  127. #ifdef __cplusplus
  128. }
  129. #endif
  130. /*
  131.  * ==========================================================================
  132.  *
  133.  * $Log: alnread.h,v $
  134.  * Revision 1000.1  2004/06/01 19:39:31  gouriano
  135.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.3
  136.  *
  137.  * Revision 1.3  2004/05/20 19:39:40  bollin
  138.  * added num_segments member to SAlignmentFile structure to allow reading of
  139.  * alignments of segmented sets.
  140.  *
  141.  * Revision 1.2  2004/02/05 15:43:32  bollin
  142.  * fixed portability issue for windows function pointers
  143.  *
  144.  * Revision 1.1  2004/02/03 16:46:55  ucko
  145.  * Add Colleen Bollin's Toolkit-independent alignment reader.
  146.  *
  147.  * Revision 1.10  2004/01/29 17:58:36  bollin
  148.  * fixed member alignment in SErrorInfo
  149.  *
  150.  * Revision 1.9  2004/01/29 17:41:54  bollin
  151.  * added comment block, id tags, log
  152.  *
  153.  * Revision 1.8  2004/01/29 17:30:14  bollin
  154.  * fixed all struct names
  155.  *
  156.  * Revision 1.7  2004/01/29 15:15:13  bollin
  157.  * added formatting bitts
  158.  *
  159.  * ==========================================================================
  160.  */
  161. #endif /* UTIL_CREADERS___ALNREAD__H */