Purpose:
|
Represents a subdivision of a
SHELL or
SUBSHELL.
|
|
Derivation:
|
SUBSHELL : ENTITY : ACIS_OBJECT : -
|
|
SAT Identifier:
|
"subshell"
|
|
Filename:
|
kern/kernel/kerndata/top/subshell.hxx
|
|
Description:
|
A subshell represents a subdivision of a shell or superior subshell. The efficiency of many-to-many comparisons is improved by allowing quantities of faces to be excluded by a single box test. The subdivision is determined by the system and may change at any time. Thus, the subshell has no significance to the user, although the application program may find the implied spatial subdivision useful.
|
|
References:
|
KERN
|
FACE, WIRE
|
|
by KERN
|
FACE, SHELL, WIRE
|
|
Constructor:
|
public: SUBSHELL::SUBSHELL
();
|
|
|
C++ allocation constructor requests memory for this object but does not populate it. The allocation constructor is used primarily by restore. Applications should call this constructor only with the overloaded
new operator, because this reserves the memory on the heap, a requirement to support roll back and history management.
|
|
|
|
|
|
|
public: SUBSHELL::SUBSHELL
(
|
|
|
FACE*,
|
// list of FACEs
|
|
|
SUBSHELL*,
|
// list of SUBSHELLs
|
|
|
SUBSHELL*
|
// sister SUBSHELLs list
|
|
|
);
|
|
|
C++ initialize constructor requests memory for this object and populates it with the data supplied as arguments. Applications should call this constructor only with the overloaded
new operator, because this reserves the memory on the heap, a requirement to support roll back and history management.
|
|
|
Constructs a
SUBSHELL, initializing the record and interacting with the bulletin board. It sets back pointer in child
SUBSHELLs and
FACEs. The first two arguments define the starts of lists of
FACEs and
SUBSHELLs contained within the
SUBSHELL, and the last is a list of sibling
SUBSHELLs already in the current
BODY. The arguments initialize
face_ptr,
child_ptr, and
sibling_ptr respectively. The calling routine must set
parent_ptr and if desired,
bound_ptr, using
set_parent and
set_bound.
|
|
|
|
|
Destructor:
|
public: virtual void SUBSHELL::lose
();
|
|
|
Posts a delete bulletin to the bulletin board indicating the instance is no longer used in the active model. The
lose methods for attached attributes are also called.
|
|
|
|
|
|
|
protected: virtual SUBSHELL::~SUBSHELL
();
|
|
|
This
C++ destructor should never be called directly. Instead, applications should use the overloaded
lose method inherited from the
ENTITY class, because this supports history management. (For example,
x=new SUBSHELL(...) then later
x->lose.)
|
|
|
|
Methods:
|
public: SPAbox* SUBSHELL::bound
() const;
|
|
|
Returns a pointer to the geometric bounding region (box) that contains the entire
SUBSHELL (with respect to the internal coordinate system of the
BODY). This function returns
NULL if the bounding box was not calculated since the
SUBSHELL was last modified.
|
|
|
|
|
|
|
protected: virtual logical
|
|
|
SUBSHELL::bulletin_no_change_vf (
|
|
|
ENTITY const* other,
|
|
// other entity
|
|
|
logical identical_comparator
|
// comparator
|
|
|
) const;
|
|
|
Virtual function for comparing subclass data - called by
bulletin_no_change. For identical_comparator to be
TRUE requires an exact match when comparing doubles, and returns the result of
memcmp as a default (for non-overridden subclasses).
FALSE indicates tolerant compares and returns
FALSE as a default.
|
|
|
|
|
|
|
public: SUBSHELL* SUBSHELL::child
() const;
|
|
|
Returns a pointer to the start of list of
SUBSHELLs contained within the current
SUBSHELL. This data scheme allows a hierarchy of subdivisions.
|
|
|
|
|
|
|
public: virtual void SUBSHELL::debug_ent
(
|
|
|
FILE*
|
// file pointer
|
|
|
) const;
|
|
|
Prints the type and address of this object, roll back pointer, attributes, and any unknown subtype information to the specified file. Refer to the
ENTITY class for more details.
|
|
|
|
|
|
|
public: FACE* SUBSHELL::face
() const;
|
|
|
Returns the first
FACE in a complete enumeration of all the
FACEs in the owning
SHELL, continued by repeated use of
FACE::next.
|
|
|
|
|
|
|
public: FACE* SUBSHELL::face_list
() const;
|
|
|
Return a pointer to the first
FACE in a list of
FACEs contained in this
SUBSHELL. Each
FACE in a
SHELL must be in the face list of the
SHELL, or exactly one of its
SUBSHELLs.
|
|
|
|
|
|
|
public: virtual int SUBSHELL::identity
(
|
|
|
int
|
|
// level
|
|
|
|
= 0
|
|
|
) const;
|
|
|
If
level is unspecified or 0, returns the type identifier
SUBSHELL_TYPE. If
level is specified, returns
SUBSHELL_TYPE for that level of derivation from
ENTITY. The level of this class is defined as
SUBSHELL_LEVEL.
|
|
|
|
|
|
|
public: virtual logical SUBSHELL::is_deepcopyable
(
|
|
|
) const;
|
|
|
Returns
TRUE if this can be deep copied.
|
|
|
|
|
|
|
public: ENTITY* SUBSHELL::owner
() const;
|
|
|
Returns a pointer to the owning parent.
|
|
|
|
|
|
|
public: SUBSHELL* SUBSHELL::parent
() const;
|
|
|
Returns a pointer to the next superior
SUBSHELL. The return is
NULL if the
SUBSHELL belongs directly to a
SHELL.
|
|
|
|
|
|
|
public: void SUBSHELL::restore_common
();
|
|
|
The
RESTORE_DEF macro expands to the
restore_common method, which is used in reading information from a SAT file. This method is never called directly. It is called by a higher hierarchical function if an item in the SAT file is determined to be of this class type. An instance of this class will already have been created through the allocation constructor. This method then populates the class instance with the appropriate data from the SAT file.
|
|
|
read_ptr
|
Pointer to record in save file for parent
SUBSHELL
|
|
read_ptr
|
Pointer to record in save file for next
SUBSHELL belonging to parent (sibling)
|
|
read_ptr
|
Pointer to record in save file for first child
SUBSHELL
|
|
read_ptr
|
Pointer to record in save file for first
FACE in subshell
|
|
if (restore_version_number >= WIREBOOL_VERSION)
|
|
read_ptr
|
Pointer to record in save file for first
WIRE in subshell
|
|
else
|
|
|
|
|
|
Pointer for first
WIRE in subshell is set to
NULL.
|
|
|
|
|
|
|
public: void SUBSHELL::set_bound
(
|
|
|
SPAbox*
|
// new bounding box
|
|
|
);
|
|
|
Sets the
SUBSHELL's bounding box pointer to the given
box. Before performing a change, it checks whether the data structure is posted on the bulletin board. If not, the method calls
backup to put an entry on the bulletin board.
|
|
|
|
|
|
|
public: void SUBSHELL::set_child
(
|
|
|
SUBSHELL*
|
// child SUBSHELLs list
|
|
|
);
|
|
|
Sets the
SUBSHELL's child pointer to the given
SUBSHELL starting a list of child
SUBSHELLs. Before performing a change, it checks whether the data structure is posted on the bulletin board. If not, the method calls
backup to put an entry on the bulletin board.
|
|
|
|
|
|
|
public: void SUBSHELL::set_face
(
|
|
|
FACE*
|
// list of FACEs
|
|
|
);
|
|
|
Sets the
SUBSHELL's
FACE pointer to the given
FACE at the start of a list of
FACEs. Before performing a change, it checks whether the data structure is posted on the bulletin board. If not, the method calls
backup to put an entry on the bulletin board.
|
|
|
|
|
|
|
public: void SUBSHELL::set_parent
(
|
|
|
SUBSHELL*
|
// parent SUBSHELL
|
|
|
);
|
|
|
Sets the
SUBSHELL's parent pointer to the given
SUBSHELL. Before performing a change, it checks whether the data structure is posted on the bulletin board. If not, the method calls
backup to put an entry on the bulletin board.
|
|
|
|
|
|
|
public: void SUBSHELL::set_sibling
(
|
|
|
SUBSHELL*
|
// sister SUBSHELL
|
|
|
);
|
|
|
Sets the
SUBSHELL's sibling pointer to the given
SUBSHELL. Before performing a change, it checks whether the data structure is posted on the bulletin board. If not, the method calls
backup to put an entry on the bulletin board.
|
|
|
|
|
|
|
public: void SUBSHELL::set_wire
(
|
|
|
WIRE*
|
// wire
|
|
|
);
|
|
|
Sets the
SUBSHELL's
WIRE pointer to the given
WIRE at the start of a list of
WIREs. Before performing a change, it checks whether the data structure is posted on the bulletin board. If not, the method calls
backup to put an entry on the bulletin board.
|
|
|
|
|
|
|
public: SUBSHELL* SUBSHELL::sibling
() const;
|
|
|
Returns a pointer to the next
SUBSHELL in the list contained by a superior
SHELL or
SUBSHELL.
|
|
|
|
|
|
|
public: virtual const char*
|
|
|
SUBSHELL::type_name () const;
|
|
|
Returns the string "subshell".
|
|
|
|
|
|
|
public: WIRE* SUBSHELL::wire
() const;
|
|
|
Returns the first
WIRE in a complete enumeration of all the
WIREs in the owning
SHELL, continued by repeated use of
WIRE::next.
|
|
|
|
|
|
|
public: WIRE* SUBSHELL::wire_list
() const;
|
|
|
Return a pointer to the first
WIRE in a list of
WIREs contained in this
SUBSHELL. Each
WIRE in a
SHELL must be in the face list of the
SHELL, or exactly one of its
SUBSHELLs.
|
|
Internal Use:
|
first_face, save, save_common
|
|
|
|
|
Related Fncs:
|
is_SUBSHELL
|