#ifndef __FORENSICS_NTFSMFTENTRYREADER_HH__
#define __FORENSICS_NTFSMFTENTRYREADER_HH__

#include "forensics.hh"
#include "forensics-gecode.hh"
#include "datasource.hh"
#include "ntfsmftentry.hh"


const int64_t mftEntrySize = 1024;

class NTFSMFTEntryReader
{
  
  unsigned char MFTentry[MFTENTRY_SIZE];
  //  unsigned char MFTentry[mftEntrySize];
  seglist segs;
  uint64_t fixupSignature;
public:
  NTFSMFTEntryReader ();
  ~NTFSMFTEntryReader ();
    
  void set_MFTentry ( int64_t, DataSource& ds);
  int64_t get_MFTentryAt ( int64_t );
    
  uint64_t readBytes ( int64_t, int );
  void fixup_array ();
    
  NTFSMFTEntry read_entry ( int64_t, DataSource& ds );
  std::string read_filename ( uint64_t, unsigned int );
  std::vector<int64_t> read_runlist ( uint64_t, unsigned int, unsigned int );
};

#endif
