|
Welcome to the CLIPS++ site!
|
Our goal is to enhance
CLIPS by rewriting it in
C++ while maintaining backward source compatibility for all
current CLIPS programs.
|
The mascot for CLIPS++ is the White Tiger, an endangered species that needs
your help.
|
Version 1.0 feature set :
- Implement wide-character functionality for :
- CLIPS system messages.
- CLIPS data elements (i.e. RETE pattern nodes etc.). Note : CLIPS program elements will not (necessarily) be wide-character.
- Will use the RETE II engine for inferencing. (Improved performance, Backward chaining etc.)
- Multiple CLIPS Workspaces will be available.
- Will use STL where appropriate.
- Routers store data in one of two media :
- Memory-based : All data will be stored in a string(s).
- File-based : All data will be stored in a file. All file I/O operations for routers will be replaced with
iostream
equivalents.
- Memory mapped file option for Workspace data.
A list of Objects that will form the basis for CLIPS++ is in progress
Potential future features :
- ADO Recordset-based Router. All data will be stored in an ADO recordset with an interface similiar to the current CLIPS OCX.
- Ability to access the methods and properties of COM objects through a new construct
(defCOMobject ...)
.
- Develop an interface (IPatternDispatch) that will allow objects to be incorporated directly into active RETE II networks.
- OLE DB provider allowing concurrent SQL access to facts and objects.
- A new contruct called
(defDatabase ...)
. This construct will allow any OLE DB compliant datasource to be part of an LHS expression. LHS Syntax will be similiar to (deftemplate ...)
- Incremental Bload/BSave functionality.
- Import and export Facts and Instances as XML documents using deftemplate or defclass to generate DTD/Schema.
- Option to associate a router to an XML DTD/Schema.
(printout xmldoc1 ?variable)
will generate an AddNode()
type functionality. This will provide some kind of structure to router output.
- New data types Date & Variant.
- New constructs supporting the ideas of :
- enums - For example :
(defEnum CursorType (adOpenForwardOnly 0)
(adOpenKeyset 1)
(adOpenDynamic 2)
(adOpenStatic 3))
- constants - For example :
(defConstant MAX_PATH (Type INTEGER)
(Value 255))
- Embedded VBScript in RHS expresions of rules.
- IDE featuring color coded syntax and interactive debugging ala MS Visual Studio.