18 #ifndef FST_SCRIPT_ARCITERATOR_CLASS_H_ 19 #define FST_SCRIPT_ARCITERATOR_CLASS_H_ 41 virtual bool Done()
const = 0;
42 virtual uint8_t
Flags()
const = 0;
43 virtual void Next() = 0;
45 virtual void Reset() = 0;
46 virtual void Seek(
size_t a) = 0;
47 virtual void SetFlags(uint8_t flags, uint8_t mask) = 0;
59 bool Done() const final {
return aiter_.Done(); }
61 uint8_t
Flags() const final {
return aiter_.Flags(); }
63 void Next() final { aiter_.Next(); }
65 size_t Position() const final {
return aiter_.Position(); }
67 void Reset() final { aiter_.Reset(); }
69 void Seek(
size_t a)
final { aiter_.Seek(a); }
71 void SetFlags(uint8_t flags, uint8_t mask)
final {
72 aiter_.SetFlags(flags, mask);
88 std::tuple<const FstClass &, int64_t, ArcIteratorClass *>;
99 bool Done()
const {
return impl_->Done(); }
101 uint8_t
Flags()
const {
return impl_->Flags(); }
105 size_t Position()
const {
return impl_->Position(); }
109 void Seek(
size_t a) { impl_->Seek(a); }
111 void SetFlags(uint8_t flags, uint8_t mask) { impl_->SetFlags(flags, mask); }
119 std::unique_ptr<ArcIteratorImplBase> impl_;
124 const Fst<Arc> &
fst = *std::get<0>(*args).GetFst<Arc>();
125 std::get<2>(*args)->impl_ =
126 std::make_unique<ArcIteratorClassImpl<Arc>>(fst, std::get<1>(*args));
134 virtual void SetValue(
const ArcClass &) = 0;
146 bool Done() const final {
return aiter_.Done(); }
148 uint8_t
Flags() const final {
return aiter_.Flags(); }
150 void Next() final { aiter_.Next(); }
152 size_t Position() const final {
return aiter_.Position(); }
154 void Reset() final { aiter_.Reset(); }
156 void Seek(
size_t a)
final { aiter_.Seek(a); }
159 aiter_.SetFlags(flags, mask);
171 void SetValue(
const Arc &arc) { aiter_.SetValue(arc); }
179 std::tuple<MutableFstClass *, int64_t, MutableArcIteratorClass *>;
190 bool Done()
const {
return impl_->Done(); }
192 uint8_t
Flags()
const {
return impl_->Flags(); }
196 size_t Position()
const {
return impl_->Position(); }
200 void Seek(
size_t a) { impl_->Seek(a); }
202 void SetFlags(uint8_t flags, uint8_t mask) { impl_->SetFlags(flags, mask); }
213 std::unique_ptr<MutableArcIteratorImplBase> impl_;
219 std::get<2>(*args)->impl_ =
220 std::make_unique<MutableArcIteratorClassImpl<Arc>>(fst,
227 #endif // FST_SCRIPT_ARCITERATOR_CLASS_H_
void SetFlags(uint8_t flags, uint8_t mask) final
~MutableArcIteratorImplBase() override
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)
~ArcIteratorClassImpl() override
size_t Position() const final
std::tuple< const FstClass &, int64_t, ArcIteratorClass * > InitArcIteratorClassArgs
size_t Position() const final
~MutableArcIteratorClassImpl() override
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)
virtual ~ArcIteratorImplBase()
ArcClass Value() const final
void InitMutableArcIteratorClass(InitMutableArcIteratorClassArgs *args)