Commit ebcccb75 authored by Claes Sjofors's avatar Claes Sjofors

Script, bugfix in double right parenthesis and multiple execution of single line command

parent c9fedbbf
This diff is collapsed.
......@@ -32,6 +32,7 @@ extern "C" {
#define CCM_DECL_UNKNOWN 4
#define K_STRING_SIZE 400
#define K_LINE_SIZE 400
typedef long int ccm_tInt;
typedef float ccm_tFloat;
......@@ -40,24 +41,159 @@ typedef char ccm_tString[K_STRING_SIZE];
#define ccm_cIntFormat "%ld"
typedef struct s_arg_ {
char value_name[80];
int value_decl;
ccm_tInt value_int;
ccm_tFloat value_float;
ccm_tString value_string;
int value_type;
int var_decl;
char var_name[32];
long int value_returned;
struct s_arg_ *next;
char value_name[80];
int value_decl;
ccm_tInt value_int;
ccm_tFloat value_float;
ccm_tString value_string;
int value_type;
int var_decl;
char var_name[32];
long int value_returned;
struct s_arg_ *next;
} ccm_sArg;
typedef int (* ccm_tFunc) ( void *, ccm_sArg *, int, int *, ccm_tFloat *,
ccm_tInt *, char *);
typedef struct ccm_sLine_ {
char line[K_LINE_SIZE];
int row;
int type;
struct ccm_sLine_ *next;
struct ccm_sLine_ *prev;
} ccm_sLine;
typedef struct s_intvar_ {
char name[32];
ccm_tInt *value;
int elements;
int array;
struct s_intvar_ *next;
} ccm_sIntvar;
typedef struct s_floatvar_ {
char name[32];
ccm_tFloat *value;
int elements;
int array;
struct s_floatvar_ *next;
} ccm_sFloatvar;
typedef struct s_stringvar_ {
char name[32];
char *value;
int elements;
int array;
struct s_stringvar_ *next;
} ccm_sStringvar;
typedef struct ccm_sOperand_ {
int type;
char name[100];
int value_decl;
ccm_tInt value_int;
ccm_tFloat value_float;
ccm_tString value_string;
int result_decl;
ccm_tInt result_int;
ccm_tFloat result_float;
ccm_tString result_string;
int result_done;
int o_operator;
int local_type;
int local_operator;
int prio;
int parlevel;
int done;
int orig_type;
ccm_tFunc func;
struct ccm_sOperand_ *next;
struct ccm_sOperand_ *prev;
} ccm_sOperand;
typedef struct ccm_sFunc_ {
char name[32];
int decl;
ccm_sLine *start_line;
ccm_sLine *end_line;
struct ccm_sFunc_ *next;
} ccm_sFunc;
typedef struct {
ccm_sLine *main_start_line;
ccm_sLine *main_end_line;
int verify;
int current_row;
int error_row;
char error_line[160];
int break_before;
int (* externcmd_func) ( char *, void *);
int (* deffilename_func) ( char *, char *, void *);
int (* errormessage_func) ( char *, int, void *);
ccm_sFunc *func_list;
ccm_sIntvar *gblint_list;
ccm_sFloatvar *gblfloat_list;
ccm_sStringvar *gblstring_list;
ccm_sLine *line_list;
void *main_funcctx;
int extfunc_return_mode;
char extfunc_line[256];
char last_fgets[1024];
ccm_sArg *main_arg_list;
int main_arg_count;
void *client_data;
} *ccm_tFileCtx;
typedef struct {
char line[256];
ccm_tFileCtx filectx;
int pos;
int delim_pos;
int state;
int level;
int num_decl;
int num_neg;
char msg[80];
int last_type;
ccm_sOperand *curr_operand;
ccm_sOperand *list;
} *ccm_tRowCtx;
typedef struct {
char msg[80];
ccm_tFileCtx filectx;
ccm_sIntvar *locint_list;
ccm_sFloatvar *locfloat_list;
ccm_sStringvar *locstring_list;
ccm_sOperand *list;
ccm_sLine *current_line;
int is_main;
int for_init;
ccm_sArg *arg_list;
int arg_count;
} *ccm_tFuncCtx;
typedef struct {
char name[32];
int (* sysfunc) ( void *, ccm_sArg *, int, int *, ccm_tFloat *,
ccm_tInt *, char *);
} ccm_sSysFunc;
typedef struct {
ccm_tFuncCtx funcctx;
int result_decl;
ccm_tFloat result_float;
ccm_tInt result_int;
char result_string;
} *ccm_tSingleLineCtx;
int ccm_register_function(
const char *name,
int (* sysfunc) ( void *, ccm_sArg *, int, int *, ccm_tFloat *,
ccm_tInt *, char *)
const char *name,
int (* sysfunc) ( void *, ccm_sArg *, int, int *, ccm_tFloat *,
ccm_tInt *, char *)
);
int ccm_file_exec(
......@@ -112,6 +248,21 @@ int ccm_ref_external_var(
void **valuep
);
int ccm_singleline_init(
ccm_tSingleLineCtx *ctx,
char *line,
int (* errormessage_func) ( char *, int, void *)
);
int ccm_singleline_exec(
ccm_tSingleLineCtx ctx
);
void ccm_singleline_free(
ccm_tSingleLineCtx ctx
);
#ifdef __cplusplus
}
#endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment