85    } AxisOrientationLogic;
 
 
   89                           const QString &geometryAttribute,
 
   91                           AxisOrientationLogic axisOrientationLogic = Honour_EPSG_if_urn,
 
   92                           bool invertAxisOrientation = 
false );
 
   97                           const QMap< QString, QPair<QString, QString> > &fieldNameToSrcLayerNameFieldNameMap,
 
   98                           AxisOrientationLogic axisOrientationLogic = Honour_EPSG_if_urn,
 
   99                           bool invertAxisOrientation = 
false );
 
  111      const QMap<QString, QPair<QString, bool>> &fieldNameToSrcLayerNameFieldNameMap,
 
  112      const QMap<QString, QString> &namespacePrefixToURIMap );
 
  118    bool processData( 
const QByteArray &data, 
bool atEnd, QString &errorMsg );
 
  124    bool processData( 
const QByteArray &data, 
bool atEnd );
 
  132    QVector<QgsGmlFeaturePtrGmlIdPair> getAndStealReadyFeatures();
 
  187    void startElement( 
const XML_Char *el, 
const XML_Char **attr );
 
  188    void endElement( 
const XML_Char *el );
 
  189    void characters( 
const XML_Char *chars, 
int len );
 
  190    static void start( 
void *data, 
const XML_Char *el, 
const XML_Char **attr )
 
  194    static void end( 
void *data, 
const XML_Char *el )
 
  198    static void chars( 
void *data, 
const XML_Char *chars, 
int len )
 
  204    void addStringContentToJson();
 
  207    void setAttribute( 
const QString &name, 
const QString &value );
 
  217    int readEpsgFromAttribute( 
int &epsgNr, 
const XML_Char **attr );
 
  225    QString readAttribute( 
const QString &attributeName, 
const XML_Char **attr ) 
const;
 
  227    bool createBBoxFromCoordinateString( 
QgsRectangle &bb, 
const QString &coordString ) 
const;
 
  236    int pointsFromCoordinateString( QList<QgsPoint> &points, 
const QString &coordString, 
int *dimension = 
nullptr ) 
const;
 
  245    int pointsFromPosListString( QList<QgsPoint> &points, 
const QString &coordString, 
int dimension ) 
const;
 
  247    int pointsFromString( QList<QgsPoint> &points, 
const QString &coordString, 
int *dimension = 
nullptr ) 
const;
 
  248    int getPointWKB( QByteArray &wkbPtr, 
const QgsPoint &, 
int dimension ) 
const;
 
  249    int getLineWKB( QByteArray &wkbPtr, 
const QList<QgsPoint> &lineCoordinates, 
int dimension ) 
const;
 
  250    int getRingWKB( QByteArray &wkbPtr, 
const QList<QgsPoint> &ringCoordinates, 
int dimension ) 
const;
 
  258    int createMultiLineFromFragments();
 
  259    int createMultiPointFromFragments();
 
  260    int createPolygonFromFragments();
 
  261    int createMultiPolygonFromFragments();
 
  263    int totalWKBFragmentSize() 
const;
 
  266    ParseMode modeStackTop() { 
return mParseModeStack.isEmpty() ? 
None : mParseModeStack.top(); }
 
  269    ParseMode modeStackPop() { 
return mParseModeStack.isEmpty() ? 
None : mParseModeStack.pop(); }
 
  272    void createParser( 
const QByteArray &encoding = QByteArray() );
 
  275    XML_Parser mParser = 
nullptr;
 
  278    QVector<QgsGmlFeaturePtrGmlIdPair> mFeatureList;
 
  281    QList<LayerProperties> mLayerProperties;
 
  282    QMap< QString, LayerProperties > mMapTypeNameToProperties;
 
  286    QByteArray mTypeNameBA;
 
  287    const char *mTypeNamePtr = 
nullptr;
 
  288    size_t mTypeNameUTF8Len;
 
  295    QString mGeometryAttribute;
 
  296    QByteArray mGeometryAttributeBA;
 
  297    const char *mGeometryAttributePtr = 
nullptr;
 
  298    size_t mGeometryAttributeUTF8Len;
 
  301    QMap<QString, QPair<int, QgsField> > mThematicAttributes;
 
  302    QMap<QString, QPair<QString, bool>> mMapXPathToFieldNameAndIsNestedContent;
 
  303    QMap<QString, QString> mMapNamespaceURIToNamespacePrefix;
 
  306    QString mExceptionText;
 
  307    bool mTruncatedResponse;
 
  310    int mFeatureTupleDepth;
 
  311    QString mCurrentTypename; 
 
  313    QStack<ParseMode> mParseModeStack;
 
  314    QString mCurrentXPathWithinFeature;
 
  318    QVector<QVariant> mCurrentAttributes; 
 
  319    QString mCurrentFeatureId;
 
  322    QByteArray mCurrentWKB;
 
  324    bool mBoundedByNullFound;
 
  332    QList< QList< QByteArray > > mCurrentWKBFragments;
 
  333    QString mAttributeName;
 
  334    int mAttributeDepth = -1;
 
  335    bool mAttributeValIsNested = 
false;
 
  337    QMap< QString, QString > mMapFieldNameToJSONContent;
 
  338    nlohmann::json mAttributeJson;
 
  339    QStack<nlohmann::json *> mAttributeJsonCurrentStack;
 
  342    QString mCoordinateSeparator;
 
  344    QString mTupleSeparator;
 
  346    QStack<int> mDimensionStack;
 
  358    QString mGMLNameSpaceURI;
 
  359    const char *mGMLNameSpaceURIPtr = 
nullptr;
 
  361    AxisOrientationLogic mAxisOrientationLogic;
 
  363    bool mInvertAxisOrientationRequest;
 
  365    bool mInvertAxisOrientation;
 
  371    std::string mGeometryString;
 
  373    bool mFoundUnhandledGeometryElement;
 
  375    QTextCodec *mCodec = 
nullptr;
 
 
  394      const QString &geometryAttribute,
 
  409    int getFeatures( 
const QString &uri,
 
  412                     const QString &userName = QString(),
 
  413                     const QString &password = QString(),
 
  414                     const QString &authcfg = QString() ) 
SIP_PYNAME( getFeaturesUri );
 
  424    QMap<QgsFeatureId, QgsFeature * > 
featuresMap()
 const { 
return mFeatures; }
 
  427    QMap<QgsFeatureId, QString > 
idsMap()
 const { 
return mIdMap; }
 
  463    void handleProgressEvent( qint64 progress, qint64 totalSteps );
 
  473    void calculateExtentFromFeatures();
 
  475    void fillMapsFromParser();
 
  487    QMap<QgsFeatureId, QgsFeature * > mFeatures;
 
  492    QMap<QgsFeatureId, QString > mIdMap;