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
|
||||
${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/CSVOutputStream.h
|
||||
csv/CSVOutputStream.cpp)
|
||||
|
Loading…
x
Reference in New Issue
Block a user