// -*- c++ -*-
//
// loader.h:
//
#ifndef	LOADER_H
#define	LOADER_H

#include <iostream>
#include <fstream>

#include "sim.h"
#include "memory.h"

//
// loader class
// (for Motolora S-Record format)
//
class loader {

    //
    // member variables
    //

    // input file stream
    ifstream	in;
    // target memory to load
    memory	*mem;
    // current line number being processed
    int		line_num;

    // entry address of program (if exists)
    sim_addr	entry_addr;

    //
    // helper functions
    //
    void process_lines();
    void process_line(string line);

public:
    // constructor
    loader(const char *fname);
    // destructor
    ~loader();

    void load(memory &mem);
    loader &operator>>(memory &mem);

    sim_addr entry_address();
};


#endif
// end of loader.h