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.
@ -22,43 +22,46 @@
*******************************************************************************/
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#include <sortix/kernel/kernel.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.
return (offset + index) % length;
}
}
LineBuffer::LineBuffer()
{
LineBuffer::LineBuffer()
{
buffer = NULL;
bufferlength = 0;
bufferoffset = 0;
buffercommitted = 0;
bufferfrozen = 0;
bufferused = 0;
}
}
LineBuffer::~LineBuffer()
{
LineBuffer::~LineBuffer()
{
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.
if ( bufferused == bufferlength )
{
size_t newbufferlength = (bufferlength) ? bufferlength * 2 : 32UL;
uint32_t* newbuffer = new uint32_t[newbufferlength];
if ( !newbuffer ) { return false; }
if ( !newbuffer )
return false;
size_t elemsize = sizeof(*buffer);
size_t leadingavai = bufferlength-bufferoffset;
size_t leading = (leadingavai < bufferused) ? leadingavai : bufferused;
@ -74,57 +77,62 @@ namespace Sortix
size_t index = OffsetIndex(bufferoffset, bufferused++, bufferlength);
buffer[index] = unicode;
return true;
}
}
uint32_t LineBuffer::Pop()
{
if ( !CanPop() ) { return 0; }
uint32_t LineBuffer::Pop()
{
if ( !CanPop() )
return 0;
uint32_t result = Peek();
bufferoffset = (bufferoffset+1) % bufferlength;
buffercommitted--;
bufferfrozen--;
bufferused--;
return result;
}
}
uint32_t LineBuffer::Peek() const
{
if ( !CanPop() ) { return 0; }
uint32_t LineBuffer::Peek() const
{
if ( !CanPop() )
return 0;
size_t index = OffsetIndex(bufferoffset, 0, bufferlength);
return buffer[index];
}
}
uint32_t LineBuffer::Backspace()
{
if ( !CanBackspace() ) { return 0; }
uint32_t LineBuffer::Backspace()
{
if ( !CanBackspace() )
return 0;
size_t index = OffsetIndex(bufferoffset, --bufferused, bufferlength);
return buffer[index];
}
}
uint32_t LineBuffer::WouldBackspace() const
{
if ( !CanBackspace() ) { return 0; }
uint32_t LineBuffer::WouldBackspace() const
{
if ( !CanBackspace() )
return 0;
size_t index = OffsetIndex(bufferoffset, bufferused-1, bufferlength);
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.
@ -25,15 +25,18 @@
#ifndef 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();
public:
public:
bool Push(uint32_t unicode);
uint32_t Pop();
uint32_t Peek() const;
@ -44,7 +47,7 @@ namespace Sortix
bool CanPop() const;
bool CanBackspace() const;
private:
private:
uint32_t* buffer;
size_t bufferlength;
size_t bufferoffset;
@ -52,7 +55,8 @@ namespace Sortix
size_t bufferfrozen;
size_t bufferused;
};
}
};
} // namespace Sortix
#endif