コード例 #1
0
 public int SerializeField(int offset, byte[] data)
 {
     int size = Size;
     LittleEndian.PutShort(data, offset, (short)(size - 2));
     int pos = offset + 2;
     pos += Ptg.SerializePtgs(formulaTokens, data, pos);
     return size;
 }
コード例 #2
0
ファイル: TestReferencePtg.cs プロジェクト: thinhmascot/NPOI
        public void TestReadWrite_tRefN_bug45091()
        {
            RecordInputStream in1 = TestcaseRecordInputStream.CreateWithFakeSid(tRefN_data);

            Ptg[]  ptgs    = Ptg.ReadTokens(tRefN_data.Length, in1);
            byte[] outData = new byte[5];
            Ptg.SerializePtgs(ptgs, outData, 0);
            if (outData[0] == 0x24)
            {
                throw new AssertFailedException("Identified bug 45091");
            }
            Assert.IsTrue(NPOI.Util.Arrays.Equals(tRefN_data, outData));
        }
コード例 #3
0
ファイル: TestReferencePtg.cs プロジェクト: zanhaipeng/npoi
        public void TestReadWrite_tRefN_bug45091()
        {
            ILittleEndianInput in1 = TestcaseRecordInputStream.CreateLittleEndian(tRefN_data);

            Ptg[]  ptgs    = Ptg.ReadTokens(tRefN_data.Length, in1);
            byte[] outData = new byte[5];
            Ptg.SerializePtgs(ptgs, outData, 0);
            if (outData[0] == 0x24)
            {
                throw new AssertionException("Identified bug 45091");
            }
            Assert.IsTrue(Arrays.Equals(tRefN_data, outData));
        }
コード例 #4
0
        /**
         * called by the class that Is responsible for writing this sucker.
         * Subclasses should implement this so that their data Is passed back in a
         * byte array.
         *
         * @param offset to begin writing at
         * @param data byte array containing instance data
         * @return number of bytes written
         */
        public override int Serialize(int pOffset, byte[] data)
        {
            int formula1Len = GetFormulaSize(field_17_formula1);
            int formula2Len = GetFormulaSize(field_18_formula2);

            int offset     = pOffset;
            int recordsize = RecordSize;

            LittleEndian.PutShort(data, 0 + offset, sid);
            LittleEndian.PutShort(data, 2 + offset, (short)(recordsize - 4));
            LittleEndian.PutByte(data, 4 + offset, field_1_condition_type);
            LittleEndian.PutByte(data, 5 + offset, field_2_comparison_operator);
            LittleEndian.PutUShort(data, 6 + offset, formula1Len);
            LittleEndian.PutUShort(data, 8 + offset, formula2Len);
            LittleEndian.PutInt(data, 10 + offset, field_5_options);
            LittleEndian.PutShort(data, 14 + offset, field_6_not_used);

            offset += 16;

            if (ContainsFontFormattingBlock)
            {
                byte[] fontFormattingRawRecord = fontFormatting.GetRawRecord();
                Array.Copy(fontFormattingRawRecord, 0, data, offset, fontFormattingRawRecord.Length);
                offset += fontFormattingRawRecord.Length;
            }

            if (ContainsBorderFormattingBlock)
            {
                offset += borderFormatting.Serialize(offset, data);
            }

            if (ContainsPatternFormattingBlock)
            {
                offset += patternFormatting.Serialize(offset, data);
            }

            if (field_17_formula1 != null)
            {
                offset += Ptg.SerializePtgs(field_17_formula1, data, offset);
            }

            if (field_18_formula2 != null)
            {
                offset += Ptg.SerializePtgs(field_18_formula2, data, offset);
            }
            if (offset - pOffset != recordsize)
            {
                throw new InvalidOperationException("Write mismatch (" + (offset - pOffset) + "!=" + recordsize + ")");
            }
            return(recordsize);
        }
コード例 #5
0
        /**
         * Creates a {@link Formula} object from a supplied {@link Ptg} array.
         * Handles <code>null</code>s OK.
         * @param ptgs may be <code>null</code>
         * @return Never <code>null</code> (Possibly empty if the supplied <c>ptgs</c> is <code>null</code>)
         */
        public static Formula Create(Ptg[] ptgs)
        {
            if (ptgs == null || ptgs.Length < 1)
            {
                return(EMPTY);
            }
            int totalSize = Ptg.GetEncodedSize(ptgs);

            byte[] encodedData = new byte[totalSize];
            Ptg.SerializePtgs(ptgs, encodedData, 0);
            int encodedTokenLen = Ptg.GetEncodedSizeWithoutArrayData(ptgs);

            return(new Formula(encodedData, encodedTokenLen));
        }
コード例 #6
0
ファイル: TestAttrPtg.cs プロジェクト: zanhaipeng/npoi
        public void TestReSerializeAttrChoose()
        {
            byte[]             data = HexRead.ReadFromString("19, 04, 03, 00, 08, 00, 11, 00, 1A, 00, 23, 00");
            ILittleEndianInput in1  = TestcaseRecordInputStream.CreateLittleEndian(data);

            Ptg[]  ptgs  = Ptg.ReadTokens(data.Length, in1);
            byte[] data2 = new byte[data.Length];
            try
            {
                Ptg.SerializePtgs(ptgs, data2, 0);
            }
            catch (IndexOutOfRangeException)
            {
                throw new AssertionException("incorrect re-serialization of tAttrChoose");
            }
            Assert.IsTrue(Arrays.Equals(data, data2));
        }