//------------------------------------------------------------ // XDataに変換する。 public string ToXDataXml() { // 作成 var xdata = new XDataWriter(); // BCModule xdata.WriteCommentLine("BCModule"); using (new XDataWriter.IndentScope(xdata)) { {// BCVersion xdata.WriteIndent(); xdata.WriteComment("version (" + BC_VERSION_PUBLISH_MAJOR + "." + BC_VERSION_PUBLISH_MINOR + "." + BC_VERSION_PRIVATE_MAJOR + "." + BC_VERSION_PRIVATE_MINOR + ")"); xdata.WriteUInt8(BC_VERSION_PUBLISH_MAJOR); xdata.WriteUInt8(BC_VERSION_PUBLISH_MINOR); xdata.WriteUInt8(BC_VERSION_PRIVATE_MAJOR); xdata.WriteUInt8(BC_VERSION_PRIVATE_MINOR); xdata.WriteLine(); } xdata.WriteStringLine("path", SymbolNodeUtil.FullPath(mModuleSymbolNode)); mConstantValueTable.XDataWriteReference(xdata); mSymbolLinkTable.XDataWriteReference(xdata); mObjectTypeList.XDataWriteReference(xdata); } // 各実体 mConstantValueTable.XDataWriteEntity(xdata); mSymbolLinkTable.XDataWriteEntity(xdata); mObjectTypeList.XDataWriteEntity(xdata); // 結果を返す return(xdata.ToXMLText()); }
//------------------------------------------------------------ // XDataに実体を書き込む。 public void XDataWriteEntry(XDataWriter aWriter) { // フルパスのメモ string fullPath = mTypeSymbolNode.GetUniqueFullPath(); // 実体 aWriter.WriteCommentLine("BCObjectType(" + fullPath + ")"); using (new XDataWriter.IndentScope(aWriter)) { // アライメントとラベル。 aWriter.WriteAlignLine(4); aWriter.WriteLabelLine(XDATA_LABEL + ":" + fullPath); // パス aWriter.WriteStringLine("path", fullPath); // 関数リスト mFunctionList.XDataWriteReference(aWriter, fullPath); } // その他 mFunctionList.XDataWriteEntity(aWriter, fullPath); }
//------------------------------------------------------------ // XDataに実体を書き込む。 public void XDataWriteEntity(XDataWriter aWriter) { // フルパスのメモ string fullPath = mFunctionSymbolNode.GetUniqueFullPath(); // 実体 aWriter.WriteCommentLine("BCFunction(" + fullPath + ")"); using (new XDataWriter.IndentScope(aWriter)) { // アライメントとラベル aWriter.WriteAlignLine(4); aWriter.WriteLabelLine(XDATA_LABEL + ":" + fullPath); // シンボル名 aWriter.WriteStringLine("name", mFunctionSymbolNode.GetIdentifier().String()); // 命令コード aWriter.WriteReferenceLine(XDATA_LABEL_OP_CODE + ":" + fullPath); } // その他 {// 命令コード aWriter.WriteCommentLine("BCOpCode(" + fullPath + ")-" + mBCOpCodeList.Count * 4 + "bytes"); using (new XDataWriter.IndentScope(aWriter)) { // アライメントとラベル aWriter.WriteAlignLine(4); aWriter.WriteLabelLine(XDATA_LABEL_OP_CODE + ":" + fullPath); uint index = 0; foreach (var entry in mBCOpCodeList) { entry.XDataWrite(aWriter, index); ++index; } } } }
//------------------------------------------------------------ // XDataに実体を書き込む。 public void XDataWriteEntity(XDataWriter aWriter) { aWriter.WriteStringLine(TargetNode.GetUniqueFullPath()); }