Created LoadMemBlock/SaveMemBlock in "inc/hgl/io", their code comes from MemBlock.h
This commit is contained in:
25
inc/hgl/io/LoadMemBlock.h
Normal file
25
inc/hgl/io/LoadMemBlock.h
Normal file
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
#include<hgl/type/MemBlock.h>
|
||||
#include<hgl/io/FileInputStream.h>
|
||||
namespace hgl
|
||||
{
|
||||
/**
|
||||
* 加载一个文件到内存块类中
|
||||
*/
|
||||
template<typename T> MemBlock<T> *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<T> *mb=new MemBlock<T>(size);
|
||||
|
||||
fis.Read(mb->data(),file_size);
|
||||
|
||||
return(mb);
|
||||
}
|
||||
}//namespace hgl
|
18
inc/hgl/io/SaveMemBlock.h
Normal file
18
inc/hgl/io/SaveMemBlock.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#pragma once
|
||||
|
||||
#include<hgl/type/MemBlock.h>
|
||||
#include<hgl/filesystem/FileSystem.h>
|
||||
namespace hgl
|
||||
{
|
||||
/**
|
||||
* 保存一个内存块到文件
|
||||
*/
|
||||
template<typename T> bool SaveMemBlockToFile(const OSString &filename,const MemBlock<T> &mb)
|
||||
{
|
||||
const size_t size=mb.bytes();
|
||||
|
||||
if(size<=0)return(true);
|
||||
|
||||
return(hgl::filesystem::SaveMemoryToFile(filename,mb.data(),mb.bytes())==size);
|
||||
}
|
||||
}//namespace hgl
|
@@ -2,9 +2,6 @@
|
||||
#define HGL_MEM_BLOCK_INCLUDE
|
||||
|
||||
#include<hgl/type/DataType.h>
|
||||
#include<hgl/io/FileInputStream.h>
|
||||
#include<hgl/filesystem/FileSystem.h>
|
||||
#include<hgl/thread/ThreadMutex.h>
|
||||
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<typename T> class MemBlock
|
||||
|
||||
/**
|
||||
* 加载一个文件到内存块类中
|
||||
*/
|
||||
template<typename T> MemBlock<T> *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<T> *mb=new MemBlock<T>(size);
|
||||
|
||||
fis.Read(mb->data(),file_size);
|
||||
|
||||
return(mb);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存一个内存块到文件
|
||||
*/
|
||||
template<typename T> bool SaveMemBlockToFile(const OSString &filename,const MemBlock<T> &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
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user