@@ -142,9 +142,6 @@ void CGenerator::generateClientCppSourceFile(string fileName)
142
142
fileName += " _client.cpp" ;
143
143
m_templateData[" clientCppSourceName" ] = fileName;
144
144
145
- // TODO: temporary workaround for tests
146
- m_templateData[" unitTest" ] = (fileName.compare (" test_unit_test_common_client.cpp" ) == 0 ? false : true );
147
-
148
145
generateOutputFile (fileName, " cpp_client_source" , m_templateData, kCppClientSource );
149
146
}
150
147
@@ -161,9 +158,6 @@ void CGenerator::generateServerCppSourceFile(string fileName)
161
158
fileName += " _server.cpp" ;
162
159
m_templateData[" serverCppSourceName" ] = fileName;
163
160
164
- // TODO: temporary workaround for tests
165
- m_templateData[" unitTest" ] = (fileName.compare (" test_unit_test_common_server.cpp" ) == 0 ? false : true );
166
-
167
161
generateOutputFile (fileName, " cpp_server_source" , m_templateData, kCppServerSource );
168
162
}
169
163
@@ -180,9 +174,6 @@ void CGenerator::generateClientCSourceFile(string fileName)
180
174
fileName = " c_" + fileName + " _client.cpp" ;
181
175
m_templateData[" clientCSourceName" ] = fileName;
182
176
183
- // TODO: temporary workaround for tests
184
- m_templateData[" unitTest" ] = (fileName.compare (" c_test_unit_test_common_client.cpp" ) == 0 ? false : true );
185
-
186
177
generateOutputFile (fileName, " c_client_source" , m_templateData, kCClientSource );
187
178
}
188
179
@@ -199,9 +190,6 @@ void CGenerator::generateServerCSourceFile(string fileName)
199
190
fileName = " c_" + fileName + " _server.cpp" ;
200
191
m_templateData[" serverCSourceName" ] = fileName;
201
192
202
- // TODO: temporary workaround for tests
203
- m_templateData[" unitTest" ] = (fileName.compare (" c_test_unit_test_common_server.cpp" ) == 0 ? false : true );
204
-
205
193
generateOutputFile (fileName, " c_server_source" , m_templateData, kCServerSource );
206
194
}
207
195
@@ -524,13 +512,6 @@ void CGenerator::generate()
524
512
}
525
513
526
514
// check if structure/function parameters annotations are valid.
527
- for (Symbol *symbol : getDataTypesFromSymbolScope (m_globals, DataType::kFunctionType ))
528
- {
529
- FunctionType *functionType = dynamic_cast <FunctionType *>(symbol);
530
- assert (functionType);
531
- scanStructForAnnotations (&functionType->getParameters (), true );
532
- }
533
-
534
515
for (Symbol *symbol : getDataTypesFromSymbolScope (m_globals, DataType::kStructType ))
535
516
{
536
517
StructType *structType = dynamic_cast <StructType *>(symbol);
@@ -546,6 +527,11 @@ void CGenerator::generate()
546
527
{
547
528
scanStructForAnnotations (&function->getParameters (), true );
548
529
}
530
+
531
+ for (FunctionType *functionType : interface->getFunctionTypes ())
532
+ {
533
+ scanStructForAnnotations (&functionType->getParameters (), true );
534
+ }
549
535
}
550
536
551
537
// transform alias data types
@@ -1082,8 +1068,8 @@ data_map CGenerator::getStructDeclarationTemplateData(StructType *structType)
1082
1068
1083
1069
DataType *trueDataType = member->getDataType ()->getTrueDataType ();
1084
1070
// Check if member is byRef type. Add "*" for type and allocate space for data on server side.
1085
- if (member->isByref () &&
1086
- (trueDataType-> isStruct () || trueDataType-> isUnion () || trueDataType-> isScalar () || trueDataType->isEnum () || trueDataType->isFunction ()))
1071
+ if (member->isByref () && (trueDataType-> isStruct () || trueDataType-> isUnion () || trueDataType-> isScalar () ||
1072
+ trueDataType->isEnum () || trueDataType->isFunction ()))
1087
1073
{
1088
1074
memberName = " *" + memberName;
1089
1075
}
@@ -1364,14 +1350,16 @@ void CGenerator::setTemplateComments(Symbol *symbol, data_map &symbolInfo)
1364
1350
bool CGenerator::isServerNullParam (StructMember *param)
1365
1351
{
1366
1352
DataType *paramTrueDataType = param->getDataType ()->getTrueDataType ();
1367
- return (!paramTrueDataType->isScalar () && !paramTrueDataType->isEnum () && !paramTrueDataType->isArray () && !paramTrueDataType->isFunction ());
1353
+ return (!paramTrueDataType->isScalar () && !paramTrueDataType->isEnum () && !paramTrueDataType->isArray () &&
1354
+ !paramTrueDataType->isFunction ());
1368
1355
}
1369
1356
1370
1357
bool CGenerator::isPointerParam (StructMember *param)
1371
1358
{
1372
1359
DataType *paramTrueDataType = param->getDataType ()->getTrueDataType ();
1373
1360
return (isServerNullParam (param) ||
1374
- ((paramTrueDataType->isScalar () || paramTrueDataType->isEnum () || paramTrueDataType->isFunction ()) && param->getDirection () != kInDirection ));
1361
+ ((paramTrueDataType->isScalar () || paramTrueDataType->isEnum () || paramTrueDataType->isFunction ()) &&
1362
+ param->getDirection () != kInDirection ));
1375
1363
}
1376
1364
1377
1365
bool CGenerator::isNullableParam (StructMember *param)
@@ -1448,7 +1436,8 @@ data_map CGenerator::getFunctionBaseTemplateData(Group *group, FunctionBase *fn)
1448
1436
info[" needTempVariableClientI32" ] = needTempVariableI32;
1449
1437
returnInfo[" resultVariable" ] = resultVariable;
1450
1438
returnInfo[" errorReturnValue" ] = getErrorReturnValue (fn);
1451
- returnInfo[" isNullReturnType" ] = (!trueDataType->isScalar () && !trueDataType->isEnum () && !trueDataType->isFunction ());
1439
+ returnInfo[" isNullReturnType" ] =
1440
+ (!trueDataType->isScalar () && !trueDataType->isEnum () && !trueDataType->isFunction ());
1452
1441
}
1453
1442
info[" returnValue" ] = returnInfo;
1454
1443
@@ -1584,6 +1573,7 @@ data_map CGenerator::getFunctionBaseTemplateData(Group *group, FunctionBase *fn)
1584
1573
}
1585
1574
}
1586
1575
1576
+ string ifaceScope = " " ;
1587
1577
if (paramTrueType->isFunction ())
1588
1578
{
1589
1579
FunctionType *funType = dynamic_cast <FunctionType *>(paramTrueType);
@@ -1592,6 +1582,10 @@ data_map CGenerator::getFunctionBaseTemplateData(Group *group, FunctionBase *fn)
1592
1582
info[" needTempVariableServerU16" ] = true ;
1593
1583
info[" needTempVariableClientU16" ] = true ;
1594
1584
}
1585
+ if (funType->getInterface () != fn->getInterface ())
1586
+ {
1587
+ ifaceScope = funType->getInterface ()->getName ();
1588
+ }
1595
1589
}
1596
1590
1597
1591
paramInfo[" mallocServer" ] = firstAllocOnServerWhenIsNeed (name, param);
@@ -1630,7 +1624,6 @@ data_map CGenerator::getFunctionBaseTemplateData(Group *group, FunctionBase *fn)
1630
1624
1631
1625
paramInfo[" variable" ] = getTypenameName (paramType, name);
1632
1626
paramInfo[" name" ] = name;
1633
- string ifaceScope = param->getIfaceScope ();
1634
1627
if (ifaceScope != " " )
1635
1628
{
1636
1629
externalInterfacesList.push_back (ifaceScope);
@@ -2000,14 +1993,15 @@ string CGenerator::getFunctionServerCall(Function *fn, FunctionType *functionTyp
2000
1993
DataType *trueDataType = it->getDataType ()->getTrueDataType ();
2001
1994
2002
1995
/* Builtin types and function types. */
2003
- if (((trueDataType->isScalar ()) || trueDataType->isEnum () || trueDataType->isFunction ()) && it-> getDirection () != kInDirection &&
2004
- findAnnotation (it, NULLABLE_ANNOTATION))
1996
+ if (((trueDataType->isScalar ()) || trueDataType->isEnum () || trueDataType->isFunction ()) &&
1997
+ it-> getDirection () != kInDirection && findAnnotation (it, NULLABLE_ANNOTATION))
2005
1998
{
2006
1999
// On server side is created new variable for handle null : "_" + name
2007
2000
proto += " _" ;
2008
2001
}
2009
- else if ((it->getDirection () != kInDirection ) && (((trueDataType->isScalar ()) || trueDataType->isEnum () || trueDataType->isFunction ()) ||
2010
- (findAnnotation (it, SHARED_ANNOTATION))))
2002
+ else if ((it->getDirection () != kInDirection ) &&
2003
+ (((trueDataType->isScalar ()) || trueDataType->isEnum () || trueDataType->isFunction ()) ||
2004
+ (findAnnotation (it, SHARED_ANNOTATION))))
2011
2005
2012
2006
{
2013
2007
if (prefix != " " )
@@ -2165,10 +2159,13 @@ string CGenerator::getFunctionPrototype(Group *group, FunctionBase *fn, const st
2165
2159
2166
2160
if (interfaceClass)
2167
2161
{
2168
- string ifaceScope = it->getIfaceScope ();
2169
- if (ifaceScope != " " )
2162
+ if (trueDataType->isFunction ())
2170
2163
{
2171
- proto += ifaceScope + " _interface::" ;
2164
+ FunctionType *funcType = dynamic_cast <FunctionType *>(trueDataType);
2165
+ if (fn->getInterface () != funcType->getInterface ())
2166
+ {
2167
+ proto += funcType->getInterface ()->getName () + " _interface::" ;
2168
+ }
2172
2169
}
2173
2170
}
2174
2171
@@ -2958,7 +2955,8 @@ data_map CGenerator::firstAllocOnServerWhenIsNeed(const string &name, StructMemb
2958
2955
}
2959
2956
else if (structMember->getDirection () == kOutDirection )
2960
2957
{
2961
- if (!trueDataType->isBuiltin () && !trueDataType->isEnum () && !trueDataType->isArray () && !trueDataType->isFunction ())
2958
+ if (!trueDataType->isBuiltin () && !trueDataType->isEnum () && !trueDataType->isArray () &&
2959
+ !trueDataType->isFunction ())
2962
2960
{
2963
2961
return allocateCall (name, structMember);
2964
2962
}
0 commit comments