SUBSHELL
List of: Classes
Subjects: Model Topology, SAT Save and Restore
Contents: Kernel

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
PDF/KERN/37CLSR.PDF
HTM/DATA/KERN/KERN/37CLSR/0005.HTM