Skip to content

Commit 9a6ddbd

Browse files
committed
also monkey patch the former enum type
1 parent 38c2d4a commit 9a6ddbd

File tree

4 files changed

+9
-5
lines changed

4 files changed

+9
-5
lines changed

python/core/auto_additions/qgsmaplayer.py

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# The following has been generated automatically from src/core/qgsmaplayer.h
2+
QgsMapLayer.LayerType = QgsMapLayerType
23
# monkey patching scoped based enum
34
QgsMapLayer.VectorLayer = QgsMapLayerType.VectorLayer
45
QgsMapLayer.VectorLayer.__doc__ = ""

scripts/sipify.pl

+6-3
Original file line numberDiff line numberDiff line change
@@ -959,12 +959,15 @@ sub detect_non_method_member{
959959
my $is_scope_based = "0";
960960
$is_scope_based = "1" if defined $2;
961961
my $monkeypatch = "0";
962-
$monkeypatch = "1" if defined $is_scope_based eq "1" and $LINE =~ m/SIP_MONKEYPATCH_SCOPEENUM(_UNNEST)?(:?\(\s*(?<emkb>\w+)\s*\))?/;
962+
$monkeypatch = "1" if defined $is_scope_based eq "1" and $LINE =~ m/SIP_MONKEYPATCH_SCOPEENUM(_UNNEST)?(:?\(\s*(?<emkb>\w+)\s*,\s*(?<emkf>\w+)\s*\))?/;
963963
my $enum_mk_base = "";
964964
$enum_mk_base = $+{emkb} if defined $+{emkb};
965+
if (defined $+{emkf} and $monkeypatch eq "1"){
966+
push @OUTPUT_PYTHON, "$enum_mk_base.$+{emkf} = $enum_qualname\n";
967+
}
965968
if ($LINE =~ m/\{((\s*\w+)(\s*=\s*[\w\s\d<|]+.*?)?(,?))+\s*\}/){
966969
# one line declaration
967-
$LINE !~ m/=/ or exit_with_error("spify.pl does not handle enum one liners with value assignment. Use multiple lines instead.");
970+
$LINE !~ m/=/ or exit_with_error("Sipify does not handle enum one liners with value assignment. Use multiple lines instead. Or jusr write a new parser.");
968971
next;
969972
}
970973
else
@@ -984,7 +987,7 @@ sub detect_non_method_member{
984987

985988
do {no warnings 'uninitialized';
986989
my $enum_decl = $LINE =~ s/^(\s*(?<em>\w+))(\s+SIP_\w+(?:\([^()]+\))?)?(?:\s*=\s*(?:[\w\s\d|+-]|::|<<)+)?(,?)(:?\s*\/\/!<\s*(?<co>.*)|.*)$/$1$3$4/r;
987-
my $enum_member = $+{em};
990+
my $enum_member = $+{em};
988991
my $comment = $+{co};
989992
dbg_info("is_scope_based:$is_scope_based enum_mk_base:$enum_mk_base monkeypatch:$monkeypatch");
990993
if ($is_scope_based eq "1") {

src/core/qgis_sip.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@
242242
* These macros should be removed in QGIS 4
243243
*/
244244
#define SIP_MONKEYPATCH_SCOPEENUM
245-
#define SIP_MONKEYPATCH_SCOPEENUM_UNNEST(OUTSIDE_CLASS)
245+
#define SIP_MONKEYPATCH_SCOPEENUM_UNNEST(OUTSIDE_CLASS,FORMERNAME)
246246

247247

248248
#endif // QGIS_SIP_H

src/core/qgsmaplayer.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class QPainter;
5858

5959

6060
//! Types of layers that can be added to a map
61-
enum class QgsMapLayerType SIP_MONKEYPATCH_SCOPEENUM_UNNEST( QgsMapLayer ) : int
61+
enum class QgsMapLayerType SIP_MONKEYPATCH_SCOPEENUM_UNNEST( QgsMapLayer, LayerType ) : int
6262
{
6363
VectorLayer,
6464
RasterLayer,

0 commit comments

Comments
 (0)