26#define PROTECTION_SPECIFICATIONS \
27 PROTSPEC(Public,public,public) \
28 PROTSPEC(Protected,protected,protected) \
29 PROTSPEC(Private,private,private) \
30 PROTSPEC(Package,package,protected)
33#define PROTSPEC(x,y,z) x,
40 const char *result =
"ERROR";
43#define PROTSPEC(x,y,z) case Protection::x: result = #x; break;
52 const char *result =
"error";
55#define PROTSPEC(x,y,z) case Protection::x: result = #y; break;
64 const char *result =
"error";
67#define PROTSPEC(x,y,z) case Protection::x: result = #z; break;
75#define SPECIFIER_SPECIFICATIONS \
76 SPECSPEC(Normal,non-virtual) \
77 SPECSPEC(Virtual,virtual) \
78 SPECSPEC(Pure,pure-virtual)
81#define SPECSPEC(x,y) x,
88 const char *result =
"ERROR";
91#define SPECSPEC(x,y) case Specifier::x: result = #x; break;
100 const char *result =
"error";
103#define SPECSPEC(x,y) case Specifier::x: result = #y; break;
111#define METHODTYPE_SPECIFICATIONS \
127 const char *result =
"ERROR";
130#define MTSPEC(x) case MethodTypes::x: result = #x; break;
138#define RELATESTYPE_SPECIFICATIONS \
151 const char *result =
"ERROR";
154#define RTSPEC(x) case RelatesType::x: result = #x; break;
162#define RELATIONSHIP_SPECIFICATIONS \
175 const char *result =
"ERROR";
178#define RSSPEC(x) case Relationship::x: result = #x; break;
186#define SRCLANGEXT_SPECIFICATIONS \
187 SRCLANGEXT(Unknown , 0x00000, Unknown) \
188 SRCLANGEXT(IDL , 0x00008, IDL) \
189 SRCLANGEXT(Java , 0x00010, Java) \
190 SRCLANGEXT(CSharp , 0x00020, C#) \
191 SRCLANGEXT(D , 0x00040, D) \
192 SRCLANGEXT(PHP , 0x00080, PHP) \
193 SRCLANGEXT(ObjC , 0x00100, Objective-C) \
194 SRCLANGEXT(Cpp , 0x00200, C++) \
195 SRCLANGEXT(JS , 0x00400, Javascript) \
196 SRCLANGEXT(Python , 0x00800, Python) \
197 SRCLANGEXT(Fortran , 0x01000, Fortran) \
198 SRCLANGEXT(VHDL , 0x02000, VHDL) \
199 SRCLANGEXT(XML , 0x04000, XML) \
200 SRCLANGEXT(Markdown , 0x10000, Markdown) \
201 SRCLANGEXT(SQL , 0x20000, SQL) \
202 SRCLANGEXT(Slice , 0x40000, Slice) \
203 SRCLANGEXT(Lex , 0x80000, Lex)
208#define SRCLANGEXT(x, v, z) x = v,
215 const char *result =
"ERROR";
218#define SRCLANGEXT(x,v,z) case SrcLangExt::x: result = #z; break;
247 return "@addtogroup";
264 ML_TYPE(PubMethods, Public, Invalid, Invalid, "pub-methods", "public-func" ) \
265 ML_TYPE(ProMethods, Protected, PubMethods, Invalid, "pro-methods", "protected-func" ) \
266 ML_TYPE(PacMethods, Package, Invalid, Invalid, "pac-methods", "package-func" ) \
267 ML_TYPE(PriMethods, Private, PubMethods, ProMethods, "pri-methods", "private-func" ) \
268 ML_TYPE(PubStaticMethods, Public, Invalid, Invalid, "pub-static-methods", "public-static-func" ) \
269 ML_TYPE(ProStaticMethods, Protected, PubStaticMethods, Invalid, "pro-static-methods", "protected-static-func" ) \
270 ML_TYPE(PacStaticMethods, Package, Invalid, Invalid, "pac-static-methods", "package-static-func" ) \
271 ML_TYPE(PriStaticMethods, Private, PubStaticMethods, ProStaticMethods, "pri-static-methods", "private-static-func" ) \
272 ML_TYPE(PubSlots, Public, Invalid, Invalid, "pub-slots", "public-slot" ) \
273 ML_TYPE(ProSlots, Protected, PubSlots, Invalid, "pro-slots", "protected-slot" ) \
274 ML_TYPE(PriSlots, Private, PubSlots, ProSlots, "pri-slots", "private-slot" ) \
275 ML_TYPE(PubAttribs, Public, Invalid, Invalid, "pub-attribs", "public-attrib" ) \
276 ML_TYPE(ProAttribs, Protected, PubAttribs, Invalid, "pro-attribs", "protected-attrib" ) \
277 ML_TYPE(PacAttribs, Package, Invalid, Invalid, "pac-attribs", "package-attrib" ) \
278 ML_TYPE(PriAttribs, Private, PubAttribs, ProAttribs, "pri-attribs", "private-attrib" ) \
279 ML_TYPE(PubStaticAttribs, Public, Invalid, Invalid, "pub-static-attribs", "public-static-attrib" ) \
280 ML_TYPE(ProStaticAttribs, Protected, PubStaticAttribs, Invalid, "pro-static-attribs", "protected-static-attrib" ) \
281 ML_TYPE(PacStaticAttribs, Package, Invalid, Invalid, "pac-static-attribs", "package-static-attrib" ) \
282 ML_TYPE(PriStaticAttribs, Private, PubStaticAttribs, ProStaticAttribs, "pri-static-attribs", "private-static-attrib" ) \
283 ML_TYPE(PubTypes, Public, Invalid, Invalid, "pub-types", "public-type" ) \
284 ML_TYPE(ProTypes, Protected, PubTypes, Invalid, "pro-types", "protected-type" ) \
285 ML_TYPE(PacTypes, Package, Invalid, Invalid, "pac-types", "package-type" ) \
286 ML_TYPE(PriTypes, Private, PubTypes, ProTypes, "pri-types", "private-type" ) \
287 ML_TYPE(Related, OnlyPublic, Invalid, Invalid, "related", "related" ) \
288 ML_TYPE(Signals, OnlyPublic, Invalid, Invalid, "signals", "signal" ) \
289 ML_TYPE(Friends, OnlyPublic, Invalid, Invalid, "friends", "friend" ) \
290 ML_TYPE(DcopMethods, OnlyPublic, Invalid, Invalid, "dcop-methods", "dcop-func" ) \
291 ML_TYPE(Properties, OnlyPublic, Invalid, Invalid, "properties", "property" ) \
292 ML_TYPE(Events, OnlyPublic, Invalid, Invalid, "events", "event" ) \
293 ML_TYPE(AllMembersList, OnlyPublic, Invalid, Invalid, "all-members-list", "all-members-list" ) \
294 ML_TYPE(EnumFields, OnlyPublic, Invalid, Invalid, "enum-fields", "enum-fields" ) \
295 ML_TYPE(MemberGroup, OnlyPublic, Invalid, Invalid, "member-group", "member-group" ) \
296 ML_TYPE(Interfaces, OnlyPublic, Invalid, Invalid, "interfaces", "interfaces" ) \
297 ML_TYPE(Services, OnlyPublic, Invalid, Invalid, "services", "services" ) \
298 ML_TYPE(DecDefineMembers, Declaration, Invalid, Invalid, "define-members", "define" ) \
299 ML_TYPE(DecProtoMembers, Declaration, Invalid, Invalid, "proto-members", "prototype" ) \
300 ML_TYPE(DecTypedefMembers, Declaration, Invalid, Invalid, "typedef-members", "typedef" ) \
301 ML_TYPE(DecEnumMembers, Declaration, Invalid, Invalid, "enum-members", "enum" ) \
302 ML_TYPE(DecFuncMembers, Declaration, Invalid, Invalid, "func-members", "func" ) \
303 ML_TYPE(DecVarMembers, Declaration, Invalid, Invalid, "var-members", "var" ) \
304 ML_TYPE(DecEnumValMembers, Declaration, Invalid, Invalid, "enumval-members", "" ) \
305 ML_TYPE(DecPubSlotMembers, Declaration, Invalid, Invalid, "pub-slot-members", "" ) \
306 ML_TYPE(DecProSlotMembers, Declaration, Invalid, Invalid, "pro-slot-members", "" ) \
307 ML_TYPE(DecPriSlotMembers, Declaration, Invalid, Invalid, "pri-slot-members", "" ) \
308 ML_TYPE(DecSignalMembers, Declaration, Invalid, Invalid, "signal-members", "" ) \
309 ML_TYPE(DecEventMembers, Declaration, Invalid, Invalid, "event-members", "" ) \
310 ML_TYPE(DecFriendMembers, Declaration, Invalid, Invalid, "friend-members", "" ) \
311 ML_TYPE(DecPropMembers, Declaration, Invalid, Invalid, "prop-members", "" ) \
312 ML_TYPE(DecSequenceMembers, Declaration, Invalid, Invalid, "sequence-members", "sequence" ) \
313 ML_TYPE(DecDictionaryMembers,Declaration, Invalid, Invalid, "dictionary-members", "dictionary" ) \
314 ML_TYPE(TypedefMembers, Detailed, Invalid, Invalid, "doc-typedef-members", "" ) \
315 ML_TYPE(EnumMembers, Detailed, Invalid, Invalid, "doc-enum-members", "" ) \
316 ML_TYPE(EnumValMembers, Detailed, Invalid, Invalid, "doc-enum-val-members", "" ) \
317 ML_TYPE(FunctionMembers, Detailed, Invalid, Invalid, "doc-func-members", "" ) \
318 ML_TYPE(RelatedMembers, Detailed, Invalid, Invalid, "doc-related-members", "" ) \
319 ML_TYPE(VariableMembers, Detailed, Invalid, Invalid, "doc-variable-members", "" ) \
320 ML_TYPE(PropertyMembers, Detailed, Invalid, Invalid, "doc-property-members", "" ) \
321 ML_TYPE(EventMembers, Detailed, Invalid, Invalid, "doc-event-members", "" ) \
322 ML_TYPE(Constructors, Detailed, Invalid, Invalid, "doc-constructors", "" ) \
323 ML_TYPE(InterfaceMembers, Detailed, Invalid, Invalid, "interface-members", "" ) \
324 ML_TYPE(ServiceMembers, Detailed, Invalid, Invalid, "service-members", "" ) \
325 ML_TYPE(DocDefineMembers, Documentation,Invalid, Invalid, "doc-define-members", "" ) \
326 ML_TYPE(DocProtoMembers, Documentation,Invalid, Invalid, "doc-proto-members", "" ) \
327 ML_TYPE(DocTypedefMembers, Documentation,Invalid, Invalid, "doc-typedef-members", "" ) \
328 ML_TYPE(DocEnumMembers, Documentation,Invalid, Invalid, "doc-enum-members", "" ) \
329 ML_TYPE(DocFuncMembers, Documentation,Invalid, Invalid, "doc-func-members", "" ) \
330 ML_TYPE(DocVarMembers, Documentation,Invalid, Invalid, "doc-var-members", "" ) \
331 ML_TYPE(DocEnumValMembers, Documentation,Invalid, Invalid, "doc-enum-val-members", "" ) \
332 ML_TYPE(DocPubSlotMembers, Documentation,Invalid, Invalid, "doc-pub-slot-members", "" ) \
333 ML_TYPE(DocProSlotMembers, Documentation,Invalid, Invalid, "doc-pro-slot-members", "" ) \
334 ML_TYPE(DocPriSlotMembers, Documentation,Invalid, Invalid, "doc-pri-slot-members", "" ) \
335 ML_TYPE(DocSignalMembers, Documentation,Invalid, Invalid, "doc-signal-members", "" ) \
336 ML_TYPE(DocEventMembers, Documentation,Invalid, Invalid, "doc-event-members", "" ) \
337 ML_TYPE(DocFriendMembers, Documentation,Invalid, Invalid, "doc-friend-members", "" ) \
338 ML_TYPE(DocPropMembers, Documentation,Invalid, Invalid, "doc-prop-members", "" ) \
339 ML_TYPE(DocSequenceMembers, Documentation,Invalid, Invalid, "doc-sequence-members", "" ) \
340 ML_TYPE(DocDictionaryMembers,Documentation,Invalid, Invalid, "doc-dictionary-members","" ) \
364#define ML_TYPE(x,bits,to_pub,to_prot,label,xml_str) \
373#define ML_TYPE(x,bits,to_pub,to_prot,label,xml_str) \
374 static MemberListType x() { return MemberListType(static_cast<int>(x##_)|static_cast<int>(bits)); } \
375 constexpr bool is##x() const noexcept { return (m_type&TypeMask)==x##_; }
391#define ML_TYPE(x,bits,to_pub,to_prot,label,xml_str) \
392 case x##_ : return "["+std::string(#x)+bits_to_string()+"]";
402 constexpr const char *
toLabel() const noexcept
407#define ML_TYPE(x,bits,to_pub,to_prot,label,xml_str) \
408 case x##_ : return label;
414 constexpr const char *
toXML() const noexcept
419#define ML_TYPE(x,bits,to_pub,to_prot,label,xml_str) \
420 case x##_ : return xml_str;
431#define ML_TYPE(x,bits,to_pub,to_prot,label,xml_str) \
432 case x##_ : return to_pub();
443#define ML_TYPE(x,bits,to_pub,to_prot,label,xml_str) \
444 case x##_ : return to_prot();
633#define TYPE_SPECIFIERS \
634 TSPEC0(Template) TSPEC(Generic) TSPEC(Ref) TSPEC(Value) TSPEC(Interface) \
635 TSPEC(Struct) TSPEC(Union) TSPEC(Exception) TSPEC(Protocol) TSPEC(Category) \
636 TSPEC(SealedClass) TSPEC(AbstractClass) TSPEC(Enum) TSPEC(Service) TSPEC(Singleton) \
637 TSPEC(ForwardDecl) TSPEC(Local) TSPEC(EnumStruct) TSPEC(ConstExpr) TSPEC(PrivateGettable) \
638 TSPEC(ProtectedGettable) TSPEC(PrivateSettable) TSPEC(ProtectedSettable) TSPEC(Inline) TSPEC(Explicit) \
639 TSPEC(Mutable) TSPEC(Settable) TSPEC(Gettable) TSPEC(Readable) TSPEC(Writable) \
640 TSPEC(Final) TSPEC(Abstract) TSPEC(Addable) TSPEC(Removable) TSPEC(Raisable) \
641 TSPEC(Override) TSPEC(New) TSPEC(Sealed) TSPEC(Initonly) TSPEC(Optional) \
642 TSPEC(Required) TSPEC(NonAtomic) TSPEC(Copy) TSPEC(Retain) TSPEC(Assign) \
643 TSPEC(Strong) TSPEC(Weak) TSPEC(Unretained) TSPEC(Alias) TSPEC(ConstExp) \
644 TSPEC(Default) TSPEC(Delete) TSPEC(NoExcept) TSPEC(Attribute) TSPEC(Property) \
645 TSPEC(Readonly) TSPEC(Bound) TSPEC(Constrained) TSPEC(Transient) TSPEC(MaybeVoid) \
646 TSPEC(MaybeDefault) TSPEC(MaybeAmbiguous) TSPEC(Published) TSPEC(ConstEval) TSPEC(ConstInit) \
647 TSPEC(NoDiscard) TSPEC(ThreadLocal)
657#define TSPEC(x) ,m_is##x(0)
658#define TSPEC0(x) m_is##x(0)
664 constexpr void reset() noexcept
666#define TSPEC(x) m_is##x = 0;
667#define TSPEC0(x) TSPEC(x)
675#define TSPEC(x) m_is##x = m_is##x || other.is##x();
676#define TSPEC0(x) TSPEC(x)
685#define TSPEC(x) eq = eq && (t1.m_is##x == t2.m_is##x);
686#define TSPEC0(x) TSPEC(x)
700 std::string result=
"[";
704 if (!first) result+=","; \
705 result+=#x; first=false; \
707#define TSPEC0(x) TSPEC(x)
718 constexpr TypeSpecifier &set##x(bool b) noexcept { m_is##x = b; return *this; } \
719 constexpr bool is##x() const noexcept { return m_is##x; } \
722#define TSPEC0(x) TSPEC(x)
765 ETYPE(Class, Compound|Scope) \
766 ETYPE(Namespace, Scope) \
767 ETYPE(Concept, None) \
768 ETYPE(ClassDoc, CompoundDoc|Doc) \
769 ETYPE(StructDoc, CompoundDoc|Doc) \
770 ETYPE(UnionDoc, CompoundDoc|Doc) \
771 ETYPE(ExceptionDoc, CompoundDoc|Doc) \
772 ETYPE(InterfaceDoc, CompoundDoc|Doc) \
773 ETYPE(ProtocolDoc, CompoundDoc|Doc) \
774 ETYPE(CategoryDoc, CompoundDoc|Doc) \
775 ETYPE(ServiceDoc, CompoundDoc|Doc) \
776 ETYPE(SingletonDoc, CompoundDoc|Doc) \
777 ETYPE(Source, File) \
778 ETYPE(Header, File) \
779 ETYPE(ModuleDoc, Doc) \
780 ETYPE(ConceptDoc, Doc) \
781 ETYPE(NamespaceDoc, Doc) \
782 ETYPE(EnumDoc, Doc) \
783 ETYPE(PageDoc, Doc) \
784 ETYPE(MemberDoc, Doc) \
785 ETYPE(OverloadDoc, Doc) \
786 ETYPE(Example, Doc) \
787 ETYPE(VariableDoc, Doc) \
788 ETYPE(FileDoc, Doc) \
789 ETYPE(DefineDoc, Doc) \
790 ETYPE(GroupDoc, Doc) \
791 ETYPE(MainpageDoc, Doc) \
792 ETYPE(MemberGrp, Doc) \
793 ETYPE(PackageDoc, Doc) \
795 ETYPE(Variable, None) \
796 ETYPE(Function, None) \
797 ETYPE(Typedef, None) \
798 ETYPE(Include, None) \
800 ETYPE(Define, None) \
801 ETYPE(UsingDir, None) \
802 ETYPE(UsingDecl, None) \
803 ETYPE(Package, None) \
804 ETYPE(ObjcImpl, None) \
805 ETYPE(ExportedInterface, None) \
806 ETYPE(IncludedService, None) \
807 ETYPE(ExampleLineno, Doc) \
815#define ETYPE(x,bits) \
816 static constexpr EntryType make##x() noexcept { return EntryType(static_cast<int>(x)|static_cast<int>(bits)); } \
817 constexpr bool is##x() const noexcept { return (m_type&TypeMask)==x; }
829#define ETYPE(x,bits) \
830 case x : return "["+std::string(#x)+bits_to_string()+"]";
842#define ETYPE(x,bits) \
A class representing a macro definition.
constexpr bool isCompoundDoc() const noexcept
constexpr bool isFile() const noexcept
constexpr bool isDoc() const noexcept
ENTRY_TYPES constexpr bool isCompound() const noexcept
std::string to_string() const
friend bool operator!=(const EntryType &t1, const EntryType &t2)
constexpr EntryType(int t) noexcept
constexpr TypeName type() const noexcept
friend bool operator==(const EntryType &t1, const EntryType &t2)
std::string bits_to_string() const
constexpr bool isScope() const noexcept
constexpr int docbookLevel() const noexcept
constexpr void enableHtml(int level) noexcept
constexpr int latexLevel() const noexcept
constexpr bool isXmlEnabled() const noexcept
constexpr void enableLatex(int level) noexcept
constexpr void enableDocbook(int level) noexcept
constexpr bool nothingEnabled() const noexcept
constexpr int mask() const noexcept
constexpr void enableXml(int level) noexcept
constexpr bool isDocbookEnabled() const noexcept
constexpr bool isLatexEnabled() const noexcept
constexpr int htmlLevel() const noexcept
constexpr int xmlLevel() const noexcept
constexpr bool isHtmlEnabled() const noexcept
constexpr bool isDocumentation() const noexcept
constexpr bool isOnlyPublic() const noexcept
constexpr const char * toLabel() const noexcept
constexpr int to_int() const noexcept
constexpr bool isPrivate() const noexcept
constexpr MemberListType toPublic() const noexcept
constexpr bool isInvalid() const noexcept
constexpr bool isPackage() const noexcept
constexpr const char * toXML() const noexcept
static constexpr MemberListType Invalid() noexcept
friend bool operator==(const MemberListType &t1, const MemberListType &t2)
constexpr TypeName type() const noexcept
friend bool operator!=(const MemberListType &t1, const MemberListType &t2)
constexpr bool isDeclaration() const noexcept
std::string to_string() const
constexpr MemberListType toProtected() const noexcept
constexpr bool isProtected() const noexcept
constexpr bool isDetailed() const noexcept
std::string bits_to_string() const
constexpr MemberListType(int t) noexcept
ML_TYPES constexpr bool isPublic() const noexcept
This is an alternative implementation of QCString.
std::string to_string() const
constexpr TypeSpecifier() noexcept
friend bool operator!=(const TypeSpecifier &t1, const TypeSpecifier &t2)
bool operator==(const DirIterator &it1, const DirIterator &it2)
QCString groupname
name of the group
static constexpr const char * getGroupPriName(GroupPri_t priority) noexcept
GroupPri_t
Grouping priority.
@ GROUPING_AUTO_ADD
membership in group was defined via @add[to]group
@ GROUPING_INGROUP
membership in group was defined by @ingroup
@ GROUPING_AUTO_WEAK
membership in group was defined via @weakgroup
@ GROUPING_AUTO_DEF
membership in group was defined via @defgroup
Grouping(const QCString &gn, GroupPri_t p)
GroupPri_t pri
priority of this definition
static constexpr const char * to_string_lower_class(Protection prot) noexcept
#define PROTECTION_SPECIFICATIONS
Protection level of members.
constexpr const char * codeSymbolType2Str(CodeSymbolType type) noexcept
#define SRCLANGEXT_SPECIFICATIONS
Language as given by extension.
#define RELATIONSHIP_SPECIFICATIONS
Kind of member relationship.
#define METHODTYPE_SPECIFICATIONS
Kind of method.
static constexpr const char * to_string_lower(Protection prot) noexcept
#define SPECIFIER_SPECIFICATIONS
Virtualness of a member.
static constexpr const char * to_string(Protection prot) noexcept
#define RELATESTYPE_SPECIFICATIONS
Type of member relation.