ArMapSimple Class Reference

#include <ArMapComponents.h>

Inheritance diagram for ArMapSimple:

ArMapInterface ArMapInfoInterface ArMapObjectsInterface ArMapScanInterface ArMapSupplementInterface List of all members.

Detailed Description

Simple map that can be read from and written to a file.

ArMapSimple is the real subject of the ArMap proxy. Functionally, it is identical to the ArMap, except that it is not well-suited for for loading from a file at runtime and therefore doesn't provide any hooks into the Aria config. In general, ArMap should be used instead. The exception to this rule may be in off-line authoring tools where error checking can be performed at a higher level.


Public Member Functions

virtual void addMapChangedCB (ArFunctor *functor, ArListPos::Pos position=ArListPos::LAST)
virtual void addPostWriteFileCB (ArFunctor *functor, ArListPos::Pos position=ArListPos::LAST)
virtual void addPreMapChangedCB (ArFunctor *functor, ArListPos::Pos position=ArListPos::LAST)
virtual void addPreWriteFileCB (ArFunctor *functor, ArListPos::Pos position=ArListPos::LAST)
virtual bool addToFileParser (ArFileParser *fileParser)
 ArMapSimple (const ArMapSimple &other)
 Copy constructor.
 ArMapSimple (const char *baseDirectory="./", const char *tempDirectory=NULL, const char *overrideMutexName=NULL)
 Constructor.
virtual bool calculateChecksum (unsigned char *md5DigestBuffer, size_t md5DigestBufferLen)
virtual void clear ()
virtual ArMapInterfaceclone ()
virtual std::string createRealFileName (const char *fileName)
virtual ArMapObjectfindFirstMapObject (const char *name, const char *type, bool isIncludeWithHeading=false)
virtual ArMapObjectfindMapObject (const char *name, const char *type=NULL, bool isIncludeWithHeading=false)
virtual ArArgumentBuilderfindMapObjectParams (const char *mapObjectName)
virtual std::list< ArMapObject * > findMapObjectsOfType (const char *type, bool isIncludeWithHeading=false)
virtual const char * getBaseDirectory (void) const
virtual const char * getDisplayString (const char *scanType=ARMAP_DEFAULT_SCAN_TYPE)
virtual const char * getFileName (void) const
virtual bool getIgnoreCase (void)
virtual bool getIgnoreEmptyFileName (void)
virtual ArMapInfoInterfacegetInactiveInfo ()
virtual ArMapObjectsInterfacegetInactiveObjects ()
virtual std::list< ArArgumentBuilder * > * getInfo (int infoType)
virtual std::list< ArArgumentBuilder * > * getInfo (const char *infoName)
virtual int getInfoCount () const
virtual const char * getInfoName (int infoType)
virtual std::list< std::string > getInfoNames () const
virtual ArPose getLineMaxPose (const char *scanType=ARMAP_DEFAULT_SCAN_TYPE)
virtual ArPose getLineMinPose (const char *scanType=ARMAP_DEFAULT_SCAN_TYPE)
virtual std::vector< ArLineSegment > * getLines (const char *scanType=ARMAP_DEFAULT_SCAN_TYPE)
virtual ArLog::LogLevel getMapChangedLogLevel (void)
virtual bool getMapId (ArMapId *mapIdOut, bool isInternalCall=false)
virtual std::list< ArArgumentBuilder * > * getMapInfo (void)
virtual std::list< ArMapObject * > * getMapObjects (void)
virtual ArPose getMaxPose (const char *scanType=ARMAP_DEFAULT_SCAN_TYPE)
virtual ArPose getMinPose (const char *scanType=ARMAP_DEFAULT_SCAN_TYPE)
virtual int getNumLines (const char *scanType=ARMAP_DEFAULT_SCAN_TYPE)
virtual int getNumPoints (const char *scanType=ARMAP_DEFAULT_SCAN_TYPE)
virtual double getOriginAltitude ()
virtual ArPose getOriginLatLong ()
virtual std::vector< ArPose > * getPoints (const char *scanType=ARMAP_DEFAULT_SCAN_TYPE)
virtual struct stat getReadFileStat () const
virtual std::list< ArArgumentBuilder * > * getRemainder ()
virtual int getResolution (const char *scanType=ARMAP_DEFAULT_SCAN_TYPE)
virtual std::list< std::string > getScanTypes () const
virtual const char * getTempDirectory (void) const
virtual bool hasOriginLatLongAlt ()
bool isLoadingDataStarted ()
bool isLoadingLinesAndDataStarted ()
virtual bool isSortedLines (const char *scanType=ARMAP_DEFAULT_SCAN_TYPE) const
virtual bool isSortedPoints (const char *scanType=ARMAP_DEFAULT_SCAN_TYPE) const
virtual void loadDataPoint (double x, double y)
virtual void loadLineSegment (double x1, double y1, double x2, double y2)
virtual int lock ()
virtual void mapChanged (void)
ArMapSimpleoperator= (const ArMapSimple &other)
 Assignment operator.
bool parseLine (char *line)
void parsingComplete (void)
virtual bool readDataPoint (char *line)
virtual bool readFile (const char *fileName, char *errorBuffer=NULL, size_t errorBufferLen=0, unsigned char *md5DigestBuffer=NULL, size_t md5DigestBufferLen=0)
virtual bool readLineSegment (char *line)
virtual bool refresh ()
virtual bool remFromFileParser (ArFileParser *fileParser)
virtual void remMapChangedCB (ArFunctor *functor)
virtual void remPostWriteFileCB (ArFunctor *functor)
virtual void remPreMapChangedCB (ArFunctor *functor)
virtual void remPreWriteFileCB (ArFunctor *functor)
virtual bool set (ArMapInterface *other)
virtual void setBaseDirectory (const char *baseDirectory)
virtual void setIgnoreCase (bool ignoreCase=false)
virtual void setIgnoreEmptyFileName (bool ignore)
virtual bool setInfo (int infoType, const std::list< ArArgumentBuilder * > *infoList, ArMapChangeDetails *changeDetails=NULL)
virtual bool setInfo (const char *infoName, const std::list< ArArgumentBuilder * > *infoList, ArMapChangeDetails *changeDetails=NULL)
virtual void setLines (const std::vector< ArLineSegment > *lines, const char *scanType=ARMAP_DEFAULT_SCAN_TYPE, bool isSortedLines=false, ArMapChangeDetails *changeDetails=NULL)
virtual void setMapChangedLogLevel (ArLog::LogLevel level)
virtual bool setMapInfo (const std::list< ArArgumentBuilder * > *mapInfo, ArMapChangeDetails *changeDetails=NULL)
virtual bool setMapObjectParams (const char *mapObjectName, ArArgumentBuilder *params, ArMapChangeDetails *changeDetails=NULL)
virtual void setMapObjects (const std::list< ArMapObject * > *mapObjects, bool isSortedObjects=false, ArMapChangeDetails *changeDetails=NULL)
virtual void setOriginLatLongAlt (bool hasOriginLatLong, const ArPose &originLatLong, double altitude, ArMapChangeDetails *changeDetails=NULL)
virtual void setPoints (const std::vector< ArPose > *points, const char *scanType=ARMAP_DEFAULT_SCAN_TYPE, bool isSortedPoints=false, ArMapChangeDetails *changeDetails=NULL)
virtual void setQuiet (bool isQuiet)
virtual void setResolution (int resolution, const char *scanType=ARMAP_DEFAULT_SCAN_TYPE, ArMapChangeDetails *changeDetails=NULL)
virtual bool setScanTypes (const std::list< std::string > &scanTypeList)
virtual void setSourceFileName (const char *sourceName, const char *fileName, bool isInternalCall=false)
virtual void setTempDirectory (const char *tempDirectory)
virtual int tryLock ()
virtual int unlock ()
virtual bool writeFile (const char *fileName, bool internalCall=false, unsigned char *md5DigestBuffer=NULL, size_t md5DigestBufferLen=0, time_t fileTimestamp=-1)
virtual void writeInfoToFunctor (ArFunctor1< const char * > *functor, const char *endOfLineChars)
virtual void writeLinesToFunctor (ArFunctor2< int, std::vector< ArLineSegment > * > *functor, const char *scanType=ARMAP_DEFAULT_SCAN_TYPE, ArFunctor1< const char * > *keywordFunctor=NULL)
virtual void writeObjectListToFunctor (ArFunctor1< const char * > *functor, const char *endOfLineChars)
virtual void writeObjectsToFunctor (ArFunctor1< const char * > *functor, const char *endOfLineChars, bool isOverrideAsSingleScan=false, const char *maxCategory=NULL)
virtual void writePointsToFunctor (ArFunctor2< int, std::vector< ArPose > * > *functor, const char *scanType=ARMAP_DEFAULT_SCAN_TYPE, ArFunctor1< const char * > *keywordFunctor=NULL)
virtual void writeScanToFunctor (ArFunctor1< const char * > *functor, const char *endOfLineChars, const char *scanType=ARMAP_DEFAULT_SCAN_TYPE)
virtual void writeSupplementToFunctor (ArFunctor1< const char * > *functor, const char *endOfLineChars)
virtual void writeToFunctor (ArFunctor1< const char * > *functor, const char *endOfLineChars)
virtual ~ArMapSimple (void)
 Destructor.

Static Public Member Functions

static std::list< ArArgumentBuilder
* >::iterator 
findMapObjectParamInfo (const char *mapObjectName, std::list< ArArgumentBuilder * > &cairnInfoList)
 Searches the given CairnInfo list for an entry that matches the given mapObject.

Protected Member Functions

bool addScansToParser ()
 Adds all of the map's scan types to the current file parser.
void addToCallbackList (ArFunctor *functor, ArListPos::Pos position, std::list< ArFunctor * > *cbList)
bool createScans (const std::list< std::string > &scanTypeList)
 Sets up the map to contain teh specified scan types.
ArTime findMaxMapScanTimeChanged ()
ArMapScanfindScanWithDataKeyword (const char *myLoadingDataTag, bool *isLineDataTagOut)
virtual const char * getMapCategory ()
virtual ArMapScangetScan (const char *scanType) const
 Returns the ArMapScan for the specified scan type.
bool handleDataIntro (ArArgumentBuilder *arg)
 Callback that handles the different types of data introductions (e.g. DATA, LINES).
bool handleMapCategory (ArArgumentBuilder *arg)
 Callback that handles the different types of map categories (e.g. 2D-Map, 2D-Map-Ex).
bool handleRemainder (ArArgumentBuilder *arg)
bool handleSources (ArArgumentBuilder *arg)
 Callback that handles the Sources keyword.
void invokeCallbackList (std::list< ArFunctor * > *cbList)
bool isDataTag (const char *line)
void remFromCallbackList (ArFunctor *functor, std::list< ArFunctor * > *cbList)
bool remScansFromParser (bool isRemovePointsAndLinesKeywords=true)
 Removes all of the map's scan types from the current file parser.
void reset ()
bool setInactiveInfo (const char *infoName, const std::list< ArArgumentBuilder * > *infoList, ArMapChangeDetails *changeDetails=NULL)
void setInactiveObjects (const std::list< ArMapObject * > *mapObjects, bool isSortedObjects=false, ArMapChangeDetails *changeDetails=NULL)
virtual void updateMapCategory (const char *updatedInfoName=NULL)
void updateMapFileInfo (const char *realFileName)
void updateSummaryScan ()
void writeScanTypesToFunctor (ArFunctor1< const char * > *functor, const char *endOfLineChars)

Static Protected Member Functions

static int getNextFileNumber ()

Protected Attributes

std::string myBaseDirectory
ArMD5CalculatormyChecksumCalculator
ArRetFunctor1C< bool, ArMapSimple,
ArArgumentBuilder * > 
myDataIntroCB
ArDataTagToScanTypeMap myDataTagToScanTypeMap
std::string myFileName
bool myIgnoreCase
bool myIgnoreEmptyFileName
ArMapInfo *const myInactiveInfo
ArMapObjects *const myInactiveObjects
bool myIsQuiet
bool myIsWriteToTempFile
bool myLoadingDataStarted
std::string myLoadingDataTag
bool myLoadingGotMapCategory
bool myLoadingLinesAndDataStarted
ArFileParsermyLoadingParser
ArMapScanmyLoadingScan
std::string myMapCategory
ArRetFunctor1C< bool, ArMapSimple,
ArArgumentBuilder * > 
myMapCategoryCB
std::list< std::string > myMapCategoryList
ArMapChangedHelpermyMapChangedHelper
ArMapId myMapId
ArMapInfo *const myMapInfo
std::map< std::string, ArArgumentBuilder *,
ArStrCaseCmpOp
myMapObjectNameToParamsMap
ArMapObjects *const myMapObjects
ArMapSupplement *const myMapSupplement
ArMutex myMutex
std::list< ArFunctor * > myPostWriteCBList
std::list< ArFunctor * > myPreWriteCBList
stat myReadFileStat
std::list< ArArgumentBuilder * > myRemainderList
 List of map file lines that were not recognized.
ArRetFunctor1C< bool, ArMapSimple,
ArArgumentBuilder * > 
myRemCB
std::list< std::string > myScanTypeList
ArRetFunctor1C< bool, ArMapSimple,
ArArgumentBuilder * > 
mySourcesCB
ArMapScanmySummaryScan
std::string myTempDirectory
ArTime myTimeMapInfoChanged
ArTime myTimeMapObjectsChanged
ArTime myTimeMapScanChanged
ArTime myTimeMapSupplementChanged
ArTypeToScanMap myTypeToScanMap

Static Protected Attributes

static int ourTempFileNumber
static ArMutex ourTempFileNumberMutex


Constructor & Destructor Documentation

ArMapSimple::ArMapSimple ( const char *  baseDirectory = "./",
const char *  tempDirectory = NULL,
const char *  overrideMutexName = NULL 
)

Constructor.

Parameters:
baseDirectory the name of the directory in which to search for map files that are not fully qualified
tempDirectory the name of the directory in which to write temporary files when saving a map; if NULL, then the map file is written directly. Note that using a temp file reduces the risk that the map will be corrupted if the application crashes.
overrideMutexName an optional name to be used for the map object's mutex; useful for debugging when multiple maps are active


Member Function Documentation

bool ArMapSimple::addScansToParser (  )  [protected]

Adds all of the map's scan types to the current file parser.

This method calls addToFileParser() on each of the map's scans. It also adds handlers for each of the scans' data point and line introduction keywords.

Returns:
bool true if the scans were successfully added to the current file parser

bool ArMapSimple::createScans ( const std::list< std::string > &  scanTypeList  )  [protected]

Sets up the map to contain teh specified scan types.

Any scans which are currently in the map are cleared and removed. This method is not virtual because it is called by the constructor.

Parameters:
scanTypeList a list of the scan type string identifiers to be created; the list must be non-empty and must not contain duplicates; if the list contains more than one entry, then they all must be non-empty
Returns:
bool true if the scans were successfully created; false otherwise

static std::list<ArArgumentBuilder *>::iterator ArMapSimple::findMapObjectParamInfo ( const char *  mapObjectName,
std::list< ArArgumentBuilder * > &  cairnInfoList 
) [static]

Searches the given CairnInfo list for an entry that matches the given mapObject.

The CairnInfo list stores the parameter information (if any) for map objects. If a map object is removed (or activated), then the CairnInfo must also be updated.

Parameters:
mapObject the ArMapObject for which to find the parameters
cairnInfoList the list of ArArgumentBuilder *'s that contain the map object parameters (also may be set to the inactive section)
Returns:
iterator that points to the parameter information for the map object, or cairnInfoList.end() if not found

virtual struct stat ArMapSimple::getReadFileStat (  )  const [virtual]

Java and Python Wrappers: Not available in Java or Python wrapper libraries.

Implements ArMapInterface.

bool ArMapSimple::handleDataIntro ( ArArgumentBuilder arg  )  [protected]

Callback that handles the different types of data introductions (e.g. DATA, LINES).

This method replaces the old handleData and handleLines methods. It determines which keyword was detected and updates the myLoadingDataTag and myLoadingScan attributes accordingly.

Parameters:
arg a pointer to the parsed ArArgumentBuilder; no arguments are expected

bool ArMapSimple::handleMapCategory ( ArArgumentBuilder arg  )  [protected]

Callback that handles the different types of map categories (e.g. 2D-Map, 2D-Map-Ex).

This method replaces the old handle2DMap method. It determines which category was detected and sets the myMapCategory attribute accordingly.

Parameters:
arg a pointer to the parsed ArArgumentBuilder; no arguments are expected

bool ArMapSimple::handleSources ( ArArgumentBuilder arg  )  [protected]

Callback that handles the Sources keyword.

Parameters:
arg a pointer to the parsed ArArgumentBuilder; a list of string scan type arguments are expected

virtual void ArMapSimple::loadDataPoint ( double  x,
double  y 
) [virtual]

Public for ArQClientMapProducer

Implements ArMapScanInterface.


The documentation for this class was generated from the following file:
Generated on Thu Aug 6 09:39:36 2009 for Aria by  doxygen 1.5.1