Files
cpp/include/caopCodes.h
2021-03-16 09:30:56 +01:00

77 lines
2.0 KiB
C++

///
/// \file caopCodes.h
/// \author Jan Chrin, PSI
/// \date Release: April 2015
/// \version CAFE 1.0.0
///
#ifndef CAOPCODES_H
#define CAOPCODES_H
#include <cadef.h>
#include <iostream>
#include <string>
#include <map>
/**
* Provides methods to convert between
* the CA_OP_xx and text equivalent
*/
class CAOPCodes
{
typedef std::map<int, std::string> mapIntString;
private:
mapIntString mapDataType;
mapIntString::iterator pos;
public:
CAOPCodes()
{
mapDataType.insert(std::make_pair((int) CA_OP_GET, "CA_OP_GET" ));
mapDataType.insert(std::make_pair((int) CA_OP_PUT, "CA_OP_PUT" ));
mapDataType.insert(std::make_pair((int) CA_OP_CREATE_CHANNEL, "CA_OP_CREATE_CHANNEL" ));
mapDataType.insert(std::make_pair((int) CA_OP_ADD_EVENT, "CA_OP_ADD_EVENT" ));
mapDataType.insert(std::make_pair((int) CA_OP_CLEAR_EVENT, "CA_OP_CLEAR_EVENT" ));
mapDataType.insert(std::make_pair((int) CA_OP_OTHER, "CA_OP_OTHER" ));
mapDataType.insert(std::make_pair((int) CA_OP_CONN_UP, "CA_OP_CONN_UP" ));
mapDataType.insert(std::make_pair((int) CA_OP_CONN_DOWN, "CA_OP_CONN_DOWN" ));
};
~CAOPCodes() {};
std::string message (int i)
{
pos = mapDataType.find(i);
if (pos != mapDataType.end()) return pos->second;
return "CAFE_DATATYPE_UNKNOWN";
};
int enumIs (std::string message)
{
for (pos=mapDataType.begin(); pos != mapDataType.end(); ++pos)
if (pos->second==message) return pos->first;
return -1;
};
void show()
{
print();
}
void print ( )
{
std::cout << "------------------" << std::endl;
std::cout << "CA_OP_LIST" << std::endl;
std::cout << "-----------------" << std::endl;
for (pos=mapDataType.begin(); pos != mapDataType.end(); ++pos)
{
std::cout << pos->first << " " << pos->second << std::endl;
}
std::cout << "-----------------" << std::endl;
};
};
#endif