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

生物技术

开发平台:

C/C++

  1. --
  2. -- ===========================================================================
  3. -- PRODUCTION $Log: general.asn,v $
  4. -- PRODUCTION Revision 1000.0  2003/10/29 21:15:01  gouriano
  5. -- PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R6.4
  6. -- PRODUCTION
  7. -- ===========================================================================
  8. --
  9. --$Revision: 1000.0 $
  10. --**********************************************************************
  11. --
  12. --  NCBI General Data elements
  13. --  by James Ostell, 1990
  14. --  Version 3.0 - June 1994
  15. --
  16. --**********************************************************************
  17. NCBI-General DEFINITIONS ::=
  18. BEGIN
  19. EXPORTS Date, Person-id, Object-id, Dbtag, Int-fuzz, User-object;
  20. -- StringStore is really a VisibleString.  It is used to define very
  21. --   long strings which may need to be stored by the receiving program
  22. --   in special structures, such as a ByteStore, but it's just a hint.
  23. --   AsnTool stores StringStores in ByteStore structures.
  24. -- OCTET STRINGs are also stored in ByteStores by AsnTool
  25. -- 
  26. -- typedef struct bsunit {             /* for building multiline strings */
  27.    -- Nlm_Handle str;            /* the string piece */
  28.    -- Nlm_Int2 len_avail,
  29.        -- len;
  30.    -- struct bsunit PNTR next; }       /* the next one */
  31. -- Nlm_BSUnit, PNTR Nlm_BSUnitPtr;
  32. -- 
  33. -- typedef struct bytestore {
  34.    -- Nlm_Int4 seekptr,       /* current position */
  35.       -- totlen,             /* total stored data length in bytes */
  36.       -- chain_offset;       /* offset in ByteStore of first byte in curchain */
  37.    -- Nlm_BSUnitPtr chain,       /* chain of elements */
  38.       -- curchain;           /* the BSUnit containing seekptr */
  39. -- } Nlm_ByteStore, PNTR Nlm_ByteStorePtr;
  40. --
  41. -- AsnTool incorporates this as a primitive type, so the definition
  42. --   is here just for completeness
  43. -- 
  44. --  StringStore ::= [APPLICATION 1] IMPLICIT OCTET STRING
  45. --
  46. -- BigInt is really an INTEGER. It is used to warn the receiving code to expect
  47. --   a value bigger than Int4 (actually Int8). It will be stored in DataVal.bigintvalue
  48. --
  49. --   Like StringStore, AsnTool incorporates it as a primitive. The definition would be:
  50. --   BigInt ::= [APPLICATION 2] IMPLICIT INTEGER
  51. --
  52. -- Date is used to replace the (overly complex) UTCTtime, GeneralizedTime
  53. --  of ASN.1
  54. --  It stores only a date
  55. --
  56. Date ::= CHOICE {
  57.     str VisibleString ,        -- for those unparsed dates
  58.     std Date-std }             -- use this if you can
  59. Date-std ::= SEQUENCE {        -- NOTE: this is NOT a unix tm struct
  60.     year INTEGER ,             -- full year (including 1900)
  61.     month INTEGER OPTIONAL ,   -- month (1-12)
  62.     day INTEGER OPTIONAL ,     -- day of month (1-31)
  63.     season VisibleString OPTIONAL ,  -- for "spring", "may-june", etc
  64.     hour INTEGER OPTIONAL ,    -- hour of day (0-23)
  65.     minute INTEGER OPTIONAL ,  -- minute of hour (0-59)
  66.     second INTEGER OPTIONAL }  -- second of minute (0-59)
  67. -- Dbtag is generalized for tagging
  68. -- eg. { "Social Security", str "023-79-8841" }
  69. -- or  { "member", id 8882224 }
  70. Dbtag ::= SEQUENCE {
  71.     db VisibleString ,          -- name of database or system
  72.     tag Object-id }         -- appropriate tag
  73. -- Object-id can tag or name anything
  74. --
  75. Object-id ::= CHOICE {
  76.     id INTEGER ,
  77.     str VisibleString }
  78. -- Person-id is to define a std element for people
  79. --
  80. Person-id ::= CHOICE {
  81.     dbtag Dbtag ,               -- any defined database tag
  82.     name Name-std ,             -- structured name
  83.     ml VisibleString ,          -- MEDLINE name (semi-structured)
  84.                                 --    eg. "Jones RM"
  85.     str VisibleString,          -- unstructured name
  86.     consortium VisibleString }  -- consortium name
  87. Name-std ::= SEQUENCE { -- Structured names
  88.     last VisibleString ,
  89.     first VisibleString OPTIONAL ,
  90.     middle VisibleString OPTIONAL ,
  91.     full VisibleString OPTIONAL ,    -- full name eg. "J. John Smith, Esq"
  92.     initials VisibleString OPTIONAL,  -- first + middle initials
  93.     suffix VisibleString OPTIONAL ,   -- Jr, Sr, III
  94.     title VisibleString OPTIONAL }    -- Dr., Sister, etc
  95. --**** Int-fuzz **********************************************
  96. --*
  97. --*   uncertainties in integer values
  98. Int-fuzz ::= CHOICE {
  99.     p-m INTEGER ,                    -- plus or minus fixed amount
  100.     range SEQUENCE {                 -- max to min
  101.         max INTEGER ,
  102.         min INTEGER } ,
  103.     pct INTEGER ,                    -- % plus or minus (x10) 0-1000
  104.     lim ENUMERATED {                 -- some limit value
  105.         unk (0) ,                    -- unknown
  106.         gt (1) ,                     -- greater than
  107.         lt (2) ,                     -- less than
  108.         tr (3) ,                     -- space to right of position
  109.         tl (4) ,                     -- space to left of position
  110.         circle (5) ,                 -- artificial break at origin of circle
  111.         other (255) } ,              -- something else
  112.     alt SET OF INTEGER }             -- set of alternatives for the integer
  113. --**** User-object **********************************************
  114. --*
  115. --*   a general object for a user defined structured data item
  116. --*    used by Seq-feat and Seq-descr
  117. User-object ::= SEQUENCE {
  118.     class VisibleString OPTIONAL ,   -- endeavor which designed this object
  119.     type Object-id ,                 -- type of object within class
  120.     data SEQUENCE OF User-field }    -- the object itself
  121. User-field ::= SEQUENCE {
  122.     label Object-id ,                -- field label
  123.     num INTEGER OPTIONAL ,           -- required for strs, ints, reals, oss
  124.     data CHOICE {                    -- field contents
  125.         str VisibleString ,
  126.         int INTEGER ,
  127.         real REAL ,
  128.         bool BOOLEAN ,
  129.         os OCTET STRING ,
  130.         object User-object ,         -- for using other definitions
  131.         strs SEQUENCE OF VisibleString ,
  132.         ints SEQUENCE OF INTEGER ,
  133.         reals SEQUENCE OF REAL ,
  134.         oss SEQUENCE OF OCTET STRING ,
  135.         fields SEQUENCE OF User-field ,
  136.         objects SEQUENCE OF User-object } }
  137. END