From 8135f61264c849a194166456a09829173f1a5016 Mon Sep 17 00:00:00 2001 From: graehl Date: Sat, 7 Aug 2010 05:18:55 +0000 Subject: forgot to add git-svn-id: https://ws10smt.googlecode.com/svn/trunk@488 ec762483-ff6d-05da-a07a-a48fb63a330f --- decoder/ff_register.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 decoder/ff_register.h (limited to 'decoder') diff --git a/decoder/ff_register.h b/decoder/ff_register.h new file mode 100755 index 00000000..f0828ca3 --- /dev/null +++ b/decoder/ff_register.h @@ -0,0 +1,46 @@ +#ifndef FF_FSA_REGISTER_H +#define FF_FSA_REGISTER_H + +#include "ff_factory.h" +#include "ff_from_fsa.h" +#include "ff_fsa_dynamic.h" + +inline std::string prefix_fsa(std::string const& name,bool fsa_prefix_ff) { + return fsa_prefix_ff ? "Fsa"+name : name; +} + +//FIXME: problem with FeatureFunctionFromFsa - need to use factory rather than ctor. +#if 0 +template +inline void RegisterFsa(bool ff_also=true,bool fsa_prefix_ff=true) { + assert(!ff_also); +// global_fsa_ff_registry->RegisterFsa(); +//if (ff_also) ff_registry.RegisterFF >(prefix_fsa(DynFsa::usage(false,false)),fsa_prefix_ff); +} +#endif + +//TODO: ff from fsa that uses pointer to fsa impl? e.g. in LanguageModel we share underlying lm file by recognizing same param, but without that effort, otherwise stateful ff may duplicate state if we enable both fsa and ff_from_fsa +template +inline void RegisterFsaImpl(bool ff_also=true,bool fsa_prefix_ff=false) { + typedef FsaFeatureFunctionDynamic DynFsa; + typedef FeatureFunctionFromFsa FFFrom; + std::string name=FsaImpl::usage(false,false); + fsa_ff_registry.Register(new FsaFactory); + if (ff_also) + ff_registry.Register(prefix_fsa(name,fsa_prefix_ff),new FFFactory); +} + +template +inline void RegisterFF() { + ff_registry.Register(new FFFactory); +} + +template +inline void RegisterFsaDynToFF(bool prefix=true) { + typedef FsaFeatureFunctionDynamic DynFsa; + std::string name=FsaImpl::usage(false,false); + ff_registry.Register(prefix?"DynamicFsa"+name:name,new FFFactory >); +} + + +#endif -- cgit v1.2.3