diff options
author | Ted Yin <[email protected]> | 2015-08-14 17:42:26 +0800 |
---|---|---|
committer | Ted Yin <[email protected]> | 2015-08-14 17:42:26 +0800 |
commit | c3cffb58b9921d78753336421b52b9ffdaa5515c (patch) | |
tree | bfea20e97c200cf734021e3756d749c892e658a4 /kaldi_io/src/tools/openfst/include/fst/register.h | |
parent | 10cce5f6a5c9e2f8e00d5a2a4d87c9cb7c26bf4c (diff) | |
parent | dfdd17afc2e984ec6c32ea01290f5c76309a456a (diff) |
Merge pull request #2 from yimmon/master
remove needless files
Diffstat (limited to 'kaldi_io/src/tools/openfst/include/fst/register.h')
-rw-r--r-- | kaldi_io/src/tools/openfst/include/fst/register.h | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/kaldi_io/src/tools/openfst/include/fst/register.h b/kaldi_io/src/tools/openfst/include/fst/register.h deleted file mode 100644 index ea3f4d8..0000000 --- a/kaldi_io/src/tools/openfst/include/fst/register.h +++ /dev/null @@ -1,133 +0,0 @@ -// register.h - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Copyright 2005-2010 Google, Inc. -// Author: [email protected] (Michael Riley), [email protected] (Jake Ratkiewicz) -// -// \file -// Classes for registering derived Fsts for generic reading -// - -#ifndef FST_LIB_REGISTER_H__ -#define FST_LIB_REGISTER_H__ - -#include <string> - - -#include <fst/compat.h> -#include <iostream> -#include <fstream> -#include <sstream> -#include <fst/util.h> -#include <fst/generic-register.h> - - -#include <fst/types.h> - -namespace fst { - -template <class A> class Fst; -struct FstReadOptions; - -// This class represents a single entry in a FstRegister -template<class A> -struct FstRegisterEntry { - typedef Fst<A> *(*Reader)(istream &strm, const FstReadOptions &opts); - typedef Fst<A> *(*Converter)(const Fst<A> &fst); - - Reader reader; - Converter converter; - FstRegisterEntry() : reader(0), converter(0) {} - FstRegisterEntry(Reader r, Converter c) : reader(r), converter(c) { } -}; - -// This class maintains the correspondence between a string describing -// an FST type, and its reader and converter. -template<class A> -class FstRegister : public GenericRegister<string, FstRegisterEntry<A>, - FstRegister<A> > { - public: - typedef typename FstRegisterEntry<A>::Reader Reader; - typedef typename FstRegisterEntry<A>::Converter Converter; - - const Reader GetReader(const string &type) const { - return this->GetEntry(type).reader; - } - - const Converter GetConverter(const string &type) const { - return this->GetEntry(type).converter; - } - - protected: - virtual string ConvertKeyToSoFilename(const string& key) const { - string legal_type(key); - - ConvertToLegalCSymbol(&legal_type); - - return legal_type + "-fst.so"; - } -}; - - -// This class registers an Fst type for generic reading and creating. -// The Fst type must have a default constructor and a copy constructor -// from 'Fst<Arc>' for this to work. -template <class F> -class FstRegisterer - : public GenericRegisterer<FstRegister<typename F::Arc> > { - public: - typedef typename F::Arc Arc; - typedef typename FstRegister<Arc>::Entry Entry; - typedef typename FstRegister<Arc>::Reader Reader; - - FstRegisterer() : - GenericRegisterer<FstRegister<typename F::Arc> >( - F().Type(), BuildEntry()) { } - - private: - Entry BuildEntry() { - F *(*reader)(istream &strm, - const FstReadOptions &opts) = &F::Read; - - return Entry(reinterpret_cast<Reader>(reader), - &FstRegisterer<F>::Convert); - } - - static Fst<Arc> *Convert(const Fst<Arc> &fst) { return new F(fst); } -}; - - -// Convenience macro to generate static FstRegisterer instance. -#define REGISTER_FST(F, A) \ -static fst::FstRegisterer< F<A> > F ## _ ## A ## _registerer - - -// Converts an fst to type 'type'. -template <class A> -Fst<A> *Convert(const Fst<A> &fst, const string &ftype) { - FstRegister<A> *registr = FstRegister<A>::GetRegister(); - const typename FstRegister<A>::Converter - converter = registr->GetConverter(ftype); - if (!converter) { - string atype = A::Type(); - LOG(ERROR) << "Fst::Convert: Unknown FST type \"" << ftype - << "\" (arc type = \"" << atype << "\")"; - return 0; - } - return converter(fst); -} - -} // namespace fst - -#endif // FST_LIB_REGISTER_H__ |