From 219ca4fc80ef6491555b403c6884566c8e1deefd Mon Sep 17 00:00:00 2001 From: Rich Barlow <rich@bennellick.com> Date: 周一, 10 4月 2017 18:38:40 +0800 Subject: [PATCH] Don't reference malloc if not using alloc/free --- libscpi/inc/scpi/parser.h | 41 +++++++++++++++++++++++++++++------------ 1 files changed, 29 insertions(+), 12 deletions(-) diff --git a/libscpi/inc/scpi/parser.h b/libscpi/inc/scpi/parser.h index 4cc088d..f1d9e2a 100644 --- a/libscpi/inc/scpi/parser.h +++ b/libscpi/inc/scpi/parser.h @@ -35,27 +35,36 @@ */ #ifndef SCPI_PARSER_H -#define SCPI_PARSER_H +#define SCPI_PARSER_H #include <string.h> #include "scpi/types.h" -#ifdef __cplusplus +#ifdef __cplusplus extern "C" { #endif - void SCPI_Init(scpi_t * context); + void SCPI_Init(scpi_t * context, + const scpi_command_t * commands, + scpi_interface_t * interface, + const scpi_unit_def_t * units, + const char * idn1, const char * idn2, const char * idn3, const char * idn4, + char * input_buffer, size_t input_buffer_length, + scpi_error_t * error_queue_data, int16_t error_queue_size); +#if USE_DEVICE_DEPENDENT_ERROR_INFORMATION && !USE_MEMORY_ALLOCATION_FREE + void SCPI_InitHeap(scpi_t * context, char * error_info_heap, size_t error_info_heap_length); +#endif scpi_bool_t SCPI_Input(scpi_t * context, const char * data, int len); scpi_bool_t SCPI_Parse(scpi_t * context, char * data, int len); size_t SCPI_ResultCharacters(scpi_t * context, const char * data, size_t len); #define SCPI_ResultMnemonic(context, data) SCPI_ResultCharacters((context), (data), strlen(data)) -#define SCPI_ResultUInt8Base SCPI_ResultUInt32Base -#define SCPI_ResultUInt8(c, v) SCPI_ResultUInt32Base((c), (v), 10) -#define SCPI_ResultInt8 SCPI_ResultInt32 -#define SCPI_ResultUInt16Base SCPI_ResultUInt32Base -#define SCPI_ResultUInt16(c, v) SCPI_ResultUInt32Base((c), (v), 10) -#define SCPI_ResultInt16 SCPI_ResultInt32 +#define SCPI_ResultUInt8Base(c, v, b) SCPI_ResultUInt32Base((c), (v), (uint8_t)(b)) +#define SCPI_ResultUInt8(c, v) SCPI_ResultUInt32Base((c), (uint8_t)(v), 10) +#define SCPI_ResultInt8(c, v) SCPI_ResultInt32((c), (int8_t)(v)) +#define SCPI_ResultUInt16Base(c, v, b) SCPI_ResultUInt32Base((c), (uint16_t)(v), (b)) +#define SCPI_ResultUInt16(c, v) SCPI_ResultUInt32Base((c), (uint16_t)(v), 10) +#define SCPI_ResultInt16(c, v) SCPI_ResultInt32((c), (int16_t)(v)) size_t SCPI_ResultUInt32Base(scpi_t * context, uint32_t val, int8_t base); #define SCPI_ResultUInt32(c, v) SCPI_ResultUInt32Base((c), (v), 10) size_t SCPI_ResultInt32(scpi_t * context, int32_t val); @@ -65,6 +74,7 @@ size_t SCPI_ResultFloat(scpi_t * context, float val); size_t SCPI_ResultDouble(scpi_t * context, double val); size_t SCPI_ResultText(scpi_t * context, const char * data); + size_t SCPI_ResultError(scpi_t * context, scpi_error_t * error); size_t SCPI_ResultArbitraryBlock(scpi_t * context, const void * data, size_t len); size_t SCPI_ResultArbitraryBlockHeader(scpi_t * context, size_t len); size_t SCPI_ResultArbitraryBlockData(scpi_t * context, const void * data, size_t len); @@ -107,6 +117,13 @@ scpi_bool_t SCPI_ParamBool(scpi_t * context, scpi_bool_t * value, scpi_bool_t mandatory); scpi_bool_t SCPI_ParamChoice(scpi_t * context, const scpi_choice_def_t * options, int32_t * value, scpi_bool_t mandatory); + scpi_bool_t SCPI_ParamArrayInt32(scpi_t * context, int32_t *data, size_t i_count, size_t *o_count, scpi_array_format_t format, scpi_bool_t mandatory); + scpi_bool_t SCPI_ParamArrayUInt32(scpi_t * context, uint32_t *data, size_t i_count, size_t *o_count, scpi_array_format_t format, scpi_bool_t mandatory); + scpi_bool_t SCPI_ParamArrayInt64(scpi_t * context, int64_t *data, size_t i_count, size_t *o_count, scpi_array_format_t format, scpi_bool_t mandatory); + scpi_bool_t SCPI_ParamArrayUInt64(scpi_t * context, uint64_t *data, size_t i_count, size_t *o_count, scpi_array_format_t format, scpi_bool_t mandatory); + scpi_bool_t SCPI_ParamArrayFloat(scpi_t * context, float *data, size_t i_count, size_t *o_count, scpi_array_format_t format, scpi_bool_t mandatory); + scpi_bool_t SCPI_ParamArrayDouble(scpi_t * context, double *data, size_t i_count, size_t *o_count, scpi_array_format_t format, scpi_bool_t mandatory); + scpi_bool_t SCPI_IsCmd(scpi_t * context, const char * cmd); #if USE_COMMAND_TAGS int32_t SCPI_CmdTag(scpi_t * context); @@ -115,7 +132,7 @@ scpi_bool_t SCPI_CommandNumbers(scpi_t * context, int32_t * numbers, size_t len, int32_t default_value); #if USE_DEPRECATED_FUNCTIONS - // deprecated finction, should be removed later + /* deprecated finction, should be removed later */ #define SCPI_ResultIntBase(context, val, base) SCPI_ResultInt32Base ((context), (val), (base), TRUE) #define SCPI_ResultInt(context, val) SCPI_ResultInt32 ((context), (val)) #define SCPI_ParamToInt(context, parameter, value) SCPI_ParamToInt32((context), (parameter), (value)) @@ -124,9 +141,9 @@ #define SCPI_ParamUnsignedInt(context, value, mandatory) SCPI_ParamUInt32((context), (value), (mandatory)) #endif /* USE_DEPRECATED_FUNCTIONS */ -#ifdef __cplusplus +#ifdef __cplusplus } #endif -#endif /* SCPI_PARSER_H */ +#endif /* SCPI_PARSER_H */ -- Gitblit v1.9.1