1 /* -*- Mode: C++; indent-tabs-mode: t; tab-width: 4 -*-
2 // ---------------------------------------------------------------------------
4 // Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
5 // ---------------------------------------------------------------------------
6 // SquirrelJME is under the Mozilla Public License Version 2.0.
7 // See license.mkd for licensing and copyright information.
8 // -------------------------------------------------------------------------*/
12 #include "squirreljme.h"
14 // The class to forward to
15 #define TERMINAL_CLASSNAME "cc/squirreljme/emulator/EmulatedTerminalShelf"
17 #define TERMINAL_AVAILABLE_DESC "(Lcc/squirreljme/jvm/mle/brackets/PipeBracket;)I"
18 #define TERMINAL_CLOSE_DESC "(Lcc/squirreljme/jvm/mle/brackets/PipeBracket;)I"
19 #define TERMINAL_FLUSH_DESC "(Lcc/squirreljme/jvm/mle/brackets/PipeBracket;)I"
20 #define TERMINAL_FROMSTANDARD_DESC "(I)Lcc/squirreljme/jvm/mle/brackets/PipeBracket;"
21 #define TERMINAL_READIABIII_DESC "(Lcc/squirreljme/jvm/mle/brackets/PipeBracket;[BII)I"
22 #define TERMINAL_WRITEIII_DESC "(Lcc/squirreljme/jvm/mle/brackets/PipeBracket;I)I"
23 #define TERMINAL_WRITEIABIII_DESC "(Lcc/squirreljme/jvm/mle/brackets/PipeBracket;[BII)I"
25 JNIEXPORT jint JNICALL
Impl_mle_TerminalShelf_available(JNIEnv
* env
,
26 jclass classy
, jobject fd
)
28 return forwardCallStaticInteger(env
, TERMINAL_CLASSNAME
,
29 "available", TERMINAL_CLOSE_DESC
,
33 JNIEXPORT jint JNICALL
Impl_mle_TerminalShelf_close(JNIEnv
* env
,
34 jclass classy
, jobject fd
)
36 return forwardCallStaticInteger(env
, TERMINAL_CLASSNAME
,
37 "close", TERMINAL_CLOSE_DESC
,
41 JNIEXPORT jint JNICALL
Impl_mle_TerminalShelf_flush(JNIEnv
* env
,
42 jclass classy
, jobject fd
)
44 return forwardCallStaticInteger(env
, TERMINAL_CLASSNAME
,
45 "flush", TERMINAL_FLUSH_DESC
,
49 JNIEXPORT jobject JNICALL
Impl_mle_TerminalShelf_fromStandard(JNIEnv
* env
,
50 jclass classy
, jint fd
)
52 return forwardCallStaticObject(env
, TERMINAL_CLASSNAME
,
53 "fromStandard", TERMINAL_FROMSTANDARD_DESC
,
57 JNIEXPORT jint JNICALL
Impl_mle_TerminalShelf_readIABIII(
58 JNIEnv
* env
, jclass classy
, jobject fd
, jbyteArray buf
, jint off
, jint len
)
60 return forwardCallStaticInteger(env
, TERMINAL_CLASSNAME
,
61 "read", TERMINAL_READIABIII_DESC
,
65 JNIEXPORT jint JNICALL
Impl_mle_TerminalShelf_writeII(JNIEnv
* env
,
66 jclass classy
, jobject fd
, jint code
)
68 return forwardCallStaticInteger(env
, TERMINAL_CLASSNAME
,
69 "write", TERMINAL_WRITEIII_DESC
,
73 JNIEXPORT jint JNICALL
Impl_mle_TerminalShelf_writeIABIII(
74 JNIEnv
* env
, jclass classy
, jobject fd
, jbyteArray buf
, jint off
, jint len
)
76 return forwardCallStaticInteger(env
, TERMINAL_CLASSNAME
,
77 "write", TERMINAL_WRITEIABIII_DESC
,
81 static const JNINativeMethod mleTerminalMethods
[] =
83 {"available", TERMINAL_AVAILABLE_DESC
, (void*)Impl_mle_TerminalShelf_available
},
84 {"close", TERMINAL_CLOSE_DESC
, (void*)Impl_mle_TerminalShelf_close
},
85 {"flush", TERMINAL_FLUSH_DESC
, (void*)Impl_mle_TerminalShelf_flush
},
86 {"fromStandard", TERMINAL_FROMSTANDARD_DESC
, (void*)Impl_mle_TerminalShelf_fromStandard
},
87 {"read", TERMINAL_READIABIII_DESC
, (void*)Impl_mle_TerminalShelf_readIABIII
},
88 {"write", TERMINAL_WRITEIII_DESC
, (void*)Impl_mle_TerminalShelf_writeII
},
89 {"write", TERMINAL_WRITEIABIII_DESC
, (void*)Impl_mle_TerminalShelf_writeIABIII
},
92 jint JNICALL
mleTerminalInit(JNIEnv
* env
, jclass classy
)
94 return (*env
)->RegisterNatives(env
,
95 (*env
)->FindClass(env
, "cc/squirreljme/jvm/mle/TerminalShelf"),
96 mleTerminalMethods
, sizeof(mleTerminalMethods
) /
97 sizeof(JNINativeMethod
));