This commit is contained in:
2008-06-29 03:38:00 +00:00
parent cbc48145c4
commit 07b451aedb
9 changed files with 67 additions and 24 deletions

View File

@ -1,5 +1,5 @@
/*
* $Id: Awk.cpp 129 2008-03-13 05:45:36Z baconevi $
* $Id: Awk.cpp 232 2008-06-28 09:38:00Z baconevi $
*
* {License}
*/
@ -1158,13 +1158,15 @@ int Awk::open ()
prmfns.misc.dprintf = dprintf;
prmfns.misc.custom_data = this;
awk = ase_awk_open (&prmfns, this);
awk = ase_awk_open (&prmfns);
if (awk == ASE_NULL)
{
setError (ERR_NOMEM);
return -1;
}
ase_awk_setassocdata (awk, this);
functionMap = ase_map_open (
this, 512, 70, freeFunctionMapValue, ASE_NULL,
ase_awk_getmmgr(awk));

View File

@ -1,5 +1,5 @@
/*
* $Id: awk.c 197 2008-06-09 06:24:10Z baconevi $
* $Id: awk.c 232 2008-06-28 09:38:00Z baconevi $
*
* {License}
*/
@ -24,7 +24,7 @@ static void free_bfn (void* awk, void* afn);
ase_awk_seterror ((awk), (code), (line), &errarg, 1); \
} while (0)
ase_awk_t* ase_awk_open (const ase_awk_prmfns_t* prmfns, void* custom_data)
ase_awk_t* ase_awk_open (const ase_awk_prmfns_t* prmfns)
{
ase_awk_t* awk;
@ -224,7 +224,7 @@ ase_awk_t* ase_awk_open (const ase_awk_prmfns_t* prmfns, void* custom_data)
ase_awk_setmaxdepth (awk, ASE_AWK_DEPTH_REX_BUILD, 0);
ase_awk_setmaxdepth (awk, ASE_AWK_DEPTH_REX_MATCH, 0);
awk->custom_data = custom_data;
awk->assoc_data = ASE_NULL;
if (ase_awk_initglobals (awk) == -1)
{
@ -375,6 +375,16 @@ int ase_awk_clear (ase_awk_t* awk)
return 0;
}
void ase_awk_setassocdata (ase_awk_t* awk, void* data)
{
awk->assoc_data = data;
}
void* ase_awk_getassocdata (ase_awk_t* awk)
{
return awk->assoc_data;
}
int ase_awk_getoption (ase_awk_t* awk)
{
return awk->option;
@ -390,11 +400,6 @@ ase_mmgr_t* ase_awk_getmmgr (ase_awk_t* awk)
return &awk->prmfns.mmgr;
}
void* ase_awk_getcustomdata (ase_awk_t* awk)
{
return awk->custom_data;
}
void ase_awk_stopall (ase_awk_t* awk)
{
awk->stopall = ASE_TRUE;

View File

@ -1,5 +1,5 @@
/*
* $Id: awk_i.h 192 2008-06-06 10:33:44Z baconevi $
* $Id: awk_i.h 232 2008-06-28 09:38:00Z baconevi $
*
* {License}
*/
@ -75,7 +75,7 @@ struct ase_awk_tree_t
struct ase_awk_t
{
ase_awk_prmfns_t prmfns;
void* custom_data;
void* assoc_data;
/* options */
int option;

View File

@ -1,5 +1,5 @@
/*
* $Id: jni.c 115 2008-03-03 11:13:15Z baconevi $
* $Id: jni.c 232 2008-06-28 09:38:00Z baconevi $
*
* {License}
*/
@ -407,7 +407,7 @@ static void throw_exception (
static jboolean is_debug (ase_awk_t* awk)
{
awk_data_t* awk_data = (awk_data_t*)ase_awk_getcustomdata (awk);
awk_data_t* awk_data = (awk_data_t*)ase_awk_getassocdata (awk);
return awk_data->debug? JNI_TRUE: JNI_FALSE;
}
@ -490,7 +490,7 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_open (JNIEnv* env, jobject obj)
awk_data->heap = heap;
#endif
awk = ase_awk_open (&prmfns, awk_data);
awk = ase_awk_open (&prmfns);
if (awk == ASE_NULL)
{
#if defined(_WIN32) && defined(__DMC__)
@ -503,6 +503,8 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_open (JNIEnv* env, jobject obj)
return;
}
ase_awk_setassocdata (awk, awk_data);
class = (*env)->GetObjectClass(env, obj);
handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J");
(*env)->DeleteLocalRef (env, class);
@ -551,7 +553,7 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_close (JNIEnv* env, jobject obj, jlong a
OutputDebugStringW (L"<<<CLOSING AWK>>>\n");
#endif
tmp = (awk_data_t*)ase_awk_getcustomdata (awk);
tmp = (awk_data_t*)ase_awk_getassocdata (awk);
#if defined(_WIN32) && defined(__DMC__)
HANDLE heap = tmp->heap;
#endif
@ -1938,7 +1940,7 @@ JNIEXPORT jboolean JNICALL Java_ase_awk_Awk_getdebug (JNIEnv* env, jobject obj,
{
ase_awk_t* awk = (ase_awk_t*)awkid;
EXCEPTION_ON_ASE_NULL_AWK_RETURNING (env, awk, JNI_FALSE);
return ((awk_data_t*)ase_awk_getcustomdata(awk))->debug? JNI_TRUE: JNI_FALSE;
return ((awk_data_t*)ase_awk_getassocdata(awk))->debug? JNI_TRUE: JNI_FALSE;
}
JNIEXPORT void JNICALL Java_ase_awk_Awk_setdebug (
@ -1946,7 +1948,7 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_setdebug (
{
ase_awk_t* awk = (ase_awk_t*)awkid;
EXCEPTION_ON_ASE_NULL_AWK (env, awk);
((awk_data_t*)ase_awk_getcustomdata(awk))->debug = debug;
((awk_data_t*)ase_awk_getassocdata(awk))->debug = debug;
}
JNIEXPORT jstring JNICALL Java_ase_awk_Awk_getword (