/usr/include/glbinding/Value.inl is in libglbinding-dev 2.1.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | #pragma once
#include <ostream>
namespace
{
template <typename... Arguments>
struct ValueAdder;
template <>
struct ValueAdder<>
{
static void add(std::vector<glbinding::AbstractValue*> &)
{
}
};
template <typename Argument, typename... Arguments>
struct ValueAdder<Argument, Arguments...>
{
static void add(std::vector<glbinding::AbstractValue*> & values, Argument value, Arguments&&... rest)
{
values.push_back(glbinding::createValue<Argument>(value));
ValueAdder<Arguments...>::add(values, std::forward<Arguments>(rest)...);
}
};
template <typename... Arguments>
void addValuesTo(std::vector<glbinding::AbstractValue*> & values, Arguments&&... arguments)
{
ValueAdder<Arguments...>::add(values, std::forward<Arguments>(arguments)...);
}
} // namespace
namespace glbinding
{
template <typename T>
Value<T>::Value(const T & _value)
: value(_value)
{
}
template <typename T>
void Value<T>::printOn(std::ostream & stream) const
{
stream << value;
}
template <typename Argument>
AbstractValue * createValue(const Argument & argument)
{
return new Value<Argument>(argument);
}
template <typename... Arguments>
std::vector<AbstractValue*> createValues(Arguments&&... arguments)
{
auto values = std::vector<AbstractValue*>{};
addValuesTo(values, std::forward<Arguments>(arguments)...);
return values;
}
} // namespace glbinding
|