18 #ifndef FST_SCRIPT_ARCITERATOR_CLASS_H_ 19 #define FST_SCRIPT_ARCITERATOR_CLASS_H_ 46 virtual bool Done()
const = 0;
47 virtual uint8_t
Flags()
const = 0;
48 virtual void Next() = 0;
50 virtual void Reset() = 0;
51 virtual void Seek(
size_t a) = 0;
52 virtual void SetFlags(uint8_t flags, uint8_t mask) = 0;
64 bool Done() const final {
return aiter_.Done(); }
66 uint8_t
Flags() const final {
return aiter_.Flags(); }
68 void Next() final { aiter_.Next(); }
70 size_t Position() const final {
return aiter_.Position(); }
72 void Reset() final { aiter_.Reset(); }
74 void Seek(
size_t a)
final { aiter_.Seek(a); }
76 void SetFlags(uint8_t flags, uint8_t mask)
final {
77 aiter_.SetFlags(flags, mask);
93 std::tuple<const FstClass &, int64_t, ArcIteratorClass *>;
104 bool Done()
const {
return impl_->Done(); }
106 uint8_t
Flags()
const {
return impl_->Flags(); }
110 size_t Position()
const {
return impl_->Position(); }
114 void Seek(
size_t a) { impl_->Seek(a); }
116 void SetFlags(uint8_t flags, uint8_t mask) { impl_->SetFlags(flags, mask); }
124 std::unique_ptr<ArcIteratorImplBase> impl_;
129 const Fst<Arc> &
fst = *std::get<0>(*args).GetFst<Arc>();
130 std::get<2>(*args)->impl_ =
131 std::make_unique<ArcIteratorClassImpl<Arc>>(fst, std::get<1>(*args));
139 virtual void SetValue(
const ArcClass &) = 0;
151 bool Done() const final {
return aiter_.Done(); }
153 uint8_t
Flags() const final {
return aiter_.Flags(); }
155 void Next() final { aiter_.Next(); }
157 size_t Position() const final {
return aiter_.Position(); }
159 void Reset() final { aiter_.Reset(); }
161 void Seek(
size_t a)
final { aiter_.Seek(a); }
164 aiter_.SetFlags(flags, mask);
176 void SetValue(
const Arc &arc) { aiter_.
SetValue(arc); }
184 std::tuple<MutableFstClass *, int64_t, MutableArcIteratorClass *>;
195 bool Done()
const {
return impl_->Done(); }
197 uint8_t
Flags()
const {
return impl_->Flags(); }
201 size_t Position()
const {
return impl_->Position(); }
205 void Seek(
size_t a) { impl_->Seek(a); }
207 void SetFlags(uint8_t flags, uint8_t mask) { impl_->SetFlags(flags, mask); }
218 std::unique_ptr<MutableArcIteratorImplBase> impl_;
224 std::get<2>(*args)->impl_ =
225 std::make_unique<MutableArcIteratorClassImpl<Arc>>(fst,
232 #endif // FST_SCRIPT_ARCITERATOR_CLASS_H_
void SetFlags(uint8_t flags, uint8_t mask) final
virtual uint8_t Flags() const =0
uint8_t Flags() const final
void SetValue(const ArcClass &ac)
void SetFlags(uint8_t flags, uint8_t mask)
MutableArcIteratorClass(MutableFst< Arc > *fst, int64_t s)
size_t Position() const final
std::tuple< const FstClass &, int64_t, ArcIteratorClass * > InitArcIteratorClassArgs
size_t Position() const final
virtual ~ArcIteratorImplBase()=default
std::tuple< MutableFstClass *, int64_t, MutableArcIteratorClass * > InitMutableArcIteratorClassArgs
virtual bool Done() const =0
ArcIteratorClass(const Fst< Arc > &fst, int64_t s)
void Seek(size_t a) final
uint8_t Flags() const final
void SetFlags(uint8_t flags, uint8_t mask)
void SetValue(const ArcClass &ac) final
virtual size_t Position() const =0
virtual ArcClass Value() const =0
void InitArcIteratorClass(InitArcIteratorClassArgs *args)
virtual void SetFlags(uint8_t flags, uint8_t mask)=0
void Seek(size_t a) final
void SetFlags(uint8_t flags, uint8_t mask) final
MutableArcIteratorClassImpl(MutableFst< Arc > *fst, int64_t s)
ArcClass Value() const final
virtual void Seek(size_t a)=0
ArcIteratorClassImpl(const Fst< Arc > &fst, int64_t s)
ArcClass Value() const final
void InitMutableArcIteratorClass(InitMutableArcIteratorClassArgs *args)