The first question the implementor of a new set of GFP methods should consider is: what methods must I implement? For several reasons, the programmer need not provide a new implementation of every GFP operation that is specific to the new FRS. One reason is that, as just mentioned, only some GFP operations are defined as generic functions for which methods can be implemented. Some GFP operations are defined as functions or macros -- in some cases because the operation can be implemented in a FRS-independent manner, and in some cases because the operation can be implemented very efficiently through calls to other GFP operations. The second reason is that for some of the GFP operations that are defined as generic functions, we supply default methods that implement that operation in terms of other GFP operations. The programmer may choose to override the default methods if their FRS provides a more efficient implementation of the operation than does the GFP default method.
This section divides the GFP operations into three classes: