Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2014 The Crashpad Authors. All rights reserved. | |
| 2 // | |
| 3 // Licensed under the Apache License, Version 2.0 (the "License"); | |
| 4 // you may not use this file except in compliance with the License. | |
| 5 // You may obtain a copy of the License at | |
| 6 // | |
| 7 // http://www.apache.org/licenses/LICENSE-2.0 | |
| 8 // | |
| 9 // Unless required by applicable law or agreed to in writing, software | |
| 10 // distributed under the License is distributed on an "AS IS" BASIS, | |
| 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 12 // See the License for the specific language governing permissions and | |
| 13 // limitations under the License. | |
| 14 | |
| 15 #ifndef CRASHPAD_UTIL_MISC_SYMBOLIC_CONSTANTS_COMMON_H_ | |
| 16 #define CRASHPAD_UTIL_MISC_SYMBOLIC_CONSTANTS_COMMON_H_ | |
| 17 | |
| 18 namespace crashpad { | |
| 19 | |
| 20 // Symbolic constant terminology: | |
|
Robert Sesek
2014/09/10 20:01:04
Can this comment be added to Doxygen somehow?
| |
| 21 // | |
| 22 // A “family” is a group of related symbolic constants. Typically, within a | |
| 23 // single family, one function will be used to transform a numeric value to a | |
| 24 // string equivalent, and another will perform the inverse operation. Families | |
| 25 // include POSIX signals and Mach exception masks. | |
| 26 // | |
| 27 // A “full name” is the normal symbolic name used for a constant. For example, | |
| 28 // in the family of POSIX signals, the strings "SIGHUP" and "SIGSEGV" are full | |
| 29 // names. | |
| 30 // | |
| 31 // A “short name” is an abbreviated form of symbolic name used for a constant. | |
| 32 // Short names vary between families, but are commonly constructed by removing a | |
| 33 // common prefix from full names. For example, in the family of POSIX signals, | |
| 34 // the prefix is SIG, and short names include "HUP" and "SEGV". | |
| 35 // | |
| 36 // A “numeric string” is a string that does not contain a full or short name, | |
| 37 // but contains a numeric value that can be interpreted as a symbolic constant. | |
| 38 // For example, in the family of POSIX signals, SIGKILL generally has value 9, | |
| 39 // so the numeric string "9" would be interpreted equivalently to "SIGKILL". | |
| 40 | |
| 41 //! \brief Options for various `*ToString` functions in `symbolic_constants_*` | |
| 42 //! files. | |
| 43 enum SymbolicConstantToStringOptionBits { | |
| 44 //! \brief Return the full name for a given constant. | |
| 45 //! | |
| 46 //! \attention API consumers should provide this value when desired, but | |
| 47 //! should provide only one of kUseFullName and ::kUseShortName. Because | |
| 48 //! kUseFullName is valueless, implementers should check for the absence | |
| 49 //! of ::kUseShortName instead. | |
| 50 kUseFullName = 0 << 0, | |
| 51 | |
| 52 //! \brief Return the short name for a given constant. | |
| 53 kUseShortName = 1 << 0, | |
| 54 | |
| 55 //! \brief If no symbolic name is known for a given constant, return an empty | |
| 56 //! string. | |
| 57 //! | |
| 58 //! \attention API consumers should provide this value when desired, but | |
| 59 //! should provide only one of kUnknownIsEmpty and ::kUnknownIsNumeric. | |
| 60 //! Because kUnknownIsEmpty is valueless, implementers should check for | |
| 61 //! the absence of ::kUnknownIsNumeric instead. | |
| 62 kUnknownIsEmpty = 0 << 1, | |
| 63 | |
| 64 //! \brief If no symbolic name is known for a given constant, return a numeric | |
| 65 //! string. | |
| 66 //! | |
| 67 //! The numeric format used will vary by family, but will be appropriate to | |
| 68 //! the family. Families whose values are typically constructed as bitfields | |
| 69 //! will generally use a hexadecimal format, and other families will generally | |
| 70 //! use a signed or unsigned decimal format. | |
| 71 kUnknownIsNumeric = 1 << 1, | |
| 72 | |
| 73 //! \brief Use `|` to combine values in a bitfield. | |
| 74 //! | |
| 75 //! For families whose values may be constructed as bitfields, allow | |
| 76 //! conversion to strings containing multiple individual components treated as | |
| 77 //! being combined by a bitwise “or” operation. An example family of constants | |
| 78 //! that behaves this way is the suite of Mach exception masks. For constants | |
| 79 //! that are not constructed as bitfields, or constants that are only | |
| 80 //! partially constructed as bitfields, this option has no effect. | |
| 81 kUseOr = 1 << 2, | |
| 82 }; | |
| 83 | |
| 84 //! \brief A bitfield containing values of #SymbolicConstantToStringOptionBits. | |
| 85 typedef unsigned int SymbolicConstantToStringOptions; | |
| 86 | |
| 87 //! \brief Options for various `StringTo*` functions in `symbolic_constants_*` | |
| 88 //! files. | |
| 89 //! | |
| 90 //! Not every `StringTo*` function will implement each of these options. See | |
| 91 //! function-specific documentation for details. | |
| 92 enum StringToSymbolicConstantOptionBits { | |
| 93 //! \brief Allow conversion from a string containing a symbolic constant by | |
| 94 //! its full name. | |
| 95 kAllowFullName = 1 << 0, | |
| 96 | |
| 97 //! \brief Allow conversion from a string containing a symbolic constant by | |
| 98 //! its short name. | |
| 99 kAllowShortName = 1 << 1, | |
| 100 | |
| 101 //! \brief Allow conversion from a numeric string. | |
| 102 kAllowNumber = 1 << 2, | |
| 103 | |
| 104 //! \brief Allow `|` to combine values in a bitfield. | |
| 105 //! | |
| 106 //! For families whose values may be constructed as bitfields, allow | |
| 107 //! conversion of strings containing multiple individual components treated as | |
| 108 //! being combined by a bitwise “or” operation. An example family of constants | |
| 109 //! that behaves this way is the suite of Mach exception masks. For constants | |
| 110 //! that are not constructed as bitfields, or constants that are only | |
| 111 //! partially constructed as bitfields, this option has no effect. | |
| 112 kAllowOr = 1 << 3, | |
| 113 }; | |
| 114 | |
| 115 //! \brief A bitfield containing values of #StringToSymbolicConstantOptionBits. | |
| 116 typedef unsigned int StringToSymbolicConstantOptions; | |
| 117 | |
| 118 } // namespace crashpad | |
| 119 | |
| 120 #endif // CRASHPAD_UTIL_MISC_SYMBOLIC_CONSTANTS_COMMON_H_ | |
| OLD | NEW |