bthci/bthci2/CommandsEvents/generator/command.py
changeset 21 5e5528a288fe
parent 0 29b1cd4cb562
equal deleted inserted replaced
19:4b81101308c6 21:5e5528a288fe
     1 # Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 # Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
     2 # All rights reserved.
     2 # All rights reserved.
     3 # This component and the accompanying materials are made available
     3 # This component and the accompanying materials are made available
     4 # under the terms of "Eclipse Public License v1.0"
     4 # under the terms of "Eclipse Public License v1.0"
     5 # which accompanies this distribution, and is available
     5 # which accompanies this distribution, and is available
     6 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
     6 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
    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':
   126         imp_str += 'SetExpectsCommandStatusEvent(EFalse);\n\t'
   155         imp_str += 'SetExpectsCommandStatusEvent(EFalse);\n\t'
   127     if ExpCmdComplete == 'False':
   156     if ExpCmdComplete == 'False':
   128         imp_str += 'SetExpectsCommandCompleteEvent(EFalse);\n\t'
   157         imp_str += 'SetExpectsCommandCompleteEvent(EFalse);\n\t'
   129 
   158 
   130     imp_str += '}'
   159     imp_str += '}'
       
   160     
       
   161     if customConstructL(aParams):
       
   162         imp_str += '\n\nvoid C' + aClass + 'Command::ConstructL(' + makeOwnedParameters(aParams) + ')\n\t{\n\tCHCICommandBase::BaseConstructL();\n\t'
       
   163         imp_str += makeOwnedMemberAssignment(aParams)
       
   164         imp_str += '\n\t}'
   131 
   165 
   132     return imp_str
   166     return imp_str
   133     
   167     
   134 def makeDestructorImplementation(aParams):
   168 def makeDestructorImplementation(aParams):
   135     imp_str = ''
   169     imp_str = ''
   198     
   232     
   199     for p in aParams:
   233     for p in aParams:
   200         ass_str += p.memberAssignment() + '\n\t'
   234         ass_str += p.memberAssignment() + '\n\t'
   201 
   235 
   202     return ass_str[:-2]
   236     return ass_str[:-2]
       
   237     
       
   238 def makeOwnedMemberAssignment(aParams):
       
   239     ass_str = ''
       
   240     
       
   241     for p in aParams:
       
   242         if p.Owned():
       
   243             ass_str += p.memberAssignment() + '\n\t'
       
   244 
       
   245     return ass_str[:-2]
   203 
   246 
   204 # make getter definition of form Param()
   247 # make getter definition of form Param()
   205 def makeAccessorDefinitions(aParams):
   248 def makeAccessorDefinitions(aParams):
   206     def_str = ''
   249     def_str = ''
   207 
   250