1#ifndef __JLANG__JTEMPLATE__
2#define __JLANG__JTEMPLATE__
20namespace JPP {
using namespace JLANG; }
39 template<
class JType_t>
68 inline operator const JType_t&()
const
79 inline operator JType_t&()
112 template<
class T,
bool use_polymorphism = false>
124 template<
class T,
bool use_polymorphism = false>
139 return c_set(value, std::true_type());
149 template<
bool use_polymorphism,
class T>
165 return in >>
object.object;
178 return out <<
object.object;
188 const JType_t&
c_get(std::true_type option)
const
200 JType_t&
c_get(std::true_type option)
229 template<
class JHead_t,
class JTail_t>
254 const JTail_t& tail) :
265 template<
class T,
bool use_polymorphism = false>
277 template<
class T,
bool use_polymorphism = false>
303 template<
bool use_polymorphism,
class T>
333 return out << static_cast<const JTemplate<JHead_t>&>(
object) <<
' '
344 template<
class T,
bool use_polymorphism>
345 const T&
c_get(std::true_type option)
const
357 template<
class T,
bool use_polymorphism>
358 const T&
c_get(std::false_type option)
const
370 template<
class T,
bool use_polymorphism>
383 template<
class T,
bool use_polymorphism>
397 template<
bool use_polymorphism,
class T>
413 template<
bool use_polymorphism,
class T>
426 template<
class JHead_t>
Template class test for availability of a suitable constructor JType_t(const JArgument_t).
Auxiliary classes and methods for language specific functionality.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Template class test for polymorphism.
Auxiliary class for managing multiple objects.
friend std::istream & operator>>(std::istream &in, JTemplate< JTypeList< JHead_t, JTail_t > > &object)
Read object from input.
template_type & c_set(const T &value, std::false_type option)
Set value.
T & get()
Get reference to object.
const T & c_get(std::false_type option) const
Get reference to object.
const T & c_get(std::true_type option) const
Get reference to object.
T & c_get(std::false_type option)
Get reference to object.
template_type & c_set(const T &value, std::true_type option)
Set value.
JTemplate()
Default constructor.
JTemplate< JTypeList< JHead_t, JTail_t > > template_type
JTemplate(const JHead_t &head, const JTail_t &tail)
Constructor.
template_type & set(const T &value)
Set value.
T & c_get(std::true_type option)
Get reference to object.
const T & get() const
Get reference to object.
template_type & set(const T &value)
Set value.
friend std::ostream & operator<<(std::ostream &out, const JTemplate< JTypeList< JHead_t, JTail_t > > &object)
Write object to output.
JTemplate()
Default constructor.
JTemplate(const JHead_t &value)
Constructor.
Auxiliary class for managing multiple objects.
template_type & set(const T &value)
Set value.
T & get()
Get reference to object.
JTemplate(const JType_t &value)
Constructor.
template_type & set(const JType_t &value)
Set value.
JTemplate< JType_t > template_type
JTemplate()
Default constructor.
template_type & c_set(const T &value, std::true_type option)
Set value.
const T & get() const
Get reference to object.
const JType_t & c_get(std::true_type option) const
Get reference to object.
JType_t * operator->()
Smart pointer operator.
friend std::istream & operator>>(std::istream &in, JTemplate< JType_t > &object)
Read object from input.
const JType_t * operator->() const
Smart pointer operator.
JType_t & c_get(std::true_type option)
Get reference to object.
friend std::ostream & operator<<(std::ostream &out, const JTemplate< JType_t > &object)
Write object to output.