add configBitstreamParser an base class for all bitstream file parser
This commit is contained in:
parent
ea44d71a65
commit
d3da23149c
|
|
@ -0,0 +1,28 @@
|
|||
#include <iostream>
|
||||
#include <stdint.h>
|
||||
#include <strings.h>
|
||||
|
||||
#include "configBitstreamParser.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
ConfigBitstreamParser::ConfigBitstreamParser(string filename, int mode):
|
||||
_filename(filename), _bit_length(0),
|
||||
_file_size(0), _fd(filename,
|
||||
ifstream::in | (ios_base::openmode)mode), _bit_data()
|
||||
{
|
||||
if (!_fd.is_open()) {
|
||||
cerr << "Error: fail to open " << _filename << endl;
|
||||
throw std::exception();
|
||||
}
|
||||
_fd.seekg(0, _fd.end);
|
||||
_file_size = _fd.tellg();
|
||||
_fd.seekg(0, _fd.beg);
|
||||
|
||||
_bit_data.reserve(_file_size);
|
||||
}
|
||||
|
||||
ConfigBitstreamParser::~ConfigBitstreamParser()
|
||||
{
|
||||
_fd.close();
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
#ifndef CONFIGBITSTREAMPARSER_H
|
||||
#define CONFIGBITSTREAMPARSER_H
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <stdint.h>
|
||||
|
||||
class ConfigBitstreamParser {
|
||||
public:
|
||||
ConfigBitstreamParser(std::string filename, int mode = ASCII_MODE);
|
||||
~ConfigBitstreamParser();
|
||||
virtual int parse() = 0;
|
||||
uint8_t *getData() {return (uint8_t*)_bit_data.c_str();}
|
||||
int getLength() {return _bit_length;}
|
||||
|
||||
enum {
|
||||
ASCII_MODE = 0,
|
||||
BIN_MODE = std::ifstream::binary
|
||||
};
|
||||
|
||||
protected:
|
||||
std::string _filename;
|
||||
int _bit_length;
|
||||
int _file_size;
|
||||
std::ifstream _fd;
|
||||
std::string _bit_data;
|
||||
};
|
||||
|
||||
#endif
|
||||
Loading…
Reference in New Issue