30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

546 B. Vollständige Implementation des Memory Spiels<br />

64 void ∗ r e t = elements [ <strong>in</strong>dex ] ;<br />

65 elements [ <strong>in</strong>dex ] = 0 ;<br />

66 return ( r e t ) ;<br />

67 }<br />

B.1.3 Implementation von Commandl<strong>in</strong>eHandl<strong>in</strong>g<br />

1 // simple commandl<strong>in</strong>e handl<strong>in</strong>g . cpp − implementation o f the<br />

2 // commandl<strong>in</strong>e handl<strong>in</strong>g c l a s s<br />

3<br />

4 #<strong>in</strong>clude < c s t d l i b><br />

5 #<strong>in</strong>clude ” simple commandl<strong>in</strong>e handl<strong>in</strong>g . h”<br />

6<br />

7 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

8 void Commandl<strong>in</strong>eHandl<strong>in</strong>g : : declareArgument (<br />

9 u<strong>in</strong>t32 <strong>in</strong>dex , u<strong>in</strong>t32 type , ArgumentHandler ∗ handler )<br />

10 {<br />

11 i f ( ( type > HIGHEST ARG TYPE ) | |<br />

12 ( <strong>in</strong>dex >= static cast(max num args ) ) | |<br />

13 ( ! handler ) )<br />

14 return ;<br />

15 switch ( type )<br />

16 {<br />

17 case UINT32 ARG:<br />

18 {<br />

19 u<strong>in</strong>t32 ∗ type element = new u<strong>in</strong>t32 ( type ) ;<br />

20 types . setElementAt ( <strong>in</strong>dex , type element ) ;<br />

21 handlers . setElementAt ( <strong>in</strong>dex , handler ) ;<br />

22 }<br />

23 break ;<br />

24 default :<br />

25 // noth<strong>in</strong>g to be done , but d e l e t e the handler because<br />

26 // the c a l l e r r e l i e s on t h i s behaviour !<br />

27 delete handler ;<br />

28 }<br />

29 }<br />

30<br />

31 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

32 void Commandl<strong>in</strong>eHandl<strong>in</strong>g : : handleCommandl<strong>in</strong>e ( <strong>in</strong>t32 num args ,<br />

33 char ∗ args [ ] )<br />

34 {<br />

35 i f ( num args > max num args ) // don ’ t handle more than what<br />

36 num args = max num args ; // has been declared<br />

37 for ( <strong>in</strong>t32 current = 0 ; current < num args ; current++)<br />

38 {<br />

39 u<strong>in</strong>t32 ∗ element type ;<br />

40 i f ( ! ( element type = static cast(<br />

41 types . getElementAt ( current ) ) ) )<br />

42 cont<strong>in</strong>ue ;<br />

43 switch (∗ element type )<br />

44 {<br />

45 case UINT32 ARG:<br />

46 {<br />

47 u<strong>in</strong>t32 converted arg = s t r t o l ( args [ current ] ,NULL, 1 0 ) ;<br />

48 re<strong>in</strong>terpret cast(<br />

49 handlers . getElementAt ( current))−><br />

50 argumentNotification ( current ,& converted arg ) ;<br />

51 break ;<br />

52 }<br />

53 default :<br />

54 break ;<br />

55 }<br />

56 }

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!