#include <mw/EPos_CPosLandmarkParser.h>
class CPosLandmarkParser : public CBase |
Public Member Functions | |
---|---|
virtual | ~CPosLandmarkParser() |
pure virtual TPtrC | CollectionData(TPosLmCollectionDataId) |
pure virtual TPosLmCollectionDataId | FirstCollectionDataId() |
pure virtual CPosLandmarkCategory * | LandmarkCategoryLC(TPosLmItemId) |
pure virtual CPosLandmark * | LandmarkLC(TUint) |
IMPORT_C CPosLandmarkParser * | NewL(const TDesC8 &) |
pure virtual TPosLmCollectionDataId | NextCollectionDataId(TPosLmCollectionDataId) |
pure virtual TUint32 | NumOfParsedLandmarks() |
pure virtual CPosLmOperation * | ParseContentL(TBool) |
pure virtual void | SetInputBuffer(const TDesC8 &) |
pure virtual void | SetInputFileHandleL(RFile &) |
pure virtual void | SetInputFileL(const TDesC &) |
Protected Member Functions | |
---|---|
CPosLandmarkParser() |
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.
TPtrC | CollectionData | ( | TPosLmCollectionDataId | aDataId | ) | 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 .
Parameter | Description |
---|---|
aDataId | The collection data to retrieve. |
Returns: The requested collection data.
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 .
Returns: The first landmark collection data ID or EPosLmCollDataNone if there is no landmark collection data detected.
CPosLandmarkCategory * | LandmarkCategoryLC | ( | TPosLmItemId | aCategoryId | ) | 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.
Parameter | Description |
---|---|
aCategoryId | The ID of the landmark category. |
Returns: The requested landmark category.
CPosLandmark * | LandmarkLC | ( | TUint | aLandmarkIndex = 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.
Parameter | Description |
---|---|
aLandmarkIndex | The index of the landmark to retrieve. |
Returns: The requested landmark.
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.
Returns: A new instance of this class.
TPosLmCollectionDataId | NextCollectionDataId | ( | TPosLmCollectionDataId | aCollectionData | ) | 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 .
Parameter | Description |
---|---|
aCollectionData | Previous landmark collection data ID. |
Returns: The next landmark collection data ID or EPosLmCollDataNone if there is no more landmark collection data detected.
TUint32 | NumOfParsedLandmarks | ( | ) | const [pure virtual] |
Retrieve the total number of parsed landmarks.
This function can also be called while ParseContentL is incrementally executed.
Returns: The total number of parsed landmarks.
CPosLmOperation * | ParseContentL | ( | TBool | aBuildIndex = EFalse | ) | [pure virtual] |
Parse landmark content.
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.
Parameter | Description |
---|---|
aBuildIndex | Specifies if the parser should build an index. |
Returns: A handle to the operation.
void | SetInputBuffer | ( | 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.
Parameter | Description |
---|---|
aBuffer | The buffer containing the landmark content. |
void | SetInputFileHandleL | ( | 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.
Parameter | Description |
---|---|
aFileHandle | The handle to the file which should be parsed. |
void | SetInputFileL | ( | 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.
Parameter | Description |
---|---|
aFile | The file containing the landmark content. |