Home

SPAGROUP Class Reference

An implementation of a SPACOLLECTION with predefined actions and behaviors. More...

#include <group.hxx>

Inheritance diagram for SPAGROUP:

Inheritance graph
[legend]
Collaboration diagram for SPAGROUP:

Collaboration graph
[legend]

List of all members.

Public Member Functions

void add ()
 If this ENTITY is use counted, adds one to the count.
void add_ent (ENTITY *ent)
 Adds an entity to the collection.
virtual void add_member (ENTITY *ent)
 Notifies this SPACOLLECTION that a member ENTITY is added to the collection.
virtual logical apply_transform (const SPAtransf &t, ENTITY_LIST &list, logical negate=FALSE, logical reset_pattern=TRUE)
 Transforms this ENTITY.
ATTRIBattrib () const
 Returns this ENTITY's attribute pointer, or NULL if there is no attached attribute.
ENTITYbackup ()
 Creates a duplicate record and a change bulletin, if needed, as a backup for roll back.
SPAboxbound () const
 Returns the pointer to the bounding box.
int bulletin_count () const
 Returns the number of bulletins referring to this ENTITY.
virtual logical call_method (METHOD_ID const &, METHOD_ARGS const &)
 Executes the implementation function for a routine virtual method.
void clear ()
 Remove the entities in the collection.
virtual ENTITYcopy_data (ENTITY_LIST &, pointer_map *pm=NULL, logical dpcpy_skip=FALSE, SCAN_TYPE reason=SCAN_COPY) const
 Allocates a new ENTITY and calls copy_common to fill it in.
virtual void copy_member (ENTITY *ent, ENTITY *copy_ent)
 Notifies this SPACOLLECTION that a member has been copied.
virtual void copy_scan (ENTITY_LIST &, SCAN_TYPE reason=SCAN_COPY, logical dpcpy_skip=FALSE) const
 Adds dependent ENTITYs of this ENTITY to the list of ENTITYs to be copied.
virtual logical copyable () const
 Indicates whether this collection should be included when the member entity is copied.
int count () const
 Returns the number of entities in the collection including the tombstones.
virtual void debug_ent (FILE *) const
 Prints the type and address of this ENTITY, roll back pointer, attributes, and any unknown subtype information.
virtual logical deletable () const
 Indicates whether or not this ENTITY is normally destroyed by lose.
virtual void fix_pointers (ENTITY *[], SCAN_TYPE reason=SCAN_COPY)
 Converts pointers from copy indices into real pointers.
virtual void geomchanged_member (ENTITY *ent)
 Notifies this SPACOLLECTION that a member ENTITY's geometry changed during a modeling operation.
collection_copy_behavior get_collection_copy_behavior (void) const
 Get the copy behavior for a collection.
collection_empty_behavior get_collection_empty_behavior (void) const
 Get the empty behavior for a collection.
collection_save_behavior get_collection_save_behavior (void) const
 Get the save behavior for a collection.
copy_member_action get_copy_member_action (void) const
 Get the copy action for a collection.
geomchanged_member_action get_geomchanged_member_action (void) const
 Get the geometry changed action for a collection.
merge_member_action get_merge_member_action (void) const
 Get the merge action for a collection.
replace_member_action get_replace_member_action (void) const
 Get the replace action for a collection.
split_member_action get_split_member_action (void) const
 Get the split action for a collection.
tolerant_member_action get_tolerant_member_action (void) const
 Get the tolerant action for a collection.
trans_member_action get_trans_member_action (void) const
 Get the trans action for a collection.
HISTORY_STREAMhistory () const
 Returns a pointer to the history stream for this ENTITY.
virtual int identity (int=0) const
 Returns a type identifier for this ENTITY.
void init () const
 Initializes an iteration over the collection using next.
virtual logical is_deepcopyable () const
 Returns TRUE if this ENTITY can be deep copied.
virtual logical is_use_counted () const
 Indicates if this ENTITY is use-counted or not.
int iteration_count () const
 Returns the number of entities in the collection excluding the tombstones.
int lookup (ENTITY const *ent) const
 Lookup the specified ENTITY in the collection and return its index.
virtual int lookup (logical) const
 Looks up this ENTITY in the appropriate debug list.
virtual void lose ()
 Posts a delete bulletin to the bulletin board indicating the instance is no longer used in the active model.
virtual void merge_member (ENTITY *ent, ENTITY *other_ent, logical del_member)
 Notifies this SPACOLLECTION that a member ENTITY is about to be merged with a given ENTITY.
logical needs_rollback () const
 Checks whether or not the record is already backed up.
ENTITYnext () const
 Returns the next undeleted (live) entity in the collection.
ENTITYnext_from (int &ind)
 Returns the next non-deleted entity after the index given without affecting the member variables used by init and next.
ENTITYoperator[] (int i) const
 Returns the collection list specified by the given number.
virtual ENTITYowner () const
 Identifies the owner, if any, from the data structure of this ENTITY.
void rehash ()
 Removes the tombstones in the collection and returns a collection of live entities.
void remove (logical i)
 Decrements the use count of this ENTITY.
void remove_ent (ENTITY *)
 Removes an entity from the collection.
virtual void remove_member (ENTITY *ent)
 Notifies this SPACOLLECTION that a member ENTITY is removed from the collection.
virtual void replace_member (ENTITY *ent, ENTITY *other_ent, logical replace_member)
 Notifies this SPACOLLECTION that a member ENTITY is about to be replaced by a given ENTITY.
void restore_common ()
 Restores data for a record from disc to memory.
void restore_end (char *id_str)
 Terminates a restore record.
BULLETIN *& rollback () const
 Returns the pointer to the bulletin board entry for this ENTITY.
virtual logical savable () const
 Indicates whether this collection should be included when the member entity is saved.
virtual void save (ENTITY_LIST &) const
 Performs a save operation.
void set_attrib (ATTRIB *attr)
 Changes the attribute pointer of this ENTITY to point to the given attribute.
void set_bound (SPAbox *b_box)
 Sets the bounding box for a group.
collection_copy_behavior set_collection_copy_behavior (collection_copy_behavior)
 Set the copy behavior for a collection.
collection_empty_behavior set_collection_empty_behavior (collection_empty_behavior)
 Set the empty behavior for a collection.
collection_save_behavior set_collection_save_behavior (collection_save_behavior b)
 Set the save behavior for a collection.
copy_member_action set_copy_member_action (copy_member_action a)
 Set the copy action for a collection.
logical set_copyable (logical b)
 Specify if the collection is copyable or not.
geomchanged_member_action set_geomchanged_member_action (geomchanged_member_action a)
 Set the geometry changed action for a collection.
merge_member_action set_merge_member_action (merge_member_action a)
 Set the merge action for a collection.
replace_member_action set_replace_member_action (replace_member_action a)
 Set the replace action for a collection.
logical set_savable (logical b)
 Specify if the collection is savable or not.
split_member_action set_split_member_action (split_member_action a)
 Set the split action for a collection.
tolerant_member_action set_tolerant_member_action (tolerant_member_action a)
 Set the tolerant action for a collection.
trans_member_action set_trans_member_action (trans_member_action a)
 Set the trans action for a collection.
virtual void set_use_count (int use)
 Sets the reference use count of this ENTITY.
virtual unsigned size () const
 Returns the size, in bytes, of this ENTITY.
 SPAGROUP (ENTITY_LIST &entlist)
 C++ initialize constructor requests memory for this object and populates it with the data supplied as arguments.
 SPAGROUP (ENTITY *ent)
 C++ initialize constructor requests memory for this object and populates it with the data supplied as arguments.
 SPAGROUP ()
 C++ allocation constructor requests memory for this object but does not populate it.
virtual void split_member (ENTITY *ent, ENTITY *new_ent)
 Notifies this SPACOLLECTION that a member has been split into two parts.
tag_id_type tag (logical assign_new=TRUE) const
 Data reading routine.
virtual void tolerant_member (ENTITY *ent, ENTITY *other_ent)
 Notifies this SPACOLLECTION that a member ENTITY is replaced by a tolerant ENTITY if the ENTITY is a non-tolerant ENTITY, or is replace by a non-tolerant ENTITY if the ENTITY is a tolerant ENTITY.
int tombstones () const
 Returns the number of entities in the collection list, minus the use count.
virtual void trans_member (ENTITY *ent, const SPAtransf &transf)
 Notifies this SPACOLLECTION that a member is about to be transformed.
virtual const char * type_name () const
 Returns a name for this ENTITY's type.
virtual int use_count () const
 Returns the use count of this ENTITY.

Static Public Member Functions

static MethodFunction add_method (METHOD_ID const &, MethodFunction)
 Registers an implementation function for a run-time virtual method.

Protected Member Functions

virtual logical bulletin_no_change_vf (const ENTITY *other, logical identical_comparator) const
 Compares subclass data.
void check_destroy () const
 Checks that entity deletion is legitimate.
void copy_common (ENTITY_LIST &list, const ENTITY *from, pointer_map *pm=NULL, logical dpcpy_skip=FALSE, SCAN_TYPE reason=SCAN_COPY)
 Fills in this ENTITY with data from the copied ENTITY, converting pointers into indices in the supplied ENTITY_LIST.
void fix_common (ENTITY *[], SCAN_TYPE reason=SCAN_COPY)
 Converts pointers from copy indices into real pointers.
void fixup_copy (ENTITY *rollback) const
 Fixes any pointers in the ENTITY after copying for backup.
virtual void full_size (SizeAccumulator &, logical) const
 Increments the SizeAccumulator by the size, in bytes, of everything owned by this ENTITY and, optionally, of the ENTITY itself.
virtual logical holds_pattern () const
 Returns TRUE if this entity can have a pattern_holder.
logical is_unknown_entity (void) const
 Returns TRUE if this is an unknown entity.
virtual void roll_notify (BULLETIN_TYPE bulletin_type, ENTITY *ent)
 Fields notifications of rollback operations.
void save_begin (logical terminator=FALSE) const
 Starts a save record.
void save_common (ENTITY_LIST &) const
 Handles the save operation.
void save_end (ENTITY_LIST &list) const
 Terminates a save record.


Detailed Description

An implementation of a SPACOLLECTION with predefined actions and behaviors.


Role: A SPAGROUP is a an implementation of a SPACOLLECTION. Like a SPACOLLECTION, a SPAGROUP is an ENTITY designed to store a list of entities. However, a SPAGROUP has slightly different behaviors and actions when its members are modeled upon, copied, deleted, etc.

The specific actions, behaviors, and "ables" used by SPAGROUP:

Actions:
split_member_action: SplitMemberAdd
merge_member_action: MergeMemberAdd
copy_member_action: CopyMemberAdd
trans_member_action: TransMemberKeep
replace_member_action: ReplaceMemberIgnore
tolerant_member_action: TolerantMemberSwap
geomchanged_member_action: GeomChangedMemberKeep

Behaviors:
collection_save_behavior: SaveAll
collection_copy_behavior: CopyPartial
collection_empty_behavior: EmptyRemove

"Ables":
savable: TRUE
copyable: TRUE

The SPAGROUP's default behaviors require the application to consider its workflow when saving, copying, and deleting the SPAGROUP. Failure to take these behaviors into consideration will lead to memory/resource leaks. Consider the following example: create two independent bodies and put both into a SPAGROUP. The following use-cases apply:

Please refer to the "SPACOLLECTION Overview" Technical Article for a detailed explanation of each action, behavior, and "able", as well as numerous other use-cases.

See also:
SPACOLLECTION, is_SPAGROUP, api_ct_add_to_group, api_ct_remove_from_group, api_ct_lose_group, api_ct_return_groups, api_ct_make_group, split_member_action, merge_member_action, copy_member_action, trans_member_action, replace_member_action, tolerant_member_action, geomchanged_member_action, collection_save_behavior, collection_copy_behavior, collection_empty_behavior

Constructor & Destructor Documentation

SPAGROUP::SPAGROUP (  ) 

C++ allocation constructor requests memory for this object but does not populate it.



Role: The allocation constructor is used primarily by restore. Applications should call this constructor only with the overloaded new operator inherited from the ENTITY class (for example, x=new SPAGROUP), because this reserves the memory on the heap, a requirement to support roll back and history management.

SPAGROUP::SPAGROUP ( ENTITY ent  ) 

C++ initialize constructor requests memory for this object and populates it with the data supplied as arguments.



Role: Applications should call this constructor only with the overloaded new operator inherited from the ENTITY class (for example, x=new SPAGROUP(...)), because this reserves the memory on the heap, a requirement to support roll back and history management.

Parameters:
ent entity.

SPAGROUP::SPAGROUP ( ENTITY_LIST entlist  ) 

C++ initialize constructor requests memory for this object and populates it with the data supplied as arguments.



Role: Applications should call this constructor only with the overloaded new operator inherited from the ENTITY class (for example, x=new SPAGROUP(...)), because this reserves the memory on the heap, a requirement to support roll back and history management.

Parameters:
entlist list of entities.


Member Function Documentation

void SPAGROUP::add (  )  [inline, virtual]

If this ENTITY is use counted, adds one to the count.



Role: If this ENTITY is not use counted, signals an error.

Every held pointer to a use counted ENTITY should be declared by calling add. There should a corresponding call to remove when the user is done with the pointer. For normal ENTITYs, simply call lose when the ENTITY is no longer part of the active model. For use counted ENTITYs, the implementations of add and remove come from macros in usecount.hxx. Use counted ENTITYs implemented without the macros should implement these virtual methods manually.

Reimplemented from ENTITY.

void SPACOLLECTION::add_ent ( ENTITY ent  )  [inherited]

Adds an entity to the collection.



Parameters:
ent entity.

virtual void SPACOLLECTION::add_member ( ENTITY ent  )  [virtual, inherited]

Notifies this SPACOLLECTION that a member ENTITY is added to the collection.



Role: The application has the chance to determine what to do with the collection when the member entity is added to the collection. The default action is to do nothing. If the default action doesn't meet the application's needs, this method should be implemented by the application in its derived collection.

Parameters:
ent the member ENTITY that is added to the collection

static MethodFunction SPAGROUP::add_method ( METHOD_ID const &  method_id,
MethodFunction  method_func 
) [static]

Registers an implementation function for a run-time virtual method.



Role: (Supplied by the ENTITY_FUNCTIONS and UTILITY_DEF macros.)

Parameters:
method_id method id.
method_func method function.

Reimplemented from SPACOLLECTION.

virtual logical ENTITY::apply_transform ( const SPAtransf t,
ENTITY_LIST list,
logical  negate = FALSE,
logical  reset_pattern = TRUE 
) [virtual, inherited]

Transforms this ENTITY.



Role: The ENTITY_LIST is used to prevent sub-entities from being transformed more than once. This method is not included with the standard ENTITY methods in order to allow nontransformable ENTITYs to use the default implementation. (Supplied by the TRANSFORM_FUNCTION and TRANSFORM_DEF macros.)

Parameters:
t the transform to apply.
list list of entities to which the transform has already been applied.
negate negation flag.
reset_pattern internal use only.

Reimplemented in ASM_ASSEMBLY, ASM_MODEL_REF, BODY, COEDGE, CURVE, EDGE, ERROR_ENTITY, FACE, LAW, LOOP, LUMP, APATTERN, PCURVE, APOINT, SHELL, SUBSHELL, SURFACE, TCOEDGE, TEDGE, TEXT_ENT, TVERTEX, VERTEX, WCS, and WIRE.

ATTRIB* ENTITY::attrib (  )  const [inline, inherited]

Returns this ENTITY's attribute pointer, or NULL if there is no attached attribute.

ENTITY* ENTITY::backup (  )  [inherited]

Creates a duplicate record and a change bulletin, if needed, as a backup for roll back.



Role: The duplication is done via the virtual function make_copy, to let each derived type do its own backup. Before performing a change, each routine checks whether the data structure is posted on the bulletin board. If not, the posting is done automatically. Called by all system change functions.

SPAbox* SPAGROUP::bound (  )  const [inline]

Returns the pointer to the bounding box.

int ENTITY::bulletin_count (  )  const [inline, inherited]

Returns the number of bulletins referring to this ENTITY.

virtual logical ENTITY::bulletin_no_change_vf ( const ENTITY other,
logical  identical_comparator 
) const [protected, virtual, inherited]

Compares subclass data.



Role: This virtual method is called by bulletin_no_change. When the identical_comparator argument is TRUE, it requires an exact match when comparing doubles, and returns the result of memcmp as a default (for non-overridden subclasses). A FALSE argument indicates tolerant compares, in which case FALSE is returned by default.

Parameters:
other other ENTITY in the bulletin.
identical_comparator identity compare flag.

Reimplemented in BODY, COEDGE, CONE, CURVE, EDGE, ELLIPSE, FACE, HELIX, INTCURVE, LOOP, LUMP, PCURVE, PLANE, APOINT, SHELL, SPHERE, SPLINE, STRAIGHT, SUBSHELL, SURFACE, TCOEDGE, TEDGE, TORUS, TVERTEX, UNDEFC, VERTEX, and WIRE.

virtual logical SPAGROUP::call_method ( METHOD_ID const &  method_id,
METHOD_ARGS const &  method_args 
) [virtual]

Executes the implementation function for a routine virtual method.



Role: (Supplied by the ENTITY_FUNCTIONs and UTILITY_DEF macros).

Parameters:
method_id method id.
method_args method args.

Reimplemented from SPACOLLECTION.

void ENTITY::check_destroy (  )  const [inline, protected, inherited]

Checks that entity deletion is legitimate.



Role: This method complains if there is an attempt to delete an entity other than through the private member function destroy, which is carefully controlled.

void SPACOLLECTION::clear (  )  [inherited]

Remove the entities in the collection.

void ENTITY::copy_common ( ENTITY_LIST list,
const ENTITY from,
pointer_map pm = NULL,
logical  dpcpy_skip = FALSE,
SCAN_TYPE  reason = SCAN_COPY 
) [protected, inherited]

Fills in this ENTITY with data from the copied ENTITY, converting pointers into indices in the supplied ENTITY_LIST.



Role: Supports the copy operation. (Supplied by the ENTITY_FUNCTIONS and COPY_DEF macros.) Whenever the operation encounters a pointer to a dependent ENTITY, it find the index of the latter in the supplied ENTITY_LIST and sets the corresponding pointer in the copy to that index.

Parameters:
list list of ENTITYs being copied.
from original ENTITY being copied.
pm pointer map.
dpcpy_skip Used only by the base ENTITY and base ATTRIB class. No other derived entity or attribute should need to utilize this value. This logical indicates how non- deepcopyable attributes are handled during a deep copy. If TRUE, the copy will continue even if it encounters attributes marked as not deep-copyable. By default (FALSE), if any attributes that are found to be not deep-copyable, a sys_error will be thrown. (This flag only effects how attributes are handled; any non-deepcopyable non-attribute entities encountered will cause a sys_error to be thrown regardless of this flag's setting.)
reason type of scan.

virtual ENTITY* SPAGROUP::copy_data ( ENTITY_LIST list,
pointer_map pm = NULL,
logical  dpcpy_skip = FALSE,
SCAN_TYPE  reason = SCAN_COPY 
) const [virtual]

Allocates a new ENTITY and calls copy_common to fill it in.



Role: Supports the copy operation. (Supplied by the ENTITY_FUNCTIONS and UTILITY_DEF macros.)

Parameters:
list ENTITYs to copy.
pm pointer map.
dpcpy_skip Used only by the base ENTITY and base ATTRIB class. No other derived entity or attribute should need to utilize this value. This logical indicates how non- deepcopyable attributes are handled during a deep copy. If TRUE, the copy will continue even if it encounters attributes marked as not deep-copyable. By default (FALSE), if any attributes that are found to be not deep-copyable, a sys_error will be thrown. (This flag only effects how attributes are handled; any non-deepcopyable non-attribute entities encountered will cause a sys_error to be thrown regardless of this flag's setting.)
reason scan type.

Reimplemented from SPACOLLECTION.

virtual void SPACOLLECTION::copy_member ( ENTITY ent,
ENTITY copy_ent 
) [virtual, inherited]

Notifies this SPACOLLECTION that a member has been copied.



Role: The application has the chance to determine what to do with collection. The default action is to keep the copied entity in the collection. If an application derives a new collection and the predefined copy_member_actions don't satisfy the application needs, this method should be implemented by the application in its derived collection.

Parameters:
ent the member ENTITY that has been copied.
copy_ent the new ENTITY that is a copy of the member ENTITY.
See also:
copy_member_action, SPACOLLECTION::set_copy_member_action, SPACOLLECTION::get_copy_member_action

virtual void SPAGROUP::copy_scan ( ENTITY_LIST list,
SCAN_TYPE  reason = SCAN_COPY,
logical  dpcpy_skip = FALSE 
) const [virtual]

Adds dependent ENTITYs of this ENTITY to the list of ENTITYs to be copied.



Role: Supports the copy operation. (Supplied by the ENTITY_FUNCTIONS and SCAN_DEF macros.) The default type of scan (reason) is SCAN_COPY.

Parameters:
list ENTITYs to copy.
reason type of copy.
dpcpy_skip Used only by the base ENTITY and base ATTRIB class. No other derived entity or attribute should need to utilize this value. This logical indicates how non- deepcopyable attributes are handled during a deep copy. If TRUE, the copy will continue even if it encounters attributes marked as not deep-copyable. By default (FALSE), if any attributes that are found to be not deep-copyable, a sys_error will be thrown. (This flag only effects how attributes are handled; any non-deepcopyable non-attribute entities encountered will cause a sys_error to be thrown regardless of this flag's setting.)

Reimplemented from SPACOLLECTION.

virtual logical SPACOLLECTION::copyable (  )  const [virtual, inherited]

Indicates whether this collection should be included when the member entity is copied.

int SPACOLLECTION::count (  )  const [inline, inherited]

Returns the number of entities in the collection including the tombstones.

virtual void SPAGROUP::debug_ent ( FILE *  file_pointer  )  const [virtual]

Prints the type and address of this ENTITY, roll back pointer, attributes, and any unknown subtype information.



Role: This method is called by DEBUG_LIST::debug for an entirely unknown ENTITY type, or at the start of any derived class's debug_ent method. Each derived class's debug_ent method uses the debug function described in the Spatial Product Documentation to print information added at that level. (Supplied by the ENTITY_FUNCTIONS and DEBUG_DEF macros.)

Parameters:
file_pointer file pointer.

Reimplemented from SPACOLLECTION.

virtual logical SPAGROUP::deletable (  )  const [virtual]

Indicates whether or not this ENTITY is normally destroyed by lose.



Role: Returns FALSE if the ENTITY is shared among multiple owners by means of a use count, and so gets destroyed implicitly when every owner has been lost. Most ENTITYs are destroyed explicitly using lose, so the default returns TRUE.

Reimplemented from ENTITY.

void SPAGROUP::fix_common ( ENTITY array[],
SCAN_TYPE  reason = SCAN_COPY 
) [protected]

Converts pointers from copy indices into real pointers.



Role: Called by fix_pointers. For ENTITY, converts the attribute pointer, and any pointers in the unknown_entity_text record. (Supplied by the ENTITY_FUNCTIONS and FIX_POINTER_DEF macros.)

Parameters:
array ENTITY pointers to fix.
reason type of scan.

Reimplemented from SPACOLLECTION.

virtual void SPAGROUP::fix_pointers ( ENTITY entity_array[],
SCAN_TYPE  reason = SCAN_COPY 
) [virtual]

Converts pointers from copy indices into real pointers.



Role: The fix_pointers method for each entity in the restore array is called, with the given array as an argument. This calls fix_common, which calls its parent's fix_common, and then corrects any pointers in the derived class. In practice there is never anything special for fix_pointers to do, but it is retained for consistency and compatibility. (Supplied by the ENTITY_FUNCTIONS and UTILITY_DEF macros.)

Parameters:
entity_array ENTITY pointers to fix.
reason type of scan.

Reimplemented from SPACOLLECTION.

void ENTITY::fixup_copy ( ENTITY rollback  )  const [protected, inherited]

Fixes any pointers in the ENTITY after copying for backup.



Role: For ENTITY, this method has nothing to do, but because it is called by all data types, it is required to terminate the copy chain. (Supplied by the ENTITY_FUNCTIONS and SIMPLE_COPY_CONE macros.)

Parameters:
rollback the ENTITY to copy for backup.

Reimplemented in GA_WORKSPACE.

virtual void SPAGROUP::full_size ( SizeAccumulator &  est,
logical  countSelf 
) const [protected, virtual]

Increments the SizeAccumulator by the size, in bytes, of everything owned by this ENTITY and, optionally, of the ENTITY itself.



Role: If countSelf is TRUE, increments the SizeAccumulator by the size, in bytes, of the ENTITY and everything owned by the ENTITY. If countSelf is FALSE, increments the SizeAccumulator by the size, in bytes, of everything owned by the ENTITY, but not including the size of the ENTITY itself.

For example, if an ENTITY contained a character string and full_size were called with countSelf == FALSE, the SizeAccumulator would be incremented by the size, in bytes, of the character string.

Reimplemented from SPACOLLECTION.

virtual void SPACOLLECTION::geomchanged_member ( ENTITY ent  )  [virtual, inherited]

Notifies this SPACOLLECTION that a member ENTITY's geometry changed during a modeling operation.



Role: The application has the chance to determine what to do with the collection when the member entity's geometry changed during a modeling operation. The default action is to keep the entity in the collection. If an application derives a new collection and the predefined geomchanged_member_actions don't satisfy the application needs, this method should be implemented by the application in its derived collection.

Parameters:
ent the member ENTITY whose geometry changed
See also:
geomchanged_member_action, SPACOLLECTION::set_geomchanged_member_action, SPACOLLECTION::get_geomchanged_member_action

collection_copy_behavior SPACOLLECTION::get_collection_copy_behavior ( void   )  const [inherited]

Get the copy behavior for a collection.

collection_empty_behavior SPACOLLECTION::get_collection_empty_behavior ( void   )  const [inherited]

Get the empty behavior for a collection.

collection_save_behavior SPACOLLECTION::get_collection_save_behavior ( void   )  const [inherited]

Get the save behavior for a collection.

copy_member_action SPACOLLECTION::get_copy_member_action ( void   )  const [inherited]

Get the copy action for a collection.

geomchanged_member_action SPACOLLECTION::get_geomchanged_member_action ( void   )  const [inherited]

Get the geometry changed action for a collection.

merge_member_action SPACOLLECTION::get_merge_member_action ( void   )  const [inherited]

Get the merge action for a collection.

replace_member_action SPACOLLECTION::get_replace_member_action ( void   )  const [inherited]

Get the replace action for a collection.

split_member_action SPACOLLECTION::get_split_member_action ( void   )  const [inherited]

Get the split action for a collection.

tolerant_member_action SPACOLLECTION::get_tolerant_member_action ( void   )  const [inherited]

Get the tolerant action for a collection.

trans_member_action SPACOLLECTION::get_trans_member_action ( void   )  const [inherited]

Get the trans action for a collection.

HISTORY_STREAM* ENTITY::history (  )  const [inline, inherited]

Returns a pointer to the history stream for this ENTITY.

virtual logical ENTITY::holds_pattern (  )  const [inline, protected, virtual, inherited]

Returns TRUE if this entity can have a pattern_holder.

For internal use only.

Reimplemented in BODY, COEDGE, CURVE, EDGE, FACE, LOOP, LUMP, PCURVE, APOINT, SHELL, SURFACE, VERTEX, and WIRE.

virtual int SPAGROUP::identity ( int  level = 0  )  const [virtual]

Returns a type identifier for this ENTITY.



Role: If level is unspecified or 0, returns the type identifier ENTITY_TYPE. If level is specified, returns ENTITY_TYPE for that level of derivation from ENTITY. The level of this class is defined as ENTITY_LEVEL.

A positive level specifies the level of derivation down from the ENTITY class to examine. ENTITY itself has level 0. If level is unspecified or 0, the type of the most specific class of object is returned. If level is 1, the type of the class one level down from ENTITY is returned. If level is 2, the type of the parent class 2 levels down from ENTITY is returned, and so on. If level is greater than the level of the instance, -1 ("unknown") is returned.

A negative level similarly specifies the level of derivation up from the most specific class of object returned.

(Supplied by the ENTITY_FUNCTIONS and UTILITY_DEF macros.)

Parameters:
level the derivation level at which the object is to be identified.

Reimplemented from SPACOLLECTION.

void SPACOLLECTION::init (  )  const [inline, inherited]

Initializes an iteration over the collection using next.

virtual logical SPAGROUP::is_deepcopyable (  )  const [virtual]

Returns TRUE if this ENTITY can be deep copied.

Reimplemented from SPACOLLECTION.

logical ENTITY::is_unknown_entity ( void   )  const [protected, inherited]

Returns TRUE if this is an unknown entity.

An unknown entity is one that is restored from SAT/SAB but is not native to the running app.

virtual logical ENTITY::is_use_counted (  )  const [virtual, inherited]

Indicates if this ENTITY is use-counted or not.



Role: The default implementation returns FALSE.

Reimplemented in CURVE, PCURVE, PHLV5_OCC, APOINT, REFINEMENT, RH_MATERIAL, RH_TEXTURE_SPACE, SURFACE, and VERTEX_TEMPLATE.

int SPACOLLECTION::iteration_count (  )  const [inline, inherited]

Returns the number of entities in the collection excluding the tombstones.

int SPACOLLECTION::lookup ( ENTITY const *  ent  )  const [inline, inherited]

Lookup the specified ENTITY in the collection and return its index.



Parameters:
ent entity

virtual int SPACOLLECTION::lookup ( logical  insert  )  const [virtual, inherited]

Looks up this ENTITY in the appropriate debug list.



Role: This method is not included among the standard ENTITY methods because often subclasses may wish to be included in their parent's debug list. This is done simply by not including a lookup method in the subclass.

When the logical argument is TRUE, the ENTITY is inserted into the debug list if it does not already exist in the list. If it is FALSE and the ENTITY does not exist in the list, a -1 is returned. (Supplied by the LOOK_FUNCTION and LOOKUP_DEF macros.)

Parameters:
insert flag to insert into debug list.

Reimplemented from ENTITY.

Reimplemented in GA_WORKSPACE.

virtual void SPAGROUP::lose (  )  [virtual]

Posts a delete bulletin to the bulletin board indicating the instance is no longer used in the active model.



Role: The lose methods for attached attributes are also called.

Reimplemented from SPACOLLECTION.

virtual void SPACOLLECTION::merge_member ( ENTITY ent,
ENTITY other_ent,
logical  del_member 
) [virtual, inherited]

Notifies this SPACOLLECTION that a member ENTITY is about to be merged with a given ENTITY.



Role: The application has the chance to determine what to do with the collection. After the merge, the member of this collection will be deleted if the logical argument del_member is TRUE; otherwise, it will be retained and the other entity will be deleted. The default action is to keep the merged entity in the collection. If an application derives a new collection and the predefined merge_member_actions don't satisfy the application needs, this method should be implemented by the application in its derived collection.

Parameters:
ent the member ENTITY that is merged
other_ent the ENTITY with which collectin's member entity is being merged.
del_member flag that the member of this collection will be deleted as part of the merge process.
See also:
merge_member_action, SPACOLLECTION::set_merge_member_action, SPACOLLECTION::get_merge_member_action

logical ENTITY::needs_rollback (  )  const [inline, inherited]

Checks whether or not the record is already backed up.

ENTITY* SPACOLLECTION::next ( void   )  const [inline, inherited]

Returns the next undeleted (live) entity in the collection.

ENTITY* SPACOLLECTION::next_from ( int &  ind  )  [inline, inherited]

Returns the next non-deleted entity after the index given without affecting the member variables used by init and next.

ind index

ENTITY* SPACOLLECTION::operator[] ( int  i  )  const [inline, inherited]

Returns the collection list specified by the given number.

virtual ENTITY* ENTITY::owner (  )  const [virtual, inherited]

Identifies the owner, if any, from the data structure of this ENTITY.



Role: A return value of NULL indicates no owner or an unidentifiable one. Objects of the ENTITY base class have no identifiable owner.

Reimplemented in ASM_MODEL_REF, ATTRIB, CELL, CFACE, COEDGE, CSHELL, CURVE, EDGE, EE_LIST, FACE, LOOP, LUMP, PCURVE, APOINT, SHELL, SUBSHELL, SUPERCELL, SURFACE, TRANSFORM, VERTEX, and WIRE.

void SPACOLLECTION::rehash (  )  [inherited]

Removes the tombstones in the collection and returns a collection of live entities.

void SPAGROUP::remove ( logical  lose_if_zero  )  [inline, virtual]

Decrements the use count of this ENTITY.



Role: If the use count reaches 0, the ENTITY's lose method is called if the argument lose_if_zero is set to TRUE. (If the entity is not use counted, an error is signaled.)

Every held pointer to a use counted ENTITY should be declared by calling add. There should a corresponding call to remove when the user is done with the pointer. For normal ENTITYs, simply call lose when the ENTITY is no longer part of the active model. For use counted ENTITYs, the implementations of add and remove come from macros in usecount.hxx. Use counted ENTITYs implemented without the macros should implement these virtual methods manually.

Parameters:
lose_if_zero flag to lose the ENTITY when the use count drops to 0.

Reimplemented from ENTITY.

void SPACOLLECTION::remove_ent ( ENTITY  )  [inherited]

Removes an entity from the collection.



ent entity

virtual void SPACOLLECTION::remove_member ( ENTITY ent  )  [virtual, inherited]

Notifies this SPACOLLECTION that a member ENTITY is removed from the collection.



Role: The application has the chance to determine what to do with the collection when the member entity is removed from the collection. The default action is to do nothing. If the default action doesn't meet the application's needs, this method should be implemented by the application in its derived collection.

Parameters:
ent the member ENTITY that is removed from the collection

virtual void SPACOLLECTION::replace_member ( ENTITY ent,
ENTITY other_ent,
logical  replace_member 
) [virtual, inherited]

Notifies this SPACOLLECTION that a member ENTITY is about to be replaced by a given ENTITY.



Role: The application has the chance to determine what to do with the collection After the replace, the member of this collection will be replaced if the logical argument replace_member is TRUE; otherwise, it will be retained and the other entity will be replaced. The default action is to keep the replaced entity in the collection. If an application derives a new collection and the predefined replace_member_actions don't satisfy the application needs, this method should be implemented by the application in its derived collection.

Parameters:
ent the member ENTITY that is replaced
other_ent the ENTITY by which collectin's member entity is being replaced.
del_member flag that the member of this collection will be replaced
See also:
replace_member_action, SPACOLLECTION::set_replace_member_action, SPACOLLECTION::get_replace_member_action

void SPAGROUP::restore_common (  ) 

Restores data for a record from disc to memory.



Role: Writes pointers as indices (fix_pointers turns them back into pointers) and returns a pointer to the ENTITY made. Generally, "common" functions that do the main work are protected, as they are called only from the main entry functions or by themselves up the derivation tree.

This method is public, however, because the main restore function is not a member function, and making it a friend would make it unable to be declared static, i.e., local to the defining module. (Supplied by the ENTITY_FUNCTIONS and RESTORE_DEF macros.)

    read_ptr  Pointer to record in save file for first attribute owned by entity.
    if (restore_version_number >= ENTITY_TAGS_VERSION)
       read_int      new tag 

Reimplemented from SPACOLLECTION.

void ENTITY::restore_end ( char *  id_str  )  [inherited]

Terminates a restore record.



Role: Reads any trailing text and fills in the unknown text pointer. Used only by the save/restore system.

Parameters:
id_str the id string.

virtual void ENTITY::roll_notify ( BULLETIN_TYPE  bulletin_type,
ENTITY ent 
) [protected, virtual, inherited]

Fields notifications of rollback operations.



Role: The first argument specifies the type of bulletin being rolled back (create, delete or change). In the case of a change notification, the second argument contains the information to be restored into this object. The base implementation, which is used for almost every derived class, does nothing at all.

Parameters:
bulletin_type type of bulletin being rolled back.
ent information to be restored into this argument.

Reimplemented in ANNOTATION, ASM_MODEL_REF, ATTRIB_INTCOED, ATTRIB_EFINT, ATTRIB_FFBLEND, ATTRIB_CONST_CHAMFER, COEDGE, ATTRIB_COL, CURVE, ATTRIB_DM2ACIS, EDGE, EE_LIST, FACE, GA_WORKSPACE, ID_ATTRIB, LOOP, ATTRIB_EYE_ATTACHED_MESH, PCURVE, PHLV5_OCC, APOINT, REFINEMENT, ATTRIB_RGB, RH_MATERIAL, RH_LIGHT, RH_BACKGROUND, RH_FOREGROUND, RH_TEXTURE_SPACE, SURFACE, TCOEDGE, TEDGE, TVERTEX, ATTRIB_VAR_BLEND, VERTEX, VERTEX_TEMPLATE, and WCS.

BULLETIN*& ENTITY::rollback (  )  const [inline, inherited]

Returns the pointer to the bulletin board entry for this ENTITY.

virtual logical SPACOLLECTION::savable (  )  const [virtual, inherited]

Indicates whether this collection should be included when the member entity is saved.

virtual void SPAGROUP::save ( ENTITY_LIST entity_list  )  const [virtual]

Performs a save operation.



Role: Calls save_begin, the particular class's save_common, and then save_end. (Supplied by the ENTITY_FUNCTIONS and UTILITY_DEF macros.)

This save method is just like any other save, except that it calls save_begin with an optional argument to suppress writing of a trailing dash, because save_common does not write out an identifier, or call any parent class's save_common.

Parameters:
entity_list ENTITYs to save.

Reimplemented from SPACOLLECTION.

void ENTITY::save_begin ( logical  terminator = FALSE  )  const [protected, inherited]

Starts a save record.



Role: Writes a preamble to a save file record, which contains any subclass identifiers not known to this version of ACIS. Called by the save method.

Parameters:
terminator terminator flag.

void SPAGROUP::save_common ( ENTITY_LIST entity_list  )  const [protected]

Handles the save operation.



Role: Writes out the savable data associated with the base class. In the case of ENTITY, saveable data is simply the attribute pointer. In the case of child classes derived from ENTITY, class-specific save_common methods handle the class-specific data. Called by the save method. (Supplied by the ENTITY_FUNCTIONS and SAVE_DEF macros.)

Each derived class's save_common method first writes out that class's identifier, calls its parent class's save_common method, and then writes out data particular to the derived class. Thus the save record consists of identifiers in leaf-to-base order, followed by class data in base-to-leaf order. As it writes out any ENTITY pointers, it adds them to the ENTITY_LIST, so that any dependent data also gets written to the file.

Parameters:
entity_list ENTITYs to save

Reimplemented from SPACOLLECTION.

void ENTITY::save_end ( ENTITY_LIST list  )  const [protected, inherited]

Terminates a save record.



Role: Writes out any data associated with subclasses not known to this version of ACIS before terminating the record. Called by the save method.

Parameters:
list list of entities.

void ENTITY::set_attrib ( ATTRIB attr  )  [inherited]

Changes the attribute pointer of this ENTITY to point to the given attribute.



Parameters:
attr the new attribute.

void SPAGROUP::set_bound ( SPAbox b_box  ) 

Sets the bounding box for a group.



Parameters:
b_box bounding box.

collection_copy_behavior SPACOLLECTION::set_collection_copy_behavior ( collection_copy_behavior   )  [inherited]

Set the copy behavior for a collection.

Returns the value set.

Parameters:
b collection_copy_behavior

collection_empty_behavior SPACOLLECTION::set_collection_empty_behavior ( collection_empty_behavior   )  [inherited]

Set the empty behavior for a collection.

Returns the value set.

Parameters:
b collection_empty_behavior

collection_save_behavior SPACOLLECTION::set_collection_save_behavior ( collection_save_behavior  b  )  [inherited]

Set the save behavior for a collection.

Returns the value set.

Parameters:
b collection_save_behavior

copy_member_action SPACOLLECTION::set_copy_member_action ( copy_member_action  a  )  [inherited]

Set the copy action for a collection.

Returns the value set.

Parameters:
a copy_member_action

logical SPACOLLECTION::set_copyable ( logical  b  )  [inherited]

Specify if the collection is copyable or not.

Returns the value set.

Parameters:
b logical indicates is copyable or not

geomchanged_member_action SPACOLLECTION::set_geomchanged_member_action ( geomchanged_member_action  a  )  [inherited]

Set the geometry changed action for a collection.

Returns the value set.

Parameters:
a geomchanged_member_action

merge_member_action SPACOLLECTION::set_merge_member_action ( merge_member_action  a  )  [inherited]

Set the merge action for a collection.

Returns the value set.

Parameters:
a merge_member_action

replace_member_action SPACOLLECTION::set_replace_member_action ( replace_member_action  a  )  [inherited]

Set the replace action for a collection.

Returns the value set.

Parameters:
a replace_member_action

logical SPACOLLECTION::set_savable ( logical  b  )  [inherited]

Specify if the collection is savable or not.

Returns the value set.

Parameters:
b logical indicates is savable or not

split_member_action SPACOLLECTION::set_split_member_action ( split_member_action  a  )  [inherited]

Set the split action for a collection.

Returns the value set.

Parameters:
a split_member_action

tolerant_member_action SPACOLLECTION::set_tolerant_member_action ( tolerant_member_action  a  )  [inherited]

Set the tolerant action for a collection.

Returns the value set.

Parameters:
a tolerant_member_action

trans_member_action SPACOLLECTION::set_trans_member_action ( trans_member_action  a  )  [inherited]

Set the trans action for a collection.

Returns the value set.

Parameters:
a trans_member_action

virtual void ENTITY::set_use_count ( int  use  )  [virtual, inherited]

Sets the reference use count of this ENTITY.



Role: If the ENTITY is not use counted, this method does nothing.

Parameters:
use new use count.

Reimplemented in CURVE, PCURVE, PHLV5_OCC, APOINT, REFINEMENT, RH_MATERIAL, RH_TEXTURE_SPACE, SURFACE, and VERTEX_TEMPLATE.

virtual unsigned SPAGROUP::size (  )  const [virtual]

Returns the size, in bytes, of this ENTITY.



Role: (Supplied by the ENTITY_FUNCTIONS and UTILITY_DEF macros.)

Reimplemented from SPACOLLECTION.

virtual void SPACOLLECTION::split_member ( ENTITY ent,
ENTITY new_ent 
) [virtual, inherited]

Notifies this SPACOLLECTION that a member has been split into two parts.



Role: The application has the chance to determine what to do with the collection. If an application derives a new collection and the predefined split_member_actions don't satisfy the application needs, this method should be implemented by the application in its derived collection.

Parameters:
ent the member ENTITY that is splitted
new_entity the new entity arising from the split.
See also:
split_member_action, SPACOLLECTION::set_split_member_action, SPACOLLECTION::get_split_member_action

tag_id_type ENTITY::tag ( logical  assign_new = TRUE  )  const [inline, inherited]

Data reading routine.



Parameters:
assign_new flag to assign a new tag number or not.

virtual void SPACOLLECTION::tolerant_member ( ENTITY ent,
ENTITY other_ent 
) [virtual, inherited]

Notifies this SPACOLLECTION that a member ENTITY is replaced by a tolerant ENTITY if the ENTITY is a non-tolerant ENTITY, or is replace by a non-tolerant ENTITY if the ENTITY is a tolerant ENTITY.

The default action is to let the replaced entity in the collection.

Parameters:
ent the member ENTITY that is being replaced.
other_ent the ENTITY that will replace the current member ENTITY

int SPAGROUP::tombstones (  )  const [inline]

Returns the number of entities in the collection list, minus the use count.

virtual void SPACOLLECTION::trans_member ( ENTITY ent,
const SPAtransf transf 
) [virtual, inherited]

Notifies this SPACOLLECTION that a member is about to be transformed.



Role: The application has the chance to determine what to do with collection. The default action is to keep the transformed entity in the collection. If an application derives a new collection and the predefined trans_member_action's don't satisfy the application needs, this method should be implemented by the application in its derived collection.

Parameters:
ent the member ENTITY that is about to be transformed
transf the transformation being applied.
See also:
trans_member_action, SPACOLLECTION::set_trans_member_action, SPACOLLECTION::get_trans_member_action

virtual const char* SPAGROUP::type_name (  )  const [virtual]

Returns a name for this ENTITY's type.



Role: For the ENTITY class, unknown is returned.

Reimplemented from SPACOLLECTION.

virtual int ENTITY::use_count (  )  const [virtual, inherited]

Returns the use count of this ENTITY.



Role: Returns zero if the ENTITY is not use counted.

Reimplemented in CURVE, PCURVE, PHLV5_OCC, APOINT, REFINEMENT, RH_MATERIAL, RH_TEXTURE_SPACE, SURFACE, and VERTEX_TEMPLATE.