jes/src/FileLoader.h
2016-06-19 14:55:36 -04:00

45 lines
896 B
C++

#ifndef JES_FILELOADER_H
#define JES_FILELOADER_H
#include <stdint.h>
#include <vector>
#include <memory>
class FileLoader
{
public:
enum
{
LINE_ENDING_LF,
LINE_ENDING_CR,
LINE_ENDING_CRLF,
LINE_ENDING_COUNT
};
FileLoader();
~FileLoader();
bool load(const char * fname);
unsigned int num_lines()
{
if (m_lines == NULL)
{
return 0u;
}
else
{
return m_lines->size();
}
}
int get_line_endings() { return m_line_endings; }
protected:
typedef std::pair<const uint8_t *, size_t> LineIndexPair;
typedef std::vector<LineIndexPair> LineIndexPairVector;
typedef std::shared_ptr<LineIndexPairVector> LineIndexPairVectorRef;
void load_buf(size_t size);
uint8_t * m_buf;
int m_line_endings;
LineIndexPairVectorRef m_lines;
};
#endif