(pending: boolean)
| 142 | } |
| 143 | |
| 144 | private parseCodeBuffer(pending: boolean) { |
| 145 | const config = this.config; |
| 146 | const codeBuffer = this.codeBuffer; |
| 147 | const codeCount = codeBuffer[0]; |
| 148 | |
| 149 | // NOTE: These must be updated if config is unlinked! |
| 150 | let elementList = config.elementSpace.list; |
| 151 | let attributeList = config.attributeSpace.list; |
| 152 | let prefixList = config.prefixSpace.list; |
| 153 | let uriList = config.uriSpace.list; |
| 154 | let partialList = elementList; |
| 155 | |
| 156 | let codeNum = 0; |
| 157 | let partStart = this.partStart; |
| 158 | let partialLen = this.partialLen; |
| 159 | let latestElement = this.latestElement; |
| 160 | let latestPrefix = this.latestPrefix; |
| 161 | let latestNamespace = this.latestNamespace; |
| 162 | |
| 163 | const tokenBuffer = this.tokenChunk.buffer; |
| 164 | const prefixBuffer = this.prefixBuffer; |
| 165 | const namespaceBuffer = this.namespaceBuffer; |
| 166 | const unknownElementTbl = this.unknownElementTbl; |
| 167 | const unknownAttributeTbl = this.unknownAttributeTbl; |
| 168 | const unknownOffsetList = this.unknownOffsetList; |
| 169 | let tokenNum = this.tokenChunk.length - 1; |
| 170 | let token: Token; |
| 171 | let linkTbl: Token[]; |
| 172 | let linkKind: number; |
| 173 | let name: string; |
| 174 | let elementStart = this.elementStart; |
| 175 | let unknownCount = this.unknownCount; |
| 176 | |
| 177 | while(codeNum < codeCount) { |
| 178 | let code = codeBuffer[++codeNum]; |
| 179 | const kind = code & TOKEN.MASK; |
| 180 | code >>= TOKEN.SHIFT; |
| 181 | |
| 182 | switch(kind) { |
| 183 | case CodeType.OPEN_ELEMENT_ID: |
| 184 | |
| 185 | latestElement = elementList[code].open; |
| 186 | // TODO: If latestprefix is null, use current prefix for element's namespace. |
| 187 | tokenBuffer[++tokenNum] = latestElement; |
| 188 | prefixBuffer[0] = latestPrefix; |
| 189 | elementStart = tokenNum; |
| 190 | break; |
| 191 | |
| 192 | case CodeType.CLOSE_ELEMENT_ID: |
| 193 | |
| 194 | tokenBuffer[++tokenNum] = elementList[code].close; |
| 195 | break; |
| 196 | |
| 197 | case CodeType.ELEMENT_EMITTED: |
| 198 | case CodeType.CLOSED_ELEMENT_EMITTED: |
| 199 | |
| 200 | if(unknownCount) { |
| 201 | let ns: ParserNamespace; |
no test coverage detected