A shape has two properties, Shape.Geometry and Shape.GeometrySize.
The shape can be saved to the stream by:
A shape can be read from the stream by:
shp := TGIS_ShapeArc.Create(nil, ptr, false, uid, myLayer);
Of course you can also save a shape type, uid, etc. in a stream and then use this data for proper shape creation.