Move emulator-base native code into its own non-Gradle directory.
[SquirrelJME.git] / emulators / emulator-base-native / c / mle_terminal.c
blob5c65ce15762ac5e34aacf2981edf9a3d64453a33
1 /* -*- Mode: C++; indent-tabs-mode: t; tab-width: 4 -*-
2 // ---------------------------------------------------------------------------
3 // SquirrelJME
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 // -------------------------------------------------------------------------*/
10 #include <stdio.h>
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,
30 fd);
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,
38 fd);
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,
46 fd);
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,
54 fd);
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,
62 fd, buf, off, len);
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,
70 fd, code);
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,
78 fd, buf, off, len);
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));