// Copyright 2002, SLAC, Stanford University, U.S.A. package org.freehep.aid; import org.freehep.rtti.IType; /** * @author Mark Donszelmann * @version $Id: StringToString.java 8584 2006-08-10 23:06:37Z duns $ */ public class StringToString extends JNITypeConversion { public StringToString(String indent, String cr) { super(indent, cr); } public String convertToJava(JNITypeConverter converter, int scope, IType type, int dimension, String nameSpace, String src, String dst) { StringBuffer s = new StringBuffer(); s.append(indent(scope)); s.append("// converting string to String"); s.append(cr); s.append(indent(scope)); s.append(dst); s.append(" = env->NewStringUTF("); s.append(src); s.append(".c_str());"); s.append(cr); return s.toString(); } public String cleanJava(int scope, IType type, int dimension, String nameSpace, String src, String dst) { StringBuffer s = new StringBuffer(); s.append(indent(scope)); s.append("// free String"); s.append(cr); s.append(indent(scope)); s.append("env->DeleteLocalRef("); s.append(dst); s.append(");"); s.append(cr); return s.toString(); } public String convertToCPP(JNITypeConverter converter, int scope, IType type, int dimension, String nameSpace, String src, String dst) { StringBuffer s = new StringBuffer(); s.append(indent(scope)); s.append("// converting String to string"); s.append(cr); s.append(indent(scope)); s.append("jboolean isCopy"); s.append(scope); s.append(";"); s.append(cr); s.append(indent(scope)); s.append(dst); s.append(" = env->GetStringUTFChars("); s.append(src); s.append(", &isCopy"); s.append(scope); s.append(");"); s.append(cr); return s.toString(); } public String cleanCPP(int scope, IType type, int dimension, String nameSpace, String src, String dst) { StringBuffer s = new StringBuffer(); s.append(indent(scope)); s.append("// free string"); s.append(cr); s.append(indent(scope)); s.append("if (isCopy"); s.append(scope); s.append(" == JNI_TRUE) {"); s.append(cr); s.append(indent(scope+1)); s.append("env->ReleaseStringUTFChars("); s.append(src); s.append(", "); s.append(dst); s.append(");"); s.append(cr); s.append(indent(scope)); s.append("}"); s.append(cr); return s.toString(); } }