19#ifndef CORE_TRUST_TAGGED_INTEGER_H_
20#define CORE_TRUST_TAGGED_INTEGER_H_
34template<
typename Tag,
typename Integer>
38 static_assert(std::is_integral<Integer>::value,
"Integer has to be an integral type");
60template<
typename Tag,
typename Integer>
67template<
typename Tag,
typename Integer>
74template<
typename Tag,
typename Integer>
81template<
typename Tag,
typename Integer>
84 return out << ti.
value;
Contains functionality for implementing Ubuntu's trust model.
CORE_TRUST_DLL_PUBLIC std::ostream & operator<<(std::ostream &out, const Request::Answer &a)
operator << pretty prints answers to the provided output stream.
bool operator<(const TaggedInteger< Tag, Integer > &lhs, const TaggedInteger< Tag, Integer > &rhs)
Returns true iff the left-hand-side integer instance is smaller than the right-hand-side.
TaggedInteger< tag::Feature, std::uint64_t > Feature
Our internal service-feature type.
TaggedInteger< tag::Uid, uid_t > Uid
Our internal user id type.
TaggedInteger< tag::Pid, pid_t > Pid
Our internal process id type.
CORE_TRUST_DLL_PUBLIC bool operator==(const Agent::RequestParameters &lhs, const Agent::RequestParameters &rhs)
Returns true iff lhs and rhs are equal.
bool operator!=(const TaggedInteger< Tag, Integer > &lhs, const TaggedInteger< Tag, Integer > &rhs)
Returns true iff both tagged integer instances are not equal.
TaggedInteger< tag::Gid, gid_t > Gid
Our internal group id type.
Helper structure for tagging integer types with certain semantics.
Tag TagType
We bail out if the Integral type is not an integral one.
Integer IntegerType
Stores the Integer type.
TaggedInteger(Integer value)
Construct an instance from an existing integer type.
TaggedInteger()
Construct an instance with a default value.