This paper describes the design of a set of multi-purpose containers that implement a buffer abstraction. These buffers feature a multi-layered approach where specialized higher level abstractions can statically select their low level implementation. The lower level implementations include bounded, unbounded, and persistent buffer types, whereas higher level abstractions provide support for various synchronization needs, streaming capabilities, and remote usage capabilities. The design and implementation incorporates some of the new Ada 2005 features including interfaces (limited, protected, and task), object prefix notation, extended returns, and new uses for anonymous access types. In addition, the design utilizes remote interface capabilities, which is the subject of an Ada 2005 AI work item for WG9, the ISO Working group responsible for maintaining the Ada language standard.
Read full abstract