1bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root/*
2bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * Copyright (C) 2009 The Android Open Source Project
3bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root *
4bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * Licensed under the Apache License, Version 2.0 (the "License");
5bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * you may not use this file except in compliance with the License.
6bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * You may obtain a copy of the License at
7bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root *
8bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root *      http://www.apache.org/licenses/LICENSE-2.0
9bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root *
10bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * Unless required by applicable law or agreed to in writing, software
11bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * distributed under the License is distributed on an "AS IS" BASIS,
12bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * See the License for the specific language governing permissions and
14bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * limitations under the License.
15bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root */
16bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root
17412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevichimport java.io.PrintStream;
18412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich
19412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich/**
20412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich * Emits a Java interface and Java & C implementation for a C function.
21412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich *
22412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich * <p> The Java interface will have Buffer and array variants for functions that
23412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich * have a typed pointer argument.  The array variant will convert a single "<type> *data"
24412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich * argument to a pair of arguments "<type>[] data, int offset".
25412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich */
26412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevichpublic class GLESCodeEmitter extends JniCodeEmitter {
27412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich
28412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich    PrintStream mJavaImplStream;
29412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich    PrintStream mCStream;
30412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich
31412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich    PrintStream mJavaInterfaceStream;
32412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich
33412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich    /**
34412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich      */
35412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich    public GLESCodeEmitter(String classPathName,
36412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich                          ParameterChecker checker,
37412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich                          PrintStream javaImplStream,
38412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich                          PrintStream cStream) {
39412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich        mClassPathName = classPathName;
40412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich        mChecker = checker;
41412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich
42412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich        mJavaImplStream = javaImplStream;
43412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich        mCStream = cStream;
44412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich        mUseContextPointer = false;
45412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich        mUseStaticMethods = true;
46412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich    }
47412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich
48412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich    public void emitCode(CFunc cfunc, String original) {
49412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich        emitCode(cfunc, original, null, mJavaImplStream,
50412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich                mCStream);
51412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich    }
52412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich
53412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich    public void emitNativeRegistration(String nativeRegistrationName) {
54412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich        emitNativeRegistration(nativeRegistrationName, mCStream);
55412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich    }
56412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich}
57