/** * Note - a value of zero for <tt>amountUsedInCurrentRecord</tt> would only ever occur just * After a {@link ContinueRecord} had been started. In the Initial {@link SSTRecord} this * value starts at 8 (for the first {@link UnicodeString} written). In general, it can be * any value between 0 and {@link #MAX_DATA_SIZE} */ private static void ConfirmSize(int expectedSize, UnicodeString s, int amountUsedInCurrentRecord) { ContinuableRecordOutput out1 = ContinuableRecordOutput.CreateForCountingOnly(); out1.WriteContinue(); for(int i=amountUsedInCurrentRecord; i>0; i--) { out1.WriteByte(0); } int size0 = out1.TotalSize; s.Serialize(out1); int size1 = out1.TotalSize; int actualSize = size1-size0; Assert.AreEqual(expectedSize, actualSize); }
public void Serialize(ContinuableRecordOutput out1) { out1.WriteInt(_numStrings); out1.WriteInt(_numUniqueStrings); for (int k = 0; k < strings.Size; k++) { if (k % ExtSSTRecord.DEFAULT_BUCKET_SIZE == 0) { int rOff = out1.TotalSize; int index = k / ExtSSTRecord.DEFAULT_BUCKET_SIZE; if (index < ExtSSTRecord.MAX_BUCKETS) { //Excel only indexes the first 128 buckets. bucketAbsoluteOffsets[index] = rOff; bucketRelativeOffsets[index] = rOff; } } UnicodeString s = GetUnicodeString(k); s.Serialize(out1); } }
private static int SerializeUnicodeString(UnicodeString us, int offset, byte[] data) { UnicodeRecordStats urs = new UnicodeRecordStats(); us.Serialize(urs, offset, data); return urs.recordSize; }