opencv/modules/matlab/generator/templates/template_map_base.cpp

32 lines
977 B
C++

#include <unordered_map>
#include <string>
#include <bridge>
typedef std::unordered_map Map;
/*! @brief Hash from strings to OpenCV enums
*
* This is a translation map for strings to OpenCV constants (enums).
* When an int is requested from the bridge, and the the mxArray storage
* type is a string, this map is invoked. Thus functions can be called
* from Matlab as, e.g.
* cv.dft(x, xf, "DFT_FORWARD");
*
* Note that an alternative Matlab class exists as well, so that functions
* can be called as, e.g.
* cv.dft(x, xf, cv.DFT_FORWARD);
*
* This string to int map tends to be faster than its Matlab companion,
* but there is no direct access to the value of the constants. It also
* enables different error reporting properties.
*/
Map<std::string, int> constants = {
{% for key, val in constants.items() %}
{% if val|convertibleToInt %}
{ "{{key}}", {{val}} },
{% else %}
{ "{{key}}", {{constants[val]}} },
{% endif %}
{% endfor %}
};