*** empty log message ***
This commit is contained in:
parent
53718209e3
commit
911ab2b4b7
@ -1,13 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: Awk.java,v 1.23 2007-01-26 15:27:00 bacon Exp $
|
* $Id: Awk.java,v 1.24 2007-01-31 09:31:02 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package ase.awk;
|
package ase.awk;
|
||||||
|
|
||||||
import java.security.AccessController;
|
|
||||||
import java.security.PrivilegedAction;
|
|
||||||
import java.net.URL;
|
|
||||||
|
|
||||||
public abstract class Awk
|
public abstract class Awk
|
||||||
{
|
{
|
||||||
// mode for open_source & close_source
|
// mode for open_source & close_source
|
||||||
@ -38,33 +34,6 @@ public abstract class Awk
|
|||||||
public static final int OPTION_NEXTOFILE = (1 << 12);
|
public static final int OPTION_NEXTOFILE = (1 << 12);
|
||||||
public static final int OPTION_CRLF = (1 << 13);
|
public static final int OPTION_CRLF = (1 << 13);
|
||||||
|
|
||||||
static
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
System.getProperty("os.name")); os.arch / os.version;
|
|
||||||
*/
|
|
||||||
//System.load ("c://projects//ase/awk/aseawk.dll");
|
|
||||||
URL url = ase.awk.Awk.class.getResource("aseawk_jni.dll");
|
|
||||||
if (url == null) url = ase.awk.Awk.class.getResource("aseawk_jni.so");
|
|
||||||
if (url != null) System.load (url.getFile());
|
|
||||||
|
|
||||||
/*
|
|
||||||
AccessController.doPrivileged (new PrivilegedAction ()
|
|
||||||
{
|
|
||||||
public Object run ()
|
|
||||||
{
|
|
||||||
URL url = ase.awk.Awk.class.getResource("aseawk.dll");
|
|
||||||
if (url == null) url = ase.awk.Awk.class.getResource("libaseawk_jni.so");
|
|
||||||
|
|
||||||
if (url != null) System.load (url.getFile());
|
|
||||||
//System.load ("c://projects//ase/awk/aseawk.dll");
|
|
||||||
//System.loadLibrary ("aseawk");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
private long handle;
|
private long handle;
|
||||||
|
|
||||||
public Awk () throws Exception
|
public Awk () throws Exception
|
||||||
@ -85,7 +54,7 @@ public abstract class Awk
|
|||||||
private native void open () throws Exception;
|
private native void open () throws Exception;
|
||||||
public native void close ();
|
public native void close ();
|
||||||
public native void parse () throws Exception;
|
public native void parse () throws Exception;
|
||||||
public native void run () throws Exception;
|
public native void run (String main) throws Exception;
|
||||||
|
|
||||||
private native int getmaxdepth (int id);
|
private native int getmaxdepth (int id);
|
||||||
private native void setmaxdepth (int id, int depth);
|
private native void setmaxdepth (int id, int depth);
|
||||||
@ -110,6 +79,12 @@ public abstract class Awk
|
|||||||
private native String valtostr (
|
private native String valtostr (
|
||||||
long runid, Object obj) throws Exception;
|
long runid, Object obj) throws Exception;
|
||||||
|
|
||||||
|
/* == simpler run method == */
|
||||||
|
public void run () throws Exception
|
||||||
|
{
|
||||||
|
run (null);
|
||||||
|
}
|
||||||
|
|
||||||
/* == builtin functions == */
|
/* == builtin functions == */
|
||||||
public void addBuiltinFunction (
|
public void addBuiltinFunction (
|
||||||
String name, int min_args, int max_args) throws Exception
|
String name, int min_args, int max_args) throws Exception
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: StdAwk.java,v 1.15 2007-01-31 08:23:59 bacon Exp $
|
* $Id: StdAwk.java,v 1.16 2007-01-31 09:31:03 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package ase.awk;
|
package ase.awk;
|
||||||
@ -52,11 +52,16 @@ public abstract class StdAwk extends Awk
|
|||||||
super.parse ();
|
super.parse ();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void run () throws Exception
|
public void run (String main) throws Exception
|
||||||
{
|
{
|
||||||
cin = consoleInputNames (); cin_no = 0;
|
cin = consoleInputNames (); cin_no = 0;
|
||||||
cout = consoleOutputNames (); cout_no = 0;
|
cout = consoleOutputNames (); cout_no = 0;
|
||||||
super.run ();
|
super.run (main);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run () throws Exception
|
||||||
|
{
|
||||||
|
run (null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* == source code names == */
|
/* == source code names == */
|
||||||
@ -207,6 +212,7 @@ public abstract class StdAwk extends Awk
|
|||||||
cout_no = 0;
|
cout_no = 0;
|
||||||
|
|
||||||
if (cout == null || cout_no >= cout.length) return 0;
|
if (cout == null || cout_no >= cout.length) return 0;
|
||||||
|
|
||||||
osw = get_stream_writer (cout[cout_no]);
|
osw = get_stream_writer (cout[cout_no]);
|
||||||
if (osw == null) return -1;
|
if (osw == null) return -1;
|
||||||
|
|
||||||
|
113
ase/awk/jni.c
113
ase/awk/jni.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: jni.c,v 1.62 2007-01-31 08:23:59 bacon Exp $
|
* $Id: jni.c,v 1.63 2007-01-31 09:31:03 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -386,7 +386,17 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_parse (JNIEnv* env, jobject obj)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_run (JNIEnv* env, jobject obj)
|
#define DELETE_CLASS_REFS(env, run_data) \
|
||||||
|
do { \
|
||||||
|
(*env)->DeleteLocalRef (env, run_data.integer_class); \
|
||||||
|
(*env)->DeleteLocalRef (env, run_data.long_class); \
|
||||||
|
(*env)->DeleteLocalRef (env, run_data.float_class); \
|
||||||
|
(*env)->DeleteLocalRef (env, run_data.double_class); \
|
||||||
|
(*env)->DeleteLocalRef (env, run_data.string_class); \
|
||||||
|
(*env)->DeleteLocalRef (env, run_data.object_class); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_ase_awk_Awk_run (JNIEnv* env, jobject obj, jstring mfn)
|
||||||
{
|
{
|
||||||
jclass class;
|
jclass class;
|
||||||
jfieldID handle;
|
jfieldID handle;
|
||||||
@ -395,14 +405,10 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_run (JNIEnv* env, jobject obj)
|
|||||||
ase_awk_runios_t runios;
|
ase_awk_runios_t runios;
|
||||||
runio_data_t runio_data;
|
runio_data_t runio_data;
|
||||||
run_data_t run_data;
|
run_data_t run_data;
|
||||||
|
ase_char_t* mmm;
|
||||||
|
|
||||||
static int depth_ids[] =
|
ase_size_t len;
|
||||||
{
|
jchar* ptr;
|
||||||
ASE_AWK_DEPTH_BLOCK_PARSE,
|
|
||||||
ASE_AWK_DEPTH_EXPR_PARSE,
|
|
||||||
ASE_AWK_DEPTH_REX_BUILD,
|
|
||||||
ASE_AWK_DEPTH_REX_MATCH
|
|
||||||
};
|
|
||||||
|
|
||||||
class = (*env)->GetObjectClass (env, obj);
|
class = (*env)->GetObjectClass (env, obj);
|
||||||
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
||||||
@ -485,31 +491,88 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_run (JNIEnv* env, jobject obj)
|
|||||||
runios.console = __process_extio;
|
runios.console = __process_extio;
|
||||||
runios.custom_data = &runio_data;
|
runios.custom_data = &runio_data;
|
||||||
|
|
||||||
if (ase_awk_run (awk,
|
if (mfn == NULL)
|
||||||
ASE_NULL, &runios, ASE_NULL, ASE_NULL, &run_data) == -1)
|
|
||||||
{
|
{
|
||||||
|
mmm = NULL;
|
||||||
|
ptr = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
len = (*env)->GetStringLength (env, mfn);
|
||||||
|
|
||||||
|
if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t))
|
||||||
|
{
|
||||||
|
ase_size_t i;
|
||||||
|
|
||||||
|
ptr = (*env)->GetStringChars (env, mfn, JNI_FALSE);
|
||||||
|
if (ptr == NULL)
|
||||||
|
{
|
||||||
|
(*env)->ExceptionClear (env);
|
||||||
|
DELETE_CLASS_REFS (env, run_data);
|
||||||
|
throw_exception (
|
||||||
|
env,
|
||||||
|
ase_awk_geterrstr(ASE_AWK_ENOMEM),
|
||||||
|
ASE_AWK_ENOMEM,
|
||||||
|
0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mmm = (ase_char_t*) malloc (ASE_SIZEOF(ase_char_t)*(len+1));
|
||||||
|
if (mmm == ASE_NULL)
|
||||||
|
{
|
||||||
|
(*env)->ReleaseStringChars (env, mfn, ptr);
|
||||||
|
DELETE_CLASS_REFS (env, run_data);
|
||||||
|
throw_exception (
|
||||||
|
env,
|
||||||
|
ase_awk_geterrstr(ASE_AWK_ENOMEM),
|
||||||
|
ASE_AWK_ENOMEM,
|
||||||
|
0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
mmm[i] = (ase_char_t)ptr[i];
|
||||||
|
if (mmm[i] == ASE_T('\0'))
|
||||||
|
{
|
||||||
|
free (mmm);
|
||||||
|
(*env)->ReleaseStringChars (env, mfn, ptr);
|
||||||
|
DELETE_CLASS_REFS (env, run_data);
|
||||||
|
throw_exception (
|
||||||
|
env,
|
||||||
|
ASE_T("main function name not valid"),
|
||||||
|
ASE_AWK_EINVAL,
|
||||||
|
0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mmm[len] = ASE_T('\0');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mmm = (ase_char_t*)mfn;
|
||||||
|
ptr = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ase_awk_run (awk,
|
||||||
|
mmm, &runios, ASE_NULL, ASE_NULL, &run_data) == -1)
|
||||||
|
{
|
||||||
|
if (mmm != NULL && mmm != mfn) free (mmm);
|
||||||
|
if (ptr != NULL) (*env)->ReleaseStringChars (env, mfn, ptr);
|
||||||
|
DELETE_CLASS_REFS (env, run_data);
|
||||||
|
|
||||||
throw_exception (
|
throw_exception (
|
||||||
env,
|
env,
|
||||||
ase_awk_geterrmsg(awk),
|
ase_awk_geterrmsg(awk),
|
||||||
ase_awk_geterrnum(awk),
|
ase_awk_geterrnum(awk),
|
||||||
ase_awk_geterrlin(awk));
|
ase_awk_geterrlin(awk));
|
||||||
|
|
||||||
(*env)->DeleteLocalRef (env, run_data.integer_class);
|
|
||||||
(*env)->DeleteLocalRef (env, run_data.long_class);
|
|
||||||
(*env)->DeleteLocalRef (env, run_data.float_class);
|
|
||||||
(*env)->DeleteLocalRef (env, run_data.double_class);
|
|
||||||
(*env)->DeleteLocalRef (env, run_data.string_class);
|
|
||||||
(*env)->DeleteLocalRef (env, run_data.object_class);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
(*env)->DeleteLocalRef (env, run_data.integer_class);
|
if (mmm != NULL && mmm != mfn) free (mmm);
|
||||||
(*env)->DeleteLocalRef (env, run_data.long_class);
|
if (ptr != NULL) (*env)->ReleaseStringChars (env, mfn, ptr);
|
||||||
(*env)->DeleteLocalRef (env, run_data.short_class);
|
DELETE_CLASS_REFS (env, run_data);
|
||||||
(*env)->DeleteLocalRef (env, run_data.float_class);
|
|
||||||
(*env)->DeleteLocalRef (env, run_data.double_class);
|
|
||||||
(*env)->DeleteLocalRef (env, run_data.string_class);
|
|
||||||
(*env)->DeleteLocalRef (env, run_data.object_class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static ase_ssize_t __java_open_source (JNIEnv* env, jobject obj, int mode)
|
static ase_ssize_t __java_open_source (JNIEnv* env, jobject obj, int mode)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: jni.h,v 1.19 2007-01-30 10:55:27 bacon Exp $
|
* $Id: jni.h,v 1.20 2007-01-31 09:31:03 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _ASE_AWK_JNI_H_
|
#ifndef _ASE_AWK_JNI_H_
|
||||||
@ -18,7 +18,7 @@ extern "C" {
|
|||||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_open (JNIEnv* env, jobject obj);
|
JNIEXPORT void JNICALL Java_ase_awk_Awk_open (JNIEnv* env, jobject obj);
|
||||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_close (JNIEnv* env, jobject obj);
|
JNIEXPORT void JNICALL Java_ase_awk_Awk_close (JNIEnv* env, jobject obj);
|
||||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_parse (JNIEnv* env, jobject obj);
|
JNIEXPORT void JNICALL Java_ase_awk_Awk_parse (JNIEnv* env, jobject obj);
|
||||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_run (JNIEnv* env, jobject obj);
|
JNIEXPORT void JNICALL Java_ase_awk_Awk_run (JNIEnv* env, jobject obj, jstring mfn);
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_addbfn (
|
JNIEXPORT void JNICALL Java_ase_awk_Awk_addbfn (
|
||||||
JNIEnv* env, jobject obj, jstring name, jint min_args, jint max_args);
|
JNIEnv* env, jobject obj, jstring name, jint min_args, jint max_args);
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: Awk.java,v 1.24 2007-01-30 11:24:40 bacon Exp $
|
* $Id: Awk.java,v 1.25 2007-01-31 09:31:29 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package ase.test.awk;
|
package ase.test.awk;
|
||||||
|
|
||||||
|
import java.net.URL;
|
||||||
|
|
||||||
public class Awk extends ase.awk.StdAwk
|
public class Awk extends ase.awk.StdAwk
|
||||||
{
|
{
|
||||||
public Awk () throws ase.awk.Exception
|
public Awk () throws ase.awk.Exception
|
||||||
@ -84,6 +86,10 @@ public class Awk extends ase.awk.StdAwk
|
|||||||
{
|
{
|
||||||
Awk awk = null;
|
Awk awk = null;
|
||||||
|
|
||||||
|
URL url = ase.awk.Awk.class.getResource ("aseawk_jni.dll");
|
||||||
|
if (url == null) url = ase.awk.Awk.class.getResource ("aseawk_jni.so");
|
||||||
|
if (url != null) System.load (url.getFile());
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
awk = new Awk ();
|
awk = new Awk ();
|
||||||
@ -95,8 +101,7 @@ public class Awk extends ase.awk.StdAwk
|
|||||||
System.out.println ("Option: [" + awk.getOption() + "]");
|
System.out.println ("Option: [" + awk.getOption() + "]");
|
||||||
|
|
||||||
awk.parse ();
|
awk.parse ();
|
||||||
System.out.println ("about to run the program");
|
awk.run ("main");
|
||||||
awk.run ();
|
|
||||||
}
|
}
|
||||||
catch (ase.awk.Exception e)
|
catch (ase.awk.Exception e)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user