MtFmt 1.0.0
MtFmt is a format library on embed. system and wrote by pure C.
载入中...
搜索中...
未找到
结构体 | 宏定义 | 类型定义 | 枚举 | 函数
mm_parser.h 文件参考

分析器 更多...

#include "mm_cfg.h"
#include "mm_result.h"
#include "mm_string.h"
#include "mm_type.h"

浏览源代码.

结构体

struct  tagMStrFmtValueFormatSpec
 一般变量的格式化描述标记 更多...
 
struct  tagMStrFmtChronoValueFormatSpec
 日期和时间的值的格式化描述 更多...
 
struct  tagMStrFmtChronoItemFormatSpec
 时间的格式化描述标记的项 更多...
 
struct  tagMStrFmtChronoFormatSpec
 时间的格式化描述标记 更多...
 
union  tagMStrFmtFormatSpecUnion
 格式化标记 更多...
 
struct  tagMStrFmtFormatSpec
 格式化标记 更多...
 
struct  tagMStrFmtFormatDescript
 分析器的格式化标记 更多...
 
struct  tagMStrFmtArgProperty
 解析过程中的参数额外属性 更多...
 
struct  tagMStrFmtParseResultValueResult
 解析结果的值, 表示一个值的解析结果 更多...
 
struct  tagMStrFmtParseResultArrayResult
 解析结果的值, 表示一个数组的解析结果 更多...
 
union  tagMStrFmtParseResultValue
 解析结果的值 更多...
 
struct  tagMStrFmtParseResult
 解析器结果 更多...
 

宏定义

#define MFMT_PARSER_STATE_SIZE   48
 sizeof(MStrFmtParserState)
 
#define MFMT_PLACE_MAX_NUM   16
 格式化最多支持的参数个数
 
#define MFMT_PLACE_MAX_WIDTH   32
 格式化最多支持的WIDTH
 
#define MFMT_CHRONO_PLACE_MAX_NUM   8
 日期和时间最多支持的placement数目
 

类型定义

typedef struct tagMStrFmtParserState MStrFmtParserState
 分析器状态
 
typedef enum tagMStrFmtArgClass MStrFmtArgClass
 指定参数的分类
 
typedef enum tagMStrFmtArgType MStrFmtArgType
 格式化参数的类型
 
typedef enum tagMStrFmtAlign MStrFmtAlign
 格式化参数的对齐方式
 
typedef enum tagMStrFmtSignDisplay MStrFmtSignDisplay
 格式化值时候的符号显示方式
 
typedef enum tagMStrFmtFormatType MStrFmtFormatType
 进行格式化的方式
 
typedef struct tagMStrFmtValueFormatSpec MStrFmtValueFormatSpec
 一般变量的格式化描述标记
 
typedef struct tagMStrFmtChronoValueFormatSpec MStrFmtChronoValueFormatSpec
 日期和时间的值的格式化描述
 
typedef enum tagMStrFmtChronoValueType MStrFmtChronoValueType
 日期和时间的值类型
 
typedef struct tagMStrFmtChronoItemFormatSpec MStrFmtChronoItemFormatSpec
 时间的格式化描述标记的项
 
typedef struct tagMStrFmtChronoFormatSpec MStrFmtChronoFormatSpec
 时间的格式化描述标记
 
typedef union tagMStrFmtFormatSpecUnion MStrFmtFormatSpecUnion
 格式化标记
 
typedef struct tagMStrFmtFormatSpec MStrFmtFormatSpec
 格式化标记
 
typedef struct tagMStrFmtFormatDescript MStrFmtFormatDescript
 分析器的格式化标记
 
typedef struct tagMStrFmtArgProperty MStrFmtArgProperty
 解析过程中的参数额外属性
 
typedef struct tagMStrFmtParseResultValueResult MStrFmtParseResultValueResult
 解析结果的值, 表示一个值的解析结果
 
typedef struct tagMStrFmtParseResultArrayResult MStrFmtParseResultArrayResult
 解析结果的值, 表示一个数组的解析结果
 
typedef union tagMStrFmtParseResultValue MStrFmtParseResultValue
 解析结果的值
 
typedef struct tagMStrFmtParseResult MStrFmtParseResult
 解析器结果
 

枚举

enum  tagMStrFmtArgClass { MStrFmtArgClass_Value , MStrFmtArgClass_Array , MStrFmtArgClass_EscapeChar }
 指定参数的分类 更多...
 
enum  tagMStrFmtArgType {
  MStrFmtArgType_Unknown , MStrFmtArgType_Int8 , MStrFmtArgType_Int16 , MStrFmtArgType_Int32 ,
  MStrFmtArgType_Uint8 , MStrFmtArgType_Uint16 , MStrFmtArgType_Uint32 , MStrFmtArgType_CString ,
  MStrFmtArgType_Time , MStrFmtArgType_QuantizedValue , MStrFmtArgType_QuantizedUnsignedValue , MStrFmtArgType_Array_Bit = 0x1000 ,
  MStrFmtArgType_Array_Int8 , MStrFmtArgType_Array_Int16 , MStrFmtArgType_Array_Int32 , MStrFmtArgType_Array_Uint8 ,
  MStrFmtArgType_Array_Uint16 , MStrFmtArgType_Array_Uint32 , MStrFmtArgType_Array_CString , MStrFmtArgType_Array_Time ,
  MStrFmtArgType_Array_QuantizedValue , MStrFmtArgType_Array_QuantizedUnsignedValue
}
 格式化参数的类型 更多...
 
enum  tagMStrFmtAlign { MStrFmtAlign_Left , MStrFmtAlign_Center , MStrFmtAlign_Right }
 格式化参数的对齐方式 更多...
 
enum  tagMStrFmtSignDisplay { MStrFmtSignDisplay_Always , MStrFmtSignDisplay_NegOnly , MStrFmtSignDisplay_Neg_Or_Space }
 格式化值时候的符号显示方式 更多...
 
enum  tagMStrFmtFormatType {
  MStrFmtFormatType_UnSpec , MStrFmtFormatType_Binary , MStrFmtFormatType_Oct , MStrFmtFormatType_Deciaml ,
  MStrFmtFormatType_Hex , MStrFmtFormatType_Hex_UpperCase , MStrFmtFormatType_Hex_WithPrefix , MStrFmtFormatType_Hex_UpperCase_WithPrefix
}
 进行格式化的方式 更多...
 
enum  tagMStrFmtChronoValueType {
  MStrFmtChronoValueType_Year , MStrFmtChronoValueType_Month , MStrFmtChronoValueType_Day , MStrFmtChronoValueType_Hour24 ,
  MStrFmtChronoValueType_Minute , MStrFmtChronoValueType_Second , MStrFmtChronoValueType_SubSecond , MStrFmtChronoValueType_Hour ,
  MStrFmtChronoValueType_Week
}
 日期和时间的值类型 更多...
 

函数

 mstr_fmt_parser_init (byte_t *mem, const char *inp, MStrFmtParserState **ppstate)
 初始化Parser状态
 
 mstr_fmt_parse_goal (MStrFmtParserState *state, MStrFmtParseResult *result)
 解析 replacement field
 
 mstr_fmt_parser_end_position (MStrFmtParserState *state, const char *pbeg)
 计算parser停止的位置
 

详细描述

分析器

作者
向阳 (hinat.nosp@m.a.ho.nosp@m.shino.nosp@m.@fox.nosp@m.mail..nosp@m.com)
版本
1.0
日期
2023-03-21

宏定义说明

◆ MFMT_CHRONO_PLACE_MAX_NUM

#define MFMT_CHRONO_PLACE_MAX_NUM   8

日期和时间最多支持的placement数目

◆ MFMT_PARSER_STATE_SIZE

#define MFMT_PARSER_STATE_SIZE   48

sizeof(MStrFmtParserState)

◆ MFMT_PLACE_MAX_NUM

#define MFMT_PLACE_MAX_NUM   16

格式化最多支持的参数个数

◆ MFMT_PLACE_MAX_WIDTH

#define MFMT_PLACE_MAX_WIDTH   32

格式化最多支持的WIDTH

类型定义说明

◆ MStrFmtAlign

格式化参数的对齐方式

◆ MStrFmtArgClass

指定参数的分类

◆ MStrFmtArgProperty

解析过程中的参数额外属性

注解
对于量化值, a表示量化精度, 对于定点数, a表示整数部分精度, b表示小数部分精度

◆ MStrFmtArgType

格式化参数的类型

◆ MStrFmtChronoFormatSpec

时间的格式化描述标记

◆ MStrFmtChronoItemFormatSpec

时间的格式化描述标记的项

◆ MStrFmtChronoValueFormatSpec

日期和时间的值的格式化描述

◆ MStrFmtChronoValueType

日期和时间的值类型

◆ MStrFmtFormatDescript

分析器的格式化标记

◆ MStrFmtFormatSpec

格式化标记

◆ MStrFmtFormatSpecUnion

格式化标记

◆ MStrFmtFormatType

进行格式化的方式

◆ MStrFmtParseResult

解析器结果

◆ MStrFmtParseResultArrayResult

解析结果的值, 表示一个数组的解析结果

◆ MStrFmtParseResultValue

解析结果的值

◆ MStrFmtParseResultValueResult

解析结果的值, 表示一个值的解析结果

◆ MStrFmtParserState

分析器状态

◆ MStrFmtSignDisplay

格式化值时候的符号显示方式

◆ MStrFmtValueFormatSpec

一般变量的格式化描述标记

枚举类型说明

◆ tagMStrFmtAlign

格式化参数的对齐方式

枚举值
MStrFmtAlign_Left 

左对齐, 在右侧填充内容

MStrFmtAlign_Center 

居中, 在两侧填充内容

MStrFmtAlign_Right 

右对齐, 在左侧填充内容

◆ tagMStrFmtArgClass

指定参数的分类

枚举值
MStrFmtArgClass_Value 

表示该位置是一个值

MStrFmtArgClass_Array 

表示该位置是一个数组

MStrFmtArgClass_EscapeChar 

表示该位置是一个转义字符

◆ tagMStrFmtArgType

格式化参数的类型

枚举值
MStrFmtArgType_Unknown 

未知参数类型

MStrFmtArgType_Int8 

8位整数值

MStrFmtArgType_Int16 

16位整数值

MStrFmtArgType_Int32 

32位整数值

MStrFmtArgType_Uint8 

无符号8位整数值

MStrFmtArgType_Uint16 

无符号16位整数值

MStrFmtArgType_Uint32 

无符号32位整数值

MStrFmtArgType_CString 

C字符串指针

MStrFmtArgType_Time 

时间

MStrFmtArgType_QuantizedValue 

量化值

MStrFmtArgType_QuantizedUnsignedValue 

无符号量化值

MStrFmtArgType_Array_Bit 

Array type, 要和上面的值顺序一致

MStrFmtArgType_Array_Int8 

8位整数数组(const int8_t*)

MStrFmtArgType_Array_Int16 

16位整数数组(const int16_t*)

MStrFmtArgType_Array_Int32 

32位整数数组(const int32_t*)

MStrFmtArgType_Array_Uint8 

无符号8位整数数组(const uint8_t*)

MStrFmtArgType_Array_Uint16 

无符号16位整数数组(const uint16_t*)

MStrFmtArgType_Array_Uint32 

无符号32位整数数组(const uint32_t*)

MStrFmtArgType_Array_CString 

C字符串指针组成的数组

MStrFmtArgType_Array_Time 

时间结构体组成的数组

MStrFmtArgType_Array_QuantizedValue 

量化值数组

MStrFmtArgType_Array_QuantizedUnsignedValue 

无符号量化值数组

◆ tagMStrFmtChronoValueType

日期和时间的值类型

枚举值
MStrFmtChronoValueType_Year 

MStrFmtChronoValueType_Month 

MStrFmtChronoValueType_Day 

MStrFmtChronoValueType_Hour24 

时 (24h制)

MStrFmtChronoValueType_Minute 

MStrFmtChronoValueType_Second 

MStrFmtChronoValueType_SubSecond 

子秒

MStrFmtChronoValueType_Hour 

时 (12h制)

MStrFmtChronoValueType_Week 

星期

◆ tagMStrFmtFormatType

进行格式化的方式

枚举值
MStrFmtFormatType_UnSpec 

未指定的转换方式

MStrFmtFormatType_Binary 

二进制值字符串

MStrFmtFormatType_Oct 

八进制值字符串

MStrFmtFormatType_Deciaml 

十进制值字符串

MStrFmtFormatType_Hex 

小写十六进制值字符串

MStrFmtFormatType_Hex_UpperCase 

大写十六进制值字符串

MStrFmtFormatType_Hex_WithPrefix 

小写十六进制值, 带"0x"前缀

MStrFmtFormatType_Hex_UpperCase_WithPrefix 

大写十六进制值, 带"0X"前缀

◆ tagMStrFmtSignDisplay

格式化值时候的符号显示方式

枚举值
MStrFmtSignDisplay_Always 

总是显示符号

MStrFmtSignDisplay_NegOnly 

仅在值小于0时显示符号

MStrFmtSignDisplay_Neg_Or_Space 

在小于0时显示负号, 大于0时显示为空格

函数说明

◆ mstr_fmt_parse_goal()

mstr_fmt_parse_goal ( MStrFmtParserState state,
MStrFmtParseResult result 
)

解析 replacement field

参数
[in,out]stateParser状态
[out]resultParser结果
返回
mstr_result_t: parser结果

◆ mstr_fmt_parser_end_position()

mstr_fmt_parser_end_position ( MStrFmtParserState state,
const char *  pbeg 
)

计算parser停止的位置

参数
stateparser状态
pbegparser init时候传进去的inp指针

◆ mstr_fmt_parser_init()

mstr_fmt_parser_init ( byte_t mem,
const char *  inp,
MStrFmtParserState **  ppstate 
)

初始化Parser状态

参数
[in]mem内存, 大小需要至少比 sizeof(MStrFmtParserState) 大
[in]inp输入字符串
[out]ppstate解析状态
注解
使用macro MFMT_PARSER_STATE_SIZE 来帮助解决 mem 的大小问题