mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
69 lines
1.3 KiB
C++
69 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "Module/CharBuffer.h"
|
|
|
|
class EditLine : public CharBuffer {
|
|
public:
|
|
EditLine(size_t size) : CharBuffer(size){};
|
|
|
|
char &operator[](size_t i) { return _pool[i]; }
|
|
|
|
char operator[](size_t i) const { return _pool[i]; }
|
|
|
|
EditLine &operator=(const EditLine &src) {
|
|
delete[] _pool;
|
|
_pool = new char[src._capacity];
|
|
memcpy(_pool, src._pool, src._capacity);
|
|
_read = src._read;
|
|
_write = src._write;
|
|
return *this;
|
|
}
|
|
|
|
void del() {
|
|
size_t i;
|
|
for (i = _write; i < _capacity; ++i)
|
|
_pool[i] = _pool[i + 1];
|
|
_pool[i] = '\x00';
|
|
}
|
|
|
|
bool backspace() {
|
|
bool res = false;
|
|
if (prev()) {
|
|
del();
|
|
res = true;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
bool next() {
|
|
bool res = false;
|
|
if (_write < _capacity - 1) {
|
|
_write++;
|
|
res = true;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
bool prev() {
|
|
bool res = false;
|
|
if (_write > 0) {
|
|
_write--;
|
|
res = true;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
size_t home() {
|
|
size_t res = _write;
|
|
_write = 0;
|
|
return res;
|
|
}
|
|
|
|
size_t end() {
|
|
size_t n;
|
|
for (n = 0; n < _capacity - 1; ++n)
|
|
if (_pool[n] == '\x00') break;
|
|
return n;
|
|
}
|
|
};
|