// ------------------------------------------------------------------------------------------------ #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