py: Add MICROPY_PY_ALL_SPECIAL_METHODS and __iadd__ special method under it.
diff --git a/py/mpconfig.h b/py/mpconfig.h
index b54bd65..e8c8fcc 100644
--- a/py/mpconfig.h
+++ b/py/mpconfig.h
@@ -376,6 +376,12 @@
#define MICROPY_PY_BUILTINS_PROPERTY (1)
#endif
+// Whether to support complete set of special methods
+// for user classes, otherwise only the most used
+#ifndef MICROPY_PY_ALL_SPECIAL_METHODS
+#define MICROPY_PY_ALL_SPECIAL_METHODS (0)
+#endif
+
// Whether to support compile function
#ifndef MICROPY_PY_BUILTINS_COMPILE
#define MICROPY_PY_BUILTINS_COMPILE (0)
diff --git a/py/objtype.c b/py/objtype.c
index 53408a0..f905831 100644
--- a/py/objtype.c
+++ b/py/objtype.c
@@ -378,9 +378,11 @@
MP_BINARY_OP_INPLACE_XOR,
MP_BINARY_OP_INPLACE_AND,
MP_BINARY_OP_INPLACE_LSHIFT,
- MP_BINARY_OP_INPLACE_RSHIFT,
- MP_BINARY_OP_INPLACE_ADD,
- MP_BINARY_OP_INPLACE_SUBTRACT,
+ MP_BINARY_OP_INPLACE_RSHIFT,*/
+ #if MICROPY_PY_ALL_SPECIAL_METHODS
+ [MP_BINARY_OP_INPLACE_ADD] = MP_QSTR___iadd__,
+ #endif
+ /*MP_BINARY_OP_INPLACE_SUBTRACT,
MP_BINARY_OP_INPLACE_MULTIPLY,
MP_BINARY_OP_INPLACE_FLOOR_DIVIDE,
MP_BINARY_OP_INPLACE_TRUE_DIVIDE,
diff --git a/py/qstrdefs.h b/py/qstrdefs.h
index 23c2507..ffb2bf0 100644
--- a/py/qstrdefs.h
+++ b/py/qstrdefs.h
@@ -75,6 +75,9 @@
Q(__le__)
Q(__ge__)
Q(__reversed__)
+#if MICROPY_PY_ALL_SPECIAL_METHODS
+Q(__iadd__)
+#endif
Q(micropython)
Q(bytecode)
diff --git a/unix/mpconfigport.h b/unix/mpconfigport.h
index 42650eb..a0366d9 100644
--- a/unix/mpconfigport.h
+++ b/unix/mpconfigport.h
@@ -59,6 +59,7 @@
#define MICROPY_PY_BUILTINS_FROZENSET (1)
#define MICROPY_PY_BUILTINS_COMPILE (1)
#define MICROPY_PY_MICROPYTHON_MEM_INFO (1)
+#define MICROPY_PY_ALL_SPECIAL_METHODS (1)
#define MICROPY_PY_SYS_EXIT (1)
#define MICROPY_PY_SYS_PLATFORM "linux"
#define MICROPY_PY_SYS_MAXSIZE (1)