org.apache.poi.hssf.record

## Class SubRecord

- java.lang.Object
- - org.apache.poi.hssf.record.SubRecord

- All Implemented Interfaces:
    Duplicatable
  Direct Known Subclasses:
    CommonObjectDataSubRecord, EmbeddedObjectRefSubRecord, EndSubRecord, FtCblsSubRecord, FtCfSubRecord, FtPioGrbitSubRecord, GroupMarkerSubRecord, LbsDataSubRecord, NoteStructureSubRecord

      public abstract class SubRecord
      extends java.lang.Object
      implements Duplicatable

  Subrecords are part of the OBJ class.

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `SubRecord()`
    `protected` | `SubRecord(SubRecord other)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract SubRecord` | `clone()` Deprecated.
    `abstract SubRecord` | `copy()`
    `static SubRecord` | `createSubRecord(LittleEndianInput in, int cmoOt)` read a sub-record from the supplied stream
    `protected abstract int` | `getDataSize()`
    `boolean` | `isTerminating()` Whether this record terminates the sub-record stream.
    `byte[]` | `serialize()`
    `abstract void` | `serialize(LittleEndianOutput out)`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SubRecord

          protected SubRecord()

    - #### SubRecord

          protected SubRecord(SubRecord other)

  - ### Method Detail

    - #### createSubRecord

          public static SubRecord createSubRecord(LittleEndianInput in,
                                                  int cmoOt)

      read a sub-record from the supplied stream
      Parameters:
        `in` - the stream to read from
        `cmoOt` - the objectType field of the containing CommonObjectDataSubRecord, we need it to propagate to next sub-records as it defines what data follows
      Returns:
        the created sub-record

    - #### getDataSize

          protected abstract int getDataSize()

      Returns:
        the size of the data for this record (which is always 4 bytes less than the total record size). Note however, that ushort encoded after the record sid is usually but not always the data size.

    - #### serialize

          public byte[] serialize()

    - #### serialize

          public abstract void serialize(LittleEndianOutput out)

    - #### isTerminating

          public boolean isTerminating()

      Whether this record terminates the sub-record stream. There are two cases when this method must be overridden and return `true` - EndSubRecord (sid = 0x00) - LbsDataSubRecord (sid = 0x12)
      Returns:
        whether this record is the last in the sub-record stream

    - #### clone

          @Deprecated
           @Removal(version="5.0.0")
          public abstract SubRecord clone()

      Deprecated.
      Overrides:
        `clone` in class `java.lang.Object`

    - #### copy

          public abstract SubRecord copy()

      Specified by:
        `copy` in interface `Duplicatable`
      Returns:
        a deep copy of the implementing class / instance

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.