Although ScriptBasic is implemented in pure C the coding and developing concept is rather object oriented. Such is the concept of the C API calling interface. This means that you have to deal with an abstract ScriptBasic program object when you want to execute a program. The structure of this program object is totally private to ScriptBasic and as a programmer embedding the interpreter you need not worry about it. The only action you have to do is to create such an object before doing any other function call calling scriba_new() and to destroy it after the BASIC program was executed and is not going to be used any more calling the function scriba_destroy().
The object is stored in memory and this piece of memory is allocated by ScriptBasic. The function scriba_new() allocates this memory and returns a pointer to this "object". Later this pointer has to be used to refer to this object.
Because C is not object oriented the functions called should explicitly get this pointer as first argument. When programming C++ the class pointer is used to access the class methods, and that also implicitly passes the object pointer to the method. The pointer passing code is generated by the C++ compiler. When calling ScriptBasic API the programmer has to store the "object" pointer and pass it as first argument to any function.
The type of the object pointer is pSbProgram.