LIBRARY
Syntax
LIBRARY "LibraryName"LIBRARY
Description
Libraries are routines that are stored either in the Extensions folder of the System Folder or in the folder with the compiled application. Libraries are accessed through FB's standard toolbox assignment mechanism. Libraries may be dragged into the project window and included in the compiled application.
The first syntax: LIBRARY "LibraryName" tells FB to begin using toolbox calls from Library Name. Only one library at a time is ever accessible. When the toolbox statements have been set up using TOOLBOX and TOOLBOX FN, the second syntax is used to return to the default library.
The LIBRARY command is a mechanism that establishes links to a precompiled library. It doesn't matter who created the library (Apple's libraries are most common) or what language it was written in. It's just a file full of subroutines. The creator of the library will usually provide a set of function calls that may be used after the library is opened. Each of these is made available to your FB application with a TOOLBOX or TOOLBOX FN command.
Example:
 CD Example: PPC SharedLib Example
The following example is already part of the FB headers and does not need to be entered. It is offered here as an example only.
LIBRARY "QuickTimeLib"
TOOLBOX FN EnterMovies = OSErr `0x7001,0xAAAA
TOOLBOX ExitMovies `0x7002,0xAAAA
TOOLBOX FN GetMoviesError = OSErr `0x7003,0xAAAA
LIBRARY
Checking For Available Library Commands
After executing a LIBRARY statement, you may wish to determine if a particular routine is available. The following example shows how that can be accomplished. A source code example for a library written in C is included on your CD. Our simple shared library creates a toolbox call named SharedBeepNTimes.
LIBRARY "Shared Library"
ToolBox SharedBeepNTimes(WORD) `0xA9FF
LIBRARY
DIM result,err,connID&,MainAddr&, symAddr&
DIM symClass`,symClassFill`,symCount&,msg$,i
PRINT "*** Getting connection to shared library ***"
err = FN GetSharedLibrary("Shared Library",¬
  _"pwpc",0x0005,connID&, MainAddr&, msg$)
LONG IF err
  PRINT "*** No Library entry by that name... ***"
XELSE
  err = FN CountSymbols(connID&, symCount&)
  PRINT "*** Checking for Entry. ***"
  PRINT "found";symCount&;" total."
  FOR i=0 TO symCount&-1
    symClass` = 0
    err = FN GetIndSymbol(connID&,i,msg$,¬
        symAddr&,symClass`)
    PRINT i,"Name:'";msg$;"'",
    PRINT "Addr:";HEX$(symAddr&),"class:";symClass`
  NEXT
  err = FN FindSymbol(connID&, "SharedBeepNTimes",¬
    symAddr&, symClass`)
  LONG IF err
    PRINT "*** No code entry by that name... ***"
  XELSE
    PRINT "*** Entry found, trying it... ***"
    SharedBeepNTimes(1)// CALL sharedLibrary
    PRINT "Done..."
  END IF
END IF
See Also
FBTestForLibrary; "Insure Validity of PPC Toolboxes" in Editor Manual; TOOLBOX functions; TBALIAS