15 #ifndef QGSVECTORDATAPROVIDER_H 
   16 #define QGSVECTORDATAPROVIDER_H 
   65       DeleteFeatures =               1 <<  1,
 
   67       ChangeAttributeValues =        1 <<  2,
 
   69       AddAttributes =                1 <<  3,
 
   71       DeleteAttributes =             1 <<  4,
 
   73       SaveAsShapefile =              1 <<  5,
 
   75       CreateSpatialIndex =           1 <<  6,
 
   79       ChangeGeometries =             1 <<  8,
 
   81       SelectGeometryAtId =           1 <<  9,
 
   83       RandomSelectGeometryAtId =     1 << 10,
 
   85       SequentialSelectGeometryAtId = 1 << 11,
 
   86       CreateAttributeIndex =         1 << 12,
 
   88       SelectEncoding =               1 << 13,
 
   90       SimplifyGeometries =           1 << 14,
 
   92       SimplifyGeometriesWithTopologicalValidation = 1 << 15,
 
   96     const static int EditingCapabilities = AddFeatures | DeleteFeatures |
 
   97                                            ChangeAttributeValues | ChangeGeometries | AddAttributes | DeleteAttributes;
 
  113     virtual QString storageType() 
const;
 
  130     virtual long featureCount() 
const = 0;
 
  137     virtual const QgsFields &fields() 
const = 0;
 
  143     virtual QString dataComment() 
const;
 
  153     virtual QVariant minimumValue( 
int index );
 
  163     virtual QVariant maximumValue( 
int index );
 
  173     virtual void uniqueValues( 
int index, QList<QVariant> &uniqueValues, 
int limit = -1 );
 
  182     virtual void enumValues( 
int index, QStringList& enumList ) { Q_UNUSED( index ); enumList.clear(); }
 
  203     virtual bool addAttributes( 
const QList<QgsField> &attributes );
 
  222     virtual QVariant defaultValue( 
int fieldId );
 
  231     virtual bool changeGeometryValues( 
QgsGeometryMap & geometry_map );
 
  237     virtual bool createSpatialIndex();
 
  240     virtual bool createAttributeIndex( 
int field );
 
  247     virtual int capabilities() 
const;
 
  252     QString capabilitiesString() 
const;
 
  257     virtual void setEncoding( 
const QString& e );
 
  262     QString encoding() 
const;
 
  267     int fieldNameIndex( 
const QString& fieldName ) 
const;
 
  272     QMap<QString, int> fieldNameMap() 
const;
 
  294     bool supportedType( 
const QgsField &field ) 
const;
 
  298       NativeType( QString typeDesc, QString typeName, QVariant::Type type, 
int minLen = 0, 
int maxLen = 0, 
int minPrec = 0, 
int maxPrec = 0 ) :
 
  299           mTypeDesc( typeDesc ), mTypeName( typeName ), mType( type ), mMinLen( minLen ), mMaxLen( maxLen ), mMinPrec( minPrec ), mMaxPrec( maxPrec ) {};
 
  314     const QList< NativeType > &nativeTypes() 
const;
 
  322     static const QStringList &availableEncodings();
 
  340     QStringList errors();
 
  350     QVariant convertValue( QVariant::Type type, QString value );
 
  352     void clearMinMaxCache();
 
  353     void fillMinMaxCache();
 
  373     void pushError( QString msg );