Home

law_data Class Reference
[Laws]

Serves as a wrapper for ACIS objects, for passing as arguments to laws. More...

#include <law_data.hxx>

Inheritance diagram for law_data:

Inheritance graph
[legend]
Collaboration diagram for law_data:

Collaboration graph
[legend]

List of all members.

Public Member Functions

void add ()
 Increments the use count of this law_data.
virtual int date ()
 Returns the version of ACIS in which this law_data class first appeared.
virtual law_datadeep_copy (base_pointer_map *pm=NULL) const =0
 Creates a copy of an item that does not share any data with the original.
 law_data ()
 Constructs a law_data.
int ref_count ()
 Returns the use count of this law_data.
void remove ()
 Decrements the use count of this law_data, and deletes the law_data when the count drops to zero.
virtual law_datarestore ()
 Returns NULL.
virtual void save ()=0
 Saves the law_data with its encapsulated data.
virtual law_dataset_domain (SPAinterval *new_domain)
 Sets the domain of this law_data to the given interval.
virtual char * string (law_symbol_type type=DEFAULT, int &count=*(int *) NULL_REF, law_data_node *&ldn=*(law_data_node **) NULL_REF)
 Returns a string that represents this law_data.
virtual const char * symbol (law_symbol_type type=DEFAULT)=0
 Returns the string that represents this law_data's symbol.


Detailed Description

Serves as a wrapper for ACIS objects, for passing as arguments to laws.


Role: This is the virtual base class for a series of wrappers that handle specific ACIS entities and other ACIS classes. Objects constructed from its derived classes may be parsed into strings through the use of tags, such as "edge", "transform", "path", "curve" and "wire" and then used by api_str_to_law. They are returned by the law method string_and_data.

See also:
multiple_data_law, unary_data_law

Constructor & Destructor Documentation

law_data::law_data (  ) 

Constructs a law_data.


Member Function Documentation

void law_data::add (  ) 

Increments the use count of this law_data.



Role: This method is called in all law_data constructors for the law_data being constructed, and on all of its sublaws.

virtual int law_data::date (  )  [virtual]

Returns the version of ACIS in which this law_data class first appeared.



Role: If a law_data is part of a model that is to be saved at a previous ACIS release level, this is used to indicate whether the law can be saved or not.

Reimplemented in law_law_data.

virtual law_data* law_data::deep_copy ( base_pointer_map pm = NULL  )  const [pure virtual]

Creates a copy of an item that does not share any data with the original.



Role: Allocates new storage for all member data and any pointers. Returns a pointer to the copied item.

In a deep copy, all the information about the copied item is self-contained in a new memory block. By comparison, a shallow copy stores only the first instance of the item in memory, and increments the reference count for each copy.

The pointer_map keeps a list of all pointers in the original object that have already been deep-copied. For example, a deep_copy of a complex model results in self contained data, but identical sub-parts within the model are allowed to share a single set of data.

Parameters:
pm list of items within the entity that are already deep copied.

Implemented in wire_law_data, curve_law_data, pcurve_law_data, surface_law_data, law_law_data, and base_transform_law_data.

int law_data::ref_count (  )  [inline]

Returns the use count of this law_data.

void law_data::remove (  ) 

Decrements the use count of this law_data, and deletes the law_data when the count drops to zero.



Role: This method is called by all law_data destructors for a law_data, and on all its sublaws. Users of a law_data should call remove instead of delete to delete it.

virtual law_data* law_data::restore (  )  [virtual]

Returns NULL.

virtual void law_data::save (  )  [pure virtual]

Saves the law_data with its encapsulated data.

Implemented in wire_law_data, curve_law_data, pcurve_law_data, surface_law_data, transform_law_data, and law_law_data.

virtual law_data* law_data::set_domain ( SPAinterval new_domain  )  [virtual]

Sets the domain of this law_data to the given interval.



Parameters:
new_domain the new domain.

Reimplemented in curve_law_data, surface_law_data, and law_law_data.

virtual char* law_data::string ( law_symbol_type  type = DEFAULT,
int &  count = *(int *) NULL_REF,
law_data_node *&  ldn = *(law_data_node **) NULL_REF 
) [virtual]

Returns a string that represents this law_data.



Role: The law function is composed of its symbol, associated parentheses, and the strings associated with its sublaws. It is provided as a user-friendly interface to laws. A derived class must override this function to be able to save a law_data.

Parameters:
type type of symbol - standard ACIS type.
count count.
ldn law data node.

Reimplemented in law_law_data.

virtual const char* law_data::symbol ( law_symbol_type  type = DEFAULT  )  [pure virtual]

Returns the string that represents this law_data's symbol.



Role: This is a pure virtual method, forcing derived classes to define their own versions of this method. Hence, this method is called from the derived class and not from this abstract class.

Parameters:
type type of symbol - standard ACIS type.

Implemented in wire_law_data, curve_law_data, pcurve_law_data, surface_law_data, transform_law_data, and law_law_data.