{{lastupdated_at}} by {{lastupdated_by}} {{>toc}} h1. GBase @GBase@ is the interface class for all classes in GammaLib. The class in an abstract base class which defines the methods that all GammaLib classes are required to implement. Below the interface definition:
class GBase {
public:
    virtual ~GBase(void) {}
    virtual void        clear(void) = 0;
    virtual GBase*      clone(void) const = 0;
    virtual std::string print(void) const = 0;
};
A number of classes in GammaLib will not be derived from @GBase@. These are for example registry classes, which will be derived from [[GRegistry]]. Below a list of classes that will not be derived from @GBase@ (with the reason for not basing the class on @GBase@ in parentheses): * @GException@ (special) * @GLog@ (special) * @GFunction@ (reduce implementation load) * @GIntegrand@ (reduce implementation load) * @GOptimizerFunction@ (reduce implementation load) * @GRegistry@ (interface class) * @GSparseNumeric@ (internal) * @GSparseSymbolic@ (internal) * @GTestSuite@ (reduce implementation load)