From 0538106d52b5169ff4a8eec90ae3c3bf468d6d28 Mon Sep 17 00:00:00 2001 From: rdb Date: Tue, 10 May 2022 13:54:03 +0200 Subject: [PATCH 1/7] glgsg: Fix half float color buffers with GLES 3 / WebGL 2 Part of fix for #1296 --- panda/src/glstuff/glGraphicsBuffer_src.cxx | 27 ++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/panda/src/glstuff/glGraphicsBuffer_src.cxx b/panda/src/glstuff/glGraphicsBuffer_src.cxx index ea573a13e0..983e7cef23 100644 --- a/panda/src/glstuff/glGraphicsBuffer_src.cxx +++ b/panda/src/glstuff/glGraphicsBuffer_src.cxx @@ -857,6 +857,26 @@ bind_slot(int layer, bool rb_resize, Texture **attach, RenderTexturePlane slot, gl_format = GL_DEPTH_COMPONENT16; } break; +#ifndef OPENGLES_1 + case RTP_aux_hrgba_0: + case RTP_aux_hrgba_1: + case RTP_aux_hrgba_2: + case RTP_aux_hrgba_3: + case RTP_aux_float_0: + case RTP_aux_float_1: + case RTP_aux_float_2: + case RTP_aux_float_3: + if (glgsg->has_extension("GL_EXT_color_buffer_float")) { + if (slot >= RTP_aux_float_0 && slot <= RTP_aux_float_3) { + gl_format = GL_RGBA32F; + } else { + gl_format = GL_RGBA16F; + } + } + else if (glgsg->has_extension("GL_EXT_color_buffer_half_float")) { + gl_format = GL_RGBA16F_EXT; + } +#endif // NB: we currently use RTP_stencil to store the right eye for stereo. // case RTP_stencil: gl_format = GL_STENCIL_INDEX8; break default: @@ -914,9 +934,12 @@ bind_slot(int layer, bool rb_resize, Texture **attach, RenderTexturePlane slot, } #ifndef OPENGLES_1 } else if (_fb_properties.get_float_color() && - _fb_properties.get_color_bits() > 16 * 3 && glgsg->has_extension("GL_EXT_color_buffer_float")) { - gl_format = GL_RGBA32F_EXT; + if (_fb_properties.get_color_bits() > 16 * 3) { + gl_format = GL_RGBA32F; + } else { + gl_format = GL_RGBA16F; + } } else if (_fb_properties.get_float_color() && glgsg->has_extension("GL_EXT_color_buffer_half_float")) { gl_format = GL_RGBA16F_EXT; From fbea0056f5bc5ae3d0f292331640114ede9471f9 Mon Sep 17 00:00:00 2001 From: rdb Date: Tue, 10 May 2022 14:08:21 +0200 Subject: [PATCH 2/7] general: Allow compiling Panda headers on Windows without NOMINMAX --- dtool/src/prc/notifyCategory.I | 2 +- panda/src/device/inputDevice.I | 2 +- panda/src/display/drawableRegion.I | 2 +- panda/src/display/frameBufferProperties.I | 9 ++--- panda/src/display/graphicsOutput.I | 24 ++++++------- panda/src/display/graphicsStateGuardian.I | 4 +-- panda/src/egg/eggMesherEdge.I | 2 +- panda/src/express/multifile.I | 2 +- panda/src/express/pointerToArray.I | 12 +++---- panda/src/express/pointerToArray_ext.I | 12 +++---- panda/src/gobj/geomVertexArrayData.I | 4 +-- panda/src/gobj/geomVertexWriter.I | 4 +-- panda/src/gobj/paramTexture.I | 2 +- panda/src/gobj/textureContext.I | 4 +-- panda/src/grutil/geoMipTerrain.I | 4 +-- panda/src/linmath/lvector3_src.I | 4 +-- panda/src/parametrics/nurbsBasisVector.I | 2 +- .../parametrics/parametricCurveCollection.I | 2 +- .../src/particlesystem/baseParticleRenderer.I | 2 +- panda/src/pgui/pgEntry.I | 2 +- panda/src/pgui/pgSliderBar.I | 2 +- panda/src/pipeline/pipeline.I | 2 +- panda/src/pipeline/thread.I | 2 +- panda/src/pnmimage/convert_srgb.I | 8 ++--- panda/src/pnmimage/pfmFile.I | 8 ++--- panda/src/pnmimage/pnmImage.I | 36 +++++++++---------- panda/src/putil/clockObject.I | 2 +- 27 files changed, 81 insertions(+), 80 deletions(-) diff --git a/dtool/src/prc/notifyCategory.I b/dtool/src/prc/notifyCategory.I index 74c1965778..4f513722f4 100644 --- a/dtool/src/prc/notifyCategory.I +++ b/dtool/src/prc/notifyCategory.I @@ -49,7 +49,7 @@ set_severity(NotifySeverity severity) { _severity = severity; #else // enforce the no-debug, no-spam rule. - _severity = std::max(severity, NS_info); + _severity = (std::max)(severity, NS_info); #endif invalidate_cache(); } diff --git a/panda/src/device/inputDevice.I b/panda/src/device/inputDevice.I index 532e77f796..3bf6aa9001 100644 --- a/panda/src/device/inputDevice.I +++ b/panda/src/device/inputDevice.I @@ -344,7 +344,7 @@ is_axis_known(size_t index) const { INLINE void InputDevice:: set_vibration(double strong, double weak) { LightMutexHolder holder(_lock); - do_set_vibration(std::max(std::min(strong, 1.0), 0.0), std::max(std::min(weak, 1.0), 0.0)); + do_set_vibration((std::max)((std::min)(strong, 1.0), 0.0), (std::max)((std::min)(weak, 1.0), 0.0)); } /** diff --git a/panda/src/display/drawableRegion.I b/panda/src/display/drawableRegion.I index 71fc1658cc..dcaa4ba276 100644 --- a/panda/src/display/drawableRegion.I +++ b/panda/src/display/drawableRegion.I @@ -242,7 +242,7 @@ INLINE void DrawableRegion:: update_pixel_factor() { PN_stdfloat new_pixel_factor; if (supports_pixel_zoom()) { - new_pixel_factor = (PN_stdfloat)1 / sqrt(std::max(_pixel_zoom, (PN_stdfloat)1.0)); + new_pixel_factor = (PN_stdfloat)1 / sqrt((std::max)(_pixel_zoom, (PN_stdfloat)1.0)); } else { new_pixel_factor = 1; } diff --git a/panda/src/display/frameBufferProperties.I b/panda/src/display/frameBufferProperties.I index 756a98c0be..af69f86fee 100644 --- a/panda/src/display/frameBufferProperties.I +++ b/panda/src/display/frameBufferProperties.I @@ -57,10 +57,11 @@ get_depth_bits() const { */ INLINE int FrameBufferProperties:: get_color_bits() const { - return std::max(_property[FBP_color_bits], - _property[FBP_red_bits] + - _property[FBP_green_bits] + - _property[FBP_blue_bits]); + return (std::max)( + _property[FBP_color_bits], + _property[FBP_red_bits] + + _property[FBP_green_bits] + + _property[FBP_blue_bits]); } /** diff --git a/panda/src/display/graphicsOutput.I b/panda/src/display/graphicsOutput.I index 992f634dd9..1f4e2d87a4 100644 --- a/panda/src/display/graphicsOutput.I +++ b/panda/src/display/graphicsOutput.I @@ -167,8 +167,8 @@ get_y_size() const { */ INLINE LVecBase2i GraphicsOutput:: get_fb_size() const { - return LVecBase2i(std::max(int(_size.get_x() * get_pixel_factor()), 1), - std::max(int(_size.get_y() * get_pixel_factor()), 1)); + return LVecBase2i((std::max)(int(_size.get_x() * get_pixel_factor()), 1), + (std::max)(int(_size.get_y() * get_pixel_factor()), 1)); } /** @@ -178,7 +178,7 @@ get_fb_size() const { */ INLINE int GraphicsOutput:: get_fb_x_size() const { - return std::max(int(_size.get_x() * get_pixel_factor()), 1); + return (std::max)(int(_size.get_x() * get_pixel_factor()), 1); } /** @@ -188,7 +188,7 @@ get_fb_x_size() const { */ INLINE int GraphicsOutput:: get_fb_y_size() const { - return std::max(int(_size.get_y() * get_pixel_factor()), 1); + return (std::max)(int(_size.get_y() * get_pixel_factor()), 1); } /** @@ -200,8 +200,8 @@ INLINE LVecBase2i GraphicsOutput:: get_sbs_left_size() const { PN_stdfloat left_w = _sbs_left_dimensions[1] - _sbs_left_dimensions[0]; PN_stdfloat left_h = _sbs_left_dimensions[3] - _sbs_left_dimensions[2]; - return LVecBase2i(std::max(int(_size.get_x() * left_w), 1), - std::max(int(_size.get_y() * left_h), 1)); + return LVecBase2i((std::max)(int(_size.get_x() * left_w), 1), + (std::max)(int(_size.get_y() * left_h), 1)); } /** @@ -212,7 +212,7 @@ get_sbs_left_size() const { INLINE int GraphicsOutput:: get_sbs_left_x_size() const { PN_stdfloat left_w = _sbs_left_dimensions[1] - _sbs_left_dimensions[0]; - return std::max(int(_size.get_x() * left_w), 1); + return (std::max)(int(_size.get_x() * left_w), 1); } /** @@ -223,7 +223,7 @@ get_sbs_left_x_size() const { INLINE int GraphicsOutput:: get_sbs_left_y_size() const { PN_stdfloat left_h = _sbs_left_dimensions[3] - _sbs_left_dimensions[2]; - return std::max(int(_size.get_y() * left_h), 1); + return (std::max)(int(_size.get_y() * left_h), 1); } /** @@ -235,8 +235,8 @@ INLINE LVecBase2i GraphicsOutput:: get_sbs_right_size() const { PN_stdfloat right_w = _sbs_right_dimensions[1] - _sbs_right_dimensions[0]; PN_stdfloat right_h = _sbs_right_dimensions[3] - _sbs_right_dimensions[2]; - return LVecBase2i(std::max(int(_size.get_x() * right_w), 1), - std::max(int(_size.get_y() * right_h), 1)); + return LVecBase2i((std::max)(int(_size.get_x() * right_w), 1), + (std::max)(int(_size.get_y() * right_h), 1)); } /** @@ -247,7 +247,7 @@ get_sbs_right_size() const { INLINE int GraphicsOutput:: get_sbs_right_x_size() const { PN_stdfloat right_w = _sbs_right_dimensions[1] - _sbs_right_dimensions[0]; - return std::max(int(_size.get_x() * right_w), 1); + return (std::max)(int(_size.get_x() * right_w), 1); } /** @@ -258,7 +258,7 @@ get_sbs_right_x_size() const { INLINE int GraphicsOutput:: get_sbs_right_y_size() const { PN_stdfloat right_h = _sbs_right_dimensions[3] - _sbs_right_dimensions[2]; - return std::max(int(_size.get_y() * right_h), 1); + return (std::max)(int(_size.get_y() * right_h), 1); } /** diff --git a/panda/src/display/graphicsStateGuardian.I b/panda/src/display/graphicsStateGuardian.I index f14a0fb087..09dd8c60b4 100644 --- a/panda/src/display/graphicsStateGuardian.I +++ b/panda/src/display/graphicsStateGuardian.I @@ -258,7 +258,7 @@ get_max_vertices_per_primitive() const { INLINE int GraphicsStateGuardian:: get_max_texture_stages() const { if (max_texture_stages > 0) { - return std::min(_max_texture_stages, (int)max_texture_stages); + return (std::min)(_max_texture_stages, (int)max_texture_stages); } return _max_texture_stages; } @@ -695,7 +695,7 @@ get_timer_queries_active() const { INLINE int GraphicsStateGuardian:: get_max_color_targets() const { if (max_color_targets > 0) { - return std::min(_max_color_targets, (int)max_color_targets); + return (std::min)(_max_color_targets, (int)max_color_targets); } return _max_color_targets; } diff --git a/panda/src/egg/eggMesherEdge.I b/panda/src/egg/eggMesherEdge.I index dbd37f0b70..b3520aa7bc 100644 --- a/panda/src/egg/eggMesherEdge.I +++ b/panda/src/egg/eggMesherEdge.I @@ -58,7 +58,7 @@ matches(const EggMesherEdge &other) const { */ INLINE EggMesherEdge *EggMesherEdge:: common_ptr() { - return std::min(this, _opposite); + return (std::min)(this, _opposite); } /** diff --git a/panda/src/express/multifile.I b/panda/src/express/multifile.I index 21462cc467..d418c77598 100644 --- a/panda/src/express/multifile.I +++ b/panda/src/express/multifile.I @@ -431,6 +431,6 @@ is_cert_special() const { */ INLINE std::streampos Multifile::Subfile:: get_last_byte_pos() const { - return std::max(_index_start + (std::streampos)_index_length, + return (std::max)(_index_start + (std::streampos)_index_length, _data_start + (std::streampos)_data_length) - (std::streampos)1; } diff --git a/panda/src/express/pointerToArray.I b/panda/src/express/pointerToArray.I index 5fb560b695..da0f4ea5ae 100644 --- a/panda/src/express/pointerToArray.I +++ b/panda/src/express/pointerToArray.I @@ -471,9 +471,9 @@ set_data(const std::string &data) { template INLINE std::string PointerToArray:: get_subdata(size_type n, size_type count) const { - n = std::min(n, size()); - count = std::max(count, n); - count = std::min(count, size() - n); + n = (std::min)(n, size()); + count = (std::max)(count, n); + count = (std::min)(count, size() - n); return std::string((const char *)(p() + n), sizeof(Element) * count); } @@ -965,9 +965,9 @@ get_data() const { template INLINE std::string ConstPointerToArray:: get_subdata(size_type n, size_type count) const { - n = std::min(n, size()); - count = std::max(count, n); - count = std::min(count, size() - n); + n = (std::min)(n, size()); + count = (std::max)(count, n); + count = (std::min)(count, size() - n); return std::string((const char *)(p() + n), sizeof(Element) * count); } diff --git a/panda/src/express/pointerToArray_ext.I b/panda/src/express/pointerToArray_ext.I index b64f973a5f..425f4d87e3 100644 --- a/panda/src/express/pointerToArray_ext.I +++ b/panda/src/express/pointerToArray_ext.I @@ -249,9 +249,9 @@ set_data(PyObject *data) { template INLINE PyObject *Extension >:: get_subdata(size_t n, size_t count) const { - n = std::min(n, this->_this->size()); - count = std::max(count, n); - count = std::min(count, this->_this->size() - n); + n = (std::min)(n, this->_this->size()); + count = (std::max)(count, n); + count = (std::min)(count, this->_this->size() - n); #if PY_MAJOR_VERSION >= 3 return PyBytes_FromStringAndSize((char *)(this->_this->p() + n), sizeof(Element) * count); #else @@ -313,9 +313,9 @@ get_data() const { template INLINE PyObject *Extension >:: get_subdata(size_t n, size_t count) const { - n = std::min(n, this->_this->size()); - count = std::max(count, n); - count = std::min(count, this->_this->size() - n); + n = (std::min)(n, this->_this->size()); + count = (std::max)(count, n); + count = (std::min)(count, this->_this->size() - n); #if PY_MAJOR_VERSION >= 3 return PyBytes_FromStringAndSize((char *)(this->_this->p() + n), sizeof(Element) * count); #else diff --git a/panda/src/gobj/geomVertexArrayData.I b/panda/src/gobj/geomVertexArrayData.I index 30e5c590e8..8c1bfdc6fd 100644 --- a/panda/src/gobj/geomVertexArrayData.I +++ b/panda/src/gobj/geomVertexArrayData.I @@ -535,8 +535,8 @@ get_data() const { INLINE vector_uchar GeomVertexArrayDataHandle:: get_subdata(size_t start, size_t size) const { mark_used(); - start = std::min(start, _cdata->_buffer.get_size()); - size = std::min(size, _cdata->_buffer.get_size() - start); + start = (std::min)(start, _cdata->_buffer.get_size()); + size = (std::min)(size, _cdata->_buffer.get_size() - start); const unsigned char *ptr = _cdata->_buffer.get_read_pointer(true) + start; return vector_uchar(ptr, ptr + size); } diff --git a/panda/src/gobj/geomVertexWriter.I b/panda/src/gobj/geomVertexWriter.I index b55fdd5f4a..9795262150 100644 --- a/panda/src/gobj/geomVertexWriter.I +++ b/panda/src/gobj/geomVertexWriter.I @@ -1382,13 +1382,13 @@ inc_add_pointer() { _handle = nullptr; GeomVertexDataPipelineWriter writer(_vertex_data, true, _current_thread); writer.check_array_writers(); - writer.set_num_rows(std::max(write_row + 1, writer.get_num_rows())); + writer.set_num_rows((std::max)(write_row + 1, writer.get_num_rows())); _handle = writer.get_array_writer(_array); } else { // Otherwise, we can get away with modifying only the one array we're // using. - _handle->set_num_rows(std::max(write_row + 1, _handle->get_num_rows())); + _handle->set_num_rows((std::max)(write_row + 1, _handle->get_num_rows())); } set_pointer(write_row); diff --git a/panda/src/gobj/paramTexture.I b/panda/src/gobj/paramTexture.I index c8235778e8..059a4ed33a 100644 --- a/panda/src/gobj/paramTexture.I +++ b/panda/src/gobj/paramTexture.I @@ -55,7 +55,7 @@ INLINE ParamTextureImage:: ParamTextureImage(Texture *tex, bool read, bool write, int z, int n) : _texture(tex), _access(0), - _bind_level(std::min(n, 127)), + _bind_level((std::min)(n, 127)), _bind_layer(z) { if (read) { diff --git a/panda/src/gobj/textureContext.I b/panda/src/gobj/textureContext.I index 2c58bc7b07..ae07c96852 100644 --- a/panda/src/gobj/textureContext.I +++ b/panda/src/gobj/textureContext.I @@ -122,7 +122,7 @@ mark_loaded() { // _data_size_bytes = _data->get_texture_size_bytes(); _properties_modified = get_texture()->get_properties_modified(); _image_modified = get_texture()->get_image_modified(); - update_modified(std::max(_properties_modified, _image_modified)); + update_modified((std::max)(_properties_modified, _image_modified)); // Assume the texture is now resident. set_resident(true); @@ -136,7 +136,7 @@ INLINE void TextureContext:: mark_simple_loaded() { _properties_modified = get_texture()->get_properties_modified(); _simple_image_modified = get_texture()->get_simple_image_modified(); - update_modified(std::max(_properties_modified, _simple_image_modified)); + update_modified((std::max)(_properties_modified, _simple_image_modified)); // The texture's not exactly resident now, but some part of it is. set_resident(true); diff --git a/panda/src/grutil/geoMipTerrain.I b/panda/src/grutil/geoMipTerrain.I index 7eeeddab7a..18dda7240e 100644 --- a/panda/src/grutil/geoMipTerrain.I +++ b/panda/src/grutil/geoMipTerrain.I @@ -479,8 +479,8 @@ get_border_stitching() { */ INLINE double GeoMipTerrain:: get_pixel_value(int x, int y) { - x = std::max(std::min(x,int(_xsize-1)),0); - y = std::max(std::min(y,int(_ysize-1)),0); + x = (std::max)((std::min)(x,int(_xsize-1)),0); + y = (std::max)((std::min)(y,int(_ysize-1)),0); if (_heightfield.is_grayscale()) { return double(_heightfield.get_bright(x, y)); } else { diff --git a/panda/src/linmath/lvector3_src.I b/panda/src/linmath/lvector3_src.I index 3aa198c513..99d28ac156 100644 --- a/panda/src/linmath/lvector3_src.I +++ b/panda/src/linmath/lvector3_src.I @@ -183,10 +183,10 @@ angle_rad(const FLOATNAME(LVector3) &other) const { // poorly as dot(other) approaches 1.0. if (dot(other) < 0.0f) { FLOATTYPE a = ((*this)+other).length() / 2.0f; - return MathNumbers::cpi((FLOATTYPE)0.0f) - 2.0f * casin(std::min(a, (FLOATTYPE)1.0)); + return MathNumbers::cpi((FLOATTYPE)0.0f) - 2.0f * casin((std::min)(a, (FLOATTYPE)1.0)); } else { FLOATTYPE a = ((*this)-other).length() / 2.0f; - return 2.0f * casin(std::min(a, (FLOATTYPE)1.0)); + return 2.0f * casin((std::min)(a, (FLOATTYPE)1.0)); } } diff --git a/panda/src/parametrics/nurbsBasisVector.I b/panda/src/parametrics/nurbsBasisVector.I index 3628d7564b..8bb907f8e9 100644 --- a/panda/src/parametrics/nurbsBasisVector.I +++ b/panda/src/parametrics/nurbsBasisVector.I @@ -110,5 +110,5 @@ scale_t(int segment, PN_stdfloat t) const { PN_stdfloat from = _segments[segment]._from; PN_stdfloat to = _segments[segment]._to; t = (t - from) / (to - from); - return std::min(std::max(t, (PN_stdfloat)0.0), (PN_stdfloat)1.0); + return (std::min)((std::max)(t, (PN_stdfloat)0.0), (PN_stdfloat)1.0); } diff --git a/panda/src/parametrics/parametricCurveCollection.I b/panda/src/parametrics/parametricCurveCollection.I index 711b43b67b..99ebe9e63c 100644 --- a/panda/src/parametrics/parametricCurveCollection.I +++ b/panda/src/parametrics/parametricCurveCollection.I @@ -42,7 +42,7 @@ get_curve(int index) const { */ INLINE void ParametricCurveCollection:: add_curve(ParametricCurve *curve, int index) { - insert_curve(std::max(index, 0), curve); + insert_curve((std::max)(index, 0), curve); } /** diff --git a/panda/src/particlesystem/baseParticleRenderer.I b/panda/src/particlesystem/baseParticleRenderer.I index 7da2037edd..29dd3878aa 100644 --- a/panda/src/particlesystem/baseParticleRenderer.I +++ b/panda/src/particlesystem/baseParticleRenderer.I @@ -97,7 +97,7 @@ get_cur_alpha(BaseParticle* bp) { return bp->get_parameterized_age(); case PR_ALPHA_IN_OUT: - return 2.0 * std::min(bp->get_parameterized_age(), + return 2.0 * (std::min)(bp->get_parameterized_age(), 1.0f - bp->get_parameterized_age()); case PR_ALPHA_USER: diff --git a/panda/src/pgui/pgEntry.I b/panda/src/pgui/pgEntry.I index e398b42b54..e758a7ff8c 100644 --- a/panda/src/pgui/pgEntry.I +++ b/panda/src/pgui/pgEntry.I @@ -558,7 +558,7 @@ set_wtext(const std::wstring &wtext) { update_text(); } #endif - set_cursor_position(std::min(_cursor_position, _text.get_num_characters())); + set_cursor_position((std::min)(_cursor_position, _text.get_num_characters())); return ret; } diff --git a/panda/src/pgui/pgSliderBar.I b/panda/src/pgui/pgSliderBar.I index da5b97c153..8b1ae04685 100644 --- a/panda/src/pgui/pgSliderBar.I +++ b/panda/src/pgui/pgSliderBar.I @@ -381,7 +381,7 @@ get_adjust_event() const { */ INLINE void PGSliderBar:: internal_set_ratio(PN_stdfloat ratio) { - _ratio = std::max(std::min(ratio, (PN_stdfloat)1.0), (PN_stdfloat)0.0); + _ratio = (std::max)((std::min)(ratio, (PN_stdfloat)1.0), (PN_stdfloat)0.0); _needs_reposition = true; adjust(); } diff --git a/panda/src/pipeline/pipeline.I b/panda/src/pipeline/pipeline.I index 2116a030e6..b6c9366e1a 100644 --- a/panda/src/pipeline/pipeline.I +++ b/panda/src/pipeline/pipeline.I @@ -27,7 +27,7 @@ get_render_pipeline() { */ INLINE void Pipeline:: set_min_stages(int min_stages) { - set_num_stages(std::max(min_stages, get_num_stages())); + set_num_stages((std::max)(min_stages, get_num_stages())); } /** diff --git a/panda/src/pipeline/thread.I b/panda/src/pipeline/thread.I index dc7001fd06..d2a82b4585 100644 --- a/panda/src/pipeline/thread.I +++ b/panda/src/pipeline/thread.I @@ -75,7 +75,7 @@ get_pipeline_stage() const { */ INLINE void Thread:: set_min_pipeline_stage(int min_pipeline_stage) { - set_pipeline_stage(std::max(_pipeline_stage, min_pipeline_stage)); + set_pipeline_stage((std::max)(_pipeline_stage, min_pipeline_stage)); } /** diff --git a/panda/src/pnmimage/convert_srgb.I b/panda/src/pnmimage/convert_srgb.I index 27d6bbf802..da183149f9 100644 --- a/panda/src/pnmimage/convert_srgb.I +++ b/panda/src/pnmimage/convert_srgb.I @@ -44,8 +44,8 @@ INLINE unsigned char decode_sRGB_uchar(unsigned char val) { */ INLINE unsigned char decode_sRGB_uchar(float val) { return (val <= 0.04045f) - ? (unsigned char)(std::max(0.f, val) * (255.f / 12.92f) + 0.5f) - : (unsigned char)(cpow((std::min(val, 1.f) + 0.055f) * (1.f / 1.055f), 2.4f) * 255.f + 0.5f); + ? (unsigned char)((std::max)(0.f, val) * (255.f / 12.92f) + 0.5f) + : (unsigned char)(cpow(((std::min)(val, 1.f) + 0.055f) * (1.f / 1.055f), 2.4f) * 255.f + 0.5f); } /** @@ -99,8 +99,8 @@ encode_sRGB_uchar(float val) { return encode_sRGB_uchar_sse2(val); #else return (val < 0.0031308f) - ? (unsigned char) (std::max(0.f, val) * 3294.6f + 0.5f) - : (unsigned char) (269.025f * cpow(std::min(val, 1.f), 0.41666f) - 13.525f); + ? (unsigned char) ((std::max)(0.f, val) * 3294.6f + 0.5f) + : (unsigned char) (269.025f * cpow((std::min)(val, 1.f), 0.41666f) - 13.525f); #endif } diff --git a/panda/src/pnmimage/pfmFile.I b/panda/src/pnmimage/pfmFile.I index 0ba12061ee..a3fe7c3004 100644 --- a/panda/src/pnmimage/pfmFile.I +++ b/panda/src/pnmimage/pfmFile.I @@ -587,12 +587,12 @@ setup_sub_image(const PfmFile ©, int &xto, int &yto, yto = 0; } - x_size = std::min(x_size, copy.get_x_size() - xfrom); - y_size = std::min(y_size, copy.get_y_size() - yfrom); + x_size = (std::min)(x_size, copy.get_x_size() - xfrom); + y_size = (std::min)(y_size, copy.get_y_size() - yfrom); xmin = xto; ymin = yto; - xmax = std::min(xmin + x_size, get_x_size()); - ymax = std::min(ymin + y_size, get_y_size()); + xmax = (std::min)(xmin + x_size, get_x_size()); + ymax = (std::min)(ymin + y_size, get_y_size()); } diff --git a/panda/src/pnmimage/pnmImage.I b/panda/src/pnmimage/pnmImage.I index 07862ab40a..9b396df1ad 100644 --- a/panda/src/pnmimage/pnmImage.I +++ b/panda/src/pnmimage/pnmImage.I @@ -68,7 +68,7 @@ INLINE PNMImage:: */ INLINE xelval PNMImage:: clamp_val(int input_value) const { - return (xelval)std::min(std::max(0, input_value), (int)get_maxval()); + return (xelval)(std::min)((std::max)(0, input_value), (int)get_maxval()); } /** @@ -113,9 +113,9 @@ to_val(const LRGBColorf &value) const { case XE_scRGB_alpha: { LRGBColorf scaled = value * 8192.f + 4096.5f; - col.r = std::min(std::max(0, (int)scaled[0]), 65535); - col.g = std::min(std::max(0, (int)scaled[1]), 65535); - col.b = std::min(std::max(0, (int)scaled[2]), 65535); + col.r = (std::min)((std::max)(0, (int)scaled[0]), 65535); + col.g = (std::min)((std::max)(0, (int)scaled[1]), 65535); + col.b = (std::min)((std::max)(0, (int)scaled[2]), 65535); } break; } @@ -131,7 +131,7 @@ to_val(float input_value) const { switch (_xel_encoding) { case XE_generic: case XE_generic_alpha: - return (int)(std::min(1.0f, std::max(0.0f, input_value)) * get_maxval() + 0.5f); + return (int)((std::min)(1.0f, (std::max)(0.0f, input_value)) * get_maxval() + 0.5f); case XE_generic_sRGB: case XE_generic_sRGB_alpha: @@ -148,7 +148,7 @@ to_val(float input_value) const { case XE_scRGB: case XE_scRGB_alpha: - return std::min(std::max(0, (int)((8192 * input_value) + 4096.5f)), 65535); + return (std::min)((std::max)(0, (int)((8192 * input_value) + 4096.5f)), 65535); default: return 0; @@ -210,7 +210,7 @@ from_val(xelval input_value) const { switch (_xel_encoding) { case XE_generic: case XE_generic_alpha: - return std::min((float)input_value * _inv_maxval, 1.0f); + return (std::min)((float)input_value * _inv_maxval, 1.0f); case XE_generic_sRGB: case XE_generic_sRGB_alpha: @@ -735,19 +735,19 @@ set_xel_a(int x, int y, const LColorf &value) { case XE_scRGB: { LColorf scaled = value * 8192.0f + 4096.5f; - col.r = std::min(std::max(0, (int)scaled[0]), 65535); - col.g = std::min(std::max(0, (int)scaled[1]), 65535); - col.b = std::min(std::max(0, (int)scaled[2]), 65535); + col.r = (std::min)((std::max)(0, (int)scaled[0]), 65535); + col.g = (std::min)((std::max)(0, (int)scaled[1]), 65535); + col.b = (std::min)((std::max)(0, (int)scaled[2]), 65535); } break; case XE_scRGB_alpha: { LColorf scaled = value * 8192.0f + 4096.5f; - col.r = std::min(std::max(0, (int)scaled[0]), 65535); - col.g = std::min(std::max(0, (int)scaled[1]), 65535); - col.b = std::min(std::max(0, (int)scaled[2]), 65535); - alpha_row(y)[x] = std::min(std::max(0, (int)(value[3] * 65535 + 0.5f)), 65535); + col.r = (std::min)((std::max)(0, (int)scaled[0]), 65535); + col.g = (std::min)((std::max)(0, (int)scaled[1]), 65535); + col.b = (std::min)((std::max)(0, (int)scaled[2]), 65535); + alpha_row(y)[x] = (std::min)((std::max)(0, (int)(value[3] * 65535 + 0.5f)), 65535); } break; } @@ -1224,14 +1224,14 @@ setup_sub_image(const PNMImage ©, int &xto, int &yto, yto = 0; } - x_size = std::min(x_size, copy.get_x_size() - xfrom); - y_size = std::min(y_size, copy.get_y_size() - yfrom); + x_size = (std::min)(x_size, copy.get_x_size() - xfrom); + y_size = (std::min)(y_size, copy.get_y_size() - yfrom); xmin = xto; ymin = yto; - xmax = std::min(xmin + x_size, get_x_size()); - ymax = std::min(ymin + y_size, get_y_size()); + xmax = (std::min)(xmin + x_size, get_x_size()); + ymax = (std::min)(ymin + y_size, get_y_size()); } /** diff --git a/panda/src/putil/clockObject.I b/panda/src/putil/clockObject.I index b2cb2975d1..4166c45e59 100644 --- a/panda/src/putil/clockObject.I +++ b/panda/src/putil/clockObject.I @@ -110,7 +110,7 @@ INLINE double ClockObject:: get_dt(Thread *current_thread) const { CDReader cdata(_cycler, current_thread); if (_max_dt > 0.0) { - return std::min(_max_dt, cdata->_dt); + return (std::min)(_max_dt, cdata->_dt); } return cdata->_dt; } From 42a19860d5aac59ae0d91a72d5f758895498008f Mon Sep 17 00:00:00 2001 From: rdb Date: Tue, 10 May 2022 14:11:51 +0200 Subject: [PATCH 3/7] Fix errors when compiling headers with MinGW --- dtool/src/dtoolbase/mutexImpl.h | 2 +- dtool/src/dtoolbase/mutexWin32Impl.cxx | 4 ++-- dtool/src/dtoolbase/mutexWin32Impl.h | 4 ++-- dtool/src/dtoolbase/selectThreadImpl.h | 2 +- panda/src/pipeline/conditionVarFullWin32Impl.cxx | 4 ++-- panda/src/pipeline/conditionVarFullWin32Impl.h | 4 ++-- panda/src/pipeline/conditionVarImpl.h | 2 +- panda/src/pipeline/conditionVarWin32Impl.cxx | 4 ++-- panda/src/pipeline/conditionVarWin32Impl.h | 4 ++-- 9 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dtool/src/dtoolbase/mutexImpl.h b/dtool/src/dtoolbase/mutexImpl.h index f309634ffa..2e741dfe81 100644 --- a/dtool/src/dtoolbase/mutexImpl.h +++ b/dtool/src/dtoolbase/mutexImpl.h @@ -49,7 +49,7 @@ typedef ReMutexPosixImpl ReMutexImpl; // Also define what a true OS-provided lock will be, even if we don't have // threading enabled in the build. Sometimes we need to interface with an // external program or something that wants real locks. -#if defined(WIN32_VC) +#if defined(WIN32_VC) || (defined(_WIN32) && !defined(HAVE_POSIX_THREADS)) #include "mutexWin32Impl.h" typedef MutexWin32Impl TrueMutexImpl; diff --git a/dtool/src/dtoolbase/mutexWin32Impl.cxx b/dtool/src/dtoolbase/mutexWin32Impl.cxx index 594f6c0962..ba25ec1552 100644 --- a/dtool/src/dtoolbase/mutexWin32Impl.cxx +++ b/dtool/src/dtoolbase/mutexWin32Impl.cxx @@ -13,7 +13,7 @@ #include "selectThreadImpl.h" -#ifdef WIN32_VC +#ifdef _WIN32 #include "mutexWin32Impl.h" @@ -25,4 +25,4 @@ MutexWin32Impl() { InitializeCriticalSectionAndSpinCount(&_lock, 4000); } -#endif // WIN32_VC +#endif // _WIN32 diff --git a/dtool/src/dtoolbase/mutexWin32Impl.h b/dtool/src/dtoolbase/mutexWin32Impl.h index 550d4944ab..c508b289e9 100644 --- a/dtool/src/dtoolbase/mutexWin32Impl.h +++ b/dtool/src/dtoolbase/mutexWin32Impl.h @@ -17,7 +17,7 @@ #include "dtoolbase.h" #include "selectThreadImpl.h" -#ifdef WIN32_VC +#ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN 1 #endif @@ -47,6 +47,6 @@ private: #include "mutexWin32Impl.I" -#endif // WIN32_VC +#endif // _WIN32 #endif diff --git a/dtool/src/dtoolbase/selectThreadImpl.h b/dtool/src/dtoolbase/selectThreadImpl.h index 743ea98af7..af5a5db44a 100644 --- a/dtool/src/dtoolbase/selectThreadImpl.h +++ b/dtool/src/dtoolbase/selectThreadImpl.h @@ -47,7 +47,7 @@ #undef TVOLATILE #define TVOLATILE -#elif defined(WIN32_VC) +#elif defined(WIN32_VC) || (defined(_WIN32) && !defined(HAVE_POSIX_THREADS)) // In Windows, use the native threading library. #define THREAD_WIN32_IMPL 1 diff --git a/panda/src/pipeline/conditionVarFullWin32Impl.cxx b/panda/src/pipeline/conditionVarFullWin32Impl.cxx index 6d664735d6..a6442e2b06 100644 --- a/panda/src/pipeline/conditionVarFullWin32Impl.cxx +++ b/panda/src/pipeline/conditionVarFullWin32Impl.cxx @@ -13,8 +13,8 @@ #include "selectThreadImpl.h" -#if defined(WIN32_VC) || defined(WIN64_VC) +#ifdef _WIN32 #include "conditionVarFullWin32Impl.h" -#endif // WIN32_VC +#endif // _WIN32 diff --git a/panda/src/pipeline/conditionVarFullWin32Impl.h b/panda/src/pipeline/conditionVarFullWin32Impl.h index a42d4d86a8..4ec0dac63c 100644 --- a/panda/src/pipeline/conditionVarFullWin32Impl.h +++ b/panda/src/pipeline/conditionVarFullWin32Impl.h @@ -17,7 +17,7 @@ #include "pandabase.h" #include "selectThreadImpl.h" -#if defined(WIN32_VC) +#ifdef _WIN32 #include "mutexWin32Impl.h" #include "pnotify.h" @@ -58,6 +58,6 @@ private: #include "conditionVarFullWin32Impl.I" -#endif // WIN32_VC +#endif // _WIN32 #endif diff --git a/panda/src/pipeline/conditionVarImpl.h b/panda/src/pipeline/conditionVarImpl.h index 7837622ba6..f0dcb12f3e 100644 --- a/panda/src/pipeline/conditionVarImpl.h +++ b/panda/src/pipeline/conditionVarImpl.h @@ -50,7 +50,7 @@ typedef ConditionVarPosixImpl ConditionVarFullImpl; #endif -#if defined(WIN32_VC) +#if defined(WIN32_VC) || (defined(_WIN32) && !defined(HAVE_POSIX_THREADS)) #include "conditionVarWin32Impl.h" typedef ConditionVarWin32Impl TrueConditionVarImpl; diff --git a/panda/src/pipeline/conditionVarWin32Impl.cxx b/panda/src/pipeline/conditionVarWin32Impl.cxx index 9d3a95e0b1..5ba4165a0c 100644 --- a/panda/src/pipeline/conditionVarWin32Impl.cxx +++ b/panda/src/pipeline/conditionVarWin32Impl.cxx @@ -13,8 +13,8 @@ #include "selectThreadImpl.h" -#if defined(WIN32_VC) || defined(WIN64_VC) +#ifdef _WIN32 #include "conditionVarWin32Impl.h" -#endif // WIN32_VC +#endif // _WIN32 diff --git a/panda/src/pipeline/conditionVarWin32Impl.h b/panda/src/pipeline/conditionVarWin32Impl.h index 7ed6513d6e..99bdc074dc 100644 --- a/panda/src/pipeline/conditionVarWin32Impl.h +++ b/panda/src/pipeline/conditionVarWin32Impl.h @@ -17,7 +17,7 @@ #include "pandabase.h" #include "selectThreadImpl.h" -#if defined(WIN32_VC) +#ifdef _WIN32 #include "mutexWin32Impl.h" #include "pnotify.h" @@ -50,6 +50,6 @@ private: #include "conditionVarWin32Impl.I" -#endif // WIN32_VC +#endif // _WIN32 #endif From e3cf5be500529286b58c53cbd1678bbde3e8a79e Mon Sep 17 00:00:00 2001 From: Sergei Korotkov Date: Tue, 10 May 2022 12:07:44 +0300 Subject: [PATCH 4/7] filter: Remove the silly dependency on the ShowBase instance Closes #1302 --- direct/src/filter/FilterManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/direct/src/filter/FilterManager.py b/direct/src/filter/FilterManager.py index ad0f72cca8..c353602b55 100644 --- a/direct/src/filter/FilterManager.py +++ b/direct/src/filter/FilterManager.py @@ -322,7 +322,7 @@ class FilterManager(DirectObject): props.setAuxRgba(1) if (auxtex1 != None): props.setAuxRgba(2) - buffer=base.graphicsEngine.makeOutput( + buffer=self.engine.makeOutput( self.win.getPipe(), name, -1, props, winprops, GraphicsPipe.BFRefuseWindow | GraphicsPipe.BFResizeable, self.win.getGsg(), self.win) From 6fb2acc9cd5e2b9624e1a6f43c2e708d81c6d35a Mon Sep 17 00:00:00 2001 From: rdb Date: Tue, 10 May 2022 14:19:17 +0200 Subject: [PATCH 5/7] makepanda: Always build tinydisplay, even without X11, for offline rendering Closes #1288 Co-authored-by: Brian Gontowski --- makepanda/makepanda.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/makepanda/makepanda.py b/makepanda/makepanda.py index e66768aa5b..afff30627a 100755 --- a/makepanda/makepanda.py +++ b/makepanda/makepanda.py @@ -5568,8 +5568,10 @@ if (GetTarget() == 'android' and PkgSkip("EGL")==0 and PkgSkip("GLES")==0 and no # DIRECTORY: panda/src/tinydisplay/ # -if (not RUNTIME and (GetTarget() in ('windows', 'darwin') or PkgSkip("X11")==0) and PkgSkip("TINYDISPLAY")==0): - OPTS=['DIR:panda/src/tinydisplay', 'BUILDING:TINYDISPLAY', 'X11'] +if not RUNTIME and not PkgSkip("TINYDISPLAY"): + OPTS=['DIR:panda/src/tinydisplay', 'BUILDING:TINYDISPLAY'] + if not PkgSkip("X11"): + OPTS += ['X11'] TargetAdd('p3tinydisplay_composite1.obj', opts=OPTS, input='p3tinydisplay_composite1.cxx') TargetAdd('p3tinydisplay_composite2.obj', opts=OPTS, input='p3tinydisplay_composite2.cxx') TargetAdd('p3tinydisplay_ztriangle_1.obj', opts=OPTS, input='ztriangle_1.cxx') @@ -5584,7 +5586,7 @@ if (not RUNTIME and (GetTarget() in ('windows', 'darwin') or PkgSkip("X11")==0) elif GetTarget() == 'windows': TargetAdd('libp3tinydisplay.dll', input='libp3windisplay.dll') TargetAdd('libp3tinydisplay.dll', opts=['WINIMM', 'WINGDI', 'WINKERNEL', 'WINOLDNAMES', 'WINUSER', 'WINMM']) - else: + elif not PkgSkip("X11"): TargetAdd('libp3tinydisplay.dll', input='p3x11display_composite1.obj') TargetAdd('libp3tinydisplay.dll', opts=['X11']) TargetAdd('libp3tinydisplay.dll', input='p3tinydisplay_composite1.obj') From 6ab6acfbaf0173c96f0fd3c3e254cdf8755d4d31 Mon Sep 17 00:00:00 2001 From: rdb Date: Tue, 10 May 2022 15:24:58 +0200 Subject: [PATCH 6/7] interrogate: Do not write wrappers taking rvalue reference to interrogatedb These are not actually exported by the Python binding generator anyway --- dtool/src/interrogate/interrogateBuilder.cxx | 7 ++++ dtool/src/interrogate/typeManager.cxx | 40 ++++++++++++++++++++ dtool/src/interrogate/typeManager.h | 1 + 3 files changed, 48 insertions(+) diff --git a/dtool/src/interrogate/interrogateBuilder.cxx b/dtool/src/interrogate/interrogateBuilder.cxx index 4735157d1d..f06d6e10d0 100644 --- a/dtool/src/interrogate/interrogateBuilder.cxx +++ b/dtool/src/interrogate/interrogateBuilder.cxx @@ -1074,6 +1074,10 @@ scan_function(CPPInstance *function) { return; } + if (TypeManager::involves_rvalue_reference(ftype)) { + return; + } + get_function(function, "", nullptr, scope, InterrogateFunction::F_global); @@ -2986,6 +2990,9 @@ define_method(CPPInstance *function, InterrogateType &itype, // If it isn't, we should publish this method anyway. } + if (TypeManager::involves_rvalue_reference(ftype)) { + return; + } FunctionIndex index = get_function(function, "", struct_type, scope, 0); if (index != 0) { diff --git a/dtool/src/interrogate/typeManager.cxx b/dtool/src/interrogate/typeManager.cxx index dba10f4520..828a33ef53 100644 --- a/dtool/src/interrogate/typeManager.cxx +++ b/dtool/src/interrogate/typeManager.cxx @@ -2015,6 +2015,46 @@ involves_protected(CPPType *type) { } } +/** + * Returns true if the type involves an rvalue reference. + */ +bool TypeManager:: +involves_rvalue_reference(CPPType *type) { + switch (type->get_subtype()) { + case CPPDeclaration::ST_const: + return involves_rvalue_reference(type->as_const_type()->_wrapped_around); + + case CPPDeclaration::ST_reference: + return type->as_reference_type()->_value_category == CPPReferenceType::VC_rvalue; + + case CPPDeclaration::ST_pointer: + return involves_rvalue_reference(type->as_pointer_type()->_pointing_at); + + case CPPDeclaration::ST_function: + { + CPPFunctionType *ftype = type->as_function_type(); + if (involves_rvalue_reference(ftype->_return_type)) { + return true; + } + const CPPParameterList::Parameters ¶ms = + ftype->_parameters->_parameters; + CPPParameterList::Parameters::const_iterator pi; + for (pi = params.begin(); pi != params.end(); ++pi) { + if (involves_rvalue_reference((*pi)->_type)) { + return true; + } + } + return false; + } + + case CPPDeclaration::ST_typedef: + return involves_rvalue_reference(type->as_typedef_type()->_type); + + default: + return false; + } +} + /** * Returns the type this pointer type points to. */ diff --git a/dtool/src/interrogate/typeManager.h b/dtool/src/interrogate/typeManager.h index f1aa2908b1..e9161dbd31 100644 --- a/dtool/src/interrogate/typeManager.h +++ b/dtool/src/interrogate/typeManager.h @@ -118,6 +118,7 @@ public: static bool is_handle(CPPType *type); static bool involves_unpublished(CPPType *type); static bool involves_protected(CPPType *type); + static bool involves_rvalue_reference(CPPType *type); static bool is_ostream(CPPType *type); static bool is_pointer_to_ostream(CPPType *type); From 3d55945535798958e907341d0148c9ee8c037238 Mon Sep 17 00:00:00 2001 From: rdb Date: Tue, 10 May 2022 15:40:02 +0200 Subject: [PATCH 7/7] interrogatedb: Add new functions to interrogate_interface.h: - `interrogate_function_is_constructor()` - `interrogate_function_is_destructor()` - `interrogate_wrapper_parameter_is_optional()` - `interrogate_wrapper_parameter_is_scoped_enum()` - `interrogate_wrapper_parameter_is_final()` Only `interrogate_wrapper_parameter_is_optional()` requires a rebuild of the database with the new changes. --- dtool/metalibs/dtoolconfig/pydtool.cxx | 357 +++++++++++------- dtool/src/interrogate/functionRemap.cxx | 3 + dtool/src/interrogate/interrogateBuilder.cxx | 18 +- .../src/interrogatedb/interrogateDatabase.cxx | 11 + dtool/src/interrogatedb/interrogateFunction.I | 16 + dtool/src/interrogatedb/interrogateFunction.h | 5 + .../interrogateFunctionWrapper.I | 11 + .../interrogateFunctionWrapper.h | 2 + .../interrogatedb/interrogate_interface.cxx | 30 ++ .../src/interrogatedb/interrogate_interface.h | 5 + 10 files changed, 317 insertions(+), 141 deletions(-) diff --git a/dtool/metalibs/dtoolconfig/pydtool.cxx b/dtool/metalibs/dtoolconfig/pydtool.cxx index 39719b385d..5eca11ea8c 100644 --- a/dtool/metalibs/dtoolconfig/pydtool.cxx +++ b/dtool/metalibs/dtoolconfig/pydtool.cxx @@ -60,6 +60,8 @@ static PyObject *_inP07ytISgV(PyObject *self, PyObject *args); static PyObject *_inP07ytH3bx(PyObject *self, PyObject *args); static PyObject *_inP07ytzeUk(PyObject *self, PyObject *args); static PyObject *_inP07ytUeI5(PyObject *self, PyObject *args); +static PyObject *_inP07ytJAAI(PyObject *self, PyObject *args); +static PyObject *_inP07yt0UXw(PyObject *self, PyObject *args); static PyObject *_inP07ytuSvx(PyObject *self, PyObject *args); static PyObject *_inP07ytwpYd(PyObject *self, PyObject *args); static PyObject *_inP07ytOfNh(PyObject *self, PyObject *args); @@ -82,6 +84,7 @@ static PyObject *_inP07ytGMpW(PyObject *self, PyObject *args); static PyObject *_inP07ytNuBV(PyObject *self, PyObject *args); static PyObject *_inP07yt9UwA(PyObject *self, PyObject *args); static PyObject *_inP07yt3FDt(PyObject *self, PyObject *args); +static PyObject *_inP07ytDgOY(PyObject *self, PyObject *args); static PyObject *_inP07ytf513(PyObject *self, PyObject *args); static PyObject *_inP07ytsqGH(PyObject *self, PyObject *args); static PyObject *_inP07yt7shV(PyObject *self, PyObject *args); @@ -124,6 +127,7 @@ static PyObject *_inP07ytMnKa(PyObject *self, PyObject *args); static PyObject *_inP07ytRtji(PyObject *self, PyObject *args); static PyObject *_inP07ytCnbQ(PyObject *self, PyObject *args); static PyObject *_inP07ytdUVN(PyObject *self, PyObject *args); +static PyObject *_inP07ytZtNk(PyObject *self, PyObject *args); static PyObject *_inP07ytihbt(PyObject *self, PyObject *args); static PyObject *_inP07ytbyPY(PyObject *self, PyObject *args); static PyObject *_inP07ytAaT6(PyObject *self, PyObject *args); @@ -149,6 +153,7 @@ static PyObject *_inP07ytHDtN(PyObject *self, PyObject *args); static PyObject *_inP07ytHFjA(PyObject *self, PyObject *args); static PyObject *_inP07yt_NPR(PyObject *self, PyObject *args); static PyObject *_inP07ytcTOH(PyObject *self, PyObject *args); +static PyObject *_inP07ytC5Uk(PyObject *self, PyObject *args); static PyObject *_inP07ythdU7(PyObject *self, PyObject *args); static PyObject *_inP07ytQPxU(PyObject *self, PyObject *args); static PyObject *_inP07ytO7Pz(PyObject *self, PyObject *args); @@ -168,7 +173,7 @@ static PyObject * _inP07yttbRf(PyObject *, PyObject *args) { char *param0; if (PyArg_ParseTuple(args, "s", ¶m0)) { - ::interrogate_add_search_directory((char const *)param0); + (::interrogate_add_search_directory)((char const *)param0); return Py_BuildValue(""); } return nullptr; @@ -182,7 +187,7 @@ static PyObject * _inP07ytda_g(PyObject *, PyObject *args) { char *param0; if (PyArg_ParseTuple(args, "s", ¶m0)) { - ::interrogate_add_search_path((char const *)param0); + (::interrogate_add_search_path)((char const *)param0); return Py_BuildValue(""); } return nullptr; @@ -195,7 +200,7 @@ _inP07ytda_g(PyObject *, PyObject *args) { static PyObject * _inP07yt4RgX(PyObject *, PyObject *args) { if (PyArg_ParseTuple(args, "")) { - bool return_value = ::interrogate_error_flag(); + bool return_value = (::interrogate_error_flag)(); return PyBool_FromLong(return_value); } return nullptr; @@ -208,7 +213,7 @@ _inP07yt4RgX(PyObject *, PyObject *args) { static PyObject * _inP07yt3Gip(PyObject *, PyObject *args) { if (PyArg_ParseTuple(args, "")) { - int return_value = ::interrogate_number_of_manifests(); + int return_value = (::interrogate_number_of_manifests)(); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -226,7 +231,7 @@ static PyObject * _inP07ytRKDz(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - ManifestIndex return_value = ::interrogate_get_manifest((int)param0); + ManifestIndex return_value = (::interrogate_get_manifest)((int)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -244,7 +249,7 @@ static PyObject * _inP07ytgZ9N(PyObject *, PyObject *args) { char *param0; if (PyArg_ParseTuple(args, "s", ¶m0)) { - ManifestIndex return_value = ::interrogate_get_manifest_by_name((char const *)param0); + ManifestIndex return_value = (::interrogate_get_manifest_by_name)((char const *)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -262,7 +267,7 @@ static PyObject * _inP07ytFnRZ(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_manifest_name((ManifestIndex)param0); + char const *return_value = (::interrogate_manifest_name)((ManifestIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -280,7 +285,7 @@ static PyObject * _inP07ytg0Qv(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_manifest_definition((ManifestIndex)param0); + char const *return_value = (::interrogate_manifest_definition)((ManifestIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -298,7 +303,7 @@ static PyObject * _inP07yttrqw(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_manifest_has_type((ManifestIndex)param0); + bool return_value = (::interrogate_manifest_has_type)((ManifestIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -312,7 +317,7 @@ static PyObject * _inP07ytdmpW(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - TypeIndex return_value = ::interrogate_manifest_get_type((ManifestIndex)param0); + TypeIndex return_value = (::interrogate_manifest_get_type)((ManifestIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -330,7 +335,7 @@ static PyObject * _inP07ytUYgQ(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_manifest_has_getter((ManifestIndex)param0); + bool return_value = (::interrogate_manifest_has_getter)((ManifestIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -344,7 +349,7 @@ static PyObject * _inP07yt0k7F(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - FunctionIndex return_value = ::interrogate_manifest_getter((ManifestIndex)param0); + FunctionIndex return_value = (::interrogate_manifest_getter)((ManifestIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -362,7 +367,7 @@ static PyObject * _inP07ytfIsr(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_manifest_has_int_value((ManifestIndex)param0); + bool return_value = (::interrogate_manifest_has_int_value)((ManifestIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -376,7 +381,7 @@ static PyObject * _inP07ytvysR(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - int return_value = ::interrogate_manifest_get_int_value((ManifestIndex)param0); + int return_value = (::interrogate_manifest_get_int_value)((ManifestIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -394,7 +399,7 @@ static PyObject * _inP07ytYQ_2(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_element_name((ElementIndex)param0); + char const *return_value = (::interrogate_element_name)((ElementIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -412,7 +417,7 @@ static PyObject * _inP07yt3kdv(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_element_scoped_name((ElementIndex)param0); + char const *return_value = (::interrogate_element_scoped_name)((ElementIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -430,7 +435,7 @@ static PyObject * _inP07ytew01(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_element_has_comment((ElementIndex)param0); + bool return_value = (::interrogate_element_has_comment)((ElementIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -444,7 +449,7 @@ static PyObject * _inP07ytQna7(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_element_comment((ElementIndex)param0); + char const *return_value = (::interrogate_element_comment)((ElementIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -462,7 +467,7 @@ static PyObject * _inP07ytkg95(PyObject *, PyObject *args) { char *param0; if (PyArg_ParseTuple(args, "s", ¶m0)) { - ElementIndex return_value = ::interrogate_get_element_by_name((char const *)param0); + ElementIndex return_value = (::interrogate_get_element_by_name)((char const *)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -480,7 +485,7 @@ static PyObject * _inP07ytluRc(PyObject *, PyObject *args) { char *param0; if (PyArg_ParseTuple(args, "s", ¶m0)) { - ElementIndex return_value = ::interrogate_get_element_by_scoped_name((char const *)param0); + ElementIndex return_value = (::interrogate_get_element_by_scoped_name)((char const *)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -498,7 +503,7 @@ static PyObject * _inP07yttHdM(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - TypeIndex return_value = ::interrogate_element_type((ElementIndex)param0); + TypeIndex return_value = (::interrogate_element_type)((ElementIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -516,7 +521,7 @@ static PyObject * _inP07ytDId0(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_element_has_getter((ElementIndex)param0); + bool return_value = (::interrogate_element_has_getter)((ElementIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -530,7 +535,7 @@ static PyObject * _inP07ytHuAm(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - FunctionIndex return_value = ::interrogate_element_getter((ElementIndex)param0); + FunctionIndex return_value = (::interrogate_element_getter)((ElementIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -548,7 +553,7 @@ static PyObject * _inP07yt_xr0(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_element_has_setter((ElementIndex)param0); + bool return_value = (::interrogate_element_has_setter)((ElementIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -562,7 +567,7 @@ static PyObject * _inP07ytH5qp(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - FunctionIndex return_value = ::interrogate_element_setter((ElementIndex)param0); + FunctionIndex return_value = (::interrogate_element_setter)((ElementIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -580,7 +585,7 @@ static PyObject * _inP07ytq45U(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_element_is_sequence((ElementIndex)param0); + bool return_value = (::interrogate_element_is_sequence)((ElementIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -594,7 +599,7 @@ static PyObject * _inP07yt6IPa(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_element_is_mapping((ElementIndex)param0); + bool return_value = (::interrogate_element_is_mapping)((ElementIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -607,7 +612,7 @@ _inP07yt6IPa(PyObject *, PyObject *args) { static PyObject * _inP07ytU2_B(PyObject *, PyObject *args) { if (PyArg_ParseTuple(args, "")) { - int return_value = ::interrogate_number_of_globals(); + int return_value = (::interrogate_number_of_globals)(); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -625,7 +630,7 @@ static PyObject * _inP07ytHFO2(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - ElementIndex return_value = ::interrogate_get_global((int)param0); + ElementIndex return_value = (::interrogate_get_global)((int)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -642,7 +647,7 @@ _inP07ytHFO2(PyObject *, PyObject *args) { static PyObject * _inP07ytcfjm(PyObject *, PyObject *args) { if (PyArg_ParseTuple(args, "")) { - int return_value = ::interrogate_number_of_global_functions(); + int return_value = (::interrogate_number_of_global_functions)(); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -660,7 +665,7 @@ static PyObject * _inP07yt3Sjw(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - FunctionIndex return_value = ::interrogate_get_global_function((int)param0); + FunctionIndex return_value = (::interrogate_get_global_function)((int)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -677,7 +682,7 @@ _inP07yt3Sjw(PyObject *, PyObject *args) { static PyObject * _inP07ytgJcX(PyObject *, PyObject *args) { if (PyArg_ParseTuple(args, "")) { - int return_value = ::interrogate_number_of_functions(); + int return_value = (::interrogate_number_of_functions)(); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -695,7 +700,7 @@ static PyObject * _inP07ytYlw6(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - FunctionIndex return_value = ::interrogate_get_function((int)param0); + FunctionIndex return_value = (::interrogate_get_function)((int)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -713,7 +718,7 @@ static PyObject * _inP07ytsmnz(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_function_name((FunctionIndex)param0); + char const *return_value = (::interrogate_function_name)((FunctionIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -731,7 +736,7 @@ static PyObject * _inP07ytxQ10(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_function_scoped_name((FunctionIndex)param0); + char const *return_value = (::interrogate_function_scoped_name)((FunctionIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -749,7 +754,7 @@ static PyObject * _inP07yt6gPB(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_function_has_comment((FunctionIndex)param0); + bool return_value = (::interrogate_function_has_comment)((FunctionIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -763,7 +768,7 @@ static PyObject * _inP07ytISgV(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_function_comment((FunctionIndex)param0); + char const *return_value = (::interrogate_function_comment)((FunctionIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -781,7 +786,7 @@ static PyObject * _inP07ytH3bx(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_function_prototype((FunctionIndex)param0); + char const *return_value = (::interrogate_function_prototype)((FunctionIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -799,7 +804,7 @@ static PyObject * _inP07ytzeUk(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_function_is_method((FunctionIndex)param0); + bool return_value = (::interrogate_function_is_method)((FunctionIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -813,7 +818,7 @@ static PyObject * _inP07ytUeI5(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - TypeIndex return_value = ::interrogate_function_class((FunctionIndex)param0); + TypeIndex return_value = (::interrogate_function_class)((FunctionIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -823,6 +828,34 @@ _inP07ytUeI5(PyObject *, PyObject *args) { return nullptr; } +/* + * Python simple wrapper for + * bool interrogate_function_is_constructor(FunctionIndex function) + */ +static PyObject * +_inP07ytJAAI(PyObject *, PyObject *args) { + int param0; + if (PyArg_ParseTuple(args, "i", ¶m0)) { + bool return_value = (::interrogate_function_is_constructor)((FunctionIndex)param0); + return PyBool_FromLong(return_value); + } + return nullptr; +} + +/* + * Python simple wrapper for + * bool interrogate_function_is_destructor(FunctionIndex function) + */ +static PyObject * +_inP07yt0UXw(PyObject *, PyObject *args) { + int param0; + if (PyArg_ParseTuple(args, "i", ¶m0)) { + bool return_value = (::interrogate_function_is_destructor)((FunctionIndex)param0); + return PyBool_FromLong(return_value); + } + return nullptr; +} + /* * Python simple wrapper for * bool interrogate_function_has_module_name(FunctionIndex function) @@ -831,7 +864,7 @@ static PyObject * _inP07ytuSvx(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_function_has_module_name((FunctionIndex)param0); + bool return_value = (::interrogate_function_has_module_name)((FunctionIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -845,7 +878,7 @@ static PyObject * _inP07ytwpYd(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_function_module_name((FunctionIndex)param0); + char const *return_value = (::interrogate_function_module_name)((FunctionIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -863,7 +896,7 @@ static PyObject * _inP07ytOfNh(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_function_has_library_name((FunctionIndex)param0); + bool return_value = (::interrogate_function_has_library_name)((FunctionIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -877,7 +910,7 @@ static PyObject * _inP07ytf5_U(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_function_library_name((FunctionIndex)param0); + char const *return_value = (::interrogate_function_library_name)((FunctionIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -895,7 +928,7 @@ static PyObject * _inP07ytL3ZB(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_function_is_virtual((FunctionIndex)param0); + bool return_value = (::interrogate_function_is_virtual)((FunctionIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -909,7 +942,7 @@ static PyObject * _inP07ytXw0I(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - int return_value = ::interrogate_function_number_of_c_wrappers((FunctionIndex)param0); + int return_value = (::interrogate_function_number_of_c_wrappers)((FunctionIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -928,7 +961,7 @@ _inP07yt3zru(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - FunctionWrapperIndex return_value = ::interrogate_function_c_wrapper((FunctionIndex)param0, (int)param1); + FunctionWrapperIndex return_value = (::interrogate_function_c_wrapper)((FunctionIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -946,7 +979,7 @@ static PyObject * _inP07ytRrg2(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - int return_value = ::interrogate_function_number_of_python_wrappers((FunctionIndex)param0); + int return_value = (::interrogate_function_number_of_python_wrappers)((FunctionIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -965,7 +998,7 @@ _inP07ytEJCx(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - FunctionWrapperIndex return_value = ::interrogate_function_python_wrapper((FunctionIndex)param0, (int)param1); + FunctionWrapperIndex return_value = (::interrogate_function_python_wrapper)((FunctionIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -983,7 +1016,7 @@ static PyObject * _inP07ytWAZr(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_wrapper_name((FunctionWrapperIndex)param0); + char const *return_value = (::interrogate_wrapper_name)((FunctionWrapperIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1001,7 +1034,7 @@ static PyObject * _inP07ytrD_M(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_wrapper_is_callable_by_name((FunctionWrapperIndex)param0); + bool return_value = (::interrogate_wrapper_is_callable_by_name)((FunctionWrapperIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1015,7 +1048,7 @@ static PyObject * _inP07ytjolz(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_wrapper_has_comment((FunctionWrapperIndex)param0); + bool return_value = (::interrogate_wrapper_has_comment)((FunctionWrapperIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1029,7 +1062,7 @@ static PyObject * _inP07ytt_JD(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_wrapper_comment((FunctionWrapperIndex)param0); + char const *return_value = (::interrogate_wrapper_comment)((FunctionWrapperIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1047,7 +1080,7 @@ static PyObject * _inP07ytwEts(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_wrapper_has_return_value((FunctionWrapperIndex)param0); + bool return_value = (::interrogate_wrapper_has_return_value)((FunctionWrapperIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1061,7 +1094,7 @@ static PyObject * _inP07ytrJWs(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - TypeIndex return_value = ::interrogate_wrapper_return_type((FunctionWrapperIndex)param0); + TypeIndex return_value = (::interrogate_wrapper_return_type)((FunctionWrapperIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1079,7 +1112,7 @@ static PyObject * _inP07ytpmFD(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_wrapper_caller_manages_return_value((FunctionWrapperIndex)param0); + bool return_value = (::interrogate_wrapper_caller_manages_return_value)((FunctionWrapperIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1093,7 +1126,7 @@ static PyObject * _inP07ytyYUX(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - FunctionIndex return_value = ::interrogate_wrapper_return_value_destructor((FunctionWrapperIndex)param0); + FunctionIndex return_value = (::interrogate_wrapper_return_value_destructor)((FunctionWrapperIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1111,7 +1144,7 @@ static PyObject * _inP07yt54dn(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - int return_value = ::interrogate_wrapper_number_of_parameters((FunctionWrapperIndex)param0); + int return_value = (::interrogate_wrapper_number_of_parameters)((FunctionWrapperIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1130,7 +1163,7 @@ _inP07ytGMpW(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - TypeIndex return_value = ::interrogate_wrapper_parameter_type((FunctionWrapperIndex)param0, (int)param1); + TypeIndex return_value = (::interrogate_wrapper_parameter_type)((FunctionWrapperIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1149,7 +1182,7 @@ _inP07ytNuBV(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - bool return_value = ::interrogate_wrapper_parameter_has_name((FunctionWrapperIndex)param0, (int)param1); + bool return_value = (::interrogate_wrapper_parameter_has_name)((FunctionWrapperIndex)param0, (int)param1); return PyBool_FromLong(return_value); } return nullptr; @@ -1164,7 +1197,7 @@ _inP07yt9UwA(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - char const *return_value = ::interrogate_wrapper_parameter_name((FunctionWrapperIndex)param0, (int)param1); + char const *return_value = (::interrogate_wrapper_parameter_name)((FunctionWrapperIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1183,7 +1216,22 @@ _inP07yt3FDt(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - bool return_value = ::interrogate_wrapper_parameter_is_this((FunctionWrapperIndex)param0, (int)param1); + bool return_value = (::interrogate_wrapper_parameter_is_this)((FunctionWrapperIndex)param0, (int)param1); + return PyBool_FromLong(return_value); + } + return nullptr; +} + +/* + * Python simple wrapper for + * bool interrogate_wrapper_parameter_is_optional(FunctionWrapperIndex wrapper, int n) + */ +static PyObject * +_inP07ytDgOY(PyObject *, PyObject *args) { + int param0; + int param1; + if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { + bool return_value = (::interrogate_wrapper_parameter_is_optional)((FunctionWrapperIndex)param0, (int)param1); return PyBool_FromLong(return_value); } return nullptr; @@ -1197,7 +1245,7 @@ static PyObject * _inP07ytf513(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_wrapper_has_pointer((FunctionWrapperIndex)param0); + bool return_value = (::interrogate_wrapper_has_pointer)((FunctionWrapperIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1211,7 +1259,7 @@ static PyObject * _inP07ytsqGH(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - ::interrogate_wrapper_pointer((FunctionWrapperIndex)param0); + (::interrogate_wrapper_pointer)((FunctionWrapperIndex)param0); return Py_BuildValue(""); } return nullptr; @@ -1225,7 +1273,7 @@ static PyObject * _inP07yt7shV(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_wrapper_unique_name((FunctionWrapperIndex)param0); + char const *return_value = (::interrogate_wrapper_unique_name)((FunctionWrapperIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1243,7 +1291,7 @@ static PyObject * _inP07ytA1eF(PyObject *, PyObject *args) { char *param0; if (PyArg_ParseTuple(args, "s", ¶m0)) { - FunctionWrapperIndex return_value = ::interrogate_get_wrapper_by_unique_name((char const *)param0); + FunctionWrapperIndex return_value = (::interrogate_get_wrapper_by_unique_name)((char const *)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1261,7 +1309,7 @@ static PyObject * _inP07yt776V(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_make_seq_seq_name((MakeSeqIndex)param0); + char const *return_value = (::interrogate_make_seq_seq_name)((MakeSeqIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1279,7 +1327,7 @@ static PyObject * _inP07ytryup(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_make_seq_scoped_name((MakeSeqIndex)param0); + char const *return_value = (::interrogate_make_seq_scoped_name)((MakeSeqIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1297,7 +1345,7 @@ static PyObject * _inP07ytiytI(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_make_seq_has_comment((ElementIndex)param0); + bool return_value = (::interrogate_make_seq_has_comment)((ElementIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1311,7 +1359,7 @@ static PyObject * _inP07ytZc07(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_make_seq_comment((ElementIndex)param0); + char const *return_value = (::interrogate_make_seq_comment)((ElementIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1329,7 +1377,7 @@ static PyObject * _inP07ytfaH0(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_make_seq_num_name((MakeSeqIndex)param0); + char const *return_value = (::interrogate_make_seq_num_name)((MakeSeqIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1347,7 +1395,7 @@ static PyObject * _inP07ytGB9D(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_make_seq_element_name((MakeSeqIndex)param0); + char const *return_value = (::interrogate_make_seq_element_name)((MakeSeqIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1364,7 +1412,7 @@ _inP07ytGB9D(PyObject *, PyObject *args) { static PyObject * _inP07ytsxxs(PyObject *, PyObject *args) { if (PyArg_ParseTuple(args, "")) { - int return_value = ::interrogate_number_of_global_types(); + int return_value = (::interrogate_number_of_global_types)(); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1382,7 +1430,7 @@ static PyObject * _inP07ytMT0z(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - TypeIndex return_value = ::interrogate_get_global_type((int)param0); + TypeIndex return_value = (::interrogate_get_global_type)((int)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1399,7 +1447,7 @@ _inP07ytMT0z(PyObject *, PyObject *args) { static PyObject * _inP07ytiW3v(PyObject *, PyObject *args) { if (PyArg_ParseTuple(args, "")) { - int return_value = ::interrogate_number_of_types(); + int return_value = (::interrogate_number_of_types)(); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1417,7 +1465,7 @@ static PyObject * _inP07yt4Px8(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - TypeIndex return_value = ::interrogate_get_type((int)param0); + TypeIndex return_value = (::interrogate_get_type)((int)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1435,7 +1483,7 @@ static PyObject * _inP07ytNHcs(PyObject *, PyObject *args) { char *param0; if (PyArg_ParseTuple(args, "s", ¶m0)) { - TypeIndex return_value = ::interrogate_get_type_by_name((char const *)param0); + TypeIndex return_value = (::interrogate_get_type_by_name)((char const *)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1453,7 +1501,7 @@ static PyObject * _inP07ytqHrb(PyObject *, PyObject *args) { char *param0; if (PyArg_ParseTuple(args, "s", ¶m0)) { - TypeIndex return_value = ::interrogate_get_type_by_scoped_name((char const *)param0); + TypeIndex return_value = (::interrogate_get_type_by_scoped_name)((char const *)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1471,7 +1519,7 @@ static PyObject * _inP07ytaOqq(PyObject *, PyObject *args) { char *param0; if (PyArg_ParseTuple(args, "s", ¶m0)) { - TypeIndex return_value = ::interrogate_get_type_by_true_name((char const *)param0); + TypeIndex return_value = (::interrogate_get_type_by_true_name)((char const *)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1489,7 +1537,7 @@ static PyObject * _inP07ytpTBb(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_global((TypeIndex)param0); + bool return_value = (::interrogate_type_is_global)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1503,7 +1551,7 @@ static PyObject * _inP07ytqWOw(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_type_name((TypeIndex)param0); + char const *return_value = (::interrogate_type_name)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1521,7 +1569,7 @@ static PyObject * _inP07ytHu7x(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_type_scoped_name((TypeIndex)param0); + char const *return_value = (::interrogate_type_scoped_name)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1539,7 +1587,7 @@ static PyObject * _inP07ytwGnA(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_type_true_name((TypeIndex)param0); + char const *return_value = (::interrogate_type_true_name)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1557,7 +1605,7 @@ static PyObject * _inP07ytXGxx(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_nested((TypeIndex)param0); + bool return_value = (::interrogate_type_is_nested)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1571,7 +1619,7 @@ static PyObject * _inP07ytj04Z(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - TypeIndex return_value = ::interrogate_type_outer_class((TypeIndex)param0); + TypeIndex return_value = (::interrogate_type_outer_class)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1589,7 +1637,7 @@ static PyObject * _inP07ytEOv4(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_has_comment((TypeIndex)param0); + bool return_value = (::interrogate_type_has_comment)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1603,7 +1651,7 @@ static PyObject * _inP07ytpCqJ(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_type_comment((TypeIndex)param0); + char const *return_value = (::interrogate_type_comment)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1621,7 +1669,7 @@ static PyObject * _inP07yt_Pz3(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_has_module_name((TypeIndex)param0); + bool return_value = (::interrogate_type_has_module_name)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1635,7 +1683,7 @@ static PyObject * _inP07ytt_06(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_type_module_name((TypeIndex)param0); + char const *return_value = (::interrogate_type_module_name)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1653,7 +1701,7 @@ static PyObject * _inP07ytmuPs(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_has_library_name((TypeIndex)param0); + bool return_value = (::interrogate_type_has_library_name)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1667,7 +1715,7 @@ static PyObject * _inP07ytvM8B(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - char const *return_value = ::interrogate_type_library_name((TypeIndex)param0); + char const *return_value = (::interrogate_type_library_name)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1685,7 +1733,7 @@ static PyObject * _inP07ytap97(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_atomic((TypeIndex)param0); + bool return_value = (::interrogate_type_is_atomic)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1699,7 +1747,7 @@ static PyObject * _inP07yt0o8D(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - AtomicToken return_value = ::interrogate_type_atomic_token((TypeIndex)param0); + AtomicToken return_value = (::interrogate_type_atomic_token)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1717,7 +1765,7 @@ static PyObject * _inP07ytOoQ2(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_unsigned((TypeIndex)param0); + bool return_value = (::interrogate_type_is_unsigned)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1731,7 +1779,7 @@ static PyObject * _inP07ytKuFh(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_signed((TypeIndex)param0); + bool return_value = (::interrogate_type_is_signed)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1745,7 +1793,7 @@ static PyObject * _inP07yto5L6(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_long((TypeIndex)param0); + bool return_value = (::interrogate_type_is_long)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1759,7 +1807,7 @@ static PyObject * _inP07ytzgKK(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_longlong((TypeIndex)param0); + bool return_value = (::interrogate_type_is_longlong)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1773,7 +1821,7 @@ static PyObject * _inP07yt0FIF(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_short((TypeIndex)param0); + bool return_value = (::interrogate_type_is_short)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1787,7 +1835,7 @@ static PyObject * _inP07ytZqvD(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_wrapped((TypeIndex)param0); + bool return_value = (::interrogate_type_is_wrapped)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1801,7 +1849,7 @@ static PyObject * _inP07ytDyRd(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_pointer((TypeIndex)param0); + bool return_value = (::interrogate_type_is_pointer)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1815,7 +1863,7 @@ static PyObject * _inP07ytMnKa(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_const((TypeIndex)param0); + bool return_value = (::interrogate_type_is_const)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1829,7 +1877,7 @@ static PyObject * _inP07ytRtji(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_typedef((TypeIndex)param0); + bool return_value = (::interrogate_type_is_typedef)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1843,7 +1891,7 @@ static PyObject * _inP07ytCnbQ(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - TypeIndex return_value = ::interrogate_type_wrapped_type((TypeIndex)param0); + TypeIndex return_value = (::interrogate_type_wrapped_type)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1861,7 +1909,21 @@ static PyObject * _inP07ytdUVN(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_enum((TypeIndex)param0); + bool return_value = (::interrogate_type_is_enum)((TypeIndex)param0); + return PyBool_FromLong(return_value); + } + return nullptr; +} + +/* + * Python simple wrapper for + * bool interrogate_type_is_scoped_enum(TypeIndex type) + */ +static PyObject * +_inP07ytZtNk(PyObject *, PyObject *args) { + int param0; + if (PyArg_ParseTuple(args, "i", ¶m0)) { + bool return_value = (::interrogate_type_is_scoped_enum)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1875,7 +1937,7 @@ static PyObject * _inP07ytihbt(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - int return_value = ::interrogate_type_number_of_enum_values((TypeIndex)param0); + int return_value = (::interrogate_type_number_of_enum_values)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1894,7 +1956,7 @@ _inP07ytbyPY(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - char const *return_value = ::interrogate_type_enum_value_name((TypeIndex)param0, (int)param1); + char const *return_value = (::interrogate_type_enum_value_name)((TypeIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1913,7 +1975,7 @@ _inP07ytAaT6(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - char const *return_value = ::interrogate_type_enum_value_scoped_name((TypeIndex)param0, (int)param1); + char const *return_value = (::interrogate_type_enum_value_scoped_name)((TypeIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1932,7 +1994,7 @@ _inP07ytgL9q(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - char const *return_value = ::interrogate_type_enum_value_comment((TypeIndex)param0, (int)param1); + char const *return_value = (::interrogate_type_enum_value_comment)((TypeIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromString(return_value); #else @@ -1951,7 +2013,7 @@ _inP07ytWB97(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - int return_value = ::interrogate_type_enum_value((TypeIndex)param0, (int)param1); + int return_value = (::interrogate_type_enum_value)((TypeIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -1969,7 +2031,7 @@ static PyObject * _inP07ytDUAl(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_struct((TypeIndex)param0); + bool return_value = (::interrogate_type_is_struct)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1983,7 +2045,7 @@ static PyObject * _inP07yt1_Kf(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_class((TypeIndex)param0); + bool return_value = (::interrogate_type_is_class)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -1997,7 +2059,7 @@ static PyObject * _inP07yt98lD(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_union((TypeIndex)param0); + bool return_value = (::interrogate_type_is_union)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -2011,7 +2073,7 @@ static PyObject * _inP07yt9SHr(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_fully_defined((TypeIndex)param0); + bool return_value = (::interrogate_type_is_fully_defined)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -2025,7 +2087,7 @@ static PyObject * _inP07ytdiZP(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_is_unpublished((TypeIndex)param0); + bool return_value = (::interrogate_type_is_unpublished)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -2039,7 +2101,7 @@ static PyObject * _inP07ytTdER(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - int return_value = ::interrogate_type_number_of_constructors((TypeIndex)param0); + int return_value = (::interrogate_type_number_of_constructors)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2058,7 +2120,7 @@ _inP07ytYO56(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - FunctionIndex return_value = ::interrogate_type_get_constructor((TypeIndex)param0, (int)param1); + FunctionIndex return_value = (::interrogate_type_get_constructor)((TypeIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2076,7 +2138,7 @@ static PyObject * _inP07ytxtCG(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_has_destructor((TypeIndex)param0); + bool return_value = (::interrogate_type_has_destructor)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -2090,7 +2152,7 @@ static PyObject * _inP07yt_EB2(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - bool return_value = ::interrogate_type_destructor_is_inherited((TypeIndex)param0); + bool return_value = (::interrogate_type_destructor_is_inherited)((TypeIndex)param0); return PyBool_FromLong(return_value); } return nullptr; @@ -2104,7 +2166,7 @@ static PyObject * _inP07ytEG1l(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - FunctionIndex return_value = ::interrogate_type_get_destructor((TypeIndex)param0); + FunctionIndex return_value = (::interrogate_type_get_destructor)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2122,7 +2184,7 @@ static PyObject * _inP07yt7tUq(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - int return_value = ::interrogate_type_number_of_elements((TypeIndex)param0); + int return_value = (::interrogate_type_number_of_elements)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2141,7 +2203,7 @@ _inP07ytyStU(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - ElementIndex return_value = ::interrogate_type_get_element((TypeIndex)param0, (int)param1); + ElementIndex return_value = (::interrogate_type_get_element)((TypeIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2159,7 +2221,7 @@ static PyObject * _inP07ytdM85(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - int return_value = ::interrogate_type_number_of_methods((TypeIndex)param0); + int return_value = (::interrogate_type_number_of_methods)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2178,7 +2240,7 @@ _inP07ytk_GN(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - FunctionIndex return_value = ::interrogate_type_get_method((TypeIndex)param0, (int)param1); + FunctionIndex return_value = (::interrogate_type_get_method)((TypeIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2196,7 +2258,7 @@ static PyObject * _inP07yt8QjG(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - int return_value = ::interrogate_type_number_of_make_seqs((TypeIndex)param0); + int return_value = (::interrogate_type_number_of_make_seqs)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2215,7 +2277,7 @@ _inP07ytyMtj(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - MakeSeqIndex return_value = ::interrogate_type_get_make_seq((TypeIndex)param0, (int)param1); + MakeSeqIndex return_value = (::interrogate_type_get_make_seq)((TypeIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2233,7 +2295,7 @@ static PyObject * _inP07ytHDtN(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - int return_value = ::interrogate_type_number_of_casts((TypeIndex)param0); + int return_value = (::interrogate_type_number_of_casts)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2252,7 +2314,7 @@ _inP07ytHFjA(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - FunctionIndex return_value = ::interrogate_type_get_cast((TypeIndex)param0, (int)param1); + FunctionIndex return_value = (::interrogate_type_get_cast)((TypeIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2270,7 +2332,7 @@ static PyObject * _inP07yt_NPR(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - int return_value = ::interrogate_type_number_of_derivations((TypeIndex)param0); + int return_value = (::interrogate_type_number_of_derivations)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2289,7 +2351,7 @@ _inP07ytcTOH(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - TypeIndex return_value = ::interrogate_type_get_derivation((TypeIndex)param0, (int)param1); + TypeIndex return_value = (::interrogate_type_get_derivation)((TypeIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2299,6 +2361,20 @@ _inP07ytcTOH(PyObject *, PyObject *args) { return nullptr; } +/* + * Python simple wrapper for + * bool interrogate_type_is_final(TypeIndex type) + */ +static PyObject * +_inP07ytC5Uk(PyObject *, PyObject *args) { + int param0; + if (PyArg_ParseTuple(args, "i", ¶m0)) { + bool return_value = (::interrogate_type_is_final)((TypeIndex)param0); + return PyBool_FromLong(return_value); + } + return nullptr; +} + /* * Python simple wrapper for * bool interrogate_type_derivation_has_upcast(TypeIndex type, int n) @@ -2308,7 +2384,7 @@ _inP07ythdU7(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - bool return_value = ::interrogate_type_derivation_has_upcast((TypeIndex)param0, (int)param1); + bool return_value = (::interrogate_type_derivation_has_upcast)((TypeIndex)param0, (int)param1); return PyBool_FromLong(return_value); } return nullptr; @@ -2323,7 +2399,7 @@ _inP07ytQPxU(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - FunctionIndex return_value = ::interrogate_type_get_upcast((TypeIndex)param0, (int)param1); + FunctionIndex return_value = (::interrogate_type_get_upcast)((TypeIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2342,7 +2418,7 @@ _inP07ytO7Pz(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - bool return_value = ::interrogate_type_derivation_downcast_is_impossible((TypeIndex)param0, (int)param1); + bool return_value = (::interrogate_type_derivation_downcast_is_impossible)((TypeIndex)param0, (int)param1); return PyBool_FromLong(return_value); } return nullptr; @@ -2357,7 +2433,7 @@ _inP07ytvu_E(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - bool return_value = ::interrogate_type_derivation_has_downcast((TypeIndex)param0, (int)param1); + bool return_value = (::interrogate_type_derivation_has_downcast)((TypeIndex)param0, (int)param1); return PyBool_FromLong(return_value); } return nullptr; @@ -2372,7 +2448,7 @@ _inP07ytxGUt(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - FunctionIndex return_value = ::interrogate_type_get_downcast((TypeIndex)param0, (int)param1); + FunctionIndex return_value = (::interrogate_type_get_downcast)((TypeIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2390,7 +2466,7 @@ static PyObject * _inP07ytzM1P(PyObject *, PyObject *args) { int param0; if (PyArg_ParseTuple(args, "i", ¶m0)) { - int return_value = ::interrogate_type_number_of_nested_types((TypeIndex)param0); + int return_value = (::interrogate_type_number_of_nested_types)((TypeIndex)param0); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2409,7 +2485,7 @@ _inP07ytoY5L(PyObject *, PyObject *args) { int param0; int param1; if (PyArg_ParseTuple(args, "ii", ¶m0, ¶m1)) { - TypeIndex return_value = ::interrogate_type_get_nested_type((TypeIndex)param0, (int)param1); + TypeIndex return_value = (::interrogate_type_get_nested_type)((TypeIndex)param0, (int)param1); #if PY_MAJOR_VERSION >= 3 return PyLong_FromLong(return_value); #else @@ -2427,7 +2503,7 @@ static PyObject * _inP07yte_7S(PyObject *, PyObject *args) { char *param0; if (PyArg_ParseTuple(args, "s", ¶m0)) { - ::interrogate_request_database((char const *)param0); + (::interrogate_request_database)((char const *)param0); return Py_BuildValue(""); } return nullptr; @@ -2441,7 +2517,7 @@ static PyObject * _inP07ytw_15(PyObject *, PyObject *args) { Py_ssize_t param0; if (PyArg_ParseTuple(args, "n", ¶m0)) { - ::interrogate_request_module((InterrogateModuleDef *)param0); + (::interrogate_request_module)((InterrogateModuleDef *)param0); return Py_BuildValue(""); } return nullptr; @@ -2489,6 +2565,8 @@ static PyMethodDef python_simple_funcs[] = { { "interrogate_function_prototype", &_inP07ytH3bx, METH_VARARGS }, { "interrogate_function_is_method", &_inP07ytzeUk, METH_VARARGS }, { "interrogate_function_class", &_inP07ytUeI5, METH_VARARGS }, + { "interrogate_function_is_constructor", &_inP07ytJAAI, METH_VARARGS }, + { "interrogate_function_is_destructor", &_inP07yt0UXw, METH_VARARGS }, { "interrogate_function_has_module_name", &_inP07ytuSvx, METH_VARARGS }, { "interrogate_function_module_name", &_inP07ytwpYd, METH_VARARGS }, { "interrogate_function_has_library_name", &_inP07ytOfNh, METH_VARARGS }, @@ -2511,6 +2589,7 @@ static PyMethodDef python_simple_funcs[] = { { "interrogate_wrapper_parameter_has_name", &_inP07ytNuBV, METH_VARARGS }, { "interrogate_wrapper_parameter_name", &_inP07yt9UwA, METH_VARARGS }, { "interrogate_wrapper_parameter_is_this", &_inP07yt3FDt, METH_VARARGS }, + { "interrogate_wrapper_parameter_is_optional", &_inP07ytDgOY, METH_VARARGS }, { "interrogate_wrapper_has_pointer", &_inP07ytf513, METH_VARARGS }, { "interrogate_wrapper_pointer", &_inP07ytsqGH, METH_VARARGS }, { "interrogate_wrapper_unique_name", &_inP07yt7shV, METH_VARARGS }, @@ -2553,6 +2632,7 @@ static PyMethodDef python_simple_funcs[] = { { "interrogate_type_is_typedef", &_inP07ytRtji, METH_VARARGS }, { "interrogate_type_wrapped_type", &_inP07ytCnbQ, METH_VARARGS }, { "interrogate_type_is_enum", &_inP07ytdUVN, METH_VARARGS }, + { "interrogate_type_is_scoped_enum", &_inP07ytZtNk, METH_VARARGS }, { "interrogate_type_number_of_enum_values", &_inP07ytihbt, METH_VARARGS }, { "interrogate_type_enum_value_name", &_inP07ytbyPY, METH_VARARGS }, { "interrogate_type_enum_value_scoped_name", &_inP07ytAaT6, METH_VARARGS }, @@ -2578,6 +2658,7 @@ static PyMethodDef python_simple_funcs[] = { { "interrogate_type_get_cast", &_inP07ytHFjA, METH_VARARGS }, { "interrogate_type_number_of_derivations", &_inP07yt_NPR, METH_VARARGS }, { "interrogate_type_get_derivation", &_inP07ytcTOH, METH_VARARGS }, + { "interrogate_type_is_final", &_inP07ytC5Uk, METH_VARARGS }, { "interrogate_type_derivation_has_upcast", &_inP07ythdU7, METH_VARARGS }, { "interrogate_type_get_upcast", &_inP07ytQPxU, METH_VARARGS }, { "interrogate_type_derivation_downcast_is_impossible", &_inP07ytO7Pz, METH_VARARGS }, diff --git a/dtool/src/interrogate/functionRemap.cxx b/dtool/src/interrogate/functionRemap.cxx index e0dec969c0..cb8f9906a8 100644 --- a/dtool/src/interrogate/functionRemap.cxx +++ b/dtool/src/interrogate/functionRemap.cxx @@ -327,6 +327,9 @@ make_wrapper_entry(FunctionIndex function_index) { if ((*pi)._has_name) { param._parameter_flags |= InterrogateFunctionWrapper::PF_has_name; } + if ((*pi)._remap->has_default_value()) { + param._parameter_flags |= InterrogateFunctionWrapper::PF_is_optional; + } iwrapper._parameters.push_back(param); } diff --git a/dtool/src/interrogate/interrogateBuilder.cxx b/dtool/src/interrogate/interrogateBuilder.cxx index f06d6e10d0..1cc4aad3ff 100644 --- a/dtool/src/interrogate/interrogateBuilder.cxx +++ b/dtool/src/interrogate/interrogateBuilder.cxx @@ -1777,6 +1777,16 @@ get_function(CPPInstance *function, string description, ifunction->_flags |= InterrogateFunction::F_operator_typecast; } + if (ftype->_flags & CPPFunctionType::F_constructor) { + // This is a constructor. + ifunction->_flags |= InterrogateFunction::F_constructor; + } + + if (ftype->_flags & CPPFunctionType::F_destructor) { + // This is a destructor. + ifunction->_flags |= InterrogateFunction::F_destructor; + } + if (function->_storage_class & CPPInstance::SC_virtual) { // This is a virtual function. ifunction->_flags |= InterrogateFunction::F_virtual; @@ -2749,7 +2759,8 @@ define_struct_type(InterrogateType &itype, CPPStructType *cpptype, function->_storage_class |= CPPInstance::SC_inline | CPPInstance::SC_defaulted; function->_vis = V_published; - FunctionIndex index = get_function(function, "", cpptype, cpptype->get_scope(), 0); + FunctionIndex index = get_function(function, "", cpptype, cpptype->get_scope(), + InterrogateFunction::F_constructor); if (find(itype._constructors.begin(), itype._constructors.end(), index) == itype._constructors.end()) { itype._constructors.push_back(index); @@ -2775,7 +2786,8 @@ define_struct_type(InterrogateType &itype, CPPStructType *cpptype, function->_storage_class |= CPPInstance::SC_inline | CPPInstance::SC_defaulted; function->_vis = V_published; - FunctionIndex index = get_function(function, "", cpptype, cpptype->get_scope(), 0); + FunctionIndex index = get_function(function, "", cpptype, cpptype->get_scope(), + InterrogateFunction::F_constructor); if (find(itype._constructors.begin(), itype._constructors.end(), index) == itype._constructors.end()) { itype._constructors.push_back(index); @@ -2816,7 +2828,7 @@ define_struct_type(InterrogateType &itype, CPPStructType *cpptype, itype._destructor = get_function(function, "", cpptype, cpptype->get_scope(), - 0); + InterrogateFunction::F_destructor); itype._flags |= InterrogateType::F_implicit_destructor; } } diff --git a/dtool/src/interrogatedb/interrogateDatabase.cxx b/dtool/src/interrogatedb/interrogateDatabase.cxx index a8e7b37a6c..afdb7a11f7 100644 --- a/dtool/src/interrogatedb/interrogateDatabase.cxx +++ b/dtool/src/interrogatedb/interrogateDatabase.cxx @@ -968,6 +968,17 @@ read_new(std::istream &in, InterrogateModuleDef *def) { add_type(index, type); num_types--; + + // Older versions of interrogate were not setting these flags. + const InterrogateType &itype = get_type(index); + FunctionIndex dtor = itype.get_destructor(); + if (dtor != 0) { + update_function(dtor)._flags |= InterrogateFunction::F_destructor; + } + for (int i = 0; i < itype.number_of_constructors(); ++i) { + FunctionIndex ctor = itype.get_constructor(i); + update_function(ctor)._flags |= InterrogateFunction::F_constructor; + } } } diff --git a/dtool/src/interrogatedb/interrogateFunction.I b/dtool/src/interrogatedb/interrogateFunction.I index 3834e60782..6c36fec5d3 100644 --- a/dtool/src/interrogatedb/interrogateFunction.I +++ b/dtool/src/interrogatedb/interrogateFunction.I @@ -54,6 +54,22 @@ is_operator_typecast() const { return (_flags & F_operator_typecast) != 0; } +/** + * Returns true if the function is a constructor. + */ +INLINE bool InterrogateFunction:: +is_constructor() const { + return (_flags & F_constructor) != 0; +} + +/** + * Returns true if the function is a destructor. + */ +INLINE bool InterrogateFunction:: +is_destructor() const { + return (_flags & F_destructor) != 0; +} + /** * Return the class that owns the method, if is_method() returns true. */ diff --git a/dtool/src/interrogatedb/interrogateFunction.h b/dtool/src/interrogatedb/interrogateFunction.h index 1e3a251032..b3736069d7 100644 --- a/dtool/src/interrogatedb/interrogateFunction.h +++ b/dtool/src/interrogatedb/interrogateFunction.h @@ -38,6 +38,8 @@ public: INLINE bool is_method() const; INLINE bool is_unary_op() const; INLINE bool is_operator_typecast() const; + INLINE bool is_constructor() const; + INLINE bool is_destructor() const; INLINE TypeIndex get_class() const; INLINE bool has_scoped_name() const; @@ -70,6 +72,8 @@ private: F_setter = 0x0020, F_unary_op = 0x0040, F_operator_typecast = 0x0080, + F_constructor = 0x0100, + F_destructor = 0x0200, }; int _flags; @@ -97,6 +101,7 @@ public: std::string _expression; friend class InterrogateBuilder; + friend class InterrogateDatabase; friend class InterfaceMakerC; friend class InterfaceMakerPythonSimple; friend class InterfaceMakerPythonNative; diff --git a/dtool/src/interrogatedb/interrogateFunctionWrapper.I b/dtool/src/interrogatedb/interrogateFunctionWrapper.I index d636e32ebf..b0ec398623 100644 --- a/dtool/src/interrogatedb/interrogateFunctionWrapper.I +++ b/dtool/src/interrogatedb/interrogateFunctionWrapper.I @@ -148,6 +148,17 @@ parameter_is_this(int n) const { return false; } +/** + * + */ +INLINE bool InterrogateFunctionWrapper:: +parameter_is_optional(int n) const { + if (n >= 0 && n < (int)_parameters.size()) { + return (_parameters[n]._parameter_flags & PF_is_optional) != 0; + } + return false; +} + /** * */ diff --git a/dtool/src/interrogatedb/interrogateFunctionWrapper.h b/dtool/src/interrogatedb/interrogateFunctionWrapper.h index 43b01a9a79..29e59ed259 100644 --- a/dtool/src/interrogatedb/interrogateFunctionWrapper.h +++ b/dtool/src/interrogatedb/interrogateFunctionWrapper.h @@ -45,6 +45,7 @@ public: INLINE bool parameter_has_name(int n) const; INLINE const std::string ¶meter_get_name(int n) const; INLINE bool parameter_is_this(int n) const; + INLINE bool parameter_is_optional(int n) const; INLINE const std::string &get_unique_name() const; @@ -66,6 +67,7 @@ private: enum ParameterFlags { PF_has_name = 0x0001, PF_is_this = 0x0002, + PF_is_optional = 0x0004, }; int _flags; diff --git a/dtool/src/interrogatedb/interrogate_interface.cxx b/dtool/src/interrogatedb/interrogate_interface.cxx index 3fc2053855..9f52b2b873 100644 --- a/dtool/src/interrogatedb/interrogate_interface.cxx +++ b/dtool/src/interrogatedb/interrogate_interface.cxx @@ -266,6 +266,18 @@ interrogate_function_class(FunctionIndex function) { return InterrogateDatabase::get_ptr()->get_function(function).get_class(); } +bool +interrogate_function_is_constructor(FunctionIndex function) { + // cerr << "interrogate_function_is_constructor(" << function << ")\n"; + return InterrogateDatabase::get_ptr()->get_function(function).is_constructor(); +} + +bool +interrogate_function_is_destructor(FunctionIndex function) { + // cerr << "interrogate_function_is_destructor(" << function << ")\n"; + return InterrogateDatabase::get_ptr()->get_function(function).is_destructor(); +} + bool interrogate_function_has_module_name(FunctionIndex function) { // cerr << "interrogate_function_has_module_name(" << function << ")\n"; @@ -411,6 +423,12 @@ interrogate_wrapper_parameter_is_this(FunctionWrapperIndex wrapper, int n) { return InterrogateDatabase::get_ptr()->get_wrapper(wrapper).parameter_is_this(n); } +bool +interrogate_wrapper_parameter_is_optional(FunctionWrapperIndex wrapper, int n) { + // cerr << "interrogate_wrapper_is_optional(" << wrapper << ", " << n << ")\n"; + return InterrogateDatabase::get_ptr()->get_wrapper(wrapper).parameter_is_optional(n); +} + bool interrogate_wrapper_has_pointer(FunctionWrapperIndex wrapper) { // cerr << "interrogate_wrapper_has_pointer(" << wrapper << ")\n"; @@ -674,6 +692,12 @@ interrogate_type_is_enum(TypeIndex type) { return InterrogateDatabase::get_ptr()->get_type(type).is_enum(); } +bool +interrogate_type_is_scoped_enum(TypeIndex type) { + // cerr << "interrogate_type_is_scoped_enum(" << type << ")\n"; + return InterrogateDatabase::get_ptr()->get_type(type).is_scoped_enum(); +} + int interrogate_type_number_of_enum_values(TypeIndex type) { // cerr << "interrogate_type_number_of_enum_values(" << type << ")\n"; @@ -828,6 +852,12 @@ interrogate_type_get_derivation(TypeIndex type, int n) { return InterrogateDatabase::get_ptr()->get_type(type).get_derivation(n); } +bool +interrogate_type_is_final(TypeIndex type) { + // cerr << "interrogate_type_is_final(" << type << ")\n"; + return InterrogateDatabase::get_ptr()->get_type(type).is_final(); +} + bool interrogate_type_derivation_has_upcast(TypeIndex type, int n) { // cerr << "interrogate_type_derivation_has_upcast(" << type << ", " << n << diff --git a/dtool/src/interrogatedb/interrogate_interface.h b/dtool/src/interrogatedb/interrogate_interface.h index cc88af041d..df17f09e75 100644 --- a/dtool/src/interrogatedb/interrogate_interface.h +++ b/dtool/src/interrogatedb/interrogate_interface.h @@ -210,6 +210,8 @@ EXPCL_INTERROGATEDB const char *interrogate_function_prototype(FunctionIndex fun // if the function is a class method. EXPCL_INTERROGATEDB bool interrogate_function_is_method(FunctionIndex function); EXPCL_INTERROGATEDB TypeIndex interrogate_function_class(FunctionIndex function); +EXPCL_INTERROGATEDB bool interrogate_function_is_constructor(FunctionIndex function); +EXPCL_INTERROGATEDB bool interrogate_function_is_destructor(FunctionIndex function); // This returns the module name reported for the function, if available. EXPCL_INTERROGATEDB bool interrogate_function_has_module_name(FunctionIndex function); @@ -299,6 +301,7 @@ EXPCL_INTERROGATEDB TypeIndex interrogate_wrapper_parameter_type(FunctionWrapper EXPCL_INTERROGATEDB bool interrogate_wrapper_parameter_has_name(FunctionWrapperIndex wrapper, int n); EXPCL_INTERROGATEDB const char *interrogate_wrapper_parameter_name(FunctionWrapperIndex wrapper, int n); EXPCL_INTERROGATEDB bool interrogate_wrapper_parameter_is_this(FunctionWrapperIndex wrapper, int n); +EXPCL_INTERROGATEDB bool interrogate_wrapper_parameter_is_optional(FunctionWrapperIndex wrapper, int n); // This returns a pointer to a function that may be called to invoke the // function, if the -fptrs option to return function pointers was specified to @@ -423,6 +426,7 @@ EXPCL_INTERROGATEDB TypeIndex interrogate_type_wrapped_type(TypeIndex type); // If interrogate_type_is_enum() returns true, this is an enumerated type, // which means it may take any one of a number of named integer values. EXPCL_INTERROGATEDB bool interrogate_type_is_enum(TypeIndex type); +EXPCL_INTERROGATEDB bool interrogate_type_is_scoped_enum(TypeIndex type); EXPCL_INTERROGATEDB int interrogate_type_number_of_enum_values(TypeIndex type); EXPCL_INTERROGATEDB const char *interrogate_type_enum_value_name(TypeIndex type, int n); EXPCL_INTERROGATEDB const char *interrogate_type_enum_value_scoped_name(TypeIndex type, int n); @@ -499,6 +503,7 @@ EXPCL_INTERROGATEDB FunctionIndex interrogate_type_get_cast(TypeIndex type, int // list of base classes for this particular type. EXPCL_INTERROGATEDB int interrogate_type_number_of_derivations(TypeIndex type); EXPCL_INTERROGATEDB TypeIndex interrogate_type_get_derivation(TypeIndex type, int n); +EXPCL_INTERROGATEDB bool interrogate_type_is_final(TypeIndex type); // For each base class, we might need to define an explicit upcast or downcast // operation to convert the pointer to the derived class to an appropriate