new release

This commit is contained in:
2018-12-14 15:54:11 +01:00
parent 52fe50f14a
commit b09186294d
92 changed files with 399213 additions and 269856 deletions

View File

@@ -7,27 +7,27 @@
#ifndef CAFEDATATYPE_H
#define CAFEDATATYPE_H
#include <cadef.h>
#include <iostream>
#include <string>
#include <map>
enum CAFE_DATATYPE {
CAFE_TYPENOTCONN = TYPENOTCONN, // -1 val returned by ca_field_type when channel not connected
CAFE_STRING = DBF_STRING, // 0
CAFE_SHORT = DBF_SHORT, // 1
CAFE_INT = DBF_INT, // 1
CAFE_FLOAT = DBF_FLOAT, // 2
CAFE_ENUM = DBF_ENUM, // 3
CAFE_USHORT = DBF_ENUM, // 3
CAFE_CHAR = DBF_CHAR, // 4
CAFE_LONG = DBF_LONG, // 5
CAFE_DOUBLE = DBF_DOUBLE, // 6
CAFE_NO_ACCESS = DBF_NO_ACCESS, //7
CAFE_INVALID_DATATYPE = 8,
CAFE_NOT_REQUESTED = 100,
CAFE_NOT_SHOWN = 101 // (in stop monitor)
CAFE_TYPENOTCONN = TYPENOTCONN, // -1 val returned by ca_field_type when channel not connected
CAFE_STRING = DBF_STRING, // 0
CAFE_SHORT = DBF_SHORT, // 1
CAFE_INT = DBF_INT, // 1
CAFE_FLOAT = DBF_FLOAT, // 2
CAFE_ENUM = DBF_ENUM, // 3
CAFE_USHORT = DBF_ENUM, // 3
CAFE_CHAR = DBF_CHAR, // 4
CAFE_LONG = DBF_LONG, // 5
CAFE_DOUBLE = DBF_DOUBLE, // 6
CAFE_NO_ACCESS = DBF_NO_ACCESS, //7
CAFE_INVALID_DATATYPE = 8,
CAFE_NOT_REQUESTED = 100,
CAFE_NOT_SHOWN = 101 // (in stop monitor)
};
/**
@@ -35,80 +35,89 @@ enum CAFE_DATATYPE {
* the CAFE_DATATYPES and text equivalent
*/
class CAFEDataTypeCode {
typedef std::map<int, std::string> mapLongString;
private:
mapLongString mapDataType;
mapLongString::iterator pos;
typedef std::map<int, std::string> mapLongString;
private:
mapLongString mapDataType;
mapLongString::iterator pos;
public:
CAFEDataTypeCode() {
mapDataType.insert(std::make_pair((int) CAFE_TYPENOTCONN, "CAFE_TYPENOTCONN" ));
mapDataType.insert(std::make_pair((int) CAFE_STRING, "DBF_STRING" ));
mapDataType.insert(std::make_pair((int) CAFE_SHORT, "DBF_SHORT" ));
mapDataType.insert(std::make_pair((int) CAFE_INT, "DBF_SHORT" ));
mapDataType.insert(std::make_pair((int) CAFE_FLOAT, "DBF_FLOAT" ));
mapDataType.insert(std::make_pair((int) CAFE_ENUM, "DBF_ENUM" ));
mapDataType.insert(std::make_pair((int) CAFE_CHAR, "DBF_CHAR" ));
mapDataType.insert(std::make_pair((int) CAFE_LONG, "DBF_LONG" ));
mapDataType.insert(std::make_pair((int) CAFE_DOUBLE, "DBF_DOUBLE" ));
mapDataType.insert(std::make_pair((int) CAFE_NO_ACCESS, "DBF_NO_ACCESS" ));
mapDataType.insert(std::make_pair((int) CAFE_INVALID_DATATYPE, "CAFE_INVALID_DATATYPE"));
mapDataType.insert(std::make_pair((int) CAFE_NOT_REQUESTED, "CAFE_NOT_REQUESTED"));
mapDataType.insert(std::make_pair((int) CAFE_NOT_SHOWN, "CAFE_NOT_SHOWN (IN STOP MONITOR)"));
};
CAFEDataTypeCode()
{
mapDataType.insert(std::make_pair((int) CAFE_TYPENOTCONN, "CAFE_TYPENOTCONN" ));
mapDataType.insert(std::make_pair((int) CAFE_STRING, "DBF_STRING" ));
mapDataType.insert(std::make_pair((int) CAFE_SHORT, "DBF_SHORT" ));
mapDataType.insert(std::make_pair((int) CAFE_INT, "DBF_SHORT" ));
mapDataType.insert(std::make_pair((int) CAFE_FLOAT, "DBF_FLOAT" ));
mapDataType.insert(std::make_pair((int) CAFE_ENUM, "DBF_ENUM" ));
mapDataType.insert(std::make_pair((int) CAFE_CHAR, "DBF_CHAR" ));
mapDataType.insert(std::make_pair((int) CAFE_LONG, "DBF_LONG" ));
mapDataType.insert(std::make_pair((int) CAFE_DOUBLE, "DBF_DOUBLE" ));
mapDataType.insert(std::make_pair((int) CAFE_NO_ACCESS, "DBF_NO_ACCESS" ));
mapDataType.insert(std::make_pair((int) CAFE_INVALID_DATATYPE, "CAFE_INVALID_DATATYPE"));
mapDataType.insert(std::make_pair((int) CAFE_NOT_REQUESTED, "CAFE_NOT_REQUESTED"));
mapDataType.insert(std::make_pair((int) CAFE_NOT_SHOWN, "CAFE_NOT_SHOWN (IN STOP MONITOR)"));
};
~CAFEDataTypeCode() {};
std::string message (int i) {
pos = mapDataType.find(i);
if (pos != mapDataType.end()) return pos->second;
return "CAFE_DATATYPE_UNKNOWN";
};
std::string asString (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;
};
int asEnum (std::string message) {
for (pos=mapDataType.begin(); pos != mapDataType.end(); ++pos)
if (pos->second==message) return pos->first;
return -1;
};
~CAFEDataTypeCode() {};
void show() {print();}
std::string message (int i)
{
pos = mapDataType.find(i);
if (pos != mapDataType.end()) return pos->second;
return "CAFE_DATATYPE_UNKNOWN";
};
void print ( ) {
std::cout << "------------------" << std::endl;
std::cout << "CAFE_DATATYPE LIST" << std::endl;
std::cout << "-----------------" << std::endl;
for (pos=mapDataType.begin(); pos != mapDataType.end(); ++pos) {
std::cout << pos->first << " " << pos->second << std::endl;
std::string asString (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;
};
int asEnum (std::string message)
{
for (pos=mapDataType.begin(); pos != mapDataType.end(); ++pos)
if (pos->second==message) return pos->first;
return -1;
};
void show()
{
print();
}
std::cout << "-----------------" << std::endl;
};
void print ( )
{
std::cout << "------------------" << std::endl;
std::cout << "CAFE_DATATYPE 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;
};
};
/**
* A union of CAFE primitive datatypes
*/
union CAFE_DATATYPE_UNION {
dbr_string_t str;
dbr_short_t s;
dbr_float_t f;
dbr_enum_t us; //unsigned short us;
dbr_char_t ch; //unsigned char ch;
dbr_long_t l; //int l;
dbr_double_t d;
dbr_string_t str;
dbr_short_t s;
dbr_float_t f;
dbr_enum_t us; //unsigned short us;
dbr_char_t ch; //unsigned char ch;
dbr_long_t l; //int l;
dbr_double_t d;
};
typedef CAFE_DATATYPE_UNION * CAFE_DATATYPE_UNION_SEQ;