Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
8584 leency 1
struct TEXTBUF
2
{
3
	dword p;
4
	unsigned len;
5
	unsigned max;
6
	void drop();
7
	void extend();
8
	void set();
9
	void insert_ch();
10
	void insert_str();
11
	void del();
12
} textbuf;
13
 
14
void TEXTBUF::drop()
15
{
16
	p = free(p);
17
	len = max = 0;
18
}
19
 
20
void TEXTBUF::extend(unsigned _size)
21
{
22
	max = _size;
23
	p = realloc(p, max);
24
}
25
 
26
void TEXTBUF::set(dword _p, unsigned _size)
27
{
28
	len = _size;
29
	extend(len + 4096);
30
	strncpy(p, _p, len);
31
}
32
 
33
void TEXTBUF::insert_ch(unsigned _pos, char _ch)
34
{
35
	char str[1];
36
	str[0] = _ch;
37
	insert_str(_pos, #str, 1);
38
}
39
 
40
void TEXTBUF::insert_str(unsigned _pos, dword _string, unsigned _sl)
41
{
42
	dword i;
43
	if (len + _sl >= max) {
44
		extend(len + _sl + 4096);
45
	}
46
	len += _sl;
47
	for (i=p+len; i>=_pos+_sl; i--) {
48
		ESBYTE[i] = ESBYTE[i-_sl];
49
	}
50
	memmov(_pos, _string, _sl);
51
}
52
 
53
void TEXTBUF::del(unsigned _start, _end)
54
{
55
	if (_start > _end) _end >< _start;
56
	strcpy(_start, _end);
57
	len -= _end - _start;
58
}