OpenCores
URL https://opencores.org/ocsvn/lxp32/lxp32/trunk

Subversion Repositories lxp32

[/] [lxp32/] [trunk/] [tools/] [src/] [lxp32asm/] [outputwriter.h] - Diff between revs 6 and 9

Only display areas with differences | Details | Blame | View Log

Rev 6 Rev 9
/*
/*
 * Copyright (c) 2016 by Alex I. Kuznetsov.
 * Copyright (c) 2016 by Alex I. Kuznetsov.
 *
 *
 * Part of the LXP32 CPU IP core.
 * Part of the LXP32 CPU IP core.
 *
 *
 * This module defines the OutputWriter abstract class and its
 * This module defines the OutputWriter abstract class and its
 * derived classes. These classes are used to write LXP32 executable
 * derived classes. These classes are used to write LXP32 executable
 * code in different formats.
 * code in different formats.
 */
 */
 
 
#ifndef OUTPUTWRITER_H_INCLUDED
#ifndef OUTPUTWRITER_H_INCLUDED
#define OUTPUTWRITER_H_INCLUDED
#define OUTPUTWRITER_H_INCLUDED
 
 
#include <fstream>
#include <fstream>
#include <string>
#include <string>
 
 
/*
/*
 * An abstract base class for all writers
 * An abstract base class for all writers
 */
 */
 
 
class OutputWriter {
class OutputWriter {
        std::size_t _size=0;
        std::size_t _size=0;
public:
public:
        virtual ~OutputWriter() {}
        virtual ~OutputWriter() {}
        virtual void write(const char *data,std::size_t n);
        virtual void write(const char *data,std::size_t n);
        virtual void abort() {}
        virtual void abort() {}
        void pad(std::size_t size);
        void pad(std::size_t size);
        std::size_t size() const;
        std::size_t size() const;
protected:
protected:
        virtual void writeData(const char *data,std::size_t n)=0;
        virtual void writeData(const char *data,std::size_t n)=0;
};
};
 
 
/*
/*
 * Write a regular binary file
 * Write a regular binary file
 */
 */
 
 
class BinaryOutputWriter : public OutputWriter {
class BinaryOutputWriter : public OutputWriter {
        std::string _filename;
        std::string _filename;
        std::ofstream _os;
        std::ofstream _os;
public:
public:
        BinaryOutputWriter(const std::string &filename);
        BinaryOutputWriter(const std::string &filename);
        virtual void abort() override;
        virtual void abort() override;
protected:
protected:
        virtual void writeData(const char *data,std::size_t n) override;
        virtual void writeData(const char *data,std::size_t n) override;
};
};
 
 
/*
/*
 * Write a text file (one word per line)
 * Write a text file (one word per line)
 */
 */
 
 
class TextOutputWriter : public OutputWriter {
class TextOutputWriter : public OutputWriter {
public:
public:
        enum Format {Bin,Dec,Hex};
        enum Format {Bin,Dec,Hex};
private:
private:
        std::string _filename;
        std::string _filename;
        std::ofstream _os;
        std::ofstream _os;
        std::string _buf;
        std::string _buf;
        Format _fmt;
        Format _fmt;
public:
public:
        TextOutputWriter(const std::string &filename,Format f);
        TextOutputWriter(const std::string &filename,Format f);
        ~TextOutputWriter();
        ~TextOutputWriter();
        virtual void abort() override;
        virtual void abort() override;
protected:
protected:
        virtual void writeData(const char *data,std::size_t n) override;
        virtual void writeData(const char *data,std::size_t n) override;
};
};
 
 
#endif
#endif
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.