00001 #include "sfst/alphabet.h"
00002 #include "sfst/fst.h"
00003
00004 #ifndef GUARD_HFST_h
00005 #define GUARD_HFST_h
00006
00007 #include "hfst_defs_public.h"
00008
00009 DECLARE_HANDLE_TYPE(Transducer);
00010
00011 class Node;
00012 union State {
00013 Node *node;
00014 int state_id;
00015 };
00016
00017
00055 namespace HFST {}
00056
00057
00061 namespace HWFST {}
00062
00063
00064
00065 #ifndef SKIP_HFST_DOCUMENTATION
00066
00067 class Arc;
00068 class ArcsIter;
00069
00070 namespace HFST {
00071 struct range_t {
00072 Character character;
00073 struct range_t *next;
00074 };
00075 typedef range_t Range;
00076 typedef Range Range;
00077
00078 void delete_range(Range *t);
00079
00080 struct ranges_t {
00081 Range *range;
00082 struct ranges_t *next;
00083 };
00084 typedef ranges_t Ranges;
00085 typedef Ranges Ranges;
00086
00087 void delete_ranges(Ranges *t);
00088
00089 typedef State State;
00090 typedef Arc Transition;
00091 typedef ArcsIter TransitionIterator;
00092
00093 #include "key-layer.h"
00094 #include "transducer-layer.h"
00095 #include "rule-layer.h"
00096 #include "symbol-layer.h"
00097 #include "range-functions.h"
00098 #include "core-extension-layer.h"
00099
00100 void print_properties( TransducerHandle t, ostream &os );
00101 void print_key_table(KeyTable *T);
00102 }
00103
00104 #endif
00105
00106
00107 #ifndef SKIP_HWFST_DOCUMENTATION
00108
00109 #include "ofst/fst/lib/fst.h"
00110
00111 namespace fst {
00112
00113 template <class F> class ArcIterator;
00114 template <class A> class Fst;
00115 typedef Fst<StdArc> StdFst;
00116 }
00117
00118 namespace HWFST {
00119
00120 typedef HFST::Range Range;
00121 typedef HFST::Ranges Ranges;
00122
00123 typedef State State;
00124 typedef fst::StdArc Transition;
00125 typedef fst::ArcIterator<fst::StdFst> TransitionIterator;
00126
00127 #include "key-layer.h"
00128 #include "transducer-layer.h"
00129 #include "rule-layer.h"
00130 #include "symbol-layer.h"
00131 #include "range-functions.h"
00132 #include "core-extension-layer.h"
00133
00134 void print_properties( TransducerHandle t, ostream &os );
00135 void print_key_table(KeyTable *T);
00136 void set_ofst_symbol_table( TransducerHandle t, KeyTable *T, bool input=true );
00137 KeyTable *to_hwfst_compatible_format(TransducerHandle t);
00138 bool has_ofst_input_symbol_table(TransducerHandle t);
00139 }
00140
00141 #endif
00142
00143
00144 #endif
00145