Home

Scheme Toolkit Support

Scheme ACIS Interface Driver Extension demonstration application (Scheme AIDE). More...

Classes

class  acis_scm_entity_mgr
 Concrete entity manager class for ACIS Assembly Modeling with the Scheme example application. More...
class  acis_scm_entity_mgr_factory
 Concrete entity manager factory class for creating acis_scm_entity_mgr objects. More...
class  GC_Object
 Virtual class from which objects which have pointers to objects which are allocated off the heap can be derived. More...
class  param_string
 References parameters. More...
class  PART_CONTEXT
 The PART_CONTEXT object. More...
class  scheme_error_callback_list
 Provides a type-safe interface to the toolkit_callback_list and the execute method. More...
class  scm_pick_manager
 The scm_pick_manager object. More...
struct  ScmObject
 Declaration of Scheme object data type. More...

Defines

#define SCM_INIT(proc)   static user_scm_init name2(proc,_SI)(proc)
 Macro for registering a scheme initialization procedure.
#define SCM_PROC(n1, n2, name, proc)   static user_scm_proc name2(proc,_SI)(n1,n2,name,(ScmObject (*)(...))proc)
 Macro for registering a scheme procedure (extension).
#define SCM_PROC_EX(n1, n2, name, proc, help)   static user_scm_proc name2(proc,_SI)(n1,n2,name,(ScmObject (*)(...))proc, help)
 Macro for registering a scheme procedure (extension).

Functions

PART_CONTEXTactive_part_context ()
 Gets the active PART_CONTEXT.
outcome api_pm_add_entity (ENTITY *entity1, PART *part1)
 Adds an ENTITY to a PART.
outcome api_pm_create_part (unsigned int size, PART *&part1)
 Creates a new PART.
outcome api_pm_delete_all_states (HISTORY_STREAM *hs=NULL)
 Deletes all states.
outcome api_pm_delete_part (PART *part1)
 Deletes a PART.
outcome api_pm_entity_id (ENTITY *ent, entity_id_t &id, PART *&part)
 Gets the entity ID and part for an ENTITY.
outcome api_pm_load_part (FILE *fp, logical text_mode, PART *the_part, logical with_history, ENTITY_LIST &new_entities)
 Loads a file into a PART.
outcome api_pm_lookup_entity (entity_id_t id, PART *part, ENTITY *&ent)
 Gets an entity given an ID and a PART.
outcome api_pm_name_state (const char *name, HISTORY_STREAM *hs=NULL)
 Names the current state.
outcome api_pm_note_state (outcome out, int &depth)
 Marks the end of a state.
outcome api_pm_part_entities (PART *part1, entity_filter *filter, ENTITY_LIST &ent)
 Gets a list of entities in a PART.
outcome api_pm_remove_entity (ENTITY *entity1)
 Removes an ENTITY from a part.
outcome api_pm_roll_n_states (int n_wanted, HISTORY_STREAM *hs, int &n_actual)
 Rolls forward or backward a specified number of states.
outcome api_pm_roll_to_state (const char *name, HISTORY_STREAM *hs, int &n_actual)
 Rolls to the start of a named state.
outcome api_pm_save_part (FILE *fp, logical text_mode, PART *the_part, logical with_history=0, logical mainline_only=0)
 Saves a PART to a file.
outcome api_pm_start_state (int &depth)
 Marks the start of a state.
void scheme_error_callback_list::append (scheme_error_callback *cb)
 Appends a scheme error callback list.
void delete_GC_Objects ()
 Deletes the GC_Object.
void end_entity_creation (ENTITY *, outcome, logical displayable=TRUE)
 Mark end of entity creation.
void end_entity_creation2 (ENTITY *, outcome, logical displayable=TRUE)
 Mark end of entity creation.
void end_entity_modification (ENTITY *, outcome, logical redisplay=TRUE)
 Mark end of entity modification.
void end_entity_modification2 (ENTITY *, outcome, logical redisplay=TRUE)
 Mark end of entity modification.
void scheme_error_callback_list::execute ()
 Cleans up the application.
virtual void scheme_error_callback::execute ()
 This is the only interesting method.
PART_CONTEXTget_part_context (const ENTITY *ent)
 Gets the PART_CONTEXT from an ENTITY.
scheme_error_callback_listget_scheme_error_callback_list ()
 Gets a global list of scheme error callbacks.
APATTERNget_Scm_APATTERN (ScmObject)
 Get ACIS PATTERN from scheme object.
BODYget_Scm_Body (ScmObject)
 Get ACIS BODY from scheme object.
logical get_Scm_Boolean (ScmObject o)
 Converts scheme boolean into logical.
int get_Scm_Boolean_Array (ScmObject, int *&)
 Converts scheme boolean arrat into array of logical.
wchar_t * get_Scm_BString (ScmObject)
 Makes wchar from scheme string object.
COEDGEget_Scm_Coedge (ScmObject)
 Get ACIS COEDGE from scheme object.
EDGEget_Scm_Edge (ScmObject)
 Get ACIS EDGE from scheme object.
ENTITYget_Scm_Entity (ScmObject o, entity_test_proc test, const char *type)
 Creates a C++ ENTITY from a Scheme entity.
ENTITYget_Scm_Entity (ScmObject o, const entity_filter &filt, const char *type)
 Creates a C++ ENTITY from a Scheme entity.
ENTITYget_Scm_Entity (ScmObject e)
 Creates a C++ ENTITY from a Scheme entity.
int get_Scm_Entity_Array (ScmObject, ENTITY **&)
 Creates a C++ ENTITY array from a Scheme Entity List, returns number of elements.
entity_handleget_Scm_Entity_Handle (ScmObject o)
 Creates a C++ entity_handle from a Scheme entity.
void get_Scm_Entity_List (ScmObject, ENTITY_LIST &)
 Creates a C++ ENTITY_LIST from a Scheme list.
FACEget_Scm_Face (ScmObject)
 Get ACIS FACE from scheme object.
SPAvector get_Scm_Gvector (ScmObject sp)
 Creates a C++ SPAvector from a Scheme gvector object.
int get_Scm_Gvector_List (ScmObject list, SPAvector *&vecs)
 Create array of SPAvector from scheme object gvector list.
int get_Scm_Integer (ScmObject o)
 Converts scheme integer into c++ integer.
int get_Scm_Integer_Array (ScmObject, int *&)
 Converts scheme integer list into c++ integer array.
lawget_Scm_Law (ScmObject r)
 Creates a C++ law from a Scheme law object.
LAWget_Scm_LAW (ScmObject)
 Get ACIS LAW from scheme object.
long get_Scm_Long (ScmObject o)
 Converts scheme long into c++ long.
int get_Scm_Long_Array (ScmObject, long *&)
 Converts scheme long list into c++ long array.
LOOPget_Scm_Loop (ScmObject)
 Get ACIS LOOP from scheme object.
SPAposition get_Scm_Position (ScmObject sp)
 Creates a C++ SPAposition from a Scheme position object.
int get_Scm_Procedure_MaxArgs (ScmObject p)
 Get the maximum number of arguments the scheme extension requires.
int get_Scm_Procedure_MinArgs (ScmObject p)
 Get the minum number of arguments the scheme extension requires.
double get_Scm_Real (ScmObject o)
 Converts scheme real into c++ double.
int get_Scm_Real_Array (ScmObject, double *&)
 Converts scheme real arrat into c++ double array.
int get_Scm_Real_List (ScmObject list, double *&dbls)
 Converts scheme real list into c++ double array.
BODYget_Scm_Solid (ScmObject)
 Get ACIS BODY from scheme object.
const char * get_Scm_String (ScmObject s)
 Creates a C++ const char* from a Scheme string object.
TCOEDGEget_Scm_Tcoedge (ScmObject)
 Get ACIS TCOEDGE from scheme object.
TEDGEget_Scm_Tedge (ScmObject)
 Get ACIS TEDGE from scheme object.
SPAtransf get_Scm_Transform (ScmObject t)
 Creates a C++ SPAtransf from a Scheme transform object.
WIREget_Scm_Wire (ScmObject)
 Get ACIS WIRE from scheme object.
BODYget_Scm_Wire_Body (ScmObject)
 Get ACIS Wire BODY from scheme object (must not have faces).
logical is_Scm_Boolean (ScmObject o)
 Determines if a scheme object is of type boolean.
logical is_Scm_Char (ScmObject c)
 Determines if a scheme object is of type character.
logical is_Scm_Entity (ScmObject o, entity_test_proc test)
 Determines if a Scheme object is an ENTITY.
logical is_Scm_Entity (ScmObject o, const entity_filter &filt)
 Determines if a Scheme object is an ENTITY.
logical is_Scm_Entity (ScmObject e)
 Determines if a Scheme object is an ENTITY.
logical is_Scm_Entity_List (ScmObject)
 Determines if a Scheme object is an ENTITY_LIST.
logical is_Scm_Entray (ScmObject r)
 Determines if a Scheme object is an entray.
logical is_Scm_Gvector (ScmObject)
 Is Scheme object a gvector.
logical is_Scm_Gvector_List (ScmObject list)
 Is scheme object a list of gvectors.
long is_Scm_Hoops_Key (ScmObject o)
 Is scheme object of type 64 bit integer.
logical is_Scm_Integer (ScmObject x)
 Determines if a scheme object is of type integer.
logical is_Scm_Integer_Array (ScmObject)
 Determines if a scheme object is of type integer array.
logical is_Scm_Law (ScmObject)
 Is scjeme object of type law.
logical is_Scm_List (ScmObject o)
 Determines if a scheme object is of type scheme list.
logical is_Scm_Long (ScmObject x)
 Determines if a scheme object is of type long.
logical is_Scm_Long_Array (ScmObject o)
 Determines if a scheme object is of type long array.
logical is_Scm_Null (ScmObject o)
 Determines if a scheme object is of type null.
logical is_Scm_Number (ScmObject x)
 Determines if a scheme object is of type number.
logical is_Scm_Number_Array (ScmObject)
 Determines if a scheme object is of type scheme number array.
logical is_Scm_Pair (ScmObject o)
 Determines if a scheme object is of type pair.
logical is_Scm_Procedure (ScmObject p)
 Determines if a scheme object is of type procedure.
logical is_Scm_Real (ScmObject o)
 Determines if a scheme object is of type real.
logical is_Scm_Real_List (ScmObject list)
 Determines if a Scheme object is a list of reals.
logical is_Scm_String (ScmObject s)
 Determines if a scheme object is of type string.
logical is_Scm_Symbol (ScmObject s)
 Determines if a scheme object is of type scheme symbol.
logical is_Scm_Vector (ScmObject v)
 Is scheme object of type gvector.
ScmObject make_Scm_Boolean_List (int, logical *)
 Creates scheme logical object from c++ logical.
ScmObject make_Scm_EmptyList ()
 Make scheme void object.
ScmObject make_Scm_Entity (const entity_handle *ent_hdl)
 Creates a Scheme entity from an entity handle.
ScmObject make_Scm_Entity (ENTITY *ent)
 Creates a Scheme entity from a C++ ENTITY.
ScmObject make_Scm_Entity_List (const entity_handle_list &ent_hdls)
 Creates a list of Scheme entities from an entity_handle_list.
ScmObject make_Scm_Entity_List (int num, ENTITY *elist[])
 Creates a list of Scheme entities from an ENTITY array.
ScmObject make_Scm_Entity_List (const ENTITY_LIST &elist)
 Creates a list of Scheme entities from an ENTITY_LIST object.
ScmObject make_Scm_Gvector (const SPAvector &)
 Make a scheme gvector from SPAvector.
ScmObject make_Scm_Gvector (double x, double y, double z)
 Make a scheme gvector from three doubles.
ScmObject make_Scm_Gvector_List (int nvecs, const SPAvector *vecs)
 Make a list of scheme gvectors from array of SPAvector.
ScmObject make_Scm_Integer (int n)
 Creates scheme integer object from c++ integer.
ScmObject make_Scm_Integer_List (int, int *)
 Creates scheme integer list object from c++ integer array.
ScmObject make_Scm_Law (law *eq)
 Make ACIS law from scheme object.
ScmObject make_Scm_Long (long l)
 Creates scheme long object from c++ long.
ScmObject make_Scm_Long_List (int, long *)
 Creates scheme long list from c++ long array.
ScmObject make_Scm_Real (double x)
 Creates scheme real object from c++ double.
ScmObject make_Scm_Real_List (int, double *)
 Creates scheme real list object from c++ double array.
ScmObject make_Scm_String (const wchar_t *mbs)
 Makes scheme string from wchar.
ScmObject make_Scm_String (wchar_t *ws)
 Makes scheme string from c++ wide char.
ScmObject make_Scm_String (const char *s)
 Makes scheme string from c++ chars.
ScmObject make_Scm_Tensor (tensor &t)
 Make scheme tensor object from tensor.
void refresh_all (logical update_sils=FALSE)
 Refreshes all views.
int scheme_process (const char *inpLine, int echo)
 Builds and evaluates a Scheme command, optionally echoing the prompt and result.
const char * SchemeCommand (const char *inpLine, param_string &scheme_result, int &nest_level)
 Evaluates Scheme expressions given as a character string.
int SchemeEvaluate (const char *str)
 Evaluates a string or Scheme object.
int SchemeEvaluate (const char *str, param_string &result_string)
 Evaluates a string or Scheme object.
int SchemeEvaluate (const char *str, ScmObject &result)
 Evaluates a string or Scheme object.
int SchemeEvaluate (ScmObject expr, ScmObject &result)
 Evaluates a string or Scheme object.
int SchemeFuncall (ScmObject proc, ScmObject args, ScmObject &result)
 Evaluates an object that is a Scheme procedure against a list of arguments.
logical SchemeGetValue (const char *expression, ENTITY *&value)
 Gets the value of a Scheme expression that returns an ENTITY*.
logical SchemeGetValue (const char *expression, double &value)
 Gets the value of a Scheme expression that returns a double.
logical SchemeGetValue (const char *expression, int &value)
 Gets the value of a Scheme expression that returns an int.
int SchemeLoad (const char *filename, logical journal)
 Loads a Scheme file into memory via journal:load.
int SchemeLoad (const char *filename)
 Loads a Scheme file into memory.
int SchemeObjectToString (ScmObject obj, param_string &result_string)
 Converts a Scheme object to a string.
logical SchemeSetVariable (const char *variable_name, const char *value)
 Sets the value of a Scheme variable.
logical SchemeSetVariable (const char *variable_name, ENTITY *value)
 Sets the value of a Scheme variable.
logical SchemeSetVariable (const char *variable_name, double value)
 Sets the value of a Scheme variable.
logical SchemeSetVariable (const char *variable_name, int value)
 Sets the value of a Scheme variable.
ScmObject scm_Car (ScmObject o)
 Get car from scheme list.
ScmObject scm_Cdr (ScmObject o)
 Get cdr from schmeme list.
int Scm_List_Length (ScmObject o)
 Get number of elements in scheme list.
void set_Scm_Gvector (ScmObject, const SPAvector &)
 Change the coordintates of a scheme gvector using the coordintates of input SPAvector.
void start_entity_creation (void)
 Prepares for the definition of a new ENTITY.
void start_entity_modification (void)
 Prepares for ENTITY modification.
int StringToSchemeObject (const char *str, ScmObject &result)
 Reads a string into a Scheme object.
void update_entity (ENTITY *, logical redisplay=TRUE)
 update_entity is used to update an ENTITY when it was been modified.

Detailed Description

Scheme ACIS Interface Driver Extension demonstration application (Scheme AIDE).

at <tran_typ.hxx>

at <sprocess.h>

at <scmpickmgr.hxx>

at <scmobject.h>

at <scmapp.hxx>

at <scm_eval.hxx>

at <scheme.hxx>

at <pos_typ.hxx>

at <pm_api.hxx>

at <part_ctx.hxx>

at <parm_str.hxx>

at <load_part.hxx>

at <law_typ.hxx>

at <gvec_typ.hxx>

at <gc_obj.hxx>

at <err_cb.hxx>

at <eray_typ.hxx>

at <ent_utl.hxx>

at <ent_typ.hxx>


Define Documentation

#define SCM_INIT ( proc   )     static user_scm_init name2(proc,_SI)(proc)

Macro for registering a scheme initialization procedure.

#define SCM_PROC ( n1,
n2,
name,
proc   )     static user_scm_proc name2(proc,_SI)(n1,n2,name,(ScmObject (*)(...))proc)

Macro for registering a scheme procedure (extension).

#define SCM_PROC_EX ( n1,
n2,
name,
proc,
help   )     static user_scm_proc name2(proc,_SI)(n1,n2,name,(ScmObject (*)(...))proc, help)

Macro for registering a scheme procedure (extension).


Function Documentation

PART_CONTEXT* active_part_context (  ) 

Gets the active PART_CONTEXT.



Role: Use this method when adding a new ENTITY to a PART.

Effect: Read-only

include <scmapp.hxx>

outcome api_pm_add_entity ( ENTITY entity1,
PART part1 
)

Adds an ENTITY to a PART.



Role: This API adds a specified entity to a specified part. If the entity is already in a different PART, it is first removed from the old part. All api_pm functions should be thought of as requiring the use of the PART_CONTEXT class.

Effect: Changes model

Parameters:
entity1 entity to be added.
part1 part to which to add entity.

include <pm_api.hxx>

outcome api_pm_create_part ( unsigned int  size,
PART *&  part1 
)

Creates a new PART.



Role: This api initially allocates enough space to contain the specified size (the number of entities). All api_pm functions should be thought of as requiring the use of the PART_CONTEXT class.

Effect: Changes model

Parameters:
size initial size of entity table for part.
part1 returns part.

include <pm_api.hxx>

outcome api_pm_delete_all_states ( HISTORY_STREAM hs = NULL  ) 

Deletes all states.



Role: This API deletes all operations defined using api_pm_start_state and api_pm_note_state for the given history stream. Use this API when clearing a part in preparation for loading or creating a new part. All api_pm functions should be thought of as requiring the use of the PART_CONTEXT class.

Effect: System routine

Parameters:
hs history stream to delete.

include <pm_api.hxx>

outcome api_pm_delete_part ( PART part1  ) 

Deletes a PART.



Role: All api_pm functions should be thought of as requiring the use of the PART_CONTEXT class.

Effect: Changes model

Parameters:
part1 part.

include <pm_api.hxx>

outcome api_pm_entity_id ( ENTITY ent,
entity_id_t id,
PART *&  part 
)

Gets the entity ID and part for an ENTITY.



Role: This API returns the entity ID (id) and the part containing the specified entity. If the entity is not in the part, this API returns the entity ID (id) as 0 and the part as NULL. All api_pm functions should be thought of as requiring the use of the PART_CONTEXT class.

Effect: Read-only

Parameters:
ent entity to identify.
id entity to identify.
part part containing the entity.

include <pm_api.hxx>

outcome api_pm_load_part ( FILE *  fp,
logical  text_mode,
PART the_part,
logical  with_history,
ENTITY_LIST new_entities 
)

Loads a file into a PART.



Role: This API loads the entities defined in an open file fp into the specified part. The file must be open and positioned to the start of the entity data to be read. All api_pm functions should be thought of as requiring the use of the PART_CONTEXT class.

Effect: Changes model

Parameters:
fp file containing entities to load.
text_mode TRUE (text) or FALSE (binary).
the_part part in which to load entities.
with_history TRUE to restore history if it exists in the file.
new_entities returns list of entities loaded into part.

include <load_part.hxx>

outcome api_pm_lookup_entity ( entity_id_t  id,
PART part,
ENTITY *&  ent 
)

Gets an entity given an ID and a PART.



Role: This API looks up an entity in a part given an entity id. If id does not exist in the part, this API returns NULL. All api_pm functions should be thought of as requiring the use of the PART_CONTEXT class.

Effect: Read-only

Parameters:
id entity ID.
part part in which to look for entity.
ent found entity.

include <pm_api.hxx>

outcome api_pm_name_state ( const char *  name,
HISTORY_STREAM hs = NULL 
)

Names the current state.



Role: This API assigns a name to the recent operation. Call api_pm_name_state immediately after api_pm_note_state and before opening the next sate with to api_pm_start_state. api_pm_name_state names the most recent noted state. api_pm_name_state can also be called immediately following starting the modeler if it were desired that the "root" state be named. Use the specified name in calls to api_pm_roll_to_state to roll to the start of the current operation. All api_pm functions should be thought of as requiring the use of the PART_CONTEXT class.

Effect: System routine

Parameters:
name name to give to current operation.
hs returns history stream.

include <pm_api.hxx>

outcome api_pm_note_state ( outcome  out,
int &  depth 
)

Marks the end of a state.



Role: Match calls to api_pm_note_state with earlier calls to api_pm_start_state. Pairs can be nested to create larger operations. A new delta state is created for the outermost call only. All api_pm functions should be thought of as requiring the use of the PART_CONTEXT class.

The calls to api_pm_start_state and api_pm_note_state must be strictly paired regardless of errors. Start state and note state are paired by the use of a static level counter. If the note state were skipped when there was an error, the counter would be off by one and subsequent states would not be noted.

 int depth;
 api_pm_start_state(depth);
 API_BEGIN

 result = api_do_stuff_1(args);
 check_outcome(result);  // If result is not ok,
       // jump to API_END

 // Alternate style of using check_outcome
 check_outcome(api_do_stuff_2(args));

 // Tell the part manager and graphics what happened
 record_entity(new top level entity);
 update_entity(modified top level entity);

 API_END
 api_pm_note_state(outcome(API_SUCCESS), depth);
If an error occurs, it will be caught by API_END. The api_pm_note_state is always called regardless of error. Note that the outcome is checked before recording or updating entities, so the part manager and graphics don't see anything bad.

It is also acceptable to use API_SYS_BEGIN/END or EXCEPTION_BEGIN/TRY/CATCH/END with api_pm_start_state in the EXCEPTION_BEGIN block and api_pm_note_state in an EXCEPTION_CATCH( TRUE ) block.

Effect: System routine

Parameters:
out outcome of operation.
depth depth of operation nesting after call.

include <pm_api.hxx>

outcome api_pm_part_entities ( PART part1,
entity_filter filter,
ENTITY_LIST ent 
)

Gets a list of entities in a PART.



Role: This API returns the list of entities fount in a part that match the specified filter. If filter is NULL, this API returns all entities in the part. All api_pm functions should be thought of as requiring the use of the PART_CONTEXT class.

Effect: Read-only

Parameters:
part1 part from which to get entities.
filter filter used to select entities or NULL.
ent returns list of entities found.

include <pm_api.hxx>

outcome api_pm_remove_entity ( ENTITY entity1  ) 

Removes an ENTITY from a part.



Role: All api_pm functions should be thought of as requiring the use of the PART_CONTEXT class.

Effect: Changes model

Parameters:
entity1 entity to be removed.

include <pm_api.hxx>

outcome api_pm_roll_n_states ( int  n_wanted,
HISTORY_STREAM hs,
int &  n_actual 
)

Rolls forward or backward a specified number of states.



Role: A negative number rolls to an earlier state; a positive number rolls to a later state. All api_pm functions should be thought of as requiring the use of the PART_CONTEXT class.

Effect: System routine

Parameters:
n_wanted number of states to roll.
hs history stream to roll.
n_actual returns actual number of states rolled.

include <pm_api.hxx>

outcome api_pm_roll_to_state ( const char *  name,
HISTORY_STREAM hs,
int &  n_actual 
)

Rolls to the start of a named state.



Role: If multiple operations have the same name, the latest one before the current state is used. If no operations with the given name occur before the current state, the first one after the current state is used. All api_pm functions should be thought of as requiring the use of the PART_CONTEXT class.

Effect: System routine

Parameters:
name name of state to which to roll.
hs history stream.
n_actual number of states actually rolled.

include <pm_api.hxx>

outcome api_pm_save_part ( FILE *  fp,
logical  text_mode,
PART the_part,
logical  with_history = 0,
logical  mainline_only = 0 
)

Saves a PART to a file.



Role: This API saves the entities contained in a PART to an open file (fp). The file must be open and positioned to the location to which the entities are to be written.

If the optional with_history is specified as TRUE, roll back history data will be saved as well. If the optional mainline_only flag is specified as TRUE, only un-rolled states will be saved to the file. All api_pm functions should be thought of as requiring the use of the PART_CONTEXT class.

Effect: Changes model

Parameters:
fp file in which to save entities.
text_mode TRUE (text) or FALSE (binary).
the_part PART containing entities to save.
with_history TRUE to save history stream to the file.
mainline_only TRUE to ignore rolled states.

include <pm_api.hxx>

outcome api_pm_start_state ( int &  depth  ) 

Marks the start of a state.



Role: Match calls to api_pm_start_state with later calls to api_pm_note_state. Pairs may be nested to create larger operations. A new delta state is started for the outermost call only. All api_pm functions should be thought of as requiring the use of the PART_CONTEXT class.

The calls to api_pm_start_state and api_pm_note_state must be strictly paired regardless of errors. Start state and note state are paired by the use of a static level counter. If the note state were skipped when there was an error, the counter would be off by one and subsequent states would not be noted.

 int depth;
 api_pm_start_state(depth);
 API_BEGIN

 result = api_do_stuff_1(args);
 check_outcome(result);  // If result is not ok,
       // jump to API_END

 // Alternate style of using check_outcome
 check_outcome(api_do_stuff_2(args));

 // Tell the part manager and graphics what happened
 record_entity(new top level entity);
 update_entity(modified top level entity);

 API_END
 api_pm_note_state(outcome(API_SUCCESS), depth);
If an error occurs, it will be caught by API_END. The api_pm_note_state is always called regardless of error. Note that the outcome is checked before recording or updating entities, so the part manager and graphics don't see anything bad.

It is also acceptable to use API_SYS_BEGIN/END or EXCEPTION_BEGIN/TRY/CATCH/END with api_pm_start_state in the EXCEPTION_BEGIN block and api_pm_note_state in an EXCEPTION_CATCH( TRUE ) block.

Effect: System routine

Parameters:
depth depth of nesting of operations after call.

include <pm_api.hxx>

void scheme_error_callback_list::append ( scheme_error_callback *  cb  )  [inline, inherited]

Appends a scheme error callback list.



Parameters:
cb scheme error callback.

void delete_GC_Objects (  ) 

Deletes the GC_Object.



Effect: System routine This procedure deletes all of the GC_Objects that the system knows about. It does not do any tests to see if they are still in use. It is intended to be called when you are exitting the application and want to free up any memory that was allocated.

include <gc_obj.hxx>

void end_entity_creation ( ENTITY ,
outcome  ,
logical  displayable = TRUE 
)

Mark end of entity creation.

The difference between end_entity_creation and end_entity_creation2 is that end_entity_creation will raise an exception (it calls sys_error) if the outcome is not OK, while end_entity_creation2 will just return. The optional displayable argument controls whether or not the ENTITY is displayed. If it is TRUE, then the display is controlled by the auto display flag setting for the PART_CONTEXT to which the ENTITY is added. If it is FALSE, it will not be displayed.

include <ent_utl.hxx>

void end_entity_creation2 ( ENTITY ,
outcome  ,
logical  displayable = TRUE 
)

Mark end of entity creation.

The difference between end_entity_creation and end_entity_creation2 is that end_entity_creation will raise an exception (it calls sys_error) if the outcome is not OK, while end_entity_creation2 will just return. The optional displayable argument controls whether or not the ENTITY is displayed. If it is TRUE, then the display is controled by the auto display flag setting for the PART_CONTEXT to which the ENTITY is added. If it is FALSE, it will not be displayed.

include <ent_utl.hxx>

void end_entity_modification ( ENTITY ,
outcome  ,
logical  redisplay = TRUE 
)

Mark end of entity modification.

The difference between end_entity_modification and end_entity_modification2 is that end_entity_modification will raise an exception (it calls sys_error) if the outcome is not OK, while end_entity_modification2 will just return. The optional redisplay argument controls whether or not the display should be updated.

include <ent_utl.hxx>

void end_entity_modification2 ( ENTITY ,
outcome  ,
logical  redisplay = TRUE 
)

Mark end of entity modification.

The difference between end_entity_modification and end_entity_modification2 is that end_entity_modification will raise an exception (it calls sys_error) if the outcome is not OK, while end_entity_modification2 will just return. The optional redisplay argument controls whether or not the display should be updated.

include <ent_utl.hxx>

void scheme_error_callback_list::execute (  )  [inherited]

Cleans up the application.



Role: However, a new class must be derived from scheme_error_callback_list, and this method must be overloaded.

virtual void scheme_error_callback::execute (  )  [virtual, inherited]

This is the only interesting method.

To create a error cleanup callback, derive a new class from scheme_error_callback, and overload this virtual method to do the cleanup for your application.

PART_CONTEXT* get_part_context ( const ENTITY ent  ) 

Gets the PART_CONTEXT from an ENTITY.



Effect: Read-only

Parameters:
ent given entity.

include <part_ctx.hxx>

scheme_error_callback_list& get_scheme_error_callback_list (  ) 

Gets a global list of scheme error callbacks.



Effect: Read-only

include <err_cb.hxx>

APATTERN* get_Scm_APATTERN ( ScmObject   ) 

Get ACIS PATTERN from scheme object.

BODY* get_Scm_Body ( ScmObject   ) 

Get ACIS BODY from scheme object.

logical get_Scm_Boolean ( ScmObject  o  )  [inline]

Converts scheme boolean into logical.

int get_Scm_Boolean_Array ( ScmObject  ,
int *&   
)

Converts scheme boolean arrat into array of logical.

wchar_t* get_Scm_BString ( ScmObject   ) 

Makes wchar from scheme string object.

COEDGE* get_Scm_Coedge ( ScmObject   ) 

Get ACIS COEDGE from scheme object.

EDGE* get_Scm_Edge ( ScmObject   ) 

Get ACIS EDGE from scheme object.

ENTITY* get_Scm_Entity ( ScmObject  o,
entity_test_proc  test,
const char *  type 
)

Creates a C++ ENTITY from a Scheme entity.



Role: type is a character string describing type of ENTITY filter is looking for, such as "BODY", and is used for printing error messages.

This function is overloaded:

Creates an ENTITY from a Scheme entity.
Creates an ENTITY from a Scheme object given an addition constraint in the form of an entity_filter.
Creates an ENTITY from a Scheme object given an addition constraint in the form of an entity test procedure.

Effect: Read-only

Parameters:
o Scheme object.
test entity test.
type type.

include <ent_typ.hxx>

ENTITY* get_Scm_Entity ( ScmObject  o,
const entity_filter filt,
const char *  type 
)

Creates a C++ ENTITY from a Scheme entity.



Role: type is a character string describing type of ENTITY filter is looking for, such as "BODY", and is used for printing error messages.

This function is overloaded:

Creates an ENTITY from a Scheme entity.
Creates an ENTITY from a Scheme object given an addition constraint in the form of an entity_filter.
Creates an ENTITY from a Scheme object given an addition constraint in the form of an entity test procedure.

Effect: Read-only

Parameters:
o Scheme object.
filt filter test.
type type.

include <ent_typ.hxx>

ENTITY* get_Scm_Entity ( ScmObject  e  ) 

Creates a C++ ENTITY from a Scheme entity.



Role: type is a character string describing type of ENTITY filter is looking for, such as "BODY", and is used for printing error messages.

This function is overloaded:

Creates an ENTITY from a Scheme entity.
Creates an ENTITY from a Scheme object given an addition constraint in the form of an entity_filter.
Creates an ENTITY from a Scheme object given an addition constraint in the form of an entity test procedure.

Effect: Read-only

Parameters:
e Scheme object.

include <ent_typ.hxx>

int get_Scm_Entity_Array ( ScmObject  ,
ENTITY **&   
)

Creates a C++ ENTITY array from a Scheme Entity List, returns number of elements.

entity_handle* get_Scm_Entity_Handle ( ScmObject  o  ) 

Creates a C++ entity_handle from a Scheme entity.



Role: Retrieves the entity_handle associated with this ENTITY, as long as the ENTITY does exist in a PART and the PART is associated with an asm_model.

Parameters:
o Scheme object.

include <ent_typ.hxx>

void get_Scm_Entity_List ( ScmObject  ,
ENTITY_LIST  
)

Creates a C++ ENTITY_LIST from a Scheme list.

FACE* get_Scm_Face ( ScmObject   ) 

Get ACIS FACE from scheme object.

SPAvector get_Scm_Gvector ( ScmObject  sp  ) 

Creates a C++ SPAvector from a Scheme gvector object.



Effect: Read-only

Parameters:
sp Scheme object.

include <gvec_typ.hxx>

int get_Scm_Gvector_List ( ScmObject  list,
SPAvector *&  vecs 
)

Create array of SPAvector from scheme object gvector list.

int get_Scm_Integer ( ScmObject  o  )  [inline]

Converts scheme integer into c++ integer.

int get_Scm_Integer_Array ( ScmObject  ,
int *&   
)

Converts scheme integer list into c++ integer array.

law* get_Scm_Law ( ScmObject  r  ) 

Creates a C++ law from a Scheme law object.



Limitations: The law created with this function should be removed when no longer needed, to free the memory space.

Effect: Read-only

Parameters:
r Scheme object.

include <law_typ.hxx>

LAW* get_Scm_LAW ( ScmObject   ) 

Get ACIS LAW from scheme object.

long get_Scm_Long ( ScmObject  o  )  [inline]

Converts scheme long into c++ long.

int get_Scm_Long_Array ( ScmObject  ,
long *&   
)

Converts scheme long list into c++ long array.

LOOP* get_Scm_Loop ( ScmObject   ) 

Get ACIS LOOP from scheme object.

SPAposition get_Scm_Position ( ScmObject  sp  ) 

Creates a C++ SPAposition from a Scheme position object.



Effect: Read-only

Parameters:
sp Scheme object.

include <pos_typ.hxx>

int get_Scm_Procedure_MaxArgs ( ScmObject  p  )  [inline]

Get the maximum number of arguments the scheme extension requires.

int get_Scm_Procedure_MinArgs ( ScmObject  p  )  [inline]

Get the minum number of arguments the scheme extension requires.

double get_Scm_Real ( ScmObject  o  )  [inline]

Converts scheme real into c++ double.

int get_Scm_Real_Array ( ScmObject  ,
double *&   
)

Converts scheme real arrat into c++ double array.

int get_Scm_Real_List ( ScmObject  list,
double *&  dbls 
)

Converts scheme real list into c++ double array.

BODY* get_Scm_Solid ( ScmObject   ) 

Get ACIS BODY from scheme object.

const char * get_Scm_String ( ScmObject  s  ) 

Creates a C++ const char* from a Scheme string object.



Role: This function always reuses the same space, so if it is necessary to retain the string for future use, copy it into another space.

Effect: System routine

Parameters:
s Scheme object.

include <parm_str.hxx>

TCOEDGE* get_Scm_Tcoedge ( ScmObject   ) 

Get ACIS TCOEDGE from scheme object.

TEDGE* get_Scm_Tedge ( ScmObject   ) 

Get ACIS TEDGE from scheme object.

SPAtransf get_Scm_Transform ( ScmObject  t  ) 

Creates a C++ SPAtransf from a Scheme transform object.



Effect: Read-only

Parameters:
t Scheme object.

include <tran_typ.hxx>

WIRE* get_Scm_Wire ( ScmObject   ) 

Get ACIS WIRE from scheme object.

BODY* get_Scm_Wire_Body ( ScmObject   ) 

Get ACIS Wire BODY from scheme object (must not have faces).

logical is_Scm_Boolean ( ScmObject  o  )  [inline]

Determines if a scheme object is of type boolean.

logical is_Scm_Char ( ScmObject  c  )  [inline]

Determines if a scheme object is of type character.

logical is_Scm_Entity ( ScmObject  o,
entity_test_proc  test 
)

Determines if a Scheme object is an ENTITY.



Role: This function is overloaded and can be used in three ways.

Determines if a Scheme object is an ENTITY.
Determines if a Scheme object is an ENTITY of a type which passes a filter test.
Determines if a Scheme object is an ENTITY which also passes an additional test.

Effect: Read-only

Parameters:
o Scheme object.
test test procedure.

include <ent_typ.hxx>

logical is_Scm_Entity ( ScmObject  o,
const entity_filter filt 
)

Determines if a Scheme object is an ENTITY.



Role: This function is overloaded and can be used in three ways.

Determines if a Scheme object is an ENTITY.
Determines if a Scheme object is an ENTITY of a type which passes a filter test.
Determines if a Scheme object is an ENTITY which also passes an additional test.

Effect: Read-only

Parameters:
o Scheme object.
filt filter.

include <ent_typ.hxx>

logical is_Scm_Entity ( ScmObject  e  ) 

Determines if a Scheme object is an ENTITY.



Role: This function is overloaded and can be used in three ways.

Determines if a Scheme object is an ENTITY.
Determines if a Scheme object is an ENTITY of a type which passes a filter test.
Determines if a Scheme object is an ENTITY which also passes an additional test.

Effect: Read-only

Parameters:
e Scheme object.

include <ent_typ.hxx>

logical is_Scm_Entity_List ( ScmObject   ) 

Determines if a Scheme object is an ENTITY_LIST.

logical is_Scm_Entray ( ScmObject  r  ) 

Determines if a Scheme object is an entray.



Effect: Read-only

Parameters:
r Scheme object.

include <eray_typ.hxx>

logical is_Scm_Gvector ( ScmObject   ) 

Is Scheme object a gvector.

logical is_Scm_Gvector_List ( ScmObject  list  ) 

Is scheme object a list of gvectors.

long is_Scm_Hoops_Key ( ScmObject  o  )  [inline]

Is scheme object of type 64 bit integer.

Determines if a scheme object is type hoops key

include <scheme.hxx>

logical is_Scm_Integer ( ScmObject  x  )  [inline]

Determines if a scheme object is of type integer.

logical is_Scm_Integer_Array ( ScmObject   ) 

Determines if a scheme object is of type integer array.

logical is_Scm_Law ( ScmObject   ) 

Is scjeme object of type law.

logical is_Scm_List ( ScmObject  o  )  [inline]

Determines if a scheme object is of type scheme list.

logical is_Scm_Long ( ScmObject  x  )  [inline]

Determines if a scheme object is of type long.

logical is_Scm_Long_Array ( ScmObject  o  )  [inline]

Determines if a scheme object is of type long array.

logical is_Scm_Null ( ScmObject  o  )  [inline]

Determines if a scheme object is of type null.

logical is_Scm_Number ( ScmObject  x  )  [inline]

Determines if a scheme object is of type number.

logical is_Scm_Number_Array ( ScmObject   ) 

Determines if a scheme object is of type scheme number array.

logical is_Scm_Pair ( ScmObject  o  )  [inline]

Determines if a scheme object is of type pair.

logical is_Scm_Procedure ( ScmObject  p  )  [inline]

Determines if a scheme object is of type procedure.

logical is_Scm_Real ( ScmObject  o  )  [inline]

Determines if a scheme object is of type real.

logical is_Scm_Real_List ( ScmObject  list  ) 

Determines if a Scheme object is a list of reals.



Effect: Read-only

Parameters:
list Scheme object.

include <scheme.hxx>

logical is_Scm_String ( ScmObject  s  )  [inline]

Determines if a scheme object is of type string.

logical is_Scm_Symbol ( ScmObject  s  )  [inline]

Determines if a scheme object is of type scheme symbol.

logical is_Scm_Vector ( ScmObject  v  )  [inline]

Is scheme object of type gvector.

ScmObject make_Scm_Boolean_List ( int  ,
logical *   
)

Creates scheme logical object from c++ logical.

ScmObject make_Scm_EmptyList (  )  [inline]

Make scheme void object.

ScmObject make_Scm_Entity ( const entity_handle ent_hdl  ) 

Creates a Scheme entity from an entity handle.



Role: This routine ensures that any side effects from making the Scheme object are registered in the proper history stream.

Parameters:
ent_hdl entity handle.

include <ent_typ.hxx>

ScmObject make_Scm_Entity ( ENTITY ent  ) 

Creates a Scheme entity from a C++ ENTITY.



Parameters:
ent entity.

include <ent_typ.hxx>

ScmObject make_Scm_Entity_List ( const entity_handle_list ent_hdls  ) 

Creates a list of Scheme entities from an entity_handle_list.



Role: This routine ensures that any side effects from making the Scheme objects are registered in the proper history stream.

Limitation: All entity handles must be from the same model.

Parameters:
ent_hdls entity handle list.

include <ent_typ.hxx>

ScmObject make_Scm_Entity_List ( int  num,
ENTITY elist[] 
)

Creates a list of Scheme entities from an ENTITY array.

ScmObject make_Scm_Entity_List ( const ENTITY_LIST elist  ) 

Creates a list of Scheme entities from an ENTITY_LIST object.



Parameters:
elist entity list.

include <ent_typ.hxx>

ScmObject make_Scm_Gvector ( const SPAvector  ) 

Make a scheme gvector from SPAvector.

ScmObject make_Scm_Gvector ( double  x,
double  y,
double  z 
)

Make a scheme gvector from three doubles.

ScmObject make_Scm_Gvector_List ( int  nvecs,
const SPAvector vecs 
)

Make a list of scheme gvectors from array of SPAvector.

ScmObject make_Scm_Integer ( int  n  )  [inline]

Creates scheme integer object from c++ integer.

ScmObject make_Scm_Integer_List ( int  ,
int *   
)

Creates scheme integer list object from c++ integer array.

ScmObject make_Scm_Law ( law eq  ) 

Make ACIS law from scheme object.

ScmObject make_Scm_Long ( long  l  )  [inline]

Creates scheme long object from c++ long.

ScmObject make_Scm_Long_List ( int  ,
long *   
)

Creates scheme long list from c++ long array.

ScmObject make_Scm_Real ( double  x  )  [inline]

Creates scheme real object from c++ double.

ScmObject make_Scm_Real_List ( int  ,
double *   
)

Creates scheme real list object from c++ double array.

ScmObject make_Scm_String ( const wchar_t *  mbs  ) 

Makes scheme string from wchar.

ScmObject make_Scm_String ( wchar_t *  ws  ) 

Makes scheme string from c++ wide char.

ScmObject make_Scm_String ( const char *  s  ) 

Makes scheme string from c++ chars.

ScmObject make_Scm_Tensor ( tensor t  ) 

Make scheme tensor object from tensor.

void refresh_all ( logical  update_sils = FALSE  ) 

Refreshes all views.



Effect: System routine

include <part_ctx.hxx>

int scheme_process ( const char *  inpLine,
int  echo 
)

Builds and evaluates a Scheme command, optionally echoing the prompt and result.



Role: scheme_process is called repeatedly with input lines that partially form a Scheme command. After each invocation, the function returns the current nesting level of parenthesis. When it has compiled a complete Scheme command with matching parentheses and quotes (the nesting level returns as 0), it evaluates the command by calling do_scheme. All Scheme procedures in the input string are evaluated before returning.

Effect: System routine

Parameters:
inpLine command string.
echo echo.

include <sprocess.h>

const char* SchemeCommand ( const char *  inpLine,
param_string scheme_result,
int &  nest_level 
)

Evaluates Scheme expressions given as a character string.



Role: Evaluates incomplete or multiple Scheme expressions. Use this function when the expression to be evaluated may not be complete. It looks for matching sets of parentheses and evaluates the expression when the parentheses balance. A string that contains either a partial expression or multiple expressions can be passed in.

If the command string contains more than one expression, the function evaluates the first expression found, sets the scheme_result argument, and returns the part of the command that has not been evaluated yet. When there is a partial expression, the nest_level argument sets to the number of right parentheses required to balance the expression.

The function returns NULL when nothing remains in the command string to be evaluated. It retains partial expressions and uses them as the start of an expression the next time SchemeCommand is called.

The following example illustrates the use of SchemeCommand:

    int nestlevel = 0;
    param_string result;
    const char* cmdstr = command_string;

    while(*cmdstr) {
        cmdstr = SchemeCommand(cmdstr, result, nestlevel);
        const char* result_string = result;
        if (nestlevel == 0 && *result_string) {
            printf("%s\n", result);
        }
    }
 
Effect: System routine

Parameters:
inpLine Scheme expression.
scheme_result returns result of first expression evaluation.
nest_level returns level of parentheses nesting.

include <scm_eval.hxx>

int SchemeEvaluate ( const char *  str  ) 

Evaluates a string or Scheme object.



Role: This function is overloaded.

It evaluates an expression given as a character string. This is useful for evaluating the expression for its side effects. The function does not return the result of evaluating the expression. The function returns 0 if the procedure successfully evaluates; otherwise, it returns an exception code.

Effect: System routine

Parameters:
str command string.

include <scm_eval.hxx>

int SchemeEvaluate ( const char *  str,
param_string result_string 
)

Evaluates a string or Scheme object.



Role: This function is overloaded.

It evaluates an expression given by a character string, and returns the result as a param_string. The param_string is cast to a char*. The function returns 0 if the procedure successfully evaluates; otherwise, it returns an exception code.

Effect: System routine

Parameters:
str command string.
result_string returns result.

include <scm_eval.hxx>

int SchemeEvaluate ( const char *  str,
ScmObject result 
)

Evaluates a string or Scheme object.



Role: This function is overloaded.

It evaluates a Scheme expression for its result, returned as a Scheme object. This version of SchemeEvaluate evaluates an expression that is given as a character string, and returns the result as a Scheme object. This has the benefit of not having to convert the result to a char* and back with the resulting potential for loss of precision. The is_Scm_(type) and get_Scm_(type) functions are called to check the result and convert it into a C++ object. The function returns 0 if the procedure successfully evaluates; otherwise, it returns an exception code.

Effect: System routine

Parameters:
str command string.
result returns result.

include <scm_eval.hxx>

int SchemeEvaluate ( ScmObject  expr,
ScmObject result 
)

Evaluates a string or Scheme object.



Role: This function is overloaded.

It evaluates a Scheme expression that is already a Scheme object. This version of SchemeEvaluate accepts a Scheme expression that has already been parsed into a Scheme object. Because it does not have to go through the Scheme reader to convert a string into an object, it is faster to evaluate the same expression many times. The expression to be evaluated must be protected from garbage collection if the repeated evaluation is not done within the scope of a single C++ procedure. The function returns 0 if the procedure successfully evaluates; otherwise, it returns an exception code.

Effect: System routine

Parameters:
expr Scheme expression.
result returns result.

include <scm_eval.hxx>

int SchemeFuncall ( ScmObject  proc,
ScmObject  args,
ScmObject result 
)

Evaluates an object that is a Scheme procedure against a list of arguments.



Role: Evaluates a Scheme object that is a procedure with arguments. Use this specialized evaluator when writing hook functions to be called from C++.

The first argument is a Scheme procedure; the second argument is a list of Scheme objects containing the arguments to be passed to the procedure.

The function passes back a ScmObject containing the result of the operation. The function returns 0 if the procedure is successful; otherwise, it returns an exception code.

Effect: System routine

Parameters:
proc Scheme procedure.
args arguments to the procedure.
result returns result of evaluation.

include <scm_eval.hxx>

logical SchemeGetValue ( const char *  expression,
ENTITY *&  value 
)

Gets the value of a Scheme expression that returns an ENTITY*.



Role: Gets the value of a specific data type returned by a Scheme expression when the data type returned by the expression is already known. This function return TRUE if the expression successfully evaluates and the result returns; otherwise, it returns FALSE. SchemeEvaluate can also be used.

This function is overloaded.

Effect: System routine

Parameters:
expression string to evaluate.
value returns ENTITY* value.

include <scm_eval.hxx>

logical SchemeGetValue ( const char *  expression,
double &  value 
)

Gets the value of a Scheme expression that returns a double.



Role: Gets the value of a specific data type returned by a Scheme expression when the data type returned by the expression is already known. This function return TRUE if the expression successfully evaluates and the result returns; otherwise, it returns FALSE. SchemeEvaluate can also be used.

This function is overloaded.

Effect: System routine

Parameters:
expression string to evaluate.
value returns double value.

include <scm_eval.hxx>

logical SchemeGetValue ( const char *  expression,
int &  value 
)

Gets the value of a Scheme expression that returns an int.



Role: Gets the value of a specific data type returned by a Scheme expression when the data type returned by the expression is already known. This function return TRUE if the expression successfully evaluates and the result returns; otherwise, it returns FALSE. SchemeEvaluate can also be used.

This function is overloaded.

Effect: System routine

Parameters:
expression string to evaluate.
value returns integer value.

include <scm_eval.hxx>

int SchemeLoad ( const char *  filename,
logical  journal 
)

Loads a Scheme file into memory via journal:load.



Role: The function returns 0 if the loaded procedure successfully evaluates; otherwise, it returns an exception code.

Effect: System routine

Parameters:
filename file to load.

include <scm_eval.hxx>

int SchemeLoad ( const char *  filename  ) 

Loads a Scheme file into memory.



Role: The function returns 0 if the loaded procedure successfully evaluates; otherwise, it returns an exception code.

Effect: System routine

Parameters:
filename file to load.

include <scm_eval.hxx>

int SchemeObjectToString ( ScmObject  obj,
param_string result_string 
)

Converts a Scheme object to a string.



Role: Returns 0 if the operation is successful.

Effect: System routine

Parameters:
obj Scheme object.
result_string returns string.

include <scm_eval.hxx>

logical SchemeSetVariable ( const char *  variable_name,
const char *  value 
)

Sets the value of a Scheme variable.



Role: Sets the value of a Scheme variable of a specific data type when the data type of that variable is already known. If the variable does not yet exist a new variable with the given name is created using define.

This function is overloaded.

Effect: System routine

Parameters:
variable_name name of variable to set.
value value to set.

include <scm_eval.hxx>

logical SchemeSetVariable ( const char *  variable_name,
ENTITY value 
)

Sets the value of a Scheme variable.



Role: Sets the value of a Scheme variable of a specific data type when the data type of that variable is already known. If the variable does not yet exist a new variable with the given name is created using define.

This function is overloaded.

Effect: System routine

Parameters:
variable_name name of variable to set.
value value to set.

include <scm_eval.hxx>

logical SchemeSetVariable ( const char *  variable_name,
double  value 
)

Sets the value of a Scheme variable.



Role: Sets the value of a Scheme variable of a specific data type when the data type of that variable is already known. If the variable does not yet exist a new variable with the given name is created using define.

This function is overloaded.

Effect: System routine

Parameters:
variable_name name of variable to set.
value value to set.

include <scm_eval.hxx>

logical SchemeSetVariable ( const char *  variable_name,
int  value 
)

Sets the value of a Scheme variable.



Role: Sets the value of a Scheme variable of a specific data type when the data type of that variable is already known. If the variable does not yet exist a new variable with the given name is created using define.

This function is overloaded.

Effect: System routine

Parameters:
variable_name name of variable to set.
value value to set.

include <scm_eval.hxx>

ScmObject scm_Car ( ScmObject  o  )  [inline]

Get car from scheme list.

ScmObject scm_Cdr ( ScmObject  o  )  [inline]

Get cdr from schmeme list.

int Scm_List_Length ( ScmObject  o  )  [inline]

Get number of elements in scheme list.

void set_Scm_Gvector ( ScmObject  ,
const SPAvector  
)

Change the coordintates of a scheme gvector using the coordintates of input SPAvector.

void start_entity_creation ( void   ) 

Prepares for the definition of a new ENTITY.



Role: Use this routine in conjunction with start_entity_creation to bracket modifications to entities. start_entity_creation and end_entity_creation can be nested.

Using start_entity_creation, end_entity_creation, start_entity_modification and end_entity_modification or any associated wrapper functions is not recommended.

Effect: System routine

include <ent_utl.hxx>

void start_entity_modification ( void   ) 

Prepares for ENTITY modification.



Role: Use this routine in conjunction with end_entity_modification to bracket modifications to entities. start_entity_modification and end_entity_modification can be nested.

Using start_entity_creation, end_entity_creation, start_entity_modification, and end_entity_modification or any associated wrapper functions is not recommended.

Effect: System routine

include <ent_utl.hxx>

int StringToSchemeObject ( const char *  str,
ScmObject result 
)

Reads a string into a Scheme object.



Role: Returns 0 if the operation is successful.

Effect: System routine

Parameters:
str input string.
result returns Scheme object.

include <scm_eval.hxx>

void update_entity ( ENTITY ,
logical  redisplay = TRUE 
)

update_entity is used to update an ENTITY when it was been modified.

It invokes the update method of the PART_CONTEXT that the ENTITY belongs to. The redisplay argument controls whether or not the display of the ENTITY is updated. It is passed to PART_CONTEXT::update.

include <ent_utl.hxx>