#ifndef __JDAQMODULEIDENTIFIER__ #define __JDAQMODULEIDENTIFIER__ #include "JLang/JObjectID.hh" #include "JIO/JSerialisable.hh" #include "JDAQ/JDAQHeader.hh" #include "JDAQ/JDAQRoot.hh" namespace KM3NETDAQ { namespace { using JLANG::JObjectID; using JIO::JReader; using JIO::JWriter; } /** * Module identifier. */ class JDAQModuleIdentifier { public: /** * Default constructor. */ JDAQModuleIdentifier() : id(-1) {} /** * Constructor. * * \param __id module identifier */ JDAQModuleIdentifier(const JObjectID& __id) : id(__id.getID()) {} /** * Constructor. * * \param __id module identifier */ JDAQModuleIdentifier(const int __id) : id(__id) {} /** * Get Module identifier. * * \return Module identifier */ const JDAQModuleIdentifier& getModuleIdentifier() const { return *this; } /** * Set Module identifier. * * \param module Module identifier */ void setModuleIdentifier(const JDAQModuleIdentifier& module) { *this = module; } /** * Get module identifier. * * \return module identifier */ int getModuleID() const { return id; } /** * Type conversion operator. * * \return module identifier */ operator JObjectID() const { return JObjectID(id); } /** * Read DAQ ModuleIdentifier from input. * * \param in JReader * \param module JDAQModuleIdentifier * \return JReader */ friend inline JReader& operator>>(JReader& in, JDAQModuleIdentifier& module) { in >> module.id; return in; } /** * Write DAQ ModuleIdentifier to output. * * \param out JWriter * \param module ModuleIdentifier * \return JWriter */ friend inline JWriter& operator<<(JWriter& out, const JDAQModuleIdentifier& module) { out << module.id; return out; } /** * Get size of object. * * \return number of bytes */ static int sizeOf() { return sizeof(int); } ClassDefNV(JDAQModuleIdentifier,1); protected: int id; }; /** * Equal operator. * * \param first first module identifier * \param second second module identifier * \return true if identifiers are equal; else false */ inline bool operator==(const JDAQModuleIdentifier& first, const JDAQModuleIdentifier& second) { return first.getModuleID() == second.getModuleID(); } /** * Not equal operator. * * \param first first module identifier * \param second second module identifier * \return true if identifiers are different; else false */ inline bool operator!=(const JDAQModuleIdentifier& first, const JDAQModuleIdentifier& second) { return first.getModuleID() != second.getModuleID(); } /** * Equal operator. * * \param first first module identifier * \param second second object identifier * \return true if identifiers are equal; else false */ inline bool operator==(const JDAQModuleIdentifier& first, const JObjectID& second) { return first.getModuleID() == second.getID(); } /** * Not equal operator. * * \param first first module identifier * \param second second object identifier * \return true if identifiers are different; else false */ inline bool operator!=(const JDAQModuleIdentifier& first, const JObjectID& second) { return first.getModuleID() != second.getID(); } /** * Equal operator. * * \param module module identifier * \param id identifier * \return true if identifiers are equal; else false */ inline bool operator==(const JDAQModuleIdentifier& module, const int id) { return module.getModuleID() == id; } /** * Not equal operator. * * \param module module identifier * \param id identifier * \return true if identifiers are different; else false */ inline bool operator!=(const JDAQModuleIdentifier& module, const int id) { return module.getModuleID() != id; } /** * Less than operator. * * \param first first module identifier * \param second second module identifier * \return true if first identifier less than second eidentifier; else false */ inline bool operator<(const JDAQModuleIdentifier& first, const JDAQModuleIdentifier& second) { return first.getModuleID() < second.getModuleID(); } /** * Less than operator. * * \param first first module identifier * \param second second object identifier * \return true if first identifier less than second eidentifier; else false */ inline bool operator<(const JDAQModuleIdentifier& first, const JObjectID& second) { return first.getModuleID() < second.getID(); } /** * Less than operator. * * \param module module identifier * \param id identifier * \return true if module identifier less than identifier; else false */ inline bool operator<(const JDAQModuleIdentifier& module, const int id) { return module.getModuleID() < id; } } #endif