/************************************************************************ * This file has been generated automatically from * * * * src/core/qgsfeature.h * * * * Do not edit manually ! Edit header and run scripts/sipify.pl again * ************************************************************************/ class QgsFeature { %Docstring The feature class encapsulates a single feature including its id, geometry and a list of field/values attributes. .. note:: QgsFeature objects are implicitly shared. %End %TypeHeaderCode #include "qgsfeature.h" #if (SIP_VERSION >= 0x040900 && SIP_VERSION < 0x040c01) #define sipType_QVariant ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QVariant)) #endif %End public: SIP_PYOBJECT __iter__(); %MethodCode QgsAttributes attributes = sipCpp->attributes(); PyObject *attrs = sipConvertFromType( &attributes, sipType_QgsAttributes, Py_None ); sipRes = PyObject_GetIter( attrs ); %End SIP_PYOBJECT __getitem__( int key ); %MethodCode QgsAttributes attrs = sipCpp->attributes(); if ( a0 < 0 || a0 >= attrs.count() ) { PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) ); sipIsErr = 1; } else { QVariant *v = new QVariant( attrs.at( a0 ) ); sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None ); } %End SIP_PYOBJECT __getitem__( const QString &name ); %MethodCode int fieldIdx = sipCpp->fieldNameIndex( *a0 ); if ( fieldIdx == -1 ) { PyErr_SetString( PyExc_KeyError, a0->toAscii() ); sipIsErr = 1; } else { QVariant *v = new QVariant( sipCpp->attribute( fieldIdx ) ); sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None ); } %End void __setitem__( int key, QVariant value /GetWrapper/ ); %MethodCode bool rv; if ( a1Wrapper == Py_None ) { rv = sipCpp->setAttribute( a0, QVariant( QVariant::Int ) ); } else { rv = sipCpp->setAttribute( a0, *a1 ); } if ( !rv ) { PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) ); sipIsErr = 1; } %End void __setitem__( const QString &key, QVariant value /GetWrapper/ ); %MethodCode int fieldIdx = sipCpp->fieldNameIndex( *a0 ); if ( fieldIdx == -1 ) { PyErr_SetString( PyExc_KeyError, a0->toAscii() ); sipIsErr = 1; } else { if ( a1Wrapper == Py_None ) { sipCpp->setAttribute( *a0, QVariant( QVariant::Int ) ); } else { sipCpp->setAttribute( fieldIdx, *a1 ); } } %End void __delitem__( int key ); %MethodCode if ( a0 >= 0 && a0 < sipCpp->attributes().count() ) sipCpp->deleteAttribute( a0 ); else { PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) ); sipIsErr = 1; } %End void __delitem__( const QString &name ); %MethodCode int fieldIdx = sipCpp->fieldNameIndex( *a0 ); if ( fieldIdx == -1 ) { PyErr_SetString( PyExc_KeyError, a0->toAscii() ); sipIsErr = 1; } else sipCpp->deleteAttribute( fieldIdx ); %End QgsFeature( qint64 id = 0 ); %Docstring Constructor for QgsFeature \param id feature id %End QgsFeature( const QgsFields &fields, qint64 id = 0 ); %Docstring Constructor for QgsFeature \param fields feature's fields \param id feature id %End QgsFeature( const QgsFeature &rhs ); %Docstring Copy constructor %End virtual ~QgsFeature(); QgsFeatureId id() const; %Docstring Get the feature ID for this feature. :return: feature ID .. seealso:: :py:func:`setId()` :rtype: QgsFeatureId %End void setId( QgsFeatureId id ); %Docstring Sets the feature ID for this feature. \param id feature id .. seealso:: :py:func:`id` %End QgsAttributes attributes() const; %Docstring Returns the feature's attributes. :return: list of feature's attributes .. seealso:: :py:func:`setAttributes` .. versionadded:: 2.9 .. note:: Alternatively in Python: iterate feature, eg. @code [attr for attr in feature] @endcode :rtype: QgsAttributes %End void setAttributes( const QgsAttributes &attrs ); %Docstring Sets the feature's attributes. The feature will be valid after. \param attrs attribute list .. seealso:: :py:func:`setAttribute` .. seealso:: :py:func:`attributes` %End bool setAttribute( int field, const QVariant &attr /GetWrapper/ ); %Docstring Set an attribute's value by field index. The feature will be valid if it was successful. \param field the index of the field to set \param attr the value of the attribute :return: false, if the field index does not exist .. note:: For Python: raises a KeyError exception instead of returning false .. note:: Alternatively in Python: @code feature[field] = attr @endcode .. seealso:: :py:func:`setAttributes` :rtype: bool %End %MethodCode bool rv; if ( a1Wrapper == Py_None ) { rv = sipCpp->setAttribute( a0, QVariant( QVariant::Int ) ); } else { rv = sipCpp->setAttribute( a0, *a1 ); } if ( !rv ) { PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) ); sipIsErr = 1; } sipRes = rv; %End void initAttributes( int fieldCount ); %Docstring Initialize this feature with the given number of fields. Discard any previously set attribute data. \param fieldCount Number of fields to initialize %End void deleteAttribute( int field ); %Docstring Deletes an attribute and its value. \param field the index of the field .. seealso:: :py:func:`setAttribute` .. note:: For Python: raises a KeyError exception if the field is not found .. note:: Alternatively in Python: @code del feature[field] @endcode %End %MethodCode if ( a0 >= 0 && a0 < sipCpp->attributes().count() ) sipCpp->deleteAttribute( a0 ); else { PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) ); sipIsErr = 1; } %End bool isValid() const; %Docstring Returns the validity of this feature. This is normally set by the provider to indicate some problem that makes the feature invalid or to indicate a null feature. .. seealso:: :py:func:`setValid` :rtype: bool %End void setValid( bool validity ); %Docstring Sets the validity of the feature. \param validity set to true if feature is valid .. seealso:: :py:func:`isValid` %End bool hasGeometry() const; %Docstring Returns true if the feature has an associated geometry. .. seealso:: :py:func:`geometry()` .. versionadded:: 3.0. :rtype: bool %End QgsGeometry geometry() const; %Docstring Returns the geometry associated with this feature. If the feature has no geometry, an empty QgsGeometry object will be returned. .. seealso:: :py:func:`hasGeometry()` .. seealso:: :py:func:`setGeometry()` :rtype: QgsGeometry %End void setGeometry( const QgsGeometry &geometry ); %Docstring Set the feature's geometry. The feature will be valid after. \param geometry new feature geometry .. seealso:: :py:func:`geometry()` .. seealso:: :py:func:`clearGeometry()` %End void clearGeometry(); %Docstring Removes any geometry associated with the feature. .. seealso:: :py:func:`setGeometry()` .. seealso:: :py:func:`hasGeometry()` .. versionadded:: 3.0 %End void setFields( const QgsFields &fields, bool initAttributes = true ); %Docstring Assign a field map with the feature to allow attribute access by attribute name. \param fields The attribute fields which this feature holds \param initAttributes If true, attributes are initialized. Clears any data previously assigned. C++: Defaults to false Python: Defaults to true .. versionadded:: 2.9 .. seealso:: :py:func:`fields` %End QgsFields fields() const; %Docstring Returns the field map associated with the feature. .. seealso:: :py:func:`setFields` :rtype: QgsFields %End void setAttribute( const QString &name, const QVariant &value /GetWrapper/ ); %Docstring Insert a value into attribute. Returns false if attribute name could not be converted to index. Field map must be associated using setFields() before this method can be used. The feature will be valid if it was successful \param name The name of the field to set \param value The value to set :return: false if attribute name could not be converted to index (C++ only) .. note:: For Python: raises a KeyError exception instead of returning false .. note:: Alternatively in Python: @code feature[name] = attr @endcode .. seealso:: :py:func:`setFields` %End %MethodCode int fieldIdx = sipCpp->fieldNameIndex( *a0 ); if ( fieldIdx == -1 ) { PyErr_SetString( PyExc_KeyError, a0->toAscii() ); sipIsErr = 1; } else { if ( a1Wrapper == Py_None ) { sipCpp->setAttribute( *a0, QVariant( QVariant::Int ) ); } else { sipCpp->setAttribute( fieldIdx, *a1 ); } } %End bool deleteAttribute( const QString &name ); %Docstring Removes an attribute value by field name. Field map must be associated using setFields() before this method can be used. \param name The name of the field to delete :return: false if attribute name could not be converted to index (C++ only) .. note:: For Python: raises a KeyError exception instead of returning false .. note:: Alternatively in Python: @code del feature[name] @endcode .. seealso:: :py:func:`setFields` :rtype: bool %End %MethodCode int fieldIdx = sipCpp->fieldNameIndex( *a0 ); if ( fieldIdx == -1 ) { PyErr_SetString( PyExc_KeyError, a0->toAscii() ); sipIsErr = 1; sipRes = false; } else { sipCpp->deleteAttribute( fieldIdx ); sipRes = true; } %End SIP_PYOBJECT attribute( const QString &name ) const; %Docstring Lookup attribute value from attribute name. Field map must be associated using setFields() before this method can be used. \param name The name of the attribute to get :return: The value of the attribute (C++: Invalid variant if no such name exists ) .. note:: For Python: raises a KeyError exception if the field is not found .. note:: Alternatively in Python: @code feature[name] @endcode .. seealso:: :py:func:`setFields` %End %MethodCode int fieldIdx = sipCpp->fieldNameIndex( *a0 ); if ( fieldIdx == -1 ) { PyErr_SetString( PyExc_KeyError, a0->toAscii() ); sipIsErr = 1; } else { QVariant *v = new QVariant( sipCpp->attribute( fieldIdx ) ); sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None ); } %End SIP_PYOBJECT attribute( int fieldIdx ) const; %Docstring Lookup attribute value from its index. Field map must be associated using setFields() before this method can be used. \param fieldIdx The index of the attribute to get :return: The value of the attribute (C++: Invalid variant if no such index exists ) .. note:: For Python: raises a KeyError exception if the field is not found .. note:: Alternatively in Python: @code feature[fieldIdx] @endcode .. seealso:: :py:func:`setFields` %End %MethodCode { if ( a0 < 0 || a0 >= sipCpp->attributes().count() ) { PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) ); sipIsErr = 1; } else { QVariant *v = new QVariant( sipCpp->attribute( a0 ) ); sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None ); } } %End int fieldNameIndex( const QString &fieldName ) const; %Docstring Utility method to get attribute index from name. Field map must be associated using setFields() before this method can be used. \param fieldName name of field to get attribute index of :return: -1 if field does not exist or field map is not associated. .. seealso:: :py:func:`setFields` :rtype: int %End operator QVariant() const; %Docstring Allows direct construction of QVariants from features. %End }; // class QgsFeature typedef QMap > QgsChangedAttributesMap; typedef QMap QgsGeometryMap; typedef QSet QgsFeatureIds; typedef QList QgsFeatureList; /************************************************************************ * This file has been generated automatically from * * * * src/core/qgsfeature.h * * * * Do not edit manually ! Edit header and run scripts/sipify.pl again * ************************************************************************/