-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathProcessEscSeq.cpp
More file actions
109 lines (93 loc) · 2.01 KB
/
Copy pathProcessEscSeq.cpp
File metadata and controls
109 lines (93 loc) · 2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
// vt100 Escape Seqence /////////////////////////////
#include <ctype.h>
#include <stdlib.h>
#include "ProcessEscSeq.h"
ProcessEscSeq::ProcessEscSeq()
{
m_stEscSeq = STESC_NULL;
m_stCodeProcess = CPST_WAIT;
m_numParam = 0;
m_pstrNumParam = m_nParamStr[0];
}
int ProcessEscSeq::IsEscOn()
{
if (m_stEscSeq == STESC_ON)
return 1;
return 0;
}
int ProcessEscSeq::EscOn()
{
if (m_stEscSeq == STESC_ON)
return -1;
m_stEscSeq = STESC_ON;
m_stCodeProcess = CPST_WAIT;
return 0;
}
int ProcessEscSeq::EscOff()
{
if (m_stEscSeq == STESC_NULL)
return -1;
m_stEscSeq = STESC_NULL;
m_stCodeProcess = CPST_WAIT;
return 0;
}
int ProcessEscSeq::ProcessEscCode(char ch)
{
switch (m_stCodeProcess) {
case CPST_WAIT:
case CPST_START : // 1
m_numParam = 0;
m_pstrNumParam = m_nParamStr[0];
*m_pstrNumParam = 0;
if (isdigit((int)ch)) {
m_escFunCode = ch;
this->EscOff();
} else if (isalpha((int) ch)) {
m_escFunCode = ch;
this->EscOff();
} else if (ch == '[') {
m_numParam = 0;
m_pstrNumParam = m_nParamStr[0];
*m_pstrNumParam = 0;
m_stCodeProcess = CPST_PMSTART;
} else {
m_escFunCode = 0;
this->EscOff();
return 1;
}
break;
case CPST_PMSTART :
if (isdigit((int)ch)) {
*m_pstrNumParam++ = ch;
*m_pstrNumParam = 0;
} else if (isalpha((int) ch)) {
m_escFunCode = ch;
this->EscOff();
} else if (ch == ';') {
m_nParam[m_numParam] = atoi((const char *)m_nParamStr[m_numParam]);
m_numParam++;
m_pstrNumParam = m_nParamStr[m_numParam];
*m_pstrNumParam = 0;
} else {
m_escFunCode = 0;
this->EscOff();
return 1;
}
break;
default:
m_escFunCode = 0;
this->EscOff();
return 1;
}
return 0;
}
int ProcessEscSeq::GetNumParamLength()
{
return m_numParam;
}
int ProcessEscSeq::GetNumParam(int pnum)
{
if (pnum >= m_numParam)
return -1;
return m_nParam[pnum];
}