[llvm] [GOFF] Refactor writing GOFF records (PR #93855)
James Henderson via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 6 02:37:01 PDT 2024
================
@@ -25,25 +25,87 @@ namespace llvm {
// to use yaml::IO, we use these structures which are closer to the source.
namespace GOFFYAML {
-struct FileHeader {
- uint32_t TargetEnvironment = 0;
- uint32_t TargetOperatingSystem = 0;
- uint16_t CCSID = 0;
- StringRef CharacterSetName;
- StringRef LanguageProductIdentifier;
- uint32_t ArchitectureLevel = 0;
- std::optional<uint16_t> InternalCCSID;
- std::optional<uint8_t> TargetSoftwareEnvironment;
+LLVM_YAML_STRONG_TYPEDEF(uint8_t, GOFF_AMODE)
+LLVM_YAML_STRONG_TYPEDEF(uint8_t, GOFF_ENDFLAGS)
+
+// The GOFF format uses different kinds of logical records. The format imposes
+// some rules on those records (e.g. the module header must come first, no
+// forward references to records, etc.). However, to be able to specify invalid
+// GOFF files, we treat all records the same way.
+struct RecordBase {
+ enum RecordBaseKind {
----------------
jh7370 wrote:
I think a more modern style would be to make this `enum class` and drop the `RBK_` prefix.
https://github.com/llvm/llvm-project/pull/93855
More information about the llvm-commits
mailing list