The Meta-Environment API

rscript-module-utils.tb

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

Generated on Fri Sep 12 13:18:43 2008 for rscript-meta by  doxygen 1.4.6