added CSVParse.h
This commit is contained in:
parent
b1be1d6fb8
commit
9c7aecfdb0
69
inc/hgl/util/csv/CSVParse.h
Normal file
69
inc/hgl/util/csv/CSVParse.h
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
#pragma once
|
||||||
|
#include<hgl/io/FileInputStream.h>
|
||||||
|
#include<hgl/io/TextInputStream.h>
|
||||||
|
#include<hgl/util/csv/CSVFieldSplite.h>
|
||||||
|
|
||||||
|
namespace hgl
|
||||||
|
{
|
||||||
|
namespace util
|
||||||
|
{
|
||||||
|
template<typename T> class CSVParseCallback
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
virtual bool OnLine(util::CSVFieldSplite<T> &csv)=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename T> class CSVTextParse:public io::TextInputStream::ParseCallback<T>
|
||||||
|
{
|
||||||
|
util::CSVFieldSplite<T> splite;
|
||||||
|
|
||||||
|
CSVParseCallback<T> *callback;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
CSVTextParse(CSVParseCallback<T> *pcb)
|
||||||
|
{
|
||||||
|
callback=pcb;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OnLine(const T *text,const int length) override
|
||||||
|
{
|
||||||
|
if(!text||!*text||length<=0)
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
splite.Start(text,length);
|
||||||
|
|
||||||
|
callback->OnLine(splite);
|
||||||
|
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
};//class CSVTextParse
|
||||||
|
|
||||||
|
template<typename T> inline bool ParseCSV(io::InputStream *is,CSVParseCallback<T> *pcb)
|
||||||
|
{
|
||||||
|
io::TextInputStream tis(is);
|
||||||
|
|
||||||
|
CSVTextParse<T> parse(pcb);
|
||||||
|
|
||||||
|
tis.SetParseCallback<T>(&parse);
|
||||||
|
|
||||||
|
tis.Run();
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T> inline bool ParseCSVFile(const OSString &filename,CSVParseCallback<T> *pcb)
|
||||||
|
{
|
||||||
|
io::FileInputStream *fis=new io::FileInputStream;
|
||||||
|
|
||||||
|
if(!fis->Open(filename))
|
||||||
|
{
|
||||||
|
delete fis;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ParseCSV<T>(fis,pcb);
|
||||||
|
}
|
||||||
|
}//namespace util
|
||||||
|
}//namespace hgl
|
@ -81,6 +81,7 @@ SOURCE_GROUP("Crypt" FILES ${CRYPT_HEADER_FILES} ${CRYPT_SOURCE_FILES})
|
|||||||
####################################################################################################
|
####################################################################################################
|
||||||
|
|
||||||
SET(CSV_SOURCE ${CMUTIL_ROOT_INCLUDE_PATH}/hgl/util/csv/CSVFieldSplite.h
|
SET(CSV_SOURCE ${CMUTIL_ROOT_INCLUDE_PATH}/hgl/util/csv/CSVFieldSplite.h
|
||||||
|
${CMUTIL_ROOT_INCLUDE_PATH}/hgl/util/csv/CSVParse.h
|
||||||
${CMUTIL_ROOT_INCLUDE_PATH}/hgl/util/csv/CSVOutput.h
|
${CMUTIL_ROOT_INCLUDE_PATH}/hgl/util/csv/CSVOutput.h
|
||||||
${CMUTIL_ROOT_INCLUDE_PATH}/hgl/util/csv/CSVOutputStream.h
|
${CMUTIL_ROOT_INCLUDE_PATH}/hgl/util/csv/CSVOutputStream.h
|
||||||
csv/CSVOutputStream.cpp)
|
csv/CSVOutputStream.cpp)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user