*** empty log message ***
This commit is contained in:
parent
99bb5ee025
commit
e407a0b1fb
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: Awk.java,v 1.21 2007-01-24 14:21:29 bacon Exp $
|
||||
* $Id: Awk.java,v 1.22 2007-01-25 14:10:02 bacon Exp $
|
||||
*/
|
||||
|
||||
package ase.awk;
|
||||
@ -22,6 +22,22 @@ public abstract class Awk
|
||||
public static final int DEPTH_REX_BUILD = (1 << 4);
|
||||
public static final int DEPTH_REX_MATCH = (1 << 5);
|
||||
|
||||
// options
|
||||
public static final int OPTION_IMPLICIT = (1 << 0);
|
||||
public static final int OPTION_EXPLICIT = (1 << 1);
|
||||
public static final int OPTION_UNIQUEFN = (1 << 2);
|
||||
public static final int OPTION_SHADING = (1 << 3);
|
||||
public static final int OPTION_SHIFT = (1 << 4);
|
||||
public static final int OPTION_IDIV = (1 << 5);
|
||||
public static final int OPTION_STRCONCAT = (1 << 6);
|
||||
public static final int OPTION_EXTIO = (1 << 7);
|
||||
public static final int OPTION_COPROC = (1 << 8);
|
||||
public static final int OPTION_BLOCKLESS = (1 << 9);
|
||||
public static final int OPTION_STRBASEONE = (1 << 10);
|
||||
public static final int OPTION_STRIPSPACES = (1 << 11);
|
||||
public static final int OPTION_NEXTOFILE = (1 << 12);
|
||||
public static final int OPTION_CRLF = (1 << 13);
|
||||
|
||||
static
|
||||
{
|
||||
/*
|
||||
@ -53,6 +69,8 @@ public abstract class Awk
|
||||
|
||||
public Awk () throws Exception
|
||||
{
|
||||
this.handle = 0;
|
||||
|
||||
open ();
|
||||
}
|
||||
|
||||
@ -72,6 +90,12 @@ public abstract class Awk
|
||||
private native int getmaxdepth (int id);
|
||||
private native void setmaxdepth (int id, int depth);
|
||||
|
||||
private native int getoption ();
|
||||
private native void setoption (int opt);
|
||||
|
||||
private native boolean getdebug ();
|
||||
private native void setdebug (boolean debug);
|
||||
|
||||
private native void addbfn (
|
||||
String name, int min_args, int max_args) throws Exception;
|
||||
private native void delbfn (String name) throws Exception;
|
||||
@ -83,7 +107,8 @@ public abstract class Awk
|
||||
|
||||
private native Object strtonum (
|
||||
long runid, String str) throws Exception;
|
||||
private native String valtostr (long runid, Object obj);
|
||||
private native String valtostr (
|
||||
long runid, Object obj) throws Exception;
|
||||
|
||||
/* == builtin functions == */
|
||||
public void addBuiltinFunction (
|
||||
@ -210,6 +235,28 @@ public abstract class Awk
|
||||
setmaxdepth (ids, depth);
|
||||
}
|
||||
|
||||
/* == option == */
|
||||
public int getOption ()
|
||||
{
|
||||
return getoption ();
|
||||
}
|
||||
|
||||
public void setOption (int opt)
|
||||
{
|
||||
setoption (opt);
|
||||
}
|
||||
|
||||
/* == debug == */
|
||||
public boolean getDebug ()
|
||||
{
|
||||
return getdebug ();
|
||||
}
|
||||
|
||||
public void setDebug (boolean debug)
|
||||
{
|
||||
setdebug (debug);
|
||||
}
|
||||
|
||||
/* == source code management == */
|
||||
protected abstract int openSource (int mode);
|
||||
protected abstract int closeSource (int mode);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: StdAwk.java,v 1.12 2007-01-24 14:21:29 bacon Exp $
|
||||
* $Id: StdAwk.java,v 1.13 2007-01-25 14:10:03 bacon Exp $
|
||||
*/
|
||||
|
||||
package ase.awk;
|
||||
@ -801,7 +801,6 @@ public abstract class StdAwk extends Awk
|
||||
return new Long (n);
|
||||
}
|
||||
|
||||
|
||||
/* == utility functions == */
|
||||
private Process popen (String command) throws IOException
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: awk.c,v 1.104 2007-01-07 07:30:39 bacon Exp $
|
||||
* $Id: awk.c,v 1.105 2007-01-25 14:10:03 bacon Exp $
|
||||
*/
|
||||
|
||||
#if defined(__BORLANDC__)
|
||||
@ -11,7 +11,8 @@
|
||||
|
||||
static void __free_afn (void* awk, void* afn);
|
||||
|
||||
ase_awk_t* ase_awk_open (const ase_awk_sysfns_t* sysfns, int* errnum)
|
||||
ase_awk_t* ase_awk_open (
|
||||
const ase_awk_sysfns_t* sysfns, void* custom_data, int* errnum)
|
||||
{
|
||||
ase_awk_t* awk;
|
||||
|
||||
@ -157,6 +158,7 @@ ase_awk_t* ase_awk_open (const ase_awk_sysfns_t* sysfns, int* errnum)
|
||||
awk->run.count = 0;
|
||||
awk->run.ptr = ASE_NULL;
|
||||
|
||||
awk->custom_data = custom_data;
|
||||
return awk;
|
||||
}
|
||||
|
||||
@ -263,3 +265,7 @@ void ase_awk_setoption (ase_awk_t* awk, int opt)
|
||||
awk->option = opt;
|
||||
}
|
||||
|
||||
void* ase_awk_getcustomdata (ase_awk_t* awk)
|
||||
{
|
||||
return awk->custom_data;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: awk.h,v 1.184 2007-01-21 13:21:14 bacon Exp $
|
||||
* $Id: awk.h,v 1.185 2007-01-25 14:10:03 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _ASE_AWK_AWK_H_
|
||||
@ -187,7 +187,7 @@ enum
|
||||
ASE_AWK_BLOCKLESS = (1 << 9),
|
||||
|
||||
/* use 1 as the start index for string operations */
|
||||
ASE_AWK_STRIDXONE = (1 << 10),
|
||||
ASE_AWK_STRBASEONE = (1 << 10),
|
||||
|
||||
/* strip off leading and trailing spaces when splitting a record
|
||||
* into fields with a regular expression.
|
||||
@ -401,10 +401,12 @@ enum
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
ase_awk_t* ase_awk_open (const ase_awk_sysfns_t* sysfns, int* errnum);
|
||||
ase_awk_t* ase_awk_open (
|
||||
const ase_awk_sysfns_t* sysfns, void* custom_data, int* errnum);
|
||||
int ase_awk_close (ase_awk_t* awk);
|
||||
int ase_awk_clear (ase_awk_t* awk);
|
||||
|
||||
void* ase_awk_getcustomdata (ase_awk_t* awk);
|
||||
int ase_awk_geterrnum (ase_awk_t* awk);
|
||||
ase_size_t ase_awk_geterrlin (ase_awk_t* awk);
|
||||
const ase_char_t* ase_awk_geterrmsg (ase_awk_t* awk);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: awk_i.h,v 1.97 2007-01-06 15:45:50 bacon Exp $
|
||||
* $Id: awk_i.h,v 1.98 2007-01-25 14:10:03 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _ASE_AWK_AWKI_H_
|
||||
@ -97,6 +97,7 @@ struct ase_awk_tree_t
|
||||
struct ase_awk_t
|
||||
{
|
||||
ase_awk_sysfns_t sysfns;
|
||||
void* custom_data;
|
||||
|
||||
/* options */
|
||||
int option;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: func.c,v 1.90 2007-01-17 03:45:59 bacon Exp $
|
||||
* $Id: func.c,v 1.91 2007-01-25 14:10:03 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <ase/awk/awk_i.h>
|
||||
@ -411,7 +411,7 @@ static int __bfn_index (
|
||||
ptr = ase_awk_strxnstr (str0, len0, str1, len1);
|
||||
idx = (ptr == ASE_NULL)? -1: (ase_long_t)(ptr - str0);
|
||||
|
||||
if (ase_awk_getoption(run->awk) & ASE_AWK_STRIDXONE) idx = idx + 1;
|
||||
if (ase_awk_getoption(run->awk) & ASE_AWK_STRBASEONE) idx = idx + 1;
|
||||
|
||||
if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str0);
|
||||
if (a1->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str1);
|
||||
@ -513,7 +513,7 @@ static int __bfn_substr (
|
||||
if (n == 1) lcount = (ase_long_t)rcount;
|
||||
}
|
||||
|
||||
if (ase_awk_getoption(run->awk) & ASE_AWK_STRIDXONE) lindex = lindex - 1;
|
||||
if (ase_awk_getoption(run->awk) & ASE_AWK_STRBASEONE) lindex = lindex - 1;
|
||||
if (lindex >= len) lindex = len;
|
||||
else if (lindex < 0) lindex = 0;
|
||||
|
||||
@ -687,7 +687,7 @@ static int __bfn_split (
|
||||
ase_awk_refupval (run, *a1_ref);
|
||||
|
||||
p = str; str_left = str_len;
|
||||
sta = (ase_awk_getoption(run->awk) & ASE_AWK_STRIDXONE)? 1: 0;
|
||||
sta = (ase_awk_getoption(run->awk) & ASE_AWK_STRBASEONE)? 1: 0;
|
||||
num = sta;
|
||||
|
||||
while (p != ASE_NULL)
|
||||
@ -1243,7 +1243,7 @@ static int __bfn_match (
|
||||
if (n == -1) return -1;
|
||||
|
||||
idx = (n == 0)? -1: (ase_long_t)(mat_ptr - str0);
|
||||
if (ase_awk_getoption(run->awk) & ASE_AWK_STRIDXONE) idx = idx + 1;
|
||||
if (ase_awk_getoption(run->awk) & ASE_AWK_STRBASEONE) idx = idx + 1;
|
||||
|
||||
a0 = ase_awk_makeintval (run, idx);
|
||||
if (a0 == ASE_NULL)
|
||||
|
356
ase/awk/jni.c
356
ase/awk/jni.c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: jni.c,v 1.53 2007-01-24 14:21:29 bacon Exp $
|
||||
* $Id: jni.c,v 1.54 2007-01-25 14:10:03 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
@ -49,10 +49,16 @@ static ase_ssize_t __write_source (
|
||||
static ase_ssize_t __process_extio (
|
||||
int cmd, void* arg, ase_char_t* data, ase_size_t count);
|
||||
|
||||
typedef struct awk_data_t awk_data_t;
|
||||
typedef struct srcio_data_t srcio_data_t;
|
||||
typedef struct runio_data_t runio_data_t;
|
||||
typedef struct run_data_t run_data_t;
|
||||
|
||||
struct awk_data_t
|
||||
{
|
||||
int debug;
|
||||
};
|
||||
|
||||
struct srcio_data_t
|
||||
{
|
||||
JNIEnv* env;
|
||||
@ -242,12 +248,19 @@ static void throw_exception (
|
||||
(*env)->DeleteLocalRef (env, except_obj);
|
||||
}
|
||||
|
||||
static jboolean is_debug (ase_awk_t* awk)
|
||||
{
|
||||
awk_data_t* awk_data = (awk_data_t*)ase_awk_getcustomdata (awk);
|
||||
return awk_data->debug? JNI_TRUE: JNI_FALSE;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_open (JNIEnv* env, jobject obj)
|
||||
{
|
||||
jclass class;
|
||||
jfieldID handle;
|
||||
ase_awk_t* awk;
|
||||
ase_awk_sysfns_t sysfns;
|
||||
awk_data_t* awk_data;
|
||||
int opt, errnum;
|
||||
|
||||
memset (&sysfns, 0, sizeof(sysfns));
|
||||
@ -277,9 +290,23 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_open (JNIEnv* env, jobject obj)
|
||||
sysfns.dprintf = awk_dprintf;
|
||||
sysfns.abort = awk_abort;
|
||||
|
||||
awk = ase_awk_open (&sysfns, &errnum);
|
||||
awk_data = (awk_data_t*)malloc (sizeof(awk_data_t));
|
||||
if (awk_data == NULL)
|
||||
{
|
||||
throw_exception (
|
||||
env,
|
||||
ase_awk_geterrstr(errnum),
|
||||
errnum,
|
||||
0);
|
||||
return;
|
||||
}
|
||||
|
||||
memset (awk_data, 0, sizeof(awk_data_t));
|
||||
|
||||
awk = ase_awk_open (&sysfns, awk_data, &errnum);
|
||||
if (awk == NULL)
|
||||
{
|
||||
free (sysfns.custom_data);
|
||||
throw_exception (
|
||||
env,
|
||||
ase_awk_geterrstr(errnum),
|
||||
@ -296,6 +323,9 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_open (JNIEnv* env, jobject obj)
|
||||
/* internal error. no handle field
|
||||
* NoSuchFieldError, ExceptionInitializerError,
|
||||
* OutOfMemoryError might occur */
|
||||
|
||||
ase_awk_close (awk);
|
||||
free (awk_data);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -328,8 +358,10 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_close (JNIEnv* env, jobject obj)
|
||||
if (awk != NULL)
|
||||
{
|
||||
/* the handle is not NULL. close it */
|
||||
void* tmp = ase_awk_getcustomdata (awk);
|
||||
ase_awk_close (awk);
|
||||
(*env)->SetLongField (env, obj, handle, (jlong)0);
|
||||
free (tmp);
|
||||
}
|
||||
}
|
||||
|
||||
@ -503,22 +535,33 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_run (JNIEnv* env, jobject obj)
|
||||
static ase_ssize_t __java_open_source (JNIEnv* env, jobject obj, int mode)
|
||||
{
|
||||
jclass class;
|
||||
jfieldID handle;
|
||||
jmethodID mid;
|
||||
jthrowable thrown;
|
||||
jint ret;
|
||||
ase_awk_t* awk;
|
||||
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
||||
mid = (*env)->GetMethodID (env, class, "openSource", "(I)I");
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
if (handle == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle);
|
||||
|
||||
if (mid == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = (*env)->CallIntMethod (env, obj, mid, mode);
|
||||
thrown = (*env)->ExceptionOccurred (env);
|
||||
if (thrown)
|
||||
if ((*env)->ExceptionOccurred (env))
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
ret = -1;
|
||||
}
|
||||
@ -529,22 +572,33 @@ static ase_ssize_t __java_open_source (JNIEnv* env, jobject obj, int mode)
|
||||
static ase_ssize_t __java_close_source (JNIEnv* env, jobject obj, int mode)
|
||||
{
|
||||
jclass class;
|
||||
jfieldID handle;
|
||||
jmethodID mid;
|
||||
jthrowable thrown;
|
||||
jint ret;
|
||||
ase_awk_t* awk;
|
||||
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
||||
mid = (*env)->GetMethodID (env, class, "closeSource", "(I)I");
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
if (handle == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle);
|
||||
|
||||
if (mid == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = (*env)->CallIntMethod (env, obj, mid, mode);
|
||||
thrown = (*env)->ExceptionOccurred (env);
|
||||
if (thrown)
|
||||
if ((*env)->ExceptionOccurred (env))
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
ret = -1;
|
||||
}
|
||||
@ -556,30 +610,43 @@ static ase_ssize_t __java_read_source (
|
||||
JNIEnv* env, jobject obj, ase_char_t* buf, ase_size_t size)
|
||||
{
|
||||
jclass class;
|
||||
jfieldID handle;
|
||||
jmethodID mid;
|
||||
jcharArray array;
|
||||
jchar* tmp;
|
||||
jint ret, i;
|
||||
jthrowable thrown;
|
||||
ase_awk_t* awk;
|
||||
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
||||
mid = (*env)->GetMethodID (env, class, "readSource", "([CI)I");
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
if (handle == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle);
|
||||
|
||||
if (mid == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
|
||||
array = (*env)->NewCharArray (env, size);
|
||||
if (array == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = (*env)->CallIntMethod (env, obj, mid, array, size);
|
||||
thrown = (*env)->ExceptionOccurred (env);
|
||||
if (thrown)
|
||||
if ((*env)->ExceptionOccurred (env))
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
ret = -1;
|
||||
}
|
||||
@ -596,24 +663,37 @@ static ase_ssize_t __java_write_source (
|
||||
JNIEnv* env, jobject obj, ase_char_t* buf, ase_size_t size)
|
||||
{
|
||||
jclass class;
|
||||
jfieldID handle;
|
||||
jmethodID mid;
|
||||
jcharArray array;
|
||||
jchar* tmp;
|
||||
jint ret;
|
||||
jthrowable thrown;
|
||||
ase_size_t i;
|
||||
ase_awk_t* awk;
|
||||
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
||||
mid = (*env)->GetMethodID (env, class, "writeSource", "([CI)I");
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
if (handle == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle);
|
||||
|
||||
if (mid == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
|
||||
array = (*env)->NewCharArray (env, size);
|
||||
if (array == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -622,10 +702,9 @@ static ase_ssize_t __java_write_source (
|
||||
(*env)->ReleaseCharArrayElements (env, array, tmp, 0);
|
||||
|
||||
ret = (*env)->CallIntMethod (env, obj, mid, array, size);
|
||||
thrown = (*env)->ExceptionOccurred (env);
|
||||
if (thrown)
|
||||
if ((*env)->ExceptionOccurred (env))
|
||||
{
|
||||
if (awk->debug) (*env)->ExceptionDescribe (env);
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
ret = -1;
|
||||
}
|
||||
@ -638,31 +717,51 @@ static ase_ssize_t __java_open_extio (
|
||||
JNIEnv* env, jobject obj, char* meth, ase_awk_extio_t* extio)
|
||||
{
|
||||
jclass class;
|
||||
jfieldID handle;
|
||||
jmethodID mid;
|
||||
jclass extio_class;
|
||||
jmethodID extio_cons;
|
||||
jobject extio_object;
|
||||
jstring extio_name;
|
||||
jint ret;
|
||||
ase_awk_t* awk;
|
||||
|
||||
/* get the method - meth */
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
||||
mid = (*env)->GetMethodID (env, class, meth, "(Lase/awk/Extio;)I");
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
|
||||
if (handle == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle);
|
||||
|
||||
if (mid == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* look for extio class */
|
||||
extio_class = (*env)->FindClass (env, CLASS_EXTIO);
|
||||
if (extio_class == NULL) return -1;
|
||||
if (extio_class == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* get the constructor */
|
||||
extio_cons = (*env)->GetMethodID (
|
||||
env, extio_class, "<init>", "(Ljava/lang/String;IIJ)V");
|
||||
if (extio_cons == NULL)
|
||||
{
|
||||
(*env)->DeleteLocalRef (env, extio_class);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* get the method - meth */
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
mid = (*env)->GetMethodID (env, class, meth, "(Lase/awk/Extio;)I");
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
if (mid == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
(*env)->DeleteLocalRef (env, extio_class);
|
||||
return -1;
|
||||
}
|
||||
@ -690,6 +789,8 @@ static ase_ssize_t __java_open_extio (
|
||||
|
||||
if (extio_name == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
(*env)->DeleteLocalRef (env, extio_class);
|
||||
return -1;
|
||||
}
|
||||
@ -701,6 +802,8 @@ static ase_ssize_t __java_open_extio (
|
||||
(*env)->DeleteLocalRef (env, extio_class);
|
||||
if (extio_object == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
(*env)->DeleteLocalRef (env, extio_name);
|
||||
return -1;
|
||||
}
|
||||
@ -712,6 +815,7 @@ static ase_ssize_t __java_open_extio (
|
||||
if ((*env)->ExceptionOccurred(env))
|
||||
{
|
||||
/* clear the exception */
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
ret = -1;
|
||||
}
|
||||
@ -722,10 +826,12 @@ static ase_ssize_t __java_open_extio (
|
||||
* ret == 0 opened the stream and reached its end
|
||||
* ret == 1 opened the stream. */
|
||||
extio->handle = (*env)->NewGlobalRef (env, extio_object);
|
||||
/* TODO: close it...
|
||||
/*
|
||||
if (extio->handle == NULL)
|
||||
{
|
||||
close it again...
|
||||
// TODO: close the stream ...
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
ret = -1;
|
||||
}
|
||||
*/
|
||||
@ -739,20 +845,33 @@ static ase_ssize_t __java_close_extio (
|
||||
JNIEnv* env, jobject obj, char* meth, ase_awk_extio_t* extio)
|
||||
{
|
||||
jclass class;
|
||||
jfieldID handle;
|
||||
jmethodID mid;
|
||||
jint ret;
|
||||
ase_awk_t* awk;
|
||||
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
||||
mid = (*env)->GetMethodID (env, class, meth, "(Lase/awk/Extio;)I");
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
|
||||
if (handle == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle);
|
||||
if (mid == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = (*env)->CallIntMethod (env, obj, mid, extio->handle);
|
||||
if ((*env)->ExceptionOccurred (env))
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
ret = -1;
|
||||
}
|
||||
@ -773,30 +892,44 @@ static ase_ssize_t __java_read_extio (
|
||||
ase_awk_extio_t* extio, ase_char_t* buf, ase_size_t size)
|
||||
{
|
||||
jclass class;
|
||||
jfieldID handle;
|
||||
jmethodID mid;
|
||||
jcharArray array;
|
||||
jchar* tmp;
|
||||
jint ret, i;
|
||||
jthrowable thrown;
|
||||
ase_awk_t* awk;
|
||||
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
||||
mid = (*env)->GetMethodID (env, class, meth, "(Lase/awk/Extio;[CI)I");
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
|
||||
if (handle == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle);
|
||||
|
||||
if (mid == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
|
||||
array = (*env)->NewCharArray (env, size);
|
||||
if (array == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = (*env)->CallIntMethod (env, obj, mid, extio->handle, array, size);
|
||||
thrown = (*env)->ExceptionOccurred (env);
|
||||
if (thrown)
|
||||
if ((*env)->ExceptionOccurred (env))
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
ret = -1;
|
||||
}
|
||||
@ -817,24 +950,37 @@ static ase_ssize_t __java_write_extio (
|
||||
ase_awk_extio_t* extio, ase_char_t* data, ase_size_t size)
|
||||
{
|
||||
jclass class;
|
||||
jfieldID handle;
|
||||
jmethodID mid;
|
||||
jcharArray array;
|
||||
jchar* tmp;
|
||||
jint ret;
|
||||
ase_size_t i;
|
||||
jthrowable thrown;
|
||||
ase_awk_t* awk;
|
||||
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
||||
mid = (*env)->GetMethodID (env, class, meth, "(Lase/awk/Extio;[CI)I");
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
|
||||
if (handle == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle);
|
||||
if (mid == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
|
||||
array = (*env)->NewCharArray (env, size);
|
||||
if (array == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -843,9 +989,9 @@ static ase_ssize_t __java_write_extio (
|
||||
(*env)->ReleaseCharArrayElements (env, array, tmp, 0);
|
||||
|
||||
ret = (*env)->CallIntMethod (env, obj, mid, extio->handle, array, size);
|
||||
thrown = (*env)->ExceptionOccurred (env);
|
||||
if (thrown)
|
||||
if ((*env)->ExceptionOccurred (env))
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
ret = -1;
|
||||
}
|
||||
@ -859,21 +1005,32 @@ static ase_ssize_t __java_flush_extio (
|
||||
JNIEnv* env, jobject obj, char* meth, ase_awk_extio_t* extio)
|
||||
{
|
||||
jclass class;
|
||||
jfieldID handle;
|
||||
jmethodID mid;
|
||||
jint ret;
|
||||
ase_awk_t* awk;
|
||||
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
||||
mid = (*env)->GetMethodID (env, class, meth, "(Lase/awk/Extio;)I");
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
if (handle == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle);
|
||||
if (mid == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = (*env)->CallIntMethod (env, obj, mid, extio->handle);
|
||||
if ((*env)->ExceptionOccurred (env))
|
||||
{
|
||||
if (awk->debug) (*env)->ExceptionDescribe (env);
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
ret = -1;
|
||||
}
|
||||
@ -885,21 +1042,31 @@ static ase_ssize_t __java_next_extio (
|
||||
JNIEnv* env, jobject obj, char* meth, ase_awk_extio_t* extio)
|
||||
{
|
||||
jclass class;
|
||||
jfieldID handle;
|
||||
jmethodID mid;
|
||||
jint ret;
|
||||
ase_awk_t* awk;
|
||||
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
||||
mid = (*env)->GetMethodID (env, class, meth, "(Lase/awk/Extio;)I");
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
if (handle == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle);
|
||||
if (mid == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = (*env)->CallIntMethod (env, obj, mid, extio->handle);
|
||||
if ((*env)->ExceptionOccurred (env))
|
||||
{
|
||||
if (awk->debug) (*env)->ExceptionDescribe (env);
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
ret = -1;
|
||||
}
|
||||
@ -1017,9 +1184,11 @@ static int __handle_bfn (
|
||||
jobject arg, ret;
|
||||
ase_awk_val_t* v;
|
||||
ase_char_t msg_nomem[MSG_SIZE];
|
||||
ase_awk_t* awk;
|
||||
|
||||
run_data = ase_awk_getruncustomdata (run);
|
||||
nargs = ase_awk_getnargs (run);
|
||||
awk = ase_awk_getrunawk (run);
|
||||
|
||||
env = run_data->env;
|
||||
obj = run_data->obj;
|
||||
@ -1032,7 +1201,7 @@ static int __handle_bfn (
|
||||
if (ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t))
|
||||
{
|
||||
ase_size_t i;
|
||||
jchar* tmp = (jchar*)malloc (ASE_SIZEOF(jchar)*fnl);
|
||||
jchar* tmp = (jchar*) malloc (ASE_SIZEOF(jchar)*fnl);
|
||||
if (tmp == NULL)
|
||||
{
|
||||
ase_awk_setrunerror (
|
||||
@ -1048,6 +1217,7 @@ static int __handle_bfn (
|
||||
|
||||
if (name == NULL)
|
||||
{
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, msg_nomem);
|
||||
return -1;
|
||||
@ -1070,7 +1240,8 @@ static int __handle_bfn (
|
||||
if (method == NULL)
|
||||
{
|
||||
/* if the method is not found, the exception is thrown.
|
||||
* so clear it to prevent it from being thrown */
|
||||
* clear it to prevent it from being thrown */
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EBFNUSER);
|
||||
return -1;
|
||||
@ -1080,9 +1251,8 @@ static int __handle_bfn (
|
||||
env, nargs, run_data->object_class, NULL);
|
||||
if (args == NULL)
|
||||
{
|
||||
if ((*env)->ExceptionOccurred (env))
|
||||
(*env)->ExceptionClear (env);
|
||||
|
||||
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, msg_nomem);
|
||||
return -1;
|
||||
}
|
||||
@ -1145,7 +1315,11 @@ static int __handle_bfn (
|
||||
if (v->type != ASE_AWK_VAL_NIL && arg == NULL)
|
||||
{
|
||||
if ((*env)->ExceptionOccurred (env))
|
||||
{
|
||||
if (is_debug(awk))
|
||||
(*env)->ExceptionDescribe (env);
|
||||
(*env)->ExceptionClear (env);
|
||||
}
|
||||
(*env)->DeleteLocalRef (env, args);
|
||||
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, msg_nomem);
|
||||
return -1;
|
||||
@ -1158,7 +1332,8 @@ static int __handle_bfn (
|
||||
ret = (*env)->CallObjectMethod (env, obj, method, (jlong)run, args);
|
||||
if ((*env)->ExceptionOccurred (env))
|
||||
{
|
||||
if (awk->debug) (*env)->ExceptionDescribe (env);
|
||||
if (is_debug(ase_awk_getrunawk(run)))
|
||||
(*env)->ExceptionDescribe (env);
|
||||
|
||||
(*env)->ExceptionClear (env);
|
||||
(*env)->DeleteLocalRef (env, args);
|
||||
@ -1337,6 +1512,7 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_addbfn (
|
||||
if (ptr == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
|
||||
throw_exception (
|
||||
env,
|
||||
ase_awk_geterrstr(ASE_AWK_ENOMEM),
|
||||
@ -1497,6 +1673,94 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_setmaxdepth (
|
||||
ase_awk_setmaxdepth (awk, ids, depth);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_ase_awk_Awk_getoption (
|
||||
JNIEnv* env, jobject obj)
|
||||
{
|
||||
jclass class;
|
||||
jfieldID handle;
|
||||
ase_awk_t* awk;
|
||||
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
if (handle == NULL)
|
||||
{
|
||||
/* internal error. no handle field
|
||||
* NoSuchFieldError, ExceptionInitializerError,
|
||||
* OutOfMemoryError might occur */
|
||||
return 0;
|
||||
}
|
||||
|
||||
awk = (ase_awk_t*) (*env)->GetLongField (env, obj, handle);
|
||||
return ase_awk_getoption (awk);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_setoption (
|
||||
JNIEnv* env, jobject obj, jint options)
|
||||
{
|
||||
jclass class;
|
||||
jfieldID handle;
|
||||
ase_awk_t* awk;
|
||||
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
if (handle == NULL)
|
||||
{
|
||||
/* internal error. no handle field
|
||||
* NoSuchFieldError, ExceptionInitializerError,
|
||||
* OutOfMemoryError might occur */
|
||||
return;
|
||||
}
|
||||
|
||||
awk = (ase_awk_t*) (*env)->GetLongField (env, obj, handle);
|
||||
ase_awk_setoption (awk, (int)options);
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_ase_awk_Awk_getdebug (
|
||||
JNIEnv* env, jobject obj)
|
||||
{
|
||||
jclass class;
|
||||
jfieldID handle;
|
||||
ase_awk_t* awk;
|
||||
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
if (handle == NULL)
|
||||
{
|
||||
/* internal error. no handle field
|
||||
* NoSuchFieldError, ExceptionInitializerError,
|
||||
* OutOfMemoryError might occur */
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
awk = (ase_awk_t*) (*env)->GetLongField (env, obj, handle);
|
||||
return ((awk_data_t*)ase_awk_getcustomdata(awk))->debug? JNI_TRUE: JNI_FALSE;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_setdebug (
|
||||
JNIEnv* env, jobject obj, jboolean debug)
|
||||
{
|
||||
jclass class;
|
||||
jfieldID handle;
|
||||
ase_awk_t* awk;
|
||||
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
handle = (*env)->GetFieldID (env, class, FIELD_HANDLE, "J");
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
if (handle == NULL)
|
||||
{
|
||||
/* internal error. no handle field
|
||||
* NoSuchFieldError, ExceptionInitializerError,
|
||||
* OutOfMemoryError might occur */
|
||||
return;
|
||||
}
|
||||
|
||||
awk = (ase_awk_t*) (*env)->GetLongField (env, obj, handle);
|
||||
((awk_data_t*)ase_awk_getcustomdata(awk))->debug = debug;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_setfilename (
|
||||
JNIEnv* env, jobject obj, jlong runid, jstring name)
|
||||
{
|
||||
@ -1682,3 +1946,11 @@ JNIEXPORT jobject JNICALL Java_ase_awk_Awk_strtonum (
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jstring JNICALL Java_ase_awk_Awk_valtostr (
|
||||
JNIEnv* env, jobject obj, jlong runid)
|
||||
{
|
||||
// TODO: ...
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: jni.h,v 1.16 2007-01-24 11:54:16 bacon Exp $
|
||||
* $Id: jni.h,v 1.17 2007-01-25 14:10:03 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _ASE_AWK_JNI_H_
|
||||
@ -26,12 +26,25 @@ JNIEXPORT jint JNICALL Java_ase_awk_Awk_getmaxdepth (
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_setmaxdepth (
|
||||
JNIEnv* env, jobject obj, jint ids, jint depth);
|
||||
|
||||
JNIEXPORT jint JNICALL Java_ase_awk_Awk_getoption (
|
||||
JNIEnv* env, jobject obj);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_setoption (
|
||||
JNIEnv* env, jobject obj, jint options);
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_ase_awk_Awk_getdebug (
|
||||
JNIEnv* env, jobject obj);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_setdebug (
|
||||
JNIEnv* env, jobject obj, jboolean debug);
|
||||
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_setfilename (
|
||||
JNIEnv* env, jobject obj, jlong runid, jstring name);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_setofilename (
|
||||
JNIEnv* env, jobject obj, jlong runid, jstring name);
|
||||
|
||||
JNIEXPORT jobject JNICALL Java_ase_awk_Awk_strtonum (
|
||||
JNIEnv* env, jobject obj, jlong runid, jstring str);
|
||||
JNIEXPORT jstring JNICALL Java_ase_awk_Awk_valtostr (
|
||||
JNIEnv* env, jobject obj, jlong runid);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: Awk.cpp,v 1.21 2007-01-17 14:09:49 bacon Exp $
|
||||
* $Id: Awk.cpp,v 1.22 2007-01-25 14:14:55 bacon Exp $
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
@ -51,7 +51,7 @@ CAwk::CAwk ():
|
||||
ASE_AWK_SHIFT |
|
||||
ASE_AWK_EXTIO |
|
||||
ASE_AWK_BLOCKLESS |
|
||||
ASE_AWK_STRIDXONE |
|
||||
ASE_AWK_STRBASEONE |
|
||||
ASE_AWK_STRIPSPACES |
|
||||
ASE_AWK_NEXTOFILE |
|
||||
ASE_AWK_CRLF;
|
||||
@ -442,7 +442,7 @@ HRESULT CAwk::Parse (int* ret)
|
||||
sysfns.dprintf = awk_dprintf;
|
||||
sysfns.abort = awk_abort;
|
||||
|
||||
handle = ase_awk_open (&sysfns, &errnum);
|
||||
handle = ase_awk_open (&sysfns, NULL, &errnum);
|
||||
if (handle == NULL)
|
||||
{
|
||||
errlin = 0;
|
||||
@ -976,17 +976,17 @@ STDMETHODIMP CAwk::put_SupportBlockless(BOOL newVal)
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CAwk::get_StringIndexOne(BOOL *pVal)
|
||||
STDMETHODIMP CAwk::get_StringBaseOne(BOOL *pVal)
|
||||
{
|
||||
if (handle != NULL) option = ase_awk_getoption (handle);
|
||||
*pVal = (option & ASE_AWK_STRIDXONE) == 1;
|
||||
*pVal = (option & ASE_AWK_STRBASEONE) == 1;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CAwk::put_StringIndexOne(BOOL newVal)
|
||||
STDMETHODIMP CAwk::put_StringBaseOne(BOOL newVal)
|
||||
{
|
||||
if (newVal) option = option | ASE_AWK_STRIDXONE;
|
||||
else option = option & ~ASE_AWK_STRIDXONE;
|
||||
if (newVal) option = option | ASE_AWK_STRBASEONE;
|
||||
else option = option & ~ASE_AWK_STRBASEONE;
|
||||
if (handle != NULL) ase_awk_setoption (handle, option);
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: Awk.h,v 1.14 2007-01-17 14:09:49 bacon Exp $
|
||||
* $Id: Awk.h,v 1.15 2007-01-25 14:14:56 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _ASE_COM_AWK_H_
|
||||
@ -127,8 +127,8 @@ public:
|
||||
STDMETHOD(put_Nextofile)(/*[in]*/ BOOL newVal);
|
||||
STDMETHOD(get_StripSpaces)(/*[out, retval]*/ BOOL *pVal);
|
||||
STDMETHOD(put_StripSpaces)(/*[in]*/ BOOL newVal);
|
||||
STDMETHOD(get_StringIndexOne)(/*[out, retval]*/ BOOL *pVal);
|
||||
STDMETHOD(put_StringIndexOne)(/*[in]*/ BOOL newVal);
|
||||
STDMETHOD(get_StringBaseOne)(/*[out, retval]*/ BOOL *pVal);
|
||||
STDMETHOD(put_StringBaseOne)(/*[in]*/ BOOL newVal);
|
||||
STDMETHOD(get_SupportBlockless)(/*[out, retval]*/ BOOL *pVal);
|
||||
STDMETHOD(put_SupportBlockless)(/*[in]*/ BOOL newVal);
|
||||
STDMETHOD(get_SupportExtio)(/*[out, retval]*/ BOOL *pVal);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ase.idl,v 1.15 2007-01-17 14:09:49 bacon Exp $
|
||||
* $Id: ase.idl,v 1.16 2007-01-25 14:14:56 bacon Exp $
|
||||
*/
|
||||
|
||||
import "oaidl.idl";
|
||||
@ -81,10 +81,10 @@ interface IAwk : IDispatch
|
||||
[propput, id(16), helpstring("property SupportBlockless")]
|
||||
HRESULT SupportBlockless([in] BOOL newVal);
|
||||
|
||||
[propget, id(17), helpstring("property StringIndexOne")]
|
||||
HRESULT StringIndexOne([out, retval] BOOL *pVal);
|
||||
[propput, id(17), helpstring("property StringIndexOne")]
|
||||
HRESULT StringIndexOne([in] BOOL newVal);
|
||||
[propget, id(17), helpstring("property StringBaseOne")]
|
||||
HRESULT StringBaseOne([out, retval] BOOL *pVal);
|
||||
[propput, id(17), helpstring("property StringBaseOne")]
|
||||
HRESULT StringBaseOne([in] BOOL newVal);
|
||||
|
||||
[propget, id(18), helpstring("property StripSpaces")]
|
||||
HRESULT StripSpaces([out, retval] BOOL *pVal);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: Awk.java,v 1.21 2007-01-24 14:21:30 bacon Exp $
|
||||
* $Id: Awk.java,v 1.22 2007-01-25 14:14:56 bacon Exp $
|
||||
*/
|
||||
|
||||
package ase.test.awk;
|
||||
@ -88,6 +88,11 @@ public class Awk extends ase.awk.StdAwk
|
||||
{
|
||||
awk = new Awk ();
|
||||
awk.setMaxDepth (Awk.DEPTH_BLOCK_PARSE, 30);
|
||||
awk.setDebug (true);
|
||||
//awk.setDebug (false);
|
||||
|
||||
//awk.setOption (awk.getOption() | OPTION_STRBASEONE);
|
||||
System.out.println ("[" + awk.getOption() + "]");
|
||||
|
||||
awk.parse ();
|
||||
awk.run ();
|
||||
|
@ -4,6 +4,7 @@ import java.applet.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
|
||||
|
||||
public class AwkApplet extends Applet
|
||||
{
|
||||
public void init ()
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: awk.c,v 1.152 2007-01-23 14:23:18 bacon Exp $
|
||||
* $Id: awk.c,v 1.153 2007-01-25 14:14:56 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <ase/awk/awk.h>
|
||||
@ -797,7 +797,7 @@ static int __main (int argc, ase_char_t* argv[])
|
||||
ASE_AWK_EXTIO |
|
||||
/*ASE_AWK_COPROC |*/
|
||||
ASE_AWK_BLOCKLESS |
|
||||
ASE_AWK_STRIDXONE |
|
||||
ASE_AWK_STRBASEONE |
|
||||
ASE_AWK_STRIPSPACES |
|
||||
ASE_AWK_NEXTOFILE;
|
||||
|
||||
@ -872,7 +872,7 @@ static int __main (int argc, ase_char_t* argv[])
|
||||
sysfns.custom_data = &sysfns_data;
|
||||
#endif
|
||||
|
||||
if ((awk = ase_awk_open(&sysfns, &errnum)) == ASE_NULL)
|
||||
if ((awk = ase_awk_open(&sysfns, ASE_NULL, &errnum)) == ASE_NULL)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
HeapDestroy (sysfns_data.heap);
|
||||
|
Loading…
Reference in New Issue
Block a user