Navigation:  thinBasic SDK >

SDK

Previous pageReturn to chapter overviewNext page

Help area still to be adjusted

 

ThinBASIC Software Development Kit (SDK)

 

 

Brief Description

ThinBASIC SDK - February 2006 Edition

The ThinBASIC SDK contains the information, source templates and library you need to develop ThinBASIC based applications. You can use this SDK to develop your own module.

 

 

Overview

ThinBASIC Software Development Kit (SDK) provides the documentation, samples, header files, libraries, and tools you need to develop applications that run on Windows with the TinBASIC engine. The applications you develop with this edition of the SDK can run on the x86, x64 and Itanium-based versions of Windows Server 2003 SP1, Windows XP SP2, Windows XP x64 Pro Edition, and Windows 2000 as well Windows NT 4.0, Windows ME, Windows 98 and Windows 95.

This edition of the SDK replaces the previous ThinBASIC SDKs for all Windows platforms.

 

 

System Requirements

Supported Operating Systems: Windows 2000; Windows Server 2003; Windows XP (both 32 and 64-bit) all edition; Windows NT 4.0; Windows ME; Windows 98; Windows 95.

 

 

Hardware Requirements

Intel or AMD CPU running at 500 MHz, 128 MB RAM and 5 MB of disk space.

 

 

Development Tools

To build the samples, you must have an adequate compiler. Supported compilers are PowerBASIC for Windows 7.x or above, IBasic professional 1.2, Microsoft Visual C/C++ 6.0, Borland C/C++ 5.5, GCC C/C++ 3.4.2, Microsoft Macro Assembler Version 6.0 or above.

 

 

Details

ThinBASIC is a powerful lightweight BASIC interpreter. Beside the large availability of solutions provides by the standard modules the SDK let a developer to build his totally owned top quality and high performance solution in form of .DLL module.

SDK rely upon a small set of API exported by the thincore.dll dynamic library.

Depending on which language you use (BASIC or C/C++ or ASSEMBLER)  you should use appropriate include file and static library that provide the correct use of thincores’ API.

 

 

 

Predefined Constants

thinBasic_DoNotForceOverWrite

thinBasic_ForceOverWrite

 

thinBasic_ReturnNone

thinBasic_ReturnNumber

thinBasic_ReturnString

thinBasic_ReturnCodeByte

thinBasic_ReturnCodeInteger

thinBasic_ReturnCodeWord

thinBasic_ReturnCodeDWord

thinBasic_ReturnCodeLong

thinBasic_ReturnCodeQuad

thinBasic_ReturnCodeSingle

thinBasic_ReturnCodeDouble

thinBasic_ReturnCodeCurrency

thinBasic_ReturnCodeExt

 

thinBasic_ConstTypeAuto

thinBasic_ConstTypeNumeric

thinBasic_ConstTypeString

 

thinBasic_TRUE

thinBasic_FALSE

thinBasic_ON

thinBasic_OFF

 

 

THINCORE.DLL API

thinBasic_AddEquate

thinBasic_CheckCloseParens

thinBasic_CheckComma

thinBasic_CheckOpenParens

thinBasic_LoadSymbol

thinBasic_ParseDouble

thinBasic_ParseDWord

thinBasic_ParseString

thinBasic_SetReturnString

 

 

THINCORE.DLL API REFERENCE

(C/C++ only for others languages please see include file in the table below)

 

Function thinBasic_AddEquate()

 

Description

 

The thinBasic_AddEquate() function adds a new equate (constant).

 

Syntax

 

 DWORD thinBasic_AddEquate(char * szEquate,

                           char * szStringValue,

                           DWORD  dwNumericValue,

                           DWORD  dwConstType);

 

 

Returns

 

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.

 

Parameters

 

szEquate

   Pointer to a null-terminated string to be used as equate name.

szStringValue

   Pointer to a null-terminated string to be used as value of equate it the equate is a string type.

szNumericValue

   32 bit numeric value (could be signed or unsigned) of equate it the equate is a numeric type.

dwConstType

   A flag that indicate the type of equate, it could be one of following predefined constants:

thinBasic_ConstTypeAuto

thinBasic_ConstTypeNumeric

thinBasic_ConstTypeString

 

 

Remarks

 

 

Restrictions

 

 

See also

 

  thinBasic_LoadSymbol

 

Examples

 

#define TB_myC_ONETIME        1

 

thinBasic_AddEquate("%TB_myC_ONETIME",

                   "",

                   TB_myC_ONETIME,

                   thinBasic_ConstTypeAuto);

 

 

 

Function thinBasic_CheckCloseParens()

 

Description

 

The thinBasic_CheckCloseParens() function checks if the parenthesis sequence is close correctly.

 

Syntax

 

DWORD thinBasic_CheckOpenParens(DWORD HideError, DWORD AutoPutBack);

 

Returns

 

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.

 

Parameters

 

HideError

   If nonzero hide the error caused by an invalid close sequence (don’t generate a run time error).

AutoPutBack

   If nonzero leave the current token on the parsed stack.

 

Remarks

For both HideError and AutoPutBack you cold use one of following predefined constants:

thinBasic_TRUE

thinBasic_FALSE

 

Restrictions

 

 

See also

 

  thinBasic_CheckComma, thinBasic_CheckOpenParens

 

Examples

 

if(thinBasic_CheckOpenParens(thinBasic_FALSE, thinBasic_FALSE))

{

  nLen = thinBasic_ParseString(&szMyString);

  if(thinBasic_CheckCloseParens(thinBasic_FALSE, thinBasic_FALSE))

  {

     if(nLen)

     {

          MessageBox(NULL, szMyString, "thinBasic SDK", MB_OK);

     }

   }

}

Function thinBasic_CheckComma()

 

Description

 

The thinBasic_CheckComma() function checks if the current token (on the interpreter stack) is a comma character.

 

Syntax

 

DWORD thinBasic_CheckComma(void);

 

Returns

 

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.

 

Parameters

 

 

Remarks

 

 

Restrictions

 

 

See also

  thinBasic_CheckCloseParens, thinBasic_CheckOpenParens

 

Examples

 

if(thinBasic_CheckOpenParens(thinBasic_TRUE, thinBasic_TRUE))

{

 thinBasic_ParseString(&fname1);

 if(thinBasic_CheckComma())

 {

         thinBasic_ParseString(&fname2);

       if(thinBasic_CheckCloseParens(thinBasic_TRUE, thinBasic_TRUE))

             {

                 printf("File1 = %s, File2 = %s\n ",fname1, fname2);

       }

 }

 }

Function thinBasic_CheckOpenParens()

 

Description

 

The thinBasic_CheckOpenParens() function checks if the parenthesis sequence is close correctly.

 

Syntax

 

DWORD thinBasic_CheckOpenParens(DWORD HideError, DWORD AutoPutBack);

 

Returns

 

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.

 

Parameters

 

HideError

   If nonzero hide the error caused by an invalid open sequence (don’t generate a run time error).

AutoPutBack

   If nonzero leave the current token on the parsed stack.

 

Remarks

For both HideError and AutoPutBack you cold use one of following predefined constants:

thinBasic_TRUE

thinBasic_FALSE

 

Restrictions

 

 

See also

 

  thinBasic_CheckComma, thinBasic_CheckOpenParens

 

Examples

 

if(thinBasic_CheckOpenParens(thinBasic_FALSE, thinBasic_FALSE))

{

  nLen = thinBasic_ParseString(&szMyString);

  if(thinBasic_CheckCloseParens(thinBasic_FALSE, thinBasic_FALSE))

  {

     if(nLen)

     {

          MessageBox(NULL, szMyString, "thinBasic SDK", MB_OK);

     }

   }

}

 

Function thinBasic_LoadSymbol()

 

Description

 

The thinBasic_AddLoadSymbol() function adds a new symbol. This function is used to load and create a new keyword inside the interpreter.

 

Syntax

 

DWORD   thinBasic_LoadSymbol(char * szFunctionName,

                            DWORD  dwReturnType,

                            void * FunctionCode,

                            DWORD  dwForceOverWrite);

Returns

 

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.

 

Parameters

 

szFunctionName

   Pointer to a null-terminated string to be used as function name.

dwReturnType

   A flag that specify what kind of value your function returns, it could be one of following predefined

  constants:

thinBasic_ReturnNone

thinBasic_ReturnNumber

thinBasic_ReturnString

thinBasic_ReturnCodeByte

thinBasic_ReturnCodeInteger

thinBasic_ReturnCodeWord

thinBasic_ReturnCodeDWord

thinBasic_ReturnCodeLong

thinBasic_ReturnCodeQuad

thinBasic_ReturnCodeSingle

thinBasic_ReturnCodeDouble

thinBasic_ReturnCodeCurrency

thinBasic_ReturnCodeExt

 

FunctionCode

   A pointer to the function code that will be called from the interpreter.

dwForceOverWrite

   A flag that indicate if the SymbolName already exists as a keyword, you want to overwrite it with a

   new one. It could be one of following predefined constants:

thinBasic_DoNotForceOverWrite

thinBasic_ForceOverWrite

 

 

Remarks

 

 

Restrictions

 

 

See also

 

  thinBasic_AddEquate

 

Examples

 

void GreetingFromC(void)

{

 MessageBox(NULL, "Hello from C world!", "thinBasic SDK", MB_OK);

}

.

.

.

 

thinBasic_LoadSymbol("myC_GreetingFromC",

                    thinBasic_ReturnNone,

                    &GreetingFromC,

                    thinBasic_ForceOverWrite);

 

Function thinBasic_ParseDouble()

 

Description

 

The thinBasic_ParseDouble() retrieve a double value from the interpreter.

 

Syntax

 

double thinBasic_ParseDouble(void);

 

Returns

 

The value returned is the data itself.

 

Parameters

 

 

Remarks

 

 

Restrictions

 

 

See also

  thinBasic_ParseDWord, thinBasic_ParseString

 

Examples

 

if(thinBasic_CheckOpenParens(thinBasic_TRUE, thinBasic_TRUE))

{

 d1 = thinBasic_ParseDouble();

 if(thinBasic_CheckComma())

 {

         d2 = thinBasic_ParseDouble();

       if(thinBasic_CheckCloseParens(thinBasic_TRUE, thinBasic_TRUE))

             {

                 printf("Value1 = %d, Value2 = %d\n ", d1, d2);

       }

 }

  }

Function thinBasic_ParseDWord()

 

Description

 

The thinBasic_ParseDword() retrieve a DWORD value (32 bit) from the interpreter.

 

Syntax

 

DWORD thinBasic_ParseDword(void);

 

Returns

 

The value returned is the data itself.

 

Parameters

 

 

Remarks

 

 

Restrictions

 

 

See also

  thinBasic_ParseDouble, thinBasic_ParseString

 

Examples

 

if(thinBasic_CheckOpenParens(thinBasic_TRUE, thinBasic_TRUE))

{

 dw1 = thinBasic_ParseDWord();

 if(thinBasic_CheckComma())

 {

         dw2 = thinBasic_ParseDWord();

       if(thinBasic_CheckCloseParens(thinBasic_TRUE, thinBasic_TRUE))

             {

                 printf("Value1 = %d, Value2 = %d\n ", dw1, dw2);

       }

 }

  }

Function thinBasic_ParseString()

 

Description

 

The thinBasic_ParseString() function retrieves a pointer to a null-terminated string.

 

Syntax

 

 DWORD thinBasic_ParseString(char ** pszString);

 

Returns

 

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.

 

Parameters

pszString

   Pointer to a pointer that will point to a null-terminated string retrived.

 

 

Remarks

 

 

Restrictions

 

 

See also

  thinBasic_ParseDouble, thinBasic_ParseDWord

 

Examples

 

if(thinBasic_CheckOpenParens(thinBasic_TRUE, thinBasic_TRUE))

{

 thinBasic_ParseString(&fname1);

 if(thinBasic_CheckComma())

 {

         thinBasic_ParseString(&fname2);

       if(thinBasic_CheckCloseParens(thinBasic_TRUE, thinBasic_TRUE))

             {

                 printf("File1 = %s, File2 = %s\n ",fname1, fname2);

       }

 }

 }

Function thinBasic_SetReturnString()

 

Description

 

The thinBasic_SetReturnString() pass retrieve a pointer to a null-terminated string.

 

Syntax

 

 LPVOID thinBasic_SetReturnString(char * szMsg);

 

Returns

 

A pointer of to the string for the interpreter.

If the function fails, the return value is a null pointer.

 

Parameters

szMsg

   Pointer to a null-terminated string to pass back to the interpreter.

 

 

Remarks

After a successfully call to thinBasic_SetRetunString the szMsg could be safety released.

 

Restrictions

 

 

See also

  thinBasic_ParseDouble, thinBasic_ParseDWord

 

Examples

 

char * StringFromC(char * szMsg)

{

 return thinBasic_SetReturnString(szMsg);

}

 

 

INCLUDE FILE AND STATIC LIBRARY INFO

COMPILER                INCUDE                STATIC LIBRARY                IMPORT LIBRARY

PowerBASIC                thinCore.inc                n.a.                                n.a.

IBASIC                thinCore.inc                thinIB.lib                        thinCore.lib

Borland C/C++        thinCore.h                thinC.lib                        thinCore.lib

Gnu C/C++                thinCore.h                thinC.a                                thinCore.lib        

Microsoft C/C++        thinCore.h                thinC.lib *                        thinCore.lib        

MASM                thinCore.inc                thinASM.lib                        thinCore.lib

 

Note: * For Microsoft C/C++ we provide also thinC.dll (the dynamic version of thinC.lib) with its import library thinC.lib.

 

 

HINTS AND TIPS

 

In order to use your module successfully, you should put it into a right folder.

For example, focusing on IBASIC module you should put the thinBasic_myIB.dll module into the C:\thinBasic\Lib folder.

 

 

SAMPLES MODULE

Microsoft Macro Assembler :

 Template:        UserDefinedLib.bas

 Default folder:        C:\thinBasic\SDK\thinBasic ASSEMBLER SDK\MASM\Lib

 Purpose:                Example of how can gain ultra high speed in math calculation (summary

of first <nItem> of natural numbers).

Function:        myASM_SumDWord (aArrayOfNA, nItems)

 Script:                TB_myASM.tbasicc

 Default folder:        C:\thinBasic\SDK\thinBasic ASSEMBLER SDK\MASM\SampleScripts\myASM

 

Borland C/C++ :

 Template:        thinBasic_myC.c

 Default folder:        C:\thinBasic\SDK\thinBasic C SDK\BCC\Lib

 Purpose:                Example of file compare functions.

Function:        myC_CompareFile(sFile1, sFile2)

 Script:                TB_myC.tbasic

 Default folder:        C:\thinBasic\SDK\thinBasic C SDK\BCC\SampleScripts

 

GNU Compiler Collection C/C++ :

 Template:        thinBasic_myC.c

 Default folder:        C:\thinBasic\SDK\thinBasic C SDK\GCC\Lib

 Purpose:                Example of how print some text.

Function:        myC_PrintPage (sText)

 Script:                TB_myC.tbasic

 Default folder:        C:\thinBasic\SDK\thinBasic C SDK\GCC\SampleScripts

 

IBASIC :

 Template:        thinBasic_myIB.ibp

 Default folder:        C:\thinBasic\SDK\thinBasic BASIC SDK\IB\Lib

 Purpose:                Example of how manage sprites.

 Function:        myIB_GetLogos()

                 myIB_RunLogos()

                 myIB_SetGreeting(sGreeting)

                 myIB_SetLogos(nNumberOfLogos)

 Script:                TB_myIB.tbasic

 Default folder:        C:\thinBasic\SDK\thinBasic BASIC SDK\IB\SampleScripts\myIB

 

Microsoft C/C++ :

 Template:        thinBasic_myC.c

 Default folder:        C:\thinBasic\SDK\thinBasic C SDK\MS-C++\Lib

 Purpose:                Example of how provide some custom functions.

Functions:        myC_PowC(x, y)

myC_GreetingFromC()

myC_StringFromC(sMsg)

myC_MultByTenC(n)

myC_StringLenC(sString)

 Script:                TB_myC.tbasic

 Default folder:        C:\thinBasic\SDK\thinBasic C SDK\MS-C++\SampleScripts

 

PowerBASIC :

 Template:        UserDefinedLib.bas

 Default folder:        C:\thinBasic\Lib\thinBasic_LibTemplate        

 Purpose:                Example of how provide custom functions.

Functions:        HEX$(numeric_expression [, digits])

Console_fColor ( Red, Green, Blue, Intense)

 Script:                        

 Default folder: