1 /* objbibli.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: objbibli.h 27 * 28 * Author: James Ostell 29 * 30 * Version Creation Date: 1/1/91 31 * 32 * $Revision: 6.2 $ 33 * 34 * File Description: Object manager interface for module NCBI-Biblio 35 * 36 * Modifications: 37 * -------------------------------------------------------------------------- 38 * Date Name Description of modification 39 * ------- ---------- ----------------------------------------------------- 40 * 05-17-93 Schuler struct affil ---> struct _affil_ (because one of 41 * the fields in the struct is also called affil, which 42 * C++ compilers take to be a constructor function). 43 * 44 * $Log: objbibli.h,v $ 45 * Revision 6.2 2005/05/18 17:31:01 bollin 46 * added AffilMatch and AuthorMatch functions 47 * 48 * Revision 6.1 2000/01/18 19:40:52 ostell 49 * added support for PubStatusDate, ArticleIds 50 * 51 * Revision 6.0 1997/08/25 18:49:23 madden 52 * Revision changed to 6.0 53 * 54 * Revision 4.2 1997/06/19 18:40:50 vakatov 55 * [WIN32,MSVC++] Adopted for the "NCBIOBJ.LIB" DLL'ization 56 * 57 * Revision 4.1 1996/03/29 21:09:59 ostell 58 * added support for PubMedId 59 * 60 * Revision 4.0 1995/07/26 13:48:06 ostell 61 * force revision to 4.0 62 * 63 * Revision 3.2 1995/05/15 21:22:00 ostell 64 * added Log line 65 * 66 * 67 * 68 * ========================================================================== 69 */ 70 71 #ifndef _NCBI_Biblio_ 72 #define _NCBI_Biblio_ 73 74 #ifndef _ASNTOOL_ 75 #include <asn.h> 76 #endif 77 #ifndef _NCBI_General_ 78 #include <objgen.h> 79 #endif 80 81 #undef NLM_EXTERN 82 #ifdef NLM_IMPORT 83 #define NLM_EXTERN NLM_IMPORT 84 #else 85 #define NLM_EXTERN extern 86 #endif 87 88 #ifdef __cplusplus 89 extern "C" { 90 #endif 91 92 /***************************************************************************** 93 * 94 * loader 95 * 96 *****************************************************************************/ 97 NLM_EXTERN Boolean LIBCALL BiblioAsnLoad PROTO((void)); 98 99 /***************************************************************************** 100 * 101 * ArticleId 102 * 103 *****************************************************************************/ 104 typedef ValNode ArticleId, PNTR ArticleIdPtr; 105 106 #define ARTICLEID_PUBMED 1 /* pubmed id - integer */ 107 #define ARTICLEID_MEDLINE 2 /* medline uid - integer */ 108 #define ARTICLEID_DOI 3 /* doi - string */ 109 #define ARTICLEID_PII 4 /* pii - string */ 110 #define ARTICLEID_PMCID 5 /* pubmed central id - integer */ 111 #define ARTICLEID_PMCPID 6 /* publisherid from Pubmed central - string */ 112 #define ARTICLEID_PMPID 7 /* publisherId from pubmed - string */ 113 #define ARTICLEID_OTHER 8 /* generic - DbTag */ 114 115 NLM_EXTERN ArticleIdPtr LIBCALL ArticleIdNew PROTO((void)); 116 NLM_EXTERN ArticleIdPtr LIBCALL ArticleIdFree PROTO((ArticleIdPtr aidp)); 117 NLM_EXTERN ArticleIdPtr LIBCALL ArticleIdAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 118 NLM_EXTERN Boolean LIBCALL ArticleIdAsnWrite PROTO((ArticleIdPtr aidp, AsnIoPtr aip, AsnTypePtr atp)); 119 120 121 /***************************************************************************** 122 * 123 * PubStatusDate 124 * 125 *****************************************************************************/ 126 #define PUBSTATUS_received 1 127 #define PUBSTATUS_accepted 2 128 #define PUBSTATUS_epublish 3 129 #define PUBSTATUS_ppublish 4 130 #define PUBSTATUS_revised 5 131 #define PUBSTATUS_pmc 6 132 #define PUBSTATUS_pmcr 7 133 #define PUBSTATUS_pubmed 8 134 #define PUBSTATUS_pubmedr 9 135 #define PUBSTATUS_aheadofprint 10 136 #define PUBSTATUS_premedline 11 137 #define PUBSTATUS_medline 12 138 #define PUBSTATUS_other 255 139 140 typedef struct _pubstatusdate_ { 141 Uint1 pubstatus; 142 DatePtr date; 143 struct _pubstatusdate_ * next; 144 } PubStatusDate, PNTR PubStatusDatePtr; 145 146 NLM_EXTERN PubStatusDatePtr LIBCALL PubStatusDateNew PROTO((void)); 147 NLM_EXTERN PubStatusDatePtr LIBCALL PubStatusDateFree PROTO((PubStatusDatePtr psdp)); 148 NLM_EXTERN PubStatusDatePtr LIBCALL PubStatusDateAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 149 NLM_EXTERN Boolean LIBCALL PubStatusDateAsnWrite PROTO((PubStatusDatePtr psdp, AsnIoPtr aip, AsnTypePtr atp)); 150 151 /***************************************************************************** 152 * 153 * Affil 154 * 155 *****************************************************************************/ 156 typedef struct _affil_ { 157 Uint1 choice; /* [1]=str,[2]=std */ 158 CharPtr affil, /* also used for str */ 159 div, 160 city, 161 sub, 162 country, 163 street, 164 email, 165 fax, 166 phone, 167 postal_code; 168 } Affil, PNTR AffilPtr; 169 170 NLM_EXTERN AffilPtr LIBCALL AffilNew PROTO((void)); 171 NLM_EXTERN AffilPtr LIBCALL AffilFree PROTO((AffilPtr afp)); 172 NLM_EXTERN AffilPtr LIBCALL AffilAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 173 NLM_EXTERN Boolean LIBCALL AffilAsnWrite PROTO((AffilPtr afp, AsnIoPtr aip, AsnTypePtr atp)); 174 NLM_EXTERN Boolean AffilMatch (AffilPtr ap1, AffilPtr ap2); 175 176 /***************************************************************************** 177 * 178 * AuthList 179 * 180 *****************************************************************************/ 181 typedef struct authors { 182 Uint1 choice; /* [1]=std, [2]=ml, [3]=str (only on Cit-art,gen) */ 183 ValNodePtr names; /* the SEQUENCE OF */ 184 AffilPtr affil; 185 } AuthList, PNTR AuthListPtr; 186 187 NLM_EXTERN AuthListPtr LIBCALL AuthListNew PROTO((void)); 188 NLM_EXTERN AuthListPtr LIBCALL AuthListFree PROTO((AuthListPtr asp)); 189 NLM_EXTERN AuthListPtr LIBCALL AuthListAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 190 NLM_EXTERN Boolean LIBCALL AuthListAsnWrite PROTO((AuthListPtr afp, AsnIoPtr aip, AsnTypePtr atp)); 191 NLM_EXTERN Int2 LIBCALL AuthListMatch PROTO((AuthListPtr a, AuthListPtr b, Boolean all)); 192 193 /***************************************************************************** 194 * 195 * Author 196 * 197 *****************************************************************************/ 198 typedef struct author { 199 PersonIdPtr name; 200 Uint1 lr[2]; /* level[0], role[1] as in spec. 0=not used */ 201 Uint1 is_corr; /* corresponding author? 255=not set, 0=false, 1=true */ 202 AffilPtr affil; 203 } Author, PNTR AuthorPtr; 204 205 NLM_EXTERN AuthorPtr LIBCALL AuthorNew PROTO((void)); 206 NLM_EXTERN AuthorPtr LIBCALL AuthorFree PROTO((AuthorPtr ap)); 207 NLM_EXTERN AuthorPtr LIBCALL AuthorAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 208 NLM_EXTERN Boolean LIBCALL AuthorAsnWrite PROTO((AuthorPtr ap, AsnIoPtr aip, AsnTypePtr atp)); 209 NLM_EXTERN Boolean LIBCALL AuthorMatch (AuthorPtr ap1, AuthorPtr ap2); 210 211 /***************************************************************************** 212 * 213 * Cit-art 214 * 215 *****************************************************************************/ 216 typedef struct citart { 217 ValNodePtr title; /* choice[1]=name,[2]=tsub,[3]=trans */ 218 AuthListPtr authors; 219 Uint1 from; /* [1]=journal,[2]=book,[3]=proc */ 220 Pointer fromptr; 221 ArticleIdPtr ids; 222 } CitArt, PNTR CitArtPtr; 223 224 NLM_EXTERN CitArtPtr LIBCALL CitArtNew PROTO((void)); 225 NLM_EXTERN CitArtPtr LIBCALL CitArtFree PROTO((CitArtPtr cap)); 226 NLM_EXTERN CitArtPtr LIBCALL CitArtAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 227 NLM_EXTERN Boolean LIBCALL CitArtAsnWrite PROTO((CitArtPtr cap, AsnIoPtr aip, AsnTypePtr atp)); 228 NLM_EXTERN Int2 LIBCALL CitArtMatch PROTO((CitArtPtr a, CitArtPtr b)); 229 230 /***************************************************************************** 231 * 232 * Retraction/Erratum 233 * 234 *****************************************************************************/ 235 typedef struct citretract { 236 Uint1 type; /* 1=retracted, 2=retraction notice, 3=in error, 4=erratum */ 237 CharPtr exp; /* explanation */ 238 } CitRetract, PNTR CitRetractPtr; 239 240 NLM_EXTERN CitRetractPtr LIBCALL CitRetractNew PROTO((void)); 241 NLM_EXTERN CitRetractPtr LIBCALL CitRetractFree PROTO((CitRetractPtr crp)); 242 NLM_EXTERN CitRetractPtr LIBCALL CitRetractAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 243 NLM_EXTERN Boolean LIBCALL CitRetractAsnWrite PROTO((CitRetractPtr crp, AsnIoPtr aip, AsnTypePtr atp)); 244 245 /***************************************************************************** 246 * 247 * Imprint 248 * 249 *****************************************************************************/ 250 typedef struct imprint { 251 DatePtr date; 252 CharPtr volume, 253 issue, 254 pages, 255 section, 256 part_sup, /* part/sup of volume */ 257 language; 258 DatePtr cprt; /* copy right date (for books) */ 259 AffilPtr pub; /* publisher (for books) */ 260 Uint1 prepub; /* 0=not set 1=submitted 2=in-press 255=other */ 261 CharPtr part_supi; /* part/sup of issue */ 262 CitRetractPtr retract; 263 Uint1 pubstatus; 264 PubStatusDatePtr history; 265 } Imprint, PNTR ImprintPtr; 266 267 NLM_EXTERN ImprintPtr LIBCALL ImprintNew PROTO((void)); 268 NLM_EXTERN ImprintPtr LIBCALL ImprintFree PROTO((ImprintPtr cap)); 269 NLM_EXTERN ImprintPtr LIBCALL ImprintAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 270 NLM_EXTERN Boolean LIBCALL ImprintAsnWrite PROTO((ImprintPtr cap, AsnIoPtr aip, AsnTypePtr atp)); 271 NLM_EXTERN Int2 LIBCALL ImprintMatch PROTO((ImprintPtr a, ImprintPtr b, Boolean all)); 272 273 /***************************************************************************** 274 * 275 * Cit-jour 276 * 277 *****************************************************************************/ 278 typedef struct citjour { 279 ValNodePtr title; /* choice in order of spec, 1=name,2=trans,etc */ 280 ImprintPtr imp; 281 } CitJour, PNTR CitJourPtr; 282 283 NLM_EXTERN CitJourPtr LIBCALL CitJourNew PROTO((void)); 284 NLM_EXTERN CitJourPtr LIBCALL CitJourFree PROTO((CitJourPtr cjp)); 285 NLM_EXTERN CitJourPtr LIBCALL CitJourAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 286 NLM_EXTERN Boolean LIBCALL CitJourAsnWrite PROTO((CitJourPtr cjp, AsnIoPtr aip, AsnTypePtr atp)); 287 NLM_EXTERN Int2 LIBCALL CitJourMatch PROTO((CitJourPtr a, CitJourPtr b)); 288 289 /***************************************************************************** 290 * 291 * Cit-book 292 * 293 *****************************************************************************/ 294 typedef struct citbook { 295 ValNodePtr title, /* choice in order of spec, 1=name, 2=tsub, etc */ 296 coll; /* ditto */ 297 AuthListPtr authors; 298 ImprintPtr imp; 299 Uint1 othertype, /* 0=Cit-book, 1=Cit-proc, 2=Cit-let */ 300 let_type; /* if Cit-let, 1=manuscript,2=letter,3=thesis */ 301 Pointer otherdata; /* NULL, ValNodes, CharPtr man-id */ 302 } CitBook, PNTR CitBookPtr; 303 304 NLM_EXTERN CitBookPtr LIBCALL CitBookNew PROTO((void)); 305 NLM_EXTERN CitBookPtr LIBCALL CitBookFree PROTO((CitBookPtr cbp)); 306 NLM_EXTERN CitBookPtr LIBCALL CitBookAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 307 NLM_EXTERN Boolean LIBCALL CitBookAsnWrite PROTO((CitBookPtr cbp, AsnIoPtr aip, AsnTypePtr atp)); 308 NLM_EXTERN Int2 LIBCALL CitBookMatch PROTO((CitBookPtr a, CitBookPtr b)); 309 310 /***************************************************************************** 311 * 312 * Cit-sub 313 * Direct submission of data 314 * 315 *****************************************************************************/ 316 typedef struct citsub { 317 AuthListPtr authors; 318 ImprintPtr imp; /* WARNING: imp will be removed next year */ 319 Uint1 medium; 320 DatePtr date; /* this will replace imp */ 321 CharPtr descr; /* description of what happened */ 322 } CitSub, PNTR CitSubPtr; 323 324 NLM_EXTERN CitSubPtr LIBCALL CitSubNew PROTO((void)); 325 NLM_EXTERN CitSubPtr LIBCALL CitSubFree PROTO((CitSubPtr cbp)); 326 NLM_EXTERN CitSubPtr LIBCALL CitSubAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 327 NLM_EXTERN Boolean LIBCALL CitSubAsnWrite PROTO((CitSubPtr cbp, AsnIoPtr aip, AsnTypePtr atp)); 328 NLM_EXTERN Int2 LIBCALL CitSubMatch PROTO((CitSubPtr a, CitSubPtr b)); 329 330 331 /***************************************************************************** 332 * 333 * Cit-proc 334 * uses otherdata in Cit-book 335 * chain of ValNodes 336 * choice ident Pointer type 337 * 1 number CharPtr 338 * 2 date DatePtr 339 * 3 place AffilPtr 340 * 341 *****************************************************************************/ 342 NLM_EXTERN CitBookPtr LIBCALL CitProcAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 343 NLM_EXTERN Boolean LIBCALL CitProcAsnWrite PROTO((CitBookPtr cpp, AsnIoPtr aip, AsnTypePtr atp)); 344 345 /***************************************************************************** 346 * 347 * Cit-let 348 * uses otherdata in Cit-book as CharPtr for man-id 349 * 350 *****************************************************************************/ 351 NLM_EXTERN CitBookPtr LIBCALL CitLetAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 352 NLM_EXTERN Boolean LIBCALL CitLetAsnWrite PROTO((CitBookPtr cpp, AsnIoPtr aip, AsnTypePtr atp)); 353 354 355 356 /***************************************************************************** 357 * 358 * Cit-pat 359 * 360 *****************************************************************************/ 361 362 typedef struct patpriority { 363 CharPtr country, 364 number; 365 DatePtr date; 366 struct patpriority PNTR next; 367 } PatPriority, PNTR PatPriorityPtr; 368 369 typedef struct citpat { 370 CharPtr title; 371 AuthListPtr authors; 372 CharPtr country, 373 doc_type, 374 number; 375 DatePtr date_issue; 376 ValNodePtr _class; 377 CharPtr app_number; 378 DatePtr app_date; 379 AuthListPtr applicants; 380 AuthListPtr assignees; 381 PatPriorityPtr priority; 382 CharPtr abstract; 383 } CitPat, PNTR CitPatPtr; 384 385 NLM_EXTERN CitPatPtr LIBCALL CitPatNew PROTO((void)); 386 NLM_EXTERN CitPatPtr LIBCALL CitPatFree PROTO((CitPatPtr cpp)); 387 NLM_EXTERN CitPatPtr LIBCALL CitPatAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 388 NLM_EXTERN Boolean LIBCALL CitPatAsnWrite PROTO((CitPatPtr cpp, AsnIoPtr aip, AsnTypePtr atp)); 389 390 NLM_EXTERN PatPriorityPtr LIBCALL PatPriorityNew PROTO((void)); 391 NLM_EXTERN PatPriorityPtr LIBCALL PatPrioritySetFree PROTO((PatPriorityPtr ppp)); 392 NLM_EXTERN PatPriorityPtr LIBCALL PatPrioritySetAsnRead PROTO((AsnIoPtr aip, AsnTypePtr set, AsnTypePtr element)); 393 NLM_EXTERN Boolean LIBCALL PatPrioritySetAsnWrite PROTO((PatPriorityPtr ppp, AsnIoPtr aip, AsnTypePtr set, AsnTypePtr element)); 394 /***************************************************************************** 395 * 396 * Id-pat 397 * 398 *****************************************************************************/ 399 typedef struct idpat { 400 CharPtr country, 401 number, /** actually CHOICE of number or app_number */ 402 app_number; 403 CharPtr doc_type; 404 } IdPat, PNTR IdPatPtr; 405 406 NLM_EXTERN IdPatPtr LIBCALL IdPatNew PROTO((void)); 407 NLM_EXTERN IdPatPtr LIBCALL IdPatFree PROTO((IdPatPtr ipp)); 408 NLM_EXTERN IdPatPtr LIBCALL IdPatAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 409 NLM_EXTERN Boolean LIBCALL IdPatAsnWrite PROTO((IdPatPtr ipp, AsnIoPtr aip, AsnTypePtr atp)); 410 NLM_EXTERN Boolean LIBCALL IdPatMatch PROTO((IdPatPtr a, IdPatPtr b)); 411 412 /***************************************************************************** 413 * 414 * Cit-gen 415 * 416 *****************************************************************************/ 417 typedef struct cit_gen { 418 CharPtr cit; 419 AuthListPtr authors; 420 Int4 muid; /* medline uid, -1 if not set */ 421 ValNodePtr journal; /* journal/book Title */ 422 CharPtr volume, 423 issue, 424 pages; 425 DatePtr date; 426 Int2 serial_number; /* for GenBank style references (-1 = not used)*/ 427 CharPtr title; /* a specific title (in addition to cit or journal) */ 428 Int4 pmid; /* PubMedId */ 429 } CitGen, PNTR CitGenPtr; 430 431 NLM_EXTERN CitGenPtr LIBCALL CitGenNew PROTO((void)); 432 NLM_EXTERN CitGenPtr LIBCALL CitGenFree PROTO((CitGenPtr cgp)); 433 NLM_EXTERN CitGenPtr LIBCALL CitGenAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 434 NLM_EXTERN Boolean LIBCALL CitGenAsnWrite PROTO((CitGenPtr cgp, AsnIoPtr aip, AsnTypePtr atp)); 435 NLM_EXTERN Int2 LIBCALL CitGenMatch PROTO((CitGenPtr a, CitGenPtr b, Boolean all)); 436 437 /***************************************************************************** 438 * 439 * Title 440 * 441 *****************************************************************************/ 442 443 NLM_EXTERN ValNodePtr LIBCALL TitleFree PROTO((ValNodePtr anp)); 444 NLM_EXTERN ValNodePtr LIBCALL TitleAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp)); 445 NLM_EXTERN Boolean LIBCALL TitleAsnWrite PROTO((ValNodePtr anp, AsnIoPtr aip, AsnTypePtr atp)); 446 NLM_EXTERN Int2 LIBCALL TitleMatch PROTO((ValNodePtr a, ValNodePtr b, Uint1 type)); 447 448 #define Cit_title_name ( (Uint1) 1) 449 #define Cit_title_tsub ( (Uint1) 2) 450 #define Cit_title_trans ( (Uint1) 3) 451 #define Cit_title_jta ( (Uint1) 4) 452 #define Cit_title_iso_jta ( (Uint1) 5) 453 #define Cit_title_ml_jta ( (Uint1) 6) 454 #define Cit_title_coden ( (Uint1) 7) 455 #define Cit_title_issn ( (Uint1) 8) 456 #define Cit_title_abr ( (Uint1) 9) 457 #define Cit_title_isbn ( (Uint1) 10) 458 459 #ifdef __cplusplus 460 } 461 #endif 462 463 #undef NLM_EXTERN 464 #ifdef NLM_EXPORT 465 #define NLM_EXTERN NLM_EXPORT 466 #else 467 #define NLM_EXTERN 468 #endif 469 470 #endif 471