| 122 | } |
| 123 | |
| 124 | void fxSourceMapLines(txParser* parser, txString mappings) |
| 125 | { |
| 126 | enum { BEGIN, SOURCE, LINE, COLUMN, NAME, END }; |
| 127 | txInteger generatedLine = 0; |
| 128 | // txInteger generatedColumn = 0; |
| 129 | // txInteger name = 0; |
| 130 | // txInteger source = 0; |
| 131 | txInteger sourceLine = 0; |
| 132 | // txInteger sourceColumn = 0; |
| 133 | txInteger state = BEGIN; |
| 134 | txString p = mappings; |
| 135 | char c; |
| 136 | while ((c = *p)) { |
| 137 | if (c == ';') { |
| 138 | p++; |
| 139 | if ((state >= NAME) && (generatedLine < parser->states[0].line)) |
| 140 | parser->lines[1 + generatedLine] = 1 + sourceLine; |
| 141 | generatedLine++; |
| 142 | // generatedColumn = 0; |
| 143 | state = BEGIN; |
| 144 | } |
| 145 | else if (c == ',') { |
| 146 | p++; |
| 147 | if ((state >= NAME) && (generatedLine < parser->states[0].line)) |
| 148 | parser->lines[1 + generatedLine] = 1 + sourceLine; |
| 149 | state = BEGIN; |
| 150 | } |
| 151 | else { |
| 152 | txInteger value = fxSourceMapValue(parser, &p); |
| 153 | switch(state) { |
| 154 | case BEGIN: |
| 155 | // generatedColumn += value; |
| 156 | state = SOURCE; |
| 157 | break; |
| 158 | case SOURCE: |
| 159 | // source += value; |
| 160 | state = LINE; |
| 161 | break; |
| 162 | case LINE: |
| 163 | sourceLine += value; |
| 164 | state = COLUMN; |
| 165 | break; |
| 166 | case COLUMN: |
| 167 | // sourceColumn += value; |
| 168 | state = NAME; |
| 169 | break; |
| 170 | case NAME: |
| 171 | // name += value; |
| 172 | state = END; |
| 173 | break; |
| 174 | } |
| 175 | } |
| 176 | } |
| 177 | } |
| 178 | |
| 179 | #define VLQ_SHIFT 5 |
| 180 | // binary: 100000 |
no test coverage detected