@@ -2,7 +2,13 @@ import semmle.code.cpp.Type
22private import semmle.code.cpp.internal.ResolveClass
33
44/**
5- * A C/C++ enum [N4140 7.2].
5+ * A C/C++ enum [N4140 7.2]. For example, the type `MyEnum` in:
6+ * ```
7+ * enum MyEnum {
8+ * MyEnumConstant
9+ * };
10+ * ```
11+ * This includes C++ scoped enums, see the `ScopedEnum` QL class.
612 */
713class Enum extends UserType , IntegralOrEnumType {
814 /** Gets an enumerator of this enumeration. */
@@ -46,7 +52,15 @@ class Enum extends UserType, IntegralOrEnumType {
4652}
4753
4854/**
49- * A C++ enum that is directly enclosed by a function.
55+ * A C/C++ enum that is directly enclosed by a function. For example, the type
56+ * `MyLocalEnum` in:
57+ * ```
58+ * void myFunction() {
59+ * enum MyLocalEnum {
60+ * MyLocalEnumConstant
61+ * };
62+ * }
63+ * ```
5064 */
5165class LocalEnum extends Enum {
5266 LocalEnum ( ) {
@@ -57,7 +71,16 @@ class LocalEnum extends Enum {
5771}
5872
5973/**
60- * A C++ enum that is declared within a class.
74+ * A C/C++ enum that is declared within a class/struct. For example, the type
75+ * `MyNestedEnum` in:
76+ * ```
77+ * class MyClass {
78+ * public:
79+ * enum MyNestedEnum {
80+ * MyNestedEnumConstant
81+ * };
82+ * };
83+ * ```
6184 */
6285class NestedEnum extends Enum {
6386
@@ -79,9 +102,14 @@ class NestedEnum extends Enum {
79102}
80103
81104/**
82- * A C++ scoped enum.
83- *
84- * For example, `enum class Color { red, blue }`.
105+ * A C++ scoped enum, that is, an enum whose constants must be qualified with
106+ * the name of the enum. For example, the type `Color` in:
107+ * ```
108+ * enum class Color {
109+ * red,
110+ * blue
111+ * }
112+ * ```
85113 */
86114class ScopedEnum extends Enum {
87115 ScopedEnum ( ) {
@@ -92,11 +120,16 @@ class ScopedEnum extends Enum {
92120}
93121
94122/**
95- * A C/C++ enumerator [N4140 7.2].
96- *
97- * For example: `green` in `enum { red, green, blue }`.
123+ * A C/C++ enumerator [N4140 7.2], also known as an enumeration constant.
98124 *
99- * Enumerators are also knowns as enumeration constants.
125+ * For example the enumeration constant `green` in:
126+ * ```
127+ * enum {
128+ * red,
129+ * green,
130+ * blue
131+ * }
132+ * ```
100133 */
101134class EnumConstant extends Declaration , @enumconstant {
102135 /**
0 commit comments