NCBI C Toolkit Cross Reference

C/object/objgen.h


  1 /*  objgen.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:  objgen.h
 27 *
 28 * Author:  James Ostell
 29 *   
 30 * Version Creation Date: 1/1/91
 31 *
 32 * $Revision: 6.15 $
 33 *
 34 * File Description:  Object manager interface for module NCBI-General
 35 *
 36 * Modifications:  
 37 * --------------------------------------------------------------------------
 38 * Date     Name        Description of modification
 39 * -------  ----------  -----------------------------------------------------
 40 *
 41 * ==========================================================================
 42 */
 43 
 44 #ifndef _NCBI_General_
 45 #define _NCBI_General_
 46 
 47 #ifndef _ASNTOOL_
 48 #include <asn.h>
 49 #endif
 50 
 51 #undef NLM_EXTERN
 52 #ifdef NLM_IMPORT
 53 #define NLM_EXTERN NLM_IMPORT
 54 #else
 55 #define NLM_EXTERN extern
 56 #endif
 57 
 58 #ifdef __cplusplus
 59 extern "C" {
 60 #endif
 61 
 62 /* gather/objmgr fields to be added to bioseq, features, descriptors, etc. */
 63 
 64 #define EXTRA_OBJMGR_FIELDS \
 65   Uint2             entityID;   \
 66   Uint2             itemtype;   \
 67   Uint1             subtype;    \
 68   Uint1             deleteme;   \
 69   Uint2             parenttype; \
 70   Uint4             itemID;     \
 71   Pointer           parentptr;  \
 72   Pointer PNTR      prevlink;   \
 73   Pointer           scratch;
 74 
 75 /* structure containing gather/objmgr fields to add as a block to other structures */
 76 
 77 typedef struct gatherindex {
 78   EXTRA_OBJMGR_FIELDS
 79 } GatherIndex, PNTR GatherIndexPtr;
 80 
 81 /* extended valnode for linking seqdesc, perhaps seqid and seqloc */
 82 
 83 typedef struct objvalnode {
 84   ValNode      vn;
 85   GatherIndex  idx;
 86 } ObjValNode, PNTR ObjValNodePtr;
 87 
 88 /* ValNode equivalent functions that allocate ObjValNode size */
 89 
 90 NLM_EXTERN ValNodePtr LIBCALL SeqDescrNew (ValNodePtr vnp);
 91 NLM_EXTERN ValNodePtr LIBCALL SeqDescrAdd (ValNodePtr PNTR head);
 92 NLM_EXTERN ValNodePtr LIBCALL SeqDescrAddPointer (ValNodePtr PNTR head, Int2 choice, VoidPtr value);
 93 
 94 /*****************************************************************************
 95 *
 96 *   loader
 97 *
 98 *****************************************************************************/
 99 NLM_EXTERN Boolean LIBCALL GeneralAsnLoad PROTO((void));
100 
101 /*****************************************************************************
102 *
103 *   internal structures for NCBI-General objects
104 *
105 *****************************************************************************/
106 
107 /*****************************************************************************
108 *
109 *   Date, Date-std share the same structure
110 *      any data[2] or data[3] values = 0 means not set or not present
111 *   data [0] - CHOICE of date ,0=str, 1=std
112 *        [1] - year (- 1900)
113 *        [2] - month (1-12)  optional
114 *        [3] - day (1-31)        optional
115 *        [4] - hour (0-23) optional 255=not set
116 *        [5] - minute (0-59) optional 255=not set
117 *        [6] - second (0-59) optional 255=not set
118 *        [7] - not currently used
119 *
120 *****************************************************************************/
121 
122 #define NOT_SET 255
123 
124 typedef struct date {
125         Uint1 data[8];      /* see box above */
126         CharPtr str;            /* str or season or NULL */
127 } NCBI_Date, PNTR NCBI_DatePtr;
128 #define DatePtr NCBI_DatePtr
129 
130 
131 NLM_EXTERN NCBI_DatePtr LIBCALL DateNew PROTO((void));
132 NLM_EXTERN NCBI_DatePtr LIBCALL DateClean PROTO((NCBI_DatePtr dp));
133 NLM_EXTERN NCBI_DatePtr LIBCALL DateFree PROTO((NCBI_DatePtr dp));
134 NLM_EXTERN Boolean      LIBCALL DateWrite PROTO((NCBI_DatePtr dp, Int2 year, Int2 month, Int2 day, CharPtr season));
135 NLM_EXTERN Boolean      LIBCALL DateRead PROTO((NCBI_DatePtr dp, Int2Ptr year, Int2Ptr month, Int2Ptr day, CharPtr season));
136 NLM_EXTERN Boolean      LIBCALL DatePrint PROTO((NCBI_DatePtr dp, CharPtr buf));
137 NLM_EXTERN NCBI_DatePtr LIBCALL DateCurr PROTO((void)); /* time fields not set */
138 NLM_EXTERN NCBI_DatePtr LIBCALL DateTimeCurr PROTO((void)); /* fills time fields too */
139 NLM_EXTERN NCBI_DatePtr LIBCALL DateDup PROTO((NCBI_DatePtr dp));
140 NLM_EXTERN Boolean      LIBCALL DateAsnWrite PROTO((NCBI_DatePtr dp, AsnIoPtr aip, AsnTypePtr atp));
141 NLM_EXTERN NCBI_DatePtr LIBCALL DateAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
142 NLM_EXTERN Int2         LIBCALL DateMatch PROTO((DatePtr a, DatePtr b, Boolean all));
143 NLM_EXTERN DatePtr      LIBCALL DateParse (CharPtr str);
144 
145 /*****************************************************************************
146 *
147 *   DateCheck (dp)
148 *       Checks the date and month values in a date structure
149 *       returns:
150 *      -4 = NULL pointer passed in
151 *      -3 = string date, can't be checked
152 *      -2 = month not set (but otherwise ok)
153 *      -1 = day not set  (but otherwise ok)
154 *       0 = date ok, month,day,year all set
155 *       1 = day invalid
156 *       2 = month invalid
157 *       3 = year not set (required for date)
158 *
159 *****************************************************************************/
160 NLM_EXTERN Int2         LIBCALL DateCheck PROTO((DatePtr dp));
161 
162 /*****************************************************************************
163 *
164 *   Object-id stuff
165 *
166 *****************************************************************************/
167 typedef struct objid {
168         Int4 id;
169         CharPtr str;
170 } ObjectId, PNTR ObjectIdPtr;
171 
172 NLM_EXTERN ObjectIdPtr LIBCALL ObjectIdNew PROTO((void));
173 NLM_EXTERN ObjectIdPtr LIBCALL ObjectIdFree PROTO(( ObjectIdPtr oid));
174 NLM_EXTERN ObjectIdPtr LIBCALL ObjectIdAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
175 NLM_EXTERN Boolean     LIBCALL ObjectIdAsnWrite PROTO((ObjectIdPtr oid, AsnIoPtr aip, AsnTypePtr atp));
176 NLM_EXTERN Boolean     LIBCALL ObjectIdMatch PROTO((ObjectIdPtr a, ObjectIdPtr b));
177 NLM_EXTERN Boolean     LIBCALL ObjectIdMatchEx PROTO((ObjectIdPtr a, ObjectIdPtr b, Boolean case_sensitive));
178 NLM_EXTERN ObjectIdPtr LIBCALL ObjectIdDup PROTO((ObjectIdPtr oldid));
179 
180 /*****************************************************************************
181 *
182 *   DBtag stuff
183 *
184 *****************************************************************************/
185 typedef struct dbtag {
186         CharPtr db;
187         ObjectIdPtr tag;
188 } Dbtag, PNTR DbtagPtr;
189 
190 NLM_EXTERN DbtagPtr LIBCALL DbtagNew PROTO((void));
191 NLM_EXTERN DbtagPtr LIBCALL DbtagFree PROTO(( DbtagPtr dbt));
192 NLM_EXTERN DbtagPtr LIBCALL DbtagAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
193 NLM_EXTERN Boolean  LIBCALL DbtagAsnWrite PROTO((DbtagPtr dbt, AsnIoPtr aip, AsnTypePtr atp));
194 NLM_EXTERN Boolean LIBCALL DbtagMatchEx PROTO((DbtagPtr a, DbtagPtr b, Boolean case_sensitive));
195 NLM_EXTERN Boolean  LIBCALL DbtagMatch PROTO((DbtagPtr a, DbtagPtr b));
196 NLM_EXTERN DbtagPtr LIBCALL DbtagDup PROTO((DbtagPtr oldtag));
197 NLM_EXTERN Int2     LIBCALL DbtagLabel PROTO((DbtagPtr dbt, CharPtr buf, Int2 buflen));
198 
199 /*****************************************************************************
200 *
201 *   Name-std
202 *   names[0] = last
203 *        [1] = first
204 *        [2] = middle
205 *        [3] = full
206 *        [4] = initials
207 *        [5] = suffix
208 *        [6] = title
209 *
210 *****************************************************************************/
211 typedef struct namestd {
212         CharPtr names[7];
213 } NameStd, PNTR NameStdPtr;
214 
215 NLM_EXTERN NameStdPtr LIBCALL NameStdNew PROTO((void));
216 NLM_EXTERN NameStdPtr LIBCALL NameStdFree PROTO(( NameStdPtr nsp));
217 NLM_EXTERN NameStdPtr LIBCALL NameStdAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
218 NLM_EXTERN Boolean    LIBCALL NameStdAsnWrite PROTO((NameStdPtr nsp, AsnIoPtr aip, AsnTypePtr atp));
219 NLM_EXTERN Boolean LIBCALL NameStdMatch (NameStdPtr nsp1, NameStdPtr nsp2);
220 
221 /*****************************************************************************
222 *
223 *   Person-id
224 *     choice = 0 = not set
225 *              1 = dbtag
226 *              2 = name
227 *              3 = ml
228 *              4 = str
229 *              5 = consortium
230 *
231 *****************************************************************************/
232 typedef struct personid {
233         Uint1 choice;         /* which CHOICE, see above */
234         Pointer data;         /* points to appropriate data structure */
235 } PersonId, PNTR PersonIdPtr;
236 
237 NLM_EXTERN PersonIdPtr  LIBCALL PersonIdNew PROTO((void));
238 NLM_EXTERN PersonIdPtr  LIBCALL PersonIdFree PROTO(( PersonIdPtr pid));
239 NLM_EXTERN PersonIdPtr  LIBCALL PersonIdAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
240 NLM_EXTERN Boolean      LIBCALL PersonIdAsnWrite PROTO((PersonIdPtr pid, AsnIoPtr aip, AsnTypePtr atp));
241 NLM_EXTERN Boolean LIBCALL PersonIdMatch (PersonIdPtr pip1, PersonIdPtr pip2);
242 
243 /*****************************************************************************
244 *
245 *   PersonIdLabel(pid, buf, buflen, format)
246 *       Makes a short label, lastname then initials if it can
247 *       format = PIDLABEL_GENBANK   last,initials
248 *                  PIDLABEL_EMBL      last initials
249 *
250 *       Modeled from GBGetAuthNames in asn2ff
251 *       returns number of bytes in buf
252 *       buf MUST be at least (buflen + 1) long
253 *
254 *****************************************************************************/
255 NLM_EXTERN Int2 LIBCALL PersonIdLabel PROTO((PersonIdPtr pid, CharPtr buf, Int2 buflen, Int2 format));
256 #define PIDLABEL_GENBANK 1
257 #define PIDLABEL_EMBL 2
258 
259 /*****************************************************************************
260 *
261 *   Int-fuzz
262 *
263 *****************************************************************************/
264 typedef struct intfuzz {
265         Uint1 choice;       /* 1=p-m, 2=range, 3=pct, 4=lim 5=alt */
266         Int4 a, b;          /* a=p-m,max,pct,orlim, b=min */
267         Int4Ptr alt;            /* alternate positions, a=num alts, b=array size */
268 } IntFuzz, PNTR IntFuzzPtr;
269 
270 NLM_EXTERN IntFuzzPtr   LIBCALL IntFuzzNew PROTO((void));
271 NLM_EXTERN IntFuzzPtr   LIBCALL IntFuzzFree PROTO(( IntFuzzPtr ifp));
272 NLM_EXTERN IntFuzzPtr   LIBCALL IntFuzzAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
273 NLM_EXTERN Boolean      LIBCALL IntFuzzAsnWrite PROTO((IntFuzzPtr ifp, AsnIoPtr aip, AsnTypePtr atp));
274 
275 /*****************************************************************************
276 *
277 *   User-field
278 *      data is an DataVal where:
279 *    choice    asn1              data. =
280         1 = str VisibleString ,  ptrvalue = CharPtr
281         2 = int INTEGER ,        intvalue
282         3 = real REAL ,          realvalue
283         4 = bool BOOLEAN ,       boolvalue
284         5 = os OCTET STRING ,    ptrvalue = ByteStorePtr
285         6 = object User-object ,   ptrvalue = UserObjectPtr
286         7 = strs SEQUENCE OF VisibleString ,  ptrvalue = CharPtr PNTR
287         8 = ints SEQUENCE OF INTEGER ,        ptrvalue = Int4Ptr
288         9 = reals SEQUENCE OF REAL ,          ptrvalue = FloatHiPtr
289         10 = oss SEQUENCE OF OCTET STRING ,   ptrvalue = ByteStorePtr PNTR
290         11 = fields SEQUENCE OF User-field ,  ptrvalue = UserFieldPtr
291         12 = objects SEQUENCE OF User-object } }  ptrvalue = UserObjectPtr
292 
293 *   User-object
294 *
295 *****************************************************************************/
296 typedef struct userfield {
297     ObjectIdPtr label;
298     Int4 num;
299     Uint1 choice;
300     DataVal data;
301     struct userfield PNTR next;
302 } UserField, PNTR UserFieldPtr;
303 
304 NLM_EXTERN UserFieldPtr LIBCALL UserFieldNew PROTO((void));
305 NLM_EXTERN UserFieldPtr LIBCALL UserFieldFree PROTO(( UserFieldPtr ufp));
306 NLM_EXTERN UserFieldPtr LIBCALL UserFieldAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
307 NLM_EXTERN Boolean               LIBCALL UserFieldAsnWrite PROTO((UserFieldPtr ufp, AsnIoPtr aip, AsnTypePtr atp));
308 
309 typedef struct userobj {
310     CharPtr _class;
311     ObjectIdPtr type;
312     UserFieldPtr data;
313     struct userobj PNTR next;   /* for SEQUENCE OF User-object */
314 } UserObject, PNTR UserObjectPtr;
315 
316 NLM_EXTERN UserObjectPtr LIBCALL UserObjectNew PROTO((void));
317 NLM_EXTERN UserObjectPtr LIBCALL UserObjectFree PROTO(( UserObjectPtr uop));
318 NLM_EXTERN UserObjectPtr LIBCALL UserObjectAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
319 NLM_EXTERN Boolean       LIBCALL UserObjectAsnWrite PROTO((UserObjectPtr uop, AsnIoPtr aip, AsnTypePtr atp));
320 
321 #ifdef __cplusplus
322 }
323 #endif
324 
325 #undef NLM_EXTERN
326 #ifdef NLM_EXPORT
327 #define NLM_EXTERN NLM_EXPORT
328 #else
329 #define NLM_EXTERN
330 #endif
331 
332 #endif
333 
334 

source navigation ]   [ diff markup ]   [ identifier search ]   [ freetext search ]   [ file search ]  

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.