The Meta-Environment API

asf-listeners.tb

Go to the documentation of this file.
00001 #ifndef __ASF_LISTENERS__
00002 #define __ASF_LISTENERS__
00003 
00004 #include <asf-namespace.h>
00005 #include <asf-utils.tb>
00006 
00007 process ASFModuleRegistrar is
00008 let
00009   Event: attribute-changed-event,
00010   ModuleId: module-id,
00011   NewPath: term,
00012   Idle: term
00013 in
00014   Idle := no
00015   . MM-Subscribe-Attribute-Changed(<module-id>,SDF_NAMESPACE,"status",<term>,identified) 
00016   .
00017   (
00018     rec-note(mm-attribute-changed(Event?))
00019     . ACE-GetModuleId(Event, ModuleId?)
00020     . RegisterASFModule(ModuleId)
00021   )
00022   *
00023   delta
00024 endlet
00025 
00026 toolbus(ASFModuleRegistrar)
00027 
00028 process ASFModuleOpener is
00029 let
00030   Event: attribute-changed-event,
00031   ModuleId: module-id,
00032   NewPath: term,
00033   Idle: term
00034 in
00035   Idle := no
00036   . MM-Subscribe-Attribute-Changed(<module-id>,SDF_NAMESPACE,"status",<term>,complete) 
00037   .
00038   (
00039     rec-note(mm-attribute-changed(Event?))
00040     . ACE-GetModuleId(Event, ModuleId?)
00041     . OpenASFModule(ModuleId)
00042   )
00043   *
00044   delta
00045 endlet
00046 
00047 toolbus(ASFModuleOpener)
00048 
00049 process ASFSDFSyntaxChecker is
00050 let
00051   Event: attribute-changed-event,
00052   ModuleId: module-id,
00053   Tree: term,
00054   Result: term,
00055   Parents: list
00056 in
00057   MM-Subscribe-Attribute-Changed(<module-id>,SDF_NAMESPACE,"status",<term>,complete)
00058   .
00059   (
00060     rec-note(mm-attribute-changed(Event?))
00061     . ACE-GetModuleId(Event, ModuleId?)
00062     . MM-GetModuleParents(ModuleId, Parents?)
00063     . /* we only check top modules */
00064     if equal(Parents, []) then
00065       CheckASFSDFSyntax(ModuleId)
00066     else
00067       tau
00068     fi
00069   )
00070   *
00071   delta
00072 endlet
00073 
00074 toolbus(ASFSDFSyntaxChecker)
00075 
00076 process ASFModuleChecker is
00077 let
00078   Event: attribute-changed-event,
00079   ModuleId: module-id,
00080   NewPath: term,
00081   Tree: term
00082 in
00083   MM-Subscribe-Attribute-Changed(<module-id>,ASF_NAMESPACE,"status",available,parsed)  
00084   .
00085   (
00086     rec-note(mm-attribute-changed(Event?))
00087     . ACE-GetModuleId(Event, ModuleId?)
00088     . CheckASFModule(ModuleId)
00089   )
00090   *
00091   delta
00092 endlet
00093 
00094 toolbus(ASFModuleChecker)
00095 
00096 process ASFModuleShapeChanger is
00097 let
00098   Event: attribute-changed-event,
00099   ModuleId: module-id,
00100   NewPath: term,
00101   Tree: term
00102 in
00103   MM-Subscribe-Attribute-Changed(<module-id>,ASF_NAMESPACE,"status",<term>,available)  
00104   .
00105   (
00106     rec-note(mm-attribute-changed(Event?))
00107     . ACE-GetModuleId(Event, ModuleId?)
00108     . MM-SetModuleGraphAttribute(ModuleId, "shape", shape(ellipse))
00109   )
00110   *
00111   delta
00112 endlet
00113 
00114 toolbus(ASFModuleShapeChanger)
00115 
00116 process ASFModuleParser is
00117 let
00118   Event: attribute-changed-event,
00119   ModuleId: module-id,
00120   Tree: term
00121 in
00122   MM-Subscribe-Attribute-Changed(<module-id>,ASF_NAMESPACE,"status",<term>,available)
00123   .
00124   (
00125     rec-note(mm-attribute-changed(Event?))
00126     . ACE-GetModuleId(Event, ModuleId?)
00127     . GetASFParseTree(ModuleId, Tree?)
00128     .
00129     if not-equal(Tree, UNDEFINED) then
00130        MM-SetAttribute(ModuleId, ASF_NAMESPACE, "status", parsed)
00131     else
00132        MM-SetAttribute(ModuleId, ASF_NAMESPACE, "status", error)
00133     fi
00134     . Tree := UNDEFINED
00135   )
00136   *
00137   delta
00138 endlet
00139 
00140 /* TODO: add syntax checker */
00141 
00142 toolbus(ASFModuleParser)
00143 
00144 #endif /* __ASF_LISTENERS__ */

Generated on Fri Sep 12 13:16:07 2008 for asfsdf-meta by  doxygen 1.4.6