diff options
author | Slávek Banko <[email protected]> | 2020-06-18 02:38:19 +0200 |
---|---|---|
committer | Slávek Banko <[email protected]> | 2020-06-18 02:38:19 +0200 |
commit | ee9b1e7dc5f8db9bb39ce95a8daf129efff39b53 (patch) | |
tree | 1e65ae9bbdf17546d8c290d2384d45abe8be95c0 | |
parent | 256d241873a67c99d66c3ff52a64858678462a50 (diff) | |
download | tdebindings-ee9b1e7dc5f8db9bb39ce95a8daf129efff39b53.tar.gz tdebindings-ee9b1e7dc5f8db9bb39ce95a8daf129efff39b53.zip |
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 <[email protected]>
-rw-r--r-- | kalyptus/kalyptus | 28 | ||||
-rw-r--r-- | kalyptus/kalyptusCxxToDcopIDL.pm | 23 | ||||
-rw-r--r-- | kalyptus/kdocAstUtil.pm | 8 | ||||
-rw-r--r-- | kalyptus/kdocParseDoc.pm | 12 |
4 files changed, 46 insertions, 25 deletions
diff --git a/kalyptus/kalyptus b/kalyptus/kalyptus index ede21d42..596f6c59 100644 --- a/kalyptus/kalyptus +++ b/kalyptus/kalyptus @@ -559,7 +559,7 @@ LOOP: || $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 if( $p =~ /^\s*#\s*(\w+)/ ) { @@ -1692,16 +1692,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; - } else { - $argType = $1; - $argName = $2; - } - } else { # unnamed arg - or enum value - $argType = $arg if (!$isEnum); - $argName = $arg if ($isEnum); + 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; + } + if ( defined $3 ) { + # function pointer + $argType .= "(*)($3)"; + } + } else { + # unnamed arg - or enum value + $argType = $arg if (!$isEnum); + $argName = $arg if ($isEnum); } $argId++; diff --git a/kalyptus/kalyptusCxxToDcopIDL.pm b/kalyptus/kalyptusCxxToDcopIDL.pm index 5ff17c02..3dd00fc2 100644 --- a/kalyptus/kalyptusCxxToDcopIDL.pm +++ b/kalyptus/kalyptusCxxToDcopIDL.pm @@ -230,7 +230,7 @@ sub preParseClass my( $classNode ) = @_; my $className = join( "::", kdocAstUtil::heritage($classNode) ); - if( $#{$classNode->{Kids}} < 0 || + if( ($#{$classNode->{Kids}} < 0 && !$classNode->{DcopExported}) || $classNode->{Access} eq "private" || $classNode->{Access} eq "protected" || # e.g. TQPixmap::TQPixmapData exists $classNode->{Tmpl} || @@ -685,8 +685,14 @@ sub generateMethod($$$) $argType =~ s/^\s*(.*?)\s*$/$1/; $argType =~ s/</</g; $argType =~ s/>/>/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; @@ -703,6 +709,13 @@ sub generateMethod($$$) 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; + my $this = $classNode->{BindingDerives} > 0 ? "this" : "xthis"; # We iterate as many times as we have default params @@ -714,8 +727,12 @@ sub generateMethod($$$) $xretCode .= coerce_type('x[0]', 'xret', $returnType, 1); } $returnType = "void" unless $returnType; + $returnType =~ s/^\s*(.*?)\s*$/$1/; $returnType =~ s/</</g; $returnType =~ s/>/>/g; + $returnType =~ s/(\W)\s+/$1/g; + $returnType =~ s/\s+(\W)/$1/g; + $returnType =~ s/\b(signed|unsigned|long|short)$/$1 int/; my $methodCode = ""; @@ -739,7 +756,7 @@ sub generateMethod($$$) $methodCode .= " <DOC>$doc</DOC>\n"; } - $methodCode .= " <TYPE>$returnType</TYPE>\n"; + $methodCode .= " <TYPE$retTypeAttrs>$returnType</TYPE>\n"; $methodCode .= " <NAME>$name</NAME>\n"; $methodCode .= "$args"; $methodCode .= " </$tagType>\n"; diff --git a/kalyptus/kdocAstUtil.pm b/kalyptus/kdocAstUtil.pm index ec3e8fb5..4684a5da 100644 --- a/kalyptus/kdocAstUtil.pm +++ b/kalyptus/kdocAstUtil.pm @@ -361,10 +361,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/kalyptus/kdocParseDoc.pm b/kalyptus/kdocParseDoc.pm index f28b4e56..befa8c5e 100644 --- a/kalyptus/kdocParseDoc.pm +++ b/kalyptus/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; } @@ -165,10 +165,6 @@ PARSELOOP: docProp( "LibDoc" ); } else { - if ( $text =~ m#\*/# ) { - $finished = 1; - $text = $`; - } $buffer .= $text; } } |