aboutsummaryrefslogtreecommitdiff
path: root/src/include/fst/script/map.h
diff options
context:
space:
mode:
authorPrzemyslaw Szczepaniak <pszczepaniak@google.com>2013-03-04 11:30:34 +0000
committerPrzemyslaw Szczepaniak <pszczepaniak@google.com>2013-03-04 11:30:34 +0000
commit5bf56ba7027cd5f22ff52d0138893f7a585135fb (patch)
tree19e17fc79b8873e66f211276d4dd169c480cede1 /src/include/fst/script/map.h
parent3da1eb108d36da35333b2d655202791af854996b (diff)
parent5b6dc79427b8f7eeb6a7ff68034ab8548ce670ea (diff)
downloadopenfst-idea133-weekly-release.tar.gz
Diffstat (limited to 'src/include/fst/script/map.h')
-rw-r--r--src/include/fst/script/map.h54
1 files changed, 31 insertions, 23 deletions
diff --git a/src/include/fst/script/map.h b/src/include/fst/script/map.h
index 2332074..3caaa9f 100644
--- a/src/include/fst/script/map.h
+++ b/src/include/fst/script/map.h
@@ -59,46 +59,54 @@ void Map(MapArgs *args) {
float delta = args->args.arg3;
typename Arc::Weight w = *(args->args.arg4.GetWeight<typename Arc::Weight>());
+ Fst<Arc> *fst = NULL;
+ Fst<LogArc> *lfst = NULL;
+ Fst<Log64Arc> *l64fst = NULL;
+ Fst<StdArc> *sfst = NULL;
if (map_type == ARC_SUM_MAPPER) {
- args->retval = new FstClass(
- script::StateMap(ifst, ArcSumMapper<Arc>(ifst)));
+ args->retval = new FstClass(*(fst =
+ script::StateMap(ifst, ArcSumMapper<Arc>(ifst))));
} else if (map_type == IDENTITY_MAPPER) {
- args->retval = new FstClass(
- script::ArcMap(ifst, IdentityArcMapper<Arc>()));
+ args->retval = new FstClass(*(fst =
+ script::ArcMap(ifst, IdentityArcMapper<Arc>())));
} else if (map_type == INVERT_MAPPER) {
- args->retval = new FstClass(
- script::ArcMap(ifst, InvertWeightMapper<Arc>()));
+ args->retval = new FstClass(*(fst =
+ script::ArcMap(ifst, InvertWeightMapper<Arc>())));
} else if (map_type == PLUS_MAPPER) {
- args->retval = new FstClass(
- script::ArcMap(ifst, PlusMapper<Arc>(w)));
+ args->retval = new FstClass(*(fst =
+ script::ArcMap(ifst, PlusMapper<Arc>(w))));
} else if (map_type == QUANTIZE_MAPPER) {
- args->retval = new FstClass(
- script::ArcMap(ifst, QuantizeMapper<Arc>(delta)));
+ args->retval = new FstClass(*(fst =
+ script::ArcMap(ifst, QuantizeMapper<Arc>(delta))));
} else if (map_type == RMWEIGHT_MAPPER) {
- args->retval = new FstClass(
- script::ArcMap(ifst, RmWeightMapper<Arc>()));
+ args->retval = new FstClass(*(fst =
+ script::ArcMap(ifst, RmWeightMapper<Arc>())));
} else if (map_type == SUPERFINAL_MAPPER) {
- args->retval = new FstClass(
- script::ArcMap(ifst, SuperFinalMapper<Arc>()));
+ args->retval = new FstClass(*(fst =
+ script::ArcMap(ifst, SuperFinalMapper<Arc>())));
} else if (map_type == TIMES_MAPPER) {
- args->retval = new FstClass(
- script::ArcMap(ifst, TimesMapper<Arc>(w)));
+ args->retval = new FstClass(*(fst =
+ script::ArcMap(ifst, TimesMapper<Arc>(w))));
} else if (map_type == TO_LOG_MAPPER) {
- args->retval = new FstClass(
- script::ArcMap(ifst, WeightConvertMapper<Arc, LogArc>()));
+ args->retval = new FstClass(*(lfst =
+ script::ArcMap(ifst, WeightConvertMapper<Arc, LogArc>())));
} else if (map_type == TO_LOG64_MAPPER) {
- args->retval = new FstClass(
- script::ArcMap(ifst, WeightConvertMapper<Arc, Log64Arc>()));
+ args->retval = new FstClass(*(l64fst =
+ script::ArcMap(ifst, WeightConvertMapper<Arc, Log64Arc>())));
} else if (map_type == TO_STD_MAPPER) {
- args->retval = new FstClass(
- script::ArcMap(ifst, WeightConvertMapper<Arc, StdArc>()));
+ args->retval = new FstClass(*(sfst =
+ script::ArcMap(ifst, WeightConvertMapper<Arc, StdArc>())));
} else {
FSTERROR() << "Error: unknown/unsupported mapper type: "
<< map_type;
VectorFst<Arc> *ofst = new VectorFst<Arc>;
ofst->SetProperties(kError, kError);
- args->retval = new FstClass(ofst);
+ args->retval = new FstClass(*(fst =ofst));
}
+ delete sfst;
+ delete l64fst;
+ delete lfst;
+ delete fst;
}