class ui.BufferPropertySet

class BufferPropertySet {
    // enums

    enum Defaults;
    bitflag enum PropertyId;

    // fields

    ui.IntProperty* m_readParallelismProp;
    ui.IntProperty* m_readBlockSizeProp;
    ui.IntProperty* m_readBufferSizeProp;
    ui.IntProperty* m_writeBufferSizeProp;
    ui.BoolProperty* m_keepReadBlockSizeProp;
    ui.BoolProperty* m_keepWriteBlockSizeProp;
    ui.BoolProperty* m_notifyReadBufferFullProp;
    size_t m_defaultReadParallelism = Defaults.ReadParallelism;
    size_t m_defaultReadBlockSize = Defaults.ReadBlockSize;
    size_t m_defaultReadBufferSize = Defaults.ReadBufferSize;
    size_t m_defaultWriteBufferSize = Defaults.WriteBufferSize;

    // methods

    void createProperties(
        ui.PropertyGrid* propertyGrid,
        ui.GroupProperty* group = null,
        ui.Property* insertBefore = null,
        ui.BufferPropertySet.PropertyId mask = PropertyId.All
    );

    ui.GroupProperty* createPropertiesGrouped(
        ui.PropertyGrid* propertyGrid,
        ui.GroupProperty* group = null,
        ui.Property* insertBefore = null,
        ui.BufferPropertySet.PropertyId mask = PropertyId.All
    );

    void load(doc.Storage* storage);
    void save(doc.Storage* storage);
    void restoreDefaults();
};