@@ -12,24 +12,24 @@ void getIncludeFiles(Meta_Vector & wordVector, size_t index)
12
12
char headerStr[256 ] = {' \0 ' };
13
13
14
14
// #include <string.h> or #include <vector>
15
- if (index + 4 >= wordVector.size () || wordVector[index +4 ].line != curLine){
15
+ if (index + 5 >= wordVector.size () || wordVector[index +5 ].line != curLine){
16
16
printf (" not a full header include statement [%d, %d].\n " , (int )index , (int )wordVector.size ());
17
17
return ;
18
18
}
19
19
20
- if (wordVector[index +2 ].data [0 ] == ' \" ' ){
20
+ if (wordVector[index +3 ].data [0 ] == ' \" ' ){
21
21
headerType = TYPE_USER;
22
22
}
23
- else if (wordVector[index +2 ].data [0 ] == ' <' ){
23
+ else if (wordVector[index +3 ].data [0 ] == ' <' ){
24
24
headerType = TYPE_SYSTEM;
25
25
}
26
26
else {
27
- printf (" not a valid header include statement [%s].\n " , wordVector[index +2 ].data );
27
+ printf (" not a valid header include statement [%s].\n " , wordVector[index +3 ].data );
28
28
return ;
29
29
}
30
30
31
- // skip '#' and "include" and header type char '"' or '<'
32
- for (size_t i=index +3 ; i < wordVector.size (); i++)
31
+ // skip '#', "include", space and header type char '"' or '<'
32
+ for (size_t i=index +4 ; i < wordVector.size (); i++)
33
33
{
34
34
if (wordVector[i].line != wordVector[index ].line )
35
35
break ;
@@ -66,37 +66,38 @@ void getDefine(Meta_Vector & wordVector, size_t index)
66
66
char defineStr[256 ] = {' \0 ' };
67
67
68
68
// #define A a or just #define A
69
- if (index + 2 >= wordVector.size () || wordVector[index +2 ].line != curLine){
69
+ if (index + 3 >= wordVector.size () || wordVector[index +3 ].line != curLine){
70
70
printf (" not a full define statement [%d, %d].\n " , (int )index , (int )wordVector.size ());
71
71
return ;
72
72
}
73
73
74
- if (wordVector[index +3 ].line != curLine) {
75
- if (wordVector[index +2 ].type == TYPE_WORD){
76
- printf (" Line %d is a NULL constant define: %s\n " , curLine, wordVector[index +2 ].data );
74
+ if (wordVector[index +4 ].line != curLine) {
75
+ if (wordVector[index +3 ].type == TYPE_WORD){
76
+ printf (" Line %d is a NULL constant define: %s\n " , curLine, wordVector[index +3 ].data );
77
77
return ;
78
78
}
79
79
else
80
- printf (" not a valid header include statement [%s].\n " , wordVector[index +2 ].data );
80
+ printf (" not a valid define statement [%s].\n " , wordVector[index +2 ].data );
81
81
}
82
82
else {
83
- if (wordVector[index +2 ].data [0 ] == ' (' ){
83
+ if (wordVector[index +3 ].data [0 ] == ' (' ){
84
84
defineType = TYPE_FUNCTION;
85
85
}
86
- else if (wordVector[index +2 ].type == TYPE_WORD){
86
+ else if (wordVector[index +3 ].type == TYPE_WORD){
87
87
defineType = TYPE_CONSTANT;
88
88
}
89
89
else {
90
- printf (" not a valid header include statement [%s].\n " , wordVector[index +2 ].data );
90
+ printf (" not a valid define statement [%s].\n " , wordVector[index +3 ].data );
91
91
return ;
92
92
}
93
93
}
94
94
95
95
if (defineType == TYPE_CONSTANT){
96
+ int defineStrLen = 0 ;
97
+ bool addSpace = false ;
96
98
97
- int lastPos = -1 , defineStrLen = 0 ;
98
- // skip '#' and "define" and constant define
99
- for (size_t i=index +3 ; i < wordVector.size (); i++)
99
+ // skip '#', "define", space, constant define and space
100
+ for (size_t i=index +5 ; i < wordVector.size (); i++)
100
101
{
101
102
if (wordVector[i].line != wordVector[index ].line )
102
103
break ;
@@ -106,24 +107,25 @@ void getDefine(Meta_Vector & wordVector, size_t index)
106
107
break ;
107
108
}
108
109
109
- if (lastPos == -1 ){
110
- lastPos = wordVector[i].pos ;
110
+ if (wordVector[i].type == TYPE_SPACE){
111
+ if (addSpace == false ) {
112
+ addSpace = true ;
113
+ }
111
114
}
115
+ else {
116
+ if (addSpace == true ) {
117
+ addSpace = false ;
118
+ strcat (defineStr, wordVector[i-1 ].data );
119
+ defineStrLen += wordVector[i-1 ].len ;
120
+ }
112
121
113
- // FIXME: should save space string on wordVector
114
- if (lastPos != wordVector[i].pos ) {
115
- memset (defineStr + defineStrLen, 0x20 , wordVector[i].pos - lastPos);
116
- defineStrLen += wordVector[i].pos - lastPos;
122
+ strcat (defineStr, wordVector[i].data );
123
+ defineStrLen += wordVector[i].len ;
117
124
}
118
-
119
- strcat (defineStr, wordVector[i].data );
120
-
121
- lastPos = wordVector[i].pos + wordVector[i].len ;
122
- defineStrLen += wordVector[i].len ;
123
125
}
124
126
125
127
printf (" Line %d is a constant define: %s, value is %s, len is %d\n " , curLine,
126
- wordVector[index +2 ].data , defineStr, defineStrLen);
128
+ wordVector[index +3 ].data , defineStr, defineStrLen);
127
129
}
128
130
}
129
131
0 commit comments