MtFmt 1.0.0
MtFmt is a format library on embed. system and wrote by pure C.
载入中...
搜索中...
未找到
mm_parser.h
浏览该文件的文档.
1// SPDX-License-Identifier: LGPL-3.0
12#if !defined(_INCLUDE_MM_PARSER_H_)
13#include "mm_cfg.h"
14#include "mm_result.h"
15#include "mm_string.h"
16#include "mm_type.h"
17
18#define _INCLUDE_MM_PARSER_H_
20#define MFMT_PARSER_STATE_SIZE 48
21
23#define MFMT_PLACE_MAX_NUM 16
24
26#define MFMT_PLACE_MAX_WIDTH 32
27
29#define MFMT_CHRONO_PLACE_MAX_NUM 8
30
31//
32// 这个东东实现了一个超级小的支持类python的format语法的格式化器
33// 并且提供了一些其它的格式化函数
34//
35
41
57
130
146
162
193
202
215
249
269
282
294
307
329
337{
338 uint32_t a, b;
340
362
387
402
415
425MSTR_EXPORT_API(void)
427 byte_t* mem, const char* inp, MStrFmtParserState** ppstate
428);
429
441);
442
452 MStrFmtParserState* state, const char* pbeg
453);
454#endif // _INCLUDE_MM_FMT_H_
配置选项
#define MSTR_EXPORT_API(ret)
Definition mm_cfg.h:421
struct tagMStrFmtValueFormatSpec MStrFmtValueFormatSpec
一般变量的格式化描述标记
#define MFMT_CHRONO_PLACE_MAX_NUM
日期和时间最多支持的placement数目
Definition mm_parser.h:29
struct tagMStrFmtFormatSpec MStrFmtFormatSpec
格式化标记
tagMStrFmtChronoValueType
日期和时间的值类型
Definition mm_parser.h:221
@ MStrFmtChronoValueType_Hour
时 (12h制)
Definition mm_parser.h:244
@ MStrFmtChronoValueType_Minute
Definition mm_parser.h:235
@ MStrFmtChronoValueType_Week
星期
Definition mm_parser.h:247
@ MStrFmtChronoValueType_SubSecond
子秒
Definition mm_parser.h:241
@ MStrFmtChronoValueType_Day
Definition mm_parser.h:229
@ MStrFmtChronoValueType_Hour24
时 (24h制)
Definition mm_parser.h:232
@ MStrFmtChronoValueType_Year
Definition mm_parser.h:223
@ MStrFmtChronoValueType_Month
Definition mm_parser.h:226
@ MStrFmtChronoValueType_Second
Definition mm_parser.h:238
mstr_fmt_parser_end_position(MStrFmtParserState *state, const char *pbeg)
计算parser停止的位置
Definition mm_parser.c:432
mstr_fmt_parser_init(byte_t *mem, const char *inp, MStrFmtParserState **ppstate)
初始化Parser状态
Definition mm_parser.c:386
mstr_fmt_parse_goal(MStrFmtParserState *state, MStrFmtParseResult *result)
解析 replacement field
Definition mm_parser.c:403
struct tagMStrFmtArgProperty MStrFmtArgProperty
解析过程中的参数额外属性
struct tagMStrFmtFormatDescript MStrFmtFormatDescript
分析器的格式化标记
tagMStrFmtSignDisplay
格式化值时候的符号显示方式
Definition mm_parser.h:152
@ MStrFmtSignDisplay_NegOnly
仅在值小于0时显示符号
Definition mm_parser.h:157
@ MStrFmtSignDisplay_Always
总是显示符号
Definition mm_parser.h:154
@ MStrFmtSignDisplay_Neg_Or_Space
在小于0时显示负号, 大于0时显示为空格
Definition mm_parser.h:160
struct tagMStrFmtChronoFormatSpec MStrFmtChronoFormatSpec
时间的格式化描述标记
enum tagMStrFmtSignDisplay MStrFmtSignDisplay
格式化值时候的符号显示方式
struct tagMStrFmtParseResult MStrFmtParseResult
解析器结果
enum tagMStrFmtArgType MStrFmtArgType
格式化参数的类型
tagMStrFmtArgClass
指定参数的分类
Definition mm_parser.h:47
@ MStrFmtArgClass_Value
表示该位置是一个值
Definition mm_parser.h:49
@ MStrFmtArgClass_EscapeChar
表示该位置是一个转义字符
Definition mm_parser.h:55
@ MStrFmtArgClass_Array
表示该位置是一个数组
Definition mm_parser.h:52
tagMStrFmtAlign
格式化参数的对齐方式
Definition mm_parser.h:136
@ MStrFmtAlign_Right
右对齐, 在左侧填充内容
Definition mm_parser.h:144
@ MStrFmtAlign_Left
左对齐, 在右侧填充内容
Definition mm_parser.h:138
@ MStrFmtAlign_Center
居中, 在两侧填充内容
Definition mm_parser.h:141
tagMStrFmtArgType
格式化参数的类型
Definition mm_parser.h:63
@ MStrFmtArgType_Array_CString
C字符串指针组成的数组
Definition mm_parser.h:119
@ MStrFmtArgType_QuantizedValue
量化值
Definition mm_parser.h:92
@ MStrFmtArgType_Array_Time
时间结构体组成的数组
Definition mm_parser.h:122
@ MStrFmtArgType_Array_Uint16
无符号16位整数数组(const uint16_t*)
Definition mm_parser.h:113
@ MStrFmtArgType_Time
时间
Definition mm_parser.h:89
@ MStrFmtArgType_Array_Uint8
无符号8位整数数组(const uint8_t*)
Definition mm_parser.h:110
@ MStrFmtArgType_Uint16
无符号16位整数值
Definition mm_parser.h:80
@ MStrFmtArgType_Array_QuantizedValue
量化值数组
Definition mm_parser.h:125
@ MStrFmtArgType_Array_Uint32
无符号32位整数数组(const uint32_t*)
Definition mm_parser.h:116
@ MStrFmtArgType_Uint32
无符号32位整数值
Definition mm_parser.h:83
@ MStrFmtArgType_Unknown
未知参数类型
Definition mm_parser.h:65
@ MStrFmtArgType_Array_Int8
8位整数数组(const int8_t*)
Definition mm_parser.h:101
@ MStrFmtArgType_Array_Int32
32位整数数组(const int32_t*)
Definition mm_parser.h:107
@ MStrFmtArgType_Int8
8位整数值
Definition mm_parser.h:68
@ MStrFmtArgType_Array_Int16
16位整数数组(const int16_t*)
Definition mm_parser.h:104
@ MStrFmtArgType_QuantizedUnsignedValue
无符号量化值
Definition mm_parser.h:95
@ MStrFmtArgType_Array_Bit
Array type, 要和上面的值顺序一致
Definition mm_parser.h:98
@ MStrFmtArgType_Int16
16位整数值
Definition mm_parser.h:71
@ MStrFmtArgType_CString
C字符串指针
Definition mm_parser.h:86
@ MStrFmtArgType_Array_QuantizedUnsignedValue
无符号量化值数组
Definition mm_parser.h:128
@ MStrFmtArgType_Int32
32位整数值
Definition mm_parser.h:74
@ MStrFmtArgType_Uint8
无符号8位整数值
Definition mm_parser.h:77
enum tagMStrFmtFormatType MStrFmtFormatType
进行格式化的方式
struct tagMStrFmtChronoValueFormatSpec MStrFmtChronoValueFormatSpec
日期和时间的值的格式化描述
struct tagMStrFmtParseResultValueResult MStrFmtParseResultValueResult
解析结果的值, 表示一个值的解析结果
enum tagMStrFmtAlign MStrFmtAlign
格式化参数的对齐方式
enum tagMStrFmtArgClass MStrFmtArgClass
指定参数的分类
enum tagMStrFmtChronoValueType MStrFmtChronoValueType
日期和时间的值类型
struct tagMStrFmtChronoItemFormatSpec MStrFmtChronoItemFormatSpec
时间的格式化描述标记的项
union tagMStrFmtParseResultValue MStrFmtParseResultValue
解析结果的值
union tagMStrFmtFormatSpecUnion MStrFmtFormatSpecUnion
格式化标记
struct tagMStrFmtParseResultArrayResult MStrFmtParseResultArrayResult
解析结果的值, 表示一个数组的解析结果
tagMStrFmtFormatType
进行格式化的方式
Definition mm_parser.h:168
@ MStrFmtFormatType_UnSpec
未指定的转换方式
Definition mm_parser.h:170
@ MStrFmtFormatType_Hex_UpperCase_WithPrefix
大写十六进制值, 带"0X"前缀
Definition mm_parser.h:191
@ MStrFmtFormatType_Binary
二进制值字符串
Definition mm_parser.h:173
@ MStrFmtFormatType_Hex_WithPrefix
小写十六进制值, 带"0x"前缀
Definition mm_parser.h:188
@ MStrFmtFormatType_Hex_UpperCase
大写十六进制值字符串
Definition mm_parser.h:185
@ MStrFmtFormatType_Hex
小写十六进制值字符串
Definition mm_parser.h:182
@ MStrFmtFormatType_Oct
八进制值字符串
Definition mm_parser.h:176
@ MStrFmtFormatType_Deciaml
十进制值字符串
Definition mm_parser.h:179
结果类型
enum tagMStrResult mstr_result_t
结果类型
字符串
type alias和type def
uint8_t byte_t
字节(无符号)
Definition mm_type.h:26
bool mstr_bool_t
布尔值
Definition mm_type.h:57
size_t usize_t
尺寸(无符号)
Definition mm_type.h:32
解析过程中的参数额外属性
Definition mm_parser.h:337
uint32_t a
Definition mm_parser.h:338
uint32_t b
Definition mm_parser.h:338
时间的格式化描述标记
Definition mm_parser.h:275
MStrFmtChronoItemFormatSpec items[MFMT_CHRONO_PLACE_MAX_NUM]
需要格式化的值(从左到右)
Definition mm_parser.h:277
usize_t item_cnt
项长度
Definition mm_parser.h:280
时间的格式化描述标记的项
Definition mm_parser.h:255
MStrFmtChronoValueFormatSpec chrono_spec
值的格式化描述
Definition mm_parser.h:260
MStrFmtChronoValueType value_type
值的格式化类型
Definition mm_parser.h:257
const char * split_end
split chars结束位置
Definition mm_parser.h:267
const char * split_beg
该值后面的split chars, 可以为空, 引用自fmt, [beg, end)是需要的split char
Definition mm_parser.h:264
日期和时间的值的格式化描述
Definition mm_parser.h:208
uint8_t format_length
进行格式化的长度
Definition mm_parser.h:213
mstr_bool_t fixed_length
是否以固定长度进行格式化
Definition mm_parser.h:210
分析器的格式化标记
Definition mm_parser.h:313
MStrFmtFormatSpec fmt_spec
格式化标记
Definition mm_parser.h:327
MStrFmtAlign fmt_align
对齐方式
Definition mm_parser.h:318
int32_t width
格式化宽度, -1表示使用默认值
Definition mm_parser.h:324
char fill_char
填充字符, 默认为空格
Definition mm_parser.h:315
MStrFmtSignDisplay sign_display
符号的显示方式, 默认是Display Only Neg
Definition mm_parser.h:321
格式化标记
Definition mm_parser.h:300
MStrFmtFormatType fmt_type
格式化的值类型
Definition mm_parser.h:302
MStrFmtFormatSpecUnion spec
格式化标记的值
Definition mm_parser.h:305
解析结果的值, 表示一个数组的解析结果
Definition mm_parser.h:368
const char * split_end
split chars结束位置
Definition mm_parser.h:385
uint32_t id
参数位置
Definition mm_parser.h:370
MStrFmtArgProperty ele_prop
附带参数
Definition mm_parser.h:376
MStrFmtArgType ele_typ
参数类型
Definition mm_parser.h:373
MStrFmtFormatDescript spec
格式化描述
Definition mm_parser.h:379
const char * split_beg
split chars, 引用自fmt, [beg, end)是需要的split char
Definition mm_parser.h:382
解析结果的值, 表示一个值的解析结果
Definition mm_parser.h:346
const char * reserved[2]
align
Definition mm_parser.h:360
MStrFmtArgProperty prop
附带参数
Definition mm_parser.h:354
MStrFmtFormatDescript spec
格式化描述
Definition mm_parser.h:357
MStrFmtArgType typ
参数类型
Definition mm_parser.h:351
uint32_t id
参数位置
Definition mm_parser.h:348
解析器结果
Definition mm_parser.h:408
MStrFmtParseResultValue val
Definition mm_parser.h:413
MStrFmtArgClass arg_class
参数分类
Definition mm_parser.h:410
分析器状态
Definition mm_parser.c:273
一般变量的格式化描述标记
Definition mm_parser.h:199
int reserved
Definition mm_parser.h:200
格式化标记
Definition mm_parser.h:287
MStrFmtValueFormatSpec value
[type: 非Time] 进行格式化的方式, 默认情况为未指定
Definition mm_parser.h:289
MStrFmtChronoFormatSpec chrono
[type: Time] 进行格式化的方式
Definition mm_parser.h:292
解析结果的值
Definition mm_parser.h:392
char escape_char
[MStrFmtArgClass: EscapeChar] 转义字符
Definition mm_parser.h:394
MStrFmtParseResultValueResult val
[MStrFmtArgClass: Value] 格式化信息
Definition mm_parser.h:397
MStrFmtParseResultArrayResult arr
[MStrFmtArgClass: Array] 格式化信息
Definition mm_parser.h:400