Within GDB such a region is defined as a single GDBShape which may contain a number of rings. All the vertices of the rings are stored in the main vertex list for the GDBShape, that is the pasVertices member of the structure. The separate rings are differentiated through the use of a specialized attribute, normally called RingStart of type GDBCountedInt. This attribute contains the index of the vertex in each ring (except the first ring which always starts at vertex zero.
Beyond the traditional definition of rings, it is also possible to use the GDB Ring API to manipulate an entity consisting of discontiguous non-closed polylines. This is the same as the traditional ring definition, but we impose no restrictions on the ring being closed, nor do we imply that they don't self intersect, or intersect each other.
The GDB Ring API is desiged to manage the ring datastructure in a convenient fashion, and in such a way that it's integrity is maintained. The Ring API is safe to use in the support code for GDB file formats as long as the GDBLayer schema is already well defined. While the Ring API is adequate for accessing non-topological whole polygon layers, the GDB Topology API should be used to extract polygons from topological datasets.
See Also: GDBGetLayer(), GDBGetShape(), GDB Topology API, GDBComputeRingArea(), GDBComputeCentroid()