Public Member Functions
CustomOperator Class Reference

Detailed Description

The CustomOperator object represents a custom operator (ie., a scripted or compiled operator) in the scene graph.

See also:
OperatorContext, PortGroup, Port, InputPort, OutputPort
Since:
4.0

#include <xsi_customoperator.h>

Inheritance diagram for CustomOperator:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 CustomOperator ()
 ~CustomOperator ()
 CustomOperator (const CRef &in_ref)
 CustomOperator (const CustomOperator &in_obj)
bool IsA (siClassID in_ClassID) const
siClassID GetClassID () const
CustomOperatoroperator= (const CustomOperator &in_obj)
CustomOperatoroperator= (const CRef &in_ref)
CString GetFileName (void) const
CStatus PutFileName (const CString &in_str)
CString GetLanguage (void) const
CString GetCode (void) const
CStatus PutCode (const CString &code)
LONG GetDebug (void) const
CStatus PutDebug (LONG debug)
bool GetAlwaysEvaluate (void) const
CStatus PutAlwaysEvaluate (bool val)
CStatus AddParameter (const CRef &in_paramdef, Parameter &io_parameter)
CStatus RemoveParameter (const Parameter &in_param)
CRef AddInputPort (const CRef &obj, const CString &name=CString(), LONG group=-1, LONG insertat=-1, LONG flags=0, CStatus *pst=0)
CRef AddOutputPort (const CRef &obj, const CString &name=CString(), LONG group=-1, LONG insertat=-1, LONG flags=0, CStatus *pst=0)
CRefArray AddIOPort (const CRef &obj, const CString &name=CString(), LONG group=-1, LONG insertat=-1, LONG flags=0, CStatus *pst=0)
CRef AddPortGroup (const CString &name, LONG groupmin=1, LONG groupmax=1, const CString &filterid=CString(), const CString &pickprompt=CString(), LONG flags=0, CStatus *pst=0)
CStatus Validate ()
CRef AddInputPortByClassID (siClassID in_TargetClassID, const CString &in_strPortName=CString(), LONG in_PortGroup=-1, LONG in_InsertAt=0, LONG in_flags=0)
CRef AddOutputPortByClassID (siClassID in_TargetClassID, const CString &in_strPortName=CString(), LONG in_PortGroup=-1, LONG in_InsertAt=0, LONG in_flags=0)
CRefArray AddIOPortByClassID (siClassID in_TargetClassID, const CString &in_strPortName=CString(), LONG in_PortGroup=-1, LONG in_InsertAt=0, LONG in_flags=0)

Constructor & Destructor Documentation

Default constructor.

Default destructor.

CustomOperator ( const CRef in_ref)

Constructor.

Parameters:
in_refconstant reference object.
CustomOperator ( const CustomOperator in_obj)

Copy constructor.

Parameters:
in_objconstant class object.

Member Function Documentation

bool IsA ( siClassID  in_ClassID) const [virtual]

Returns true if a given class type is compatible with this API class.

Parameters:
in_ClassIDclass type.
Returns:
true if the class is compatible, false otherwise.

Reimplemented from Operator.

siClassID GetClassID ( ) const [virtual]

Returns the type of the API class.

Returns:
The class type.

Reimplemented from Operator.

CustomOperator& operator= ( const CustomOperator in_obj)

Creates an object from another object. The newly created object is set to empty if the input object is not compatible.

Parameters:
in_objconstant class object.
Returns:
The new CustomOperator object.
CustomOperator& operator= ( const CRef in_ref)

Creates an object from a reference object. The newly created object is set to empty if the input reference object is not compatible.

Parameters:
in_refconstant class object.
Returns:
The new CustomOperator object.

Reimplemented from Operator.

CString GetFileName ( void  ) const

Returns the filename of the script or module containing the implementation of the custom operator.

Returns:
The filename of the implementation script or module.
CStatus PutFileName ( const CString in_str)

Sets the filename of the script or module containing the implementation of the custom operator.

Parameters:
in_strThe filename of the implementation script or module in a CString.
Returns:
CStatus
CString GetLanguage ( void  ) const

Returns the API type used by the implementation of the custom operator.

Returns:
The implementation language: COM, CPP, VBScript, JScript, PerlScript or Python
CString GetCode ( void  ) const

Returns the script code used by the custom operator implementation.

Note:
If the custom operator is compiled then an empty string is returned.
Returns:
The implementation script code.
Empty string for compiled operators
CStatus PutCode ( const CString code)

Sets the script code used by the custom operator implementation.

Note:
If the custom operator is compiled then CStatus::Fail is returned.
Parameters:
codeA string containing the script code.
Returns:
CStatus::OK
CStatus::Fail for compiled operators
LONG GetDebug ( void  ) const

Returns non zero value if the custom operator is in debug mode.

Returns:
true for debug mode; false otherwise.
CStatus PutDebug ( LONG  debug)

Sets the debug mode of the operator. Pass a non zero value to set the operator in Debug mode. The operator list sends a message to the history log each time request data, notify and update are called.

Parameters:
debug0 to disable messages; anything other LONG to enable them
Returns:
CStatus::OK
CStatus::Fail
bool GetAlwaysEvaluate ( void  ) const

Returns true if the custom operator will call Update on each notify.

Returns:
True if the custom operator will always call update on each notify.
CStatus PutAlwaysEvaluate ( bool  val)

Sets the operator to call Update on each time change.

Parameters:
valTrue to force the operator to evaluate on each time change.
Returns:
CStatus::OK
CStatus::Fail
CStatus AddParameter ( const CRef in_paramdef,
Parameter io_parameter 
)

Adds a new custom parameter to the custom operator object.

Parameters:
in_paramdefThe parameter definition (created via Factory::CreateParamDef)
io_parameterReturns the new Parameter object.
Returns:
CStatus::OK success
CStatus::Fail failure
CStatus RemoveParameter ( const Parameter in_param)

Removes the specified custom parameter from the custom operator.

Parameters:
in_paramParameter to remove.
Returns:
CStatus::OK success
CStatus::Fail failure
CRef AddInputPort ( const CRef obj,
const CString name = CString(),
LONG  group = -1,
LONG  insertat = -1,
LONG  flags = 0,
CStatus pst = 0 
)

Adds an input port to the operator. The port is assumed to be return. The group will be automatically assigned if not specified.

Parameters:
objThe object to be connected to the port
nameName for the port.
groupThe index of the group to add port.
insertatNot implemented
flagsA mask of input port flags described by siOptionalInputPort (see siPortFlags).
Return values:
pstThe returned status code (CStatus::OK for success).
Returns:
A reference to the new InputPort.
CRef AddOutputPort ( const CRef obj,
const CString name = CString(),
LONG  group = -1,
LONG  insertat = -1,
LONG  flags = 0,
CStatus pst = 0 
)

Adds an output port to the operator. The port is assumed to be return. The group will be automatically assigned if not specified.

Parameters:
objThe object to be connected to the port
nameName for the port.
groupThe index of the group to add port.
insertatNot implemented
flagsA mask of output port flags described by siCreatedOutputPort (see siPortFlags).
Return values:
pstThe returned status code (CStatus::OK for success).
Returns:
A reference to the new InputPort.
CRefArray AddIOPort ( const CRef obj,
const CString name = CString(),
LONG  group = -1,
LONG  insertat = -1,
LONG  flags = 0,
CStatus pst = 0 
)

Adds an input/output port to the operator. The port is assumed to be return. The group will be automatically assigned if not specified.

Parameters:
objThe object to be connected to the port
nameName for the port. The output port name is prefixed with Out and the input port with In.
groupThe index of the group to add port.
insertatNot implemented
flagsA mask of port flags described by siOptionalInputPort + siCreatedOutputPort (see siPortFlags).
Return values:
pstThe returned status code (CStatus::OK for success).
Returns:
Array of references to the newly created input and output ports.
CRef AddPortGroup ( const CString name,
LONG  groupmin = 1,
LONG  groupmax = 1,
const CString filterid = CString(),
const CString pickprompt = CString(),
LONG  flags = 0,
CStatus pst = 0 
)

Adds a port group to operator. If the operator has branch group support then the filter must also match the group as well as the allowed components; otherwise groups will be rejected when Operator::Connect is called.

Parameters:
nameName of the port group.
groupminMinimum number of objects required for a connection.
groupmaxMaximum number of objects allowed to be connected.
filteridThe filter string id, this is the same name used to look up filters.
pickpromptString to show user during picking session
flagsPort flags (see siPortFlags).
Return values:
pstThe returned status code (CStatus::OK for success).
Returns:
A reference to the new PortGroup.
CStatus Validate ( )

Tests whether the operator contains a valid port definition and syntactically correct code. Note: This method is not implemented for Self-Installed Custom Operators.

Returns:
CStatus::OK success
CStatus::Fail failure
CRef AddInputPortByClassID ( siClassID  in_TargetClassID,
const CString in_strPortName = CString(),
LONG  in_PortGroup = -1,
LONG  in_InsertAt = 0,
LONG  in_flags = 0 
)

Adds an input port to the operator. This function makes it possible to define a connection to a custom operator by specifying the type of object it needs to connect to, rather than providing an existing object.

This is for use in advanced operators, where the port may be optional and dynamically connected after the Operator is instantiated. Each port defined in this way must be in its own PortGroup so that the connection can be established through Operator::ConnectToGroup.

For example, if an operator supports an optional connection to a ClusterProperty, the CustomOperator::AddInputPort function forces the existence of a ClusterProperty at the time of the operator definition, even if the operator is not meant to connect to a ClusterProperty until some later time. This function avoids the need for any ClusterProperty to actually exist in the scene.

Parameters:
in_TargetClassIDThe type of object that can connect to this object, for example siKinematicStateID, siClusterPropertyID, siParameterID or siPrimitiveID.
in_strPortNameThe name of the port. If empty a name is automatically generated.
in_PortGroupIndex of the port group that will contain the new port
in_InsertAtNot implemented
in_flagsMask of port group flags from the siPortFlags enum
Returns:
A reference to the new InputPort
Since:
5.1
CRef AddOutputPortByClassID ( siClassID  in_TargetClassID,
const CString in_strPortName = CString(),
LONG  in_PortGroup = -1,
LONG  in_InsertAt = 0,
LONG  in_flags = 0 
)

Adds an OutputPort to the custom operator. This function makes it possible to define a connection to a custom operator by specifying the type of object it will connect to, rather than providing an actual existing object as is the case with CustomOperator::AddOutputPort. This is for use in advanced operators, where the port may be optional and dynamically connected after the operator is instantiated.

Note:
Use of this function is rarely necessary because an operator must connect to at least one output at the time of creation, and normally only has only one output.
Parameters:
in_TargetClassIDThe type of object that can connect to this object, for example siKinematicStateID, siClusterPropertyID, siParameterID or siPrimitiveID.
in_strPortNameThe name of the port. If empty a name is automatically generated.
in_PortGroupIndex of the port group that will contain the new port
in_InsertAtNot implemented
in_flagsMask of port group flags from the siPortFlags enum
Returns:
A reference to the new OutputPort
Since:
5.1
CRefArray AddIOPortByClassID ( siClassID  in_TargetClassID,
const CString in_strPortName = CString(),
LONG  in_PortGroup = -1,
LONG  in_InsertAt = 0,
LONG  in_flags = 0 
)

Adds an InputPort and an OutputPort to the custom operator. This function makes it possible to define a connection to a custom operator by specifying the type of object it needs to connect to, rather than providing an actual existing object as is the case with CustomOperator::AddIOPort. This is for use in advanced operators, where the port may be optional and dynamically connected after the operator is instantiated.

Parameters:
in_TargetClassIDThe type of object that can connect to this object, for example siKinematicStateID, siClusterPropertyID, siParameterID or siPrimitiveID.
in_strPortNameThe name of the port. If empty a name is automatically generated.
in_PortGroupIndex of the port group that will contain the new port
in_InsertAtNot implemented
in_flagsMask of port group flags from the siPortFlags enum
Returns:
An array of references to the new InputPort and OutputPort
Since:
5.1

The documentation for this class was generated from the following file: