// Copyright (c) 2008-2023 the Urho3D project // License: MIT #pragma once #include "../IO/NamedPipe.h" #include "../IO/PackageFile.h" #include "../IO/FileSystem.h" namespace Urho3D { // virtual unsigned Deserializer::Read(void* dest, unsigned size) = 0 | File: ../IO/Deserializer.h template CScriptArray* Deserializer_Read(unsigned size, T* ptr) { Vector vector(size); unsigned bytesRead = size ? ptr->Read(&vector[0], size) : 0; vector.Resize(bytesRead); return VectorToArray(vector, "Array"); } // VectorBuffer::VectorBuffer(Deserializer& source, unsigned size) | File: .. / IO / VectorBuffer.h template VectorBuffer Deserializer_ReadVectorBuffer(unsigned size, T* ptr) { return VectorBuffer(*ptr, size); } #define REGISTER_MEMBERS_MANUAL_PART_Deserializer() \ /* virtual unsigned Deserializer::Read(void* dest, unsigned size) = 0 | File: ../IO/Deserializer.h */ \ engine->RegisterObjectMethod(className, "Array@ Read(uint)", AS_FUNCTION_OBJLAST(Deserializer_Read), AS_CALL_CDECL_OBJLAST); \ \ /* VectorBuffer::VectorBuffer(Deserializer& source, unsigned size) | File: .. / IO / VectorBuffer.h */ \ engine->RegisterObjectMethod(className, "VectorBuffer ReadVectorBuffer(uint)", AS_FUNCTION_OBJLAST(Deserializer_ReadVectorBuffer), AS_CALL_CDECL_OBJLAST); // ================================================================================ // virtual unsigned Serializer::Write(const void* data, unsigned size) = 0 | File: ../IO/Serializer.h template unsigned Serializer_Write(CScriptArray* arr, T* ptr) { unsigned bytesToWrite = arr->GetSize(); return bytesToWrite ? ptr->Write(arr->At(0), bytesToWrite) : 0; } // virtual unsigned Serializer::Write(const void* data, unsigned size) = 0 | File: ../IO/Serializer.h template bool Serializer_Write_VectorBuffer(VectorBuffer* src, T* ptr) { return ptr->Write(src->GetData(), src->GetSize()) == src->GetSize(); } #define REGISTER_MEMBERS_MANUAL_PART_Serializer() \ /* virtual unsigned Serializer::Write(const void* data, unsigned size) = 0 | File: ../IO/Serializer.h */ \ engine->RegisterObjectMethod(className, "uint Write(Array@+)", AS_FUNCTION_OBJLAST(Serializer_Write), AS_CALL_CDECL_OBJLAST); \ engine->RegisterObjectMethod(className, "bool WriteVectorBuffer(const VectorBuffer&in)", AS_FUNCTION_OBJLAST(Serializer_Write_VectorBuffer), AS_CALL_CDECL_OBJLAST); // ================================================================================ // void FileSystem::ScanDir(Vector& result, const String& pathName, const String& filter, unsigned flags, bool recursive) const | File: ../IO/FileSystem.h template CScriptArray* FileSystem_ScanDir(const String& pathName, const String& filter, unsigned flags, bool recursive, T* ptr) { Vector result; ptr->ScanDir(result, pathName, filter, flags, recursive); return VectorToArray(result, "Array"); } #define REGISTER_MEMBERS_MANUAL_PART_FileSystem() \ /* void FileSystem::ScanDir(Vector& result, const String& pathName, const String& filter, unsigned flags, bool recursive) const | File: ../IO/FileSystem.h */ \ engine->RegisterObjectMethod(className, "Array@ ScanDir(const String&in, const String&in, uint, bool) const", AS_FUNCTION_OBJLAST(FileSystem_ScanDir), AS_CALL_CDECL_OBJLAST); }