00001 #ifndef PSANA_ALIAS_DDL_H
00002 #define PSANA_ALIAS_DDL_H 1
00003
00004
00005
00006 #include <vector>
00007 #include <iosfwd>
00008 #include <cstring>
00009 #include "ndarray/ndarray.h"
00010 #include "pdsdata/xtc/TypeId.hh"
00011 #include "pdsdata/xtc/Src.hh"
00012 namespace Psana {
00013 namespace Alias {
00014
00015
00016
00017
00018
00019
00020
00021 class SrcAlias {
00022 public:
00023 enum { AliasNameMax = 31 };
00024 SrcAlias(const Pds::Src& arg__src, const char* arg__aliasName);
00025 SrcAlias() {}
00026
00027 const Pds::Src& src() const { return _src; }
00028
00029 const char* aliasName() const { return _aliasName; }
00030 uint8_t operator<(const Alias::SrcAlias& other) const;
00031 uint8_t operator==(const Alias::SrcAlias& other) const;
00032 static uint32_t _sizeof() { return ((((((0+(Pds::Src::_sizeof()))+(1*(AliasNameMax)))+1)+4)-1)/4)*4; }
00033
00034 std::vector<int> aliasName_shape() const;
00035 private:
00036 Pds::Src _src;
00037 char _aliasName[AliasNameMax];
00038 char _pad1;
00039 };
00040
00041
00042
00043
00044
00045
00046
00047 class ConfigV1 {
00048 public:
00049 enum { TypeId = Pds::TypeId::Id_AliasConfig };
00050 enum { Version = 1 };
00051 virtual ~ConfigV1();
00052
00053 virtual uint32_t numSrcAlias() const = 0;
00054
00055 virtual ndarray<const Alias::SrcAlias, 1> srcAlias() const = 0;
00056 };
00057 }
00058 }
00059 #endif // PSANA_ALIAS_DDL_H