Example #1
0
        //------------------------------------------------------------
        // 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);
                }
            }
        }
Example #2
0
        //------------------------------------------------------------
        // 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);
                }
            }
        }
Example #3
0
        //------------------------------------------------------------
        // 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);
                }
            }
        }
Example #4
0
        //------------------------------------------------------------
        // 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();
                }
            }
        }