else if (p_type_last->is_structured_type() ||
p_type_last->get_typetype() == Type::T_ENUM_A ||
p_type_last->get_typetype() == Type::T_ENUM_T ||
- p_type_last->get_typetype() == Type::T_PORT ||
p_type_last->get_typetype() == Type::T_SIGNATURE ||
p_type_last->get_typetype() == Type::T_FUNCTION ||
p_type_last->get_typetype() == Type::T_ALTSTEP ||
// these ASN.1 string types are not converted right by Type::get_typetype_ttcn3()
p_type_name = "universal charstring";
break;
+ case Type::T_PORT:
+ p_type_name = "port";
+ break;
case Type::T_UNRESTRICTEDSTRING:
case Type::T_EMBEDDED_PDV:
case Type::T_EXTERNAL:
Def_Type* def = dynamic_cast<Def_Type*>(asss->get_ass_byIndex(i));
if (def != NULL) {
Type* t = def->get_Type();
- if (!t->is_ref() && t->get_typetype() != Type::T_COMPONENT) {
+ if (!t->is_ref() && t->get_typetype() != Type::T_COMPONENT &&
+ t->get_typetype() != Type::T_PORT) {
// don't generate code for subtypes
if (t->get_typetype() != Type::T_SIGNATURE) {
print_str = mputprintf(print_str,
" }\n"
, (print_str != NULL) ? "else " : ""
, t->get_dispname().c_str(), t->get_genname_value(this).c_str());
- if (t->get_typetype() != Type::T_PORT) {
- overwrite_str = mputprintf(overwrite_str,
- " %sif (!strcmp(p_var.type_name, \"%s\")) {\n"
- " ((%s*)p_var.value)->set_param(p_new_value);\n"
- " }\n"
- , (overwrite_str != NULL) ? "else " : ""
- , t->get_dispname().c_str(), t->get_genname_value(this).c_str());
- }
+ overwrite_str = mputprintf(overwrite_str,
+ " %sif (!strcmp(p_var.type_name, \"%s\")) {\n"
+ " ((%s*)p_var.value)->set_param(p_new_value);\n"
+ " }\n"
+ , (overwrite_str != NULL) ? "else " : ""
+ , t->get_dispname().c_str(), t->get_genname_value(this).c_str());
}
- if (t->get_typetype() != Type::T_PORT) {
- print_str = mputprintf(print_str,
+ print_str = mputprintf(print_str,
+ " %sif (!strcmp(p_var.type_name, \"%s template\")) {\n"
+ " ((const %s_template*)ptr)->log();\n"
+ " }\n"
+ , (print_str != NULL) ? "else " : ""
+ , t->get_dispname().c_str(), t->get_genname_value(this).c_str());
+ if (t->get_typetype() != Type::T_SIGNATURE) {
+ overwrite_str = mputprintf(overwrite_str,
" %sif (!strcmp(p_var.type_name, \"%s template\")) {\n"
- " ((const %s_template*)ptr)->log();\n"
+ " ((%s_template*)p_var.value)->set_param(p_new_value);\n"
" }\n"
- , (print_str != NULL) ? "else " : ""
+ , (overwrite_str != NULL) ? "else " : ""
, t->get_dispname().c_str(), t->get_genname_value(this).c_str());
- if (t->get_typetype() != Type::T_SIGNATURE) {
- overwrite_str = mputprintf(overwrite_str,
- " %sif (!strcmp(p_var.type_name, \"%s template\")) {\n"
- " ((%s_template*)p_var.value)->set_param(p_new_value);\n"
- " }\n"
- , (overwrite_str != NULL) ? "else " : ""
- , t->get_dispname().c_str(), t->get_genname_value(this).c_str());
- }
}
}
}
function_calls.buffer.start == (function_calls.buffer.end + 1) %
function_calls.buffer.size) ?
function_calls.buffer.size : function_calls.buffer.end + 1;
+ bool invalid_arg = false;
if (p_amount == NULL || strcmp(p_amount, "all") == 0) {
amount = limit;
}
else if (is_numeric(p_amount)) {
amount = strtol(p_amount, NULL, 10);
- if (amount == 0 || amount > limit) {
- print(DRET_NOTIFICATION, "Invalid number of function calls. Expected 1 - %d.",
- limit);
- return;
+ if (amount == 0) {
+ invalid_arg = true;
+ }
+ else if (amount > limit) {
+ amount = limit;
}
}
else {
- print(DRET_NOTIFICATION, "Argument 1 is invalid. Expected 'all' or integer "
- "value (number of calls).");
+ invalid_arg = true;
+ }
+ if (invalid_arg) {
+ print(DRET_NOTIFICATION, "Argument 1 is invalid. Expected 'all' or non-zero "
+ "integer value (number of calls).");
return;
}
for (int i = (function_calls.buffer.end - amount + function_calls.buffer.size + 1) %
else if (!strcmp(p_var.type_name, "component template")) {
((const COMPONENT_template*)ptr)->log();
}
+ else if (!strcmp(p_var.type_name, "port")) {
+ ((const PORT*)ptr)->log(); // virtual
+ }
else if (!strcmp(p_var.type_name, "default")) {
((const DEFAULT*)ptr)->log();
}