Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

sedris::seObject Class Reference

#include <seObject.h>

Inheritance diagram for sedris::seObject:

Inheritance graph
[legend]
Collaboration diagram for sedris::seObject:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 seObject ()
 Default constructor, low overhead.

 seObject (const seObject &other)
virtual ~seObject ()
 Destructor, releases the DRM object handle.

virtual seObjectoperator= (const seObject &other)
virtual bool isValid () const
 Returns true if this object handle is valid.

virtual bool isA (SE_DRM_Class type) const
virtual bool isModified () const
virtual bool isShared () const
virtual void print (unsigned short level=0, FILE *file=NULL)
virtual SE_DRM_Class getDRMClass () const
virtual const char * getDRMClassName () const
virtual void getFields (const SE_Fields **flds) const
virtual void setFields (const SE_Fields *flds)
virtual bool hasComponentsOrAssociates () const
virtual bool hasComponents () const
virtual bool hasAssociates () const
virtual bool hasAggregates () const
virtual void getRelationCounts (unsigned int *comp_count, unsigned int *aggr_count=NULL, unsigned int *assoc_count=NULL) const
virtual void getComponentIterator (seIterator &iter, SE_DRM_Class filter=SE_DRM_CLS_NULL) const
virtual void getAssociateIterator (seIterator &iter, SE_DRM_Class filter=SE_DRM_CLS_NULL) const
virtual void getAggregateIterator (seIterator &iter, SE_DRM_Class filter=SE_DRM_CLS_NULL) const
virtual bool getComponent (SE_DRM_Class type, seObject &obj, seObject &link_obj=seObjectNull) const
virtual bool getComponent (seObject &obj, seObject &link_obj=seObjectNull) const
virtual bool getAssociate (SE_DRM_Class type, seObject &obj, seObject &link_obj=seObjectNull) const
virtual bool getAssociate (seObject &obj, seObject &link_obj=seObjectNull) const
virtual bool getAggregate (SE_DRM_Class type, seObject &obj, seObject &link_obj=seObjectNull) const
virtual bool getAggregate (seObject &obj, seObject &link_obj=seObjectNull) const
virtual void addComponent (seObject &obj, seObject &link_obj=seObjectNull)
virtual void addAssociate (seObject &obj, seObject &link_obj=seObjectNull)
virtual void removeComponent (seObject &obj, seObject &link_obj=seObjectNull)
virtual void removeAssociate (seObject &obj, seObject &link_obj=seObjectNull)
virtual const char * getID () const
virtual bool isPublished () const
virtual void publish (const char *label)
virtual void unpublish (const char *label=NULL)
virtual unsigned int getPublishedLabelCount () const
virtual const char * getPublishedLabel (unsigned int index=0) const
virtual void resolve ()
virtual bool isResolved () const
virtual const char * getUnresolvedTransmittalURN () const
virtual const char * getUnresolvedObjectLabel () const
virtual void setUserData (void *data)
virtual void * getUserData () const
virtual void cloneTo (seObject &other) const
virtual bool isSameAs (const seObject &other) const
virtual void release ()
virtual bool isInTransmittal (const seTransmittal &xmtal) const
virtual void getTransmittal (seTransmittal &xmtal) const
virtual SE_DRM_Class getClassType () const

Static Public Attributes

seObject seObjectNull
 Null seObject to be used as default NULL parameter.


Protected Member Functions

virtual SE_Fields * getWritableFields ()

Detailed Description

seObject is the generalized instanced DRM object. seObject encapsulates access to all fields and data contained in DRM transmittal objects. This class manages the handle to a DRM object, to allow for multiple seObject's to point to the same transmittal DRM object. Derived classes take advantage of generalized methods in this class to access their DRM-specific fields.
Note:
All of the methods in this class that depend on a valid object (i.e. the object must belong to a transmittal) throw an seException if the object being accessed is invalid, or other major error occurs (e.g. memory, file access, invalid DRM field, etc.).
Author:
Warren Macchi (Accent Geographic)
See also:
seTransmittal, seIterator


Constructor & Destructor Documentation

sedris::seObject::seObject  )  [inline]
 

sedris::seObject::seObject const seObject other  )  [inline]
 

Copy constructor, same as cloneTo().

See also:
cloneTo()

virtual sedris::seObject::~seObject  )  [inline, virtual]
 


Member Function Documentation

virtual void sedris::seObject::addAssociate seObject obj,
seObject link_obj = seObjectNull
[virtual]
 

Add an associate relationship with optional link object. The relationship is executed provided that the following criteria are met:

  1. either this object or obj shall be a resolved object, or both shall be resolved objects. If both objects are resolved, then link_obj (if provided) shall be a resolved object; otherwise, link_obj may be unresolved. An unresolved object is a reference to an object in another transmittal (see seTransmittal::createUnresolvedObject()).
  2. the transmittal this object belongs to has been explicitly opened either in create or update mode (see seWorkspace::openTransmittalByFile()).

If the relationship is defined as bidirectional, this method adds the inverse relationship.

Note:
Relationships between objects in different transmittals are NOT implicitly bidirectional so, to make the corresponding relationship from the object in the other transmittal, you will have to perform the parallel operations in the other transmittal.
            geom_model_instance.addAssociate(geom_model);
See also:
addComponent()
Parameters:
obj in: an associate object
link_obj in (optional): a link object to add
Returns:
true if successful

virtual void sedris::seObject::addComponent seObject obj,
seObject link_obj = seObjectNull
[virtual]
 

Add a component and optional link objects. Adding components to an object creates an object hierarchy in the transmittal. The relationship is executed provided that the following criteria are met:

  1. either this object or obj shall be a resolved object, or both shall be resolved objects. If both objects are resolved, then link_obj (if provided) shall be a resolved object; otherwise, link_obj may be unresolved. An unresolved object is a reference to an object in another transmittal (see seWorkspace::createUnresolvedObject()).
  2. the transmittal this object belongs to has been explicitly opened either in create or update mode (see seWorkspace::openTransmittalByFile()).

If the relationship is defined as bidirectional, this method adds the inverse relationship.

Note:
Relationships between objects in different transmittals are NOT implicitly bidirectional so, to make the corresponding relationship from the object in the other transmittal, you will have to perform the parallel operations in the other transmittal.
            ...
            seDRMVertex vertex;

            xmtal.createObject(vertex);
            polygon.addComponent(vertex);
See also:
addAssociate(), isResolved()
Parameters:
obj in: a component object
link_obj in (optional): a link object
Returns:
true if succesful

virtual void sedris::seObject::cloneTo seObject other  )  const [virtual]
 

Clones the DRM object handle into another object. Used to make another seObject refer to the same transmittal DRM object this object refers to. Generally used to access this generic object with a more specific type. For example:

            seDRMAccess access;

            // obj is an seObject obtained somewhere else
            if (obj.isA(SE_DRM_CLS_ACCESS))
            {
                obj.cloneTo(access);
                cout << "Access Constraints = "
                    << access.get_access_constraints().characters << endl;
            }
You can also use the copy constructor to achieve the same effect:
            // obj is an seObject obtained somewhere else
            if (obj.isA(SE_DRM_CLS_ACCESS))
            {
                seDRMAccess access(obj);

                cout << "Access Constraints = "
                    << access.get_access_constraints().characters << endl;
            }
or the equals operator:
            seDRMAccess access;

            // obj is an seObject obtained somewhere else
            if (obj.isA(SE_DRM_CLS_ACCESS))
            {
                access = obj;
                cout << "Access Constraints = "
                    << access.get_access_constraints().characters << endl;
            }

Note:
The object to clone to does not need to be released, it is done automatically.
Exceptions:
seException if the "cloned to" object is not of the same class (or a base class, which includes seObject) of the object being cloned.
Parameters:
other in: object to clone the handle to

virtual bool sedris::seObject::getAggregate seObject obj,
seObject link_obj = seObjectNull
const [inline, virtual]
 

Get the first aggregate and link objects based on derived class type. See getComponent(seObject, seObject) for more details.

Note:
To get several aggregates, an seIterator may be more efficient.

Only aggregates that include the object via a two-way aggregation will be returned by this function.

If there is no link object associated with the object returned, the link_obj parameter is set to an invalid object handle (i.e. you can use seObject::isValid() to check for its validity).

Exceptions:
seException if an error occurs, but not if the object type was not found
Parameters:
obj out: the aggregate object
link_obj out (optional): the link object
Returns:
true if an aggregate was found

virtual bool sedris::seObject::getAggregate SE_DRM_Class  type,
seObject obj,
seObject link_obj = seObjectNull
const [virtual]
 

Get the first aggregate and link objects of a specific class. See getComponent(SE_DRM_Class, seObject, seObject) for more details.

Note:
To get several aggregates, an seIterator may be more efficient.

Only aggregates that include the object via a two-way aggregation will be returned by this function.

If there is no link object associated with the object returned, the link_obj parameter is set to an invalid object handle (i.e. you can use seObject::isValid() to check for its validity).

Exceptions:
seException if an error occurs, but not if the object type was not found
Parameters:
type in: aggregate type wanted (can be SE_DRM_CLS_NULL to get the first object no matter its type)
obj out: the aggregate object
link_obj out (optional): the link object
Returns:
true if an aggregate was found

virtual void sedris::seObject::getAggregateIterator seIterator iter,
SE_DRM_Class  filter = SE_DRM_CLS_NULL
const [virtual]
 

Returns an initialized aggregate iterator. See getComponentIterator() for more details on using the iterator.

See also:
getComponentIterator(), getAggregate(), isA(), seIterator, seIterator::getNext(), seIterator::getCount()

virtual bool sedris::seObject::getAssociate seObject obj,
seObject link_obj = seObjectNull
const [inline, virtual]
 

Get the first associate and link objects based on derived class type. See getComponent(seObject, seObject) for more details.

Note:
To get several associates, an seIterator may be more efficient.

Only objects at the 'to' end of a one-way association, or at either end of a two-way association, will be returned by this function.

If there is no link object associated with the object returned, the link_obj parameter is set to an invalid object handle (i.e. you can use seObject::isValid() to check for its validity).

Exceptions:
seException if an error occurs, but not if the object type was not found
Parameters:
obj out: the associate object
link_obj out (optional): the link object
Returns:
true if the associate type was found

virtual bool sedris::seObject::getAssociate SE_DRM_Class  type,
seObject obj,
seObject link_obj = seObjectNull
const [virtual]
 

Get the first associate and link objects of a specific class. See getComponent(SE_DRM_Class, seObject, seObject) for more details.

Note:
To get several associates, an seIterator may be more efficient.

Only objects at the 'to' end of a one-way association, or at either end of a two-way association, will be returned by this function.

If there is no link object associated with the object returned, the link_obj parameter is set to an invalid object handle (i.e. you can use seObject::isValid() to check for its validity).

Exceptions:
seException if an error occurs, but not if the object type was not found
Parameters:
type in: associate type wanted (can be SE_DRM_CLS_NULL to get the first object no matter its type)
obj out: the associate object
link_obj out (optional): the link object
Returns:
true if the associate type was found

virtual void sedris::seObject::getAssociateIterator seIterator iter,
SE_DRM_Class  filter = SE_DRM_CLS_NULL
const [virtual]
 

Returns an initialized associate iterator. See getComponentIterator() for more details on using the iterator.

See also:
getComponentIterator(), getAssociate(), isA(), seIterator, seIterator::getNext(), seIterator::getCount()

virtual SE_DRM_Class sedris::seObject::getClassType  )  const [inline, virtual]
 

Gets the DRM class type this object can reference. For seObject, this method returns the NULL class since it can point to any of the derived classes. The derived classes return their specific DRM class.

Warning:
Don't confuse with getDRMClass(), which is dependent on the actual type held by an seObject.
Returns:
the class type of this object

Reimplemented in sedris::seDRMAbsoluteTime, sedris::seDRMAbsoluteTimeInterval, sedris::seDRMAccess, sedris::seDRMAggregateFeature, sedris::seDRMAggregateGeometry, sedris::seDRMAlternateHierarchyRelatedFeatures, sedris::seDRMAlternateHierarchyRelatedGeometry, sedris::seDRMAmbientColour, sedris::seDRMAnimationBehaviour, sedris::seDRMAnimationRelatedGeometry, sedris::seDRMArc, sedris::seDRMArealFeature, sedris::seDRMAttachmentPoint, sedris::seDRMAxis, sedris::seDRMAZ2DLocation, sedris::seDRMBaseAssociationData, sedris::seDRMBaseLODData, sedris::seDRMBasePositionalLight, sedris::seDRMBaseSpatialAssociationData, sedris::seDRMBaseSummaryItem, sedris::seDRMBaseTimeData, sedris::seDRMBlendDirectionalLight, sedris::seDRMBoundingVolume, sedris::seDRMBrowseMedia, sedris::seDRMCameraPoint, sedris::seDRMCC3DLocation, sedris::seDRMCD3DLocation, sedris::seDRMCDSurfaceLocation, sedris::seDRMCitation, sedris::seDRMClassificationData, sedris::seDRMClassificationRelatedFeatures, sedris::seDRMClassificationRelatedGeometry, sedris::seDRMCM3DLocation, sedris::seDRMCMYColour, sedris::seDRMCMYColourControlLink, sedris::seDRMCollisionVolume, sedris::seDRMColour, sedris::seDRMColourData, sedris::seDRMColourIndex, sedris::seDRMColourIndexControlLink, sedris::seDRMColourShininess, sedris::seDRMColourTable, sedris::seDRMColourTableGroup, sedris::seDRMColourTableLibrary, sedris::seDRMConeDirectionalLight, sedris::seDRMConformalBehaviour, sedris::seDRMContactPoint, sedris::seDRMContinuousLODRelatedGeometry, sedris::seDRMControlLink, sedris::seDRMCrossReference, sedris::seDRMCylindricalVolumeExtent, sedris::seDRMDataQuality, sedris::seDRMDataTable, sedris::seDRMDataTableLibrary, sedris::seDRMDescription, sedris::seDRMDiffuseColour, sedris::seDRMDirectionalLightBehaviour, sedris::seDRMDistanceLODData, sedris::seDRMDRMClassSummaryItem, sedris::seDRMECAugmented3DLocation, sedris::seDRMECSurfaceLocation, sedris::seDRMEDCSUseSummaryItem, sedris::seDRMEdgeDirection, sedris::seDRMEI3DLocation, sedris::seDRMEllipse, sedris::seDRMEmissiveColour, sedris::seDRMEnumerationAxis, sedris::seDRMEnvironmentalDomainSummary, sedris::seDRMEnvironmentRoot, sedris::seDRMExpression, sedris::seDRMFaceDirection, sedris::seDRMFadeRange, sedris::seDRMFeatureEdge, sedris::seDRMFeatureFace, sedris::seDRMFeatureFaceRing, sedris::seDRMFeatureHierarchy, sedris::seDRMFeatureModel, sedris::seDRMFeatureModelInstance, sedris::seDRMFeatureNode, sedris::seDRMFeatureRepresentation, sedris::seDRMFeatureTopology, sedris::seDRMFeatureTopologyHierarchy, sedris::seDRMFeatureVolume, sedris::seDRMFeatureVolumeShell, sedris::seDRMFiniteElementMesh, sedris::seDRMFlashingLightBehaviour, sedris::seDRMFunction, sedris::seDRMFunctionalAssociationData, sedris::seDRMGeometricCentre, sedris::seDRMGeometryEdge, sedris::seDRMGeometryFace, sedris::seDRMGeometryHierarchy, sedris::seDRMGeometryModel, sedris::seDRMGeometryModelInstance, sedris::seDRMGeometryNode, sedris::seDRMGeometryRepresentation, sedris::seDRMGeometryTopology, sedris::seDRMGeometryTopologyHierarchy, sedris::seDRMGeometryVolume, sedris::seDRMGridOverlap, sedris::seDRMHAEC3DLocation, sedris::seDRMHEEC3DLocation, sedris::seDRMHEEQ3DLocation, sedris::seDRMHierarchyData, sedris::seDRMHierarchySummaryItem, sedris::seDRMHSVColour, sedris::seDRMHSVColourControlLink, sedris::seDRMIcon, sedris::seDRMImage, sedris::seDRMImageAnchor, sedris::seDRMImageLibrary, sedris::seDRMImageLookup, sedris::seDRMImageMappingFunction, sedris::seDRMIndexLODData, sedris::seDRMInfiniteLight, sedris::seDRMInlineColour, sedris::seDRMInOut, sedris::seDRMInterfaceTemplate, sedris::seDRMIntervalAxis, sedris::seDRMIrregularAxis, sedris::seDRMKeywords, sedris::seDRMLabel, sedris::seDRMLCCAugmented3DLocation, sedris::seDRMLCCSurfaceLocation, sedris::seDRMLibrary, sedris::seDRMLightRenderingBehaviour, sedris::seDRMLightRenderingProperties, sedris::seDRMLightRenderingPropertiesControlLink, sedris::seDRMLightSource, sedris::seDRMLightSourceControlLink, sedris::seDRMLine, sedris::seDRMLineage, sedris::seDRMLinearFeature, sedris::seDRMLinearGeometry, sedris::seDRMLiteral, sedris::seDRMLobeData, sedris::seDRMLocal4x4, sedris::seDRMLocation, sedris::seDRMLocation2D, sedris::seDRMLocation3D, sedris::seDRMLocationSurface, sedris::seDRMLODRelatedFeatures, sedris::seDRMLODRelatedGeometry, sedris::seDRMLSR2DLocation, sedris::seDRMLSR3DLocation, sedris::seDRMLSR3DLocationControlLink, sedris::seDRMLSRTransformation, sedris::seDRMLSRTransformationStep, sedris::seDRMLTSAS3DLocation, sedris::seDRMLTSASSurfaceLocation, sedris::seDRMLTSC3DLocation, sedris::seDRMLTSCSurfaceLocation, sedris::seDRMLTSE3DLocation, sedris::seDRMLTSESurfaceLocation, sedris::seDRMMapScaleLODData, sedris::seDRMMAugmented3DLocation, sedris::seDRMMeshFaceTable, sedris::seDRMModel, sedris::seDRMModelInstanceTemplateIndex, sedris::seDRMModelLibrary, sedris::seDRMMovingLightBehaviour, sedris::seDRMMSurfaceLocation, sedris::seDRMOctantData, sedris::seDRMOctantRelatedFeatures, sedris::seDRMOctantRelatedGeometry, sedris::seDRMOMAugmented3DLocation, sedris::seDRMOMSurfaceLocation, sedris::seDRMOverloadPriorityIndex, sedris::seDRMParallelepipedVolumeExtent, sedris::seDRMPerimeterData, sedris::seDRMPerimeterRelatedFeatures, sedris::seDRMPerimeterRelatedFeatureTopology, sedris::seDRMPerimeterRelatedGeometry, sedris::seDRMPerimeterRelatedGeometryTopology, sedris::seDRMPoint, sedris::seDRMPointFeature, sedris::seDRMPolar2DLocation, sedris::seDRMPolygon, sedris::seDRMPolygonControlLink, sedris::seDRMPolyhedron, sedris::seDRMPositionalLight, sedris::seDRMPredefinedFunction, sedris::seDRMPresentationDomain, sedris::seDRMPrimitiveColour, sedris::seDRMPrimitiveFeature, sedris::seDRMPrimitiveGeometry, sedris::seDRMPrimitiveSummaryItem, sedris::seDRMProcessStep, sedris::seDRMProperty, sedris::seDRMPropertyCharacteristic, sedris::seDRMPropertyDescription, sedris::seDRMPropertyGrid, sedris::seDRMPropertyGridHookPoint, sedris::seDRMPropertySet, sedris::seDRMPropertySetIndex, sedris::seDRMPropertySetIndexControlLink, sedris::seDRMPropertySetTable, sedris::seDRMPropertySetTableGroup, sedris::seDRMPropertySetTableLibrary, sedris::seDRMPropertyTable, sedris::seDRMPropertyTableReference, sedris::seDRMPropertyTableReferenceControlLink, sedris::seDRMPropertyValue, sedris::seDRMProximityData, sedris::seDRMPSAugmented3DLocation, sedris::seDRMPseudoCodeFunction, sedris::seDRMPSSurfaceLocation, sedris::seDRMPyramidDirectionalLight, sedris::seDRMQuadrantData, sedris::seDRMQuadrantRelatedFeatures, sedris::seDRMQuadrantRelatedGeometry, sedris::seDRMReferenceOrigin, sedris::seDRMReferenceSurface, sedris::seDRMReferenceVector, sedris::seDRMReferenceVectorControlLink, sedris::seDRMRegularAxis, sedris::seDRMRelativeTime, sedris::seDRMRelativeTimeInterval, sedris::seDRMRenderingPriorityLevel, sedris::seDRMRenderingProperties, sedris::seDRMResponsibleParty, sedris::seDRMRGBColour, sedris::seDRMRGBColourControlLink, sedris::seDRMRotatingLightBehaviour, sedris::seDRMRotation, sedris::seDRMRotationControlLink, sedris::seDRMScale, sedris::seDRMScaleControlLink, sedris::seDRMSeason, sedris::seDRMSEC3DLocation, sedris::seDRMSEDRISAbstractBase, sedris::seDRMSeparatingPlane, sedris::seDRMSeparatingPlaneData, sedris::seDRMSeparatingPlaneRelatedGeometry, sedris::seDRMSeparatingPlaneRelations, sedris::seDRMSEQ3DLocation, sedris::seDRMSM3DLocation, sedris::seDRMSMS3DLocation, sedris::seDRMSound, sedris::seDRMSoundInstance, sedris::seDRMSoundInstanceControlLink, sedris::seDRMSoundLibrary, sedris::seDRMSoundVolume, sedris::seDRMSource, sedris::seDRMSpatialAssociationData, sedris::seDRMSpatialExtent, sedris::seDRMSpatialIndexData, sedris::seDRMSpatialIndexRelatedFeatures, sedris::seDRMSpatialIndexRelatedFeatureTopology, sedris::seDRMSpatialIndexRelatedGeometry, sedris::seDRMSpatialIndexRelatedGeometryTopology, sedris::seDRMSpatialResolutionLODData, sedris::seDRMSpecularColour, sedris::seDRMSphericalVolumeExtent, sedris::seDRMSpotLight, sedris::seDRMSRFSummary, sedris::seDRMStampBehaviour, sedris::seDRMStateControlLink, sedris::seDRMStateData, sedris::seDRMStateRelatedFeatures, sedris::seDRMStateRelatedGeometry, sedris::seDRMStrobingLightBehaviour, sedris::seDRMSurfaceGeometry, sedris::seDRMSymbol, sedris::seDRMSymbolLibrary, sedris::seDRMTablePropertyDescription, sedris::seDRMTackPoint, sedris::seDRMText, sedris::seDRMTextureCoordinate, sedris::seDRMTextureCoordinateControlLink, sedris::seDRMTimeConstraintsData, sedris::seDRMTimeInterval, sedris::seDRMTimeOfDay, sedris::seDRMTimePoint, sedris::seDRMTimeRelatedFeatures, sedris::seDRMTimeRelatedGeometry, sedris::seDRMTMAugmented3DLocation, sedris::seDRMTMSurfaceLocation, sedris::seDRMTransformation, sedris::seDRMTranslation, sedris::seDRMTranslationControlLink, sedris::seDRMTranslucency, sedris::seDRMTranslucencyControlLink, sedris::seDRMTransmittalRoot, sedris::seDRMTransmittalSummary, sedris::seDRMTwinklingLightBehaviour, sedris::seDRMUnionOfFeatures, sedris::seDRMUnionOfFeatureTopology, sedris::seDRMUnionOfGeometry, sedris::seDRMUnionOfGeometryHierarchy, sedris::seDRMUnionOfGeometryTopology, sedris::seDRMUnionOfPrimitiveGeometry, sedris::seDRMVariable, sedris::seDRMVertex, sedris::seDRMVolume, sedris::seDRMVolumeExtent, sedris::seDRMVolumeGeometry, sedris::seDRMVolumeLightBehaviour, sedris::seDRMVolumeLODData, sedris::seDRMVolumeObject, sedris::seDRMVolumetricFeature, sedris::seDRMWorld3x3, and sedris::seDRMWorldTransformation.

virtual bool sedris::seObject::getComponent seObject obj,
seObject link_obj = seObjectNull
const [inline, virtual]
 

Get the first component and link objects based on derived class type. This is a 'short form, 1-shot' version that does not require the allocation of an iterator. If you don't require retrieval of a large number of objects, this method is typically more efficient than creating an iterator.

This convenience method can be used to obtain a component of a specific type when using the seDRMBase-derived classes, since each class knows its own type. For example, it is simpler to write:

            seDRMAccess acc_obj;

            if (root_obj.getComponent(acc_obj)) {
                ... Access object found
            }
instead of:
            seDRMAccess acc_obj;

            if (root_obj.getComponent(SE_DRM_CLS_ACCESS, acc_obj)) {
                ... Access object found
            }
Note:
To get several components, an seIterator may be more efficient.

If there is no link object associated with the object returned, the link_obj parameter is set to an invalid object handle (i.e. you can use seObject::isValid() to check for its validity).

Exceptions:
seException if an error occurs, but not if the object type was not found
Parameters:
obj out: the component object
link_obj out (optional): the link object
Returns:
true if the component type was found

virtual bool sedris::seObject::getComponent SE_DRM_Class  type,
seObject obj,
seObject link_obj = seObjectNull
const [virtual]
 

Get the first component and link objects of a specific class. This is a 'short form, 1-shot' version that does not require the allocation of an iterator. If you don't require retrieval of a large number of objects, this method is typically more efficient than creating an iterator.

Note:
To get several components, an seIterator may be more efficient.

If there is no link object associated with the object returned, the link_obj parameter is set to an invalid object handle (i.e. you can use seObject::isValid() to check for its validity).

Exceptions:
seException if an error occurs, but not if the object type was not found
Parameters:
type in: component type wanted (can be SE_DRM_CLS_NULL to get the first object no matter its type)
obj out: the component object
link_obj out (optional): the link object
Returns:
true if the component type was found

virtual void sedris::seObject::getComponentIterator seIterator iter,
SE_DRM_Class  filter = SE_DRM_CLS_NULL
const [virtual]
 

Returns an initialized component iterator. An iterator allows you to efficiently traverse the DRM object hierarchy in a transmittal. The optional filter parameter restricts the returned set to a specific DRM class (or base class).

            seIterator iter;
            seObject comp_obj, link_obj;

            some_obj.getComponentIterator(iter);
            while (iter.getNext(comp_obj, link_obj))
            {
                ... use comp_obj and link_obj as needed
            }
The component iterator initialized by this method traverses over the list of component objects that match the specified filter condition. If the filter specified is not SE_DRM_CLS_NULL, then all objects returned by the iterator will pass an seObject::isA() test with that filter type.
See also:
getComponent(), isA(), seIterator, seIterator::getNext(), seIterator::getCount()
Parameters:
iter in/out: a handle to store the iterator
filter in (optional): a DRM class to filter the result set

virtual SE_DRM_Class sedris::seObject::getDRMClass  )  const [virtual]
 

Returns the DRM class type of this object Note that comparing for equality with getDRMClass() is not the same as using isA(), since isA() takes the DRM object class hierarchy into account. So, for example, if this object is a <Union Of Geometry Hierarchy>, then isA(SE_DRM_CLS_GEOMETRY) will return true, but the comparison getDRMClass() == SE_DRM_CLS_GEOMETRY will return false.

virtual const char* sedris::seObject::getDRMClassName  )  const [virtual]
 

Returns the DRM class in short string underscore format.

virtual void sedris::seObject::getFields const SE_Fields **  flds  )  const [virtual]
 

Gets the fields using the DRM fields structure. Retrieves a pointer to the field data of an object. The SE_Fields data structure is a union of all the different field structures from all the different classes. This all-inclusive union and the structures that compose it are defined in the "sedris.h" file.

Warning:
Because some of the fields contained in the union portion of the SE_Fields structure are pointers to dynamically allocated memory, it is HIGHLY INADVISABLE to use a member-wise structure copy in order to duplicate the SE_Fields structure. In order to reliably duplicate this data, developers should use the SE_CloneFields() function.
Parameters:
flds in/out: the fields of the object

virtual const char* sedris::seObject::getID  )  const [virtual]
 

Returns the object identifier as a string. Object identifiers can be used to uniquely identify objects in a transmittal. For example, you could store the returned string by this method and, at a later time, re-open the transmittal, call the transmittal's seTransmittal::getObjectByID() method, and continue work on the object. A typical object ID may look like "urn:sedris:stf:stf_belle.stf:1:0,220,169".

virtual const char* sedris::seObject::getPublishedLabel unsigned int  index = 0  )  const [virtual]
 

If this object is published (see isPublished()), returns the indexed label that was used to publish it.

Exceptions:
seException if the object is not published.
See also:
getPublishedLabelCount()
Parameters:
index in: the indexed label

virtual unsigned int sedris::seObject::getPublishedLabelCount  )  const [virtual]
 

If this object is published (see isPublished()), returns the number of labels that were used to publish it.

Exceptions:
seException if the object is not published.
See also:
isPublished(), getPublishedLabel()

virtual void sedris::seObject::getRelationCounts unsigned int *  comp_count,
unsigned int *  aggr_count = NULL,
unsigned int *  assoc_count = NULL
const [virtual]
 

Returns the counts for the number of components, number of aggregates, and number of associates.

Note:
ITR references are included in the counts.

virtual void sedris::seObject::getTransmittal seTransmittal xmtal  )  const [virtual]
 

Get the transmittal this object belongs to.

virtual const char* sedris::seObject::getUnresolvedObjectLabel  )  const [virtual]
 

If this object is an unresolved object, returns the label of the published object being referenced in the referenced transmittal.

Exceptions:
seException if object is not unresolved.
See also:
isResolved()

virtual const char* sedris::seObject::getUnresolvedTransmittalURN  )  const [virtual]
 

If this object is an unresolved object, returns the URN of the transmittal being referenced.

Exceptions:
seException if object is not unresolved.
See also:
isResolved()

virtual void* sedris::seObject::getUserData  )  const [virtual]
 

Returns the current value of the user data pointer for the given object.

See also:
setUserData()
Returns:
the previously set value for the pointer

virtual SE_Fields* sedris::seObject::getWritableFields  )  [protected, virtual]
 

Returns a pointer to fields that can be used to update the fields data, used in seDRMBase-derived classes.

Exceptions:
seException if transmittal is not editable.

virtual bool sedris::seObject::hasAggregates  )  const [virtual]
 

Returns true if the object has any aggregates.

Note:
This method can only check for DRM objects for which the aggregates can be found (that is, there is a two-way relationship between the component and its aggregate).

virtual bool sedris::seObject::hasAssociates  )  const [virtual]
 

Returns true if the object has any associates.

See also:
hasComponentsOrAssociates()

virtual bool sedris::seObject::hasComponents  )  const [virtual]
 

Returns true if the object has any components.

Note:
This method does not consider DRM inheritance.
See also:
hasComponentsOrAssociates()

virtual bool sedris::seObject::hasComponentsOrAssociates  )  const [virtual]
 

Returns true if the object has any component or associate objects.

See also:
hasComponents(), hasAssociates()

virtual bool sedris::seObject::isA SE_DRM_Class  type  )  const [virtual]
 

Returns true if this object is of the given type. This method checks for super-classes. That is, if this object is a <Vertex> object, then isA(SE_DRM_CLS_BASE_VERTEX) will return true. Also, if you are holding a handle to an abstract class, you can use this method to see if it is of a concrete class. For example:

            if (baseVertex.isA(SE_DRM_CLS_VERTEX))
            {
                ... process vertex object
            }
Parameters:
type in: the DRM class type to check against

virtual bool sedris::seObject::isInTransmittal const seTransmittal xmtal  )  const [virtual]
 

Returns true if this object is in the transmittal passed in.

virtual bool sedris::seObject::isModified  )  const [virtual]
 

Returns true if the object has been modified (fields changed or components/associates added).

virtual bool sedris::seObject::isPublished  )  const [virtual]
 

Returns true if the object is published. Publishing an object makes that object available for ITR referencing from other transmittals. Only published objects can be accessed using ITR references.

See also:
publish()

virtual bool sedris::seObject::isResolved  )  const [virtual]
 

Returns true if this object resolved, or false if it is unresolved. An unresolved object (a.k.a. ITR reference) points to a transmittal and a published label in that transmittal. Unresolved objects are used to "hook" transmittals together.

Note:
The only way an unresolved object can be resolved is by calling the resolve() method.

If an object is unresolved, then all operations that depend on the object being resolved (e.g. getDRMClass()) will fail with an exception.

See also:
getUnresolvedTransmittalURN(), getUnresolvedObjectLabel(), resolve()

virtual bool sedris::seObject::isSameAs const seObject other  )  const [virtual]
 

Returns true if the object passed in is a clone of this one (i.e. both handles reference the same object).

virtual bool sedris::seObject::isShared  )  const [virtual]
 

Returns true if the object has more than 1 parent.

Note:
An object can also be shared by association, but since associations can be one-way this method is unable to perform this check.
Returns:
true if object is being shared

virtual bool sedris::seObject::isValid  )  const [inline, virtual]
 

virtual seObject& sedris::seObject::operator= const seObject other  )  [inline, virtual]
 

Copy operator, same as cloneTo().

Note:
This operator only makes one seObject handle point to the same transmittal object as another handle. This method is NOT used to copy field data. See cloneTo() for more details.
See also:
cloneTo()

virtual void sedris::seObject::print unsigned short  level = 0,
FILE *  file = NULL
[virtual]
 

Prints an object's data. Use this method to print the type and fields of an object to the screen or a file.

            seObject obj;
            ...
            obj.print();
Note:
See the DRM functions SE_PrintDRMClass() and SE_PrintFields() for more information on customizing your own printing.
Parameters:
level in (optional): indentation level, 2 spaces per level
file in (optional): output file pointer

virtual void sedris::seObject::publish const char *  label  )  [virtual]
 

Publishes the object for ITR referencing from other transmittals. Publishing an object makes that object available for ITR referencing from other transmittals. Only published objects can be accessed using ITR references.

If the object has already been published under a different label, then the new label is added to the list of labels for the object. If the object was already published using the given label, no error is reported.

Note:
The label must pass SE_ValidObjectLabel(), which checks that the label adheres to the same lexical conventions as variables in ANSI C. .
Exceptions:
seException on error, if the object is unresolved, or if the transmittal is not editable.
See also:
unpublish()
Parameters:
label in: the label to be used to publish the object

virtual void sedris::seObject::release  )  [virtual]
 

Releases the handle to the transmittal DRM object. Generally there is no need to call this method, since release() is called by any change of handle or when the object goes out of scope. Note that other seObject's having a handle pointing to the same transmittal DRM object will remain valid.

virtual void sedris::seObject::removeAssociate seObject obj,
seObject link_obj = seObjectNull
[virtual]
 

Removes an associate relationship. Breaks the relationship between this object and the component object passed in (and the link object, if given).

Warning:
This method does not delete the removed object from the transmittal (since it could have relationships to other objects in the transmittal). See seTransmittal::deleteObject() for more information.
Note:
If the relationship being removed is a 2-way relationship, both connections are removed, unless the associate object is unresolved.

The transmittal must be editable for this operation to succeed.

See also:
addComponent(), seTransmittal::deleteObject()
Parameters:
obj in: a component object
link_obj in (optional): a link object

virtual void sedris::seObject::removeComponent seObject obj,
seObject link_obj = seObjectNull
[virtual]
 

Removes a component relationship. Breaks the relationship between this object and the component object passed in (and the link object, if given).

Warning:
This method does not delete the removed object from the transmittal (since it could have relationships to other objects in the transmittal). See seTransmittal::deleteObject() for more information.
Note:
If the relationship being removed is a 2-way relationship, both connections are removed, unless the component object is unresolved.

The transmittal must be editable for this operation to succeed.

See also:
addComponent(), seTransmittal::deleteObject()
Parameters:
obj in: a component object
link_obj in (optional): a link object

virtual void sedris::seObject::resolve  )  [virtual]
 

If this object is unresolved, attempt to resolve it. The resolution process does the following:

  1. An attempt is made to open the transmittal the ITR reference URN refers to (see getUnresolvedTransmittalURN() and seWorkspace::openTransmittalByURN()).
  2. An attempt is then made to retrieve the specific published object (see getUnresolvedObjectLabel()) from the transmittal (see seTransmittal::getPublishedObject()).
Note:
If this object is already resolved, no error is reported.

If the transmittal the unresolved object points to is not already opened, the transmittal is opened READ_ONLY. Otherwise, the transmittal retains the previously opened mode.

See also:
isResolved()
Exceptions:
seException if the object could not be resolved

virtual void sedris::seObject::setFields const SE_Fields *  flds  )  [virtual]
 

Sets the fields using the DRM fields structure. Used to modify the fields of a given object.

Warning:
Updating fields may have implications on the efficiency of the underlying implementation if overall size of the field data (and the separately allocated sub-structures) is larger than the previous values. For example, if the fields include an SE_String type, and the length of the string changes, there may be implications on the efficiency of the underlying API implementation. Hence, it is recommended that this method be called at most once for each object.
The transmittal this object belongs to must be editable for this operation to succeed.
See also:
getFields()
Parameters:
flds in: the new fields of the object

virtual void sedris::seObject::setUserData void *  data  )  [virtual]
 

Set a pointer to user data. You can use this method to store data that your application can refer to when this object is re-encountered. Note that for this to work, you MUST keep at least 1 handle to the object somewhere in your application. After all handles have been released, the pointer data will become invalid.

Note:
The pointer data is set to NULL the first time an object is encountered.

The pointer data is not stored in the transmittal.

Warning:
Memory management of memory pointed to by the user data is the sole responsibility of the user. If the user_data points to memory that should eventually be freed, then the user should free that memory before releasing all the handles to a given object. The API will never access or free or interfere with in any way the memory pointed to by an object's user data.

Objects may be internally cached by the API. Hence, even if the user releases all the handles to an object, the user data pointer may not be NULL the next time the user retrieves a handle to that same object.

See also:
getUserData()
Parameters:
data in: a pointer to user data (can be NULL)

virtual void sedris::seObject::unpublish const char *  label = NULL  )  [virtual]
 

Removes the object from being published under the given label. Unpublishing an object makes that object unavailable for ITR referencing from other transmittals.

Warning:
Unpublishing objects MAY result in a need to change the transmittal name portion of the URN assigned to a transmittal. Using the same transmittal name guarantees that all labels ever published will remain available in future "versions" of the transmittal. Removing a label using this function will require a transmittal name change if another object is not published under the same label before the transmittal is made publicly available or "released".
.
Exceptions:
seException on error, if the object was not previously published, if the object is unresolved, or if the transmittal is not editable.
See also:
publish(), isPublished()
Parameters:
label in (optional): the label under which the object was previously published (may be NULL to remove all publishings for object)


Member Data Documentation

seObject sedris::seObject::seObjectNull [static]
 


The documentation for this class was generated from the following file:
SEDRIS Transmittal Access C++ API 4.0.0 beta - 14 Jul 2004
Copyright © 2004 SEDRIS Docs by Doxygen 1.3.2