/* Generated automatically by jlpp - do not edit. */ #include static jakelib::lang::String* jakelib2_strings[] = {null}; // "Writer closed" static jchar chars_jakelib2_str_0[] = {87,114,105,116,101,114,32,99,108,111,115,101,100}; #line 1 "io/BufferedWriter.jlc" // -*- c++ -*- /* * Jakelib2 - General purpose C++ library * Copyright (C) 2001 Florian Wolff (florian@donuz.de) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * $Id: BufferedWriter.jlc,v 1.5 2003/09/27 08:10:28 florian Exp $ */ #include "jakelib2.h" #include "jakelib2/io/BufferedWriter.h" #include "jakelib2/lang/System.h" using namespace jakelib::lang; using namespace jakelib::io; JAKELIB_IMPLEMENT_CLASS("jakelib.io.BufferedWriter", BufferedWriter, Writer) #ifndef WINOWS32 # include # include #endif /*****************************************************************************\ * BufferedWriter | *****************************************************************************/ BufferedWriter::BufferedWriter(Writer* writer, int bufferSize) : Writer() { nChars = 0; this->bufferSize = bufferSize; buffer = (jchar*) GC_MALLOC_ATOMIC(sizeof(jchar) * bufferSize); this->writer = writer; } /*****************************************************************************\ * ~BufferedWriter | *****************************************************************************/ BufferedWriter::~BufferedWriter() { close(); GC_FREE(buffer); } /*****************************************************************************\ * ensureOpen | *****************************************************************************/ void BufferedWriter::ensureOpen() { if (writer == null) throw new IOException(JAKELIB_ONDEMAND(jakelib2_strings[0], new jakelib::lang::String(chars_jakelib2_str_0, 0, 13)) ->plus( JAKELIB_AT2("jakelib.io.BufferedWriter.ensureOpen"))); } /*****************************************************************************\ * write | *****************************************************************************/ void BufferedWriter::write(jchar* buf, int offset, int len) { ensureOpen(); for (jlong idx = offset; idx < offset + len; idx++) { if (nChars >= bufferSize -1) flush(); buffer[nChars++] = buf[idx]; } } void BufferedWriter::write(jint c) { ensureOpen(); if (nChars >= bufferSize -1) flush(); buffer[nChars++] = (jchar) c & 0xffff; } void BufferedWriter::write(jakelib::lang::String* str) { Writer::write(str); } void BufferedWriter::write(char* str) { Writer::write(str); } /*****************************************************************************\ * newLine | *****************************************************************************/ void BufferedWriter::newLine() { Writer::write(System::eol); } /*****************************************************************************\ * close | *****************************************************************************/ void BufferedWriter::close() { if (writer != null) { flush(); writer->close(); writer = null; } } /*****************************************************************************\ * flush | *****************************************************************************/ void BufferedWriter::flush() { ensureOpen(); if (nChars < 1) return; writer->write(buffer, 0, nChars); writer->flush(); nChars = 0; }