The metacopy Reference Manual

This is the metacopy Reference Manual, version 0.2, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 17:18:55 2024 GMT+0.

Table of Contents


1 Systems

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


1.1 metacopy

Flexible Common Lisp shallow/deep copy mechanism.

Maintainer

Gary Warren King <>

Author

Originally by BBN, modified by EKSL and by Gary Warren King <>

License

MIT Style License

Version

0.2

Dependency

moptilities (system).

Source

metacopy.asd.

Child Components

2 Modules

Modules are listed depth-first from the system components tree.


2.1 metacopy/dev

Source

metacopy.asd.

Parent Component

metacopy (system).

Child Components

2.2 metacopy/website

Source

metacopy.asd.

Parent Component

metacopy (system).

Child Component

source (module).


2.3 metacopy/website/source

Source

metacopy.asd.

Parent Component

website (module).

Child Component

index.lml (file).


3 Files

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


3.1 Lisp


3.1.1 metacopy/metacopy.asd

Source

metacopy.asd.

Parent Component

metacopy (system).

ASDF Systems

metacopy.

Packages

metacopy-system.

Public Interface

3.1.2 metacopy/dev/package.lisp

Source

metacopy.asd.

Parent Component

dev (module).

Packages

metacopy.


3.1.3 metacopy/dev/contextl-integration.lisp

Dependency

package.lisp (file).

Source

metacopy.asd.

Parent Component

dev (module).

Public Interface

define-copy-method (macro).

Internals

define-copy-function (macro).


3.1.4 metacopy/dev/api.lisp

Dependencies
Source

metacopy.asd.

Parent Component

dev (module).

Public Interface
Internals

3.1.5 metacopy/dev/copy.lisp

Dependencies
Source

metacopy.asd.

Parent Component

dev (module).

Public Interface
Internals

3.2 Static


3.2.1 metacopy/dev/notes.text

Source

metacopy.asd.

Parent Component

dev (module).


3.2.2 metacopy/website/source/index.lml

Source

metacopy.asd.

Parent Component

source (module).


4 Packages

Packages are listed by definition order.


4.1 metacopy-system

Source

metacopy.asd.

Use List
  • asdf/interface.
  • common-lisp.
Used By List

metacopy.

Public Interface

4.2 metacopy

Source

package.lisp.

Use List
Public Interface
Internals

5 Definitions

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


5.1 Public Interface


5.1.1 Special variables

Special Variable: *copy-assume-no-circular-lists*
Package

metacopy.

Source

copy.lisp.

Special Variable: *load-with-contextl*

This is t when loading with contextl. You can set this var at runtime to "switch" packages while working with slime (currently needs a pending slime patch).

Package

metacopy-system.

Source

metacopy.asd.


5.1.2 Macros

Macro: defcopy-methods (class &key copy set copy-all set-all)

Put a different face on duplicator-methods’s syntax.

Package

metacopy.

Source

copy.lisp.

Macro: define-copy-method (name args &rest options)

A defmethod, without contextl.

Package

metacopy.

Source

contextl-integration.lisp.

Macro: duplicator-methods ((class-name &key symbol copy-forms?) all-slots slot-forms &optional final-duplicate-forms)
Package

metacopy.

Source

copy.lisp.

Macro: with-slot-copying ((copy-object copy-htable &optional original-object) &body body)
Package

metacopy.

Source

copy.lisp.


5.1.3 Ordinary functions

Function: metacopy-package ()

This is the package in which the metacopy files are read in.

Package

metacopy-system.

Source

metacopy.asd.

Function: metacopy-test-package ()

See metacopy-package.

Package

metacopy-system.

Source

metacopy.asd.


5.1.4 Generic functions

Generic Function: copy-inner (self copy-object copy-htable)

copy the relevant portions of self into copy-object. ok if it calls copy on sub-objects.

Package

metacopy.

Source

api.lisp.

Methods
Method: copy-inner ((original-object standard-object) copy-list copy-htable)
Source

copy.lisp.

Method: copy-inner ((original-list list) copy-list copy-htable)
Source

copy.lisp.

Method: copy-inner ((original-table hash-table) new-table copy-htable)
Source

copy.lisp.

Method: copy-inner ((original array) new-array copy-htable)
Source

copy.lisp.

Method: copy-inner ((original string) new-array copy-htable)
Source

copy.lisp.

Method: copy-inner (self copy-object copy-htable)

default is to do nothing.

Source

copy.lisp.

Generic Function: copy-inner-class (self copy-object copy-htable)

Defined for each component class of an object with mixin COPYABLE-MIXIN. It should setup its slots as appropriate.
This needs to be a seperate method (from COPY-INNER) because it has to be done with a PROGN Method-Combination.

Package

metacopy.

Source

api.lisp.

Method Combination

progn.

Options

:most-specific-last

Methods
Method: copy-inner-class progn ((original-object copyable-mixin) copy-list copy-htable)
Source

copy.lisp.

Generic Function: copy-one (self copy-htable)

returns a fullfledged copy of self, set-up and ready to go.

Package

metacopy.

Source

api.lisp.

Methods
Method: copy-one (original-thing (copy-htable (eql nil)))
Source

copy.lisp.

Method: copy-one (original-thing copy-htable)
Source

copy.lisp.

Method: copy-one ((orig character) copy-htable)
Source

copy.lisp.

Method: copy-one ((original-function function) copy-htable)
Source

copy.lisp.

Method: copy-one ((original-number number) copy-htable)
Source

copy.lisp.

Method: copy-one ((original-symbol symbol) copy-htable)
Source

copy.lisp.

Generic Function: copy-self (self)

return a new, empty version of self

Package

metacopy.

Source

api.lisp.

Methods
Method: copy-self ((self copyable-mixin))
Source

copy.lisp.

Method: copy-self ((original-list list))
Source

copy.lisp.

Method: copy-self ((original hash-table))
Source

copy.lisp.

Method: copy-self ((original array))
Source

copy.lisp.

Method: copy-self ((original string))
Source

copy.lisp.

Method: copy-self (self)
Source

copy.lisp.

Generic Function: copy-slots-slots-to-initialize (self)
Package

metacopy.

Source

api.lisp.

Method Combination

append.

Options

:most-specific-last

Methods
Method: copy-slots-slots-to-initialize append ((self standard-object))
Generic Function: copy-thing (thing)

Copy objects with aribtrarily complex substructure.
Objects are kept track of in a HashTable, so only one copy is made of each. Things which are EQ in the original (i.e. objects, sublists, etc.) come out EQ in the corresponding places in the copy.

Package

metacopy.

Source

api.lisp.

Methods
Method: copy-thing ((original-thing character))
Source

copy.lisp.

Method: copy-thing ((original-thing function))
Source

copy.lisp.

Method: copy-thing ((original-thing number))
Source

copy.lisp.

Method: copy-thing ((original-thing symbol))
Source

copy.lisp.

Method: copy-thing (original-thing)
Source

copy.lisp.

Generic Function: instance-made-for-copying-p (object)
Package

metacopy.

Methods
Method: instance-made-for-copying-p (object)
Source

copy.lisp.


5.1.5 Classes

Class: copyable-mixin

provides method for doing copy that creates a copy on an object. each mixin should provide an copy-inner-class method to copy its slots appropriately.

Package

metacopy.

Source

copy.lisp.

Direct methods

5.2 Internals


5.2.1 Special variables

Special Variable: *duplicate-class-forms-copy-forms?*
Package

metacopy.

Source

copy.lisp.

Special Variable: *instance-for-copy?*
Package

metacopy.

Source

copy.lisp.

Special Variable: *potential-duplicator-methods*
Package

metacopy.

Source

copy.lisp.


5.2.2 Macros

Macro: define-copy-function (name args &rest options)

A defgeneric, without contextl.

Package

metacopy.

Source

contextl-integration.lisp.


5.2.3 Ordinary functions

Function: copy-object (self)
Package

metacopy.

Source

copy.lisp.

Function: copy-set-slot-1 (copy-object slot-name value)
Package

metacopy.

Source

copy.lisp.

Function: copy-slot-1 (copy-object slot-name original-object copy-htable)
Package

metacopy.

Source

copy.lisp.

Function: duplicate-class-forms-copy (symbol class-name all-slots slot-forms)
Package

metacopy.

Source

copy.lisp.

Function: duplicate-class-forms-final-duplicate (symbol class-name final-duplicate-forms copy-forms?)
Package

metacopy.

Source

copy.lisp.

Function: remove-duplicator-methods (class-name)
Package

metacopy.

Source

copy.lisp.


5.2.4 Generic functions

Generic Function: copy-final (self copy)

Last pass to make sure everything is in place.

Package

metacopy.

Source

api.lisp.

Methods
Method: copy-final ((original-object copyable-mixin) copy)
Source

copy.lisp.

Method: copy-final (self copy)

Default is to do nothing.

Source

copy.lisp.

Generic Function: copy-final-class (self copy)

defined for each component class of an object with mixin copyable-mixin. it should setup its slots as appropriate.
this needs to be a seperate method (from copy-final) because it has to be done with a progn method-combination.

Package

metacopy.

Source

api.lisp.

Method Combination

progn.

Options

:most-specific-first

Methods
Method: copy-final-class progn ((original-object copyable-mixin) copy)
Source

copy.lisp.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   C   D   F   G   I   M   R   W  
Index Entry  Section

C
copy-final: Private generic functions
copy-final: Private generic functions
copy-final: Private generic functions
copy-final-class: Private generic functions
copy-final-class: Private generic functions
copy-inner: Public generic functions
copy-inner: Public generic functions
copy-inner: Public generic functions
copy-inner: Public generic functions
copy-inner: Public generic functions
copy-inner: Public generic functions
copy-inner: Public generic functions
copy-inner-class: Public generic functions
copy-inner-class: Public generic functions
copy-object: Private ordinary functions
copy-one: Public generic functions
copy-one: Public generic functions
copy-one: Public generic functions
copy-one: Public generic functions
copy-one: Public generic functions
copy-one: Public generic functions
copy-one: Public generic functions
copy-self: Public generic functions
copy-self: Public generic functions
copy-self: Public generic functions
copy-self: Public generic functions
copy-self: Public generic functions
copy-self: Public generic functions
copy-self: Public generic functions
copy-set-slot-1: Private ordinary functions
copy-slot-1: Private ordinary functions
copy-slots-slots-to-initialize: Public generic functions
copy-slots-slots-to-initialize: Public generic functions
copy-thing: Public generic functions
copy-thing: Public generic functions
copy-thing: Public generic functions
copy-thing: Public generic functions
copy-thing: Public generic functions
copy-thing: Public generic functions

D
defcopy-methods: Public macros
define-copy-function: Private macros
define-copy-method: Public macros
duplicate-class-forms-copy: Private ordinary functions
duplicate-class-forms-final-duplicate: Private ordinary functions
duplicator-methods: Public macros

F
Function, copy-object: Private ordinary functions
Function, copy-set-slot-1: Private ordinary functions
Function, copy-slot-1: Private ordinary functions
Function, duplicate-class-forms-copy: Private ordinary functions
Function, duplicate-class-forms-final-duplicate: Private ordinary functions
Function, metacopy-package: Public ordinary functions
Function, metacopy-test-package: Public ordinary functions
Function, remove-duplicator-methods: Private ordinary functions

G
Generic Function, copy-final: Private generic functions
Generic Function, copy-final-class: Private generic functions
Generic Function, copy-inner: Public generic functions
Generic Function, copy-inner-class: Public generic functions
Generic Function, copy-one: Public generic functions
Generic Function, copy-self: Public generic functions
Generic Function, copy-slots-slots-to-initialize: Public generic functions
Generic Function, copy-thing: Public generic functions
Generic Function, instance-made-for-copying-p: Public generic functions

I
instance-made-for-copying-p: Public generic functions
instance-made-for-copying-p: Public generic functions

M
Macro, defcopy-methods: Public macros
Macro, define-copy-function: Private macros
Macro, define-copy-method: Public macros
Macro, duplicator-methods: Public macros
Macro, with-slot-copying: Public macros
metacopy-package: Public ordinary functions
metacopy-test-package: Public ordinary functions
Method, copy-final: Private generic functions
Method, copy-final: Private generic functions
Method, copy-final-class: Private generic functions
Method, copy-inner: Public generic functions
Method, copy-inner: Public generic functions
Method, copy-inner: Public generic functions
Method, copy-inner: Public generic functions
Method, copy-inner: Public generic functions
Method, copy-inner: Public generic functions
Method, copy-inner-class: Public generic functions
Method, copy-one: Public generic functions
Method, copy-one: Public generic functions
Method, copy-one: Public generic functions
Method, copy-one: Public generic functions
Method, copy-one: Public generic functions
Method, copy-one: Public generic functions
Method, copy-self: Public generic functions
Method, copy-self: Public generic functions
Method, copy-self: Public generic functions
Method, copy-self: Public generic functions
Method, copy-self: Public generic functions
Method, copy-self: Public generic functions
Method, copy-slots-slots-to-initialize: Public generic functions
Method, copy-thing: Public generic functions
Method, copy-thing: Public generic functions
Method, copy-thing: Public generic functions
Method, copy-thing: Public generic functions
Method, copy-thing: Public generic functions
Method, instance-made-for-copying-p: Public generic functions

R
remove-duplicator-methods: Private ordinary functions

W
with-slot-copying: Public macros


A.4 Data types

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

A
api.lisp: The metacopy/dev/api․lisp file

C
Class, copyable-mixin: Public classes
contextl-integration.lisp: The metacopy/dev/contextl-integration․lisp file
copy.lisp: The metacopy/dev/copy․lisp file
copyable-mixin: Public classes

D
dev: The metacopy/dev module

F
File, api.lisp: The metacopy/dev/api․lisp file
File, contextl-integration.lisp: The metacopy/dev/contextl-integration․lisp file
File, copy.lisp: The metacopy/dev/copy․lisp file
File, index.lml: The metacopy/website/source/index․lml file
File, metacopy.asd: The metacopy/metacopy․asd file
File, notes.text: The metacopy/dev/notes․text file
File, package.lisp: The metacopy/dev/package․lisp file

I
index.lml: The metacopy/website/source/index․lml file

M
metacopy: The metacopy system
metacopy: The metacopy package
metacopy-system: The metacopy-system package
metacopy.asd: The metacopy/metacopy․asd file
Module, dev: The metacopy/dev module
Module, source: The metacopy/website/source module
Module, website: The metacopy/website module

N
notes.text: The metacopy/dev/notes․text file

P
Package, metacopy: The metacopy package
Package, metacopy-system: The metacopy-system package
package.lisp: The metacopy/dev/package․lisp file

S
source: The metacopy/website/source module
System, metacopy: The metacopy system

W
website: The metacopy/website module