1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook//EN">
<article>
<articleinfo>
<title>listing in docbook</title>
</articleinfo>
<programlisting>01: <emphasis>/**</emphasis>
02: <emphasis>** Copyright (C) 1999-2007 Lorenzo Bettini</emphasis>
03: <emphasis>** </emphasis>
04: <emphasis> </emphasis>http://www.lorenzobettini.it
05: <emphasis> </emphasis>
06: <emphasis> r2 = r2 XOR (1<<10);</emphasis>
07: <emphasis> cout << "hello world" << endl;</emphasis>
08: <emphasis>** </emphasis>
09: <emphasis>*/</emphasis>
10:
11: <emphasis>// this file also contains the definition of mysum as a #define</emphasis>
12:
13: <emphasis>// textgenerator.h : Text Generator class &&</emphasis>
14:
15: <emphasis role="strong">#ifndef</emphasis> _TEXTGEN_H
<link linkend='line16'>_TEXTGEN_H -> 16</link>
16: <emphasis role="strong">#define</emphasis> <anchor id="line16"/>_TEXTGEN_H
17:
18: <emphasis role="strong">#define</emphasis> <emphasis role="strong"><anchor id="line18"/>foo</emphasis>(x) (x + 1)
19:
20: <emphasis role="strong">#define</emphasis> <anchor id="line20"/>mysum myfunbody
21:
22: <emphasis role="strong">#include</emphasis> <iostream.h> <emphasis>// for cerr</emphasis>
23:
24: <emphasis role="strong">#include</emphasis> "genfun.h" <emphasis>/* for generating functions */</emphasis>
25:
26: <emphasis role="strong">class</emphasis> <anchor id="line26"/>TextGenerator {
27: <emphasis role="strong">public</emphasis> :
28: <emphasis role="strong">virtual</emphasis> void <emphasis role="strong"><anchor id="line28"/>generate</emphasis>( <emphasis role="strong">const</emphasis> char *s ) <emphasis role="strong">const</emphasis> { (*sout) << s ; }
29: <emphasis role="strong">virtual</emphasis> void <emphasis role="strong"><anchor id="line29"/>generate</emphasis>( <emphasis role="strong">const</emphasis> char *s, int start, int end ) <emphasis role="strong">const</emphasis>
30: {
31: <emphasis role="strong">for</emphasis> ( int i = start ; i <= end ; ++i )
32: (*sout) << s[i] ;
33: <emphasis role="strong">return</emphasis> a<p->b ? a : 3;
34: }
35: <emphasis role="strong">virtual</emphasis> void <emphasis role="strong"><anchor id="line35"/>generateln</emphasis>( <emphasis role="strong">const</emphasis> char *s ) <emphasis role="strong">const</emphasis>
36: {
37: <emphasis role="strong">generate</emphasis>( s ) ;
<link linkend='line28'>generate -> 28</link>
<link linkend='line29'>generate -> 29</link>
38: (*sout) << endl ;
39: }
40: <emphasis role="strong">virtual</emphasis> void <emphasis role="strong"><anchor id="line40"/>generateEntire</emphasis>( <emphasis role="strong">const</emphasis> char *s ) <emphasis role="strong">const</emphasis>
41: {
42: <emphasis role="strong">startTextGeneration</emphasis>() ;
<link linkend='line46'>startTextGeneration -> 46</link>
<link linkend='line70'>startTextGeneration -> 70</link>
43: <emphasis role="strong">generate</emphasis>(s) ;
<link linkend='line28'>generate -> 28</link>
<link linkend='line29'>generate -> 29</link>
44: <emphasis role="strong">endTextGeneration</emphasis>() ;
<link linkend='line47'>endTextGeneration -> 47</link>
<link linkend='line76'>endTextGeneration -> 76</link>
45: }
46: <emphasis role="strong">virtual</emphasis> void <emphasis role="strong"><anchor id="line46"/>startTextGeneration</emphasis>() <emphasis role="strong">const</emphasis> {}
47: <emphasis role="strong">virtual</emphasis> void <emphasis role="strong"><anchor id="line47"/>endTextGeneration</emphasis>() <emphasis role="strong">const</emphasis> {}
48: <emphasis role="strong">virtual</emphasis> void <emphasis role="strong"><anchor id="line48"/>beginText</emphasis>( <emphasis role="strong">const</emphasis> char *s ) <emphasis role="strong">const</emphasis>
49: {
50: <emphasis role="strong">startTextGeneration</emphasis>() ;
<link linkend='line46'>startTextGeneration -> 46</link>
<link linkend='line70'>startTextGeneration -> 70</link>
51: <emphasis role="strong">if</emphasis> ( s )
52: <emphasis role="strong">generate</emphasis>( s ) ;
<link linkend='line28'>generate -> 28</link>
<link linkend='line29'>generate -> 29</link>
53: }
54: <emphasis role="strong">virtual</emphasis> void <emphasis role="strong"><anchor id="line54"/>endText</emphasis>( <emphasis role="strong">const</emphasis> char *s ) <emphasis role="strong">const</emphasis>
55: {
56: <emphasis role="strong">if</emphasis> ( s )
57: <emphasis role="strong">generate</emphasis>( s ) ;
<link linkend='line28'>generate -> 28</link>
<link linkend='line29'>generate -> 29</link>
58: <emphasis role="strong">endTextGeneration</emphasis>() ;
<link linkend='line47'>endTextGeneration -> 47</link>
<link linkend='line76'>endTextGeneration -> 76</link>
59: }
60: } ;
61:
62: <emphasis>// Decorator</emphasis>
63: <emphasis role="strong">class</emphasis> <anchor id="line63"/>TextDecorator : <emphasis role="strong">public</emphasis> TextGenerator {
<link linkend='line26'>TextGenerator -> 26</link>
64: <emphasis role="strong">protected</emphasis> :
65: TextGenerator *<anchor id="line65"/>decorated ;
<link linkend='line26'>TextGenerator -> 26</link>
66:
67: <emphasis role="strong">public</emphasis> :
68: <emphasis role="strong"><anchor id="line68"/>TextDecorator</emphasis>( TextGenerator *t ) : <emphasis role="strong">decorated</emphasis>( t ) {}
<link linkend='line26'>TextGenerator -> 26</link>
<link linkend='line65'>decorated -> 65</link>
69:
70: <emphasis role="strong">virtual</emphasis> void <emphasis role="strong"><anchor id="line70"/>startTextGeneration</emphasis>() <emphasis role="strong">const</emphasis>
71: {
72: <emphasis role="strong">startDecorate</emphasis>() ;
73: <emphasis role="strong">if</emphasis> ( decorated )
<link linkend='line65'>decorated -> 65</link>
74: decorated-><emphasis role="strong">startTextGeneration</emphasis>() ;
<link linkend='line46'>startTextGeneration -> 46</link>
<link linkend='line65'>decorated -> 65</link>
<link linkend='line70'>startTextGeneration -> 70</link>
75: }
76: <emphasis role="strong">virtual</emphasis> void <emphasis role="strong"><anchor id="line76"/>endTextGeneration</emphasis>() <emphasis role="strong">const</emphasis>
77: {
78: <emphasis role="strong">if</emphasis> ( decorated )
<link linkend='line65'>decorated -> 65</link>
79: decorated-><emphasis role="strong">endTextGeneration</emphasis>() ;
<link linkend='line47'>endTextGeneration -> 47</link>
<link linkend='line65'>decorated -> 65</link>
<link linkend='line76'>endTextGeneration -> 76</link>
80: <emphasis role="strong">endDecorate</emphasis>() ;
81: mysum;
<link linkend='line20'>mysum -> 20</link>
82: }
83:
84: <emphasis>// pure virtual functions</emphasis>
85: <emphasis role="strong">virtual</emphasis> void <emphasis role="strong">startDecorate</emphasis>() <emphasis role="strong">const</emphasis> = 0 ;
86: <emphasis role="strong">virtual</emphasis> void <emphasis role="strong">endDecorate</emphasis>() <emphasis role="strong">const</emphasis> = 0 ;
87: } ;
88:
89: <emphasis role="strong">#endif</emphasis> <emphasis>// _TEXTGEN_H</emphasis>
90: </programlisting>
</article>
|