first version.
[build-srcpkg.git] / res / Style / TmplParam / PB1.0 / c-lang / public.imi
blobcb6d8d9ea2086e6b9067d416e99597f9eb31035b
1 #!/bin/imi -t
2 ############################################################
3 # source: c-lang-public-fmt.imi
4 # author: devenkong(18151155@qq.com)
5 # date: 2022-04-21
6 ############################################################
7 # note:
8 #     c语言codegen时,根据catalog文件和imi配置文件输出代码文件时,
9 # 模块内public部分的templete。
10 ############################################################
13 # todo:
14 # @ 
15 # @ 
19 # [ imi文件中变量定义的描述格式 ]
20 # @ 一个c语言module对应一个.c/.m/.cpp文件,模块中包含一些定义接口:
21 # src,
22 # obj,
23 # inc,
24 # lib,
25 # var(包括const类型的数值和字符串),
26 # func,
27 # macroconst/mconst,
28 # macrofunc/mfunc,
29 # inlinefunc,
30 # typedef,
31 # structure,
32 # @   一个module通常是一个.c文件源程序。一些情况下需要多个.c文件,以及.o文件
33 #   编译输出成模块的.o文件。src对应的是添加模块的.c文件之外的源文件,obj是
34 #   添加模块的.o文件之外的.o文件。
35 #     一个模块使用其它库文件时,包含lib库的使用。
36 #     inc用于在模块的源程序中添加头文件引用。lib的头文件引用包含在lib的参数中,
37 #   inc中包含的是lib之外的头文件引用。
38 #     src、obj、lib、inc用于输出编译参数文件信息。
39
40 # @ 一个非c语言的模块,使用以下定义。
41 # property
42 # slot
43 # event
44 # ...
48 #########################################
49 # global参数的定义
50 [ global ]
51 hdrextype=".h"
52 src::extname=".c"
53 lib::extname=".so"
55 #########################################
56 # obj的定义格式
59 #########################################
60 # dest的定义格式
63 #########################################
64 # src的定义格式
65 [ define-src ]
66 syntax="@{srcname}"
67 srcname=<word>
68 extname=( "" .c .cpp .asm .S )
69 hdrname="@{objname}"
70 hdrextype=( "" .h .hpp )
71 comment=<string>
72 desc_string/declare="@{srcname}@{extname}"
74 # src的定义
75 <###> [ src ]
76 srcname=
77 comment=
80 #########################################
81 # obj的定义格式
82 [ define-obj ]
83 syntax="{objname}"
84 objname=<word>
85 extname=( "" .obj .o )
86 hdrname="@{objname}"
87 hdrextype=( "" .h .hpp )
88 comment=<string>
89 desc_string/declare="@{objname}@{extname}"
91 # obj的定义
92 <###> [ obj ]
93 objname=
94 comment=
97 #########################################
98 # lib的定义格式
99 [ define-lib ]
100 syntax="-l@{libname}"
101 libname=<word>
102 libversion=<string>
103 extname=( "" .a .la .so .lib .dll )
104 hdrname="@{libname}"
105 hdrextype=( "" .h .hpp )
106 comment=<string>
107 desc_string/declare="@{libname}@{extname}"
109 # lib的定义
110 <###> [ lib ]
111 libname=
112 libversion=
113 comment=
116 #########################################
117 # inc的定义格式
118 [ define-inc ]
119 syntax="#include \"@{incname}@{extname}\"\t@{comment}"
120 incname=<word>
121 extname=( "" .h .hpp )
122 comment=<string>
123 desc_string/declare="@{syntax}"
125 # inc的定义
126 <###> [ inc ]
127 incname=
128 comment=
131 #########################################
132 # var的定义格式
133 [ define-var ]
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>" )
138 ptr=*
139 vname=<word>
140 bits=<digit>
141 array=<digit>|auto
142 iotype=( "" in out io )
143 init=<string>
144 comment=<string>
145 comment_syntax="@{vname}[ @{iotype} ]: @{comment}"
146 desc_string/declare="@{syntax}"
148 # var的定义
149 <###> [ var ]
150 domain=
151 qulifier=
152 type=
153 ptr[]=
154 vname=
155 bits=
156 array[]=
157 init=
158 iotype=
159 comment=
162 #########################################
163 # func的定义格式
164 [ define-func ]
165 syntax="@{qualifier} @{ret} @(fname_str_output ptr fname array) (@(func_params params))
167     // @{fun_body_comment}
168     
169     return (@(retstr_output retstr))
171 type=( global gpublic gprivate member declare )
172 qulifier=( "" static inline extern )
173 ret=<var.type>
174 retstr[ 0 ]="@{ret}"
175 retstr[ 1 ]="@({ret})0"
176 ptr=*
177 fname=<word>
178 params=<param-name>
179 array=<digit>|auto
180 init=<string>
181 fun_body_comment="todo: replace code here."
182 comment_fdesc=<string>
183 comment_ret=<string>
184 comment_syntax[ 0 ]="\name: @{fname}
185 \desc: @{comment_fdesc}
186 \params: 
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))"
192 # func的定义
193 <###> [ var ]
194 type=
195 qulifier=
196 ret=
197 ptr=
198 fname=
199 params[]=
200 array[]=
201 init=
202 comment_fdesc=<string>
203 comment_ret=<string>
206 #########################################
207 # mconst的定义格式
208 [ define-mconst ]
209 syntax="#define @{mvname}\t\t@{init}"
210 domain=( local global gpublic gprivate member )
211 mvname=<word>
212 init=<string>
213 comment=<string>
214 comment_syntax="@{mvname}: @{comment}"
215 desc_string/declare="@{syntax}"
217 # mconst的定义
218 <###> [ mconst ]
219 domain=( local global gpublic gprivate member )
220 mvname=<word>
221 init=<string>
222 comment=<string>
225 #########################################
226 # mfunc的定义格式
227 [ define-mfunc ]
228 syntax="#define @{mvname}(@(mfunc_params mparams))\t\t@(mfunc_body mfname)"
229 domain=( global gpublic gprivate member )
230 mfname[]=<word>
231 mparams=<param-name>
232 comment=<string>
233 comment_syntax="@{vname}[ @{iotype} ]: @{comment}"
234 desc_string/declare="@{syntax}"
236 # mfunc的定义
237 <###> [ mfunc ]
238 domain=
239 mfname=
240 mparams[]=
241 comment=
244 #########################################
245 # typedef的定义格式
246 [ define-typedef ]
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>" )
252 ptr[]=*
253 vname[]=<word>
254 bits=<digit>
255 array[]="[ @{array[ $1 ]} ]"
256 comment=<string>
257 comment_syntax="@{vname}[ @{iotype} ]: @{comment}"
258 desc_string/declare="@{syntax}"
260 # typedef的定义
261 <###> [ typedef ]
262 domain=
263 qulifier=
264 type=
265 ptr[]=
266 vname=
267 bits=
268 array[]=
269 comment=
272 #########################################
273 # ftypedef的定义格式
274 [ define-ftypedef ]
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 )
279 ret=
280 retptr=*
281 type=( "struct <stname>" "union <uniname>" "enum <enuname>" "<typename>" )
282 ptr[]=*
283 fname[]=<word>
284 params=<param-name>
285 array[]="[ @{array[ $1 ]} ]"
286 comment=<string>
287 comment_syntax="@{vname}[ @{iotype} ]: @{comment}"
288 desc_string/declare="@{syntax}"
290 # ftypedef的定义
291 <###> [ ftypedef ]
292 domain=
293 qulifier=
294 ret=
295 retptr=
296 type=
297 ptr[]=
298 mfname=
299 params=
300 array[]=
301 comment=
304 #########################################
305 # structure(struct/union/enum)的定义格式
306 # structure的定义格式
307 [ define-structure ]
308 syntax[0]="@{type} @{stname}
310 @(structrue_member_output nest_level member_list)
312 type=( struct union enum )
313 stname=<word>
314 member_list[]=<word>
315 array=<digit>|auto
316 comment_desc=<string>
317 comment_syntax="\name: @{stname}
318 \desc: @{comment_desc}"
319 desc_string/declare="@{type} @{stname}"
321 # structure的定义
322 <###> [ structure ]
323 type=
324 qulifier=
325 ret=
326 ptr=
327 fname=
328 params[]=
329 array[]=
330 init=
331 comment_fdesc=<string>
332 comment_ret=<string>
335 #########################################
336 # var的定义格式
341 ######################
342 # section: file tail
343 ######################