diff --git a/dcop/dcopidlng/kalyptus b/dcop/dcopidlng/kalyptus
index e970812b2..22bfb6f53 100644
--- a/dcop/dcopidlng/kalyptus
+++ b/dcop/dcopidlng/kalyptus
@@ -439,7 +439,7 @@ LOOP:
|| $p =~ /^\s*KDOM_/
);
- push @includes_list, $1 if $p =~ /^#include\s+(.*?)>?\s*$/;
+ push @includes_list, $1 if $p =~ /^#include\s+[<"]?(.*?)[>"]?\s*$/;
# remove all preprocessor macros
if( $p =~ /^\s*#\s*(\w+)/ ) {
@@ -1521,16 +1521,22 @@ sub makeParamList($$$)
# Separate arg type from arg name, if the latter is specified
if ( $arg =~ /(.*)\s+([\w_]+)\s*$/ || $arg =~ /(.*)\(\s*\*\s([\w_]+)\)\s*\((.*)\)\s*$/ ) {
- if ( defined $3 ) { # function pointer
- $argType = $1."(*)($3)";
- $argName = $2;
+ if ( $1 eq "const" || $2 eq "long" || $2 eq "short" || $2 eq "int" || $2 eq "char" ) {
+ # const qualifier or long notation of numeric type
+ # without argument name
+ $argType = "$1 $2";
} else {
$argType = $1;
$argName = $2;
}
- } else { # unnamed arg - or enum value
+ if ( defined $3 ) {
+ # function pointer
+ $argType .= "(*)($3)";
+ }
+ } else {
+ # unnamed arg - or enum value
$argType = $arg if (!$isEnum);
- $argName = $arg if ($isEnum);
+ $argName = $arg if ($isEnum);
}
$argId++;
diff --git a/dcop/dcopidlng/kalyptusCxxToDcopIDL.pm b/dcop/dcopidlng/kalyptusCxxToDcopIDL.pm
index 8a2988f06..0d06613e4 100644
--- a/dcop/dcopidlng/kalyptusCxxToDcopIDL.pm
+++ b/dcop/dcopidlng/kalyptusCxxToDcopIDL.pm
@@ -161,18 +161,33 @@ sub generateMethod($$)
$argType =~ s/^\s*(.*?)\s*$/$1/;
$argType =~ s/</g;
$argType =~ s/>/>/g;
- $argType =~ s/\s//g;
-
- $args .= " $argType$arg->{ArgName}\n";
+ $argType =~ s/(\W)\s+/$1/g;
+ $argType =~ s/\s+(\W)/$1/g;
+ $argType =~ s/\b(signed|unsigned|long|short)$/$1 int/;
+
+ $args .= " ";
+ $args .= "$argType";
+ $args .= "$arg->{ArgName}" if $arg->{ArgName} !~ /^$/;
+ $args .= "\n";
}
my $qual = "";
$qual .= " qual=\"const\"" if $flags =~ "c";
+ my $r_isConst = ($returnType =~ s/^\s*const\s*//);
+ my $r_isRef = ($returnType =~ s/&//);
+
+ my $retTypeAttrs = "";
+ $retTypeAttrs .= " qleft=\"const\"" if $r_isConst;
+ $retTypeAttrs .= " qright=\"&\"" if $r_isRef;
+
$returnType = "void" unless $returnType;
+ $returnType =~ s/^\s*(.*?)\s*$/$1/;
$returnType =~ s/</g;
$returnType =~ s/>/>/g;
- $returnType =~ s/^\s*const\s*//;
+ $returnType =~ s/(\W)\s+/$1/g;
+ $returnType =~ s/\s+(\W)/$1/g;
+ $returnType =~ s/\b(signed|unsigned|long|short)$/$1 int/;
my $methodCode = "";
@@ -182,7 +197,7 @@ sub generateMethod($$)
if (!$isConstructor) {
$methodCode .= " <$tagType$tagAttr$qual>\n";
- $methodCode .= " $returnType\n";
+ $methodCode .= " $returnType\n";
$methodCode .= " $name\n";
$methodCode .= "$args";
$methodCode .= " $tagType>\n";
diff --git a/dcop/dcopidlng/kdocAstUtil.pm b/dcop/dcopidlng/kdocAstUtil.pm
index f31f2b365..6abb59a25 100644
--- a/dcop/dcopidlng/kdocAstUtil.pm
+++ b/dcop/dcopidlng/kdocAstUtil.pm
@@ -152,10 +152,12 @@ ANITER:
if( !defined $ref ) {
# ancestor undefined
- warn "warning: ", $node->{astNodeName},
- " inherits unknown class '",
+ if( $in->{astNodeName} ne "DCOPObject"
+ && $in->{astNodeName} ne "TQObject" ) {
+ warn "warning: ", $node->{astNodeName},
+ " inherits unknown class '",
$in->{astNodeName},"'\n";
-
+ }
$parent->AddPropList( 'InBy', $node );
}
else {
diff --git a/dcop/dcopidlng/kdocParseDoc.pm b/dcop/dcopidlng/kdocParseDoc.pm
index e5f19d50c..fa34f5f30 100644
--- a/dcop/dcopidlng/kdocParseDoc.pm
+++ b/dcop/dcopidlng/kdocParseDoc.pm
@@ -60,15 +60,15 @@ PARSELOOP:
next if !defined $text;
$text =~ s#^\s*\*(?!\/)##;
+ if ( $text =~ m#\*/# ) {
+ $finished = 1;
+ $text = $`;
+ }
# if ( $text =~ /^\s*<\/pre>/i ) {
# flushProp();
# $inbounded = 0;
# }
if( $inbounded ) {
- if ( $text =~ m#\*/# ) {
- $finished = 1;
- $text = $`;
- }
$buffer .= $text;
next PARSELOOP;
}
@@ -162,10 +162,6 @@ PARSELOOP:
docProp( "LibDoc" );
}
else {
- if ( $text =~ m#\*/# ) {
- $finished = 1;
- $text = $`;
- }
$buffer .= $text;
}
}