Skip to content

DataMap

Clifford Bohm edited this page Jul 28, 2017 · 9 revisions

A DataMap is used to collect data about some object. Many objects in MABE use DataMaps and Archivists are able to save data stored within DataMaps. Simply put, if data is entered into a DataMap and the object that owns that DataMap is Archived, then the data will be saved (really, it's that simple)

Under the hood

The data is stored in a map, that is an unordered list of key-value pairs. Data can be added to and removed from the DataMap. The values in data maps can be bool, int, double or string. DataMaps also include functions to save their contents to files.

Usage

Set(), Get() and, Append() methods write values into and read values from a data Map.

  • Set(key,value) - set a value in a data map associated with key.
  • Append(key,value) - add a value to a list of values associated with key.
  • setOutputBehavior(key, outputBehavior) - define how data associated with key will be saved to file when saveToFile() is called. outputBehavior options are: LIST, AVE, FIRST, VAR(variance) (more will be implimented in the future). If more then one output behavior is needed, list them sperated with '|' (e.g. setOutputBehavior("score", DataMap::AVE | DataMap::LIST) )
  • GetBoolVector(key),GetIntVector(key),GetDoubleVector(key),GetStringVector(key) - get a vector of the given type associated with key.
  • GetStringOfVector(key) - convert the values associated key to a string
  • GetAverage(key) - retuns a double, which is the average of the values associated with key. If key is associated with string values, this will result in an error message.
  • Clear(key) - clear entry for key from a dataMap
  • ClearMap() - clear all elements from dataMap
  • fieldExists(key) - return true if this key is in map
  • writeToFile(fileName, keys, aveOnly) - save the contents of this DataMap to file 'fileName'. If keys are provided (a vector of string) then only write these keys data. If aveOnly (bool, default false), than only save average values (not lists, etc.)
  • Merge(otherDataMap, replace) - merge contents of two data maps - if common keys are found, replace 1 = overwrite, replace 0 (default) = append.
Clone this wiki locally