/* @(#) pforth.h 98/01/26 1.2 */#ifndef _pforth_h#define _pforth_h/***************************************************************** Include file for pForth, a portable Forth based on 'C'**** This file is included in any application that uses pForth as a tool.**** Author: Phil Burk** Copyright 1994 3DO, Phil Burk, Larry Polansky, David Rosenboom**** The pForth software code is dedicated to the public domain,** and any third party may reproduce, distribute and modify** the pForth software code or any derivative works thereof** without any compensation or license. The pForth software** code is provided on an "as is" basis without any warranty** of any kind, including, without limitation, the implied** warranties of merchantability and fitness for a particular** purpose and their equivalents under the laws of any jurisdiction.*******************************************************************//* Define stubs for data types so we can pass pointers but not touch inside. */typedef void *PForthTask;typedef void *PForthDictionary;#include <stdint.h>/* Integer types for Forth cells, signed and unsigned: */typedef intptr_t cell_t;typedef uintptr_t ucell_t;typedef ucell_t ExecToken; /* Execution Token */typedef cell_t ThrowCode;#ifdef __cplusplusextern "C" {#endif#ifdef PF_SUPPORT_FPdouble floor(double x);double round(double x);void setfcr(unsigned long fcr);#endif/* Main entry point to pForth. */ThrowCode pfDoForth( const char *DicName, const char *SourceName, cell_t IfInit );/* Turn off messages. */void pfSetQuiet( cell_t IfQuiet );/* Query message status. */cell_t pfQueryQuiet( void );/* Send a message using low level I/O of pForth */void pfMessage( const char *CString );/* Create a task used to maintain context of execution. */PForthTask pfCreateTask( cell_t UserStackDepth, cell_t ReturnStackDepth );/* Establish this task as the current task. */void pfSetCurrentTask( PForthTask task );/* Delete task created by pfCreateTask */void pfDeleteTask( PForthTask task );/* Build a dictionary with all the basic kernel words. */PForthDictionary pfBuildDictionary( cell_t HeaderSize, cell_t CodeSize );/* Create an empty dictionary. */PForthDictionary pfCreateDictionary( cell_t HeaderSize, cell_t CodeSize );/* Load dictionary from a file. */PForthDictionary pfLoadDictionary( const char *FileName, ExecToken *EntryPointPtr );/* Load dictionary from static array in "pfdicdat.h". */PForthDictionary pfLoadStaticDictionary( void );/* Delete dictionary data. */void pfDeleteDictionary( PForthDictionary dict );/* Execute the pForth interpreter. Yes, QUIT is an odd name but it has historical meaning. */ThrowCode pfQuit( void );/* Execute a single execution token in the current task and return 0 or an error code. */ThrowCode pfCatch( ExecToken XT );/* Include the given pForth source code file. */ThrowCode pfIncludeFile( const char *FileName );/* Execute a Forth word by name. */ThrowCode pfExecIfDefined( const char *CString );#ifdef __cplusplus}#endif#endif /* _pforth_h */
/* @(#) pforth.h 98/01/26 1.2 */
#ifndef _pforth_h
#define _pforth_h
/***************************************************************
** Include file for pForth, a portable Forth based on 'C'
**
** This file is included in any application that uses pForth as a tool.
**
** Author: Phil Burk
** Copyright 1994 3DO, Phil Burk, Larry Polansky, David Rosenboom
**
** The pForth software code is dedicated to the public domain,
** and any third party may reproduce, distribute and modify
** the pForth software code or any derivative works thereof
** without any compensation or license. The pForth software
** code is provided on an "as is" basis without any warranty
** of any kind, including, without limitation, the implied
** warranties of merchantability and fitness for a particular
** purpose and their equivalents under the laws of any jurisdiction.
**
**
***************************************************************/
/* Define stubs for data types so we can pass pointers but not touch inside. */
typedef void *PForthTask;
typedef void *PForthDictionary;
#include <stdint.h>
/* Integer types for Forth cells, signed and unsigned: */
typedef intptr_t cell_t;
typedef uintptr_t ucell_t;
typedef ucell_t ExecToken; /* Execution Token */
typedef cell_t ThrowCode;
#ifdef __cplusplus
extern "C" {
#endif
#ifdef PF_SUPPORT_FP
double floor(double x);
double round(double x);
void setfcr(unsigned long fcr);
#endif
/* Main entry point to pForth. */
ThrowCode pfDoForth( const char *DicName, const char *SourceName, cell_t IfInit );
/* Turn off messages. */
void pfSetQuiet( cell_t IfQuiet );
/* Query message status. */
cell_t pfQueryQuiet( void );
/* Send a message using low level I/O of pForth */
void pfMessage( const char *CString );
/* Create a task used to maintain context of execution. */
PForthTask pfCreateTask( cell_t UserStackDepth, cell_t ReturnStackDepth );
/* Establish this task as the current task. */
void pfSetCurrentTask( PForthTask task );
/* Delete task created by pfCreateTask */
void pfDeleteTask( PForthTask task );
/* Build a dictionary with all the basic kernel words. */
PForthDictionary pfBuildDictionary( cell_t HeaderSize, cell_t CodeSize );
/* Create an empty dictionary. */
PForthDictionary pfCreateDictionary( cell_t HeaderSize, cell_t CodeSize );
/* Load dictionary from a file. */
PForthDictionary pfLoadDictionary( const char *FileName, ExecToken *EntryPointPtr );
/* Load dictionary from static array in "pfdicdat.h". */
PForthDictionary pfLoadStaticDictionary( void );
/* Delete dictionary data. */
void pfDeleteDictionary( PForthDictionary dict );
/* Execute the pForth interpreter. Yes, QUIT is an odd name but it has historical meaning. */
ThrowCode pfQuit( void );
/* Execute a single execution token in the current task and return 0 or an error code. */
ThrowCode pfCatch( ExecToken XT );
/* Include the given pForth source code file. */
ThrowCode pfIncludeFile( const char *FileName );
/* Execute a Forth word by name. */
ThrowCode pfExecIfDefined( const char *CString );
#ifdef __cplusplus
}
#endif
#endif /* _pforth_h */