@chapter Protocols

@section Hierarchy of Protocols

@table @code

@item PObject
@findex PObject
The protocol implemented by all the other protocols.
This protocol defines the methods for allocation, initialization, 
deallocation and releasing object.

@table @code

@item PAllocator
This protocol operates the dynamic memory object.
If the memory object containes two or more element,
it is called "SetMemory" against "SingleMemory".
If you require the dynamic allocated memory,
use this protocol or sub protocols inherit this one.
@table @code

@item PGrowableAllocator
This protocol concatenate the memory object to the current one.
The size of single memory object will be increase, never decrease.

@item PSetAllocator
Operates the set of memory objects. The new object can be added
to the set. And any objects can be removed from the set.
@end table
@end table

@table @code

@item PIndent
The usage of this protocol is very limited.
The indented text has some spaces at the start of the line.
This protocol is used to operate the spaces.
@end table

@table @code

@item POptParser
This protocol define the interface for the command line option parser.
@end table

@table @code
@item PWidget
This protocol defines the interface of the GUI widget.
@end table

@end table

