The cl-fast-ecs Reference Manual

This is the cl-fast-ecs Reference Manual, version 0.5.1, generated automatically by Declt version 4.0 beta 2 "William Riker" on Sun Dec 15 04:52:27 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

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


2.1 cl-fast-ecs

Blazingly fast Entity-Component-System microframework.

Author

Andrew Kravchuk <>

Home Page

https://gitlab.com/lockie/cl-fast-ecs

License

MIT

Version

0.5.1

Dependencies
  • alexandria (system).
  • trivial-garbage (system).
Source

cl-fast-ecs.asd.

Child Component

src (module).


3 Modules

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


3.1 cl-fast-ecs/src

Source

cl-fast-ecs.asd.

Parent Component

cl-fast-ecs (system).

Child Components

4 Files

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


4.1 Lisp


4.1.1 cl-fast-ecs/cl-fast-ecs.asd

Source

cl-fast-ecs.asd.

Parent Component

cl-fast-ecs (system).

ASDF Systems

cl-fast-ecs.


4.1.2 cl-fast-ecs/src/package.lisp

Source

cl-fast-ecs.asd.

Parent Component

src (module).

Packages

cl-fast-ecs.


4.1.3 cl-fast-ecs/src/components.lisp

Dependencies
Source

cl-fast-ecs.asd.

Parent Component

src (module).

Public Interface
Internals

4.1.4 cl-fast-ecs/src/entities.lisp

Dependencies
Source

cl-fast-ecs.asd.

Parent Component

src (module).

Public Interface
Internals

maybe-check-entity (macro).


4.1.5 cl-fast-ecs/src/hooks.lisp

Source

cl-fast-ecs.asd.

Parent Component

src (module).

Public Interface
Internals

4.1.6 cl-fast-ecs/src/index.lisp

Dependency

storage.lisp (file).

Source

cl-fast-ecs.asd.

Parent Component

src (module).

Internals

4.1.7 cl-fast-ecs/src/storage.lisp

Dependency

hooks.lisp (file).

Source

cl-fast-ecs.asd.

Parent Component

src (module).

Public Interface
Internals

4.1.8 cl-fast-ecs/src/systems.lisp

Dependencies
Source

cl-fast-ecs.asd.

Parent Component

src (module).

Public Interface
Internals

5 Packages

Packages are listed by definition order.


5.1 cl-fast-ecs

**NOTE: this software is of alpha quality, and the API is
subject to change.**

‘cl-fast-ecs‘ is a Common Lisp library providing an
implementation of the Entity-Component-System pattern, primarily focused
on speed and interactive development.

ECS is an architectural data-oriented design pattern that allows for the effective processing of a large number of in-game objects while keeping the code and data separated. This provides flexibility in the way that game objects are built at runtime.

NOTE: to get the maximum performance, but loose the ability to interactively redefine components in the storage, add ‘:ECS-UNSAFE‘ keyword into ‘*FEATURES*‘ before loading the library.

Source

package.lisp.

Nickname

ecs

Use List

common-lisp.

Public Interface
Internals

6 Definitions

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


6.1 Public Interface


6.1.1 Special variables

Special Variable: *component-defined-hook*

Called when a new component is defined with ‘DEFCOMPONENT‘ macro. Arguments for the call are the index in the component registry and the constructor function for component storage (not to be called directly by user).

See ‘HOOK-UP‘.

Package

cl-fast-ecs.

Source

components.lisp.

Special Variable: *component-redefined-hook*

Called when an existing component is redefined with ‘DEFCOMPONENT‘ macro. Arguments for the call are the index in the component registry and the constructor function for component storage (not to be called directly by user).

See ‘HOOK-UP‘.

Package

cl-fast-ecs.

Source

components.lisp.

Special Variable: *component-storage-grown-hook*

Called after the component storate capacity is increased due to the component being added to the new entity. Arguments for the call are the index in the component registry and the new storage capacity.

Note: this is a good place to call for a full GC cycle to collect old storage arrays.

See ‘HOOK-UP‘.

Package

cl-fast-ecs.

Source

components.lisp.

Special Variable: *entity-deleting-hook*

Called before deleting an entity. An argument for the call is the entity about to be deleted.

Note: this is a perfect place to delete entity’s children when implementing parent/child relationships.

See also ‘DELETE-ENTITY‘, ‘HOOK-UP‘.

Package

cl-fast-ecs.

Source

entities.lisp.

Special Variable: *entity-storage-grown-hook*

Called after the entity storate capacity is increased due to new entity being added. Argument for the call is the new storage capacity.

Note: this is a good place to call for a full GC cycle to collect old storage arrays.

See ‘HOOK-UP‘.

Package

cl-fast-ecs.

Source

entities.lisp.

Special Variable: *storage*

Global storage instance to be used by virtually all library functions.

NOTE: it is not bound to any value initially.

See also ‘BIND-STORAGE‘.

Package

cl-fast-ecs.

Source

storage.lisp.


6.1.2 Macros

Macro: defcomponent (name* &rest slots*)

Defines component structure with ‘NAME‘ and ‘SLOTS‘, allowing optional docstring, just like ‘DEFSTRUCT‘.

There’s extra keyword argument ‘:INDEX‘ to the slot definition, which, if set to symbol, creates a hash table-based index for that slot allowing
fast (amort. *O(1)*) lookups in form of "which set of entities have this
exact slot value"; that might come in handy when implementing parent/child or other entity relationships. The downside of such index is that component add/delete/update operations take a little bit longer, and addition can trigger expensive table rehashing.

Additionally, when ‘:UNIQUE‘ is set to ‘T‘, such index ensures that entities and given slot values map 1 to 1, at least in value’s ‘SXHASH‘ sense. This might prove valuable when implementing entity names.

To be called from a top-level. Allows redefinition of component with the same ‘NAME‘ but different set of ‘SLOT‘s; all necessary storage will be properly reallocated.

This macro defines a following set of operations for given ‘NAME‘ *name*:

* an internal structure called ‘name-SOA‘ with its required internal machinery; * a constant ‘+name-COMPONENT-INDEX‘ to reference component data within a storage; * a component data accessors ‘name-slotName‘ and
‘(SETF name-slotName)‘ for every slot on a component, with *O(1)*
complexity (their usage is discouraged though because of poor caching performance, in favour of defining a new system with ‘DEFSYSTEM‘);
* a component constructor aptly named ‘MAKE-name‘, which adds the component being defined to the given ‘ENTITY‘, with *O(k)* complexity, where *k* is the number of slots on the component;
* specialization of ‘MAKE-COMPONENT‘ generic on a component being defined;
* a predicate called ‘HAS-name-P‘ testing whether given ‘ENTITY‘ has the component being defined, with *O(1)* complexity;
* a component destructor called ‘DELETE-name‘, removing the component being defined from the given ‘ENTITY‘ in *O(k)* complexity,where *k* is the number of slots on the component;
* a convenience macro ‘WITH-name‘ akin to ‘WITH-SLOTS‘;
* an upsert operator ‘ASSIGN-name‘ which first ensures the component exists
on given entity and then sets its values according to given keyword arguments, but keeps slots that weren’t specified to their previous values;
* a ‘REPLACE-name‘ function which copies the component slot values from one given entity to another;
* a ‘name-COUNT‘ helper function with no arguments which returns the current count of entities having this component;
* some internal helper macros;
* if ‘:INDEX‘ if set to a symbol for any slot, the function with the name denoted by that symbol is defined, taking slot value as an argument and returning the list of entities having such slot value;
* if ‘:UNIQUE‘ is specified and set to ‘T‘ in addition to ‘:INDEX‘, the index function returns a single entity having given slot value, or raises a condition if there’s no such entity. If the ‘:MISSING-ERROR-P‘ keyword argument to that function is ‘NIL‘, no condition is raised, but negative entity is returned instead.

Also runs hook ‘*COMPONENT-DEFINED-HOOK*‘ or ‘*COMPONENT-REDEFINED-HOOK*‘ when called, depending on circumstances.

Package

cl-fast-ecs.

Source

components.lisp.

Macro: define-component (name &rest slots)

An alias for ‘DEFCOMPONENT‘.

Package

cl-fast-ecs.

Source

components.lisp.

Macro: define-system (name (&key components-ro components-rw components-no arguments initially finally when enable with) &body body)

An alias for ‘DEFSYSTEM‘.

Package

cl-fast-ecs.

Source

systems.lisp.

Macro: defsystem (name (&key components-ro components-rw components-no arguments initially finally when enable with) &body body)

Defines a system with a given ‘NAME‘ and component sets ‘COMPONENTS-RO‘ and ‘COMPONENTS-RW‘ with read-only and read-write access to component slots, respectively. ‘COMPONENTS-NO‘ defines a list of components that should not appear on entities processed by the system. ‘ARGUMENTS‘ is a two-list of the keyword arguments the system expects to be passed via ‘RUN-SYSTEMS‘, just like in ‘FTYPE‘ declaration.

Can be called from a top-level or embedded into other form. Allows redefinition of system with the same ‘NAME‘ but different ‘BODY‘ or set of components.

Note that requested components should be defined with ‘DEFCOMPONENT‘ before defining the system.

The ‘BODY‘ of forms (with optional docstring) would be run for every entity containing all of the components from the given set, having the following bindings:

* ‘ENTITY‘ — the entity being processed;
* ‘ComponentName-SlotName‘ for every slot of every component specified.

The forms in ‘BODY‘ are enclosed in block named ‘CURRENT-ENTITY‘, so the processing could be skipped to the next entity by calling
‘(RETURN-FROM CURRENT-ENTITY)‘.

The ‘INITIALLY‘ form would be evaluated before the entities loop, and the ‘FINALLY‘ form would be evaluated after the loop and its value would be returned from the system.

The ‘WHEN‘ form is evaluated every entity loop iteration to check if that entity should be processed or not.

The ‘ENABLE‘ form is evaluated before the entity loop to check if the entire loop needs to run or not.

The ‘WITH‘ form, having lambda list ‘(VARS &KEY OF-TYPE =)‘, allows to initialize the local variables once before the loop starts. The ‘VARS‘ and ‘OF-TYPE‘ could be the single symbol or the list, and in latter case the required ‘=‘ argument should be mutliple values.

See also ‘RUN-SYSTEMS‘, ‘DELETE-SYSTEM‘.

Package

cl-fast-ecs.

Source

systems.lisp.

Macro: hook-up (hook fn)

Hooks up the function ‘FN‘ on the ‘HOOK‘.

Complexity: *O(m)*, where *m* is the number of functions on a given hook.

See also ‘UNHOOK‘.

Package

cl-fast-ecs.

Source

hooks.lisp.

Macro: unhook (hook fn)

Unhooks the function ‘FN‘ from the ‘HOOK‘.

If the function wasn’t registered with ‘HOOK-UP‘ on a given hook, this function has no effect.

Complexity: *O(m)*, where *m* is the number of functions on a given hook.

Package

cl-fast-ecs.

Source

hooks.lisp.


6.1.3 Compiler macros

Compiler Macro: make-object (spec)
Package

cl-fast-ecs.

Source

entities.lisp.


6.1.4 Ordinary functions

Function: bind-storage (&key initial-allocated)

Binds global variable ‘*STORAGE*‘ to the newly created storage instance.

See also ‘MAKE-STORAGE‘.

Package

cl-fast-ecs.

Source

storage.lisp.

Function: delete-entity (entity)

Delete given ‘ENTITY‘ and all of its components in the order they’ve been defined with DEFCOMPONENT.

Complexity: amortized *O(m + log p)*, where *m* is the number of defined components, and *p* is the number of deleted entities so far.

Package

cl-fast-ecs.

Source

entities.lisp.

Function: delete-system (name)

Deletes system identified by ‘NAME‘ (either string, symbol or keyword) that was previously defined with ‘DEFSYSTEM‘. Throws an error if there’s no system with given name.

Package

cl-fast-ecs.

Source

systems.lisp.

Function: entity-valid-p (entity)

Return ‘T‘ if entity is valid.

Complexity: *O(1)*.

Package

cl-fast-ecs.

Source

entities.lisp.

Function: make-entity ()

Creates and returns a new componentless entity.

Complexity: amortized *O(1)*.

See also ‘DELETE-ENTITY‘.

Package

cl-fast-ecs.

Source

entities.lisp.

Function: make-object (spec)

Creates and returns a new object (that is, an entity with a set of components) following specification ‘SPEC‘ structured as follows:

“‘
’((:component-name1 :component-slot1 "value1" :component-slot2 2.0) (:component-name2 :component-slot 42)
;; ...
)
“‘

Complexity: *O(m)*, where *m* is the number of components in the given ‘SPEC‘.

Not recommended for using in a tight loops such as systems, see ‘DEFCOMPONENT‘ documentation for alternatives.

For a technical reasons, the count of component specifiers in ‘SPEC‘ should not exceed 4000 (which is more than enough for any practical usage).

See also ‘MAKE-ENTITY‘, ‘DELETE-ENTITY‘.

Package

cl-fast-ecs.

Source

entities.lisp.

Function: make-storage (&key initial-allocated)

Creates and returns a new storage instance.

Optional ‘INITIAL-ALLOCATED‘ argument sets the initial count of pre-allocated entities and defaults to 32.

See also ‘BIND-STORAGE‘.

Package

cl-fast-ecs.

Source

storage.lisp.

Function: print-entity (entity &optional stream)

Prints given ‘ENTITY‘ to the ‘STREAM‘ in a way that is compatible with ‘MAKE-OBJECT‘. To be used in debugging scenarios.

Package

cl-fast-ecs.

Source

entities.lisp.

Function: run-systems (&rest arguments)

Runs all of the systems registered with ‘DEFSYSTEM‘ with given optional keyword ‘ARGUMENTS‘.

Package

cl-fast-ecs.

Source

systems.lisp.

Function: system-exists-p (name)

Returns generalized boolean corresponding to system with given ‘NAME‘ (either string, symbol or keyword); that is, either ‘NIL‘ or the actual system function.

Package

cl-fast-ecs.

Source

systems.lisp.


6.1.5 Generic functions

Generic Function: delete-component (index entity)

Deletes a compionent on a given ‘ENTITY‘ in generic fashion.

Not recommended for using in a tight loops such as systems, see ‘DEFCOMPONENT‘ documentation for alternatives.

Package

cl-fast-ecs.

Source

components.lisp.

Generic Function: make-component (index entity &key &allow-other-keys)

Create a component on a given ‘ENTITY‘ in generic fashion.

Not recommended for using in a tight loops such as systems, see ‘DEFCOMPONENT‘ documentation for alternatives.

Package

cl-fast-ecs.

Source

components.lisp.

Generic Function: print-component (index entity &optional stream)

Prints component data to the given ‘STREAM‘.

See ‘PRINT-ENTITY‘.

Package

cl-fast-ecs.

Source

components.lisp.


6.1.6 Types

Type: entity ()

An entity type, basically just a ‘FIXNUM‘.

Package

cl-fast-ecs.

Source

storage.lisp.


6.2 Internals


6.2.1 Special variables

Special Variable: *component-registry*
Package

cl-fast-ecs.

Source

components.lisp.

Special Variable: *component-registry-length*
Package

cl-fast-ecs.

Source

components.lisp.

Special Variable: *system-bitmap-rebuilders*
Package

cl-fast-ecs.

Source

systems.lisp.

Special Variable: *system-registry*
Package

cl-fast-ecs.

Source

systems.lisp.


6.2.2 Macros

Macro: adjust-array* (array size &key element-type initial-element)

Re-creates array with a new size, keeping it simple.

Package

cl-fast-ecs.

Source

hooks.lisp.

Macro: defhook (name &key documentation)
Package

cl-fast-ecs.

Source

hooks.lisp.

Macro: index-bucket (index (&rest values))
Package

cl-fast-ecs.

Source

index.lisp.

Macro: index-delete (index entity (&rest values))
Package

cl-fast-ecs.

Source

index.lisp.

Macro: index-enumerate (index (&rest data) (&rest values) entity &body body)
Package

cl-fast-ecs.

Source

index.lisp.

Macro: index-insert (index (&rest data) entity (&rest values) unique)
Package

cl-fast-ecs.

Source

index.lisp.

Macro: index-lookup (index (&rest data) (&rest values) &optional count start)
Package

cl-fast-ecs.

Source

index.lisp.

Macro: index-lookup-1 (index (&rest data) (&rest values))
Package

cl-fast-ecs.

Source

index.lisp.

Macro: index-maybe-grow (index count (&rest data) exists min-entity max-entity)
Package

cl-fast-ecs.

Source

index.lisp.

Macro: maybe-check-entity (entity)
Package

cl-fast-ecs.

Source

entities.lisp.

Macro: values-equal (entity data values)
Package

cl-fast-ecs.

Source

index.lisp.


6.2.3 Ordinary functions

Function: %accessor-decls (name index-var-name slot-names slot-types slot-docs slot-index slot-unique composite-index-name composite-index-slots composite-index-unique)
Package

cl-fast-ecs.

Source

components.lisp.

Function: %composite-index-accessor-decls (name struct-name slots unique slot-names slot-defaults slot-types)
Package

cl-fast-ecs.

Source

components.lisp.

Function: %ctor-decl (name index-var-name slot-names slot-defaults slot-types slot-index slot-unique composite-index-name composite-index-slots composite-index-unique)
Package

cl-fast-ecs.

Source

components.lisp.

Function: %dtor-decl (name index-var-name slot-names slot-defaults slot-types finalize slot-index composite-index-name composite-index-slots)
Package

cl-fast-ecs.

Source

components.lisp.

Function: %index-accessor-decls (component-name index-var-name struct-name name type index unique)
Package

cl-fast-ecs.

Source

components.lisp.

Function: %make-storage (&key entities-count entities-allocated deleted-entities deleted-entities-count component-storages component-created-bits component-removed-bits)
Package

cl-fast-ecs.

Source

storage.lisp.

Function: %non-unique-error (name values slots)
Package

cl-fast-ecs.

Source

components.lisp.

Function: %rebuild-entities-bitmap (entities-bitmap component-indices component-no-indices)
Package

cl-fast-ecs.

Source

systems.lisp.

Function: %soa-decl (name documentation slot-names slot-defaults slot-types slot-index composite-index-name)
Package

cl-fast-ecs.

Source

components.lisp.

Function: %update-composite-index (name slot soa value slot-names slot-types composite-index-name composite-index-slots composite-index-unique)
Package

cl-fast-ecs.

Source

components.lisp.

Function: %update-index (name slot soa data value index unique)
Package

cl-fast-ecs.

Source

components.lisp.

Function: %with-macro-decl (name index-var-name slot-names slot-types slot-index slot-unique composite-index-name composite-index-slots composite-index-unique)
Package

cl-fast-ecs.

Source

components.lisp.

Function: binary-search (data value greater &key start end)
Package

cl-fast-ecs.

Source

index.lisp.

Reader: component-soa-allocated (instance)
Writer: (setf component-soa-allocated) (instance)
Package

cl-fast-ecs.

Source

storage.lisp.

Target Slot

allocated.

Reader: component-soa-count (instance)
Writer: (setf component-soa-count) (instance)
Package

cl-fast-ecs.

Source

storage.lisp.

Target Slot

count.

Reader: component-soa-exists (instance)
Writer: (setf component-soa-exists) (instance)
Package

cl-fast-ecs.

Source

storage.lisp.

Target Slot

exists.

Reader: component-soa-max-entity (instance)
Writer: (setf component-soa-max-entity) (instance)
Package

cl-fast-ecs.

Source

storage.lisp.

Target Slot

max-entity.

Reader: component-soa-min-entity (instance)
Writer: (setf component-soa-min-entity) (instance)
Package

cl-fast-ecs.

Source

storage.lisp.

Target Slot

min-entity.

Reader: component-soa-slots (instance)
Writer: (setf component-soa-slots) (instance)
Package

cl-fast-ecs.

Source

storage.lisp.

Target Slot

slots.

Function: copy-storage (instance)
Package

cl-fast-ecs.

Source

storage.lisp.

Function: make-component-soa (&key allocated exists min-entity max-entity count slots)
Package

cl-fast-ecs.

Source

storage.lisp.

Function: new-capacity (current-capacity)
Package

cl-fast-ecs.

Source

index.lisp.

Function: run-hook (hook &rest args)
Package

cl-fast-ecs.

Source

hooks.lisp.

Reader: storage-component-created-bits (instance)
Writer: (setf storage-component-created-bits) (instance)
Package

cl-fast-ecs.

Source

storage.lisp.

Target Slot

component-created-bits.

Reader: storage-component-removed-bits (instance)
Writer: (setf storage-component-removed-bits) (instance)
Package

cl-fast-ecs.

Source

storage.lisp.

Target Slot

component-removed-bits.

Reader: storage-component-storages (instance)
Writer: (setf storage-component-storages) (instance)
Package

cl-fast-ecs.

Source

storage.lisp.

Target Slot

component-storages.

Reader: storage-deleted-entities (instance)
Writer: (setf storage-deleted-entities) (instance)
Package

cl-fast-ecs.

Source

storage.lisp.

Target Slot

deleted-entities.

Reader: storage-deleted-entities-count (instance)
Writer: (setf storage-deleted-entities-count) (instance)
Package

cl-fast-ecs.

Source

storage.lisp.

Target Slot

deleted-entities-count.

Reader: storage-entities-allocated (instance)
Writer: (setf storage-entities-allocated) (instance)
Package

cl-fast-ecs.

Source

storage.lisp.

Target Slot

entities-allocated.

Reader: storage-entities-count (instance)
Writer: (setf storage-entities-count) (instance)
Package

cl-fast-ecs.

Source

storage.lisp.

Target Slot

entities-count.

Function: storage-p (object)
Package

cl-fast-ecs.

Source

storage.lisp.


6.2.4 Structures

Structure: component-soa
Package

cl-fast-ecs.

Source

storage.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: allocated
Type

alexandria:array-length

Initform

0

Readers

component-soa-allocated.

Writers

(setf component-soa-allocated).

Slot: exists
Type

simple-bit-vector

Readers

component-soa-exists.

Writers

(setf component-soa-exists).

Slot: min-entity
Type

cl-fast-ecs:entity

Initform

array-dimension-limit

Readers

component-soa-min-entity.

Writers

(setf component-soa-min-entity).

Slot: max-entity
Type

cl-fast-ecs:entity

Initform

-1

Readers

component-soa-max-entity.

Writers

(setf component-soa-max-entity).

Slot: count
Package

common-lisp.

Type

alexandria:array-length

Initform

0

Readers

component-soa-count.

Writers

(setf component-soa-count).

Slot: slots
Type

hash-table

Initform

(make-hash-table :test (function eq))

Readers

component-soa-slots.

Writers

(setf component-soa-slots).

Structure: storage
Package

cl-fast-ecs.

Source

storage.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: entities-count
Type

alexandria:array-length

Initform

0

Readers

storage-entities-count.

Writers

(setf storage-entities-count).

Slot: entities-allocated
Type

alexandria:array-length

Initform

0

Readers

storage-entities-allocated.

Writers

(setf storage-entities-allocated).

Slot: deleted-entities
Type

(simple-array cl-fast-ecs:entity (*))

Readers

storage-deleted-entities.

Writers

(setf storage-deleted-entities).

Slot: deleted-entities-count
Type

alexandria:array-length

Initform

0

Readers

storage-deleted-entities-count.

Writers

(setf storage-deleted-entities-count).

Slot: component-storages
Type

(simple-array (or cl-fast-ecs::component-soa null) (*))

Readers

storage-component-storages.

Writers

(setf storage-component-storages).

Slot: component-created-bits
Type

simple-bit-vector

Readers

storage-component-created-bits.

Writers

(setf storage-component-created-bits).

Slot: component-removed-bits
Type

simple-bit-vector

Readers

storage-component-removed-bits.

Writers

(setf storage-component-removed-bits).


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   %   (  
A   B   C   D   E   F   G   H   I   M   N   P   R   S   U   V  
Index Entry  Section

%
%accessor-decls: Private ordinary functions
%composite-index-accessor-decls: Private ordinary functions
%ctor-decl: Private ordinary functions
%dtor-decl: Private ordinary functions
%index-accessor-decls: Private ordinary functions
%make-storage: Private ordinary functions
%non-unique-error: Private ordinary functions
%rebuild-entities-bitmap: Private ordinary functions
%soa-decl: Private ordinary functions
%update-composite-index: Private ordinary functions
%update-index: Private ordinary functions
%with-macro-decl: Private ordinary functions

(
(setf component-soa-allocated): Private ordinary functions
(setf component-soa-count): Private ordinary functions
(setf component-soa-exists): Private ordinary functions
(setf component-soa-max-entity): Private ordinary functions
(setf component-soa-min-entity): Private ordinary functions
(setf component-soa-slots): Private ordinary functions
(setf storage-component-created-bits): Private ordinary functions
(setf storage-component-removed-bits): Private ordinary functions
(setf storage-component-storages): Private ordinary functions
(setf storage-deleted-entities): Private ordinary functions
(setf storage-deleted-entities-count): Private ordinary functions
(setf storage-entities-allocated): Private ordinary functions
(setf storage-entities-count): Private ordinary functions

A
adjust-array*: Private macros

B
binary-search: Private ordinary functions
bind-storage: Public ordinary functions

C
Compiler Macro, make-object: Public compiler macros
component-soa-allocated: Private ordinary functions
component-soa-count: Private ordinary functions
component-soa-exists: Private ordinary functions
component-soa-max-entity: Private ordinary functions
component-soa-min-entity: Private ordinary functions
component-soa-slots: Private ordinary functions
copy-storage: Private ordinary functions

D
defcomponent: Public macros
defhook: Private macros
define-component: Public macros
define-system: Public macros
defsystem: Public macros
delete-component: Public generic functions
delete-entity: Public ordinary functions
delete-system: Public ordinary functions

E
entity-valid-p: Public ordinary functions

F
Function, %accessor-decls: Private ordinary functions
Function, %composite-index-accessor-decls: Private ordinary functions
Function, %ctor-decl: Private ordinary functions
Function, %dtor-decl: Private ordinary functions
Function, %index-accessor-decls: Private ordinary functions
Function, %make-storage: Private ordinary functions
Function, %non-unique-error: Private ordinary functions
Function, %rebuild-entities-bitmap: Private ordinary functions
Function, %soa-decl: Private ordinary functions
Function, %update-composite-index: Private ordinary functions
Function, %update-index: Private ordinary functions
Function, %with-macro-decl: Private ordinary functions
Function, (setf component-soa-allocated): Private ordinary functions
Function, (setf component-soa-count): Private ordinary functions
Function, (setf component-soa-exists): Private ordinary functions
Function, (setf component-soa-max-entity): Private ordinary functions
Function, (setf component-soa-min-entity): Private ordinary functions
Function, (setf component-soa-slots): Private ordinary functions
Function, (setf storage-component-created-bits): Private ordinary functions
Function, (setf storage-component-removed-bits): Private ordinary functions
Function, (setf storage-component-storages): Private ordinary functions
Function, (setf storage-deleted-entities): Private ordinary functions
Function, (setf storage-deleted-entities-count): Private ordinary functions
Function, (setf storage-entities-allocated): Private ordinary functions
Function, (setf storage-entities-count): Private ordinary functions
Function, binary-search: Private ordinary functions
Function, bind-storage: Public ordinary functions
Function, component-soa-allocated: Private ordinary functions
Function, component-soa-count: Private ordinary functions
Function, component-soa-exists: Private ordinary functions
Function, component-soa-max-entity: Private ordinary functions
Function, component-soa-min-entity: Private ordinary functions
Function, component-soa-slots: Private ordinary functions
Function, copy-storage: Private ordinary functions
Function, delete-entity: Public ordinary functions
Function, delete-system: Public ordinary functions
Function, entity-valid-p: Public ordinary functions
Function, make-component-soa: Private ordinary functions
Function, make-entity: Public ordinary functions
Function, make-object: Public ordinary functions
Function, make-storage: Public ordinary functions
Function, new-capacity: Private ordinary functions
Function, print-entity: Public ordinary functions
Function, run-hook: Private ordinary functions
Function, run-systems: Public ordinary functions
Function, storage-component-created-bits: Private ordinary functions
Function, storage-component-removed-bits: Private ordinary functions
Function, storage-component-storages: Private ordinary functions
Function, storage-deleted-entities: Private ordinary functions
Function, storage-deleted-entities-count: Private ordinary functions
Function, storage-entities-allocated: Private ordinary functions
Function, storage-entities-count: Private ordinary functions
Function, storage-p: Private ordinary functions
Function, system-exists-p: Public ordinary functions

G
Generic Function, delete-component: Public generic functions
Generic Function, make-component: Public generic functions
Generic Function, print-component: Public generic functions

H
hook-up: Public macros

I
index-bucket: Private macros
index-delete: Private macros
index-enumerate: Private macros
index-insert: Private macros
index-lookup: Private macros
index-lookup-1: Private macros
index-maybe-grow: Private macros

M
Macro, adjust-array*: Private macros
Macro, defcomponent: Public macros
Macro, defhook: Private macros
Macro, define-component: Public macros
Macro, define-system: Public macros
Macro, defsystem: Public macros
Macro, hook-up: Public macros
Macro, index-bucket: Private macros
Macro, index-delete: Private macros
Macro, index-enumerate: Private macros
Macro, index-insert: Private macros
Macro, index-lookup: Private macros
Macro, index-lookup-1: Private macros
Macro, index-maybe-grow: Private macros
Macro, maybe-check-entity: Private macros
Macro, unhook: Public macros
Macro, values-equal: Private macros
make-component: Public generic functions
make-component-soa: Private ordinary functions
make-entity: Public ordinary functions
make-object: Public compiler macros
make-object: Public ordinary functions
make-storage: Public ordinary functions
maybe-check-entity: Private macros

N
new-capacity: Private ordinary functions

P
print-component: Public generic functions
print-entity: Public ordinary functions

R
run-hook: Private ordinary functions
run-systems: Public ordinary functions

S
storage-component-created-bits: Private ordinary functions
storage-component-removed-bits: Private ordinary functions
storage-component-storages: Private ordinary functions
storage-deleted-entities: Private ordinary functions
storage-deleted-entities-count: Private ordinary functions
storage-entities-allocated: Private ordinary functions
storage-entities-count: Private ordinary functions
storage-p: Private ordinary functions
system-exists-p: Public ordinary functions

U
unhook: Public macros

V
values-equal: Private macros


A.3 Variables

Jump to:   *  
A   C   D   E   M   S  
Index Entry  Section

*
*component-defined-hook*: Public special variables
*component-redefined-hook*: Public special variables
*component-registry*: Private special variables
*component-registry-length*: Private special variables
*component-storage-grown-hook*: Public special variables
*entity-deleting-hook*: Public special variables
*entity-storage-grown-hook*: Public special variables
*storage*: Public special variables
*system-bitmap-rebuilders*: Private special variables
*system-registry*: Private special variables

A
allocated: Private structures

C
component-created-bits: Private structures
component-removed-bits: Private structures
component-storages: Private structures
count: Private structures

D
deleted-entities: Private structures
deleted-entities-count: Private structures

E
entities-allocated: Private structures
entities-count: Private structures
exists: Private structures

M
max-entity: Private structures
min-entity: Private structures

S
Slot, allocated: Private structures
Slot, component-created-bits: Private structures
Slot, component-removed-bits: Private structures
Slot, component-storages: Private structures
Slot, count: Private structures
Slot, deleted-entities: Private structures
Slot, deleted-entities-count: Private structures
Slot, entities-allocated: Private structures
Slot, entities-count: Private structures
Slot, exists: Private structures
Slot, max-entity: Private structures
Slot, min-entity: Private structures
Slot, slots: Private structures
slots: Private structures
Special Variable, *component-defined-hook*: Public special variables
Special Variable, *component-redefined-hook*: Public special variables
Special Variable, *component-registry*: Private special variables
Special Variable, *component-registry-length*: Private special variables
Special Variable, *component-storage-grown-hook*: Public special variables
Special Variable, *entity-deleting-hook*: Public special variables
Special Variable, *entity-storage-grown-hook*: Public special variables
Special Variable, *storage*: Public special variables
Special Variable, *system-bitmap-rebuilders*: Private special variables
Special Variable, *system-registry*: Private special variables


A.4 Data types

Jump to:   C   E   F   H   I   M   P   S   T  
Index Entry  Section

C
cl-fast-ecs: The cl-fast-ecs system
cl-fast-ecs: The cl-fast-ecs package
cl-fast-ecs.asd: The cl-fast-ecs/cl-fast-ecs․asd file
component-soa: Private structures
components.lisp: The cl-fast-ecs/src/components․lisp file

E
entities.lisp: The cl-fast-ecs/src/entities․lisp file
entity: Public types

F
File, cl-fast-ecs.asd: The cl-fast-ecs/cl-fast-ecs․asd file
File, components.lisp: The cl-fast-ecs/src/components․lisp file
File, entities.lisp: The cl-fast-ecs/src/entities․lisp file
File, hooks.lisp: The cl-fast-ecs/src/hooks․lisp file
File, index.lisp: The cl-fast-ecs/src/index․lisp file
File, package.lisp: The cl-fast-ecs/src/package․lisp file
File, storage.lisp: The cl-fast-ecs/src/storage․lisp file
File, systems.lisp: The cl-fast-ecs/src/systems․lisp file

H
hooks.lisp: The cl-fast-ecs/src/hooks․lisp file

I
index.lisp: The cl-fast-ecs/src/index․lisp file

M
Module, src: The cl-fast-ecs/src module

P
Package, cl-fast-ecs: The cl-fast-ecs package
package.lisp: The cl-fast-ecs/src/package․lisp file

S
src: The cl-fast-ecs/src module
storage: Private structures
storage.lisp: The cl-fast-ecs/src/storage․lisp file
Structure, component-soa: Private structures
Structure, storage: Private structures
System, cl-fast-ecs: The cl-fast-ecs system
systems.lisp: The cl-fast-ecs/src/systems․lisp file

T
Type, entity: Public types