Partially fixed the critical bug mentioned in the previous revision.
- runcbs->on_enter() is introduced and called when all globals variables are ready. - changed runcbs->on_start() to return an integer - run_main() is still under reconstruction. currently it only supports the BEGIN/pattern action/END block exection.
This commit is contained in:
@ -1055,9 +1055,10 @@ protected:
|
||||
/*@}*/
|
||||
|
||||
// run-time callbacks
|
||||
virtual void onRunStart (Run& run);
|
||||
virtual bool onRunStart (Run& run);
|
||||
virtual void onRunEnd (Run& run);
|
||||
virtual void onRunReturn (Run& run, const Argument& ret);
|
||||
virtual bool onRunEnter (Run& run);
|
||||
virtual void onRunExit (Run& run, const Argument& ret);
|
||||
virtual void onRunStatement (Run& run, size_t line);
|
||||
|
||||
// primitive handlers
|
||||
@ -1089,9 +1090,10 @@ protected:
|
||||
run_t* run, const char_t* name, size_t len);
|
||||
static void freeFunctionMapValue (map_t* map, void* dptr, size_t dlen);
|
||||
|
||||
static void onRunStart (run_t* run, void* data);
|
||||
static int onRunStart (run_t* run, void* data);
|
||||
static void onRunEnd (run_t* run, int errnum, void* data);
|
||||
static void onRunReturn (run_t* run, val_t* ret, void* data);
|
||||
static int onRunEnter (run_t* run, void* data);
|
||||
static void onRunExit (run_t* run, val_t* ret, void* data);
|
||||
static void onRunStatement (run_t* run, size_t line, void* data);
|
||||
|
||||
static void* allocMem (void* data, size_t n);
|
||||
@ -1122,7 +1124,7 @@ private:
|
||||
Awk (const Awk&);
|
||||
Awk& operator= (const Awk&);
|
||||
|
||||
void triggerOnRunStart (Run& run);
|
||||
bool triggerOnRunStart (Run& run);
|
||||
|
||||
mmgr_t mmgr;
|
||||
ccls_t ccls;
|
||||
|
@ -42,7 +42,6 @@ typedef struct qse_awk_prmfns_t qse_awk_prmfns_t;
|
||||
typedef struct qse_awk_srcios_t qse_awk_srcios_t;
|
||||
typedef struct qse_awk_runios_t qse_awk_runios_t;
|
||||
typedef struct qse_awk_runcbs_t qse_awk_runcbs_t;
|
||||
typedef struct qse_awk_runarg_t qse_awk_runarg_t;
|
||||
typedef struct qse_awk_rexfns_t qse_awk_rexfns_t;
|
||||
|
||||
typedef qse_real_t (*qse_awk_pow_t) (void* data, qse_real_t x, qse_real_t y);
|
||||
@ -109,13 +108,16 @@ struct qse_awk_runios_t
|
||||
|
||||
struct qse_awk_runcbs_t
|
||||
{
|
||||
void (*on_start) (
|
||||
int (*on_start) (
|
||||
qse_awk_run_t* run, void* data);
|
||||
|
||||
int (*on_enter) (
|
||||
qse_awk_run_t* run, void* data);
|
||||
|
||||
void (*on_statement) (
|
||||
qse_awk_run_t* run, qse_size_t line, void* data);
|
||||
|
||||
void (*on_return) (
|
||||
void (*on_exit) (
|
||||
qse_awk_run_t* run, qse_awk_val_t* ret, void* data);
|
||||
|
||||
void (*on_end) (
|
||||
@ -124,12 +126,6 @@ struct qse_awk_runcbs_t
|
||||
void* data;
|
||||
};
|
||||
|
||||
struct qse_awk_runarg_t
|
||||
{
|
||||
qse_char_t* ptr;
|
||||
qse_size_t len;
|
||||
};
|
||||
|
||||
struct qse_awk_rexfns_t
|
||||
{
|
||||
void* (*build) (
|
||||
@ -888,7 +884,7 @@ int qse_awk_runsimple (
|
||||
int qse_awk_run (
|
||||
qse_awk_t* awk, const qse_char_t* main,
|
||||
qse_awk_runios_t* runios, qse_awk_runcbs_t* runcbs,
|
||||
qse_awk_runarg_t* runarg, void* data);
|
||||
const qse_cstr_t* runarg, void* data);
|
||||
|
||||
void qse_awk_stop (qse_awk_run_t* run);
|
||||
void qse_awk_stopall (qse_awk_t* awk);
|
||||
|
Reference in New Issue
Block a user