19 #include "qgis_core.h" 
   22 #include <QExplicitlySharedDataPointer> 
   35 class QgsFeaturePrivate;
 
   58 #if (SIP_VERSION >= 0x040900 && SIP_VERSION < 0x040c01) 
   59 #define sipType_QVariant ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QVariant)) 
   65     Q_PROPERTY( 
QgsAttributes attributes READ attributes WRITE setAttributes )
 
   66     Q_PROPERTY( 
QgsFields fields READ fields WRITE setFields )
 
   67     Q_PROPERTY( 
QgsGeometry geometry READ geometry WRITE setGeometry )
 
   72     SIP_PYOBJECT __iter__();
 
   75     PyObject *attrs = sipConvertFromType( &attributes, sipType_QgsAttributes, Py_None );
 
   76     sipRes = PyObject_GetIter( attrs );
 
   79     SIP_PYOBJECT __getitem__( 
int key );
 
   82     if ( a0 < 0 || a0 >= attrs.count() )
 
   84       PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) );
 
   89       QVariant *v = 
new QVariant( attrs.at( a0 ) );
 
   90       sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None );
 
   94     SIP_PYOBJECT __getitem__( 
const QString &name );
 
   96     int fieldIdx = sipCpp->fieldNameIndex( *a0 );
 
   99       PyErr_SetString( PyExc_KeyError, a0->toLatin1() );
 
  104       QVariant *v = 
new QVariant( sipCpp->attribute( fieldIdx ) );
 
  105       sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None );
 
  109     void __setitem__( 
int key, QVariant value / GetWrapper / );
 
  113     if ( a1Wrapper == Py_None )
 
  115       rv = sipCpp->setAttribute( a0, QVariant( QVariant::Int ) );
 
  119       rv = sipCpp->setAttribute( a0, *a1 );
 
  124       PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) );
 
  129     void __setitem__( 
const QString &key, QVariant value / GetWrapper / );
 
  131     int fieldIdx = sipCpp->fieldNameIndex( *a0 );
 
  132     if ( fieldIdx == -1 )
 
  134       PyErr_SetString( PyExc_KeyError, a0->toLatin1() );
 
  139       if ( a1Wrapper == Py_None )
 
  141         sipCpp->setAttribute( *a0, QVariant( QVariant::Int ) );
 
  145         sipCpp->setAttribute( fieldIdx, *a1 );
 
  150     void __delitem__( 
int key );
 
  152     if ( a0 >= 0 && a0 < sipCpp->attributes().count() )
 
  153       sipCpp->deleteAttribute( a0 );
 
  156       PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) );
 
  161     void __delitem__( 
const QString &name );
 
  163     int fieldIdx = sipCpp->fieldNameIndex( *a0 );
 
  164     if ( fieldIdx == -1 )
 
  166       PyErr_SetString( PyExc_KeyError, a0->toLatin1() );
 
  170       sipCpp->deleteAttribute( fieldIdx );
 
  244     int attributeCount() 
const;
 
  266     bool setAttribute( 
int field, 
const QVariant &attr );
 
  268     bool setAttribute( 
int field, 
const QVariant &attr / GetWrapper / );
 
  272     if ( a1Wrapper == Py_None )
 
  274       rv = sipCpp->setAttribute( a0, QVariant( QVariant::Int ) );
 
  278       rv = sipCpp->setAttribute( a0, *a1 );
 
  283       PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) );
 
  297     void initAttributes( 
int fieldCount );
 
  312     void resizeAttributes( 
int fieldCount );
 
  320     void padAttributes( 
int count );
 
  329     void deleteAttribute( 
int field );
 
  332     if ( a0 >= 0 && a0 < sipCpp->attributes().count() )
 
  333       sipCpp->deleteAttribute( a0 );
 
  336       PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) );
 
  348     bool isValid() 
const;
 
  355     void setValid( 
bool validity );
 
  362     bool hasGeometry() 
const;
 
  408     void setGeometry( std::unique_ptr< QgsAbstractGeometry > geometry );
 
  412     sipCpp->setGeometry( std::unique_ptr< QgsAbstractGeometry>( a0 ) );
 
  422     void clearGeometry();
 
  453     bool setAttribute( 
const QString &name, 
const QVariant &value );
 
  455     void setAttribute( 
const QString &name, 
const QVariant &value / GetWrapper / );
 
  457     int fieldIdx = sipCpp->fieldNameIndex( *a0 );
 
  458     if ( fieldIdx == -1 )
 
  460       PyErr_SetString( PyExc_KeyError, a0->toLatin1() );
 
  465       if ( a1Wrapper == Py_None )
 
  467         sipCpp->setAttribute( *a0, QVariant( QVariant::Int ) );
 
  471         sipCpp->setAttribute( fieldIdx, *a1 );
 
  486     bool deleteAttribute( 
const QString &name );
 
  489     int fieldIdx = sipCpp->fieldNameIndex( *a0 );
 
  490     if ( fieldIdx == -1 )
 
  492       PyErr_SetString( PyExc_KeyError, a0->toLatin1() );
 
  498       sipCpp->deleteAttribute( fieldIdx );
 
  514     QVariant attribute( 
const QString &name ) 
const;
 
  516     SIP_PYOBJECT attribute( 
const QString &name ) 
const;
 
  518     int fieldIdx = sipCpp->fieldNameIndex( *a0 );
 
  519     if ( fieldIdx == -1 )
 
  521       PyErr_SetString( PyExc_KeyError, a0->toLatin1() );
 
  526       QVariant *v = 
new QVariant( sipCpp->attribute( fieldIdx ) );
 
  527       sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None );
 
  542     QVariant attribute( 
int fieldIdx ) 
const;
 
  544     SIP_PYOBJECT attribute( 
int fieldIdx ) 
const;
 
  547       if ( a0 < 0 || a0 >= sipCpp->attributes().count() )
 
  549         PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) );
 
  554         QVariant *v = 
new QVariant( sipCpp->attribute( a0 ) );
 
  555         sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None );
 
  568     int fieldNameIndex( 
const QString &fieldName ) 
const;
 
  579     int approximateMemoryUsage() 
const;
 
  582     operator QVariant()
 const 
  584       return QVariant::fromValue( *
this );
 
  589     QExplicitlySharedDataPointer<QgsFeaturePrivate> d;
 
Abstract base class for all geometries.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Encapsulate a field in an attribute table or data source.
Container of fields for a vector layer.
A geometry is the spatial representation of a feature.
A rectangle specified with double values.
#define SIP_PYARGDEFAULT(value)
QMap< QgsFeatureId, QgsGeometry > QgsGeometryMap
CORE_EXPORT QDataStream & operator>>(QDataStream &in, QgsFeature &feature)
Reads a feature from stream in into feature. QGIS version compatibility is not guaranteed.
QMap< QgsFeatureId, QgsAttributeMap > QgsChangedAttributesMap
CORE_EXPORT QDataStream & operator<<(QDataStream &out, const QgsFeature &feature)
Writes the feature to stream out. QGIS version compatibility is not guaranteed.
uint qHash(const QgsFeature &key, uint seed=0)
QList< QgsFeature > QgsFeatureList
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features
bool operator==(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)
bool operator!=(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)
Q_DECLARE_METATYPE(QgsMeshTimeSettings)