@@ -30,6 +30,16 @@ void ScalarEnumerationTraits<GOFFYAML::GOFF_AMODE>::enumeration(
3030 IO.enumFallback <Hex8>(Value);
3131}
3232
33+ void ScalarEnumerationTraits<GOFFYAML::GOFF_TXTRECORDSTYLE>::enumeration(
34+ IO &IO, GOFFYAML::GOFF_TXTRECORDSTYLE &Value) {
35+ #define ECase (X ) IO.enumCase(Value, #X, GOFF::TXT_##X)
36+ ECase (TS_Byte);
37+ ECase (TS_Structured);
38+ ECase (TS_Unstructured);
39+ #undef ECase
40+ IO.enumFallback <Hex8>(Value);
41+ }
42+
3343void ScalarEnumerationTraits<GOFFYAML::GOFF_ENDFLAGS>::enumeration(
3444 IO &IO, GOFFYAML::GOFF_ENDFLAGS &Value) {
3545#define ECase (X ) IO.enumCase(Value, #X, unsigned (GOFF::END_##X) << 6 )
@@ -48,6 +58,16 @@ void MappingTraits<GOFFYAML::ModuleHeader>::mapping(
4858 IO.mapOptional (" Properties" , ModHdr.Properties );
4959}
5060
61+ void MappingTraits<GOFFYAML::Text>::mapping(IO &IO, GOFFYAML::Text &Txt) {
62+ IO.mapOptional (" TextStyle" , Txt.Style , GOFF::TXT_TS_Byte);
63+ IO.mapOptional (" ESDID" , Txt.ESDID , 0 );
64+ IO.mapOptional (" Offset" , Txt.Offset , 0 );
65+ IO.mapOptional (" TrueLength" , Txt.TrueLength , 0 );
66+ IO.mapOptional (" TextEncoding" , Txt.Encoding , 0 );
67+ IO.mapOptional (" DataLength" , Txt.DataLength , 0 );
68+ IO.mapOptional (" Data" , Txt.Data );
69+ }
70+
5171void MappingTraits<GOFFYAML::EndOfModule>::mapping(IO &IO,
5272 GOFFYAML::EndOfModule &End) {
5373 IO.mapOptional (" Flags" , End.Flags , 0 );
@@ -65,12 +85,15 @@ void CustomMappingTraits<GOFFYAML::RecordPtr>::inputOne(
6585 GOFFYAML::ModuleHeader ModHdr;
6686 IO.mapRequired (" ModuleHeader" , ModHdr);
6787 Elem = std::make_unique<GOFFYAML::ModuleHeader>(std::move (ModHdr));
88+ } else if (Key == " Text" ) {
89+ GOFFYAML::Text Txt;
90+ IO.mapRequired (" Text" , Txt);
91+ Elem = std::make_unique<GOFFYAML::Text>(std::move (Txt));
6892 } else if (Key == " End" ) {
6993 GOFFYAML::EndOfModule End;
7094 IO.mapRequired (" End" , End);
7195 Elem = std::make_unique<GOFFYAML::EndOfModule>(std::move (End));
72- } else if (Key == " RelocationDirectory" || Key == " Symbol" || Key == " Text" ||
73- Key == " Length" )
96+ } else if (Key == " RelocationDirectory" || Key == " Symbol" || Key == " Length" )
7497 IO.setError (Twine (" not yet implemented " ).concat (Key));
7598 else
7699 IO.setError (Twine (" unknown record type name " ).concat (Key));
@@ -83,12 +106,14 @@ void CustomMappingTraits<GOFFYAML::RecordPtr>::output(
83106 IO.mapRequired (" ModuleHeader" ,
84107 *static_cast <GOFFYAML::ModuleHeader *>(Elem.get ()));
85108 break ;
109+ case GOFFYAML::RecordBase::Kind::Text:
110+ IO.mapRequired (" Text" , *static_cast <GOFFYAML::Text *>(Elem.get ()));
111+ break ;
86112 case GOFFYAML::RecordBase::Kind::EndOfModule:
87113 IO.mapRequired (" End" , *static_cast <GOFFYAML::EndOfModule *>(Elem.get ()));
88114 break ;
89115 case GOFFYAML::RecordBase::Kind::RelocationDirectory:
90116 case GOFFYAML::RecordBase::Kind::Symbol:
91- case GOFFYAML::RecordBase::Kind::Text:
92117 case GOFFYAML::RecordBase::Kind::DeferredLength:
93118 llvm_unreachable (" not yet implemented" );
94119 }
0 commit comments