The defconfig Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The defconfig Reference Manual

This is the defconfig Reference Manual, version 1.1.3, generated automatically by Declt version 3.0 "Montgomery Scott" on Mon Apr 19 15:52:27 2021 GMT+0.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

#+TITLE: DEFCONFIG
*** Status [[https://travis-ci.com/szos/defconfig.svg?branch=main]]
    Currently tested against SBCL, CCL, ABCL, ECL, and Allegro CL. 
* Purpose
  Defconfig is a customization and validation framework for places in CL. Its intended use is with user-exposed variables and accessors, to protect users from setting variables to an invalid value an potentially encountering undefined behavior. It can be used with both dynamic variables and ~setf~-able functions. It coexists alongside ~setf~, and does not replace it - ie you can still use ~setf~ if you want to avoid validating the value. 

  If you wish to just dive in, ~:import~ the symbols ~#:defconfig~, ~#:setv~, ~#:with-atomic-setv~, ~#:define-defconfig-db~, ~#:get-db~, and ~#:*setv-permissiveness*~ and read their docstrings. 
  
  If you encounter something that doesnt work as you think it should, please open an issue here. If you describe the exhibited behavior and the expected behavior, it will be added to the test suite and fixed (hopefully quickly). 

* Usage
  The basic usage of this system is through the macros ~defconfig~, ~setv~ and ~with-atomic-setv~. The macro ~defconfig~ defines a configuration object which is used to check values against a predicate. The macro ~setv~ uses these configuration objects to validate values before calling setf. An error is signalled if A) the value is invalid, B) the coerced value is invalid (when applicable) or C) the place one is trying to set doesnt have a configuration object. For A and B, restarts are put into place to ignore the invalidity and set regardless, or continue without setting. The macro ~with-atomic-setv~ collects all places set with ~setv~ in its body and if an error is signalled resets all changed values back to their original value held before the ~with-atomic-setv~ form. 

* Regarding This Readme
  This readme is not a complete explanation of defconfig. Please see =package.lisp= for a list of exported symbols and see the symbol docstrings for a better idea of what it does. Most (exported) symbols are well documented, slots have decent documentation describing their purpose/use, and errors should be grokkable from their ~:report~ functions.

* Basic Tutorial
  Lets look at an example where one is defining a user-exposed variable for the background color of an application. Please see =tests/defconfig-tests.lisp= for more examples.

** Defconfig
   Here we define a variable called ~*background-color*~ which holds a default value of the color white. It may only hold a color object. If we try to set it to a string, we try to parse a color object from the string. If that fails or we get something other than a string, we return the original value. We do this because the coercer is only ever called on an invalid value, and if we cannot make a color object from it we want to be certain that we return an invalid value. We then tag the configuration object with “color” and “background” such that it can be searched for by those names.
#+BEGIN_SRC lisp
  (defpackage :my-app
    (:local-nicknames (:dc :defconfig))
    (:use :cl))

  (in-package :my-app)

  (defstruct color r g b)

  (defun parse-color-from-string (string)
    (make-color :r (parse-integer (subseq string 0 2) :radix 16)
                :g (parse-integer (subseq string 2 4) :radix 16)
                :b (parse-integer (subseq string 4 6) :radix 16)))

  (dc:defconfig *background-color* (make-color :r 256 :g 256 :b 256)
    :documentation "the background color for my app"
    :typespec 'color
    :coercer (lambda (value)
               (handler-case (parse-color-from-string value)
                 (error () value)))
    :tags '("color" "background"))
#+END_SRC

** Setv
   Now, somewhere in the users =~/.myapp.d/init=, they want to set the background color to black. Lets look at three examples of that: 
#+BEGIN_SRC lisp
  (dc:setv *background-color* (make-color :r 0 :g 0 :b 0))
  (dc:setv *background-color* "000000")
  (dc:setv *background-color* "i dont know what this user is thinking!")
#+END_SRC
   The first of these works without a hitch; ~setv~ determines that it is a valid value as per the typespec the user provided, and sets ~*background-color*~ to black. 

   The second of these would fail if we hadnt provided a coercer, but as we did, and it knows how to handle color strings, we generate a color from the color string and ~*background-color*~ gets set to black. 

   The third of these is also a string, but its impossible to parse a color from it. Assuming ~parse-color-from-string~ errors out on invalid strings, we return ~value~ and signal an error; ~*background-color*~ remains white. 

** With-atomic-setv 
   Lets look at an example of ~with-atomic-setv~. We will define a bounded number variable, and then try setting it while signalling various errors. 
#+BEGIN_SRC lisp
  (dc:defconfig *bounded-number* 0
    :typespec '(integer 0 10)
    :coercer (lambda (x)
               (if (stringp x)
                   (handler-case (parse-integer x)
                     (error () x))
                   x)))

  (defun compute-something-that-signals-an-error ()
    (error "we encountered an error, oh no!"))

  (dc:with-atomic-setv ()
    (dc:setv *bounded-number* 1)
    (dc:setv *bounded-number* 50))

  (dc:with-atomic-setv ()
    (dc:setv *bounded-number* 1)
    (compute-something-that-signals-an-error)
    (dc:setv *bounded-number* 2))

  (dc:with-atomic-setv (:handle-conditions dc:config-error)
    (dc:setv *bounded-number* 1)
    (compute-something-that-signals-an-error)
    (dc:setv *bounded-number* 2))
#+END_SRC
   The first of the calls to ~with-atomic-setv~ first sets ~*bounded-number*~ to 1, and then encounters an error when trying to set it to 50. It catches that error and resets ~*bounded-number*~ to 0, the value ~*bounded-number*~ had before the call to ~with-atomic-setv~. 

   The second of these first sets ~*bounded-number*~ to 1, and then an error is signalled by ~(compute-something-that-signals-an-error)~. It catches this error and resets ~*bounded-number*~ to 0. 

   The third of these first sets ~*bounded-number*~ to 1, and then an error is signalled that it is not set up to handle; it will only catch errors of type ~config-error~. Whether or not it attempts to set ~*bounded-number*~ to 2 is determined by what handlers and restarts are set up around the error. If there a restart is chosen that doesnt unwind the stack then ~*bounded-number*~ will be set to 2, but if there is a non-local transfer of control to a point outside of ~with-atomic-setv~ then ~*bounded-number*~ will remain set to 1. This is the only way to escape ~with-atomic-setv~ that leaves things in a partially configured state. Lets look at an example of this that would end up with ~*bounded-number*~ being 2: 
#+BEGIN_SRC lisp
  (defun compute-something-that-signals-an-error ()
    (restart-case (error "we encountered an error, oh no!")
      (continue () nil)))

  (handler-bind ((error
                   (lambda (c)
                     (declare (ignore c))
                     (when (find-restart 'continue)
                       (invoke-restart 'continue)))))
    (dc:with-atomic-setv (:handle-conditions dc:config-error)
      (dc:setv *bounded-number* 1)
      (compute-something-that-signals-an-error)
      (dc:setv *bounded-number* 2)))
#+END_SRC

** Controlling Permissiveness
   By setting ~*setv-permissiveness*~ one can control how ~setv~ handles missing configuration objects. It can be set to one of the following values: 
   - ~:strict~ - Signal all errors as they occur. This is the default behavior
   - ~:greedy~ - When unable to find a configuration object in the specified database, search in all databases for a matching configuration object, using the first one encountered.
   - ~:permissive~ - When a configuration object isnt found, set the variable to the value.
   - ~:greedy+permissive~ - When a configuration object isnt found, search for one as per ~:greedy~. If one still isnt found, set the variable to the value. 
     
* Quirks, Oddities and Limitations
  There are a few places in ~defconfig~ that arent naturally intuitive.
** Setv and macros
   Setv wont work with macros that expand into something else to be set in the same way setf does. Example:
#+BEGIN_SRC lisp
  (defconfig *var* nil)
  (defmacro var () '*var*)
  (setf (var) 1) ; works
  (setv (var) 2) ; tries to find config for the accessor var, not the variable *var*
#+END_SRC
** Psetv
   The macro ~psetv~ is a ~setv~ equivalent of ~psetf~. However, while bindings are "preserved" throughout the form, if an error occurs and there is a non-local transfer of control, any places being set after the error will not be set. An example from the test suite: 
#+BEGIN_SRC lisp
  (defconfig-minimal *a* 'a
    :typespec 'symbol)

  (defconfig-minimal *b* "b"
    :typespec 'string)

  (defconfig-minimal *c* 'c
    :typespec 'symbol)

  (psetv *a* *c*
         *b* *a*
         *c* *a*)
#+END_SRC
   If one enters this in a repl, an error condition will be signalled upon trying to set ~*b*~ to ~'a~, and if one chooses to abort (via ~q~, or ~sly-db-abort~) then ~*c*~ will retain the value ~'c~, and ~*b*~ ~"b"~. 
** ~With-atomic-setv~
   The star variant of ~with-atomic-setv~ has a quirk in that places get evaluated multiple times if one resets, while both variants evaluate accessors multiple times. Some code to demonstrate:
#+BEGIN_SRC lisp
  (with-atomic-setv ()
    (setv (accessor *myvar*) 0)
    …)

  (with-atomic-setv* ()
    (setv (accessor *myvar*) 0)
    …)
#+END_SRC
   Both of these will evaluate ~(accessor *myvar*)~ multiple times depending on whether it gets reset or not. 
#+BEGIN_SRC lisp
  (with-atomic-setv ()
    (setv (accessor (progn (incf *counter*)
			   *myvar*))
	  0)
    …)

  (with-atomic-setv* ()
    (setv (accessor (progn (incf *counter*)
			   *myvar*))
	  0)
    …)
#+END_SRC
   In the above example, the first of these will evaluate ~(progn (incf *counter*) *myvar*)~ once and only once, while the second will evaluate ~(progn (incf *counter*) *myvar*)~ once if there is no reset, but twice if there is a reset.
   Both version of this macro will evaluate the accessor multiple times. Another way of putting it is to say that ~with-atomic-setv*~ is symmetrical - that is to say, upon resetting every call to ~setv~ will have a matching reset. In contrast, ~with-atomic-setv~ will only reset a place if it hasn't already been reset. 

** A Note About Reset-Place
   The macro ~reset-place~ (and by extension the function ~reset-computed-place~) could be a little confusing. It takes a place, and resets it to its default value. However if ~previous-value~ is true, then it resets to the previous value instead. Before setting, it checks if the current value is eql to the value to reset to (this can be controlled with ~already-reset-test~) and if it is it isnt reset as it would have no effect. If it isnt, we both reset the place, AND set the ~previous-value~ slot to the (now no longer) current value. thusly, if the default value is a, previous value is b, and current value is c, and we reset to the default value, we will have a default of a, previous of c, and current of a. If we had instead reset to the previous value, we effectively swap the previous and current values. 
  Furthermore, we cannot reset accessor places.

** Defconfig and CLISP
   Many distributions package an older version of CLISP upon which the defconfig testing dependency ~:fiveam~ wont load. CLISP version 2.49.92 and higher is known to work, and can be obtained from the 2.50 branch on gitlab. At the time of writing the master branch is v2.49.93+. 

* Macros
** ~Define-variable-config~
   *define-variable-config* /place default-value &key validator typespec coercer documentation db tags regen-config => config-info/

   The ~define-variable-config~ macro generates a config info object and registers it in a database. 
   
   - *Side Effects*
     - Causes /config-info/ to be places into /db/
     - Any side effects of calling /validator/ on /default-value/, when /validator/ is provided.
   - Arguments and Values
     - /place/ - a symbol denoting a dynamic variable.
     - /default-value/ - the default value for /place/. Must conform to /validator/ or /typespec/ when provided.
     - /validator/ - a function of one argument returning true or nil. May not be provided alongside /typespec/. 
     - /typespec/ - a type specifier denoting valid types for /place/. May not be provided alongside /validator/
     - /coercer/ - a function of one argument used to attempt to coerce its argument to a valid value. Will only be called on invalid values.
     - /regen-config/ - when true, regenerate the configuration object regarless of its pre-existence
     - /db/ - the database to register /config-info/ in.
     - /tags/ - a set of tags used when searching for a configuration object
** ~Define-accessor-config~ 
   *define-accessor-config* /place &key validator typespec coercer documentation db tags regen-config => config-info/

   The ~define-accessor-config~ macro generates a config info object and registers it in a database. 

   - *Side Effects*
     - Causes /config-info/ to be places into /db/
   - Arguments and Values
     - /place/ - a symbol denoting a dynamic variable.
     - /validator/ - a function of one argument returning true or nil. May not be provided alongside /typespec/. 
     - /typespec/ - a type specifier denoting valid types for /place/. May not be provided alongside /validator/
     - /coercer/ - a function of one argument used to attempt to coerce its argument to a valid value. Will only be called on invalid values.
     - /regen-config/ - when true, regenerate the configuration object regarless of its pre-existence
     - /db/ - the database to register /config-info/ in.
     - /tags/ - a set of tags used when searching for a configuration object
** ~Defconfig~
   *defconfig* /place &rest args => config-info/

   The ~defconfig~ macro wraps around the ~define-*-config~ macros. When /place/ is a symbol, it expands into a call to ~define-variable-config~, as well as a call to either ~defparameter~ or ~defvar~. When /place/ is a symbol one additional key argument is accepted: ~:reinitialize~. When true, a ~defparameter~ form is generated. 

   - *Side Effects*:
     - Causes /config-info/ to be placed into /db/
     - May modify /place/
     - May cause /place/ to be defined as a dynamic variable
     - Any side effects of running /validator/
** ~Setv~
   *setv* {/place/ /value/}* /:db/  => /result/
   The ~setv~ macro expands into multiple calls to ~%%setv~, which validates a value before setting the place to it. It functions the same as ~setf~, but accepts the keyword ~:db~ to specify a database other than the default one provided by ~defconfig~. Returns the final value. 
   - *Side Effects*:
     - Any side effects of evaluating a value. Place/value pairs are evaluated sequentially. If a value is not valid, no further values will be processed.
     - Causes /place/ to be set to /value/ 
** ~Psetv~
   *psetv* {/place/ /value/}* /:db/ => /result/
   The ~psetv~ macro expands into multiple calls to ~%%setv~, the same as ~setv~, but differs in that all values are computed before setting, giving the illusion of setting in parallel (similar to ~psetf~).
   - Side Effects:
     - Any side effects of evaluating a value. Place/value pairs are evaluated sequentially. If a value is not valid, no further values will be processed.
     - Causes /place/ to be set to /value/
** ~With-atomic-setv/*~
   *with-atomic-setv* (/errorp/ /handle-conditions/ /db/) /form*/ => /results/
   There are two versions of this macro:  ~with-atomic-setv~ and ~with-atomic-setv*~. The former tracks places and values purely at runtime, while the latter tracks places at macroexpansion time and values at runtime. 

   The ~with-atomic-setv~ macro resets any places set using ~setv~ to the value it held before the call to ~with-atomic-setv~, when a condition is encountered. One can specify whether to re-signal the condition or not with ~:errorp~. If ~:errorp~ is nil a warning will be issued on encountering a handled condition and the condition will be returned. Re-signalled conditions are wrapped in the condition ~setv-wrapped-error~. One can specify which conditions to handle with ~:handle-conditions~, which accepts an (unquoted) type specifier. One can handle no conditions by passing ~(or)~, though that defeats the purpose of ~with-atomic-setv~. The default database to use for all calls to ~setv~ occuring within /form*/ can be controleld with ~:db~. It defaults to ~defconfig:*default-db*~. 
   
   An example: 
#+BEGIN_SRC lisp
  (with-atomic-setv (:errorp nil)
    (error "hello")
    "return string")

  WARNING: WITH-ATOMIC-SETV encountered the error
  #
  and reset.
  => #

  (with-atomic-setv (:errorp nil :handle-conditions config-error)
    (error "hello")
    "return string")

  drops into the debugger

  (with-atomic-setv (:errorp nil)
    (warn "hello")
    "return string")

  WARNING: hello
  => "return string"

  (with-atomic-setv (:errorp nil :handle-conditions (or error warning))
    (warn "hello")
    "return string")

  WARNING: hello
  => #
#+END_SRC

** ~Define-defconfig-db~
   *define-defconfig-db* /var/ /key/ /&key/ /parameter/ /if-exists/ /doc/

   The ~define-defconfig-db~ macro defines a new dynamic variable containing a defconfig database and stores that database internally such that it can be referenced via /key/. All databases used with defconfig should be created using this macro. The key argument /parameter/ defaults to true, and controls whether the database is defined using ~defvar~ or ~defparameter~. Variable documentation is added via the /doc/ key argument. When a key already denotes a defconfig database, an error will be signalled. This can be handled by setting /if-exists/ to ~:use~ or ~redefine~, to either use the existing database or redefine the database respectively. When /if-exists/ is nil the error will propogate up to the user. 

* Help Wanted
  Currently, Travis is being used for CI. However, these builds sometimes fail for unknown reasons unrelated to the defconfig test suite. It would be nice to be able to detect these failures and re-run the job upon encountering them. 


Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

The main system appears first, followed by any subsystem dependency.


Previous: , Up: Systems   [Contents][Index]

2.1 defconfig

Author

szos at posteo dot net

License

GPLv3

Description

A configuration system for user exposed variables

Version

1.1.3

Dependencies
Source

defconfig.asd (file)

Components

Next: , Previous: , Up: Top   [Contents][Index]

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

3.1 Lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.1 defconfig.asd

Location

defconfig.asd

Systems

defconfig (system)


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.2 defconfig/package.lisp

Parent

defconfig (system)

Location

package.lisp

Packages

defconfig


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.3 defconfig/macros.lisp

Dependency

package.lisp (file)

Parent

defconfig (system)

Location

macros.lisp

Internal Definitions

atypecase (macro)


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.4 defconfig/database.lisp

Dependency

macros.lisp (file)

Parent

defconfig (system)

Location

database.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.5 defconfig/classes.lisp

Dependency

database.lisp (file)

Parent

defconfig (system)

Location

classes.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.6 defconfig/conditions.lisp

Dependency

classes.lisp (file)

Parent

defconfig (system)

Location

conditions.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.7 defconfig/defconfig.lisp

Dependency

conditions.lisp (file)

Parent

defconfig (system)

Location

defconfig.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.8 defconfig/setv.lisp

Dependency

defconfig.lisp (file)

Parent

defconfig (system)

Location

setv.lisp

Exported Definitions
Internal Definitions

Previous: , Up: Lisp files   [Contents][Index]

3.1.9 defconfig/access.lisp

Dependency

setv.lisp (file)

Parent

defconfig (system)

Location

access.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

4 Packages

Packages are listed by definition order.


Previous: , Up: Packages   [Contents][Index]

4.1 defconfig

Source

package.lisp (file)

Use List

common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

5.1 Exported definitions


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.1 Special variables

Special Variable: *setv-permissiveness*

Determines how setv will act when no config-info object is
found. :STRICT means to error out. :GREEDY means to search through all registered databases for a config-info object and use the first one that is found, or if none is found error out. :PERMISSIVE means to setf when a config-info object isnt found. :GREEDY+PERMISSIVE means to search through all registered databases and use the first object found, but if one isnt found to setf regardless.

Package

defconfig

Source

setv.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.2 Macros

Macro: defconfig PLACE &rest ARGS

Defconfig defines a config-info object and potentially a dynamic variable.

PLACE may be either a symbol or a list of length 1. If PLACE is a list, defconfig functions as a wrapper around define-accessor-config. If it is a symbol, defconfig defines a variable config as well as a dynamic variable. Additionally, if the first element of ARGS is a keyword and the second element of ARGS is not a keyword, the default value will be the value of PLACE.

The following keys are acceptable in ARGS: VALIDATOR, TYPESPEC, COERCER, DOCUMENTATION, DB, TAGS, and REGEN-CONFIG. REINITIALIZE is also acceptable if PLACE is a symbol.

VALIDATOR and TYPESPEC may not coexist in a single defconfig call. VALIDATOR is for providing a function to validate values. It must take a single value, the value to validate. TYPESPEC takes a type specification and generates a validation function from it.

If provided, COERCER must be a function taking a single argument: the value to coerce. It is called iff an invalid value is passed to setv, and it is called on the invalid value in an attempt to generate a valid one. The return value of COERCER is checked against the VALIDATOR (or the function generated with TYPESPEC) and if it is valid it is used in place of the original value.

DOCUMENTATION is the documentation of PLACE and is used in the defvar/defparameter form when PLACE is a symbol and is placed in the config-info object regardless of whether PLACE is a symbol or a list.

DB is the database to place the generated config-info object into, and defaults to *default-db*. Defconfig does not check if DB is in the plist of databases before placing the config-info object into DB. It is assumed that if a DB has been removed from the database plist the user has a good understanding of what they are doing and is managing the database themselves. (databases must be manually removed from the plist).

TAGS are strings that can be used to search for a config-info object. The search functionality is currently only partially implemented.

Package

defconfig

Source

defconfig.lisp (file)

Macro: defconfig-minimal PLACE &rest ARGS

Define a minimal config, with no value tracking.

Package

defconfig

Source

defconfig.lisp (file)

Macro: define-accessor-config ACCESSOR &key VALIDATOR TYPESPEC COERCER DB TAGS REGEN-CONFIG DOCUMENTATION

Define an accessor config object and place it in DB with the key ACCESSOR

Package

defconfig

Source

defconfig.lisp (file)

Macro: define-defconfig-db VAR KEY &key PARAMETER IF-EXISTS DOC

define a dynamic variable name VAR to be a defconfig database accessible by passing KEY to the function get-db. If PARAMETER is true, create this var with a defparameter form, otherwise use defvar. DOC is the documentation to pass to the def(parameter|var) form.

Package

defconfig

Source

database.lisp (file)

Macro: define-minimal-config PLACE &key TYPE VALIDATOR TYPESPEC COERCER DB REGEN-CONFIG

define a minimal config object for PLACE and in DB.

Package

defconfig

Source

defconfig.lisp (file)

Macro: define-variable-config PLACE DEFAULT-VALUE &key VALIDATOR TYPESPEC COERCER DB TAGS DOCUMENTATION REGEN-CONFIG

Define a variable config object and place it in DB with the key PLACE.

Package

defconfig

Source

defconfig.lisp (file)

Macro: psetv &rest ARGS

The setv equivalent of psetf - set all places in parallel

Package

defconfig

Source

setv.lisp (file)

Macro: reset-place PLACE &key DB PREVIOUS-VALUE

looks up PLACE in DB and set it to its default or previous value.

Package

defconfig

Source

access.lisp (file)

Macro: setv &rest ARGS

Setv must get an even number of ARGS - every place must have a value. Setv can also take the key argument :db, to specify which database to look up config objects in.

Package

defconfig

Source

setv.lisp (file)

Macro: with-atomic-setv (&key ERRORP HANDLE-CONDITIONS DB) &body BODY

This macro, upon encountering an error, resets all places encountered within calls to setv to be reset to the value they held before the call to with-atomic-setv. Which errors to reset upon can be controlled with HANDLE-CONDITIONS. If it is nil, it defaults to ’error. If a handled condition is encountered, it will be wrapped in SETV-WRAPPED-ERROR, unless RE-ERROR is nil, in which case a warning will be generated and the condition will be returned.

Package

defconfig

Source

setv.lisp (file)

Macro: with-atomic-setv* (&key RE-ERROR HANDLE-CONDITIONS DB) &body BODY
Package

defconfig

Source

setv.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.3 Functions

Function: delete-db KEY &optional MAKUNBOUND

delete the database associated with KEY. if MAKUNBOUND is T, then unbind the symbol holding the database associated with KEY

Package

defconfig

Source

database.lisp (file)

Function: get-db KEY

get the database associated with KEY

Package

defconfig

Source

database.lisp (file)

Function: get-db-var KEY

get the variable holding the database associated with KEY

Package

defconfig

Source

database.lisp (file)

Function: list-dbs ()

list all defconfig databases

Package

defconfig

Source

database.lisp (file)

Function: search-configurable-objects TERM &optional DATABASE-KEY

Returns a list of all configurable objects matching TERM. If DATABASE-KEY is provided, search only in that database.

Package

defconfig

Source

access.lisp (file)

Function: tag-configurable-place TAG PLACE &key DB RECLASS

Push TAG onto the list of tags for the config-info object associated with PLACE in DB.

Package

defconfig

Source

access.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.4 Generic functions

Generic Function: clean-previous-value PLACE &key DB

use to set the previous value of PLACE to the default value. This is useful for places that may hold a large object which you want gc’d

Package

defconfig

Source

access.lisp (file)

Methods
Method: clean-previous-value (PLACE symbol) &key DB
Method: clean-previous-value (OBJECT config-info) &key DB
Method: clean-previous-value (PLACE list) &key DB
Method: clean-previous-value (OBJECT accessor-config-info) &key DB
Generic Function: config-info-coercer OBJECT
Package

defconfig

Methods
Method: config-info-coercer (CONFIG-INFO-FUNCTIONS config-info-functions)

The function by which invalid datum will attempt to be coerced

Source

classes.lisp (file)

Generic Function: config-info-db OBJECT
Package

defconfig

Methods
Method: config-info-db (CONFIG-INFO-DIRECT-INFO config-info-direct-info)

the database that the config info object is housed in.

Source

classes.lisp (file)

Generic Function: config-info-default-value OBJECT
Package

defconfig

Methods
Method: config-info-default-value (CONFIG-INFO-VALUES config-info-values)

The default value of this config-info object

Source

classes.lisp (file)

Generic Function: config-info-documentation OBJECT
Package

defconfig

Methods
Method: config-info-documentation (CONFIG-INFO-METADATA config-info-metadata)

The docstring for the place being governed. if a variable it is the same as the variables docstring

Source

classes.lisp (file)

Generic Function: config-info-name OBJECT
Package

defconfig

Methods
Method: config-info-name (CONFIG-INFO-METADATA config-info-metadata)

The formal name by which this config-info object can be searched for

Source

classes.lisp (file)

Generic Function: config-info-place OBJECT
Package

defconfig

Methods
Method: config-info-place (CONFIG-INFO-DIRECT-INFO config-info-direct-info)

The place which this config info governs.

Source

classes.lisp (file)

Generic Function: config-info-predicate OBJECT
Package

defconfig

Methods
Method: config-info-predicate (CONFIG-INFO-FUNCTIONS config-info-functions)

The predicate against which valid values are checked

Source

classes.lisp (file)

Generic Function: config-info-previous-value OBJECT
Package

defconfig

Methods
Method: config-info-previous-value (CONFIG-INFO-VALUES config-info-values)

holds the value previously assigned to the config-info object. initially the same as default-value

Source

classes.lisp (file)

Generic Function: config-info-tags OBJECT
Package

defconfig

Methods
Method: config-info-tags (CONFIG-INFO-METADATA config-info-metadata)

Tags which can be used for finding a config-info object

Source

classes.lisp (file)

Generic Function: config-info-typespec OBJECT
Package

defconfig

Methods
Method: config-info-typespec (CONFIG-INFO-METADATA config-info-metadata)

When a typespec is provided instead of a validator, this slot will hold it

Source

classes.lisp (file)

Generic Function: config-info-valid-values-description OBJECT
Package

defconfig

Methods
Method: config-info-valid-values-description (CONFIG-INFO-METADATA config-info-metadata)

An explanation of the valid values and predicate function

Source

classes.lisp (file)

Generic Function: reset-computed-place PLACE &key DB PREVIOUS-VALUE TEST

Reset PLACE to its default value, unless PREVIOUS-VALUE is true, then reset to the previous value. TEST is used to check if a reset is needed.

Package

defconfig

Source

access.lisp (file)

Methods
Method: reset-computed-place (PLACE symbol) &key DB TEST PREVIOUS-VALUE
Method: reset-computed-place (OBJECT config-info) &key DB TEST PREVIOUS-VALUE
Method: reset-computed-place (PLACE list) &key DB TEST PREVIOUS-VALUE
Method: reset-computed-place (OBJECT accessor-config-info) &key DB TEST PREVIOUS-VALUE
Method: reset-computed-place (OBJECT minimal-config-info) &key DB TEST PREVIOUS-VALUE

Previous: , Up: Exported definitions   [Contents][Index]

5.1.5 Conditions

Condition: config-error ()

This condition is the root condition for all defconfig conditions. If one wants to catch all defconfig conditions (such as with handler-case) then config-error should be used.

Package

defconfig

Source

conditions.lisp (file)

Direct superclasses

error (condition)

Direct subclasses
Condition: database-already-exists-error ()

This condition indicates KEY already denotes a database in *db-plist*

Package

defconfig

Source

conditions.lisp (file)

Direct superclasses

config-error (condition)

Direct methods

database-already-exists-error-key (method)

Direct slots
Slot: key
Initargs

:key

Readers

database-already-exists-error-key (generic function)

Condition: invalid-coerced-datum-error ()

This condition indicates that coercion was attempted on VALUE, producing COERCED-VALUE, and that COERCED-VALUE is invalid for PLACE-FORM

Package

defconfig

Source

conditions.lisp (file)

Direct superclasses

invalid-datum-error (condition)

Direct methods

invalid-coerced-datum-error-value (method)

Direct slots
Slot: coerced-value
Initargs

:coerced-value

Initform

(quote nil)

Readers

invalid-coerced-datum-error-value (generic function)

Condition: invalid-datum-error ()

This condition indicates that VALUE is invalid for PLACE-FORM

Package

defconfig

Source

conditions.lisp (file)

Direct superclasses

config-error (condition)

Direct subclasses

invalid-coerced-datum-error (condition)

Direct methods
Direct slots
Slot: place-form
Initargs

:place

Initform

(quote nil)

Readers

invalid-datum-error-place (generic function)

Slot: value
Initargs

:value

Initform

(quote nil)

Readers

invalid-datum-error-value (generic function)

Slot: config-object
Initargs

:config-object

Initform

(quote nil)

Readers

invalid-datum-error-config-object (generic function)

Condition: no-bound-default-value-error ()

This condition indicates that the default-value slot of OBJECT is unbound. This will only be signalled when trying to reset a place to its default value.

Package

defconfig

Source

conditions.lisp (file)

Direct superclasses

untrackable-place-error (condition)

Condition: no-config-found-error ()

This condition indicates that PLACE-FORM does not denote a config-info object in DATABASE

Package

defconfig

Source

conditions.lisp (file)

Direct superclasses

config-error (condition)

Direct methods
Direct slots
Slot: place-form
Initargs

:place

Initform

(quote nil)

Readers

no-config-found-error-place (generic function)

Slot: database
Initargs

:db

Initform

(quote nil)

Readers

no-config-found-error-db (generic function)

Condition: not-resettable-place-error ()

This condition indicates that a reset was attempted on an accessor place.

Package

defconfig

Source

conditions.lisp (file)

Direct superclasses

untrackable-place-error (condition)

Condition: setv-wrapped-error ()

This condition is only ever signalled from within WITH-ATOMIC-SETV, and indicates that an error was caught which caused WITH-ATOMIC-SETV to reset all places found within its body. It has one slot, CONDITION, which contains the condition that was caught.

Package

defconfig

Source

conditions.lisp (file)

Direct superclasses

config-error (condition)

Direct methods
Direct slots
Slot: condition
Initargs

:error

Readers

setv-wrapped-error-condition (generic function)

Writers

(setf setv-wrapped-error-condition) (generic function)

Condition: untrackable-place-error ()
Package

defconfig

Source

conditions.lisp (file)

Direct superclasses

config-error (condition)

Direct subclasses
Direct methods
Direct slots
Slot: object
Initargs

:object

Readers

untrackable-place-error-object (generic function)

Slot: place
Initargs

:place

Readers

untrackable-place-error-place (generic function)


Previous: , Up: Definitions   [Contents][Index]

5.2 Internal definitions


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.1 Special variables

Special Variable: *db-plist*

A plist holding all databases for defconfig

Package

defconfig

Source

database.lisp (file)

Special Variable: *default-db*

The default database for defconfig

Package

defconfig

Source

database.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.2 Macros

Macro: %%setv PLACE VALUE DB
Package

defconfig

Source

setv.lisp (file)

Macro: %%setv-coerced PLACE VALUE CONFIG-OBJECT COERCER THROWTAG
Package

defconfig

Source

setv.lisp (file)

Macro: %atomic-setv BLOCK-NAME RESET-ON-ERRORS ACCUMULATOR DATABASE &rest ARGS

generates a set of calls to %setv-with-reset.

Package

defconfig

Source

setv.lisp (file)

Macro: %atomic-setv-reset ACCUMULATOR &key POP

this macro resets all encountered places within a call to with-atomic-setv*.

Package

defconfig

Source

setv.lisp (file)

Macro: %psetv DB PAIRS
Package

defconfig

Source

setv.lisp (file)

Macro: %runtime-atomic-setv ACCUMULATOR BLOCK-NAME RESET-ERRORS DATABASE &rest ARGS
Package

defconfig

Source

setv.lisp (file)

Macro: %runtime-atomic-setv-reset ACCUMULATOR &key POP
Package

defconfig

Source

setv.lisp (file)

Macro: %runtime-setv-with-reset AC BLOCK-NAME RESET-ERRORS PLACE VALUE DB
Package

defconfig

Source

setv.lisp (file)

Macro: %setv-ensure-setf PLACE VALUE CONFIG-INFO-OBJECT
Package

defconfig

Source

setv.lisp (file)

Macro: %setv-with-reset BLOCK-NAME RESET-ON ACCUMULATOR PLACE VALUE DB

Wrap setv in a handler to catch all errors, which will reset all encountered places, after which it returns the condition from the named block.

Package

defconfig

Source

setv.lisp (file)

Macro: %with-atomic-setv* (&key RE-ERROR HANDLE-CONDITIONS DB) &body BODY

This macro utilizes compiler-let to allow rollbacks of accessor stuff.

Package

defconfig

Source

setv.lisp (file)

Macro: atypecase THING &body CASES
Package

defconfig

Source

macros.lisp (file)

Macro: defconf-a PLACE &key PREDICATE COERCER DB TAGS DOCUMENTATION REGEN VALID-VALUES
Package

defconfig

Source

defconfig.lisp (file)

Macro: defconf-v PLACE DEFAULT &key PREDICATE COERCER DB TAGS DOCUMENTATION REGEN VALID-VALUES
Package

defconfig

Source

defconfig.lisp (file)

Macro: define-min PLACE &key PREDICATE COERCER DB REGEN-CONFIG
Package

defconfig

Source

defconfig.lisp (file)

Macro: destructuring-keys (VAR &rest KEYS) LIST &body BODY

separates keys from list, storing the remainder in VAR, and making each key a variable via destructuring-bind.

Package

defconfig

Source

setv.lisp (file)

Macro: setv-atomic &rest ARGS

this version of setv saves the original value of the places being set, and resets all to their original value if an error is encountered. the error is then resignalled. It is generally advisable to use WITH-ATOMIC-SETV instead.

Package

defconfig

Source

setv.lisp (file)

Macro: with-config-info (VAR PLACE &key DB UNFOUND-POLICY) &body BODY
Package

defconfig

Source

access.lisp (file)

Macro: with-runtime-atomic-setv (&key RE-ERROR HANDLE-CONDITIONS DB) &body BODY
Package

defconfig

Source

setv.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.3 Functions

Function: %%with-config-info FN PLACE DATABASE POLICY
Package

defconfig

Source

access.lisp (file)

Function: %fsetv-ensure-validity THROWTAG CONFIG-INFO-OBJECT VALUE INVALID-SYMBOL &optional ERRORP PLACE ERROR EXTRA-ARGS

check VALUE against CONFIG-INFO-OBJECTs predicate. return VALUE if it passes. If ERRORP is true error if VALUE doesnt pass. If ERRORP is nil and VALUE doesnt pass, return INVALID-SYMBOL. Restarts are put in place to provide a value or set regardless.

Package

defconfig

Source

setv.lisp (file)

Function: %fsetv-get-config-info-object PLACE HASH DB &optional SETF-SYMBOL

return setf symbol if we want the caller to setf place. setf-symbol only needs to be provided if were calling this in a setv expansion.

Package

defconfig

Source

setv.lisp (file)

Function: add-db-to-plist KEY VARNAME

add a database to *db-plist* in the correct format of (KEY (VARNAME value)). VARNAME is the quoted variable referencing the database, while value is the symbol-value of VARNAME. for internal use only

Package

defconfig

Source

database.lisp (file)

Function: config-info-search-in-db TERM &key NAMESPACE DB

takes a term, as well as a namespace and a database. the :db keyarg should be a database as returned by make-config-database. the :namespace keyarg should be one of :both :accessor or :variable. Note that the namespace keyarg isnt used if term is a symbol. Term should be either a string, a list of strings, a symbol, or a list of symbols representing an accessor and a place.

Package

defconfig

Source

access.lisp (file)

Function: config-info-search-tags TAGS &key NAMESPACE DB
Package

defconfig

Source

access.lisp (file)

Function: db-key-exists-p KEY

return t/nil if KEY denotes a pre-existing db

Package

defconfig

Source

database.lisp (file)

Function: def-defconfig-db-error-check KEY VAR

Check that KEY is a keyword and doesnt already denotes a database in *db-plist*. If it does signal an error within the context of a use-value restart to allow the user to provide a new value to use instead of KEY

Package

defconfig

Source

database.lisp (file)

Function: defconfig-database-p DB
Package

defconfig

Source

database.lisp (file)

Function: generate-valid-values-coercer-string &optional COERCER
Package

defconfig

Source

classes.lisp (file)

Function: generate-valid-values-predicate-string &key TYPESPEC PREDICATE
Package

defconfig

Source

classes.lisp (file)

Function: generate-vv-string SPEC OBJ
Package

defconfig

Source

classes.lisp (file)

Function: getdb KEY

used internally by defconfig to wrap around getf - think of it as currying getf with *db-plist* as the place

Package

defconfig

Source

database.lisp (file)

Function: list-of-strings-p THING
Package

defconfig

Source

access.lisp (file)

Function: make-config-database ()

Return a cons of two hash tables

Package

defconfig

Source

database.lisp (file)

Function: place->config-info PLACE &key DB
Package

defconfig

Source

access.lisp (file)

Function: remove-keys LIST KEYS

returns two values - accumulated non-keys and keys

Package

defconfig

Source

setv.lisp (file)

Function: slot-bound-p OBJ SLOT
Package

defconfig

Source

classes.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.4 Generic functions

Generic Function: config-info-prev-value OBJECT
Generic Function: (setf config-info-prev-value) NEW-VALUE OBJECT
Package

defconfig

Methods
Method: config-info-prev-value (CONFIG-INFO-VALUES config-info-values)
Method: (setf config-info-prev-value) NEW-VALUE (CONFIG-INFO-VALUES config-info-values)

holds the value previously assigned to the config-info object. initially the same as default-value

Source

classes.lisp (file)

Generic Function: config-info-tag-list OBJECT
Generic Function: (setf config-info-tag-list) NEW-VALUE OBJECT
Package

defconfig

Methods
Method: config-info-tag-list (CONFIG-INFO-METADATA config-info-metadata)
Method: (setf config-info-tag-list) NEW-VALUE (CONFIG-INFO-METADATA config-info-metadata)

Tags which can be used for finding a config-info object

Source

classes.lisp (file)

Generic Function: database-already-exists-error-key CONDITION
Package

defconfig

Methods
Method: database-already-exists-error-key (CONDITION database-already-exists-error)
Source

conditions.lisp (file)

Generic Function: invalid-coerced-datum-error-value CONDITION
Package

defconfig

Methods
Method: invalid-coerced-datum-error-value (CONDITION invalid-coerced-datum-error)
Source

conditions.lisp (file)

Generic Function: invalid-datum-error-config-object CONDITION
Package

defconfig

Methods
Method: invalid-datum-error-config-object (CONDITION invalid-datum-error)
Source

conditions.lisp (file)

Generic Function: invalid-datum-error-place CONDITION
Package

defconfig

Methods
Method: invalid-datum-error-place (CONDITION invalid-datum-error)
Source

conditions.lisp (file)

Generic Function: invalid-datum-error-value CONDITION
Package

defconfig

Methods
Method: invalid-datum-error-value (CONDITION invalid-datum-error)
Source

conditions.lisp (file)

Generic Function: no-config-found-error-db CONDITION
Package

defconfig

Methods
Method: no-config-found-error-db (CONDITION no-config-found-error)
Source

conditions.lisp (file)

Generic Function: no-config-found-error-place CONDITION
Package

defconfig

Methods
Method: no-config-found-error-place (CONDITION no-config-found-error)
Source

conditions.lisp (file)

Generic Function: setv-wrapped-error-condition CONDITION
Generic Function: (setf setv-wrapped-error-condition) NEW-VALUE CONDITION
Package

defconfig

Methods
Method: setv-wrapped-error-condition (CONDITION setv-wrapped-error)
Method: (setf setv-wrapped-error-condition) NEW-VALUE (CONDITION setv-wrapped-error)
Source

conditions.lisp (file)

Generic Function: untrackable-place-error-object CONDITION
Package

defconfig

Methods
Method: untrackable-place-error-object (CONDITION untrackable-place-error)
Source

conditions.lisp (file)

Generic Function: untrackable-place-error-place CONDITION
Package

defconfig

Methods
Method: untrackable-place-error-place (CONDITION untrackable-place-error)
Source

conditions.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.5 Conditions

Condition: with-atomic-setv-internal-error ()
Package

defconfig

Source

conditions.lisp (file)

Direct superclasses

config-error (condition)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.6 Classes

Class: accessor-config-info ()
Package

defconfig

Source

classes.lisp (file)

Direct superclasses
Direct subclasses

config-info (class)

Direct methods
Class: config-info ()
Package

defconfig

Source

classes.lisp (file)

Direct superclasses
Direct methods
Class: config-info-direct-info ()
Package

defconfig

Source

classes.lisp (file)

Direct superclasses

standard-object (class)

Direct subclasses

minimal-config-info (class)

Direct methods
Direct slots
Slot: db

the database that the config info object is housed in.

Type

(or symbol cons)

Initargs

:db

Readers

config-info-db (generic function)

Slot: place

The place which this config info governs.

Type

symbol

Initargs

:place

Readers

config-info-place (generic function)

Class: config-info-functions ()
Package

defconfig

Source

classes.lisp (file)

Direct superclasses

standard-object (class)

Direct subclasses

minimal-config-info (class)

Direct methods
Direct slots
Slot: predicate

The predicate against which valid values are checked

Type

(function (*) boolean)

Initargs

:predicate

Initform

(function identity)

Readers

config-info-predicate (generic function)

Slot: coercer

The function by which invalid datum will attempt to be coerced

Type

(or function null)

Initargs

:coercer

Readers

config-info-coercer (generic function)

Class: config-info-metadata ()
Package

defconfig

Source

classes.lisp (file)

Direct superclasses

standard-object (class)

Direct subclasses

accessor-config-info (class)

Direct methods
Direct slots
Slot: name

The formal name by which this config-info object can be searched for

Initargs

:name

Initform

"unnamed config-info object"

Readers

config-info-name (generic function)

Slot: tags

Tags which can be used for finding a config-info object

Initargs

:tags

Initform

(quote nil)

Readers
Writers

(setf config-info-tag-list) (generic function)

Slot: docstring

The docstring for the place being governed. if a variable it is the same as the variables docstring

Type

(or string null)

Initargs

:documentation

Readers

config-info-documentation (generic function)

Slot: valid-values

An explanation of the valid values and predicate function

Initargs

:valid-values

Readers

config-info-valid-values-description (generic function)

Slot: typespec

When a typespec is provided instead of a validator, this slot will hold it

Readers

config-info-typespec (generic function)

Class: config-info-values ()
Package

defconfig

Source

classes.lisp (file)

Direct superclasses

standard-object (class)

Direct subclasses

config-info (class)

Direct methods
Direct slots
Slot: default-value

The default value of this config-info object

Initargs

:default

Readers

config-info-default-value (generic function)

Slot: prev-value

holds the value previously assigned to the config-info object. initially the same as default-value

Initargs

:previous

Readers
Writers

(setf config-info-prev-value) (generic function)

Class: minimal-config-info ()
Package

defconfig

Source

classes.lisp (file)

Direct superclasses
Direct subclasses

accessor-config-info (class)

Direct methods

Previous: , Up: Internal definitions   [Contents][Index]

5.2.7 Types

Type: defconfig-database ()
Package

defconfig

Source

database.lisp (file)


Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Jump to:   D   F   L  
Index Entry  Section

D
defconfig.asd: The defconfig․asd file
defconfig/access.lisp: The defconfig/access․lisp file
defconfig/classes.lisp: The defconfig/classes․lisp file
defconfig/conditions.lisp: The defconfig/conditions․lisp file
defconfig/database.lisp: The defconfig/database․lisp file
defconfig/defconfig.lisp: The defconfig/defconfig․lisp file
defconfig/macros.lisp: The defconfig/macros․lisp file
defconfig/package.lisp: The defconfig/package․lisp file
defconfig/setv.lisp: The defconfig/setv․lisp file

F
File, Lisp, defconfig.asd: The defconfig․asd file
File, Lisp, defconfig/access.lisp: The defconfig/access․lisp file
File, Lisp, defconfig/classes.lisp: The defconfig/classes․lisp file
File, Lisp, defconfig/conditions.lisp: The defconfig/conditions․lisp file
File, Lisp, defconfig/database.lisp: The defconfig/database․lisp file
File, Lisp, defconfig/defconfig.lisp: The defconfig/defconfig․lisp file
File, Lisp, defconfig/macros.lisp: The defconfig/macros․lisp file
File, Lisp, defconfig/package.lisp: The defconfig/package․lisp file
File, Lisp, defconfig/setv.lisp: The defconfig/setv․lisp file

L
Lisp File, defconfig.asd: The defconfig․asd file
Lisp File, defconfig/access.lisp: The defconfig/access․lisp file
Lisp File, defconfig/classes.lisp: The defconfig/classes․lisp file
Lisp File, defconfig/conditions.lisp: The defconfig/conditions․lisp file
Lisp File, defconfig/database.lisp: The defconfig/database․lisp file
Lisp File, defconfig/defconfig.lisp: The defconfig/defconfig․lisp file
Lisp File, defconfig/macros.lisp: The defconfig/macros․lisp file
Lisp File, defconfig/package.lisp: The defconfig/package․lisp file
Lisp File, defconfig/setv.lisp: The defconfig/setv․lisp file

Jump to:   D   F   L  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   %   (  
A   C   D   F   G   I   L   M   N   P   R   S   T   U   W  
Index Entry  Section

%
%%setv: Internal macros
%%setv-coerced: Internal macros
%%with-config-info: Internal functions
%atomic-setv: Internal macros
%atomic-setv-reset: Internal macros
%fsetv-ensure-validity: Internal functions
%fsetv-get-config-info-object: Internal functions
%psetv: Internal macros
%runtime-atomic-setv: Internal macros
%runtime-atomic-setv-reset: Internal macros
%runtime-setv-with-reset: Internal macros
%setv-ensure-setf: Internal macros
%setv-with-reset: Internal macros
%with-atomic-setv*: Internal macros

(
(setf config-info-prev-value): Internal generic functions
(setf config-info-prev-value): Internal generic functions
(setf config-info-tag-list): Internal generic functions
(setf config-info-tag-list): Internal generic functions
(setf setv-wrapped-error-condition): Internal generic functions
(setf setv-wrapped-error-condition): Internal generic functions

A
add-db-to-plist: Internal functions
atypecase: Internal macros

C
clean-previous-value: Exported generic functions
clean-previous-value: Exported generic functions
clean-previous-value: Exported generic functions
clean-previous-value: Exported generic functions
clean-previous-value: Exported generic functions
config-info-coercer: Exported generic functions
config-info-coercer: Exported generic functions
config-info-db: Exported generic functions
config-info-db: Exported generic functions
config-info-default-value: Exported generic functions
config-info-default-value: Exported generic functions
config-info-documentation: Exported generic functions
config-info-documentation: Exported generic functions
config-info-name: Exported generic functions
config-info-name: Exported generic functions
config-info-place: Exported generic functions
config-info-place: Exported generic functions
config-info-predicate: Exported generic functions
config-info-predicate: Exported generic functions
config-info-prev-value: Internal generic functions
config-info-prev-value: Internal generic functions
config-info-previous-value: Exported generic functions
config-info-previous-value: Exported generic functions
config-info-search-in-db: Internal functions
config-info-search-tags: Internal functions
config-info-tag-list: Internal generic functions
config-info-tag-list: Internal generic functions
config-info-tags: Exported generic functions
config-info-tags: Exported generic functions
config-info-typespec: Exported generic functions
config-info-typespec: Exported generic functions
config-info-valid-values-description: Exported generic functions
config-info-valid-values-description: Exported generic functions

D
database-already-exists-error-key: Internal generic functions
database-already-exists-error-key: Internal generic functions
db-key-exists-p: Internal functions
def-defconfig-db-error-check: Internal functions
defconf-a: Internal macros
defconf-v: Internal macros
defconfig: Exported macros
defconfig-database-p: Internal functions
defconfig-minimal: Exported macros
define-accessor-config: Exported macros
define-defconfig-db: Exported macros
define-min: Internal macros
define-minimal-config: Exported macros
define-variable-config: Exported macros
delete-db: Exported functions
destructuring-keys: Internal macros

F
Function, %%with-config-info: Internal functions
Function, %fsetv-ensure-validity: Internal functions
Function, %fsetv-get-config-info-object: Internal functions
Function, add-db-to-plist: Internal functions
Function, config-info-search-in-db: Internal functions
Function, config-info-search-tags: Internal functions
Function, db-key-exists-p: Internal functions
Function, def-defconfig-db-error-check: Internal functions
Function, defconfig-database-p: Internal functions
Function, delete-db: Exported functions
Function, generate-valid-values-coercer-string: Internal functions
Function, generate-valid-values-predicate-string: Internal functions
Function, generate-vv-string: Internal functions
Function, get-db: Exported functions
Function, get-db-var: Exported functions
Function, getdb: Internal functions
Function, list-dbs: Exported functions
Function, list-of-strings-p: Internal functions
Function, make-config-database: Internal functions
Function, place->config-info: Internal functions
Function, remove-keys: Internal functions
Function, search-configurable-objects: Exported functions
Function, slot-bound-p: Internal functions
Function, tag-configurable-place: Exported functions

G
generate-valid-values-coercer-string: Internal functions
generate-valid-values-predicate-string: Internal functions
generate-vv-string: Internal functions
Generic Function, (setf config-info-prev-value): Internal generic functions
Generic Function, (setf config-info-tag-list): Internal generic functions
Generic Function, (setf setv-wrapped-error-condition): Internal generic functions
Generic Function, clean-previous-value: Exported generic functions
Generic Function, config-info-coercer: Exported generic functions
Generic Function, config-info-db: Exported generic functions
Generic Function, config-info-default-value: Exported generic functions
Generic Function, config-info-documentation: Exported generic functions
Generic Function, config-info-name: Exported generic functions
Generic Function, config-info-place: Exported generic functions
Generic Function, config-info-predicate: Exported generic functions
Generic Function, config-info-prev-value: Internal generic functions
Generic Function, config-info-previous-value: Exported generic functions
Generic Function, config-info-tag-list: Internal generic functions
Generic Function, config-info-tags: Exported generic functions
Generic Function, config-info-typespec: Exported generic functions
Generic Function, config-info-valid-values-description: Exported generic functions
Generic Function, database-already-exists-error-key: Internal generic functions
Generic Function, invalid-coerced-datum-error-value: Internal generic functions
Generic Function, invalid-datum-error-config-object: Internal generic functions
Generic Function, invalid-datum-error-place: Internal generic functions
Generic Function, invalid-datum-error-value: Internal generic functions
Generic Function, no-config-found-error-db: Internal generic functions
Generic Function, no-config-found-error-place: Internal generic functions
Generic Function, reset-computed-place: Exported generic functions
Generic Function, setv-wrapped-error-condition: Internal generic functions
Generic Function, untrackable-place-error-object: Internal generic functions
Generic Function, untrackable-place-error-place: Internal generic functions
get-db: Exported functions
get-db-var: Exported functions
getdb: Internal functions

I
invalid-coerced-datum-error-value: Internal generic functions
invalid-coerced-datum-error-value: Internal generic functions
invalid-datum-error-config-object: Internal generic functions
invalid-datum-error-config-object: Internal generic functions
invalid-datum-error-place: Internal generic functions
invalid-datum-error-place: Internal generic functions
invalid-datum-error-value: Internal generic functions
invalid-datum-error-value: Internal generic functions

L
list-dbs: Exported functions
list-of-strings-p: Internal functions

M
Macro, %%setv: Internal macros
Macro, %%setv-coerced: Internal macros
Macro, %atomic-setv: Internal macros
Macro, %atomic-setv-reset: Internal macros
Macro, %psetv: Internal macros
Macro, %runtime-atomic-setv: Internal macros
Macro, %runtime-atomic-setv-reset: Internal macros
Macro, %runtime-setv-with-reset: Internal macros
Macro, %setv-ensure-setf: Internal macros
Macro, %setv-with-reset: Internal macros
Macro, %with-atomic-setv*: Internal macros
Macro, atypecase: Internal macros
Macro, defconf-a: Internal macros
Macro, defconf-v: Internal macros
Macro, defconfig: Exported macros
Macro, defconfig-minimal: Exported macros
Macro, define-accessor-config: Exported macros
Macro, define-defconfig-db: Exported macros
Macro, define-min: Internal macros
Macro, define-minimal-config: Exported macros
Macro, define-variable-config: Exported macros
Macro, destructuring-keys: Internal macros
Macro, psetv: Exported macros
Macro, reset-place: Exported macros
Macro, setv: Exported macros
Macro, setv-atomic: Internal macros
Macro, with-atomic-setv: Exported macros
Macro, with-atomic-setv*: Exported macros
Macro, with-config-info: Internal macros
Macro, with-runtime-atomic-setv: Internal macros
make-config-database: Internal functions
Method, (setf config-info-prev-value): Internal generic functions
Method, (setf config-info-tag-list): Internal generic functions
Method, (setf setv-wrapped-error-condition): Internal generic functions
Method, clean-previous-value: Exported generic functions
Method, clean-previous-value: Exported generic functions
Method, clean-previous-value: Exported generic functions
Method, clean-previous-value: Exported generic functions
Method, config-info-coercer: Exported generic functions
Method, config-info-db: Exported generic functions
Method, config-info-default-value: Exported generic functions
Method, config-info-documentation: Exported generic functions
Method, config-info-name: Exported generic functions
Method, config-info-place: Exported generic functions
Method, config-info-predicate: Exported generic functions
Method, config-info-prev-value: Internal generic functions
Method, config-info-previous-value: Exported generic functions
Method, config-info-tag-list: Internal generic functions
Method, config-info-tags: Exported generic functions
Method, config-info-typespec: Exported generic functions
Method, config-info-valid-values-description: Exported generic functions
Method, database-already-exists-error-key: Internal generic functions
Method, invalid-coerced-datum-error-value: Internal generic functions
Method, invalid-datum-error-config-object: Internal generic functions
Method, invalid-datum-error-place: Internal generic functions
Method, invalid-datum-error-value: Internal generic functions
Method, no-config-found-error-db: Internal generic functions
Method, no-config-found-error-place: Internal generic functions
Method, reset-computed-place: Exported generic functions
Method, reset-computed-place: Exported generic functions
Method, reset-computed-place: Exported generic functions
Method, reset-computed-place: Exported generic functions
Method, reset-computed-place: Exported generic functions
Method, setv-wrapped-error-condition: Internal generic functions
Method, untrackable-place-error-object: Internal generic functions
Method, untrackable-place-error-place: Internal generic functions

N
no-config-found-error-db: Internal generic functions
no-config-found-error-db: Internal generic functions
no-config-found-error-place: Internal generic functions
no-config-found-error-place: Internal generic functions

P
place->config-info: Internal functions
psetv: Exported macros

R
remove-keys: Internal functions
reset-computed-place: Exported generic functions
reset-computed-place: Exported generic functions
reset-computed-place: Exported generic functions
reset-computed-place: Exported generic functions
reset-computed-place: Exported generic functions
reset-computed-place: Exported generic functions
reset-place: Exported macros

S
search-configurable-objects: Exported functions
setv: Exported macros
setv-atomic: Internal macros
setv-wrapped-error-condition: Internal generic functions
setv-wrapped-error-condition: Internal generic functions
slot-bound-p: Internal functions

T
tag-configurable-place: Exported functions

U
untrackable-place-error-object: Internal generic functions
untrackable-place-error-object: Internal generic functions
untrackable-place-error-place: Internal generic functions
untrackable-place-error-place: Internal generic functions

W
with-atomic-setv: Exported macros
with-atomic-setv*: Exported macros
with-config-info: Internal macros
with-runtime-atomic-setv: Internal macros

Jump to:   %   (  
A   C   D   F   G   I   L   M   N   P   R   S   T   U   W  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   *  
C   D   K   N   O   P   S   T   V  
Index Entry  Section

*
*db-plist*: Internal special variables
*default-db*: Internal special variables
*setv-permissiveness*: Exported special variables

C
coerced-value: Exported conditions
coercer: Internal classes
condition: Exported conditions
config-object: Exported conditions

D
database: Exported conditions
db: Internal classes
default-value: Internal classes
docstring: Internal classes

K
key: Exported conditions

N
name: Internal classes

O
object: Exported conditions

P
place: Exported conditions
place: Internal classes
place-form: Exported conditions
place-form: Exported conditions
predicate: Internal classes
prev-value: Internal classes

S
Slot, coerced-value: Exported conditions
Slot, coercer: Internal classes
Slot, condition: Exported conditions
Slot, config-object: Exported conditions
Slot, database: Exported conditions
Slot, db: Internal classes
Slot, default-value: Internal classes
Slot, docstring: Internal classes
Slot, key: Exported conditions
Slot, name: Internal classes
Slot, object: Exported conditions
Slot, place: Exported conditions
Slot, place: Internal classes
Slot, place-form: Exported conditions
Slot, place-form: Exported conditions
Slot, predicate: Internal classes
Slot, prev-value: Internal classes
Slot, tags: Internal classes
Slot, typespec: Internal classes
Slot, valid-values: Internal classes
Slot, value: Exported conditions
Special Variable, *db-plist*: Internal special variables
Special Variable, *default-db*: Internal special variables
Special Variable, *setv-permissiveness*: Exported special variables

T
tags: Internal classes
typespec: Internal classes

V
valid-values: Internal classes
value: Exported conditions

Jump to:   *  
C   D   K   N   O   P   S   T   V  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   A   C   D   I   M   N   P   S   T   U   W  
Index Entry  Section

A
accessor-config-info: Internal classes

C
Class, accessor-config-info: Internal classes
Class, config-info: Internal classes
Class, config-info-direct-info: Internal classes
Class, config-info-functions: Internal classes
Class, config-info-metadata: Internal classes
Class, config-info-values: Internal classes
Class, minimal-config-info: Internal classes
Condition, config-error: Exported conditions
Condition, database-already-exists-error: Exported conditions
Condition, invalid-coerced-datum-error: Exported conditions
Condition, invalid-datum-error: Exported conditions
Condition, no-bound-default-value-error: Exported conditions
Condition, no-config-found-error: Exported conditions
Condition, not-resettable-place-error: Exported conditions
Condition, setv-wrapped-error: Exported conditions
Condition, untrackable-place-error: Exported conditions
Condition, with-atomic-setv-internal-error: Internal conditions
config-error: Exported conditions
config-info: Internal classes
config-info-direct-info: Internal classes
config-info-functions: Internal classes
config-info-metadata: Internal classes
config-info-values: Internal classes

D
database-already-exists-error: Exported conditions
defconfig: The defconfig system
defconfig: The defconfig package
defconfig-database: Internal types

I
invalid-coerced-datum-error: Exported conditions
invalid-datum-error: Exported conditions

M
minimal-config-info: Internal classes

N
no-bound-default-value-error: Exported conditions
no-config-found-error: Exported conditions
not-resettable-place-error: Exported conditions

P
Package, defconfig: The defconfig package

S
setv-wrapped-error: Exported conditions
System, defconfig: The defconfig system

T
Type, defconfig-database: Internal types

U
untrackable-place-error: Exported conditions

W
with-atomic-setv-internal-error: Internal conditions

Jump to:   A   C   D   I   M   N   P   S   T   U   W