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 [url removed, login to view]
Although this project does not require any knowledge of CLIPS (or expert systems), it requires experience with:
(i). C/C++ development on Linux (Ubuntu [url removed, login to view])
(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 [url removed, login to view]).
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.
The project requirements broadly are as follows:
1. Build CLIPS (6.3) as a shared lib on Ubuntu ([url removed, login to view]) 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 [url removed, login to view])
(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
(a) You can find out more about CLIPS here: [url removed, login to view]
(b). The latest code for building the embedded engine can be found here: [url removed, login to view]
(c). Documentation on embedding and extending CLIPs can be found here: [url removed, login to view]
(d). Documentation on Interfaces can be found here: [url removed, login to view]
(e). Code here MAY be helful in thuis project for replacing the MAC OS X GUI (uses another GUI toolkit [wxWidgets]): [url removed, login to view]
(f). Curl can be obtained from here: [url removed, login to view]
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.