IceUtilInternal.OutputBase Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ice-compat Show documentation
Show all versions of ice-compat Show documentation
Ice is a comprehensive RPC framework that helps you build distributed applications with minimal effort using familiar object-oriented idioms
// **********************************************************************
//
// Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************
package IceUtilInternal;
public class OutputBase
{
public
OutputBase()
{
_out = null;
_pos = 0;
_indent = 0;
_indentSize = 4;
_useTab = true;
_separator = true;
}
public
OutputBase(java.io.PrintWriter out)
{
_out = out;
_pos = 0;
_indent = 0;
_indentSize = 4;
_useTab = true;
_separator = true;
}
public
OutputBase(String s)
{
_out = null;
_pos = 0;
_indent = 0;
_indentSize = 4;
_useTab = true;
_separator = true;
open(s);
}
public void
setIndent(int indentSize)
{
_indentSize = indentSize;
}
public void
setUseTab(boolean useTab)
{
_useTab = useTab;
}
public void
open(String s)
{
try
{
java.io.FileWriter fw = new java.io.FileWriter(s);
java.io.BufferedWriter bw = new java.io.BufferedWriter(fw);
_out = new java.io.PrintWriter(bw);
}
catch(java.io.IOException ex)
{
}
}
public void
print(String s)
{
final char[] arr = s.toCharArray();
for(int i = 0; i < arr.length; i++)
{
if(arr[i] == '\n')
{
_pos = 0;
}
else
{
++_pos;
}
}
_out.print(s);
}
public void
inc()
{
_indent += _indentSize;
}
public void
dec()
{
assert(_indent >= _indentSize);
_indent -= _indentSize;
}
public void
useCurrentPosAsIndent()
{
_indentSave.addFirst(_indent);
_indent = _pos;
}
public void
zeroIndent()
{
_indentSave.addFirst(_indent);
_indent = 0;
}
public void
restoreIndent()
{
assert(!_indentSave.isEmpty());
_indent = _indentSave.removeFirst().intValue();
}
public void
nl()
{
_out.println();
_pos = 0;
_separator = true;
int indent = _indent;
if(_useTab)
{
while(indent >= 8)
{
indent -= 8;
_out.print('\t');
_pos += 8;
}
}
else
{
while(indent >= _indentSize)
{
indent -= _indentSize;
_out.print(" ");
_pos += _indentSize;
}
}
while(indent > 0)
{
--indent;
_out.print(' ');
++_pos;
}
_out.flush();
}
public void
sp()
{
if(_separator)
{
_out.println();
}
}
public boolean
valid()
{
return (_out != null);
}
protected java.io.PrintWriter _out;
protected int _pos;
protected int _indent;
protected int _indentSize;
protected java.util.LinkedList _indentSave = new java.util.LinkedList();
protected boolean _useTab;
protected boolean _separator;
}