with java.io.OutputStream; use java.io.OutputStream;
with java.lang.String; use java.lang.String;
package java.io.ByteArrayOutputStream is

    type ByteArrayOutputStream_Obj is new OutputStream_Obj with null record;
    type ByteArrayOutputStream_Ptr is access all ByteArrayOutputStream_Obj'Class;

    procedure init_ByteArrayOutputStream(Obj : access ByteArrayOutputStream_Obj'Class);
    function new_ByteArrayOutputStream(Obj : ByteArrayOutputStream_Ptr := null) return ByteArrayOutputStream_Ptr;

    function new_ByteArrayOutputStream(
        size : Integer;
        Obj : ByteArrayOutputStream_Ptr := null)
      return ByteArrayOutputStream_Ptr;

    procedure write(Obj : access ByteArrayOutputStream_Obj;
        b : Integer);

    procedure write(Obj : access ByteArrayOutputStream_Obj;
        b : String;
        off : Integer;
        len : Integer);

    procedure writeTo(Obj : access ByteArrayOutputStream_Obj;
        stdout : OutputStream_Ptr);

    procedure reset(Obj : access ByteArrayOutputStream_Obj);

    function toByteArray(Obj : access ByteArrayOutputStream_Obj) return String;

    function size(Obj : access ByteArrayOutputStream_Obj) return Integer;

    function toString(Obj : access ByteArrayOutputStream_Obj) return String_Ptr;

    function toString(Obj : access ByteArrayOutputStream_Obj;
        hibyte : Integer)
      return String_Ptr;

    pragma Import(Java, writeTo);
    pragma Import(Java, reset);
    pragma Import(Java, toByteArray);
    pragma Import(Java, size);
    pragma Import(Java, write);
    pragma Import(Java, toString);

    pragma Import(Java_Constructor, init_ByteArrayOutputStream);
    pragma Import(Java_Constructor, new_ByteArrayOutputStream);

end java.io.ByteArrayOutputStream;
