40 #include "ling_class/EST_Item.h"
41 #include "ling_class/EST_FeatureFunctionPackage.h"
42 #include "EST_FeatureFunctionContext.h"
44 #include "ling_class_init.h"
46 void EST_FeatureFunctionContext::class_init(
void)
48 ling_class_init::use();
55 const EST_String EST_FeatureFunctionContext::separator =
"+";
57 EST_FeatureFunctionContext::EST_FeatureFunctionContext(
void)
62 EST_FeatureFunctionContext::~EST_FeatureFunctionContext(
void)
66 for(p.begin(packages); p; ++p)
79 for(p.begin(packages); p; ++p)
82 if (package->name() == name)
88 EST_String EST_FeatureFunctionContext::get_featfunc_name(
const EST_Item_featfunc func,
int &found)
const
94 for(p.begin(packages); p; ++p)
98 EST_String name = package->lookup(func, found);
111 void EST_FeatureFunctionContext::clear_cache(
void)
116 void EST_FeatureFunctionContext::add_package(
const EST_String name)
119 EST_error(
"Attempt to add package '%s' to global list",
126 EST_error(
"package '%s' not loaded",
130 packages.prepend(package);
142 bool EST_FeatureFunctionContext::package_included(
const EST_String name)
const
144 return get_package(name) != NULL;
147 const EST_Item_featfunc EST_FeatureFunctionContext::get_featfunc(
const EST_String name,
154 return cache.
val(name);
156 if ((pos= name.
search(separator, len, 0))>=0)
158 const EST_Item_featfunc func2 =
171 for(p.begin(packages); p; ++p)
181 cache.add_item(name, ent.func);
187 EST_error(
"No feature function '%s'", (
const char *)name);
192 const EST_Item_featfunc EST_FeatureFunctionContext::get_featfunc(
const EST_String pname,
201 package->lookup(name, found);
207 EST_error(
"No feature function '%s'", (
const char *)name);
215 template <> EST_Item_featfunc
220 #if defined(INSTANTIATE_TEMPLATES)
222 #include "../base_class/EST_THash.cc"
224 Instantiate_TStringHash(EST_Item_featfunc)
226 #include "../base_class/EST_TList.cc"