From: shirley@fdr.uucp (Bill Shirley [CSC])
Subject: Objective-C  Classes/Libraries Available - FAQ
Followup-To: comp.lang.objective-c
Summary: A listing of Objective-C Class Libraries freely available,
	bundled with other packages, or purchasable from 3rd parties.
Supersedes: <objc-classes_721077644@fdr.jsc.nasa.edu>
Organization: nasa-jsc
Date: Sun, 13 Dec 1992 09:00:49 GMT
Expires: 26 Jan 1993 09:00:01 GMT

Archive-name: Objective-C/classes
Last-modified: 1992/08/18
Version: 1.0


			   Objective C
			A matter of Class

   A (very incomplete) listing of available Objective-C classes


Index:
  Stepstone Classes/Libraries
  GNU Distributed Classes
  Public Domain Classes
  NeXT Distributed Classes
  NeXT 3rd Party Classes


*Class* == Not a part of that kit


===========================
Stepstone Classes/Libraries
===========================

  Bundled with the compiler is ICpak 101 - Foundation Class Library
        (20 classes, more than 300 methods)
  Object                object - the runtime 'root' object'
    Array               array - an abstract class
      IdArray           id array - array of objects
      IntArray          integer array
    AsciiFiler          ASCII filer - an automatic I/O object
    Cltn                collection - an abstract class
      OrdCltn           ordered collection
      Stack             LIFO collection
      Set               Set collection - no duplicate members
        Dictionary      associations - a la symbol tables
    BalNode             balanced node - support for binary trees
      SortCltn          sorted collection
    String              string - null terminated ASCII sequence
    Point               point - 2D coordinate
    Rectangle           rectangle - 2D region
    Assoc               association - key/value pairs support for dictionaries
    IPSequence          in-place sequence - for sequencing through cltn
      Sequence          sequence - same as above but uses copy of data
    ObjGraph            object graph - graph of objects reachable
    Unknown             unknown - support for AsciiFiler

  available separately for most systems, ICpak 201 - Graphical User Interface
        (58 classes, more than 1100 methods)

  *Object*
    IntCltn
      IntOrdCltn
    PtrCltn
      PtrOrdCltn
    TransCltr
      OpaqCltr
    *Array*
      ColorArray
        ColorMap
      ShortArray
      PtrArray
    RubberLine
    EventQ
    CharString
    Quad
      RectList
      DispObject
        SolidColor
        DispText
        DispMedium
          [****] ....
        Pattern
        Cursor
      EchoBox
    Font
    Menu
      DepMenu
      AdHocMenu
    Timer
    DepObject
    SharObject

  available for several platforms, ICpak 301 - GRAPHpak

  [****]



=======================
GNU distributed classes
=======================

  [****]


=====================
Public Domain classes
=====================

    Random Class (sonata.cc.purdue.edu:/pub/next/oop/classes/Random2.0.tar.Z)
        - implements its own random number generator, supports Gaussian
          variables, die rolling, etc.

    Julian Date (sonata.cc.purdue.edu:/pub/next/oop/classes/Julian1.1.tar.Z)
	- implements Julian dates, conversions, etc.  (NeXTSTEP)

  [****]


========================
NeXT distributed Classes
========================

+ == only in NeXTSTEP Release 3 (may follow kit name for all objects in kit)

Root Class
==========
Object                    the root class


Common Classes
==============
Some classes of general utility, that don't belong to any kit.

*Object*
  Storage                 object that stores a list of items (various types)
  List                    object that stores a list of other objects
  HashTable               key-based storage object
    StreamTable           used for writing sets of data to streams
    NXStringTable         stores a set of strings accessible by key

Application Kit (AppKit)
========================
The first kit, used for implementing the framework and user interface of
(nearly) every NeXTSTEP application.  Provides an engine that handles
the event loop, connection to the Window Server, and handles many standard  
services. Includes classes for user controls, font and color management, a
text editor, a dynamic data link system (release 3), inter-application
communication, and several standard panels.

*Object*
  Responder               abstract class for objects that respond to events
    Application           an application's "engine"; handles event loop & more
    Window                manages an independent drawing area on the screen
      Panel               special subclass of Window
        Menu              manages array of command items that can be picked
          PopUpList       pop-up list of items that can be picked
        FontPanel         std Panel for selecting Fonts
        PrintPanel        std printing Panel:choose printer, resolution, etc
        PageLayout        std page layout Panel
        SavePanel         std save Panel
          OpenPanel       std open Panel
        NXColorPanel      std color-picker Panel
        NXHelpPanel +     std help Panel
        NXDataLinkPanel + std Panel for managing dynamic data links
    View                  manages a drawing area within a Window
      Control             abstract class for UI objects (buttons, etc)
        NXBrowser         hierarchical browser of items (like a filesystem)
        Matrix            manages a group of Cells (eg, a set of radio buttons)
          Form            a Matrix of FormCells (text entry areas with titles)
        Button            your basic push-button doodad
        TextField         displays text or allows the user to edit it
        Slider            slide its knob to change its value
        Scroller          used for scrolling long documents
        NXColorWell       used for representing a color selection
      Text                std object for editing text (ascii or RTF)
      Box                 used to group other Views in a box
      NXSplitView         used for a pair of Views that share screen space
      ScrollView          manages relation between a ClipView and Scrollers
      ClipView            used for View that's larger than its onscreen area
  Cell                    rubber-stamp class for drawing in a View
    NXBrowserCell         used for the items in an NXBrowser
    SelectionCell         performs some of NXBrowserCell's functionality (obs)
    ActionCell            used with Controls (or a set with a Matrix)
      FormCell            displays a title and a text-entry area in a Form
      ButtonCell          used for drawing Buttons
        MenuCell          used for drawing Menu items
      TextFieldCell       used for drawing text-entry/display areas
      SliderCell          used for drawing a slider bar
  Pasteboard              used for cut/copy/paste and much, much, more
  NXImage                 convenient image-drawer; handles much nitty detail
  NXImageRep              abstract class used with NXImage for specific images
    NXBitmapImageRep        NXImageRep for bitmaps (for example, TIFF)
    NXEPSImageRep           NXImageRep for PostScrip images
    NXCustomImageRep        NXImageRep for user-defined images
    NXCachedImageRep        NXImageRep for already-rendered images
  NXDataLink +            represents a dynamic data link in a document
  NXDataLinkManager +     manages all the data links in a document
  NXSelection +           represents the linked data in a source document
  NXCursor                std object for displaying various cursors
  Font                    object representing a PostScript font
  FontManager             manages the Fonts in an application
  NXColorPicker +         for creating a custom color picker in the color Panel
  NXColorList +           manages a list of named colors (eg, Pantone(R))
  PrintInfo               contains information about a print job
  NXSpellChecker +        used to access spell-checking services
  NXSpellServer +         allows 3rd party to provide a custom spell-checker
  Speaker                 sends inter-application messages
  Listener                receives inter-application messages
  NXJournaler             records and plays back events and sounds

Video Class +(was in AppKit for Release 2)
===========
Displays video input to a NeXTdimension board on screen.

*Object*
  NXLiveVideoView         displays video input to a NeXTdimension board

Sound Kit
=========
The Sound Kit is a set of classes for managing sound in a NeXTSTEP application.

*Object*
  Sound                   represents a single sound
  *Responder*
    *View*
      SoundView           used to display and edit sounds
      SoundMeter          used to indicate sound volume as it plays
  NXSoundStream +         abstract class; manages a stream of sound data
    NXPlayStream +          plays sound data on an NXSoundOut object
    NXRecordStream +        records sound data from an NXSoundIn object
  NXSoundDevice +         abstract class; represents a device (mic, speaker)
    NXSoundIn +             represents sound input devices (microphones)
    NXSoundOut +            represents sound output devices (speakers etc)

Music Kit # (no longer maintained by NeXT)
==========================================
A large kit for music synthesis.  <<Should be available by ftp from CCRMA>>
	(ccrma-ftp.stanford.edu:pub/???)

*Object*
  Note                    stores information about a musical event
  Envelope                control musical attributes of Notes
  Part                    ordered set of Notes than can be performed
  Score                   set of Parts that make up a musical piece
  ScorePerformer          plays each Part in a Score
  ScoreRecorder           records a Score, Part by Part and Note by Note
  Orchestra               manages a DSP to synthesize music
  Conductor               controls the timing of a group of objects
  Instrument              manages Notes in a performance
    SynthInstrument         synthesizes its Notes on the DSP
    PartRecorder            copies its notes onto a Part object
    FileWriter              writes its notes to a file on disk
    NoteFilter              modifies Notes and passes them on to other objects
  Performer               abstract class; sends a sequence of notes in time
    FilePerformer           performs music data from a file or stream
      ScorefilePerformer      performs music data from a scorefile
    PartPerformer           performs the Notes in a Part
  NoteReceiver            used by Instruments to realize Notes from Performers
  NoteSender              used by Performers to realize Notes on Instruments
  TuningSystem            represents a musical tuning system
  SynthData               represents DSP memory used in music synthesis
  Midi                    provides and ObjC interfact to the MIDI driver
  WaveTable               represents a period of sound as a series of samples
    Samples                 builds WaveTable of recorded samples
    Partials                builds WaveTable from sine wave components
  PatchTemplate           used as part of a SynthPatch
  SynthPatch              abstract class; represents a sound sythesis module
    Pluck                   synthesizes the sound of a plucked string
    Wave1                   WaveTable synthesis; 1 table
    Wave1v                  WaveTable synth; 1 table with vibrato
    Wave1i                  WaveTable synth; 1 table with freq interpolation
    Wave1vi                 WaveTable synth; 1 table with both
    DBWave1v                WaveTable synth; 1 table with vibrato
    DBWave1i                WaveTable synth; 1 table with interpolation
    DBWave2vi               WaveTable synth; 2 tables with both
    Fm1                     Freq modulation synth; simple fm
    Fm1i                    Freq mod synth; simple fm with freq interpolation
    Fm1v                    Freq mod synth; simple fm with vibrato
    Fm1vi                   Freq mod synth; simple fm with both
    Fm2cvi                  Freq mod synth; Cascade fm
    Fm2cnvi                 Freq mod synth; Cascade fm with random mod. (noise)
    Fm2pvi                  Freq mod synth; Parallel fm
    Fm2pnvi                 Freq mod synth; Parallel fm with noise
  UnitGenerator             abstract class; building blocks of DSP synthesis
    Add2UG                  Various types of UnitGenerators
    AllPass1UG              ...
    AsympUG
    ConstantUG
    DelayUG
    DswitchtUG
    DswitchUG
    InterpUG
    Mul1add2UG
    Mul2UG
    OnepoleUG
    OnezeroUG
    OscgafUG
    OscgafiUG
    UscgUG
    Out1aUG
    Out1bUG
    Out2sumUG
    ScaleUG
    Scl1add2UG
    Scl2add2UG
    SnoiseUG
    UnoiseUG

Database Kit (DBKit) +
======================
Manages connections to entity-relationship database servers.  The Database kit
includes these services: communication with client-server databases, modeling
properties (attributes and relationships) of each database, record management
and buffering, data flow between record managers and the application user
interface, and user interface objects for display and editing.

*Object*
  DBDatabase              represents a connection to a database server
  DBExpression            encapsulates a database expression as an object
  DBQualifier             represents cond. records must satisfy to be selected
  DBValue                 stores a value of an arbitrary type
  DBBinder                connects database items to ObjC objects
  DBModule                maps database model entities to application objects
  DBRecordStream          represents a sequence of fetched database records
    DBRecordList            supports random access to a seq. of records
  DBFetchGroup            manages DBRecordList data with UI presentation
  DBAssocation            associates a property with a destination object
  *Responder*
    *View*
      *Control*
        DBImageView       displays an NXImage object in a frame
      *ScrollView*
        DBTableView       spreadsheet-like view for modifying tables of data
  DBTableVector           represents a field in a DBTableView
  DBFormatter             abstract class for formatting data
    DBTextFormatter         quickly formats read-only text data
    DBEditableFormatter     formats editable text data
    DBImageFormatter        formats, scales, and aligns image data

Indexing Kit (IXKit) +
======================
The Indexing Kit is a set of programmatic tools for managing data, especially
the large amounts of data characteristic of information-intensive applications.
Much as the Application Kit provides a framework for a graphical interface,
the Indexing Kit provides a framework for data management.

*Object*
  IXStore                 relocatable storage allocator/manager
    IXStoreFile           disk-based IXStore
  IXStoreBlock            "wrapper" for a single block of storage in an IXStore
  IXStoreDirectory        allows access to objects in an IXStore by name
  IXBTree                 associative (key-based) access to data in an IXStore
  IXBTreeCursor           a pointer to an item in an IXBTree
    IXPostingCursor       cursor that assumes data is sets of postings (below)
  IXRecordManager         manages large indexed collections of data
  IXPostingSet            manages a set of postings (refs to indexed records)
  *List*
    IXPostingList         lazily retrieves objects from postings
  IXFileFinder            indexes and finds files with a general query language
  IXFileRecord            represents a file in the filesystem
  IXAttributeParser       parses text into lists of tokens
  IXAttributeReader       breaks text into tokens
    IXLanguageReader      abstract class; for tokenizing a specific language
  IXWeightingDomain       represents frequency information about a set of text
  IXAttributeQuery        processes a query against a conforming object

Mach Kit +
==========
The Mach Kit provides a number of classes for convenient use of Mach mutexes,
and a number of classes used by the Distributed Objects facility.

*Object*
  NXData                  wrapper for (void *) data
  NXLock                  object-oriented mutex lock
  NXConditionLock         as above, but waits on a condition
  NXRecursiveLock         as above, but same thread can acquire multiple times
  NXSpinLock              as above, for use with short critical sections
  NXProtocolChecker       restricts messaging access to remote objects
  NXInvalidationNotifier  notifies clients when a connection breaks
    NXPort                wrapper for a Mach port
  NXNetNameServer         provides ObjC interface to NeXT's NetNameServer

Distributed Objects Facility +
==============================
The Distributed Objects facility allows a process to send messages to objects
in the address space of a different process.  For all practical purposes, the
remote object exists in the sending process.  Nearly any message can be sent,
and many data types, including other objects can be sent and received
"across the wire."

NXProxy                   a "root" class that represents a remote object
*Object*
  NXConnection            manages a connection between remote objects

Phone Kit +
===========
The Phone Kit offers an easy way for a developer to connect an application to
a telephone line, to initiate and receive calls over the line, and to transmit
and receive data during a call.  The phone line must be attached to the user's
computer, or to a computer on the user's network, through a Hayes ISDN
Extender(R) or an equivalent device.

*Object*
  NXPhone                 represents a phone line connected to the computer
  NXPhoneCall             represents/manages a connection over a phone line
  NXPhoneChannel          represents a channel within a connection

3D Graphics Kit (3DKit) +
=========================
The 3D Kit uses RenderMan to create 3D scenes, much as the Application Kit
uses the PostScript language to draw 2D graphics.  It also provides for
animation and real-time manipulation of rendered scenes.

*Object*
  *NXImageRep*
    N3DRIBImageRep        NXImageRep for RenderMan RIB data
  *Responder*
    *Window*
      *Panel*
        N3DRenderPanel    std Panel for selecting hosts to render scene on
    *View*
      N3DCamera           renders a single 3D scene
        N3DMovieCamera    rederes a sequence of 3D scenes, providing animation
  N3DShape                abstract class representing a single 3D "object"
    N3DLight              represents a source of light in a scene
  N3DShader               handles surface shading/texturing/coloring
  N3DRotator              rotates/moves a 3D scene in various ways
  N3DContextManager       manages rendering contexts for an application

NetInfo Kit (NIKit) +
=====================
These are all standard panels for accessing NetInfo information.  Strangely,
most aren't subclasses of Panel.

*Object*
  NIDomain                represents a NetInfo domain
  NIDomainPanel           std panel for selecting a NetInfo domain
    NIOpenPanel           std panel for opening an item in a domain
      NISavePanel         std panel for saving info for a domain
  *Responder*
    *Window*
      *Panel*
        NILoginPanel      used, for example, to authorize root access to run an  
app

Interface Builder Applicaton Classes (IB Classes) +
===================================================
These classes allow developers to expand the functionality of the 
Interface Builder application, creating their own palettes of objects
that can be dragged into an interface, and inspectors to set and view
the attributes of those objects.

*Object*
  IBInspector             defines a custom Interface Builder inspector
  IBPalette               connects a loadable palette to Interface Builder

Preferences Application Classes +
=================================
These classes allow developers to add their own modules to the Preferences
application.

*Object*
  Layout                  represents a Preferences module's layout view

Workspace Manager Application Classes +
=======================================
These classes allow developers to add their own file contents inspectors to
the Workspace Manager application.

*Object*
  WMInspector             represents a Workspace contents inspector



==============================
NeXT 3rd Party Class Libraries
==============================

  [many others - NeXT now publishes an _Object Works_ Catalogue, which
	tells of available classes]

  BarCodeKit - an object library for creating bar codes in PostScript and
                TIFF formats.  (Hot Software, (617) 252-0088, info@hot.com)

  SerialPortKit - generic serial port object, modem object, specific bar
		code readers, magnetic stripe card readers and other serial
		devices. (Hot Software, (617) 252 0088, info@hot.com)

  GeoKit - objects that perform map rendering
                (Deltos Fleet Computing, (214) 540-2301)

  ChooserPalette - a selection list manager
                (Objective Technologies, (212) 227 6767)

  GraphPalette - tools for graphing data in custom apps
                (Objective Technologies, (212) 227 6767)

  MathPalette - tools for interfacing with Mathmatica
                (Objective Technologies, (212) 227 6767)

  SmartFieldPalette - supplies data input fields that restrict and format
                input, report errors, and notify the user of field content
                (Objective Technologies, (212) 227 6767)

  Serial Solutions from BenaTong - Object wrappers for the UNIX ioctls, Modem
		support and MagCard/BarCode reader support.
		(BenaTong (614) 276-7850 benatong@count0.cmhnet.org)



--------------
 This compendium is doomed to always be incomplete.  If you would like
to add something to it that was left off, you can either contact me
directly (shirley@fdr.jsc.nasa.gov, Bill Shirley) or post to the group
comp.lang.objective-c.  Contacting me directly will have better chances
of me making the change.
 Again, thanks to all those who have helped, informed, and given feedback.
-- 
 Bill Shirley
 shirley@fdr.jsc.nasa.gov
-- 
	``One lonesome body,		Bill Shirley
	  one lonesome song.		shirley@fdr.jsc.nasa.gov
	  No lonesome body,
	  no lonesome song.'' - throwing muses