The Meta-Environment API

sdf-module-utils.tb

Go to the documentation of this file.
00001 #ifndef __SDF_MODULE_UTILS__
00002 #define __SDF_MODULE_UTILS__
00003 
00004 #include <undefined.h>
00005 process ModulenameBase(Modulename: str, Name: str?) is
00006   snd-msg(io-get-path-filename(Modulename))
00007   . rec-msg(io-filename(Modulename, Name?))
00008 
00009 process ComputeCanonicalLanguagename(Modulename : str, Languagename : str?) is
00010 let
00011   Directory: str,
00012   Prefix: str,
00013   Name: str
00014 in
00015   LanguageNameFromModuleName(Modulename, Prefix?)
00016   . ModulenameBase(Modulename, Name?)
00017   .
00018   if not-equal(Prefix, UNDEFINED) then
00019     Prefix := concat(Prefix, "/")
00020   else
00021     tau
00022   fi 
00023   . Languagename := concat(Prefix, Name)
00024 endlet
00025 
00026 process LanguageNameFromModuleName(Modulename: str, Languagename: str?) is
00027 let
00028   Directory: str,
00029   Prefix: str,
00030   Name: str
00031 in
00032   snd-msg(io-get-path-directory(Modulename)) 
00033   . rec-msg(io-directory(Modulename, Directory?))
00034   .
00035   if not-equal(Directory, "") then
00036     snd-msg(io-get-path-directory(Directory)) 
00037     . rec-msg(io-directory(Directory, Languagename?))
00038   else
00039     Languagename := "" 
00040   fi
00041 endlet
00042 
00043 process ComputeFeatureModulename(Modulename : str, Feature : str, FeatureModulename : str?) is
00044 let
00045   Directory: str,
00046   Prefix: str,
00047   Name: str
00048 in
00049   LanguageNameFromModuleName(Modulename, Prefix?)
00050   . ModulenameBase(Modulename, Name?)
00051   .
00052   if not-equal(Prefix, "") then
00053     Prefix := concat(Prefix, "/")
00054   else
00055     tau
00056   fi 
00057   . FeatureModulename := concat(concat(Prefix,concat(Feature, "/")), Name)
00058 endlet
00059 
00060 /**
00061  * This process connects two modules, by taking the dirname of a 
00062  * module name twice, then add the feature string, and then adding the
00063  * basename again to construct a new file name.
00064  */
00065 process LookupFeatureModuleId(ModuleId: module-id, Feature : str, NewModuleId : module-id?) is
00066 let
00067   Modulename: str,
00068   Directory: str,
00069   Prefix: str,
00070   Name: str,
00071   FeatureModulename: str
00072 in
00073   NewModuleId := UNDEFINED
00074   . MM-GetAttribute(ModuleId, SDF_NAMESPACE, "name", Modulename?)
00075   . ComputeFeatureModulename(Modulename, Feature, FeatureModulename?)
00076   . MM-GetModuleIdByAttribute(SDF_NAMESPACE, "name", FeatureModulename, NewModuleId?)
00077 endlet
00078 
00079 #endif

Generated on Fri Sep 12 13:09:47 2008 for sdf-meta by  doxygen 1.4.6