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

Subversion Repositories lxp32

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

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 2 Rev 6
Line 20... Line 20...
 
 
/*
/*
 * OutputWriter members
 * OutputWriter members
 */
 */
 
 
 
void OutputWriter::write(const char *data,std::size_t n) {
 
        writeData(data,n);
 
        _size+=n;
 
}
 
 
void OutputWriter::pad(std::size_t size) {
void OutputWriter::pad(std::size_t size) {
        static char zeros[256]; // static objects are zero-initialized
        static char zeros[256]; // static objects are zero-initialized
        while(size>0) {
        while(size>0) {
                auto n=std::min<std::size_t>(size,256);
                auto n=std::min<std::size_t>(size,256);
                write(zeros,n);
                write(zeros,n);
                size-=n;
                size-=n;
        }
        }
}
}
 
 
 
std::size_t OutputWriter::size() const {
 
        return _size;
 
}
 
 
/*
/*
 * BinaryOutputWriter members
 * BinaryOutputWriter members
 */
 */
 
 
BinaryOutputWriter::BinaryOutputWriter(const std::string &filename):
BinaryOutputWriter::BinaryOutputWriter(const std::string &filename):
Line 40... Line 49...
        _os(filename,std::ios_base::out|std::ios_base::binary)
        _os(filename,std::ios_base::out|std::ios_base::binary)
{
{
        if(!_os) throw std::runtime_error("Cannot open \""+filename+"\" for writing");
        if(!_os) throw std::runtime_error("Cannot open \""+filename+"\" for writing");
}
}
 
 
void BinaryOutputWriter::write(const char *data,std::size_t n) {
void BinaryOutputWriter::writeData(const char *data,std::size_t n) {
        _os.write(data,n);
        _os.write(data,n);
}
}
 
 
void BinaryOutputWriter::abort() {
void BinaryOutputWriter::abort() {
        _os.close();
        _os.close();
Line 68... Line 77...
                assert(_buf.size()<4);
                assert(_buf.size()<4);
                pad(4-_buf.size());
                pad(4-_buf.size());
        }
        }
}
}
 
 
void TextOutputWriter::write(const char *data,std::size_t n) {
void TextOutputWriter::writeData(const char *data,std::size_t n) {
        while(n>0) {
        while(n>0) {
                assert(_buf.size()<4);
                assert(_buf.size()<4);
                auto count=std::min(4-_buf.size(),n);
                auto count=std::min(4-_buf.size(),n);
                _buf.append(data,count);
                _buf.append(data,count);
                data+=count;
                data+=count;

powered by: WebSVN 2.1.0

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