encode.h revision f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2
1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// Licensed under the Apache License, Version 2.0 (the "License");
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// you may not use this file except in compliance with the License.
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// You may obtain a copy of the License at
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project//
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project//     http://www.apache.org/licenses/LICENSE-2.0
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project//
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// Unless required by applicable law or agreed to in writing, software
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// distributed under the License is distributed on an "AS IS" BASIS,
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// See the License for the specific language governing permissions and
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// limitations under the License.
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project//
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// Copyright 2005-2010 Google, Inc.
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// Author: jpr@google.com (Jake Ratkiewicz)
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef FST_SCRIPT_ENCODE_H_
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define FST_SCRIPT_ENCODE_H_
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <string>
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <fst/script/arg-packs.h>
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <fst/script/fst-class.h>
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <fst/encode.h>
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectnamespace fst {
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectnamespace script {
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef args::Package<MutableFstClass*, uint32, bool,
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                      const string &> EncodeArgs;
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttemplate<class Arc>
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid Encode(EncodeArgs *args) {
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  MutableFst<Arc> *ofst = args->arg1->GetMutableFst<Arc>();
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  bool reuse_encoder = args->arg3;
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  const string &coder_fname = args->arg4;
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  uint32 flags = args->arg2;
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  EncodeMapper<Arc> *encoder = reuse_encoder
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project      ? EncodeMapper<Arc>::Read(coder_fname, ENCODE)
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project      : new EncodeMapper<Arc>(flags, ENCODE);
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  Encode(ofst, encoder);
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  if (!args->arg3)
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    encoder->Write(coder_fname);
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  delete encoder;
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid Encode(MutableFstClass *fst, uint32 flags, bool reuse_encoder,
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project            const string &coder_fname);
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}  // namespace script
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}  // namespace fst
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif  // FST_SCRIPT_ENCODE_H_
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project