📄 etc.rep
字号:
% include // #include class interface and representation# include " `class .h" `n# include " `class .r" `n `n% methodHeader // method header`{if `linkage % // static linkage `%header { `n`} `{else // dynamic linkage static `result `class _ `method ` \ ( `{() `const `type `_ `name `}, `%va ) { `n`}fi% casts // implement %casts request`{() // import `{if `_ _`t `const struct `cast * `name = _ `name ; `n `}fi`}n`{if `linkage % // for static linkage only `%checks`}fi% checks // check all object parameters`{() `{ifnot `cast ``t assert( `name ); `n `}fi`}n% meta-ctor-loop // loop over selector/method pairs for `class`t while ((selector = va_arg(ap, voidf))) `n`t { `t voidf method = va_arg(ap, voidf); `n `n `{%- `%link-it `}`t } `n% link-it // check and insert one selector/method pair`t `t if (selector == (voidf) `method ) `n`t `t { `t * (voidf *) & self -> `method = method; `n`t `t `t continue; `n`t `t } `n% selectors // generate selectors and superclass selectors`{%- `%selector `%super-selector`}% selector // selector`%header { `n`%result`%ap`%classOf`%va_start`%ifmethod`%checks`%call`%va_end`%return} `n `n% result // if necessary, define result variable`{ifnot `result void`t `result result;`}n% ap // if necessary, define argument list variable`{ifnot `,... ``t va_list ap;`}n% classOf // class in which to find `method`t const struct `meta * class = classOf(_self); `n`%casts% va_start // if necessary, initialize argument list variable`{ifnot `,... ``t va_start(ap, `_last );`}n% ifmethod // check if method exists`t assert(class -> `method ); `n% call // call the method, if necessary assign result`t `{ifnot `result void result = `} \class -> `method ( `%args ); `n% args // arguments to method`{() `_ `name `}, `{ifnot `,... ` , & ap `}% va_end // if necessary, reset argument list variable`{ifnot `,... ``t va_end(ap);`}n% return // if necessary, return result variable`{ifnot `result void`t return result;`}n% super-selector // superclass selector`%super-header { `n`t const struct `meta * superclass = super(_class); `n`%casts`%checks`t assert(superclass -> `method ); `n`t `{ifnot `result void return `} \ superclass -> `method \ ( `{() `_ `name `}, `{ifnot `,... ` , app `} ); `n} `n `n
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -