⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 etc.rep

📁 Object-Oriented Programming With ANSI-C这本书中的源代码!找了很久
💻 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 + -