1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2024-11-14 11:47:15 +01:00
SqMod/source/Library/Utils/BufferInterpreter.cpp

64 lines
3.2 KiB
C++
Raw Normal View History

// ------------------------------------------------------------------------------------------------
#include "Library/Utils/BufferInterpreter.hpp"
#include "Library/Utils/BufferWrapper.hpp"
// ------------------------------------------------------------------------------------------------
namespace SqMod {
// ------------------------------------------------------------------------------------------------
const SharedPtr< Buffer > & GetBufferBufferRef(const BufferWrapper & buffer)
{
return buffer.GetRef();
}
// ------------------------------------------------------------------------------------------------
template < typename T > static void RegisterInterpreter(Table & bns, CSStr cname, CSStr bname)
{
typedef BufferInterpreter< T > Interpreter;
bns.Bind(bname,
Class< Interpreter >(bns.GetVM(), cname)
// Constructors
.Ctor()
// Properties
.Prop(_SC("Front"), &Interpreter::GetFront, &Interpreter::SetFront)
.Prop(_SC("Next"), &Interpreter::GetNext, &Interpreter::SetNext)
.Prop(_SC("Back"), &Interpreter::GetBack, &Interpreter::SetBack)
.Prop(_SC("Prev"), &Interpreter::GetPrev, &Interpreter::SetPrev)
.Prop(_SC("Cursor"), &Interpreter::GetCursor, &Interpreter::SetCursor)
.Prop(_SC("Before"), &Interpreter::GetBefore, &Interpreter::SetBefore)
.Prop(_SC("After"), &Interpreter::GetAfter, &Interpreter::SetAfter)
.Prop(_SC("Max"), &Interpreter::GetMax)
.Prop(_SC("Size"), &Interpreter::GetSize)
.Prop(_SC("Capacity"), &Interpreter::GetCapacity)
.Prop(_SC("Position"), &Interpreter::GetPosition)
.Prop(_SC("Remaining"), &Interpreter::GetRemaining)
// Member Methods
.Func(_SC("Use"), &Interpreter::UseBuffer)
.Func(_SC("Get"), &Interpreter::Get)
.Func(_SC("Set"), &Interpreter::Set)
.Func(_SC("Advance"), &Interpreter::Advance)
.Func(_SC("Retreat"), &Interpreter::Retreat)
.Func(_SC("Push"), &Interpreter::Push)
.Func(_SC("Grow"), &Interpreter::Grow)
.Func(_SC("Adjust"), &Interpreter::Adjust)
);
}
// ================================================================================================
void Register_BufferInterpreter(Table & bns)
{
RegisterInterpreter< Int8 >(bns, _SC("SqBufferInterpreterS8"), _SC("S8Interpreter"));
RegisterInterpreter< Uint8 >(bns, _SC("SqBufferInterpreterU8"), _SC("U8Interpreter"));
RegisterInterpreter< Int16 >(bns, _SC("SqBufferInterpreterS16"), _SC("S16Interpreter"));
RegisterInterpreter< Uint16 >(bns, _SC("SqBufferInterpreterU16"), _SC("U16Interpreter"));
RegisterInterpreter< Int32 >(bns, _SC("SqBufferInterpreterS32"), _SC("S32Interpreter"));
RegisterInterpreter< Uint32 >(bns, _SC("SqBufferInterpreterU32"), _SC("U32Interpreter"));
RegisterInterpreter< Int64 >(bns, _SC("SqBufferInterpreterS64"), _SC("S64Interpreter"));
RegisterInterpreter< Uint64 >(bns, _SC("SqBufferInterpreterU64"), _SC("U64Interpreter"));
RegisterInterpreter< Float32 >(bns, _SC("SqBufferInterpreterF32"), _SC("F32Interpreter"));
RegisterInterpreter< Float64 >(bns, _SC("SqBufferInterpreterF64"), _SC("F64Interpreter"));
}
} // Namespace:: SqMod