2 ############################################################
3 # source: c-lang-public-fmt.imi
4 # author: devenkong(18151155@qq.com)
6 ############################################################
8 # c语言codegen时,根据catalog文件和imi配置文件输出代码文件时,
9 # 模块内public部分的templete。
10 ############################################################
20 # @ 一个c语言module对应一个.c/.m/.cpp文件,模块中包含一些定义接口:
25 # var(包括const类型的数值和字符串),
32 # @ 一个module通常是一个.c文件源程序。一些情况下需要多个.c文件,以及.o文件
33 # 编译输出成模块的.o文件。src对应的是添加模块的.c文件之外的源文件,obj是
35 # 一个模块使用其它库文件时,包含lib库的使用。
36 # inc用于在模块的源程序中添加头文件引用。lib的头文件引用包含在lib的参数中,
37 # inc中包含的是lib之外的头文件引用。
38 # src、obj、lib、inc用于输出编译参数文件信息。
48 #########################################
55 #########################################
59 #########################################
63 #########################################
68 extname=( "" .c .cpp .asm .S )
70 hdrextype=( "" .h .hpp )
72 desc_string/declare="@{srcname}@{extname}"
80 #########################################
85 extname=( "" .obj .o )
87 hdrextype=( "" .h .hpp )
89 desc_string/declare="@{objname}@{extname}"
97 #########################################
100 syntax="-l@{libname}"
103 extname=( "" .a .la .so .lib .dll )
105 hdrextype=( "" .h .hpp )
107 desc_string/declare="@{libname}@{extname}"
116 #########################################
119 syntax="#include \"@{incname}@{extname}\"\t@{comment}"
121 extname=( "" .h .hpp )
123 desc_string/declare="@{syntax}"
131 #########################################
134 syntax="@{qualifier} @{type} @{ptr[ * ]} @{vname} @{bits} @{array[ * ]}"
135 domain=( param local global gpublic gprivate member )
136 qulifier=( static extern auto register )
137 type=( "struct <stname>" "union <uniname>" "enum <enuname>" "<typename>" )
142 iotype=( "" in out io )
145 comment_syntax="@{vname}[ @{iotype} ]: @{comment}"
146 desc_string/declare="@{syntax}"
162 #########################################
165 syntax="@{qualifier} @{ret} @(fname_str_output ptr fname array) (@(func_params params))
167 // @{fun_body_comment}
169 return (@(retstr_output retstr))
171 type=( global gpublic gprivate member declare )
172 qulifier=( "" static inline extern )
175 retstr[ 1 ]="@({ret})0"
181 fun_body_comment="todo: replace code here."
182 comment_fdesc=<string>
184 comment_syntax[ 0 ]="\name: @{fname}
185 \desc: @{comment_fdesc}
187 @(func_params_comment comment_syntax[ 1 ] params )
188 \ret: @{comment_ret}"
189 comment_syntax[ 1 ]="@{vname}[ @{iotype} ]: @{comment}"
190 desc_string/declare="@{qualifier} @{ret} @(fname_str_output ptr fname array) (@(func_params params))"
202 comment_fdesc=<string>
206 #########################################
209 syntax="#define @{mvname}\t\t@{init}"
210 domain=( local global gpublic gprivate member )
214 comment_syntax="@{mvname}: @{comment}"
215 desc_string/declare="@{syntax}"
219 domain=( local global gpublic gprivate member )
225 #########################################
228 syntax="#define @{mvname}(@(mfunc_params mparams))\t\t@(mfunc_body mfname)"
229 domain=( global gpublic gprivate member )
233 comment_syntax="@{vname}[ @{iotype} ]: @{comment}"
234 desc_string/declare="@{syntax}"
244 #########################################
247 # syntax="typedef @(var_declare type ptr vname bits array)"
248 syntax="typedef @(get_def_type type) @(get_vname ptr vname bits array)"
249 domain=( global gpublic gprivate member )
250 qulifier=( "" static )
251 type=( "struct <stname>" "union <uniname>" "enum <enuname>" "<typename>" )
255 array[]="[ @{array[ $1 ]} ]"
257 comment_syntax="@{vname}[ @{iotype} ]: @{comment}"
258 desc_string/declare="@{syntax}"
272 #########################################
275 # syntax="typedef @(func_declare ret retptr fname array params)"
276 syntax="typedef @{ret} @(fname_str_output ptr fname array) (@(func_params params))"
277 domain=( global gpublic gprivate member )
278 qulifier=( "" static )
281 type=( "struct <stname>" "union <uniname>" "enum <enuname>" "<typename>" )
285 array[]="[ @{array[ $1 ]} ]"
287 comment_syntax="@{vname}[ @{iotype} ]: @{comment}"
288 desc_string/declare="@{syntax}"
304 #########################################
305 # structure(struct/union/enum)的定义格式
308 syntax[0]="@{type} @{stname}
310 @(structrue_member_output nest_level member_list)
312 type=( struct union enum )
316 comment_desc=<string>
317 comment_syntax="\name: @{stname}
318 \desc: @{comment_desc}"
319 desc_string/declare="@{type} @{stname}"
331 comment_fdesc=<string>
335 #########################################
341 ######################
343 ######################