For those who may not be aware, CLIPS is an open source expert system (technically, a rule engine) which provides a C API for internal function extension as well as embedding in C/C++ applications. See [login to view URL]
Although this project does not require any knowledge of CLIPS (or expert systems), it requires experience with:
(i). C/C++ development on Linux (Ubuntu 9.10)
(ii). GUI development using the QT IDE (QT Creator)
(iii). Working with C APIs from C++ (i.e. mixing C and C++)
This project is a "proof of concept" project with only a few requirements - and thus provides an opportunity for someone with the above skills to quickly earn themselves good points, since it can be realistically completed in a day.
I am a C++ developer myself - however, most of my development has been on the Windows platform and I am now in the process of moving from Windows to Linux (specifically, Ubuntu 9.10).
I have provided links to the full source code required, as well as any relevant documentation pertaining to areas as extending and embedding CLIPS.
As I mentioned earlier, this code will be built, tested and run on a Linux machine running Ubuntu 9.10.
As I am also a C++ developer, naturally, I would expect clean, well structured, well commented code which can be easily maintained, going forward.
## Deliverables
The project requirements broadly are as follows:
1. Build CLIPS (6.3) as a shared lib on Ubuntu (9.10) using QT Creator etc, and provide project file and all source files
2. Create a MDI QT GUI application
3. Extend CLIPs with a set of functions that allows CLIPS to call into an external C/C++ library
The functions should:
(i). demonstrate accepting and returning all the possible data types known by CLIPS
(ii). Be callable (i.e. used and recognized) in the CLI window - meaning that for example if the functions foo and foobar
were added as extensions to the embeded CLIPS engine, then foo and foobar should be able to be used in the CLI
(iv). Include a function which wraps around Curl to fetch data from a specified url. For the purposes of this test, the retuned data should simply be dumped to CLI screen (see next requirement below) as output
4. The MDI app should provide:
(i). A window that serves as a CLI (command lline interface) for interaction with the embedded CLIPS rule engine
(ii). A syntax highlighter window for displaying contents of open .clp files (see [login to view URL])
(iii). A simple File menu with the following submenus:
(a) Open menu - this allows a user to select a .clp file for editing (in the syntax editor)
(b) Save menu - this allows a user to save teh current .clp file to disk
(c) Exit menu - this terminates the rule engine and exits the application
Notes:
------
(a) You can find out more about CLIPS here: [login to view URL]
(b). The latest code for building the embedded engine can be found here: [login to view URL]
(c). Documentation on embedding and extending CLIPs can be found here: [login to view URL]
(d). Documentation on Interfaces can be found here: [login to view URL]
(e). Code here MAY be helful in thuis project for replacing the MAC OS X GUI (uses another GUI toolkit [wxWidgets]): [login to view URL]
(f). Curl can be obtained from here: [login to view URL]
NOTE: READ MESSAGE BELOW
All though the CLIPS code provided in the link above has Mac_OS_X in the link title, the code is not MAC specific (I will be running on a PC in any case NOT a MAC).
I had a look at the code and the source code is self is platform specific (though it can be tailored by modifying setup.h). The interface stuff (seperate) seems geared to the MacOS, but the wxCLIPS link I provided above shows how another toolkit (wxWidget) can be used as the uinterface, and may thus prove useful in this project which provides a QT interface to CLIPS.