Skip to content
Snippets Groups Projects
Commit 6fd5e190 authored by Alexander Rose's avatar Alexander Rose
Browse files

gro, faster atom line handling

parent 07c3377d
No related branches found
No related tags found
No related merge requests found
......@@ -193,25 +193,28 @@ function handleAtoms (state: GroState, block: GroBlock) {
const columnCount = columns.length
const tokens = Tokens.create(state.numberOfAtoms * 2 * columnCount)
let start: number
let end: number
let valueStart: number
let valueEnd: number = state.position
for (let i = 0; i < state.numberOfAtoms; ++i) {
state.currentTokenStart = state.position
eatLine(state)
// console.log('atom line', state.data.substring(state.currentTokenStart, state.currentTokenEnd))
let start: number
let end = state.currentTokenStart
end = state.currentTokenStart
for (let j = 0; j < columnCount; ++j) {
start = end
end = start + fieldSizes[j]
// trim
let valueStart = start
let valueEnd = end
valueStart = start
valueEnd = end
while (valueStart < valueEnd && state.data.charCodeAt(valueStart) === 32) ++valueStart;
while (valueEnd > valueStart && state.data.charCodeAt(valueEnd - 1) === 32) --valueEnd;
Tokens.add(tokens, valueStart, valueEnd)
Tokens.addUnchecked(tokens, valueStart, valueEnd)
}
state.position = valueEnd
eatLine(state)
}
block.addTable(new TextTable(state.data, name, columns, tokens));
......
......@@ -25,6 +25,11 @@ export namespace Tokens {
tokens.indices[tokens.count++] = end;
}
export function addUnchecked(tokens: Tokens, start: number, end: number) {
tokens.indices[tokens.count++] = start;
tokens.indices[tokens.count++] = end;
}
export function create(size: number): Tokens {
return {
indicesLenMinus2: (size - 2) | 0,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment