Preface

File Layout

The library code may be

1) linked as source files together with your application (see Projects)or

2) it may be loaded dynamically at run-time as complete stdlib project or

3) just parts may be loaded. (std-require 'stdstr) for example. (seperate modules)

Acad Independent Filename Modulename
- Lists STDLIST.LSP STDLIST
- Strings STDSTR.LSP STDSTR
- Files STDFILE.LSP STDFILE
- External Loader STDINIT2.LSP none
- FILEEXT FILEEXT.FAS FILEEXT
- BINIO BINIO.FAS BINIO
- REGISTRY REGISTRY.LSP REGISTRY
- INIFILE INIFILE.LSP INIFILE
- Logic and Math STDMATH.LSP STDMATH
- Random Numbers RANDOM.LSP RANDOM
- Primes PRIMES.LSP PRIMES
- Combinatorics COMBINATIONS.LSP COMBINATIONS
- Points and Geometry STDPOINT.LSP STDPOINT
- Lisp Specific STDLISP.LSP STDLISP
- Debugging Testing STDDEBUG.LSP STDDEBUG
- Standalone Workarounds STANDALONE.LSP STANDALONE
Acad Specific Filename Modulename
- Initialization STDINIT.LSP STDINIT
- Modules STDMODUL.LSP none
- User Input STDINPUT.LSP STDINPUT
- Tables STDTBL.LSP STDTBL
- Entities STDENT.LSP STDENT
- Entmake ENTMAKE.LSP ENTMAKE
- Miscellaneous STDMISC.LSP STDMISC
- Timelib STDTIME.LSP STDTIME
- Error Handling STDERROR.LSP STDERROR
- Localization STDLOCAL.LSP STDLOCAL
- Multiple Files Dialog GETFILEM.LSP GETFILEM
- Various external helpers stdlib<xx>.arx, ... STDLIB-ADS, ...

STDINIT must be loaded as first.

See STDLIB.LSP for the complete layout and loading scheme. This is usually the last file.

See also Modules.

Main modules are:

STDINIT - Initialization, must be the first

STDSTR - Strings

STDLIST - Lists, Trees, Sets

STDLISP - Symbols, Functions, Types, Print

STDMATH - Logic, Math, Trigonometry, ...

STDPOINT - Points, Geometry

STDFILE - Filenames, Directories, Attributes, OS dep. and indep. file stuff

Helpers for these are:

STDINIT2 - dynamic code for initialization of external modules, called by STDFILE

STDMODUL - called by STDINIT, defines the module code

Acad dependent modules are:

STDTIME - Date Conversion, Arithmetic, Measuring

STDINPUT - User Input Simplification

STDENT - Acad Entities

STDTBL - Acad Tables and associated Properties (layer, blocks,...)

STDMISC - Miscellaneous Acad specific code (blockupdate, commands,...)

DICT - Dictionaries

Additional modules (not loaded per default) are:

STDERROR - Error handling (set and restore)

STDLOCAL - Localization issues (foreign languages, codepages)

STDDEBUG - Debugging and Testing

ENTMAKE - Entmaking

GETFILEM - Get Multiple Files Dialog

COMBINATIONS - Combinatorial functions

RANDOM - More random number generators and states

PRIMES - Prime numbers

STANDALONE - Workarounds to test without ACAD (currently only with vill2)

Optional External Modules (not LISP) available are

FILEEXT - required for STDFILE and some extensions for other modules

INIFILE - read and write Windows style INI files

REGISTRY - read and write Windows Registry

BINIO - read and write binary files

External adsrx modules (contained in e.g. stdlibxx.arx) are

STDLIB-ADS, STDLOCAL-ADS, FILEEXT, BINIO, INIFILE, REGISTRY, RANDOM, ARXSTUFF.

Most files are modules. As exceptions, STINIT2 and STDMODUL are no seperate modules.

Some files are just "logical" modules, providing subsets or sets of the library, just as STDACI (acad independent) or STDLIB (all) or the stdlib adsrx file.

STD%PRJ provides just a project specific marker to support delayed module loading. With projects require is useless because the files are loaded at once. And we are able to call the top-level functions from your project for safer initializing. Otherwise on any error on loading a project the whole project isnot initialized and you cannot react on any error.

Stdlib Project

A stdlib project file is the whole collection of stdlib modules loaded at once. External modules are tried to be loaded as well.

Normally each module tries to solve dependencies and loads each required submodule also. With loading the project this is not done, which needs less File IO and is therefore faster.

This is supplied with STDALL.LSP for plain AutoLISP, STDLIB.BI4 for acomp, STDLIB.FAS and STDLIB.VLX for Visual Lisp / Vital Lisp based systems.

Loading projects is faster but needs more memory if would need just parts of it.

Normally you create your own projects including the required stdlib modules into one big project of your own. Be sure not to forget the STD%PRJ marker before the STDLIB modules and something like STDLIB behind.