38 # |
38 # |
39 # |
39 # |
40 |
40 |
41 import re |
41 import re |
42 import string |
42 import string |
43 from parameter import makeParameters, makeMembers |
43 from parameter import makeParameters, makeMembers, makeNonOwnedParameters, makeOwnedParameters |
44 from time import strftime |
44 from time import strftime |
45 from utils import doTimeStampCompareAndWrite |
45 from utils import doTimeStampCompareAndWrite |
46 |
46 |
47 # makes the aParam part of constructor |
47 # makes the aParam part of constructor |
48 def makeConstructorParameters(aParams): |
48 def makeConstructorParameters(aParams): |
49 ctor_str = "" |
49 ctor_str = "" |
50 |
50 |
51 for p in aParams: |
51 for p in aParams: |
52 ctor_str += 'a' + p.getName() + ', ' |
52 if not p.Owned(): |
|
53 ctor_str += 'a' + p.getName() + ', ' |
53 |
54 |
54 return ctor_str[:-2] |
55 return ctor_str[:-2] |
|
56 |
|
57 def makeConstructLParameters(aParams): |
|
58 conl_str = "" |
|
59 |
|
60 for p in aParams: |
|
61 if p.Owned(): |
|
62 conl_str += 'a' + p.getName() + ', ' |
|
63 |
|
64 return conl_str[:-2] |
|
65 |
|
66 # determines if a custom ConstructL needs to be created for this class |
|
67 # currently this is only needed for handling owned parameters. |
|
68 def customConstructL(aParams): |
|
69 return makeConstructLParameters(aParams) != '' |
55 |
70 |
56 # makes member initialization part of constructor |
71 # makes member initialization part of constructor |
57 def makeMemberInitialization(aParams): |
72 def makeMemberInitialization(aParams): |
58 init_str = ", " |
73 init_str = ", " |
59 |
74 |
60 for p in aParams: |
75 for p in aParams: |
61 init_str += 'i' + p.getName() + '(a' + p.getName() + ')\n\t, ' |
76 if not p.Owned(): |
|
77 init_str += 'i' + p.getName() + '(a' + p.getName() + ')\n\t, ' |
62 |
78 |
63 return init_str[:-4] |
79 return init_str[:-4] |
64 |
80 |
65 # makes class NewL definition |
81 # makes class NewL definition |
66 def makeNewLDefinitions(aParams, aClass): |
82 def makeNewLDefinitions(aParams, aClass): |
69 if len(aParams) > 0: |
85 if len(aParams) > 0: |
70 def_str += 'IMPORT_C static C' + aClass + '* NewL(' + makeParameters(aParams) +');\n\t' |
86 def_str += 'IMPORT_C static C' + aClass + '* NewL(' + makeParameters(aParams) +');\n\t' |
71 |
87 |
72 return def_str + 'IMPORT_C static C' + aClass +'* NewL();' |
88 return def_str + 'IMPORT_C static C' + aClass +'* NewL();' |
73 |
89 |
74 def makeNewLImp(aClass, aParamString, aConsParamString): |
90 def makeNewLImp(aClass, aParamString, aConsParamString, aConstructLString): |
75 imp_str = '' |
91 imp_str = '' |
76 imp_str += 'EXPORT_C C' + aClass + '* C' + aClass + '::NewL(' + aParamString + ')\n\t{\n\t' |
92 imp_str += 'EXPORT_C C' + aClass + '* C' + aClass + '::NewL(' + aParamString + ')\n\t{\n\t' |
77 imp_str += 'C' + aClass + '* self = new (ELeave) C' + aClass + '(' + aConsParamString + ');\n\t' |
93 imp_str += 'C' + aClass + '* self = new (ELeave) C' + aClass + '(' + aConsParamString + ');\n\t' |
78 imp_str += 'CleanupStack::PushL(self);\n\t' |
94 imp_str += 'CleanupStack::PushL(self);\n\t' |
79 imp_str += 'self->CHCICommandBase::BaseConstructL();\n\t' |
95 imp_str += 'self->' + aConstructLString + ';\n\t' |
80 imp_str += 'CleanupStack::Pop(self);\n\t' |
96 imp_str += 'CleanupStack::Pop(self);\n\t' |
81 imp_str += 'return self;\n\t}' |
97 imp_str += 'return self;\n\t}' |
82 return imp_str |
98 return imp_str |
83 |
99 |
84 # makes class NewL implementation |
100 # makes class NewL implementation |
85 def makeNewLImplementations(aParams, aClass): |
101 def makeNewLImplementations(aParams, aClass): |
86 imp_str = '' |
102 imp_str = '' |
87 |
103 |
88 if len(aParams) > 0: |
104 if len(aParams) > 0: |
89 imp_str += makeNewLImp(aClass, makeParameters(aParams), makeConstructorParameters(aParams)) |
105 imp_str += makeNewLImp(aClass, makeParameters(aParams), makeConstructorParameters(aParams), makeConstructLCall(aParams)) |
90 imp_str += '\n\n' |
106 imp_str += '\n\n' |
91 |
107 |
92 imp_str += makeNewLImp(aClass, '', '') |
108 imp_str += makeNewLImp(aClass, '', '', 'CHCICommandBase::BaseConstructL()') |
93 return imp_str |
109 return imp_str |
94 |
110 |
95 # makes class constructor definition |
111 def makeConstructLCall(aParams): |
|
112 imp_str = '' |
|
113 if customConstructL(aParams): |
|
114 imp_str += 'ConstructL(' + makeConstructLParameters(aParams) + ')' |
|
115 else: |
|
116 imp_str += 'CHCICommandBase::BaseConstructL()' |
|
117 return imp_str |
|
118 |
|
119 # makes class constructor definition (also ConstructL if appropriate). |
96 def makeConstructorDefinitions(aParams, aClass): |
120 def makeConstructorDefinitions(aParams, aClass): |
97 def_str = '' |
121 def_str = '' |
98 |
122 |
99 if len(aParams) > 0: |
123 if len(aParams) > 0: |
100 def_str += 'C' + aClass + '(' + makeParameters(aParams) + ');\n\t' |
124 def_str += 'C' + aClass + '(' + makeNonOwnedParameters(aParams) + ');\n\t' |
101 |
125 |
102 return def_str + 'C' + aClass + '();' |
126 def_str += 'C' + aClass + '();' |
|
127 |
|
128 if customConstructL(aParams): |
|
129 def_str += '\n\tvoid ConstructL(' + makeOwnedParameters(aParams) + ');' |
|
130 |
|
131 return def_str |
103 |
132 |
104 # makes class constructor implementation |
133 # makes class constructor implementation |
105 def makeConstructorImplementations(aParams, aClass, aMatchParams): |
134 def makeConstructorImplementations(aParams, aClass, aMatchParams): |
106 imp_str = '' |
135 imp_str = '' |
107 |
136 |
108 CreditsConsumed = aMatchParams[0] |
137 CreditsConsumed = aMatchParams[0] |
109 ExpCmdStatus = aMatchParams[1] |
138 ExpCmdStatus = aMatchParams[1] |
110 ExpCmdComplete = aMatchParams[2] |
139 ExpCmdComplete = aMatchParams[2] |
111 |
140 |
112 if len(aParams) > 0: |
141 if len(aParams) > 0: |
113 imp_str += 'C' + aClass + 'Command::C' + aClass + 'Command(' + makeParameters(aParams) + ')\n\t: CHCICommandBase(K' + aClass + 'Opcode)\n\t' + makeMemberInitialization(aParams) + '\n\t{\n\t' |
142 imp_str += 'C' + aClass + 'Command::C' + aClass + 'Command(' + makeNonOwnedParameters(aParams) + ')\n\t: CHCICommandBase(K' + aClass + 'Opcode)\n\t' + makeMemberInitialization(aParams) + '\n\t{\n\t' |
114 if int(CreditsConsumed) != 1: |
143 if int(CreditsConsumed) != 1: |
115 imp_str += 'SetCreditsConsumed(' + str(CreditsConsumed) + ');\n\t' |
144 imp_str += 'SetCreditsConsumed(' + str(CreditsConsumed) + ');\n\t' |
116 if ExpCmdStatus == 'False': |
145 if ExpCmdStatus == 'False': |
117 imp_str += 'SetExpectsCommandStatusEvent(EFalse);\n\t' |
146 imp_str += 'SetExpectsCommandStatusEvent(EFalse);\n\t' |
118 if ExpCmdComplete == 'False': |
147 if ExpCmdComplete == 'False': |