From 11ef085d9707f287822d5c23438b0f05bd095345 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Sat, 15 Jul 2023 00:06:30 +0800 Subject: [PATCH] Created LoadMemBlock/SaveMemBlock in "inc/hgl/io", their code comes from MemBlock.h --- inc/hgl/io/LoadMemBlock.h | 25 ++++++++++++++++++++ inc/hgl/io/SaveMemBlock.h | 18 +++++++++++++++ inc/hgl/type/MemBlock.h | 40 +++++--------------------------- src/CMakeLists.txt | 48 ++++++++++++++++++++++----------------- 4 files changed, 76 insertions(+), 55 deletions(-) create mode 100644 inc/hgl/io/LoadMemBlock.h create mode 100644 inc/hgl/io/SaveMemBlock.h diff --git a/inc/hgl/io/LoadMemBlock.h b/inc/hgl/io/LoadMemBlock.h new file mode 100644 index 0000000..fa587fa --- /dev/null +++ b/inc/hgl/io/LoadMemBlock.h @@ -0,0 +1,25 @@ +#pragma once + +#include +#include +namespace hgl +{ + /** + * 加载一个文件到内存块类中 + */ + template MemBlock *LoadFileToMemBlock(const OSString &filename) + { + io::FileInputStream fis; + + if(!fis.Open(filename))return(nullptr); + + const size_t file_size =fis.GetSize(); + const size_t size =(file_size+sizeof(T)-1)/sizeof(T); + + MemBlock *mb=new MemBlock(size); + + fis.Read(mb->data(),file_size); + + return(mb); + } +}//namespace hgl diff --git a/inc/hgl/io/SaveMemBlock.h b/inc/hgl/io/SaveMemBlock.h new file mode 100644 index 0000000..36a7a34 --- /dev/null +++ b/inc/hgl/io/SaveMemBlock.h @@ -0,0 +1,18 @@ +#pragma once + +#include +#include +namespace hgl +{ + /** + * 保存一个内存块到文件 + */ + template bool SaveMemBlockToFile(const OSString &filename,const MemBlock &mb) + { + const size_t size=mb.bytes(); + + if(size<=0)return(true); + + return(hgl::filesystem::SaveMemoryToFile(filename,mb.data(),mb.bytes())==size); + } +}//namespace hgl diff --git a/inc/hgl/type/MemBlock.h b/inc/hgl/type/MemBlock.h index 5dea4b6..ba93a77 100644 --- a/inc/hgl/type/MemBlock.h +++ b/inc/hgl/type/MemBlock.h @@ -2,9 +2,6 @@ #define HGL_MEM_BLOCK_INCLUDE #include -#include -#include -#include namespace hgl { /** @@ -25,6 +22,12 @@ namespace hgl const size_t GetBytes ()const{return cur_size*sizeof(T);} ///<取得内存块字节数 const size_t GetMaxBytes ()const{return buf_size*sizeof(T);} ///<取得内存块最大字节数 + T * begin (){return buf;} ///<取得内存块起始指针 + T * end (){return buf+cur_size;} ///<取得内存块结束地址指针 + + const T * begin ()const{return buf;} ///<取得内存块起始 + const T * end ()const{return buf+cur_size;} ///<取得内存块结束地址指针 + /** * 分配指定空间出来,供未来使用 */ @@ -173,36 +176,5 @@ namespace hgl return buf[n]; } };//template class MemBlock - - /** - * 加载一个文件到内存块类中 - */ - template MemBlock *LoadFileToMemBlock(const OSString &filename) - { - io::FileInputStream fis; - - if(!fis.Open(filename))return(nullptr); - - const size_t file_size =fis.GetSize(); - const size_t size =(file_size+sizeof(T)-1)/sizeof(T); - - MemBlock *mb=new MemBlock(size); - - fis.Read(mb->data(),file_size); - - return(mb); - } - - /** - * 保存一个内存块到文件 - */ - template bool SaveMemBlockToFile(const OSString &filename,const MemBlock &mb) - { - const size_t size=mb.bytes(); - - if(size<=0)return(true); - - return(hgl::filesystem::SaveMemoryToFile(filename,mb.data(),mb.bytes())==size); - } }//namespace hgl #endif//HGL_MEM_BLOCK_INCLUDE diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2e1e7d0..46bc364 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -59,9 +59,6 @@ SET(STRING_HEADER_FILES ${TYPE_INCLUDE_PATH}/String.h ${TYPE_INCLUDE_PATH}/StringList.h ${TYPE_INCLUDE_PATH}/SplitString.h ${TYPE_INCLUDE_PATH}/MergeString.h - ${TYPE_INCLUDE_PATH}/LoadString.h - ${TYPE_INCLUDE_PATH}/LoadStringList.h - ${TYPE_INCLUDE_PATH}/SaveStringList.h ${TYPE_INCLUDE_PATH}/StdString.h) SET(TEXT_HEADER_FILES ${CMCORE_ROOT_INCLUDE_PATH}/hgl/Endian.h @@ -72,9 +69,7 @@ SET(TEXT_HEADER_FILES ${CMCORE_ROOT_INCLUDE_PATH}/hgl/Endian.h SET(TEXT_SOURCE_FILES Text/Endian.cpp Text/CodePage.cpp - Text/UnicodeBlocks.cpp - Text/LoadString.cpp - Text/LoadStringList.cpp) + Text/UnicodeBlocks.cpp) SOURCE_GROUP("Text\\String" FILES ${STRING_HEADER_FILES} Text/StringList.cpp) @@ -93,13 +88,13 @@ SOURCE_GROUP("DataType\\Template\\Memory" FILES ${BASE_OTHER_SOURCE}) ##I/O------------------------------------------------------------ SET(IO_INCLUDE_PATH ${CMCORE_ROOT_INCLUDE_PATH}/hgl/io) -SET(IO_BASE_FILES ${IO_INCLUDE_PATH}/InputStream.h +SET(IO_BASE_FILES ${IO_INCLUDE_PATH}/InputStream.h ${IO_INCLUDE_PATH}/IOType.h ${IO_INCLUDE_PATH}/OutputStream.h ${IO_INCLUDE_PATH}/SeekAccess.h IO/IOType.cpp) -SET(IO_DATA_FILES ${IO_INCLUDE_PATH}/DataInputStream.h +SET(IO_DATA_FILES ${IO_INCLUDE_PATH}/DataInputStream.h ${IO_INCLUDE_PATH}/DataOutputStream.h ${IO_INCLUDE_PATH}/EndianDataInputStream.h ${IO_INCLUDE_PATH}/EndianDataOutputStream.h @@ -107,10 +102,13 @@ SET(IO_DATA_FILES ${IO_INCLUDE_PATH}/DataInputStream.h IO/DataInputStream.cpp IO/DataOutputStream.cpp) -SET(IO_MEMORY_FILES ${IO_INCLUDE_PATH}/MemoryInputStream.h - ${IO_INCLUDE_PATH}/MemoryOutputStream.h) +SET(IO_MEMORY_STREAM_FILES ${IO_INCLUDE_PATH}/MemoryInputStream.h + ${IO_INCLUDE_PATH}/MemoryOutputStream.h) -SET(IO_FILE_FILES ${IO_INCLUDE_PATH}/FileAccess.h +SET(IO_MEM_BLOCK_FILES ${IO_INCLUDE_PATH}/LoadMemBlock.h + ${IO_INCLUDE_PATH}/SaveMemBlock.h) + +SET(IO_FILE_FILES ${IO_INCLUDE_PATH}/FileAccess.h ${IO_INCLUDE_PATH}/FileInputStream.h ${IO_INCLUDE_PATH}/FileOutputStream.h ${IO_INCLUDE_PATH}/RandomAccessFile.h @@ -122,11 +120,15 @@ SET(IO_FILE_FILES ${IO_INCLUDE_PATH}/FileAccess.h IO/FileOutputStream.cpp IO/RandomAccessFile.cpp) - SET(IO_JAVA_FILES ${IO_INCLUDE_PATH}/JavaInputStream.h - ${IO_INCLUDE_PATH}/JavaOutputStream.h) + ${IO_INCLUDE_PATH}/JavaOutputStream.h) -SET(IO_TEXT_FILES IO/TextOutputStream.cpp) +SET(IO_TEXT_FILES IO/TextOutputStream.cpp + Text/LoadString.cpp + Text/LoadStringList.cpp) + +SET(IO_STRING_LIST_FILES ${IO_INCLUDE_PATH}/LoadStringList.h + ${IO_INCLUDE_PATH}/SaveStringList.h) SET(INPUT_EVENT_FILES ${IO_INCLUDE_PATH}/event/KeyboardEvent.h ${IO_INCLUDE_PATH}/event/MouseEvent.h @@ -135,19 +137,23 @@ SET(INPUT_EVENT_FILES ${IO_INCLUDE_PATH}/event/KeyboardEvent.h SOURCE_GROUP("IO\\Event" FILES ${INPUT_EVENT_FILES}) -SOURCE_GROUP("IO\\Base" FILES ${IO_BASE_FILES}) -SOURCE_GROUP("IO\\Data" FILES ${IO_DATA_FILES}) -SOURCE_GROUP("IO\\Memory" FILES ${IO_MEMORY_FILES}) -SOURCE_GROUP("IO\\File" FILES ${IO_FILE_FILES}) -SOURCE_GROUP("IO\\Jave" FILES ${IO_JAVA_FILES}) -SOURCE_GROUP("IO\\Text" FILES ${IO_TEXT_FILES}) +SOURCE_GROUP("IO\\Base" FILES ${IO_BASE_FILES}) +SOURCE_GROUP("IO\\DataIOStream" FILES ${IO_DATA_FILES}) +SOURCE_GROUP("IO\\MemBlock" FILES ${IO_MEM_BLOCK_FILES}) +SOURCE_GROUP("IO\\MemoryStream" FILES ${IO_MEMORY_STREAM_FILES}) +SOURCE_GROUP("IO\\File" FILES ${IO_FILE_FILES}) +SOURCE_GROUP("IO\\Jave" FILES ${IO_JAVA_FILES}) +SOURCE_GROUP("IO\\Text" FILES ${IO_TEXT_FILES}) +SOURCE_GROUP("ID\\StringList" FILES ${IO_STRING_LIST_FILES}) SET(IO_SOURCE_FILES ${IO_BASE_FILES} ${IO_DATA_FILES} - ${IO_MEMORY_FILES} + ${IO_MEM_BLOCK_FILES} + ${IO_MEMORY_STREAM_FILES} ${IO_FILE_FILES} ${IO_JAVA_FILES} ${IO_TEXT_FILES} + ${IO_STRING_LIST_FILES} ${INPUT_EVENT_FILES}) SET(FILESYSTEM_INCLUDE_PATH ${CMCORE_ROOT_INCLUDE_PATH}/hgl/filesystem)