Major Update:

- Update printing: Do not use '\n' if indent = 0
- Implement refilling of buffer (from fd) while parsing
  - No longer use LineMark, but keep track of char position with CharNo
  - Use Mark to reference point for shifting buffer on refill
- SkipWhiteSpace no longer inline method
  - Refill buffer if required, change Mark & CharNo on line break
- CreateBuffer(), RefillBuffer() & FreeBuffer() now public methods
- Make Loading and Saving more flexible:
  - Refactor from LoadFromFile():
    ReadFromFile(), ReadFromHandle(), ReadFromBuffer()
  - Refactor from SaveToFile() & PrintToScreen:
    WriteToFile(), WriteToScreen, WriteToHandle()
This commit is contained in:
Charl Wentzel
2017-04-02 19:44:44 +02:00
parent 8f39adb0f3
commit 2e2ba113f1
3 changed files with 268 additions and 141 deletions

View File

@@ -688,16 +688,16 @@ int CShiftBuffer::Clear( int ClearLen )
if ((ClearLen == -1) || (ClearLen >= BufLen))
{
// Clear all data
BytesCleared = BufLen;
BufLen = 0;
Buffer[0] = 0;
BytesCleared = BufLen;
}
else {
// Shift remaining data
BytesCleared = ClearLen;
memmove( Buffer, &Buffer[ClearLen], BufLen-ClearLen ); // Shift remaining old data left
BufLen -= ClearLen;
Buffer[BufLen] = 0;
BytesCleared = ClearLen;
}
return BytesCleared;