| %module python_annotations_variable_c | |
| // Tests Python variable annotations, containing C/C++ types, in C++ member variables wrappers. | |
| // Member variables are wrapped using Python properties. | |
| // This is in a separate test to python_annotations_c.i (which tests function annotations) so that runtime testing | |
| // of variable annotations can be done which requires Python 3.6 and later. A syntax error occurs in earlier | |
| // versions of Python when importing code containing variable annotations. | |
| %feature("python:annotations", "c"); | |
| %feature("python:annotations:novar") member_variable_not_annotated; | |
| %feature("python:annotations:novar") A_CONSTANT_NOVAR; | |
| %inline %{ | |
| namespace Space { | |
| template<class T> | |
| struct Template { | |
| int member_variable; | |
| int member_variable_not_annotated; | |
| }; | |
| struct StructWithVar{ | |
| int member_variable; | |
| }; | |
| struct StructWithVarNotAnnotated { | |
| int member_variable_not_annotated; | |
| }; | |
| short global_variable; | |
| } | |
| %} | |
| %template(TemplateShort) Space::Template<short>; | |
| %inline %{ | |
| #ifdef SWIGPYTHON_BUILTIN | |
| int is_python_builtin() { return 1; } | |
| #else | |
| int is_python_builtin() { return 0; } | |
| #endif | |
| #if defined SWIGPYTHON_FASTPROXY | |
| int is_python_fastproxy() { return 1; } | |
| #else | |
| int is_python_fastproxy() { return 0; } | |
| #endif | |
| %} | |
| %constant int A_CONSTANT_INT = 42; | |
| %constant int A_CONSTANT_NOVAR = 42; | |
| %constant short A_CONSTANT_SHORT = 42; |