From: EMC C. s. <cv...@cv...> - 2006-12-30 23:12:17
|
Modified file emc2/src/emc/rs274ngc/interp_array.cc Full file: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/interp_array.cc?rev=1.12> Difference: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/interp_array.cc.diff?r1=1.11;r2=1.12> Branch: HEAD Log: revision 1.12 date: 2006/12/30 23:12:03; author: lerman; state: Exp; lines: +3 -3 Add support for named parameters. Should not break any existing programs. --- interp_array.cc 2006/11/20 03:46:00 1.11 +++ interp_array.cc 2006/12/30 23:12:03 1.12 @@ -11,9 +11,9 @@ * Copyright (c) 2004 All rights reserved. * * Last change: -* $Revision: 1.11 $ -* $Author: cradek $ -* $Date: 2006/11/20 03:46:00 $ +* $Revision: 1.12 $ +* $Author: lerman $ +* $Date: 2006/12/30 23:12:03 $ ********************************************************************/ #include <unistd.h> #include <stdio.h> Modified file emc2/src/emc/rs274ngc/interp_internal.cc Full file: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/interp_internal.cc?rev=1.13> Difference: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/interp_internal.cc.diff?r1=1.12;r2=1.13> Branch: HEAD Log: revision 1.13 date: 2006/12/30 23:12:03; author: lerman; state: Exp; lines: +3 -3 Add support for named parameters. Should not break any existing programs. --- interp_internal.cc 2006/11/20 03:46:10 1.12 +++ interp_internal.cc 2006/12/30 23:12:03 1.13 @@ -10,9 +10,9 @@ * Copyright (c) 2004 All rights reserved. * * Last change: -* $Revision: 1.12 $ -* $Author: cradek $ -* $Date: 2006/11/20 03:46:10 $ +* $Revision: 1.13 $ +* $Author: lerman $ +* $Date: 2006/12/30 23:12:03 $ ********************************************************************/ #include <unistd.h> #include <stdio.h> Modified file emc2/src/emc/rs274ngc/interp_internal.hh Full file: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/interp_internal.hh?rev=1.19> Difference: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/interp_internal.hh.diff?r1=1.18;r2=1.19> Branch: HEAD Log: revision 1.19 date: 2006/12/30 23:12:03; author: lerman; state: Exp; lines: +16 -3 Add support for named parameters. Should not break any existing programs. --- interp_internal.hh 2006/11/20 03:46:11 1.18 +++ interp_internal.hh 2006/12/30 23:12:03 1.19 @@ -10,9 +10,9 @@ * Copyright (c) 2004 All rights reserved. * * Last change: -* $Revision: 1.18 $ -* $Author: cradek $ -* $Date: 2006/11/20 03:46:11 $ +* $Revision: 1.19 $ +* $Author: lerman $ +* $Date: 2006/12/30 23:12:03 $ ********************************************************************/ #ifndef INTERP_INTERNAL_HH #define INTERP_INTERNAL_HH @@ -258,10 +258,20 @@ typedef block *block_pointer; +#define NAMED_PARAMETERS_ALLOC_UNIT 20 +struct named_parameters_struct { + int named_parameter_alloc_size; + int named_parameter_used_size; +// char *named_parameters[]; + char **named_parameters; + double *named_param_values; + }; + typedef struct context_struct { long position; // location (ftell) in file int sequence_number; // location (line number) in file double saved_params[INTERP_SUB_PARAMS]; + struct named_parameters_struct named_parameters; }context; typedef struct offset_struct { @@ -345,6 +355,9 @@ int parameter_occurrence; // parameter buffer index int parameter_numbers[50]; // parameter number buffer double parameter_values[50]; // parameter value buffer + int named_parameter_occurrence; + char *named_parameters[50]; + double named_parameter_values[50]; ON_OFF percent_flag; // ON means first line was percent sign CANON_PLANE plane; // active plane, XY-, YZ-, or XZ-plane ON_OFF probe_flag; // flag indicating probing done Modified file emc2/src/emc/rs274ngc/interp_o_word.cc Full file: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/interp_o_word.cc?rev=1.3> Difference: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/interp_o_word.cc.diff?r1=1.2;r2=1.3> Branch: HEAD Log: revision 1.3 date: 2006/12/30 23:12:04; author: lerman; state: Exp; lines: +4 -2 Add support for named parameters. Should not break any existing programs. --- interp_o_word.cc 2005/12/08 01:30:34 1.2 +++ interp_o_word.cc 2006/12/30 23:12:04 1.3 @@ -9,9 +9,9 @@ * Copyright 2005 All rights reserved. * * Last change: -* $Revision: 1.2 $ -* $Author: cradek $ -* $Date: 2005/12/08 01:30:34 $ +* $Revision: 1.3 $ +* $Author: lerman $ +* $Date: 2006/12/30 23:12:04 $ ********************************************************************/ #include <unistd.h> @@ -200,6 +200,7 @@ // restore old values of parameters // restore file position from context + free_named_parameters(settings->call_level, settings); settings->call_level--; for(i=0; i<INTERP_SUB_PARAMS; i++) @@ -503,6 +504,7 @@ // restore old values of parameters // restore file position from context + free_named_parameters(settings->call_level, settings); settings->call_level--; for(i=0; i<INTERP_SUB_PARAMS; i++) Modified file emc2/src/emc/rs274ngc/interp_read.cc Full file: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/interp_read.cc?rev=1.14> Difference: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/interp_read.cc.diff?r1=1.13;r2=1.14> Branch: HEAD Log: revision 1.14 date: 2006/12/30 23:12:04; author: lerman; state: Exp; lines: +516 -34 Add support for named parameters. Should not break any existing programs. --- interp_read.cc 2006/11/20 03:46:11 1.13 +++ interp_read.cc 2006/12/30 23:12:04 1.14 @@ -10,9 +10,9 @@ * Copyright (c) 2004 All rights reserved. * * Last change: -* $Revision: 1.13 $ -* $Author: cradek $ -* $Date: 2006/11/20 03:46:11 $ +* $Revision: 1.14 $ +* $Author: lerman $ +* $Date: 2006/12/30 23:12:04 $ ********************************************************************/ #ifndef _GNU_SOURCE #define _GNU_SOURCE @@ -764,7 +764,7 @@ int Interp::read_items(block_pointer block, //!< pointer to a block being filled from the line char *line, //!< string: line of RS274/NGC code being processed - double *parameters) //!< array of system parameters + double *parameters) //!< array of system parameters { static char name[] = "read_items"; int counter; @@ -1109,10 +1109,11 @@ */ -int Interp::read_one_item(char *line, //!< string: line of RS274/NGC code being processed - int *counter, //!< pointer to a counter for position on the line - block_pointer block, //!< pointer to a block being filled from the line - double *parameters) //!< array of system parameters +int Interp::read_one_item( + char *line, //!< string: line of RS274/NGC code being processed + int *counter, //!< pointer to a counter for position on the line + block_pointer block, //!< pointer to a block being filled from the line + double * parameters) /* array of system parameters */ { static char name[] = "read_one_item"; int status; @@ -1468,6 +1469,14 @@ } else if(CMP("call")) { + // we need to NOT evaluate parameters if skipping + // skipping never ends on a "call" + if(_setup.skipping_o != 0) + { + block->o_type = O_none; + return INTERP_OK; + } + *counter += strlen("call"); block->o_type = O_call; @@ -1599,6 +1608,292 @@ return INTERP_OK; } +int Interp::read_name( + char *line, //!< string: line of RS274/NGC code being processed + int *counter, //!< pointer to a counter for position on the line + char *nameBuf) //!< pointer to name to be read +{ + static char name[] = "read_name"; + + int done = 0; + int i; + + CHK(((line[*counter] != '$') && !isalpha(line[*(counter)])), + NCE_BUG_FUNCTION_SHOULD_NOT_HAVE_BEEN_CALLED); + + for(i=0; (i<LINELEN) && (line[*counter]); i++) + { + if((i != 0) && (line[*counter] == '$')) + { + nameBuf[i] = 0; // terminate the name + *counter = (*counter + 1); + done = 1; + break; + } + nameBuf[i] = line[*counter]; + *counter = (*counter + 1); + } + + // !!!KL need to rename the error message and change text + CHK((!done), NCE_NAMED_PARAMETER_NOT_TERMINATED); + + return INTERP_OK; +} + +int Interp::find_named_param( + char *nameBuf, //!< pointer to name to be read + int *status, //!< pointer to return status 1 => found + double *value //!< pointer to value of found parameter + ) +{ Modified file emc2/src/emc/rs274ngc/rs274ngc.hh Full file: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/rs274ngc.hh?rev=1.17> Difference: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/rs274ngc.hh.diff?r1=1.16;r2=1.17> Branch: HEAD Log: revision 1.17 date: 2006/12/30 23:12:05; author: lerman; state: Exp; lines: +13 -4 Add support for named parameters. Should not break any existing programs. --- rs274ngc.hh 2006/12/02 22:44:24 1.16 +++ rs274ngc.hh 2006/12/30 23:12:05 1.17 @@ -10,9 +10,9 @@ * Copyright (c) 2004 All rights reserved. * * Last change: -* $Revision: 1.16 $ -* $Author: cradek $ -* $Date: 2006/12/02 22:44:24 $ +* $Revision: 1.17 $ +* $Author: lerman $ +* $Date: 2006/12/30 23:12:05 $ ********************************************************************/ #ifndef RS274NGC_HH #define RS274NGC_HH @@ -338,16 +338,25 @@ double *parameters); int read_o(char *line, int *counter, block_pointer block, double *parameters); + int free_named_parameters(int level, setup_pointer settings); int read_one_item(char *line, int *counter, block_pointer block, - double *parameters); + double *parameters); int read_operation(char *line, int *counter, int *operation); int read_operation_unary(char *line, int *counter, int *operation); int read_p(char *line, int *counter, block_pointer block, double *parameters); + int store_named_param(char *nameBuf, double value); + int add_named_param(char *nameBuf); + int find_named_param(char *nameBuf, int *status, double *value); + int read_name(char *line, int *counter, char *nameBuf); + int read_named_parameter(char *line, int *counter, double *double_ptr, + double *parameters); int read_parameter(char *line, int *counter, double *double_ptr, double *parameters); int read_parameter_setting(char *line, int *counter, block_pointer block, double *parameters); + int read_named_parameter_setting(char *line, int *counter, + char **param, double *parameters); int read_q(char *line, int *counter, block_pointer block, double *parameters); int read_r(char *line, int *counter, block_pointer block, Modified file emc2/src/emc/rs274ngc/rs274ngc_pre.cc Full file: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/rs274ngc_pre.cc?rev=1.34> Difference: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/rs274ngc_pre.cc.diff?r1=1.33;r2=1.34> Branch: HEAD Log: revision 1.34 date: 2006/12/30 23:12:05; author: lerman; state: Exp; lines: +24 -3 Add support for named parameters. Should not break any existing programs. --- rs274ngc_pre.cc 2006/11/05 19:45:46 1.33 +++ rs274ngc_pre.cc 2006/12/30 23:12:05 1.34 @@ -10,9 +10,9 @@ * Copyright (c) 2004 All rights reserved. * * Last change: -* $Revision: 1.33 $ -* $Author: alex_joni $ -* $Date: 2006/11/05 19:45:46 $ +* $Revision: 1.34 $ +* $Author: lerman $ +* $Date: 2006/12/30 23:12:05 $ ********************************************************************/ /* rs274ngc.cc @@ -93,6 +93,8 @@ #undef LOG_FILE +//#define LOG_FILE "emc_log" + void Interp::doLog(char *fmt, ...) { #ifdef LOG_FILE @@ -218,6 +220,25 @@ _setup.parameters[_setup.parameter_numbers[n]] = _setup.parameter_values[n]; } + + logDebug("_setup.named_parameter_occurrence = %d", + _setup.named_parameter_occurrence); + for (n = 0; n < _setup.named_parameter_occurrence; n++) + { // copy parameter settings from parameter buffer into parameter table + + logDebug("storing param"); + logDebug("storing param:|%s|", _setup.named_parameters[n]); + CHP(store_named_param(_setup.named_parameters[n], + _setup.named_parameter_values[n])); + + // free the string + logDebug("freeing param[%d]:|%s|:0x%x", n, _setup.named_parameters[n], + _setup.named_parameters[n]); + free(_setup.named_parameters[n]); + } + + _setup.named_parameter_occurrence = 0; + if (_setup.line_length != 0) { /* line not blank */ status = execute_block(&(_setup.block1), &_setup); write_g_codes(&(_setup.block1), &_setup); Modified file emc2/src/emc/rs274ngc/rs274ngc_return.hh Full file: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/rs274ngc_return.hh?rev=1.19> Difference: <http://cvs.linuxcnc.org/cvs/emc2/src/emc/rs274ngc/rs274ngc_return.hh.diff?r1=1.18;r2=1.19> Branch: HEAD Log: revision 1.19 date: 2006/12/30 23:12:05; author: lerman; state: Exp; lines: +11 -4 Add support for named parameters. Should not break any existing programs. --- rs274ngc_return.hh 2006/11/20 03:46:14 1.18 +++ rs274ngc_return.hh 2006/12/30 23:12:05 1.19 @@ -10,9 +10,9 @@ * Copyright (c) 2004 All rights reserved. * * Last change: -* $Revision: 1.18 $ -* $Author: cradek $ -* $Date: 2006/11/20 03:46:14 $ +* $Revision: 1.19 $ +* $Author: lerman $ +* $Date: 2006/12/30 23:12:05 $ ********************************************************************/ #ifndef RS274NGC_RETURN_H #define RS274NGC_RETURN_H @@ -242,6 +242,13 @@ #define NCE_MULTIPLE_E_WORDS_ON_ONE_LINE 221 #define NCE_E_WORD_WITH_NO_G76_TO_USE_IT 222 -#define RS274NGC_MAX_ERROR 223 +#define NCE_NAMED_PARAMETER_NOT_TERMINATED 223 +#define NCE_NAMED_PARAMETER_NOT_DEFINED 224 +#define NCE_NAMED_OWORD_NOT_TERMINATED 225 +#define NCE_NAMED_OWORD_NOT_DEFINED 226 + +#define NCE_OUT_OF_MEMORY 228 + +#define RS274NGC_MAX_ERROR 229 #endif /* RS274NGC_RETURN_H */ |