1 /*  objpubd.h
2 * ===========================================================================
3 *
4 *                            PUBLIC DOMAIN NOTICE
5 *               National Center for Biotechnology Information
6 *
7 *  This software/database is a "United States Government Work" under the
8 *  terms of the United States Copyright Act.  It was written as part of
9 *  the author's official duties as a United States Government employee and
10 *  thus cannot be copyrighted.  This software/database is freely available
11 *  to the public for use. The National Library of Medicine and the U.S.
12 *  Government have not placed any restriction on its use or reproduction.
13 *
14 *  Although all reasonable efforts have been taken to ensure the accuracy
15 *  and reliability of the software and data, the NLM and the U.S.
16 *  Government do not and cannot warrant the performance or results that
17 *  may be obtained by using this software or data. The NLM and the U.S.
18 *  Government disclaim all warranties, express or implied, including
19 *  warranties of performance, merchantability or fitness for any particular
20 *  purpose.
21 *
22 *  Please cite the author in any work or product based on this material.
23 *
24 * ===========================================================================
25 *
26 * File Name:  objpubd.h
27 *
28 * Author:  James Ostell
29 *
30 * Version Creation Date: 4/1/91
31 *
32 * $Revision: 6.14 $
33 *
34 * File Description:  Object manager interface for type Pubdesc from
35 *                    NCBI-Sequence.  This is separate to avoid typedef
36 *                    order problems with NCBI-Sequence and NCBI-Seqfeat
37 *                    which both reference Pubdesc
38 *   				   Numbering and Heterogen have now also been added
39 *   				for the same reason.  Heterogen is just a string,
40 *   				so no special typedefs are required.
41 *
42 * Modifications:
43 * --------------------------------------------------------------------------
44 * Date	   Name        Description of modification
45 * -------  ----------  -----------------------------------------------------
46 *
47 * ==========================================================================
48 */
49 
50 #ifndef _NCBI_Pubdesc_
51 #define _NCBI_Pubdesc_
52 
53 #ifndef _ASNTOOL_
54 #include <asn.h>
55 #endif
56 
57 #undef NLM_EXTERN
58 #ifdef NLM_IMPORT
59 #define NLM_EXTERN NLM_IMPORT
60 #else
61 #define NLM_EXTERN extern
62 #endif
63 
64 #ifdef __cplusplus
65 extern "C" {
66 #endif
67 
68 /*****************************************************************************
69 *
70 *   Pubdesc
71 *
72 *****************************************************************************/
73 typedef struct pd {
74     ValNodePtr pub;          /* points to Pub-equiv */
75     CharPtr name,
76         fig;
77     ValNodePtr num;          /* points to Numbering */
78     Boolean numexc,
79         poly_a;
80     Uint1 align_group;       /* 0 = not part of a group */
81     CharPtr maploc,
82         seq_raw,
83 		comment;
84 	Uint1 reftype;     /* 0=seq, 1=sites, 2=feats,
85                               3=seq with no explicit span, for GenBank ref */
86 } Pubdesc, PNTR PubdescPtr;
87 
88 NLM_EXTERN PubdescPtr LIBCALL PubdescNew PROTO((void));
89 NLM_EXTERN Boolean    LIBCALL PubdescAsnWrite PROTO((PubdescPtr pdp, AsnIoPtr aip, AsnTypePtr atp));
90 NLM_EXTERN PubdescPtr LIBCALL PubdescAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
91 NLM_EXTERN PubdescPtr LIBCALL PubdescFree PROTO((PubdescPtr pdp));
92 
93 NLM_EXTERN Boolean LIBCALL PubdescContentMatch (PubdescPtr pdp1, PubdescPtr pdp2);
94 
95 typedef ValNode Numbering, FAR *NumberingPtr;
96 
97 /*****************************************************************************
98 *
99 *   Numbering uses an ValNode with choice =
100     1 = cont Num-cont ,              -- continuous numbering
101     2 = enum Num-enum ,              -- enumerated names for residues
102     3 = ref Num-ref, type 1 sources  -- by reference to another sequence
103     4 = ref Num-ref, type 2 aligns  (SeqAlign in data.ptrvalue)
104     5 = real Num-real     -- for maps etc
105 *
106 *****************************************************************************/
107 
108 #define Numbering_cont 1
109 #define Numbering_enum 2
110 #define Numbering_ref_source 3
111 #define Numbering_ref_align 4
112 #define Numbering_real 5
113 
114 NLM_EXTERN Boolean      LIBCALL NumberingAsnWrite PROTO((NumberingPtr anp, AsnIoPtr aip, AsnTypePtr atp));
115 NLM_EXTERN NumberingPtr LIBCALL NumberingAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
116 NLM_EXTERN NumberingPtr LIBCALL NumberingFree PROTO((NumberingPtr anp));
117 
118 /*****************************************************************************
119 *
120 *   NumCont - continuous numbering system
121 *
122 *****************************************************************************/
123 typedef struct numcont {
124     Int4 refnum;
125     Boolean has_zero,
126         ascending;
127 } NumCont, PNTR NumContPtr;
128 
129 NLM_EXTERN NumContPtr LIBCALL NumContNew PROTO((void));
130 NLM_EXTERN Boolean    LIBCALL NumContAsnWrite PROTO((NumContPtr ncp, AsnIoPtr aip, AsnTypePtr atp));
131 NLM_EXTERN NumContPtr LIBCALL NumContAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
132 NLM_EXTERN NumContPtr LIBCALL NumContFree PROTO((NumContPtr ncp));
133 
134 /*****************************************************************************
135 *
136 *   NumEnum - enumerated numbering system
137 *
138 *****************************************************************************/
139 typedef struct numenum {
140     Int4 num;               /* number of names */
141     CharPtr buf;            /* a buffer for the names */
142     CharPtr PNTR names;     /* array of pointers to names */
143 } NumEnum, PNTR NumEnumPtr;
144 
145 NLM_EXTERN NumEnumPtr LIBCALL NumEnumNew PROTO((void));
146 NLM_EXTERN Boolean    LIBCALL NumEnumAsnWrite PROTO((NumEnumPtr nep, AsnIoPtr aip, AsnTypePtr atp));
147 NLM_EXTERN NumEnumPtr LIBCALL NumEnumAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
148 NLM_EXTERN NumEnumPtr LIBCALL NumEnumFree PROTO((NumEnumPtr nep));
149 
150 /*****************************************************************************
151 *
152 *   NumReal - float type numbering system
153 *
154 *****************************************************************************/
155 typedef struct numreal {
156     FloatHi a, b;        /* number in "units" = ax + b */
157     CharPtr units;
158 } NumReal, PNTR NumRealPtr;
159 
160 NLM_EXTERN NumRealPtr LIBCALL NumRealNew PROTO((void));
161 NLM_EXTERN Boolean    LIBCALL NumRealAsnWrite PROTO((NumRealPtr ncp, AsnIoPtr aip, AsnTypePtr atp));
162 NLM_EXTERN NumRealPtr LIBCALL NumRealAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
163 NLM_EXTERN NumRealPtr LIBCALL NumRealFree PROTO((NumRealPtr ncp));
164 
165 /*****************************************************************************
166 *
167 *   MolInfo - Info about mols
168 *
169 *****************************************************************************/
170 typedef struct molinfo {
171 	Uint1 biomol,
172 		tech;
173 	CharPtr techexp;
174 	Uint1 completeness;
175     CharPtr gbmoltype;
176 } MolInfo, PNTR MolInfoPtr;
177 
178 #define MI_TECH_unknown 0
179 #define MI_TECH_standard 1
180 #define MI_TECH_est 2        /* EST division */
181 #define MI_TECH_sts 3        /* STS division */
182 #define MI_TECH_survey 4     /* GSS division */
183 #define MI_TECH_genemap 5    /* Bioseq is a genetic map */
184 #define MI_TECH_physmap 6    /* Bioseq is physical map */
185 #define MI_TECH_derived 7    /* Bioseq is a computed inference */
186 #define MI_TECH_concept_trans 8  /* conceptual translation */
187 #define MI_TECH_seq_pept 9       /* peptide sequencing used */
188 #define MI_TECH_both 10          /* combination of 8 and 9 used */
189 #define MI_TECH_seq_pept_overlap 11 /* peptides ordered by overlap */
190 #define MI_TECH_seq_pept_homol 12   /* peptides ordered by homology */
191 #define MI_TECH_concept_trans_a 13  /* concept trans supplied by author */
192 #define MI_TECH_htgs_1 14  /* unordered High Throughput Sequence Contig */
193 #define MI_TECH_htgs_2 15  /* ordered High Throughput sequence contig */
194 #define MI_TECH_htgs_3 16  /* finished High Throughut sequence */
195 #define MI_TECH_fli_cdna 17  /* full-length insert cDNA sequence */
196 #define MI_TECH_htgs_0 18    /* unordered single pass reads */
197 #define MI_TECH_htc 19       /* High Throughput CDNA.. unfinished */
198 #define MI_TECH_wgs 20       /* Whole Genome Shotgun */
199 #define MI_TECH_barcode 21   /* Barcode of Life Project */
200 #define MI_TECH_composite_wgs_htgs 22   /* Assembly/Scaffold composite of techniques */
201 #define MI_TECH_tsa 23       /* Transcriptome Shotgun Assembly */
202 #define MI_TECH_targeted 24  /* Targeted Locus Sets/Studies */
203 #define MI_TECH_other 255           /* doesnt' fit anything */
204 
205 NLM_EXTERN MolInfoPtr LIBCALL MolInfoNew PROTO((void));
206 NLM_EXTERN Boolean    LIBCALL MolInfoAsnWrite PROTO((MolInfoPtr mip, AsnIoPtr aip, AsnTypePtr atp));
207 NLM_EXTERN MolInfoPtr LIBCALL MolInfoAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
208 NLM_EXTERN MolInfoPtr LIBCALL MolInfoFree PROTO((MolInfoPtr mip));
209 
210 
211 #ifdef __cplusplus
212 }
213 #endif
214 
215 #undef NLM_EXTERN
216 #ifdef NLM_EXPORT
217 #define NLM_EXTERN NLM_EXPORT
218 #else
219 #define NLM_EXTERN
220 #endif
221 
222 #endif
223