Update kernel/linebuffer.{cpp,h} to current coding conventions.

This commit is contained in:
Jonas 'Sortie' Termansen 2014-01-04 01:33:17 +01:00
parent bb3b6b0260
commit 3fa5fff3f5
2 changed files with 137 additions and 125 deletions

View File

@ -1,6 +1,6 @@
/******************************************************************************* /*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2012, 2013. Copyright(C) Jonas 'Sortie' Termansen 2012, 2013, 2014.
This file is part of Sortix. This file is part of Sortix.
@ -22,43 +22,46 @@
*******************************************************************************/ *******************************************************************************/
#include <stddef.h>
#include <stdint.h>
#include <string.h> #include <string.h>
#include <sortix/kernel/kernel.h> #include <sortix/kernel/kernel.h>
#include "linebuffer.h" #include "linebuffer.h"
namespace Sortix namespace Sortix {
static size_t OffsetIndex(size_t offset, size_t index, size_t length)
{ {
static size_t OffsetIndex(size_t offset, size_t index, size_t length)
{
// TODO: Possible overflow here. // TODO: Possible overflow here.
return (offset + index) % length; return (offset + index) % length;
} }
LineBuffer::LineBuffer() LineBuffer::LineBuffer()
{ {
buffer = NULL; buffer = NULL;
bufferlength = 0; bufferlength = 0;
bufferoffset = 0; bufferoffset = 0;
buffercommitted = 0; buffercommitted = 0;
bufferfrozen = 0; bufferfrozen = 0;
bufferused = 0; bufferused = 0;
} }
LineBuffer::~LineBuffer() LineBuffer::~LineBuffer()
{ {
delete[] buffer; delete[] buffer;
} }
bool LineBuffer::Push(uint32_t unicode) bool LineBuffer::Push(uint32_t unicode)
{ {
// Check if we need to allocate or resize the circular queue. // Check if we need to allocate or resize the circular queue.
if ( bufferused == bufferlength ) if ( bufferused == bufferlength )
{ {
size_t newbufferlength = (bufferlength) ? bufferlength * 2 : 32UL; size_t newbufferlength = (bufferlength) ? bufferlength * 2 : 32UL;
uint32_t* newbuffer = new uint32_t[newbufferlength]; uint32_t* newbuffer = new uint32_t[newbufferlength];
if ( !newbuffer ) { return false; } if ( !newbuffer )
return false;
size_t elemsize = sizeof(*buffer); size_t elemsize = sizeof(*buffer);
size_t leadingavai = bufferlength-bufferoffset; size_t leadingavai = bufferlength-bufferoffset;
size_t leading = (leadingavai < bufferused) ? leadingavai : bufferused; size_t leading = (leadingavai < bufferused) ? leadingavai : bufferused;
@ -74,57 +77,62 @@ namespace Sortix
size_t index = OffsetIndex(bufferoffset, bufferused++, bufferlength); size_t index = OffsetIndex(bufferoffset, bufferused++, bufferlength);
buffer[index] = unicode; buffer[index] = unicode;
return true; return true;
} }
uint32_t LineBuffer::Pop() uint32_t LineBuffer::Pop()
{ {
if ( !CanPop() ) { return 0; } if ( !CanPop() )
return 0;
uint32_t result = Peek(); uint32_t result = Peek();
bufferoffset = (bufferoffset+1) % bufferlength; bufferoffset = (bufferoffset+1) % bufferlength;
buffercommitted--; buffercommitted--;
bufferfrozen--; bufferfrozen--;
bufferused--; bufferused--;
return result; return result;
} }
uint32_t LineBuffer::Peek() const uint32_t LineBuffer::Peek() const
{ {
if ( !CanPop() ) { return 0; } if ( !CanPop() )
return 0;
size_t index = OffsetIndex(bufferoffset, 0, bufferlength); size_t index = OffsetIndex(bufferoffset, 0, bufferlength);
return buffer[index]; return buffer[index];
} }
uint32_t LineBuffer::Backspace() uint32_t LineBuffer::Backspace()
{ {
if ( !CanBackspace() ) { return 0; } if ( !CanBackspace() )
return 0;
size_t index = OffsetIndex(bufferoffset, --bufferused, bufferlength); size_t index = OffsetIndex(bufferoffset, --bufferused, bufferlength);
return buffer[index]; return buffer[index];
} }
uint32_t LineBuffer::WouldBackspace() const uint32_t LineBuffer::WouldBackspace() const
{ {
if ( !CanBackspace() ) { return 0; } if ( !CanBackspace() )
return 0;
size_t index = OffsetIndex(bufferoffset, bufferused-1, bufferlength); size_t index = OffsetIndex(bufferoffset, bufferused-1, bufferlength);
return buffer[index]; return buffer[index];
}
void LineBuffer::Commit()
{
buffercommitted = bufferfrozen = bufferused;
}
void LineBuffer::Freeze()
{
bufferfrozen = bufferused;
}
bool LineBuffer::CanPop() const
{
return buffercommitted;
}
bool LineBuffer::CanBackspace() const
{
return bufferused - bufferfrozen;
}
} }
void LineBuffer::Commit()
{
buffercommitted = bufferfrozen = bufferused;
}
void LineBuffer::Freeze()
{
bufferfrozen = bufferused;
}
bool LineBuffer::CanPop() const
{
return buffercommitted;
}
bool LineBuffer::CanBackspace() const
{
return bufferused - bufferfrozen;
}
} // namespace Sortix

View File

@ -1,6 +1,6 @@
/******************************************************************************* /*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2012, 2013. Copyright(C) Jonas 'Sortie' Termansen 2012, 2013, 2014.
This file is part of Sortix. This file is part of Sortix.
@ -25,15 +25,18 @@
#ifndef SORTIX_LINEBUFFER_H #ifndef SORTIX_LINEBUFFER_H
#define SORTIX_LINEBUFFER_H #define SORTIX_LINEBUFFER_H
namespace Sortix #include <stddef.h>
#include <stdint.h>
namespace Sortix {
class LineBuffer
{ {
class LineBuffer public:
{
public:
LineBuffer(); LineBuffer();
~LineBuffer(); ~LineBuffer();
public: public:
bool Push(uint32_t unicode); bool Push(uint32_t unicode);
uint32_t Pop(); uint32_t Pop();
uint32_t Peek() const; uint32_t Peek() const;
@ -44,7 +47,7 @@ namespace Sortix
bool CanPop() const; bool CanPop() const;
bool CanBackspace() const; bool CanBackspace() const;
private: private:
uint32_t* buffer; uint32_t* buffer;
size_t bufferlength; size_t bufferlength;
size_t bufferoffset; size_t bufferoffset;
@ -52,7 +55,8 @@ namespace Sortix
size_t bufferfrozen; size_t bufferfrozen;
size_t bufferused; size_t bufferused;
}; };
}
} // namespace Sortix
#endif #endif