Initial commit
This commit is contained in:
115
include/deviceCollection.h
Normal file
115
include/deviceCollection.h
Normal file
@@ -0,0 +1,115 @@
|
||||
///
|
||||
/// \file deviceCollection.h
|
||||
/// \author Jan Chrin, PSI
|
||||
/// \date Release: February 2015
|
||||
/// \version CAFE 1.0.0
|
||||
///
|
||||
|
||||
#ifndef DEVICECOLLECTION_H
|
||||
#define DEVICECOLLECTION_H
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <cstring>
|
||||
#include <helper.h>
|
||||
|
||||
class collectionMember {
|
||||
public:
|
||||
collectionMember():deviceName(""),devicePosition(0){};
|
||||
virtual ~collectionMember(){};
|
||||
std::string deviceName;
|
||||
float devicePosition;
|
||||
};
|
||||
|
||||
class deviceCollection {
|
||||
friend class Connect;
|
||||
friend class CAFE;
|
||||
//if HAVE_LIBQTXML
|
||||
friend class loadCollectionXMLParser;
|
||||
//endif
|
||||
private:
|
||||
std::string name;
|
||||
std::string description;
|
||||
std::vector<collectionMember> cMembers;
|
||||
std::vector<std::string> attributes;
|
||||
|
||||
Helper helper;
|
||||
public:
|
||||
deviceCollection():description("collection of devices"){};
|
||||
virtual ~deviceCollection(){};
|
||||
|
||||
std::string getName() const {return name;};
|
||||
std::string getDescription() const {return description;};
|
||||
std::vector<collectionMember> getCMembers() const {return cMembers;};
|
||||
|
||||
std::vector<std::string> getAttributes() const {return attributes;};
|
||||
std::vector<float> getPositions() {
|
||||
std::vector<float> posV; posV.clear(); posV.reserve(cMembers.size());
|
||||
for (size_t i=0; i<cMembers.size(); ++i) {
|
||||
posV.push_back(cMembers[i].devicePosition);
|
||||
};
|
||||
return posV;
|
||||
};
|
||||
float getPosition(const char * c) {
|
||||
char _c[PVNAME_SIZE];
|
||||
helper.removeLeadingAndTrailingSpaces(c, _c);
|
||||
for (size_t i=0; i<cMembers.size(); ++i) {
|
||||
if(strcmp(cMembers[i].deviceName.c_str(),_c)==0) {
|
||||
return cMembers[i].devicePosition;
|
||||
}
|
||||
}
|
||||
std::cout << "INPUT: " << _c << " NOT FOUND IN COLLECTION: " << name << std::endl;
|
||||
std::cout << "HENCE RETURNING -1 FOR POSITION " << std::endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
std::vector<std::string> getMembers() {
|
||||
std::vector<std::string> memberV; memberV.clear(); memberV.reserve(cMembers.size());
|
||||
for (size_t i=0; i<cMembers.size(); ++i) {
|
||||
memberV.push_back(cMembers[i].deviceName);
|
||||
};
|
||||
return memberV;
|
||||
};
|
||||
|
||||
unsigned int getNCollectionMembers() const {return cMembers.size();};
|
||||
unsigned int getNAttribuites() const {return attributes.size();};
|
||||
};
|
||||
|
||||
|
||||
class collectionInGroup {
|
||||
//friend class loadGroupXMLParser;
|
||||
public:
|
||||
collectionInGroup(){};
|
||||
virtual ~collectionInGroup(){};
|
||||
std::string id;
|
||||
std::string attrib;
|
||||
};
|
||||
|
||||
class deviceGroup {
|
||||
//if HAVE_LIBQTXML
|
||||
friend class loadGroupXMLParser;
|
||||
//endif
|
||||
private:
|
||||
std::string id;
|
||||
std::string description;
|
||||
|
||||
std::vector<collectionMember> members;
|
||||
std::vector<std::string> xmlMembers;
|
||||
std::vector<collectionInGroup> collections;
|
||||
public:
|
||||
deviceGroup(){};
|
||||
virtual ~deviceGroup(){};
|
||||
|
||||
std::string getName() const {return id;};
|
||||
std::string getID() const {return id;};
|
||||
|
||||
std::string getDescription() const {return description;};
|
||||
std::vector<collectionMember> getCMembers() const {return members;};
|
||||
std::vector<collectionInGroup> getCollections() const {return collections;};
|
||||
std::vector<std::string>getXMLMembers() const {return xmlMembers;};
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif // DEVICECOLLECTION_H
|
||||
Reference in New Issue
Block a user