LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
PrefixIterator.h
Go to the documentation of this file.
1// Copyright 2002-2013 CEA LIST
2// SPDX-FileCopyrightText: 2022 CEA LIST <gael.de-chalendar@cea.fr>
3//
4// SPDX-License-Identifier: MIT
5
6#ifndef FSA_PREFIX_ITERATOR_HPP
7#define FSA_PREFIX_ITERATOR_HPP
8
9#include <string>
10
12#include "common/LimaCommon.h"
13
14namespace Lima {
15namespace Common {
16namespace FsaAccess {
17
18class ForwardPrefixIterator;
19class ReversePrefixIterator;
20
22 friend LIMA_FSAACCESS_EXPORT std::ostream& operator<<(std::ostream& os, const PrefixIterator& t);
23public:
26 PrefixIterator(const LimaString & word,
27 const uint64_t offset);
28 PrefixIterator( const LimaChar* word_content,
29 const int32_t word_length, const int32_t wordPos);
30 virtual ~PrefixIterator() {}
31
32 void print(std::ostream& os) const;
33
34 virtual PrefixIterator* clone( const PrefixIterator* const orig ) const = 0;
35 virtual char32_t getNextLetter(int32_t& wordOffset) const = 0;
36 virtual void next(const int32_t wordOffset) = 0;
37 virtual bool hasNextLetter() const = 0;
38 int32_t getWordPos() const;
39 bool operator==(const PrefixIterator& it) const;
40 bool operator!=(const PrefixIterator& it) const;
41 virtual int32_t getExternalWordPos() const = 0;
42 virtual void terminate() = 0;
43 virtual const LimaString getTotalPrefix() const = 0;
44 virtual const LimaString getPastPrefix() const = 0;
45 virtual const LimaString getCurrentPrefix() const = 0;
46 virtual const Lima::LimaChar* getCurrentContent() const = 0;
47
48protected:
49 PrefixIterator& operator=(const PrefixIterator&) {return *this;}
52 int32_t m_wordPos;
53};
54
56public:
57 int32_t getExternalWordPos() const override;
59 const uint64_t offset=0);
60 ForwardPrefixIterator( const LimaChar* word_content, const int32_t word_length, const int32_t wordPos);
61 PrefixIterator* clone( const PrefixIterator* const orig ) const override;
62 char32_t getNextLetter(int32_t& wordOffset) const override;
63 bool hasNextLetter() const override;
64 void next(const int32_t wordOffset) override;
65 void terminate() override;
66 const LimaString getTotalPrefix() const override;
67 const LimaString getPastPrefix() const override;
68 const LimaString getCurrentPrefix() const override;
69 const Lima::LimaChar* getCurrentContent() const override;
70 int32_t findEdge( const char32_t searchChar, int32_t wordOffset, int32_t highCharTextPos ) const;
71private:
72 ForwardPrefixIterator& operator=(const ForwardPrefixIterator&) {return *this;}
73};
74
76public:
77 int32_t getExternalWordPos() const override;
79 const uint64_t offset=0);
80 ReversePrefixIterator( const LimaChar* word_content, const int32_t word_length, const int32_t wordPos);
81 PrefixIterator* clone( const PrefixIterator* const orig ) const override;
82 char32_t getNextLetter(int32_t& wordOffset) const override;
83 bool hasNextLetter() const override;
84 void next(const int32_t wordOffset) override;
85 void terminate() override;
86 const LimaString getTotalPrefix() const override;
87 const LimaString getPastPrefix() const override;
88 const LimaString getCurrentPrefix() const override;
89 const Lima::LimaChar* getCurrentContent() const override;
90private:
91 ReversePrefixIterator& operator=(const ReversePrefixIterator&) {return *this;}
92
93};
94
95inline int32_t PrefixIterator::getWordPos() const {
96 return m_wordPos;
97}
98
99} // namespace FsaAccess
100} // namespace Common
101} // namespace Lima
102
103#endif //FSA_PREFIX_ITERATOR_HPP
QDebug & operator<<(QDebug &qd, const std::string &str)
Definition QsLog.cpp:39
#define LIMA_FSAACCESS_EXPORT
Definition LimaCommon.h:130
virtual int32_t getExternalWordPos() const =0
virtual void next(const int32_t wordOffset)=0
virtual const Lima::LimaChar * getCurrentContent() const =0
virtual bool hasNextLetter() const =0
virtual PrefixIterator * clone(const PrefixIterator *const orig) const =0
virtual const LimaString getTotalPrefix() const =0
const Lima::LimaChar *const m_word_content
PrefixIterator & operator=(const PrefixIterator &)
virtual char32_t getNextLetter(int32_t &wordOffset) const =0
virtual const LimaString getPastPrefix() const =0
virtual const LimaString getCurrentPrefix() const =0
NAUTITIA.
QChar LimaChar
Definition LimaString.h:30
QString LimaString
Definition LimaString.h:33