[DEV] {remove etk regexp dependency} big rework in progress to simplify code and use real std::regex templates
This commit is contained in:
parent
b890f931ca
commit
febbaffdf4
@ -17,101 +17,33 @@
|
|||||||
#undef __class__
|
#undef __class__
|
||||||
#define __class__ "Buffer"
|
#define __class__ "Buffer"
|
||||||
|
|
||||||
appl::Buffer::Iterator& appl::Buffer::Iterator::operator++ () {
|
|
||||||
m_value = u32char::Null;
|
|
||||||
if (m_current < 0) {
|
|
||||||
m_current = 0;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
if (m_data != nullptr) {
|
|
||||||
if (m_current < m_data->m_data.size() ) {
|
|
||||||
int8_t nbChar = utf8::theoricLen(m_data->m_data[m_current]);
|
|
||||||
if (nbChar != 0) {
|
|
||||||
m_current+=nbChar;
|
|
||||||
} else {
|
|
||||||
m_current++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (m_current >= m_data->m_data.size()) {
|
|
||||||
m_current = m_data->m_data.size();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
appl::Buffer::Iterator& appl::Buffer::Iterator::operator-- () {
|
|
||||||
m_value = u32char::Null;
|
|
||||||
if (m_data != nullptr) {
|
|
||||||
if (m_current > 0) {
|
|
||||||
int32_t iii = -1;
|
|
||||||
while( utf8::theoricFirst(m_data->m_data[m_current+iii]) == false
|
|
||||||
&& iii >= -6
|
|
||||||
&& m_current-iii>0) {
|
|
||||||
--iii;
|
|
||||||
};
|
|
||||||
m_current += iii;
|
|
||||||
} else {
|
|
||||||
m_current = -1;
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
} else {
|
|
||||||
m_current = -1;
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
char32_t appl::Buffer::Iterator::operator* () {
|
|
||||||
if (m_value != u32char::Null) {
|
|
||||||
return m_value;
|
|
||||||
}
|
|
||||||
if (m_data == nullptr) {
|
|
||||||
APPL_ERROR("request an element that iterator not link");
|
|
||||||
return m_value;
|
|
||||||
}
|
|
||||||
if ( m_current < 0
|
|
||||||
|| m_current >= m_data->m_data.size()) {
|
|
||||||
APPL_ERROR("request an element out of bounding !!! 0 <= " << m_current << " < " << m_data->m_data.size());
|
|
||||||
return m_value;
|
|
||||||
}
|
|
||||||
char tmpVal[5];
|
|
||||||
memset(tmpVal, 0, sizeof(tmpVal));
|
|
||||||
tmpVal[0] = m_data->m_data[m_current];
|
|
||||||
int8_t nbChar = utf8::theoricLen(tmpVal[0]);
|
|
||||||
for (int32_t iii=1; iii<nbChar && m_current+iii<m_data->m_data.size(); ++iii) {
|
|
||||||
tmpVal[iii] = m_data->m_data[m_current+iii];
|
|
||||||
}
|
|
||||||
// transform ...
|
|
||||||
m_value = utf8::convertChar32(tmpVal);
|
|
||||||
return m_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
appl::Buffer::Iterator appl::Buffer::position(int64_t _pos) {
|
appl::Buffer::Iterator appl::Buffer::position(int64_t _pos) {
|
||||||
return appl::Buffer::Iterator(this, _pos);
|
return m_data.begin() + _pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
appl::Buffer::Iterator appl::Buffer::begin() {
|
appl::Buffer::Iterator appl::Buffer::begin() {
|
||||||
return position(0);
|
return m_data.begin();
|
||||||
}
|
}
|
||||||
|
|
||||||
appl::Buffer::Iterator appl::Buffer::end() {
|
appl::Buffer::Iterator appl::Buffer::end() {
|
||||||
// TODO : chek the validity of the char ...
|
// TODO : chek the validity of the char ...
|
||||||
return position( m_data.size() );
|
return m_data.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
appl::Buffer::Iterator appl::Buffer::cursor() {
|
appl::Buffer::Iterator appl::Buffer::cursor() {
|
||||||
if (m_cursorPos<= 0) {
|
if (m_cursorPos<= 0) {
|
||||||
return begin();
|
return m_data.begin();
|
||||||
}
|
}
|
||||||
return position( m_cursorPos );
|
return m_data.begin() + m_cursorPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
appl::Buffer::Iterator appl::Buffer::selectStart() {
|
appl::Buffer::Iterator appl::Buffer::selectStart() {
|
||||||
return position( getStartSelectionPos() );
|
return m_data.begin() + getStartSelectionPos();
|
||||||
}
|
}
|
||||||
|
|
||||||
appl::Buffer::Iterator appl::Buffer::selectStop() {
|
appl::Buffer::Iterator appl::Buffer::selectStop() {
|
||||||
return position( getStopSelectionPos() );
|
return m_data.begin() + getStopSelectionPos();
|
||||||
}
|
}
|
||||||
|
|
||||||
appl::Buffer::Buffer() :
|
appl::Buffer::Buffer() :
|
||||||
@ -152,7 +84,9 @@ bool appl::Buffer::loadFile(const std::string& _name) {
|
|||||||
m_cursorPos = 0;
|
m_cursorPos = 0;
|
||||||
setHighlightType("");
|
setHighlightType("");
|
||||||
m_nbLines = 0;
|
m_nbLines = 0;
|
||||||
if (m_data.dumpFrom(m_fileName) == true ) {
|
etk::FSNode filee(m_fileName);
|
||||||
|
if (filee.exist() == true) {
|
||||||
|
m_data = file.fileReadAllU32String();
|
||||||
countNumberofLine();
|
countNumberofLine();
|
||||||
tryFindHighlightType();
|
tryFindHighlightType();
|
||||||
m_isModify = false;
|
m_isModify = false;
|
||||||
@ -175,12 +109,11 @@ void appl::Buffer::setFileName(const std::string& _name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool appl::Buffer::storeFile() {
|
bool appl::Buffer::storeFile() {
|
||||||
if (m_data.dumpIn(m_fileName) == true) {
|
etk::FSNode filee(m_fileName);
|
||||||
APPL_INFO("saving file : " << m_fileName);
|
filee.fileWriteAll(m_data);
|
||||||
setModification(false);
|
APPL_INFO("saving file : " << m_fileName);
|
||||||
return true;
|
setModification(false);
|
||||||
}
|
return true;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void appl::Buffer::setModification(bool _status) {
|
void appl::Buffer::setModification(bool _status) {
|
||||||
@ -198,10 +131,8 @@ void appl::Buffer::setModification(bool _status) {
|
|||||||
// TODO : Naming error
|
// TODO : Naming error
|
||||||
void appl::Buffer::countNumberofLine() {
|
void appl::Buffer::countNumberofLine() {
|
||||||
m_nbLines = 1;
|
m_nbLines = 1;
|
||||||
for (Iterator it = begin();
|
for (auto &it : m_data) {
|
||||||
(bool)it == true;
|
if (it == u32char::Return) {
|
||||||
++it) {
|
|
||||||
if (*it == u32char::Return) {
|
|
||||||
++m_nbLines;
|
++m_nbLines;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -230,21 +161,21 @@ appl::Buffer::Iterator appl::Buffer::getEndLine(const appl::Buffer::Iterator& _p
|
|||||||
bool appl::Buffer::search(const appl::Buffer::Iterator& _pos, const char32_t& _search, appl::Buffer::Iterator& _result) {
|
bool appl::Buffer::search(const appl::Buffer::Iterator& _pos, const char32_t& _search, appl::Buffer::Iterator& _result) {
|
||||||
// move in the string
|
// move in the string
|
||||||
for (Iterator it = _pos;
|
for (Iterator it = _pos;
|
||||||
(bool)it == true;
|
it != m_data.end();
|
||||||
++it) {
|
++it) {
|
||||||
if (*it == _search) {
|
if (*it == _search) {
|
||||||
_result = it;
|
_result = it;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_result = end();
|
_result = m_data.end();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool appl::Buffer::searchBack(const appl::Buffer::Iterator& _pos, const char32_t& _search, appl::Buffer::Iterator& _result) {
|
bool appl::Buffer::searchBack(const appl::Buffer::Iterator& _pos, const char32_t& _search, appl::Buffer::Iterator& _result) {
|
||||||
// move in the string
|
// move in the string
|
||||||
for (Iterator it = _pos - 1;
|
for (Iterator it = _pos - 1;
|
||||||
(bool)it == true;
|
it != m_data.begin();
|
||||||
--it) {
|
--it) {
|
||||||
//APPL_DEBUG("compare : " << *it << " ?= " << _search);
|
//APPL_DEBUG("compare : " << *it << " ?= " << _search);
|
||||||
if (*it == _search) {
|
if (*it == _search) {
|
||||||
@ -267,7 +198,7 @@ bool appl::Buffer::search(const appl::Buffer::Iterator& _pos,
|
|||||||
if (_caseSensitive == true) {
|
if (_caseSensitive == true) {
|
||||||
// move in the string
|
// move in the string
|
||||||
for (Iterator it = _pos;
|
for (Iterator it = _pos;
|
||||||
(bool)it == true;
|
it == m_data.end();
|
||||||
++it) {
|
++it) {
|
||||||
if (*it == _search[0]) {
|
if (*it == _search[0]) {
|
||||||
// find the first char ==> check next...
|
// find the first char ==> check next...
|
||||||
@ -279,7 +210,7 @@ bool appl::Buffer::search(const appl::Buffer::Iterator& _pos,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
++tmp;
|
++tmp;
|
||||||
if ((bool)tmp == false) {
|
if (tmp == m_data.end()) {
|
||||||
if (iii != _search.size()-1) {
|
if (iii != _search.size()-1) {
|
||||||
find = false;
|
find = false;
|
||||||
}
|
}
|
||||||
@ -296,7 +227,7 @@ bool appl::Buffer::search(const appl::Buffer::Iterator& _pos,
|
|||||||
char32_t firstElement = tolower(_search[0]);
|
char32_t firstElement = tolower(_search[0]);
|
||||||
// move in the string
|
// move in the string
|
||||||
for (Iterator it = _pos;
|
for (Iterator it = _pos;
|
||||||
(bool)it == true;
|
it == m_data.end();
|
||||||
++it) {
|
++it) {
|
||||||
if ((char32_t)tolower(*it) == firstElement) {
|
if ((char32_t)tolower(*it) == firstElement) {
|
||||||
// find the first char ==> check next...
|
// find the first char ==> check next...
|
||||||
@ -308,7 +239,7 @@ bool appl::Buffer::search(const appl::Buffer::Iterator& _pos,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
++tmp;
|
++tmp;
|
||||||
if ((bool)tmp == false) {
|
if (tmp != m_data.end()) {
|
||||||
if (iii != _search.size()-1) {
|
if (iii != _search.size()-1) {
|
||||||
find = false;
|
find = false;
|
||||||
}
|
}
|
||||||
@ -337,7 +268,7 @@ bool appl::Buffer::searchBack(const appl::Buffer::Iterator& _pos,
|
|||||||
if (_caseSensitive == true) {
|
if (_caseSensitive == true) {
|
||||||
// move in the string
|
// move in the string
|
||||||
for (Iterator it = _pos - 1;
|
for (Iterator it = _pos - 1;
|
||||||
(bool)it == true;
|
it != m_data.begin();
|
||||||
--it) {
|
--it) {
|
||||||
//APPL_DEBUG("compare : " << *it << " ?= " << _search);
|
//APPL_DEBUG("compare : " << *it << " ?= " << _search);
|
||||||
if (*it == lastElement) {
|
if (*it == lastElement) {
|
||||||
@ -350,7 +281,7 @@ bool appl::Buffer::searchBack(const appl::Buffer::Iterator& _pos,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
--_result;
|
--_result;
|
||||||
if ((bool)_result == false) {
|
if (_result == m_data.begin()) {
|
||||||
if (iii != 0) {
|
if (iii != 0) {
|
||||||
find = false;
|
find = false;
|
||||||
}
|
}
|
||||||
@ -367,7 +298,7 @@ bool appl::Buffer::searchBack(const appl::Buffer::Iterator& _pos,
|
|||||||
lastElement = tolower(lastElement);
|
lastElement = tolower(lastElement);
|
||||||
// move in the string
|
// move in the string
|
||||||
for (Iterator it = _pos - 1;
|
for (Iterator it = _pos - 1;
|
||||||
(bool)it == true;
|
it != m_data.begin();
|
||||||
--it) {
|
--it) {
|
||||||
//APPL_DEBUG("compare : " << *it << " ?= " << _search);
|
//APPL_DEBUG("compare : " << *it << " ?= " << _search);
|
||||||
if ((char32_t)tolower(*it) == lastElement) {
|
if ((char32_t)tolower(*it) == lastElement) {
|
||||||
@ -380,7 +311,7 @@ bool appl::Buffer::searchBack(const appl::Buffer::Iterator& _pos,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
--_result;
|
--_result;
|
||||||
if ((bool)_result == false) {
|
if (_result == m_data.begin()) {
|
||||||
if (iii != 0) {
|
if (iii != 0) {
|
||||||
find = false;
|
find = false;
|
||||||
}
|
}
|
||||||
|
@ -29,265 +29,7 @@ namespace appl {
|
|||||||
};
|
};
|
||||||
class Buffer : public ewol::Object {
|
class Buffer : public ewol::Object {
|
||||||
public:
|
public:
|
||||||
class Iterator {
|
using Iterator = std::u32string::iterator;
|
||||||
// Private data :
|
|
||||||
private:
|
|
||||||
int64_t m_current; //!< curent Id in the Buffer
|
|
||||||
appl::Buffer* m_data; //!< Pointer on the curent Buffer
|
|
||||||
char32_t m_value; //!< store vlue to prevent multiple calcule of getting the data
|
|
||||||
public:
|
|
||||||
/**
|
|
||||||
* @brief Basic itarator constructor with no link.
|
|
||||||
*/
|
|
||||||
Iterator():
|
|
||||||
m_current(0),
|
|
||||||
m_data(nullptr),
|
|
||||||
m_value(u32char::Null) {
|
|
||||||
// nothing to do ...
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief Recopy constructor.
|
|
||||||
* @param[in] _obj The Iterator that might be copy
|
|
||||||
*/
|
|
||||||
Iterator(const Iterator & _obj):
|
|
||||||
m_current(_obj.m_current),
|
|
||||||
m_data(_obj.m_data),
|
|
||||||
m_value(u32char::Null) {
|
|
||||||
// nothing to do ...
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief Asignation operator.
|
|
||||||
* @param[in] _otherIterator The Iterator that might be copy
|
|
||||||
* @return reference on the curent Iterator
|
|
||||||
*/
|
|
||||||
Iterator& operator=(const Iterator & _obj) {
|
|
||||||
m_current = _obj.m_current;
|
|
||||||
m_data = _obj.m_data;
|
|
||||||
m_value = u32char::Null;
|
|
||||||
return *this;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief Basic destructor
|
|
||||||
*/
|
|
||||||
virtual ~Iterator() {
|
|
||||||
m_current = 0;
|
|
||||||
m_data = nullptr;
|
|
||||||
m_value = u32char::Null;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief basic boolean cast
|
|
||||||
* @return true if the element is present in buffer
|
|
||||||
*/
|
|
||||||
operator bool () const {
|
|
||||||
if (m_data == nullptr) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (m_current >= m_data->m_data.size()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (m_current < 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief basic boolean cast
|
|
||||||
* @return true if the element is present in buffer
|
|
||||||
*/
|
|
||||||
operator int64_t () const {
|
|
||||||
if (m_data == nullptr) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (m_current < 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (m_current > m_data->m_data.size()) {
|
|
||||||
return m_data->m_data.size();
|
|
||||||
}
|
|
||||||
return m_current;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief Incremental operator
|
|
||||||
* @return Reference on the current iterator incremented
|
|
||||||
*/
|
|
||||||
Iterator& operator++ ();
|
|
||||||
/**
|
|
||||||
* @brief Decremental operator
|
|
||||||
* @return Reference on the current iterator decremented
|
|
||||||
*/
|
|
||||||
Iterator& operator-- ();
|
|
||||||
/**
|
|
||||||
* @brief Incremental operator
|
|
||||||
* @return Reference on a new iterator and increment the other one
|
|
||||||
*/
|
|
||||||
Iterator operator++ (int32_t) {
|
|
||||||
Iterator it(*this);
|
|
||||||
++(*this);
|
|
||||||
return it;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief Decremental operator
|
|
||||||
* @return Reference on a new iterator and decrement the other one
|
|
||||||
*/
|
|
||||||
Iterator operator-- (int32_t) {
|
|
||||||
Iterator it(*this);
|
|
||||||
--(*this);
|
|
||||||
return it;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief egality iterator
|
|
||||||
* @return true if the iterator is identical pos
|
|
||||||
*/
|
|
||||||
bool operator== (const Iterator& _obj) const {
|
|
||||||
if ( m_current == _obj.m_current
|
|
||||||
&& m_data == _obj.m_data) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief egality iterator
|
|
||||||
* @return true if the iterator is identical pos
|
|
||||||
*/
|
|
||||||
bool operator!= (const Iterator& _obj) const {
|
|
||||||
if ( m_current != _obj.m_current
|
|
||||||
|| m_data != _obj.m_data) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief <= iterator
|
|
||||||
* @return true if the iterator is identical pos
|
|
||||||
*/
|
|
||||||
bool operator<= (const Iterator& _obj) const {
|
|
||||||
if (m_data != _obj.m_data) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (m_current <= _obj.m_current) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief >= iterator
|
|
||||||
* @return true if the iterator is identical pos
|
|
||||||
*/
|
|
||||||
bool operator>= (const Iterator& _obj) const {
|
|
||||||
if (m_data != _obj.m_data) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (m_current >= _obj.m_current) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief < iterator
|
|
||||||
* @return true if the iterator is identical pos
|
|
||||||
*/
|
|
||||||
bool operator< (const Iterator& _obj) const {
|
|
||||||
if (m_data != _obj.m_data) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (m_current < _obj.m_current) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief > iterator
|
|
||||||
* @return true if the iterator is identical pos
|
|
||||||
*/
|
|
||||||
bool operator> (const Iterator& _obj) const {
|
|
||||||
if (m_data != _obj.m_data) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (m_current > _obj.m_current) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief Get the value on the current element
|
|
||||||
* @return The request element value
|
|
||||||
*/
|
|
||||||
char32_t operator* ();
|
|
||||||
/**
|
|
||||||
* @brief Get the position in the buffer
|
|
||||||
* @return The requested position.
|
|
||||||
*/
|
|
||||||
int64_t getPos() const {
|
|
||||||
if (m_data == nullptr) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (m_current < 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (m_current >= m_data->m_data.size()) {
|
|
||||||
return m_data->m_data.size()-1;
|
|
||||||
}
|
|
||||||
return m_current;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief move the element position
|
|
||||||
* @return a new iterator.
|
|
||||||
*/
|
|
||||||
Iterator operator+ (const int64_t _val) const {
|
|
||||||
Iterator tmpp(*this);
|
|
||||||
for (int64_t iii=0; iii<_val; ++iii) {
|
|
||||||
++tmpp;
|
|
||||||
}
|
|
||||||
return tmpp;
|
|
||||||
};
|
|
||||||
Iterator operator+ (const int32_t _val) const {
|
|
||||||
Iterator tmpp(*this);
|
|
||||||
for (int64_t iii=0; iii<_val; ++iii) {
|
|
||||||
++tmpp;
|
|
||||||
}
|
|
||||||
return tmpp;
|
|
||||||
};
|
|
||||||
Iterator operator+ (const size_t _val) const {
|
|
||||||
Iterator tmpp(*this);
|
|
||||||
for (int64_t iii=0; iii<(int64_t)_val; ++iii) {
|
|
||||||
++tmpp;
|
|
||||||
}
|
|
||||||
return tmpp;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* @brief move the element position
|
|
||||||
* @return a new iterator.
|
|
||||||
*/
|
|
||||||
Iterator operator- (const int64_t _val) const {
|
|
||||||
Iterator tmpp(*this);
|
|
||||||
for (int64_t iii=0; iii<_val; ++iii) {
|
|
||||||
--tmpp;
|
|
||||||
}
|
|
||||||
return tmpp;
|
|
||||||
};
|
|
||||||
Iterator operator- (const int32_t _val) const {
|
|
||||||
Iterator tmpp(*this);
|
|
||||||
for (int64_t iii=0; iii<_val; ++iii) {
|
|
||||||
--tmpp;
|
|
||||||
}
|
|
||||||
return tmpp;
|
|
||||||
};
|
|
||||||
Iterator operator- (const size_t _val) const {
|
|
||||||
Iterator tmpp(*this);
|
|
||||||
for (int64_t iii=0; iii<(int64_t)_val; ++iii) {
|
|
||||||
--tmpp;
|
|
||||||
}
|
|
||||||
return tmpp;
|
|
||||||
};
|
|
||||||
private:
|
|
||||||
Iterator(Buffer* _obj, int64_t _pos) :
|
|
||||||
m_current(_pos),
|
|
||||||
m_data(_obj),
|
|
||||||
m_value(u32char::Null) {
|
|
||||||
// nothing to do ...
|
|
||||||
};
|
|
||||||
friend class Buffer;
|
|
||||||
};
|
|
||||||
public:
|
public:
|
||||||
ewol::object::Signal<void> signalIsModify;
|
ewol::object::Signal<void> signalIsModify;
|
||||||
ewol::object::Signal<void> signalIsSave;
|
ewol::object::Signal<void> signalIsSave;
|
||||||
@ -348,9 +90,9 @@ namespace appl {
|
|||||||
*/
|
*/
|
||||||
void setModification(bool _status);
|
void setModification(bool _status);
|
||||||
protected:
|
protected:
|
||||||
etk::Buffer m_data; //!< copy of the file buffer
|
std::u32string m_data; //!< copy of the file buffer
|
||||||
public:
|
public:
|
||||||
etk::Buffer& getData() {
|
std::u32string& getData() {
|
||||||
return m_data;
|
return m_data;
|
||||||
};
|
};
|
||||||
protected:
|
protected:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user