//------------------------------------------------------------ // XDataに実体を書き込む。 public void XDataWriteEntity(XDataWriter aWriter) { aWriter.WriteCommentLine("BCObjectTypeList"); using (new XDataWriter.IndentScope(aWriter)) { // アライメントとラベル aWriter.WriteAlignLine(4); aWriter.WriteLabelLine(XDATA_LABEL); // 数 aWriter.WriteUInt32Line("count", (uint)mList.Count); // リファレンス foreach (var entry in mList) { entry.XDataWriteReference(aWriter); } } // 実体 { foreach (var entry in mList) { entry.XDataWriteEntry(aWriter); } } }
//------------------------------------------------------------ // XDataに実体を書き込む。 public void XDataWriteEntity(XDataWriter aWriter, string aOwnerPath) { aWriter.WriteCommentLine("BCFunctionList(" + aOwnerPath + ")"); using (new XDataWriter.IndentScope(aWriter)) { // アライメントとラベル aWriter.WriteAlignLine(4); aWriter.WriteLabelLine(XDATA_LABEL + ":" + aOwnerPath); // 数 aWriter.WriteUInt32Line("count", (uint)mList.Count); // リファレンス foreach (var entry in mList) { entry.XDataWriteReference(aWriter); } } // 実体 { foreach (var entry in mList) { entry.XDataWriteEntity(aWriter); } } }
//------------------------------------------------------------ // XDataに実体を書き込む。 public void XDataWriteEntity(XDataWriter aWriter) { aWriter.WriteCommentLine("BCSymbolTable"); using (new XDataWriter.IndentScope(aWriter)) { // アライメントとラベル aWriter.WriteAlignLine(8); aWriter.WriteLabelLine(XDATA_LABEL); // 要素数 aWriter.WriteUInt32Line("count", (uint)mList.Count); // 各シンボル foreach (var entry in mList) { // 値 entry.XDataWriteEntity(aWriter); } } }
//------------------------------------------------------------ // XDataに実体を書き込む。 public void XDataWriteEntity(XDataWriter aWriter) { aWriter.WriteCommentLine("BCConstantValueTable"); using (new XDataWriter.IndentScope(aWriter)) { // アライメントとラベル aWriter.WriteAlignLine(8); aWriter.WriteLabelLine(XDATA_LABEL); // テーブルのサイズ aWriter.WriteUInt32Line("size", mSize); // 各定数 uint pos = 0; foreach (var entry in mList) { // オフセット位置までpadding uint offset = entry.Offset(); if (pos < offset) { uint padSize = offset - pos; aWriter.WriteIndent(); aWriter.WriteComment("padding (" + padSize + ")"); for (uint i = 0; i < padSize; ++i) { aWriter.WriteUInt8(0xFF); } aWriter.WriteLine(); } pos = offset; // 値 entry.XDataWriteEntity(aWriter); pos += entry.Size(); } } }