Merge fixes for kalyptus that were made in tdelibs/dcopidlng:

+ includes may use quotation marks
+ argument types can contain multiple words
+ avoid use long, short, int or char type as the argument name
+ avoid use type as the argument name if the const qualifier is used
+ use long notation of int types
+ the arguments can be nameless
+ return types can have qualifiers
+ do not warn on inherit of the DCOPObject and TQObject classes
+ the documentation comment does not have to end on a separate line
+ do not skip an empty class if it is declared with K_DCOP

Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
pull/6/head
Slávek Banko 5 years ago
parent 256d241873
commit ee9b1e7dc5
No known key found for this signature in database
GPG Key ID: 608F5293A04BE668

@ -559,7 +559,7 @@ LOOP:
|| $p =~ /^\s*Q_DECLARE_SHARED/ || $p =~ /^\s*Q_DECLARE_SHARED/
); );
push @includes_list, $1 if $p =~ /^#include\s+<?(.*?)>?\s*$/; push @includes_list, $1 if $p =~ /^#include\s+[<"]?(.*?)[>"]?\s*$/;
# remove all preprocessor macros # remove all preprocessor macros
if( $p =~ /^\s*#\s*(\w+)/ ) { if( $p =~ /^\s*#\s*(\w+)/ ) {
@ -1692,16 +1692,22 @@ sub makeParamList($$$)
# Separate arg type from arg name, if the latter is specified # Separate arg type from arg name, if the latter is specified
if ( $arg =~ /(.*)\s+([\w_]+)\s*$/ || $arg =~ /(.*)\(\s*\*\s([\w_]+)\)\s*\((.*)\)\s*$/ ) { if ( $arg =~ /(.*)\s+([\w_]+)\s*$/ || $arg =~ /(.*)\(\s*\*\s([\w_]+)\)\s*\((.*)\)\s*$/ ) {
if ( defined $3 ) { # function pointer if ( $1 eq "const" || $2 eq "long" || $2 eq "short" || $2 eq "int" || $2 eq "char" ) {
$argType = $1."(*)($3)"; # const qualifier or long notation of numeric type
$argName = $2; # without argument name
} else { $argType = "$1 $2";
$argType = $1; } else {
$argName = $2; $argType = $1;
} $argName = $2;
} else { # unnamed arg - or enum value }
$argType = $arg if (!$isEnum); if ( defined $3 ) {
$argName = $arg if ($isEnum); # function pointer
$argType .= "(*)($3)";
}
} else {
# unnamed arg - or enum value
$argType = $arg if (!$isEnum);
$argName = $arg if ($isEnum);
} }
$argId++; $argId++;

@ -230,7 +230,7 @@ sub preParseClass
my( $classNode ) = @_; my( $classNode ) = @_;
my $className = join( "::", kdocAstUtil::heritage($classNode) ); my $className = join( "::", kdocAstUtil::heritage($classNode) );
if( $#{$classNode->{Kids}} < 0 || if( ($#{$classNode->{Kids}} < 0 && !$classNode->{DcopExported}) ||
$classNode->{Access} eq "private" || $classNode->{Access} eq "private" ||
$classNode->{Access} eq "protected" || # e.g. TQPixmap::TQPixmapData $classNode->{Access} eq "protected" || # e.g. TQPixmap::TQPixmapData
exists $classNode->{Tmpl} || exists $classNode->{Tmpl} ||
@ -685,8 +685,14 @@ sub generateMethod($$$)
$argType =~ s/^\s*(.*?)\s*$/$1/; $argType =~ s/^\s*(.*?)\s*$/$1/;
$argType =~ s/</&lt;/g; $argType =~ s/</&lt;/g;
$argType =~ s/>/&gt;/g; $argType =~ s/>/&gt;/g;
$argType =~ s/(\W)\s+/$1/g;
$argType =~ s/\s+(\W)/$1/g;
$argType =~ s/\b(signed|unsigned|long|short)$/$1 int/;
$args .= " <ARG><TYPE$typeAttrs>$argType</TYPE><NAME>$arg->{ArgName}</NAME></ARG>\n"; $args .= " ";
$args .= "<ARG><TYPE$typeAttrs>$argType</TYPE>";
$args .= "<NAME>$arg->{ArgName}</NAME>" if $arg->{ArgName} !~ /^$/;
$args .= "</ARG>\n";
push @argTypeList, $argType; push @argTypeList, $argType;
@ -703,6 +709,13 @@ sub generateMethod($$$)
my $qual = ""; my $qual = "";
$qual .= " qual=\"const\"" if $flags =~ "c"; $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=\"&amp;\"" if $r_isRef;
my $this = $classNode->{BindingDerives} > 0 ? "this" : "xthis"; my $this = $classNode->{BindingDerives} > 0 ? "this" : "xthis";
# We iterate as many times as we have default params # We iterate as many times as we have default params
@ -714,8 +727,12 @@ sub generateMethod($$$)
$xretCode .= coerce_type('x[0]', 'xret', $returnType, 1); } $xretCode .= coerce_type('x[0]', 'xret', $returnType, 1); }
$returnType = "void" unless $returnType; $returnType = "void" unless $returnType;
$returnType =~ s/^\s*(.*?)\s*$/$1/;
$returnType =~ s/</&lt;/g; $returnType =~ s/</&lt;/g;
$returnType =~ s/>/&gt;/g; $returnType =~ s/>/&gt;/g;
$returnType =~ s/(\W)\s+/$1/g;
$returnType =~ s/\s+(\W)/$1/g;
$returnType =~ s/\b(signed|unsigned|long|short)$/$1 int/;
my $methodCode = ""; my $methodCode = "";
@ -739,7 +756,7 @@ sub generateMethod($$$)
$methodCode .= " <DOC>$doc</DOC>\n"; $methodCode .= " <DOC>$doc</DOC>\n";
} }
$methodCode .= " <TYPE>$returnType</TYPE>\n"; $methodCode .= " <TYPE$retTypeAttrs>$returnType</TYPE>\n";
$methodCode .= " <NAME>$name</NAME>\n"; $methodCode .= " <NAME>$name</NAME>\n";
$methodCode .= "$args"; $methodCode .= "$args";
$methodCode .= " </$tagType>\n"; $methodCode .= " </$tagType>\n";

@ -361,10 +361,12 @@ ANITER:
if( !defined $ref ) { if( !defined $ref ) {
# ancestor undefined # ancestor undefined
warn "warning: ", $node->{astNodeName}, if( $in->{astNodeName} ne "DCOPObject"
" inherits unknown class '", && $in->{astNodeName} ne "TQObject" ) {
warn "warning: ", $node->{astNodeName},
" inherits unknown class '",
$in->{astNodeName},"'\n"; $in->{astNodeName},"'\n";
}
$parent->AddPropList( 'InBy', $node ); $parent->AddPropList( 'InBy', $node );
} }
else { else {

@ -60,15 +60,15 @@ PARSELOOP:
next if !defined $text; next if !defined $text;
$text =~ s#^\s*\*(?!\/)##; $text =~ s#^\s*\*(?!\/)##;
if ( $text =~ m#\*/# ) {
$finished = 1;
$text = $`;
}
# if ( $text =~ /^\s*<\/pre>/i ) { # if ( $text =~ /^\s*<\/pre>/i ) {
# flushProp(); # flushProp();
# $inbounded = 0; # $inbounded = 0;
# } # }
if( $inbounded ) { if( $inbounded ) {
if ( $text =~ m#\*/# ) {
$finished = 1;
$text = $`;
}
$buffer .= $text; $buffer .= $text;
next PARSELOOP; next PARSELOOP;
} }
@ -165,10 +165,6 @@ PARSELOOP:
docProp( "LibDoc" ); docProp( "LibDoc" );
} }
else { else {
if ( $text =~ m#\*/# ) {
$finished = 1;
$text = $`;
}
$buffer .= $text; $buffer .= $text;
} }
} }

Loading…
Cancel
Save