Skip to main content

The TagCompoundVariant Class Reference

Variant class that holds a unique pointer to one of the specific container types. More...

Declaration

class anonymous{tagreader.cpp}::TagCompoundVariant { ... }

Public Member Typedefs Index

usingVariantT = std::variant< std::monostate, TagClassInfoPtr, TagConceptInfoPtr, TagNamespaceInfoPtr, TagPackageInfoPtr, TagFileInfoPtr, TagGroupInfoPtr, TagPageInfoPtr, TagDirInfoPtr, TagModuleInfoPtr >

Enumerations Index

enum classType : uint8_t { ... }

Public Constructors Index

TagCompoundVariant ()
TagCompoundVariant (VariantT &&v)
TagCompoundVariant (const TagCompoundVariant &)=delete
TagCompoundVariant (TagCompoundVariant &&)=default

Public Destructor Index

~TagCompoundVariant ()=default

Public Operators Index

TagCompoundVariant &operator= (const TagCompoundVariant &)=delete
TagCompoundVariant &operator= (TagCompoundVariant &&)=default

Public Member Functions Index

template <class R>
R *get ()

Generic non-const getter. More...

template <class R>
const R *get () const

Generic const getter. More...

TagCompoundInfo *getCompoundInfo ()

Convenience method to get the shared compound info. More...

Typetype () const

Private Member Attributes Index

VariantTm_variant

Public Static Functions Index

template <class R, typename... Args>
static TagCompoundVariantmake (Args &&... args)

Generic factory method to create a variant holding a unique pointer to a given compound type. More...

convenience const and non-const getters for each variant component Index

TagClassInfo *getClassInfo ()
const TagClassInfo *getClassInfo () const
TagConceptInfo *getConceptInfo ()
const TagConceptInfo *getConceptInfo () const
TagNamespaceInfo *getNamespaceInfo ()
const TagNamespaceInfo *getNamespaceInfo () const
TagPackageInfo *getPackageInfo ()
const TagPackageInfo *getPackageInfo () const
TagFileInfo *getFileInfo ()
const TagFileInfo *getFileInfo () const
TagGroupInfo *getGroupInfo ()
const TagGroupInfo *getGroupInfo () const
TagPageInfo *getPageInfo ()
const TagPageInfo *getPageInfo () const
TagDirInfo *getDirInfo ()
const TagDirInfo *getDirInfo () const
TagModuleInfo *getModuleInfo ()
const TagModuleInfo *getModuleInfo () const

Description

Variant class that holds a unique pointer to one of the specific container types.

Definition at line 213 of file tagreader.cpp.

Public Member Typedefs

VariantT

using anonymous{tagreader.cpp}::TagCompoundVariant::VariantT = std::variant< std::monostate, TagClassInfoPtr, TagConceptInfoPtr, TagNamespaceInfoPtr, TagPackageInfoPtr, TagFileInfoPtr, TagGroupInfoPtr, TagPageInfoPtr, TagDirInfoPtr, TagModuleInfoPtr>

Definition at line 216 of file tagreader.cpp.

216 using VariantT = std::variant< std::monostate, // 0

Enumerations

Type

enum class anonymous{tagreader.cpp}::TagCompoundVariant::Type : uint8_t
strong
Enumeration values
Uninitialized (= 0)
Class (= 1)
Concept (= 2)
Namespace (= 3)
Package (= 4)
File (= 5)
Group (= 6)
Page (= 7)
Dir (= 8)
Module (= 9)

Definition at line 227 of file tagreader.cpp.

228 {
230 Class = 1,
234 File = 5,
235 Group = 6,
236 Page = 7,
237 Dir = 8,
239 };

Public Constructors

TagCompoundVariant()

anonymous{tagreader.cpp}::TagCompoundVariant::TagCompoundVariant ()
inline

Definition at line 241 of file tagreader.cpp.

Referenced by make, operator=, operator=, TagCompoundVariant and TagCompoundVariant.

TagCompoundVariant()

anonymous{tagreader.cpp}::TagCompoundVariant::TagCompoundVariant (VariantT && v)
inline explicit

Definition at line 242 of file tagreader.cpp.

242 explicit TagCompoundVariant(VariantT &&v) : m_variant(std::move(v)) {}

Reference m_variant.

TagCompoundVariant()

anonymous{tagreader.cpp}::TagCompoundVariant::TagCompoundVariant (const TagCompoundVariant &)
delete

Definition at line 243 of file tagreader.cpp.

Reference TagCompoundVariant.

TagCompoundVariant()

anonymous{tagreader.cpp}::TagCompoundVariant::TagCompoundVariant (TagCompoundVariant &&)
default

Definition at line 245 of file tagreader.cpp.

Reference TagCompoundVariant.

Public Destructor

~TagCompoundVariant()

anonymous{tagreader.cpp}::TagCompoundVariant::~TagCompoundVariant ()
default

Definition at line 247 of file tagreader.cpp.

Public Operators

operator=()

TagCompoundVariant & anonymous{tagreader.cpp}::TagCompoundVariant::operator= (const TagCompoundVariant &)
delete

Definition at line 244 of file tagreader.cpp.

Reference TagCompoundVariant.

operator=()

TagCompoundVariant & anonymous{tagreader.cpp}::TagCompoundVariant::operator= (TagCompoundVariant &&)
default

Definition at line 246 of file tagreader.cpp.

Reference TagCompoundVariant.

Public Member Functions

get()

template <class R>
R * anonymous{tagreader.cpp}::TagCompoundVariant::get ()
inline

Generic non-const getter.

Definition at line 251 of file tagreader.cpp.

251 R *get()
252 {
253 std::unique_ptr<R> *p = std::get_if<std::unique_ptr<R>>(&m_variant);
254 return p ? p->get() : nullptr;
255 }

Reference m_variant.

Referenced by getClassInfo, getClassInfo, getConceptInfo, getConceptInfo, getDirInfo, getDirInfo, getFileInfo, getFileInfo, getGroupInfo, getGroupInfo, getModuleInfo, getModuleInfo, getNamespaceInfo, getNamespaceInfo, getPackageInfo, getPackageInfo, getPageInfo and getPageInfo.

get()

template <class R>
const R * anonymous{tagreader.cpp}::TagCompoundVariant::get ()
inline

Generic const getter.

Definition at line 258 of file tagreader.cpp.

258 const R *get() const
259 {
260 const std::unique_ptr<R> *p = std::get_if<std::unique_ptr<R>>(&m_variant);
261 return p ? p->get() : nullptr;
262 }

Reference m_variant.

getCompoundInfo()

TagCompoundInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getCompoundInfo ()
inline

Convenience method to get the shared compound info.

Definition at line 295 of file tagreader.cpp.

296 {
297 switch(type())
298 {
299 case Type::Uninitialized: return nullptr;
300 case Type::Class: return getClassInfo();
301 case Type::Concept: return getConceptInfo();
302 case Type::Namespace: return getNamespaceInfo();
303 case Type::Package: return getPackageInfo();
304 case Type::File: return getFileInfo();
305 case Type::Group: return getGroupInfo();
306 case Type::Page: return getPageInfo();
307 case Type::Dir: return getDirInfo();
308 case Type::Module: return getModuleInfo();
309 }
310 return nullptr;
311 }

References Class, Concept, Dir, File, getClassInfo, getConceptInfo, getDirInfo, getFileInfo, getGroupInfo, getModuleInfo, getNamespaceInfo, getPackageInfo, getPageInfo, Group, Module, Namespace, Package, Page, type and Uninitialized.

type()

Type anonymous{tagreader.cpp}::TagCompoundVariant::type ()
inline

Definition at line 312 of file tagreader.cpp.

312 Type type() const
313 {
314 return static_cast<Type>(m_variant.index());
315 }

Reference m_variant.

Referenced by getCompoundInfo.

Private Member Attributes

m_variant

VariantT anonymous{tagreader.cpp}::TagCompoundVariant::m_variant

Definition at line 318 of file tagreader.cpp.

Referenced by get, get, TagCompoundVariant and type.

Public Static Functions

make()

template <class R, typename... Args>
TagCompoundVariant anonymous{tagreader.cpp}::TagCompoundVariant::make (Args &&... args)
inline static

Generic factory method to create a variant holding a unique pointer to a given compound type.

Definition at line 266 of file tagreader.cpp.

266 static TagCompoundVariant make(Args&&... args)
267 {
268 return TagCompoundVariant(VariantT(std::make_unique<R>(std::forward<Args>(args)...)));
269 }

Reference TagCompoundVariant.

convenience const and non-const getters for each variant component

getClassInfo

TagClassInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getClassInfo ()
inline

Definition at line 274 of file tagreader.cpp.

Reference get.

Referenced by getCompoundInfo.

getClassInfo

const TagClassInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getClassInfo ()
inline

Definition at line 275 of file tagreader.cpp.

275 const TagClassInfo *getClassInfo() const { return get<TagClassInfo >(); }

Reference get.

getConceptInfo

TagConceptInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getConceptInfo ()
inline

Definition at line 276 of file tagreader.cpp.

Reference get.

Referenced by getCompoundInfo.

getConceptInfo

const TagConceptInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getConceptInfo ()
inline

Definition at line 277 of file tagreader.cpp.

Reference get.

getDirInfo

TagDirInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getDirInfo ()
inline

Definition at line 288 of file tagreader.cpp.

Reference get.

Referenced by getCompoundInfo.

getDirInfo

const TagDirInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getDirInfo ()
inline

Definition at line 289 of file tagreader.cpp.

289 const TagDirInfo *getDirInfo() const { return get<TagDirInfo >(); }

Reference get.

getFileInfo

TagFileInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getFileInfo ()
inline

Definition at line 282 of file tagreader.cpp.

Reference get.

Referenced by getCompoundInfo.

getFileInfo

const TagFileInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getFileInfo ()
inline

Definition at line 283 of file tagreader.cpp.

283 const TagFileInfo *getFileInfo() const { return get<TagFileInfo >(); }

Reference get.

getGroupInfo

TagGroupInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getGroupInfo ()
inline

Definition at line 284 of file tagreader.cpp.

Reference get.

Referenced by getCompoundInfo.

getGroupInfo

const TagGroupInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getGroupInfo ()
inline

Definition at line 285 of file tagreader.cpp.

285 const TagGroupInfo *getGroupInfo() const { return get<TagGroupInfo >(); }

Reference get.

getModuleInfo

TagModuleInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getModuleInfo ()
inline

Definition at line 290 of file tagreader.cpp.

Reference get.

Referenced by getCompoundInfo.

getModuleInfo

const TagModuleInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getModuleInfo ()
inline

Definition at line 291 of file tagreader.cpp.

291 const TagModuleInfo *getModuleInfo() const { return get<TagModuleInfo >(); }

Reference get.

getNamespaceInfo

TagNamespaceInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getNamespaceInfo ()
inline

Definition at line 278 of file tagreader.cpp.

Reference get.

Referenced by getCompoundInfo.

getNamespaceInfo

const TagNamespaceInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getNamespaceInfo ()
inline

Definition at line 279 of file tagreader.cpp.

Reference get.

getPackageInfo

TagPackageInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getPackageInfo ()
inline

Definition at line 280 of file tagreader.cpp.

Reference get.

Referenced by getCompoundInfo.

getPackageInfo

const TagPackageInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getPackageInfo ()
inline

Definition at line 281 of file tagreader.cpp.

Reference get.

getPageInfo

TagPageInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getPageInfo ()
inline

Definition at line 286 of file tagreader.cpp.

Reference get.

Referenced by getCompoundInfo.

getPageInfo

const TagPageInfo * anonymous{tagreader.cpp}::TagCompoundVariant::getPageInfo ()
inline

Definition at line 287 of file tagreader.cpp.

287 const TagPageInfo *getPageInfo() const { return get<TagPageInfo >(); }

Reference get.


The documentation for this class was generated from the following file:


Generated via doxygen2docusaurus by Doxygen 1.14.0.