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