Changeset 13800 for branches/dev-5819/Compiler/ModelicaCBackEnd/src/jastadd/CCodeGen/CCodeGenExternalCeval.jrag
- Timestamp:
- Oct 22, 2019 11:31:16 AM (6 weeks ago)
- Location:
- branches/dev-5819
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev-5819
- Property svn:mergeinfo changed
-
branches/dev-5819/Compiler/ModelicaCBackEnd/src/jastadd/CCodeGen/CCodeGenExternalCeval.jrag
r12306 r13800 248 248 Collection<ExternalArgument> res = new LinkedHashSet<>(); 249 249 if (hasReturnVar()) { 250 res.add(getReturnVar().externalArgument()); 251 } 250 res.add(returnVarToSerialize()); 251 } 252 res.addAll(argVarsToSerialize()); 253 return res; 254 } 255 256 syn ExternalArgument FExternalStmt.returnVarToSerialize() = getReturnVar().externalArgument(); 257 syn Collection<ExternalArgument> FExternalStmt.argVarsToSerialize() { 258 Collection<ExternalArgument> res = new LinkedHashSet<>(); 252 259 for (FExp e : getArgs()) { 253 260 res.add(e.externalArgument()); … … 288 295 } 289 296 return functionArgs; 297 } 298 299 300 syn String FType.cMappedTypeString() = cMappedTypeStringScalar() + (isArray() ? "v" : ""); 301 302 syn String FType.cMappedTypeStringScalar() { 303 throw new InternalCompilerError("cMappedTypeStringScalar() is not supported for class type " + getClass().getSimpleName()); 304 } 305 eq FArrayType.cMappedTypeStringScalar() = getFPrimitiveType().cMappedTypeStringScalar(); 306 eq FIntegerType.cMappedTypeStringScalar() = "i"; 307 eq FEnumType.cMappedTypeStringScalar() = "i"; 308 eq FBooleanType.cMappedTypeStringScalar() = "i"; 309 eq FRealType.cMappedTypeStringScalar() = "d"; 310 eq FStringType.cMappedTypeStringScalar() = "s"; 311 eq FRecordType.cMappedTypeStringScalar() { 312 String o = "R["; 313 for (FRecordComponentType rType: getComponents()) { 314 o = o.concat(rType.getFType().cMappedTypeStringScalar()); 315 o = o.concat(","); 316 } 317 return o.concat("]"); 318 } 319 320 syn String FExternalStmt.functionReturnArgSerialized() { 321 if (hasReturnVar()) { 322 return returnVarToSerialize().type().cMappedTypeString(); 323 } else { 324 return "void"; 325 } 326 } 327 328 syn String FExternalStmt.functionArgsSerialized() { 329 String input = ""; 330 for (ExternalArgument var : argVarsToSerialize()) { 331 if (var.isOutput()) { 332 input = input.concat("*"); 333 } 334 input += var.type().cMappedTypeString() + ","; 335 } 336 return input; 290 337 } 291 338 … … 347 394 } 348 395 } 396 } 397 398 public String FClass.externalCTypes() { 399 StringBuilder sb = new StringBuilder(); 400 for (FExternalStmt stmt : myExternals()) { 401 if (stmt.dynamicEvaluatorEnabled()) { 402 sb.append(stmt.getName()); 403 sb.append("\n"); 404 sb.append(stmt.functionReturnArgSerialized()); 405 sb.append("\n"); 406 sb.append(stmt.functionArgsSerialized()); 407 sb.append("\n"); 408 } 409 } 410 return sb.toString(); 349 411 } 350 412
Note: See TracChangeset
for help on using the changeset viewer.