Lines Matching refs:tag

20 // used as tag and the set of union member types a specified as template
101 template <uint64_t tag, typename Member>
103 static constexpr uint64_t kTag = tag;
128 // to |tag| via recursive expansion of the |Member| parameter list.
129 template <typename TagType, TagType tag, typename... Member>
133 TagType tag,
138 tag,
141 using Type = typename MemberForTag<TagType, tag, Tail...>::Type;
144 template <typename TagType, TagType tag, typename MemberType, typename... Tail>
146 tag,
147 TaggedUnionMember<static_cast<uint64_t>(tag), MemberType>,
149 using Type = TaggedUnionMember<tag, MemberType>;
163 template <TagType tag>
165 using Type = typename detail::MemberForTag<TagType, tag, Member...>::Type;
195 // Returns the tag value corresponding to the active member.
198 // Get a pointer to the member corresponding to |tag|. Returns nullptr if
199 // |tag| doesn't correspond to the active member.
200 template <TagType tag>
201 const typename MemberLookup<tag>::Type::Type* get() const {
202 return which_ == tag ? GetUnchecked<tag>() : nullptr;
205 // Get a pointer to the member corresponding to |tag|. Returns nullptr if
206 // |tag| doesn't correspond to the active member.
207 template <TagType tag>
208 typename MemberLookup<tag>::Type::Type* get() {
209 return which_ == tag ? GetUnchecked<tag>() : nullptr;
212 // Activate the member identified by |tag|. First, the currently active member
213 // will be destroyed. Then, the member corresponding to |tag| will be
216 template <TagType tag>
217 typename MemberLookup<tag>::Type::Type& Activate() {
219 Construct<tag>();
220 return *GetUnchecked<tag>();
224 template<TagType tag>
225 const typename MemberLookup<tag>::Type::Type* GetUnchecked() const {
226 return reinterpret_cast<const typename MemberLookup<tag>::Type::Type*>(
230 template<TagType tag>
231 typename MemberLookup<tag>::Type::Type* GetUnchecked() {
232 return reinterpret_cast<typename MemberLookup<tag>::Type::Type*>(storage_);
235 template <TagType tag>
237 using MemberType = typename MemberLookup<tag>::Type::Type;
239 which_ = tag;