CPosLandmarkParser Class Reference

class CPosLandmarkParser : public CBase

Class used for parsing landmark content.

When creating an instance of this class, the type (e.g. the mime type) of the landmark content must be specified. The client will then receive a parser implementation which understands the requested landmark content.

The client specifies landmark content either in a buffer or in a file. The buffer/file is needed until the client no longer uses the parser object for accessing the parsed data. If the buffer/file is deleted or modified, it may not be possible to access the parsed landmark data.

ParseContentL returns a CPosLmOperation which means parsing can be run incrementally. Each call to CPosLmOperation::NextStep parses one landmark. The landmark can be retrieved by calling LandmarkLC .

Optionally, the client can specify that the parser should build an index. An index enables direct access to all landmarks when the content has been fully parsed. The content is fully parsed when CPosLmOperation::NextStep or CPosLmOperation::ExecuteL complete with KErrNone. The LandmarkLC method then can be called with landmark index to directly access any of parsed landmarks.

If CPosLandmarkParser is used, the client must call the global function ReleaseLandmarkResources before terminating, in order to release all used landmark resources, otherwise the client may receive an ALLOC panic.

eposlandmarks.lib
Since
S60 3.0

Inherits from

Constructor & Destructor Documentation

CPosLandmarkParser()

IMPORT_CCPosLandmarkParser()[protected]

CPosLandmarkParser(const CPosLandmarkParser &)

CPosLandmarkParser(const CPosLandmarkParser &)[private]

Parameters

const CPosLandmarkParser &

~CPosLandmarkParser()

IMPORT_C~CPosLandmarkParser()[virtual]

Destructor.

Member Functions Documentation

CollectionData(TPosLmCollectionDataId)

TPtrC CollectionData(TPosLmCollectionDataIdaDataId)const [pure virtual]

Retrieve a specific collection data.

If the requested collection data is not found, this function will return an empty descriptor.

The returned descriptor pointer can be used as long as the parser object exists and is not reset by calling SetInputBuffer , SetInputFileL or SetInputFileHandleL .

Parameters

TPosLmCollectionDataId aDataIdThe collection data to retrieve.

FirstCollectionDataId()

TPosLmCollectionDataId FirstCollectionDataId()const [pure virtual]

Retrieve the first landmark collection data identifier.

Landmark collection data is generic information about the landmark collection.

To retrieve the next collection data, call NextCollectionDataId . To retrieve the content of the collection data, call CollectionData .

LandmarkCategoryLC(TPosLmItemId)

CPosLandmarkCategory *LandmarkCategoryLC(TPosLmItemIdaCategoryId)const [pure virtual]

Retrieve a landmark category found in a parsed landmark.

A landmark may include the IDs of some landmark categories. These categories are retrieved by calling this function.

Note that a category ID in this case is not the ID of a category stored in a database, but the category ID specified in the parsed landmark.

Note that even if the returned category object is modified, the changes will not be included when importing using CPosLandmarkDatabase::ImportLandmarksL .

The client takes ownership of the returned category object.

leave
KErrNotFound Passed category ID is not part of the parsed landmark content.

Parameters

TPosLmItemId aCategoryIdThe ID of the landmark category.

LandmarkLC(TUint)

CPosLandmark *LandmarkLC(TUintaLandmarkIndex =  KPosLastParsedLandmark )const [pure virtual]

Retrieve a parsed landmark.

The client can supply an index of the landmark to retrieve. Index must be a positive number and less than the number of parsed landmarks, otherwise this function will panic with error code EPosInvalidIndex. If no index has been built, this function will leave with error code KErrNotFound. A landmark index is built by supplying a parameter in ParseContentL .

If aLandmarkIndex parameter is omitted, or KPosLastParsedLandmark is supplied, then this function will retrieve the last parsed landmark. This does not require that an index has been built. Each CPosLmOperation::NextStep call will parse a new landmark.

The client may retrieve the categories of the landmark by calling LandmarkCategoryLC and supplying the category ID which can be obtained from the landmark object.

Note that even if the returned landmark object is modified, the changes will not be included when importing using CPosLandmarkDatabase::ImportLandmarksL .

The client takes ownership of the returned landmark object.

leave
KErrNotFound No index has been built and given index value is not equal to KPosLastParsedLandmark.
panic
"Landmarks Client"-EPosInvalidIndex When landmark index is used and given index value is negative and not equal to KPosLastParsedLandmark or greater or equal to the number of parsed landmarks.

Parameters

TUint aLandmarkIndex =  KPosLastParsedLandmark The index of the landmark to retrieve.

NewL(const TDesC8 &)

IMPORT_C CPosLandmarkParser *NewL(const TDesC8 &aContentMimeType)[static]

Two-phased constructor.

The client must specify the type (e.g. the mime type) of the landmark content which should be parsed.

leave
KErrNotSupported Content format is not supported.

Parameters

const TDesC8 & aContentMimeType

NextCollectionDataId(TPosLmCollectionDataId)

TPosLmCollectionDataId NextCollectionDataId(TPosLmCollectionDataIdaCollectionData)const [pure virtual]

Retrieve the next landmark collection data identifier.

Landmark collection data is generic information about the landmark collection.

To retrieve the first collection data, call FirstCollectionDataId . To retrieve the content of the collection data, call CollectionData .

Parameters

TPosLmCollectionDataId aCollectionDataPrevious landmark collection data ID.

NumOfParsedLandmarks()

TUint32 NumOfParsedLandmarks()const [pure virtual]

Retrieve the total number of parsed landmarks.

This function can also be called while ParseContentL is incrementally executed.

ParseContentL(TBool)

CPosLmOperation *ParseContentL(TBoolaBuildIndex = EFalse)[pure virtual]

Parse landmark content.

Pre-condition
Input buffer or file or file handle has been specified.
The landmark content to be parsed is specified in SetInputBuffer , SetInputFileL or SetInputFileHandleL .

Any previously parsed data is discarded.

The function returns an operation object which can be run in incremental mode. If it is run incrementally the client can supervise the progress of the operation.

The client takes ownership of the returned operation object.

If the CPosLmOperation object is deleted before the operation is complete, it will not be possible to retrieve any parsed data.

If the content is in unrecognized format, or if the content is invalid, the returned operation will fail with error code KErrPosLmUnknownFormat.

If another content source is set by SetInputBuffer , SetInputFileL or SetInputFileHandleL , then this method needs to be called again to get a new operation object. If the previous operation object is still executed, it will panic with error code EPosLmProtocolBreak.

The client can specify that the parser should build an index while parsing. Building an index uses more memory but it allows unlimited direct access to all parsed data. If the parser does not support indexing, this call will fail with error code KErrNotSupported.

leave
KErrNotSupported aBuildIndex is ETrue, but parser does not support indexing.
panic
"Landmarks Client"-EPosLmProtocolBreak Input buffer or file or file handle not yet specified.

Parameters

TBool aBuildIndex = EFalseSpecifies if the parser should build an index.

SetInputBuffer(const TDesC8 &)

voidSetInputBuffer(const TDesC8 &aBuffer)[pure virtual]

Sets the buffer to be parsed.

The parser does not copy the data which means the buffer must not be deleted or modified until the client no longer uses the parser to access the content.

This call discards any previous parsing result.

Parameters

const TDesC8 & aBufferThe buffer containing the landmark content.

SetInputFileHandleL(RFile &)

voidSetInputFileHandleL(RFile &aFileHandle)[pure virtual]

Sets a handle to the file which should be parsed.

The file needs to be open until the client no longer uses the parser to access the content.

This call discards any previous parsing result.

leave
KErrAccessDenied aFileHandle is opened in read-write mode, When KMZ file is getting parsed.

Parameters

RFile & aFileHandleThe handle to the file which should be parsed.

SetInputFileL(const TDesC &)

voidSetInputFileL(const TDesC &aFile)[pure virtual]

Opens the file with the landmark content to be parsed.

The file is opened in read-only sharing mode which means the file cannot be deleted or modified until the file is released. The file is released either by deleting the parser object or if SetInputBuffer , SetInputFileL or SetInputFileHandleL is called for some new landmark content data.

This call discards any previous parsing result.

Parameters

const TDesC & aFileThe file containing the landmark content.

operator=(const CPosLandmarkParser &)

CPosLandmarkParser &operator=(const CPosLandmarkParser &)[private]

Parameters

const CPosLandmarkParser &

Member Data Documentation

TUid iDtorIdKey

TUid iDtorIdKey[private]

CPosLandmarkParserExtension * iExtension

CPosLandmarkParserExtension *iExtension[private]