8.8. Binary Classes and User Classes

Binary classes are classes that are built into the specific version of Gamma that you are using. User classes are those classes defined by the programmer in the process of developing an application.

To test the number of built-in classes in the version of Gamma you are using, start a fresh instance and use the apropos function interactively to find all available classes:

andrew:/home/andrew > gamma
Gamma;(TM) Advanced Programming Language
Copyright (C) Cogent Real-Time Systems Inc., 1996.  All rights 
reserved.
Version 2.4 Build 139 at Jul 6 1999 10:48:51
Gamma> apropos("*",class_p);
(Osinfo)
	  

As we can see, gamma does not have built-in binary classes. Now let us try to run phgamma:

andrew:/home/andrew > phgamma
Gamma(TM) Advanced Programming Language
Copyright (C) Cogent Real-Time Systems Inc., 1996.  All rights 
reserved.
Version 2.4 Build 139 at July 6 1999 14:21:45
Gamma> apropos("*",class_p);
(Osinfo PhArea PhBlitEvent PhBoundaryEvent PhDim PhDragEvent 
PhDrawEvent PhEvent PhEventRegion PhExtent PhImage PhKeyEvent 
PhLpoint PhPoint PhPointerEvent PhPrect PhRect PhRegion PhRgb 
PhWindowEvent PtArc PtBarGraph PtBasic PtBasicCallback PtBezier 
PtBitmap PtBkgd PtButton PtCallbackInfo PtComboBox 
PtComboBoxListCallback PtComboBoxTextCallback PtContainer 
PtDivider PtEllipse PtEventData PtFontSel PtGauge PtGenList 
PtGenTree PtGraphic PtGrid PtGroup PtHtml PtIcon PtLabel PtLine 
PtList PtListCallback PtMenu PtMenuBar PtMenuButton PtMenuLabel 
PtMessage PtMeter PtMultiText PtOnOffButton PtPane PtPixel 
PtPolygon PtRaw PtRect PtRegion PtScrollArea PtScrollbar 
PtScrollbarCallback PtSeparator PtSlider PtTerminal PtText 
PtTextCallback PtToggleButton PtTree PtTrend PtTty PtWidget 
PtWindow RtTrend)
	

There is a significant difference in supported classes between the gamma and phgamma executables. The reason is that Photon widgets are mapped into phgamma as classes. The standard Gamma executable does not have support for Photon graphics and does not have these built-in binary classes.

User classes are found in the same manner. After user classes are defined they will match the class_p predicate in the apropos function and be added to the list:

andrew:/home/andrew> gamma
Gamma(TM) Advanced Programming Language
Copyright (C) Cogent Real-Time Systems Inc., 1996.  All rights 
reserved.
Version 2.4 Build 139 at Jul 6 1999 10:48:51
Gamma> class test
{
    a;
    b;
    c;
}
(defclass test nil [][a b c])
Gamma> apropos("*",class_p);
(Osinfo test)