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

生物技术

开发平台:

C/C++

  1. ---
  2. --- Definitions for standard plugin interfaces
  3. ---
  4. NCBI-Plugin DEFINITIONS ::=
  5. BEGIN
  6. EXPORTS PluginValue, PluginValueConstraint,
  7.         PluginArg, PluginArgSet, PluginInfo,
  8.         PluginRequest, PluginReply, PluginReplyAction,
  9.         PluginMessage, MessageStatus, MessageHistoryInfo,
  10.         PluginCommand, PluginCommandSet, PluginDataFile;
  11. IMPORTS Bioseq, Seq-annot       FROM NCBI-Sequence
  12.         Bioseq-set, Seq-entry   FROM NCBI-Seqset
  13.         Seq-feat                FROM NCBI-Seqfeat
  14.         Seq-id, Seq-loc         FROM NCBI-Seqloc;
  15. ---
  16. --- ViewCommand defines the command set a view plugin supports
  17. ---
  18. ViewCommand ::= ENUMERATED {
  19.     no-command(0),
  20.     create-context(1),
  21.     destroy-context(2),
  22.     new-view(3)
  23. }
  24. ---
  25. --- DataCommand defines the commands understood by data loader
  26. --- plugins
  27. ---
  28. DataCommand ::= ENUMERATED {
  29.     no-command(0),
  30.     create-context(1),
  31.     destroy-context(2),
  32.     load(3),
  33.     save(4),
  34.     import(5),
  35.     search(6),
  36.     manage(7)
  37. }
  38. ---
  39. --- AlgoCommand defines commands understood by algorithm plugins
  40. ---
  41. AlgoCommand ::= ENUMERATED {
  42.     no-command(0),
  43.     create-context(1),
  44.     destroy-context(2),
  45.     run(3),
  46.     pause(4),
  47.     finish(5),
  48.     abort(6)
  49. }
  50. ---
  51. --- This defines the object stored in a plugin cache
  52. ---
  53. PluginCache ::= SET OF PluginLibInfo
  54. ---
  55. --- kludge around missing CTypeRef code (doesn't support 
  56. --- SET OF SEQUENCE {...} if the sequence includes a derived class)
  57. ---
  58. PluginLibInfo ::= SEQUENCE {
  59.     library  VisibleString,
  60.     enabled  BOOLEAN DEFAULT TRUE,   -- flag: is this plugin enabled?
  61.     info     PluginInfo
  62. }
  63. ---
  64. --- PluginInfo defines the basic information that all plugins must support
  65. ---
  66. PluginInfo ::= SEQUENCE {
  67.     ver-major       INTEGER,                -- major version number
  68.     ver-minor       INTEGER,                -- minor version number
  69.     ver-revision    INTEGER,                -- plugin-specific revision number
  70.     ver-build-date  VisibleString,          -- date of build
  71.     class-name      VisibleString,          -- text tag uniquely identifying
  72.                                             -- this plugin
  73.     menu-item       VisibleString OPTIONAL, -- menu item that will be shown
  74.                                             -- in a GUI
  75.     tooltip         VisibleString OPTIONAL, -- text for mouse-overs and status
  76.                                             -- bars
  77.     help-file       VisibleString OPTIONAL, -- location of the help file
  78.                                             -- associated with this plugin
  79.     autorun         BOOLEAN OPTIONAL,       -- flag: if true, we launch all
  80.                                             -- plugin commands on app startup
  81.     data-files      SET OF PluginDataFile OPTIONAL,
  82.     commands        PluginCommandSet        -- the commands and requirements
  83.                                             -- for this plugin
  84. }
  85. ---
  86. --- PluginRequest defines the commands we can issue to a plugin
  87. ---
  88. PluginRequest ::= CHOICE {
  89.     view    PluginCommand,
  90.     data    PluginCommand,
  91.     algo    PluginCommand
  92. }
  93. ---
  94. --- PluginReply defines the responses received from a plugin after completion
  95. --- of its activities.
  96. ---
  97. PluginReply ::= SEQUENCE {
  98.     status      MessageStatus DEFAULT failed,
  99.     action      SET OF PluginReplyAction OPTIONAL,
  100.     raw         SET OF PluginValue       OPTIONAL, -- things we've produced
  101.     formatted   PluginArgSet             OPTIONAL  -- caller-defined args
  102. }
  103. ---
  104. --- PluginReplyAction lists possible modes of action for the items returned
  105. --- from a plugin
  106. ---
  107. PluginReplyAction ::= CHOICE {
  108.     add-to-document NULL,
  109.     new-view        VisibleString,
  110.     store           NULL
  111. }
  112. ---
  113. --- PluginCommandSet defines a separate container for holding the set of all
  114. --- commands a plugin understands.  It is used in setting up a plugin cache;
  115. --- all plugins must support an interface to fill in and retrieve this
  116. --- structure.
  117. ---
  118. PluginCommandSet ::= CHOICE {
  119.     view    SET OF PluginCommand,
  120.     data    SET OF PluginCommand,
  121.     algo    SET OF PluginCommand
  122. }
  123. ---
  124. --- PluginCommand is the list of arguments that a plugin takes
  125. ---
  126. PluginCommand ::= SEQUENCE {
  127.     command  INTEGER,                   -- enumerated command type, as integer
  128.     context  VisibleString OPTIONAL,    -- optional named context
  129.     args     PluginArgSet  OPTIONAL     -- input arguments
  130. }
  131. ---
  132. --- PluginArgSet defines a set of arguments
  133. ---
  134. PluginArgSet ::= SEQUENCE OF PluginArg
  135. ---
  136. --- PluginArg defines the properties of a given argument
  137. ---
  138. PluginArg ::= SEQUENCE {
  139.     name        VisibleString,
  140.     desc        VisibleString OPTIONAL,
  141.     long-desc   VisibleString OPTIONAL,
  142.     optional    BOOLEAN DEFAULT FALSE,
  143.     default     BOOLEAN DEFAULT FALSE,
  144.     hidden      BOOLEAN DEFAULT FALSE,
  145.     data CHOICE {
  146.         single  PluginValue,
  147.         array   SET OF PluginValue
  148.     },
  149.     constraint  SET OF PluginValueConstraint OPTIONAL
  150. }
  151. ---
  152. --- Wrappers for non-serializable objects
  153. --- For these we encode a pointer and a name of the object type
  154. ---
  155. PluginObject ::= SEQUENCE {
  156.     docaddr VisibleString,
  157.     objaddr VisibleString,
  158.     subtype VisibleString
  159. }
  160. ---
  161. --- PluginValue variant
  162. ---
  163. PluginValue ::= CHOICE {
  164.     integer  VisibleString,
  165.     double   VisibleString,
  166.     string   VisibleString,
  167.     file     VisibleString,
  168.     boolean  VisibleString,
  169.     document PluginObject,
  170.     object   PluginObject
  171. }
  172. ---
  173. --- Value constraints
  174. ---
  175. PluginValueConstraint ::= CHOICE {
  176.     --- simple constraints for built-in types
  177.     lower VisibleString,
  178.     upper VisibleString,
  179.     range PluginValueRangeConstraint,
  180.     set   SET OF VisibleString,
  181.     --- bioseq constraints
  182.     seq-repr          SET OF INTEGER, --- segmented, raw, virtual, etc
  183.     seq-mol           SET OF INTEGER, --- nucleic acid, protein, etc
  184.     seq-mol-same-type NULL,
  185.     seq-length-lower  INTEGER,
  186.     seq-length-upper  INTEGER,
  187.     seq-length-range  PluginValueRangeConstraint,
  188.     seq-length-same   NULL,
  189.     --- seq-entry constraints
  190.     entry-type INTEGER,          --- genprod set, nucprot set, etc
  191.     --- seq-annot constraints
  192.     annot-type INTEGER,          --- feature table, alignments, graphs
  193.     --- seq-feat constraints
  194.     feat-type        SET OF INTEGER, --- gene, rna, user, pub, etc.
  195.     feat-subtype     SET OF INTEGER, --- any recognized subtype
  196.     feat-has-product NULL            --- only features with the product flag set
  197. }
  198. PluginValueRangeConstraint ::= SEQUENCE {
  199.     lower VisibleString,
  200.     upper VisibleString
  201. }
  202. ---
  203. --- specification for a data file required by a plugin
  204. --- these are established with a set of aliases that a plugin can
  205. --- reference
  206. ---
  207. PluginDataFile ::= SEQUENCE {
  208.     alias    VisibleString,
  209.     url      VisibleString,
  210.     location VisibleString
  211. }
  212. ---
  213. --- MessageStatus defines return codes for plugin operations
  214. ---
  215. MessageStatus ::= ENUMERATED {
  216.     failed(0),
  217.     success(1),
  218.     not-handled(2),
  219.     ignored(3),
  220.     initiated(4),
  221.     completed(5)
  222. }
  223. ---
  224. --- PluginMessage holds information regarding a single request to a plugin
  225. ---
  226. PluginMessage ::= SEQUENCE {
  227.     -- routing information
  228.     source          VisibleString   OPTIONAL,   -- source plugin
  229.     destination     VisibleString,              -- destination plugin
  230.     --- context in which we operate
  231.     context     VisibleString OPTIONAL,
  232.     in-reply-to PluginMessage OPTIONAL,  -- PluginMessage we are responding to
  233.     
  234.     request     PluginRequest, -- command to be passed to the plugin
  235.     reply       PluginReply    -- reply received from a plugin
  236. }
  237. ---
  238. --- MRU structures
  239. ---
  240. PluginMRUEntry ::= SEQUENCE {
  241.     label VisibleString,
  242.     message PluginMessage
  243. }
  244. PluginMRUList ::= SEQUENCE OF PluginMRUEntry
  245. ---
  246. --- PluginMessageChain holds a set of plugin messages that are intended to
  247. --- be called sequentially.
  248. ---
  249. PluginMessageChain ::= SEQUENCE OF PluginMessage
  250. ---
  251. --- MessageHistoryInfo holds information about plugin commands
  252. ---
  253. MessageHistoryInfo ::= SEQUENCE {
  254.     id              INTEGER,
  255.     description     VisibleString,
  256.     reply-to        INTEGER         DEFAULT 0, 
  257.     time            VisibleString   OPTIONAL
  258. }
  259. END