8#include "Arp/Plc/Commons/Meta/DataInfo.hpp" 
    9#include "Arp/Plc/Commons/Meta/TypeSystem/DataTagDeduction.hxx" 
   10namespace Arp { 
namespace Plc { 
namespace Commons { 
namespace Meta { 
namespace TypeSystem
 
   31    DataInfo operator()(
const char* variableName, 
const T& value)
const;
 
   34    DataInfo operator()(
const char* name, std::shared_ptr<T>& valuePtr)
const;
 
   36    template<
class T, 
size_t N>
 
   37    DataInfo operator()(
const char* variableName, T(&value)[N])
const;
 
   39    template<
class T, 
size_t N1, 
size_t N2>
 
   40    DataInfo operator()(
const char* variableName, T(&value)[N1][N2])
const;
 
   42    template<
class T, 
size_t N1, 
size_t N2, 
size_t N3>
 
   43    DataInfo operator()(
const char* variableName, T(&value)[N1][N2][N3])
const;
 
   45    template<
class T, 
size_t N>
 
   46    DataInfo operator()(
const char* variableName, T(*
const (&value))[N])
const;
 
   48    template<
class T, 
size_t N1, 
size_t N2>
 
   49    DataInfo operator()(
const char* variableName, T(*
const (&value))[N1][N2])
const;
 
   51    template<
class T, 
size_t N1, 
size_t N2, 
size_t N3>
 
   52    DataInfo operator()(
const char* variableName, T(*
const (&value))[N1][N2][N3])
const;
 
   55    const char* libraryNamespace;
 
   61    : libraryNamespace(libraryNamespace)
 
   66inline DataInfo DataInfoDeduction::operator()(
const char* variableName, 
const T& value)
const 
   69    return DataInfo(getTag(variableName, value));
 
   73inline DataInfo DataInfoDeduction::operator()(
const char* name, std::shared_ptr<T>& valuePtr)
const 
   75    T* pValue = valuePtr.get();
 
   76    return this->operator()(name, pValue);
 
   80template<
class T, 
size_t N>
 
   81inline DataInfo DataInfoDeduction::operator()(
const char* variableName, T(&value)[N])
const 
   87template<
class T, 
size_t N1, 
size_t N2>
 
   88inline DataInfo DataInfoDeduction::operator()(
const char* variableName, T(&value)[N1][N2])
const 
   94template<
class T, 
size_t N1, 
size_t N2, 
size_t N3>
 
   95inline DataInfo DataInfoDeduction::operator()(
const char* variableName, T(&value)[N1][N2][N3])
const 
   97    DataTagDeduction getTag(this->libraryNamespace);
 
   98    return DataInfo(getTag(variableName, value), ArrayDimensions({ N1, N2, N3 }));
 
  101template<
class T, 
size_t N>
 
  102inline DataInfo DataInfoDeduction::operator()(
const char* variableName, T(*
const (&value))[N])
const 
  104    DataTagDeduction getTag(this->libraryNamespace);
 
  105    return DataInfo(getTag(variableName, value), ArrayDimension(N));
 
  108template<
class T, 
size_t N1, 
size_t N2>
 
  109inline DataInfo DataInfoDeduction::operator()(
const char* variableName, T(*
const (&value))[N1][N2])
const 
  111    DataTagDeduction getTag(this->libraryNamespace);
 
  112    return DataInfo(getTag(variableName, value), ArrayDimensions({ N1, N2 }));
 
  115template<
class T, 
size_t N1, 
size_t N2, 
size_t N3>
 
  116inline DataInfo DataInfoDeduction::operator()(
const char* variableName, T(*
const (&value))[N1][N2][N3])
const 
  118    DataTagDeduction getTag(this->libraryNamespace);
 
  119    return DataInfo(getTag(variableName, value), ArrayDimensions({ N1, N2, N3 }));
 
Root namespace for the PLCnext API