uidesigner/com.nokia.carbide.cpp.uiq.components/components/CommonMacros.inc
author tzelaw
Tue, 14 Apr 2009 15:03:19 -0500
changeset 94 d74b720418db
parent 2 d760517a8095
permissions -rw-r--r--
Test framework support: Ask debugger to remember DebugTarget so test framework can use it to setup test framework related utility. With this we can use the DebugUI way of launching while keeping test framework functionality
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
cawthron
parents:
diff changeset
     1
<defineMacro id="DeclareMethod" 
cawthron
parents:
diff changeset
     2
	help="Declares a method, e.g., the prototype.">
cawthron
parents:
diff changeset
     3
	
cawthron
parents:
diff changeset
     4
	<macroArgument name="DeclLocation" optional="true" default="" 
cawthron
parents:
diff changeset
     5
		help="name of location into which to add the prototype (either this or DeclPhase must be defined)" />
cawthron
parents:
diff changeset
     6
cawthron
parents:
diff changeset
     7
	<macroArgument name="DeclPhase" optional="true" default="" 
cawthron
parents:
diff changeset
     8
		help="name of phase into which to add the prototype (either this or DeclLocation must be defined)" />
cawthron
parents:
diff changeset
     9
	
cawthron
parents:
diff changeset
    10
	<macroArgument name="FunctionName"
cawthron
parents:
diff changeset
    11
		help="name of function" />
cawthron
parents:
diff changeset
    12
	
cawthron
parents:
diff changeset
    13
	<macroArgument name="FunctionArgs" 
cawthron
parents:
diff changeset
    14
		help="canonical argument list (e.g. &quot;const TInt&amp; aArg, TInt aFoo = 3&quot;)"/>
cawthron
parents:
diff changeset
    15
	
cawthron
parents:
diff changeset
    16
	<macroArgument name="ReturnType" optional="true" default="void"
cawthron
parents:
diff changeset
    17
		help="return type for function" />
cawthron
parents:
diff changeset
    18
	
cawthron
parents:
diff changeset
    19
	<macroArgument name="IsStatic" optional="true" default="false" 
cawthron
parents:
diff changeset
    20
		help="is the function static?" />
cawthron
parents:
diff changeset
    21
cawthron
parents:
diff changeset
    22
	<macroArgument name="IsVirtual" optional="true" default="false"
cawthron
parents:
diff changeset
    23
		help="is the function virtual? (ignored if IsStatic)" />
cawthron
parents:
diff changeset
    24
	
cawthron
parents:
diff changeset
    25
	<macroArgument name="IsConst" optional="true" default="false"
cawthron
parents:
diff changeset
    26
		help="add 'const' modifier to function?" />
cawthron
parents:
diff changeset
    27
	
cawthron
parents:
diff changeset
    28
	<!-- N.B.: only one of location or phase will be non-empty -->
cawthron
parents:
diff changeset
    29
	<template location="$(DeclLocation)" phase="$(DeclPhase)" >
cawthron
parents:
diff changeset
    30
${($(IsStatic) ? "static " : ($(IsVirtual) ? "virtual " : "")
cawthron
parents:
diff changeset
    31
)}$(ReturnType::append-space-unless-empty)$(FunctionName)($(FunctionArgs::as-function-declaration-args::split-and-indent::add-spaces-unless-empty))${($(IsConst) ? " const" : "")};
cawthron
parents:
diff changeset
    32
	</template>
cawthron
parents:
diff changeset
    33
</defineMacro>
cawthron
parents:
diff changeset
    34
cawthron
parents:
diff changeset
    35
<defineMacro id="GenerateDefaultFunctionBody"
cawthron
parents:
diff changeset
    36
	help="Create the default body for a function.  If FunctionBody is set, 
cawthron
parents:
diff changeset
    37
emits that.  If ReturnType is not void and DefaultReturn is set, 
cawthron
parents:
diff changeset
    38
create a return statement using its value." >
cawthron
parents:
diff changeset
    39
	
cawthron
parents:
diff changeset
    40
	<macroArgument name="FunctionLocationId" 
cawthron
parents:
diff changeset
    41
		help="name of the function location to define; body is named id+_BODY" /> 
cawthron
parents:
diff changeset
    42
	
cawthron
parents:
diff changeset
    43
	<macroArgument name="DefaultReturn" optional="true" 
cawthron
parents:
diff changeset
    44
		help="default value to return; overridden if FunctionBody is specified" />
cawthron
parents:
diff changeset
    45
cawthron
parents:
diff changeset
    46
	<macroArgument name="ReturnType" optional="true" default="void"
cawthron
parents:
diff changeset
    47
		help="return type for function" />
cawthron
parents:
diff changeset
    48
	
cawthron
parents:
diff changeset
    49
	<macroArgument name="FunctionBody" optional="true" default=""
cawthron
parents:
diff changeset
    50
		help="text inside function body (comment and/or code)" />
cawthron
parents:
diff changeset
    51
cawthron
parents:
diff changeset
    52
	<template location="$(FunctionLocationId)"><![CDATA[<% 
cawthron
parents:
diff changeset
    53
if ($(FunctionBody::is-defined)) { 
cawthron
parents:
diff changeset
    54
%>$(FunctionBody)<% } 
cawthron
parents:
diff changeset
    55
if ($(DefaultReturn::is-defined) && $(ReturnType::as-string) != "void" && $(ReturnType::as-string) != "") { 
cawthron
parents:
diff changeset
    56
%>return $(DefaultReturn);
cawthron
parents:
diff changeset
    57
<% } %>]]></template>
cawthron
parents:
diff changeset
    58
cawthron
parents:
diff changeset
    59
</defineMacro>
cawthron
parents:
diff changeset
    60
cawthron
parents:
diff changeset
    61
cawthron
parents:
diff changeset
    62
<defineMacro id="DefineMethod"
cawthron
parents:
diff changeset
    63
		help="Defines a method to one location, optionally generating body text,
cawthron
parents:
diff changeset
    64
or a default return statement.
cawthron
parents:
diff changeset
    65
The generated function is owned by default." >
cawthron
parents:
diff changeset
    66
	
cawthron
parents:
diff changeset
    67
	<importArguments macroName="GenerateDefaultFunctionBody" />
cawthron
parents:
diff changeset
    68
cawthron
parents:
diff changeset
    69
	<macroArgument name="IsOwned" optional="true" default="true"
cawthron
parents:
diff changeset
    70
		help="is the function body owned?" />
cawthron
parents:
diff changeset
    71
cawthron
parents:
diff changeset
    72
	<macroArgument name="DefnLocation" 
cawthron
parents:
diff changeset
    73
		help="name of location into which to add the function" />
cawthron
parents:
diff changeset
    74
cawthron
parents:
diff changeset
    75
	<macroArgument name="FunctionName"
cawthron
parents:
diff changeset
    76
		help="name of function" />
cawthron
parents:
diff changeset
    77
	
cawthron
parents:
diff changeset
    78
	<macroArgument name="FunctionArgs" 
cawthron
parents:
diff changeset
    79
		help="canonical argument list (e.g. &quot;const TInt&amp; aArg, TInt aFoo = 3&quot;)"/>
cawthron
parents:
diff changeset
    80
cawthron
parents:
diff changeset
    81
	<macroArgument name="IsConst" optional="true" default="false" 
cawthron
parents:
diff changeset
    82
		help="add 'const' modifier to function?" />
cawthron
parents:
diff changeset
    83
	
cawthron
parents:
diff changeset
    84
	<macroArgument name="ClassName" optional="true" default="${className}"
cawthron
parents:
diff changeset
    85
		help="the class name" />
cawthron
parents:
diff changeset
    86
cawthron
parents:
diff changeset
    87
	<macroArgument name="FunctionComment" optional="true" 
cawthron
parents:
diff changeset
    88
		help="comment appearing before function defn" />
cawthron
parents:
diff changeset
    89
cawthron
parents:
diff changeset
    90
	<macroArgument name="IsEventHandler" optional="true" default="false" 
cawthron
parents:
diff changeset
    91
		help="is the function body the user event handler?" />
cawthron
parents:
diff changeset
    92
	
cawthron
parents:
diff changeset
    93
	<macroArgument name="Initializers" optional="true" default="" 
cawthron
parents:
diff changeset
    94
		help="provide any initializer expressions, e.g. for constructors, appearing
cawthron
parents:
diff changeset
    95
		on a separate line after the argument list and before the function body.
cawthron
parents:
diff changeset
    96
		Do not provide the leading colon (':') as this is added automatically" />
cawthron
parents:
diff changeset
    97
	
cawthron
parents:
diff changeset
    98
	<macroArgument name="Realize" optional="true" default="false"
cawthron
parents:
diff changeset
    99
		help="If true, force the function to be generated.  Otherwise, the
cawthron
parents:
diff changeset
   100
		function is generated only if the FunctionBody is non-empty or if
cawthron
parents:
diff changeset
   101
		another template contributions to the FunctionLocationId." />
cawthron
parents:
diff changeset
   102
	
cawthron
parents:
diff changeset
   103
	<defineLocation id="$(FunctionLocationId)" 
cawthron
parents:
diff changeset
   104
		baseLocation="$(DefnLocation)"
cawthron
parents:
diff changeset
   105
		owned="$(IsOwned)"	
cawthron
parents:
diff changeset
   106
		isEventHandler="$(IsEventHandler)"			
cawthron
parents:
diff changeset
   107
		realize="$(Realize)"
cawthron
parents:
diff changeset
   108
		location="function($(ClassName)::$(FunctionName)($(FunctionArgs::as-function-location-args)))">
cawthron
parents:
diff changeset
   109
		<template><![CDATA[<% 
cawthron
parents:
diff changeset
   110
if ($(FunctionComment::is-defined)) { 
cawthron
parents:
diff changeset
   111
%>$(FunctionComment)<% } 
cawthron
parents:
diff changeset
   112
%>$(ReturnType::append-space-unless-empty)$(ClassName)::$(FunctionName)($(FunctionArgs::as-function-definition-args::split-and-indent::add-spaces-unless-empty))${($(IsConst) ? " const" : "")}<%
cawthron
parents:
diff changeset
   113
if ($(Initializers::as-string) != "") { 
cawthron
parents:
diff changeset
   114
%>
cawthron
parents:
diff changeset
   115
	: $(Initializers)<% } %>
cawthron
parents:
diff changeset
   116
	{
cawthron
parents:
diff changeset
   117
	}
cawthron
parents:
diff changeset
   118
]]>
cawthron
parents:
diff changeset
   119
		</template>
cawthron
parents:
diff changeset
   120
	</defineLocation>
cawthron
parents:
diff changeset
   121
	
cawthron
parents:
diff changeset
   122
	<expandMacro name="GenerateDefaultFunctionBody" />
cawthron
parents:
diff changeset
   123
cawthron
parents:
diff changeset
   124
</defineMacro>
cawthron
parents:
diff changeset
   125
cawthron
parents:
diff changeset
   126
cawthron
parents:
diff changeset
   127
cawthron
parents:
diff changeset
   128
<defineMacro id="GenerateMethod" 
cawthron
parents:
diff changeset
   129
		help="Declares and defines a method to one location
cawthron
parents:
diff changeset
   130
and adds the prototype to another location." >
cawthron
parents:
diff changeset
   131
	
cawthron
parents:
diff changeset
   132
	<importArguments macroName="DeclareMethod" />
cawthron
parents:
diff changeset
   133
cawthron
parents:
diff changeset
   134
	<importArguments macroName="DefineMethod" />
cawthron
parents:
diff changeset
   135
	
cawthron
parents:
diff changeset
   136
	<expandMacro name="DeclareMethod" />
cawthron
parents:
diff changeset
   137
			
cawthron
parents:
diff changeset
   138
	<expandMacro name="DefineMethod" />
cawthron
parents:
diff changeset
   139
cawthron
parents:
diff changeset
   140
</defineMacro>
cawthron
parents:
diff changeset
   141
cawthron
parents:
diff changeset
   142
<defineMacro id="DefineMethodWithOwnedBody"
cawthron
parents:
diff changeset
   143
	help="Defines a method with an owned body section.
cawthron
parents:
diff changeset
   144
$p$
cawthron
parents:
diff changeset
   145
The generated function is not owned by default, unlike Method.
cawthron
parents:
diff changeset
   146
There may be uses for an owned function with a named owned region, though.
cawthron
parents:
diff changeset
   147
$p$	
cawthron
parents:
diff changeset
   148
Also, no default function code is generated, so the provided 
cawthron
parents:
diff changeset
   149
StartFunctionBody, FunctionBody, and EndFunctionBody must account for
cawthron
parents:
diff changeset
   150
any return statements." >
cawthron
parents:
diff changeset
   151
	
cawthron
parents:
diff changeset
   152
	<importArguments macroName="DefineMethod" />
cawthron
parents:
diff changeset
   153
cawthron
parents:
diff changeset
   154
	<macroArgument name="OwnedRegionLocationId" optional="true" default="$(FunctionLocationId)_BODY" 
cawthron
parents:
diff changeset
   155
		help="location id for enclosed body" />
cawthron
parents:
diff changeset
   156
	
cawthron
parents:
diff changeset
   157
	<macroArgument name="OwnedRegionName" optional="true" default="Generated Contents" 
cawthron
parents:
diff changeset
   158
		help="region name for enclosed body" />
cawthron
parents:
diff changeset
   159
	
cawthron
parents:
diff changeset
   160
	<macroArgument name="StartFunctionBody" optional="true" default="" 
cawthron
parents:
diff changeset
   161
		help="text inside function body (comment and/or code) before the owned section" />
cawthron
parents:
diff changeset
   162
cawthron
parents:
diff changeset
   163
	<macroArgument name="FunctionBody" optional="true" default="" 
cawthron
parents:
diff changeset
   164
		help="text inside owned part of function body" />
cawthron
parents:
diff changeset
   165
cawthron
parents:
diff changeset
   166
	<macroArgument name="EndFunctionBody" optional="true" default="" 
cawthron
parents:
diff changeset
   167
		help="text inside function body (comment and/or code) after the owned section" />
cawthron
parents:
diff changeset
   168
cawthron
parents:
diff changeset
   169
	<expandMacro name="DefineMethod"
cawthron
parents:
diff changeset
   170
		dontPassArguments="DefaultReturn FunctionBody"
cawthron
parents:
diff changeset
   171
		help="make a method first: does not pass DefaultReturn
cawthron
parents:
diff changeset
   172
		since either FunctionBody or EndFunctionBody should be
cawthron
parents:
diff changeset
   173
		handling the return"
cawthron
parents:
diff changeset
   174
		/>
cawthron
parents:
diff changeset
   175
cawthron
parents:
diff changeset
   176
	<template location="$(FunctionLocationId)">$(StartFunctionBody)
cawthron
parents:
diff changeset
   177
	</template>
cawthron
parents:
diff changeset
   178
cawthron
parents:
diff changeset
   179
	<defineLocation id="$(OwnedRegionLocationId)" baseLocation="$(FunctionLocationId)"
cawthron
parents:
diff changeset
   180
		location="region($(OwnedRegionName))" realize="true">
cawthron
parents:
diff changeset
   181
		<template>$(FunctionBody)			
cawthron
parents:
diff changeset
   182
		</template>
cawthron
parents:
diff changeset
   183
	</defineLocation>
cawthron
parents:
diff changeset
   184
cawthron
parents:
diff changeset
   185
	<template location="$(FunctionLocationId)">$(EndFunctionBody)
cawthron
parents:
diff changeset
   186
	</template>
cawthron
parents:
diff changeset
   187
	
cawthron
parents:
diff changeset
   188
</defineMacro>
cawthron
parents:
diff changeset
   189
cawthron
parents:
diff changeset
   190
<defineMacro id="GenerateMethodWithOwnedBody"
cawthron
parents:
diff changeset
   191
	help="Declares and defines a method with an owned body section to one location
cawthron
parents:
diff changeset
   192
and adds the prototype to another location. 
cawthron
parents:
diff changeset
   193
$p$
cawthron
parents:
diff changeset
   194
The generated function is not owned by default, unlike Method.
cawthron
parents:
diff changeset
   195
There may be uses for an owned function with a named owned region, though.">
cawthron
parents:
diff changeset
   196
	
cawthron
parents:
diff changeset
   197
	<importArguments macroName="DefineMethodWithOwnedBody" />
cawthron
parents:
diff changeset
   198
cawthron
parents:
diff changeset
   199
	<importArguments macroName="DeclareMethod" />
cawthron
parents:
diff changeset
   200
cawthron
parents:
diff changeset
   201
	<expandMacro name="DeclareMethod" />
cawthron
parents:
diff changeset
   202
	
cawthron
parents:
diff changeset
   203
	<expandMacro name="DefineMethodWithOwnedBody" />
cawthron
parents:
diff changeset
   204
cawthron
parents:
diff changeset
   205
</defineMacro>
cawthron
parents:
diff changeset
   206
cawthron
parents:
diff changeset
   207
<defineMacro id="GenerateMethodWithVariantArguments"
cawthron
parents:
diff changeset
   208
		help=" 
cawthron
parents:
diff changeset
   209
Declares and defines an owned method with variant arguments to one location
cawthron
parents:
diff changeset
   210
and adds the prototype to another location.  
cawthron
parents:
diff changeset
   211
$p$
cawthron
parents:
diff changeset
   212
Variant arguments means design-time variable (not C varargs).
cawthron
parents:
diff changeset
   213
The function has a non-empty list of fixed arguments followed by a 
cawthron
parents:
diff changeset
   214
non-empty list of variable arguments which are generated by a Javascript expression.
cawthron
parents:
diff changeset
   215
$p$
cawthron
parents:
diff changeset
   216
The generated function is owned by default.  It doesn't make sense to use 
cawthron
parents:
diff changeset
   217
this non-owned, since this will introduce compile errors when the prototype
cawthron
parents:
diff changeset
   218
changes and the old body remains behind.
cawthron
parents:
diff changeset
   219
	">
cawthron
parents:
diff changeset
   220
	<importArguments macroName="GenerateMethod"
cawthron
parents:
diff changeset
   221
		exceptArguments="FunctionArgs IsOwned"
cawthron
parents:
diff changeset
   222
		 
cawthron
parents:
diff changeset
   223
		help="use all the same arguments from Method, 
cawthron
parents:
diff changeset
   224
		excluding FunctionArgs, whose semantics are different,
cawthron
parents:
diff changeset
   225
		and IsOwned, which changes defaults"/>
cawthron
parents:
diff changeset
   226
cawthron
parents:
diff changeset
   227
	<macroArgument name="IsOwned" optional="true" default="true"
cawthron
parents:
diff changeset
   228
			help="tell whether the function is owned.  In general, it should be,
cawthron
parents:
diff changeset
   229
		otherwise compile errors will be introduced when the 
cawthron
parents:
diff changeset
   230
		method's signature changes and the old version is left behind." />
cawthron
parents:
diff changeset
   231
	
cawthron
parents:
diff changeset
   232
	<macroArgument name="FunctionArgs" 
cawthron
parents:
diff changeset
   233
		help="canonical leading static argument list (e.g. &quot;const TInt&amp; aArg, TInt aFoo = 3&quot;) 
cawthron
parents:
diff changeset
   234
		Do not include a trailing comma" />
cawthron
parents:
diff changeset
   235
cawthron
parents:
diff changeset
   236
	<macroArgument name="FunctionVarArgsAllowEmpty" optional="false" 
cawthron
parents:
diff changeset
   237
		help="tell whether the varargs may be empty"/>
cawthron
parents:
diff changeset
   238
	
cawthron
parents:
diff changeset
   239
	<macroArgument name="FunctionVarArgsDeclExpr" 
cawthron
parents:
diff changeset
   240
		help="generator for the variable arguments as appearing in the declaration
cawthron
parents:
diff changeset
   241
		(a Javascript expression); 
cawthron
parents:
diff changeset
   242
		if FunctionVarArgsAllowEmpty==false, do not generate a leading comma"/>
cawthron
parents:
diff changeset
   243
cawthron
parents:
diff changeset
   244
	<macroArgument name="FunctionVarArgsDefnExpr"
cawthron
parents:
diff changeset
   245
		help="generator for the variable arguments as appearing in the definition
cawthron
parents:
diff changeset
   246
		(a Javascript expression);
cawthron
parents:
diff changeset
   247
		if FunctionVarArgsAllowEmpty==false, do not generate a leading comma" />
cawthron
parents:
diff changeset
   248
cawthron
parents:
diff changeset
   249
	<!-- make a method declaration first -->
cawthron
parents:
diff changeset
   250
	<template location="$(DeclLocation)" phase="$(DeclPhase)" >
cawthron
parents:
diff changeset
   251
${($(IsStatic) ? "static " : ($(IsVirtual) ? "virtual " : "")
cawthron
parents:
diff changeset
   252
)}$(ReturnType::append-space-unless-empty)$(FunctionName)( $(FunctionArgs::as-function-declaration-args::split-and-indent)${($(FunctionVarArgsAllowEmpty) ? "" : ", ")}${$(FunctionVarArgsDefnExpr::split-and-indent)} )${($(IsConst) ? " const" : "")};
cawthron
parents:
diff changeset
   253
	</template>
cawthron
parents:
diff changeset
   254
cawthron
parents:
diff changeset
   255
	<!-- now define the function -->
cawthron
parents:
diff changeset
   256
	<defineLocation id="$(FunctionLocationId)" 
cawthron
parents:
diff changeset
   257
		baseLocation="$(DefnLocation)"
cawthron
parents:
diff changeset
   258
		owned="$(IsOwned)"				
cawthron
parents:
diff changeset
   259
		location="function($(ClassName)::$(FunctionName)($(FunctionArgs::as-function-location-args),...))">
cawthron
parents:
diff changeset
   260
		<template><![CDATA[<% 
cawthron
parents:
diff changeset
   261
if ($(FunctionComment::is-defined)) { 
cawthron
parents:
diff changeset
   262
%>$(FunctionComment)<% } 
cawthron
parents:
diff changeset
   263
%>$(ReturnType::append-space-unless-empty)$(ClassName)::$(FunctionName)( $(FunctionArgs::as-function-definition-args::split-and-indent)${($(FunctionVarArgsAllowEmpty) ? "" : ", ")}${$(FunctionVarArgsDefnExpr::split-and-indent)} )${($(IsConst) ? " const" : "")}
cawthron
parents:
diff changeset
   264
	{
cawthron
parents:
diff changeset
   265
	} 
cawthron
parents:
diff changeset
   266
]]>				
cawthron
parents:
diff changeset
   267
		</template>
cawthron
parents:
diff changeset
   268
	</defineLocation>
cawthron
parents:
diff changeset
   269
cawthron
parents:
diff changeset
   270
	<!-- and define the body -->
cawthron
parents:
diff changeset
   271
	<expandMacro name="GenerateDefaultFunctionBody" />
cawthron
parents:
diff changeset
   272
cawthron
parents:
diff changeset
   273
</defineMacro>
cawthron
parents:
diff changeset
   274
cawthron
parents:
diff changeset
   275
<defineMacro id="GenerateVirtualMethodOverrideForEventHandler"
cawthron
parents:
diff changeset
   276
	help="Override a virtual method with a non-owned function with an owned body.  
cawthron
parents:
diff changeset
   277
This must be invoked in a templateGroup that has an ifEvents=&quot;...&quot; attribute,
cawthron
parents:
diff changeset
   278
so the 'event' variable is available. ">
cawthron
parents:
diff changeset
   279
	<importArguments macroName="GenerateMethodWithOwnedBody"
cawthron
parents:
diff changeset
   280
		exceptArguments="IsVirtual IsStatic" />
cawthron
parents:
diff changeset
   281
cawthron
parents:
diff changeset
   282
	<macroArgument name="ClassName" optional="true" default="${handlerClassName}"
cawthron
parents:
diff changeset
   283
		help="the name of the class" />
cawthron
parents:
diff changeset
   284
cawthron
parents:
diff changeset
   285
	<macroArgument name="UserHandlerFunctionArgs" optional="true" 
cawthron
parents:
diff changeset
   286
		help="the arguments passed to the user handler function (== FunctionArgs by default)"/>
cawthron
parents:
diff changeset
   287
cawthron
parents:
diff changeset
   288
	<!-- declare the virtual function override -->
cawthron
parents:
diff changeset
   289
	<expandMacro name="GenerateMethodWithOwnedBody"
cawthron
parents:
diff changeset
   290
		IsStatic="false"
cawthron
parents:
diff changeset
   291
		IsVirtual="false"
cawthron
parents:
diff changeset
   292
	/>
cawthron
parents:
diff changeset
   293
	
cawthron
parents:
diff changeset
   294
	<!-- generate a call to the user handler -->
cawthron
parents:
diff changeset
   295
	<template location="$(OwnedRegionLocationId)"><![CDATA[<%
cawthron
parents:
diff changeset
   296
if ($(UserHandlerFunctionArgs::is-defined)) {
cawthron
parents:
diff changeset
   297
%>${event.handlerName}($(UserHandlerFunctionArgs::as-function-call-args::add-spaces-unless-empty));
cawthron
parents:
diff changeset
   298
<% } else { %>${event.handlerName}($(FunctionArgs::as-function-call-args::add-spaces-unless-empty));
cawthron
parents:
diff changeset
   299
<% } %>]]></template>
cawthron
parents:
diff changeset
   300
	
cawthron
parents:
diff changeset
   301
cawthron
parents:
diff changeset
   302
</defineMacro>
cawthron
parents:
diff changeset
   303
cawthron
parents:
diff changeset
   304
cawthron
parents:
diff changeset
   305
<defineMacro id="GenerateUserEventHandlerFunction"
cawthron
parents:
diff changeset
   306
		help="
cawthron
parents:
diff changeset
   307
Define a user handler declaration and function.
cawthron
parents:
diff changeset
   308
	$p$
cawthron
parents:
diff changeset
   309
Provides a default header comment and body comment.
cawthron
parents:
diff changeset
   310
	$p$
cawthron
parents:
diff changeset
   311
This is NOT conditional, so include it in a &lt;templateGroup ifEvents=&quot;...&quot; /&gt;
cawthron
parents:
diff changeset
   312
	" >
cawthron
parents:
diff changeset
   313
	<!-- extends GenerateMethod, but excludes
cawthron
parents:
diff changeset
   314
		IsVirtual
cawthron
parents:
diff changeset
   315
		IsStatic
cawthron
parents:
diff changeset
   316
	and overrides:
cawthron
parents:
diff changeset
   317
		FunctionBody
cawthron
parents:
diff changeset
   318
		FunctionComment
cawthron
parents:
diff changeset
   319
		FunctionName
cawthron
parents:
diff changeset
   320
		FunctionLocationId
cawthron
parents:
diff changeset
   321
	-->
cawthron
parents:
diff changeset
   322
	<importArguments macroName="GenerateMethod"
cawthron
parents:
diff changeset
   323
		exceptArguments="IsVirtual IsStatic" />
cawthron
parents:
diff changeset
   324
	
cawthron
parents:
diff changeset
   325
	<macroArgument name="ClassName" optional="true" default="${handlerClassName}" 
cawthron
parents:
diff changeset
   326
			help="the name of the class that receives the handler" />
cawthron
parents:
diff changeset
   327
cawthron
parents:
diff changeset
   328
	<macroArgument name="FunctionName" optional="true" default="${event.handlerName}" 
cawthron
parents:
diff changeset
   329
			help="the name of the function/method for the handler; 
cawthron
parents:
diff changeset
   330
			generally the default should be used (the name specified in the Events view)" />
cawthron
parents:
diff changeset
   331
cawthron
parents:
diff changeset
   332
	<macroArgument name="FunctionLocationId"
cawthron
parents:
diff changeset
   333
			help="the id for the event handler function" />
cawthron
parents:
diff changeset
   334
cawthron
parents:
diff changeset
   335
	<macroArgument name="FunctionComment" optional="true"
cawthron
parents:
diff changeset
   336
			help="the comment for the function" >
cawthron
parents:
diff changeset
   337
/**
cawthron
parents:
diff changeset
   338
 *	Handle the ${event.eventName} event
cawthron
parents:
diff changeset
   339
 */
cawthron
parents:
diff changeset
   340
	</macroArgument>
cawthron
parents:
diff changeset
   341
cawthron
parents:
diff changeset
   342
	<!--  -->
cawthron
parents:
diff changeset
   343
	<macroArgument name="FunctionBody" optional="true"
cawthron
parents:
diff changeset
   344
			help="the body of the function, which by default is a TODO comment" >
cawthron
parents:
diff changeset
   345
// TODO: implement ${event.eventName} event handler		
cawthron
parents:
diff changeset
   346
	</macroArgument> 
cawthron
parents:
diff changeset
   347
	
cawthron
parents:
diff changeset
   348
	<!-- declare the user handler method -->
cawthron
parents:
diff changeset
   349
	<expandMacro name="GenerateMethod"
cawthron
parents:
diff changeset
   350
		passArguments="DeclLocation DeclPhase 
cawthron
parents:
diff changeset
   351
			FunctionName FunctionArgs ReturnType IsConst
cawthron
parents:
diff changeset
   352
			DefnLocation ClassName FunctionLocationId
cawthron
parents:
diff changeset
   353
			FunctionComment 
cawthron
parents:
diff changeset
   354
			FunctionBody DefaultReturn"
cawthron
parents:
diff changeset
   355
		IsStatic="false"
cawthron
parents:
diff changeset
   356
		IsVirtual="false"
cawthron
parents:
diff changeset
   357
		IsEventHandler="true"
cawthron
parents:
diff changeset
   358
		IsOwned="false"
cawthron
parents:
diff changeset
   359
	/>
cawthron
parents:
diff changeset
   360
cawthron
parents:
diff changeset
   361
</defineMacro>