/*================================================================================
  code generated by: java2cpp
  author: Zoran Angelov, mailto://baldzar@gmail.com
  class: java.io.InputStream
================================================================================*/


#ifndef J2CPP_INCLUDE_IMPLEMENTATION

#ifndef J2CPP_JAVA_IO_INPUTSTREAM_HPP_DECL
#define J2CPP_JAVA_IO_INPUTSTREAM_HPP_DECL


namespace j2cpp { namespace java { namespace io { class Closeable; } } }
namespace j2cpp { namespace java { namespace lang { class Object; } } }


#include <java/io/Closeable.hpp>
#include <java/lang/Object.hpp>


namespace j2cpp {

namespace java { namespace io {

	class InputStream;
	class InputStream
		: public object<InputStream>
	{
	public:

		J2CPP_DECLARE_CLASS

		J2CPP_DECLARE_METHOD(0)
		J2CPP_DECLARE_METHOD(1)
		J2CPP_DECLARE_METHOD(2)
		J2CPP_DECLARE_METHOD(3)
		J2CPP_DECLARE_METHOD(4)
		J2CPP_DECLARE_METHOD(5)
		J2CPP_DECLARE_METHOD(6)
		J2CPP_DECLARE_METHOD(7)
		J2CPP_DECLARE_METHOD(8)
		J2CPP_DECLARE_METHOD(9)

		explicit InputStream(jobject jobj)
		: object<InputStream>(jobj)
		{
		}

		operator local_ref<java::lang::Object>() const;
		operator local_ref<java::io::Closeable>() const;


		InputStream();
		jint available();
		void close();
		void mark(jint);
		jboolean markSupported();
		jint read();
		jint read(local_ref< array<jbyte,1> >  const&);
		jint read(local_ref< array<jbyte,1> >  const&, jint, jint);
		void reset();
		jlong skip(jlong);
	}; //class InputStream

} //namespace io
} //namespace java

} //namespace j2cpp

#endif //J2CPP_JAVA_IO_INPUTSTREAM_HPP_DECL

#else //J2CPP_INCLUDE_IMPLEMENTATION

#ifndef J2CPP_JAVA_IO_INPUTSTREAM_HPP_IMPL
#define J2CPP_JAVA_IO_INPUTSTREAM_HPP_IMPL

namespace j2cpp {



java::io::InputStream::operator local_ref<java::lang::Object>() const
{
	return local_ref<java::lang::Object>(get_jobject());
}

java::io::InputStream::operator local_ref<java::io::Closeable>() const
{
	return local_ref<java::io::Closeable>(get_jobject());
}


java::io::InputStream::InputStream()
: object<java::io::InputStream>(
	call_new_object<
		java::io::InputStream::J2CPP_CLASS_NAME,
		java::io::InputStream::J2CPP_METHOD_NAME(0),
		java::io::InputStream::J2CPP_METHOD_SIGNATURE(0)
	>()
)
{
}


jint java::io::InputStream::available()
{
	return call_method<
		java::io::InputStream::J2CPP_CLASS_NAME,
		java::io::InputStream::J2CPP_METHOD_NAME(1),
		java::io::InputStream::J2CPP_METHOD_SIGNATURE(1), 
		jint
	>(get_jobject());
}

void java::io::InputStream::close()
{
	return call_method<
		java::io::InputStream::J2CPP_CLASS_NAME,
		java::io::InputStream::J2CPP_METHOD_NAME(2),
		java::io::InputStream::J2CPP_METHOD_SIGNATURE(2), 
		void
	>(get_jobject());
}

void java::io::InputStream::mark(jint a0)
{
	return call_method<
		java::io::InputStream::J2CPP_CLASS_NAME,
		java::io::InputStream::J2CPP_METHOD_NAME(3),
		java::io::InputStream::J2CPP_METHOD_SIGNATURE(3), 
		void
	>(get_jobject(), a0);
}

jboolean java::io::InputStream::markSupported()
{
	return call_method<
		java::io::InputStream::J2CPP_CLASS_NAME,
		java::io::InputStream::J2CPP_METHOD_NAME(4),
		java::io::InputStream::J2CPP_METHOD_SIGNATURE(4), 
		jboolean
	>(get_jobject());
}

jint java::io::InputStream::read()
{
	return call_method<
		java::io::InputStream::J2CPP_CLASS_NAME,
		java::io::InputStream::J2CPP_METHOD_NAME(5),
		java::io::InputStream::J2CPP_METHOD_SIGNATURE(5), 
		jint
	>(get_jobject());
}

jint java::io::InputStream::read(local_ref< array<jbyte,1> > const &a0)
{
	return call_method<
		java::io::InputStream::J2CPP_CLASS_NAME,
		java::io::InputStream::J2CPP_METHOD_NAME(6),
		java::io::InputStream::J2CPP_METHOD_SIGNATURE(6), 
		jint
	>(get_jobject(), a0);
}

jint java::io::InputStream::read(local_ref< array<jbyte,1> > const &a0, jint a1, jint a2)
{
	return call_method<
		java::io::InputStream::J2CPP_CLASS_NAME,
		java::io::InputStream::J2CPP_METHOD_NAME(7),
		java::io::InputStream::J2CPP_METHOD_SIGNATURE(7), 
		jint
	>(get_jobject(), a0, a1, a2);
}

void java::io::InputStream::reset()
{
	return call_method<
		java::io::InputStream::J2CPP_CLASS_NAME,
		java::io::InputStream::J2CPP_METHOD_NAME(8),
		java::io::InputStream::J2CPP_METHOD_SIGNATURE(8), 
		void
	>(get_jobject());
}

jlong java::io::InputStream::skip(jlong a0)
{
	return call_method<
		java::io::InputStream::J2CPP_CLASS_NAME,
		java::io::InputStream::J2CPP_METHOD_NAME(9),
		java::io::InputStream::J2CPP_METHOD_SIGNATURE(9), 
		jlong
	>(get_jobject(), a0);
}


J2CPP_DEFINE_CLASS(java::io::InputStream,"java/io/InputStream")
J2CPP_DEFINE_METHOD(java::io::InputStream,0,"<init>","()V")
J2CPP_DEFINE_METHOD(java::io::InputStream,1,"available","()I")
J2CPP_DEFINE_METHOD(java::io::InputStream,2,"close","()V")
J2CPP_DEFINE_METHOD(java::io::InputStream,3,"mark","(I)V")
J2CPP_DEFINE_METHOD(java::io::InputStream,4,"markSupported","()Z")
J2CPP_DEFINE_METHOD(java::io::InputStream,5,"read","()I")
J2CPP_DEFINE_METHOD(java::io::InputStream,6,"read","([B)I")
J2CPP_DEFINE_METHOD(java::io::InputStream,7,"read","([BII)I")
J2CPP_DEFINE_METHOD(java::io::InputStream,8,"reset","()V")
J2CPP_DEFINE_METHOD(java::io::InputStream,9,"skip","(J)J")

} //namespace j2cpp

#endif //J2CPP_JAVA_IO_INPUTSTREAM_HPP_IMPL

#endif //J2CPP_INCLUDE_IMPLEMENTATION
