This library provides a simple way to expose any C/C++ function in a Read-eval-print loop (REPL) interactive environment.
Features:
- Easy interface definition.
- Interface support for: - Positional parameters. - Optional parameters with default values. - Flags.
- Class methods.
- Automatic parameter- and return type inference.
- Full help system.
- Method discovery.
We show how to use simple functions in the demo program. In this program we export three functions: greet, inc and mul.
The built in help function shows a list of available commands.
> help Available commands: greet Say hi to someone. inc Increment a value. mul Multiply a floating point number. help Help on a specific command. exit Exit.
For more information about a specific command, pass the name of a command to the help function.
> help greet greet: Say hi to someone. positional arguments: name someone's name (type string) optional arguments: -t greet multiple times (type int, default: 1) -s shout (type flag) returns: string
This particular command has one positional (mandatory) parameter and two optional parameters, of which one is a flag.
From the description, we see that we can call the greet function by providing only one argument as follows.
> greet world Hi world.
Stings consisting of multiple words should be quoted.
> greet "Dan the man" Hi Dan the man.
We can override the default value of the optional parameter by adding the -t option.
> greet -t 3 world Hi world. Hi world. Hi world.
Flags do not take an additional argument.
> greet -t 3 -s world HI world! HI world! HI world!
Optional arguments can be provided in any order.
> greet -s world -t 3 HI world! HI world! HI world!
In the calculator program we show how to use class methods. In this program we export some simple arithmetic functions.
> help name (return type: parameter types) ; documentation add (void: int) ; Add something. sub (void: int) ; Subtract something. show (int:) ; Show result. help (string:) ; This help message. exit (void:) ; Exit.
These functions operate on an object.
$ ./calculator > show 0 > add 10 > sub 2 > show 8 > exit