mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-17 00:04:02 -04:00
sipify improvements
* add demo file and start a short doc * fix some annotations * do not display hidden line (SIP_SKIP, delete) * use a defined var for SIP_SKIP * remove constructor definition in header * fix comment after method definition in header * add a test for sipify itself
This commit is contained in:
parent
21be025d25
commit
15e4903890
@ -8,4 +8,5 @@ ENABLE_TESTING()
|
|||||||
|
|
||||||
ADD_TEST(qgis_indentation ${CMAKE_SOURCE_DIR}/../../../scripts/verify-indentation.sh)
|
ADD_TEST(qgis_indentation ${CMAKE_SOURCE_DIR}/../../../scripts/verify-indentation.sh)
|
||||||
ADD_TEST(qgis_spelling ${CMAKE_SOURCE_DIR}/../../../scripts/spell_check/spell_test.sh)
|
ADD_TEST(qgis_spelling ${CMAKE_SOURCE_DIR}/../../../scripts/spell_check/spell_test.sh)
|
||||||
ADD_TEST(qgis_sip ${CMAKE_SOURCE_DIR}/../../../tests/scripts/test_auto_sipfiles.sh)
|
ADD_TEST(qgis_sipify ${CMAKE_SOURCE_DIR}/../../../tests/scripts/test_sipify.sh)
|
||||||
|
ADD_TEST(qgis_sip_uptodate ${CMAKE_SOURCE_DIR}/../../../tests/scripts/test_sipfiles_uptodate.sh)
|
||||||
|
@ -1356,7 +1356,8 @@ EXPAND_AS_DEFINED = "SIP_TRANSFER" \
|
|||||||
"SIP_TRANSFERBACK" \
|
"SIP_TRANSFERBACK" \
|
||||||
"SIP_FACTORY" \
|
"SIP_FACTORY" \
|
||||||
"SIP_KEEPREFERENCE" \
|
"SIP_KEEPREFERENCE" \
|
||||||
"SIP_PYNAME"
|
"SIP_PYNAME" \
|
||||||
|
"SIP_SKIP"
|
||||||
|
|
||||||
# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
|
# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
|
||||||
# doxygen's preprocessor will remove all function-like macros that are alone
|
# doxygen's preprocessor will remove all function-like macros that are alone
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef QMap<int, QVariant> QgsAttributeMap;
|
typedef QMap<int, QVariant> QgsAttributeMap;
|
||||||
|
|
||||||
typedef QMap<int, QString> QgsFieldNameMap;
|
typedef QMap<int, QString> QgsFieldNameMap;
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef qint64 QgsFeatureId;
|
typedef qint64 QgsFeatureId;
|
||||||
|
|
||||||
|
|
||||||
@ -152,14 +153,8 @@ class QgsFeature
|
|||||||
Copy constructor
|
Copy constructor
|
||||||
%End
|
%End
|
||||||
|
|
||||||
// QgsFeature &operator=( const QgsFeature &rhs ); // SIP_SKIP
|
|
||||||
|
|
||||||
|
|
||||||
// bool operator==( const QgsFeature &other ) const; // SIP_SKIP
|
|
||||||
|
|
||||||
|
|
||||||
// bool operator!=( const QgsFeature &other ) const; // SIP_SKIP
|
|
||||||
|
|
||||||
|
|
||||||
virtual ~QgsFeature();
|
virtual ~QgsFeature();
|
||||||
|
|
||||||
@ -437,10 +432,6 @@ Allows direct construction of QVariants from features.
|
|||||||
|
|
||||||
}; // class QgsFeature
|
}; // class QgsFeature
|
||||||
|
|
||||||
// CORE_EXPORT QDataStream &operator<<( QDataStream &out, const QgsFeature &feature ); // SIP_SKIP
|
|
||||||
|
|
||||||
// CORE_EXPORT QDataStream &operator>>( QDataStream &in, QgsFeature &feature ); // SIP_SKIP
|
|
||||||
|
|
||||||
|
|
||||||
typedef QMap<qint64, QMap<int, QVariant> > QgsChangedAttributesMap;
|
typedef QMap<qint64, QMap<int, QVariant> > QgsChangedAttributesMap;
|
||||||
|
|
||||||
@ -450,7 +441,5 @@ typedef QSet<qint64> QgsFeatureIds;
|
|||||||
|
|
||||||
typedef QList<QgsFeature> QgsFeatureList;
|
typedef QList<QgsFeature> QgsFeatureList;
|
||||||
|
|
||||||
// uint qHash( const QgsFeature &key, uint seed = 0 ); // SIP_SKIP
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -335,8 +335,6 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
|
|
||||||
virtual ~QgsVectorLayer();
|
virtual ~QgsVectorLayer();
|
||||||
|
|
||||||
// QgsVectorLayer( const QgsVectorLayer &rhs ) = delete;
|
|
||||||
// QgsVectorLayer &operator=( QgsVectorLayer const &rhs ) = delete;
|
|
||||||
|
|
||||||
QString storageType() const;
|
QString storageType() const;
|
||||||
%Docstring
|
%Docstring
|
||||||
@ -384,8 +382,6 @@ Returns a comment for the data in the layer
|
|||||||
Returns the data provider
|
Returns the data provider
|
||||||
%End
|
%End
|
||||||
|
|
||||||
// const QgsVectorDataProvider *dataProvider() const; // SIP_SKIP
|
|
||||||
|
|
||||||
|
|
||||||
void setProviderEncoding( const QString &encoding );
|
void setProviderEncoding( const QString &encoding );
|
||||||
%Docstring
|
%Docstring
|
||||||
@ -630,8 +626,6 @@ Sets diagram rendering object (takes ownership)
|
|||||||
Return renderer.
|
Return renderer.
|
||||||
%End
|
%End
|
||||||
|
|
||||||
// const QgsFeatureRenderer *renderer() const { return mRenderer; } // SIP_SKIP
|
|
||||||
|
|
||||||
|
|
||||||
void setRenderer( QgsFeatureRenderer *r /Transfer/ );
|
void setRenderer( QgsFeatureRenderer *r /Transfer/ );
|
||||||
%Docstring
|
%Docstring
|
||||||
@ -973,10 +967,6 @@ TODO QGIS 3.0 returns an enum instead of a magic constant
|
|||||||
@return 0 in case of success
|
@return 0 in case of success
|
||||||
%End
|
%End
|
||||||
|
|
||||||
// const QgsAbstractVectorLayerLabeling *labeling() const { return mLabeling; } // SIP_SKIP
|
|
||||||
|
|
||||||
|
|
||||||
// void setLabeling( QgsAbstractVectorLayerLabeling *labeling ); // SIP_SKIP
|
|
||||||
|
|
||||||
|
|
||||||
virtual bool isEditable() const;
|
virtual bool isEditable() const;
|
||||||
@ -1256,8 +1246,6 @@ Set annotation form for layer
|
|||||||
Buffer with uncommitted editing operations. Only valid after editing has been turned on.
|
Buffer with uncommitted editing operations. Only valid after editing has been turned on.
|
||||||
%End
|
%End
|
||||||
|
|
||||||
// const QgsVectorLayerEditBuffer *editBuffer() const { return mEditBuffer; } // SIP_SKIP
|
|
||||||
|
|
||||||
|
|
||||||
void beginEditCommand( const QString &text );
|
void beginEditCommand( const QString &text );
|
||||||
%Docstring
|
%Docstring
|
||||||
@ -1512,8 +1500,6 @@ Returns the current transparency for the vector layer
|
|||||||
|
|
||||||
QString metadata() const;
|
QString metadata() const;
|
||||||
|
|
||||||
// inline QgsGeometryCache *cache() { return mCache; } // SIP_SKIP
|
|
||||||
|
|
||||||
|
|
||||||
void setSimplifyMethod( const QgsVectorSimplifyMethod &simplifyMethod );
|
void setSimplifyMethod( const QgsVectorSimplifyMethod &simplifyMethod );
|
||||||
%Docstring
|
%Docstring
|
||||||
|
@ -35,7 +35,6 @@ while(!eof $header){
|
|||||||
# Skip preprocessor stuff
|
# Skip preprocessor stuff
|
||||||
if ($line =~ m/^\s*#/){
|
if ($line =~ m/^\s*#/){
|
||||||
if ( $line =~ m/^\s*#ifdef SIP_RUN/){
|
if ( $line =~ m/^\s*#ifdef SIP_RUN/){
|
||||||
|
|
||||||
$SIP_RUN = 1;
|
$SIP_RUN = 1;
|
||||||
if ($PRIVATE_SECTION == 1){
|
if ($PRIVATE_SECTION == 1){
|
||||||
print $private_section_line;
|
print $private_section_line;
|
||||||
@ -125,13 +124,11 @@ while(!eof $header){
|
|||||||
|
|
||||||
# SIP_SKIP
|
# SIP_SKIP
|
||||||
if ( $line =~ m/SIP_SKIP/ ){
|
if ( $line =~ m/SIP_SKIP/ ){
|
||||||
$line =~ s/^(\s*)(\w.*)$/$1\/\/ $2\n/;
|
|
||||||
print $line;
|
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Private members (exclude SIP_RUN)
|
# Private members (exclude SIP_RUN)
|
||||||
if ( $line =~ m/^\s*private( slots)?:.*$/ ){
|
if ( $line =~ m/^\s*private( slots)?:/ ){
|
||||||
$PRIVATE_SECTION = 1;
|
$PRIVATE_SECTION = 1;
|
||||||
$private_section_line = $line;
|
$private_section_line = $line;
|
||||||
next;
|
next;
|
||||||
@ -148,18 +145,20 @@ while(!eof $header){
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Detect comment block
|
# Detect comment block
|
||||||
if ($line =~ m/\s*\/\*\*/){
|
if ($line =~ m/^\s*\/\*/){
|
||||||
$comment = $line =~ s/\s*\/\*\*(.*)$/$1/r;
|
do {no warnings 'uninitialized';
|
||||||
|
$comment = $line =~ s/^\s*\/\*(\*)?(.*)$/$2/r;
|
||||||
|
};
|
||||||
$comment =~ s/^\s*$//;
|
$comment =~ s/^\s*$//;
|
||||||
while(!eof $header){
|
while(!eof $header){
|
||||||
$line = readline $header;
|
$line = readline $header;
|
||||||
$line =~ m/\s*\*?(.*?)(\/)?$/;
|
$comment .= $line =~ s/\s*\*?(.*?)(\/)?$/$1/r;
|
||||||
$comment .= "$1\n";
|
|
||||||
if ( $line =~ m/\*\/$/ ){
|
if ( $line =~ m/\*\/$/ ){
|
||||||
last;
|
last;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$comment =~ s/(\n)+$//;
|
$comment =~ s/(\n)+$//;
|
||||||
|
#print $comment;
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,14 +176,17 @@ while(!eof $header){
|
|||||||
$line = "$1$3";
|
$line = "$1$3";
|
||||||
# Inheritance
|
# Inheritance
|
||||||
if ($4){
|
if ($4){
|
||||||
my $m;
|
my $m = $4;
|
||||||
$m = $4;
|
|
||||||
$m =~ s/public //g;
|
$m =~ s/public //g;
|
||||||
$m =~ s/\s*private \w+,?//;
|
$m =~ s/,?\s*private \w+//;
|
||||||
|
$m =~ s/(\s*:)?\s*$//;
|
||||||
$line .= $m;
|
$line .= $m;
|
||||||
}
|
}
|
||||||
|
|
||||||
$line .= "\n{\n%Docstring\n$comment\n%End\n";
|
$line .= "\n{\n";
|
||||||
|
if ( $comment !~ m/^\s*$/ ){
|
||||||
|
$line .= "%Docstring\n$comment\n%End\n";
|
||||||
|
}
|
||||||
$line .= "\n%TypeHeaderCode\n#include \"" . basename($headerfile) . "\"\n";
|
$line .= "\n%TypeHeaderCode\n#include \"" . basename($headerfile) . "\"\n";
|
||||||
|
|
||||||
print $line;
|
print $line;
|
||||||
@ -214,17 +216,46 @@ while(!eof $header){
|
|||||||
print $line;
|
print $line;
|
||||||
}
|
}
|
||||||
print $line;
|
print $line;
|
||||||
|
# enums don't have Docstring apparently
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
# remove keywords
|
|
||||||
do {no warnings 'uninitialized';
|
do {no warnings 'uninitialized';
|
||||||
$line =~ s/\s*override( SIP_FACTORY)?;/$1;/;
|
# remove keywords
|
||||||
|
$line =~ s/\s*override( SIP_\w+(\(.+\))?)?;/$1;/;
|
||||||
$line =~ s/^(\s*)?(const )?(virtual |static )?inline /$1$2$3/;
|
$line =~ s/^(\s*)?(const )?(virtual |static )?inline /$1$2$3/;
|
||||||
$line =~ s/\bnullptr\b/0/g;
|
$line =~ s/\bnullptr\b/0/g;
|
||||||
|
|
||||||
|
# remove constructor definition
|
||||||
|
if ( $line =~ m/^(\s*)?(explicit )?(\w+)\(([^()]*\([^()]*\)[^()]*)*\)(?!;)$/ ){
|
||||||
|
my $newline = $line =~ s/\n/;\n/r;
|
||||||
|
my $nesting_index = 0;
|
||||||
|
while(!eof $header){
|
||||||
|
$line = readline $header;
|
||||||
|
if ( $nesting_index == 0 ){
|
||||||
|
if ( $line =~ m/^\s*(:|,)/ ){
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
$line =~ m/^\s*\{/ or die 'Constructor definition misses {';
|
||||||
|
if ( $line =~ m/^\s*\{.*?\}/ ){
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
$nesting_index = 1;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$nesting_index += $line =~ tr/\{//;
|
||||||
|
$nesting_index -= $line =~ tr/\}//;
|
||||||
|
if ($nesting_index eq 0){
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$line = $newline;
|
||||||
|
}
|
||||||
|
|
||||||
# remove function bodies
|
# remove function bodies
|
||||||
if ( $line =~ m/^(\s*)?(const )?(virtual |static )?((\w+(<.*?>)?\s+(\*|&)?)?(\w+|operator.)\(.*?(\(.*\))*.*\)( const)?)\s*(\{.*\})?(?!;)$/ ){
|
if ( $line =~ m/^(\s*)?(const )?(virtual |static )?((\w+(<.*?>)?\s+(\*|&)?)?(\w+|operator.)\(.*?(\(.*\))*.*\)( const)?)\s*(\{.*\})?(?!;)(\s*\/\/.*)?$/ ){
|
||||||
my $newline = "$1$2$3$4;\n";
|
my $newline = "$1$2$3$4;\n";
|
||||||
if ($line !~ m/\{.*?\}$/){
|
if ($line !~ m/\{.*?\}$/){
|
||||||
$line = readline $header;
|
$line = readline $header;
|
||||||
@ -242,18 +273,20 @@ while(!eof $header){
|
|||||||
};
|
};
|
||||||
|
|
||||||
# deleted functions
|
# deleted functions
|
||||||
if ( $line =~ m/^(\s*)?(const )?(virtual |static )?((\w+(<.*?>)?\s+(\*|&)?)?(\w+|operator.)\(.*?(\(.*\))*.*\)( const)?)\s*= delete;$/ ){
|
if ( $line =~ m/^(\s*)?(const )?(virtual |static )?((\w+(<.*?>)?\s+(\*|&)?)?(\w+|operator.)\(.*?(\(.*\))*.*\)( const)?)\s*= delete;(\s*\/\/.*)?$/ ){
|
||||||
$line =~ s/^/\/\//;
|
$comment = '';
|
||||||
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
$line =~ s/SIP_FACTORY/\/Factory\//;
|
$line =~ s/\bSIP_FACTORY\b/\/Factory\//;
|
||||||
$line =~ s/SIP_OUT/\/Out\//g;
|
$line =~ s/\bSIP_OUT\b/\/Out\//g;
|
||||||
$line =~ s/SIP_INOUT/\/In,Out\//g;
|
$line =~ s/\bSIP_INOUT\b/\/In,Out\//g;
|
||||||
$line =~ s/SIP_TRANSFER/\/Transfer\//g;
|
$line =~ s/\bSIP_TRANSFER\b/\/Transfer\//g;
|
||||||
|
$line =~ s/\bSIP_KEEPREFERENCE\b/\/KeepReference\//;
|
||||||
|
$line =~ s/\bSIP_TRANSFERTHIS\b/\/TransferThis\//;
|
||||||
|
$line =~ s/\bSIP_TRANSFERBACK\b/\/TransferBack\//;
|
||||||
|
|
||||||
$line =~ s/SIP_PYNAME\(\s*(\w+)\s*\)/\/PyName=$1\//;
|
$line =~ s/SIP_PYNAME\(\s*(\w+)\s*\)/\/PyName=$1\//;
|
||||||
$line =~ s/SIP_KEEPREFERENCE\((\w+)\)/\/KeepReference\//;
|
|
||||||
$line =~ s/SIP_TRANSFERTHIS\((\w+)\)/\/TransferThis\//;
|
|
||||||
$line =~ s/SIP_TRANSFERBACK\((\w+)\)/\/TransferBack\//;
|
|
||||||
|
|
||||||
# fix astyle placing space after % character
|
# fix astyle placing space after % character
|
||||||
$line =~ s/\s*% (MappedType|TypeHeaderCode|ConvertFromTypeCode|ConvertToTypeCode|MethodCode|End)/%$1/;
|
$line =~ s/\s*% (MappedType|TypeHeaderCode|ConvertFromTypeCode|ConvertToTypeCode|MethodCode|End)/%$1/;
|
||||||
@ -280,7 +313,7 @@ while(!eof $header){
|
|||||||
if ( $line =~ m/^\s*$/ || $line =~ m/\/\// || $line =~ m/\s*typedef / ){
|
if ( $line =~ m/^\s*$/ || $line =~ m/\/\// || $line =~ m/\s*typedef / ){
|
||||||
$comment = '';
|
$comment = '';
|
||||||
}
|
}
|
||||||
elsif ( $comment ne '' ){
|
elsif ( $comment !~ m/^\s*$/ ){
|
||||||
print "%Docstring\n$comment\n%End\n";
|
print "%Docstring\n$comment\n%End\n";
|
||||||
$comment = '';
|
$comment = '';
|
||||||
}
|
}
|
||||||
|
@ -416,7 +416,7 @@ typedef unsigned long long qgssize;
|
|||||||
* and
|
* and
|
||||||
* http://pyqt.sourceforge.net/Docs/sip4/annotations.html?highlight=keepreference#argument-annotation-Out
|
* http://pyqt.sourceforge.net/Docs/sip4/annotations.html?highlight=keepreference#argument-annotation-Out
|
||||||
*/
|
*/
|
||||||
#define SIP_IN_OUT
|
#define SIP_INOUT
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* http://pyqt.sourceforge.net/Docs/sip4/annotations.html?highlight=keepreference#function-annotation-Factory
|
* http://pyqt.sourceforge.net/Docs/sip4/annotations.html?highlight=keepreference#function-annotation-Factory
|
||||||
@ -432,3 +432,8 @@ typedef unsigned long long qgssize;
|
|||||||
* http://pyqt.sourceforge.net/Docs/sip4/annotations.html?highlight=keepreference#argument-annotation-KeepReference
|
* http://pyqt.sourceforge.net/Docs/sip4/annotations.html?highlight=keepreference#argument-annotation-KeepReference
|
||||||
*/
|
*/
|
||||||
#define SIP_KEEPREFERENCE
|
#define SIP_KEEPREFERENCE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* discard line
|
||||||
|
*/
|
||||||
|
#define SIP_SKIP
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
#define QGSATTRIBUTES_H
|
#define QGSATTRIBUTES_H
|
||||||
|
|
||||||
#include "qgis_core.h"
|
#include "qgis_core.h"
|
||||||
|
#include "qgis.h"
|
||||||
|
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
@ -113,7 +115,7 @@ class CORE_EXPORT QgsAttributes : public QVector<QVariant>
|
|||||||
* @note added in QGIS 3.0
|
* @note added in QGIS 3.0
|
||||||
* @note not available in Python bindings
|
* @note not available in Python bindings
|
||||||
*/
|
*/
|
||||||
QgsAttributeMap toMap() const; // SIP_SKIP
|
QgsAttributeMap toMap() const SIP_SKIP;
|
||||||
|
|
||||||
inline bool operator!=( const QgsAttributes &v ) const { return !( *this == v ); }
|
inline bool operator!=( const QgsAttributes &v ) const { return !( *this == v ); }
|
||||||
};
|
};
|
||||||
|
@ -17,6 +17,8 @@ email : sherman at mrcc.com
|
|||||||
#define QGSFEATURE_H
|
#define QGSFEATURE_H
|
||||||
|
|
||||||
#include "qgis_core.h"
|
#include "qgis_core.h"
|
||||||
|
#include "qgis.h"
|
||||||
|
|
||||||
#include <QExplicitlySharedDataPointer>
|
#include <QExplicitlySharedDataPointer>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
@ -200,17 +202,17 @@ class CORE_EXPORT QgsFeature
|
|||||||
|
|
||||||
/** Assignment operator
|
/** Assignment operator
|
||||||
*/
|
*/
|
||||||
QgsFeature &operator=( const QgsFeature &rhs ); // SIP_SKIP
|
QgsFeature &operator=( const QgsFeature &rhs ) SIP_SKIP;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compares two features
|
* Compares two features
|
||||||
*/
|
*/
|
||||||
bool operator==( const QgsFeature &other ) const; // SIP_SKIP
|
bool operator==( const QgsFeature &other ) const SIP_SKIP;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compares two features
|
* Compares two features
|
||||||
*/
|
*/
|
||||||
bool operator!=( const QgsFeature &other ) const; // SIP_SKIP
|
bool operator!=( const QgsFeature &other ) const SIP_SKIP;
|
||||||
|
|
||||||
virtual ~QgsFeature();
|
virtual ~QgsFeature();
|
||||||
|
|
||||||
@ -498,9 +500,9 @@ class CORE_EXPORT QgsFeature
|
|||||||
}; // class QgsFeature
|
}; // class QgsFeature
|
||||||
|
|
||||||
//! Writes the feature to stream out. QGIS version compatibility is not guaranteed.
|
//! Writes the feature to stream out. QGIS version compatibility is not guaranteed.
|
||||||
CORE_EXPORT QDataStream &operator<<( QDataStream &out, const QgsFeature &feature ); // SIP_SKIP
|
CORE_EXPORT QDataStream &operator<<( QDataStream &out, const QgsFeature &feature ) SIP_SKIP;
|
||||||
//! Reads a feature from stream in into feature. QGIS version compatibility is not guaranteed.
|
//! Reads a feature from stream in into feature. QGIS version compatibility is not guaranteed.
|
||||||
CORE_EXPORT QDataStream &operator>>( QDataStream &in, QgsFeature &feature ); // SIP_SKIP
|
CORE_EXPORT QDataStream &operator>>( QDataStream &in, QgsFeature &feature ) SIP_SKIP;
|
||||||
|
|
||||||
// key = feature id, value = changed attributes
|
// key = feature id, value = changed attributes
|
||||||
#ifndef SIP_RUN
|
#ifndef SIP_RUN
|
||||||
@ -524,7 +526,7 @@ typedef QSet<qint64> QgsFeatureIds;
|
|||||||
|
|
||||||
typedef QList<QgsFeature> QgsFeatureList;
|
typedef QList<QgsFeature> QgsFeatureList;
|
||||||
|
|
||||||
uint qHash( const QgsFeature &key, uint seed = 0 ); // SIP_SKIP
|
uint qHash( const QgsFeature &key, uint seed = 0 ) SIP_SKIP;
|
||||||
|
|
||||||
Q_DECLARE_METATYPE( QgsFeature )
|
Q_DECLARE_METATYPE( QgsFeature )
|
||||||
Q_DECLARE_METATYPE( QgsFeatureList )
|
Q_DECLARE_METATYPE( QgsFeatureList )
|
||||||
|
@ -443,7 +443,7 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer, public QgsExpressionConte
|
|||||||
/** Returns the data provider in a const-correct manner
|
/** Returns the data provider in a const-correct manner
|
||||||
* @note not available in python bindings
|
* @note not available in python bindings
|
||||||
*/
|
*/
|
||||||
const QgsVectorDataProvider *dataProvider() const; // SIP_SKIP
|
const QgsVectorDataProvider *dataProvider() const SIP_SKIP;
|
||||||
|
|
||||||
//! Sets the textencoding of the data provider
|
//! Sets the textencoding of the data provider
|
||||||
void setProviderEncoding( const QString &encoding );
|
void setProviderEncoding( const QString &encoding );
|
||||||
@ -667,7 +667,7 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer, public QgsExpressionConte
|
|||||||
/** Return const renderer.
|
/** Return const renderer.
|
||||||
* @note not available in python bindings
|
* @note not available in python bindings
|
||||||
*/
|
*/
|
||||||
const QgsFeatureRenderer *renderer() const { return mRenderer; } // SIP_SKIP
|
const QgsFeatureRenderer *renderer() const SIP_SKIP { return mRenderer; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set renderer which will be invoked to represent this layer.
|
* Set renderer which will be invoked to represent this layer.
|
||||||
@ -1045,13 +1045,13 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer, public QgsExpressionConte
|
|||||||
* @note added in 2.12
|
* @note added in 2.12
|
||||||
* @note not available in Python bindings
|
* @note not available in Python bindings
|
||||||
*/
|
*/
|
||||||
const QgsAbstractVectorLayerLabeling *labeling() const { return mLabeling; } // SIP_SKIP
|
const QgsAbstractVectorLayerLabeling *labeling() const SIP_SKIP { return mLabeling; }
|
||||||
|
|
||||||
/** Set labeling configuration. Takes ownership of the object.
|
/** Set labeling configuration. Takes ownership of the object.
|
||||||
* @note added in 2.12
|
* @note added in 2.12
|
||||||
* @note not available in Python bindings
|
* @note not available in Python bindings
|
||||||
*/
|
*/
|
||||||
void setLabeling( QgsAbstractVectorLayerLabeling *labeling ); // SIP_SKIP
|
void setLabeling( QgsAbstractVectorLayerLabeling *labeling ) SIP_SKIP;
|
||||||
|
|
||||||
//! Returns true if the provider is in editing mode
|
//! Returns true if the provider is in editing mode
|
||||||
virtual bool isEditable() const override;
|
virtual bool isEditable() const override;
|
||||||
@ -1297,7 +1297,7 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer, public QgsExpressionConte
|
|||||||
|
|
||||||
//! Buffer with uncommitted editing operations. Only valid after editing has been turned on.
|
//! Buffer with uncommitted editing operations. Only valid after editing has been turned on.
|
||||||
//! @note not available in python bindings
|
//! @note not available in python bindings
|
||||||
const QgsVectorLayerEditBuffer *editBuffer() const { return mEditBuffer; } // SIP_SKIP
|
const QgsVectorLayerEditBuffer *editBuffer() const SIP_SKIP { return mEditBuffer; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create edit command for undo/redo operations
|
* Create edit command for undo/redo operations
|
||||||
@ -1529,7 +1529,7 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer, public QgsExpressionConte
|
|||||||
QString metadata() const override;
|
QString metadata() const override;
|
||||||
|
|
||||||
//! @note not available in python bindings
|
//! @note not available in python bindings
|
||||||
inline QgsGeometryCache *cache() { return mCache; } // SIP_SKIP
|
inline QgsGeometryCache *cache() SIP_SKIP { return mCache; }
|
||||||
|
|
||||||
/** Set the simplification settings for fast rendering of features
|
/** Set the simplification settings for fast rendering of features
|
||||||
* @note added in 2.2
|
* @note added in 2.2
|
||||||
|
117
tests/scripts/sipifyheader.expected.sip
Normal file
117
tests/scripts/sipifyheader.expected.sip
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
/******************************************************************
|
||||||
|
* This file has been generated automatically by sipify.pl *
|
||||||
|
* Do not edit manually ! Edit header file and generate it again. *
|
||||||
|
*****************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef qint64 QgsFeatureId;
|
||||||
|
|
||||||
|
typedef QVector<QVariant> QgsSuperClass;
|
||||||
|
|
||||||
|
%MappedType QgsSuperClass
|
||||||
|
{
|
||||||
|
// The annotations are modified by astyle (these will be fixed by sipify.pl)
|
||||||
|
%TypeHeaderCode
|
||||||
|
#include <qgssipifyheader.h>
|
||||||
|
%End
|
||||||
|
|
||||||
|
%ConvertFromTypeCode
|
||||||
|
// Create the list.
|
||||||
|
PyObject *l;
|
||||||
|
return l;
|
||||||
|
%End
|
||||||
|
}
|
||||||
|
|
||||||
|
class QgsSipifyHeader : QtClass<QVariant>
|
||||||
|
{
|
||||||
|
%Docstring
|
||||||
|
\ingroup core
|
||||||
|
Documentation goes here
|
||||||
|
%End
|
||||||
|
|
||||||
|
%TypeHeaderCode
|
||||||
|
#include "sipifyheader.h"
|
||||||
|
%End
|
||||||
|
public:
|
||||||
|
enum MyEnum
|
||||||
|
{
|
||||||
|
Success,
|
||||||
|
NoSuccess,
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit QgsSipifyHeader();
|
||||||
|
%Docstring
|
||||||
|
A constructor with definition in header
|
||||||
|
%End
|
||||||
|
|
||||||
|
QgsSipifyHeader( QWidget *parent /TransferThis/ = 0 );
|
||||||
|
%Docstring
|
||||||
|
A classic constructor with arguments
|
||||||
|
%End
|
||||||
|
|
||||||
|
void multilineMethod( const QgsPoint &startPoint,
|
||||||
|
QgsFeatureId featureId,
|
||||||
|
QgsVectorLayer *vl,
|
||||||
|
QgsSnapper::SnappingType snap_to ) const;
|
||||||
|
%Docstring
|
||||||
|
A multiline method signature
|
||||||
|
%End
|
||||||
|
|
||||||
|
|
||||||
|
virtual QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) /Factory/;
|
||||||
|
%Docstring
|
||||||
|
Factory annotation
|
||||||
|
%End
|
||||||
|
|
||||||
|
void LongDocStringMethod();
|
||||||
|
%Docstring
|
||||||
|
My long doc string
|
||||||
|
is not very interesting!
|
||||||
|
%End
|
||||||
|
|
||||||
|
bool isOKwithErrMesg( QString &ErrMsg /Out/ );
|
||||||
|
|
||||||
|
void InOutParam( bool &ok = true /In,Out/ );
|
||||||
|
|
||||||
|
void setDiagramRenderer( QgsDiagramRenderer *r /Transfer/ );
|
||||||
|
|
||||||
|
inlineKeyWordShouldNotAppear();
|
||||||
|
|
||||||
|
QString labelForRange( double lower, double upper ) const /PyName=labelForLowerUpper/;
|
||||||
|
|
||||||
|
void setComposition( QgsComposition *c /KeepReference/ );
|
||||||
|
|
||||||
|
void removeProxyFactory( QNetworkProxyFactory *factory /TransferBack/ );
|
||||||
|
|
||||||
|
bool removeFunctionBody( const QList<int, QString> &list, QgsVectorLayer *vl );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool thisShouldBeListed();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void privateMethodSIPRUNareShown();
|
||||||
|
public:
|
||||||
|
void FallBackToPublic();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class ClassWithPrivateInheritanceOnly
|
||||||
|
{
|
||||||
|
|
||||||
|
%TypeHeaderCode
|
||||||
|
#include "sipifyheader.h"
|
||||||
|
%End
|
||||||
|
explicit ClassWithPrivateInheritanceOnly();
|
||||||
|
%Docstring
|
||||||
|
A constructor with definition in header on several lines
|
||||||
|
%End
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
164
tests/scripts/sipifyheader.h
Normal file
164
tests/scripts/sipifyheader.h
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
sipifyheader.h - Demo for sipify.pl
|
||||||
|
--------------------------------------
|
||||||
|
Date : 28.03.2017
|
||||||
|
Copyright : (C) 2017 Denis Rouzaud
|
||||||
|
email : denis.rouzaud@gmail.com
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef SIPIFYHEADER_H
|
||||||
|
#define SIPIFYHEADER_H
|
||||||
|
|
||||||
|
#include "qgis_core.h"
|
||||||
|
#include <QtClass>
|
||||||
|
|
||||||
|
#include "sipifyheader.h"
|
||||||
|
|
||||||
|
// one shall include qgis.h to use SIP annotations
|
||||||
|
#include "qgis.h"
|
||||||
|
|
||||||
|
class QgsForwardDeclaration;
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* This is some random block comment that will not be displayed.
|
||||||
|
* Block comments shall will placed upon class, method, enum without
|
||||||
|
* any blank lines in between.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
// typedef have no Docstring, so commenting here will not be used
|
||||||
|
#ifdef SIP_RUN
|
||||||
|
typedef qint64 QgsFeatureId;
|
||||||
|
#else
|
||||||
|
typedef WhatEver ShouldNotBeDisplayed;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** \ingroup core
|
||||||
|
* A super QGIS class
|
||||||
|
*/
|
||||||
|
#ifndef SIP_RUN // following will be hidden
|
||||||
|
class CORE_EXPORT QgsSuperClass : public QtClass<QVariant>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//! A constructor with definition in header
|
||||||
|
QgsSuperClass()
|
||||||
|
: QtClass<QVariant>()
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
#else // following will be displayed in generated file
|
||||||
|
typedef QVector<QVariant> QgsSuperClass;
|
||||||
|
|
||||||
|
% MappedType QgsSuperClass
|
||||||
|
{
|
||||||
|
// The annotations are modified by astyle (these will be fixed by sipify.pl)
|
||||||
|
% TypeHeaderCode
|
||||||
|
#include <qgssipifyheader.h>
|
||||||
|
% End
|
||||||
|
|
||||||
|
% ConvertFromTypeCode
|
||||||
|
// Create the list.
|
||||||
|
PyObject *l;
|
||||||
|
return l;
|
||||||
|
% End
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** \ingroup core
|
||||||
|
* Documentation goes here
|
||||||
|
*/
|
||||||
|
class CORE_EXPORT QgsSipifyHeader : public QtClass<QVariant>, private QgsBaseClass
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//! This is an enum
|
||||||
|
enum MyEnum
|
||||||
|
{
|
||||||
|
Success = 0, //!< Edit operation was successful
|
||||||
|
NoSuccess = 1, //!< Edit operation resulted in an empty geometry
|
||||||
|
};
|
||||||
|
|
||||||
|
//! A constructor with definition in header
|
||||||
|
explicit QgsSipifyHeader()
|
||||||
|
: QtClass<QVariant>()
|
||||||
|
, QgsBaseClass()
|
||||||
|
{}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A classic constructor with arguments
|
||||||
|
*/
|
||||||
|
QgsSipifyHeader( QWidget *parent SIP_TRANSFERTHIS = nullptr );
|
||||||
|
|
||||||
|
//! A multiline method signature
|
||||||
|
void multilineMethod( const QgsPoint &startPoint,
|
||||||
|
QgsFeatureId featureId,
|
||||||
|
QgsVectorLayer *vl,
|
||||||
|
QgsSnapper::SnappingType snap_to ) const;
|
||||||
|
|
||||||
|
// Adding SIP_SKIP at the end of a line will discard this MethodCode
|
||||||
|
bool thisShouldBeSkipped() const SIP_SKIP;
|
||||||
|
|
||||||
|
//! Factory annotation
|
||||||
|
virtual QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) override SIP_FACTORY;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* My long doc string
|
||||||
|
* is not very interesting!
|
||||||
|
*/
|
||||||
|
void LongDocStringMethod();
|
||||||
|
|
||||||
|
bool isOKwithErrMesg( QString &ErrMsg SIP_OUT );
|
||||||
|
|
||||||
|
void InOutParam( bool &ok = true SIP_INOUT );
|
||||||
|
|
||||||
|
void setDiagramRenderer( QgsDiagramRenderer *r SIP_TRANSFER );
|
||||||
|
|
||||||
|
inline inlineKeyWordShouldNotAppear();
|
||||||
|
|
||||||
|
QString labelForRange( double lower, double upper ) const SIP_PYNAME( labelForLowerUpper );
|
||||||
|
|
||||||
|
void setComposition( QgsComposition *c SIP_KEEPREFERENCE );
|
||||||
|
|
||||||
|
void removeProxyFactory( QNetworkProxyFactory *factory SIP_TRANSFERBACK );
|
||||||
|
|
||||||
|
bool removeFunctionBody( const QList<int, QString> &list, QgsVectorLayer *vl ) { doSomething; return true; } // some comments
|
||||||
|
|
||||||
|
bool deletedFunction() = delete; // some comments
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool thisShouldBeListed();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void privateMethodAreNotShown();
|
||||||
|
#ifdef SIP_RUN
|
||||||
|
void privateMethodSIPRUNareShown();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
public:
|
||||||
|
void FallBackToPublic();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void PrivateAgain();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class CORE_EXPORT ClassWithPrivateInheritanceOnly : private QgsBaseClass
|
||||||
|
{
|
||||||
|
//! A constructor with definition in header on several lines
|
||||||
|
explicit ClassWithPrivateInheritanceOnly()
|
||||||
|
: QtClass<QVariant>()
|
||||||
|
, QgsBaseClass()
|
||||||
|
{
|
||||||
|
doWhatYouLike();
|
||||||
|
haveFun();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
@ -1,7 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
DIR=$(git rev-parse --show-toplevel)
|
DIR=$(git rev-parse --show-toplevel)
|
||||||
|
|
||||||
# GNU prefix command for mac os support (gsed, gsplit)
|
# GNU prefix command for mac os support (gsed, gsplit)
|
13
tests/scripts/test_sipify.sh
Executable file
13
tests/scripts/test_sipify.sh
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# This runs sipify on the demo header and checks output
|
||||||
|
|
||||||
|
DIR=$(git rev-parse --show-toplevel)
|
||||||
|
|
||||||
|
outdiff=$(${DIR}/scripts/sipify.pl ${DIR}/tests/scripts/sipifyheader.h | diff ${DIR}/tests/scripts/sipifyheader.expected.sip -)
|
||||||
|
|
||||||
|
if [[ $outdiff ]]; then
|
||||||
|
echo " *** sipify.pl did not output expected file"
|
||||||
|
echo "$outdiff"
|
||||||
|
exit 1
|
||||||
|
fi
|
Loading…
x
Reference in New Issue
Block a user