Version: 6.3.1
Public Member Functions | Static Public Member Functions | Protected Attributes

_pyComplexParamHypo Class Reference

Class for hypotheses having several parameters modified by one method. More...

#include <SMESH_2smeshpy.hxx>

Inheritance diagram for _pyComplexParamHypo:
Inheritance graph
[legend]

Public Member Functions

 _pyComplexParamHypo (const Handle(_pyCommand)&theCreationCmd)
void Process (const Handle(_pyCommand)&theCommand)
 Remember hypothesis parameter values.
void Flush ()
 Clear SetObjectEntry() as it is called by methods of Mesh_Segment.
void SetConvMethodAndType (const char *creationMethod, const char *type)
void AddArgMethod (const char *method, const int nbArgs=1)
const
TColStd_SequenceOfAsciiString & 
GetArgs () const
const std::list< Handle(_pyCommand)> & GetArgCommands () const
void ClearAllCommands ()
 clear creation, arg and unkown commands
virtual bool IsAlgo () const
bool IsValid () const
bool IsWrapped () const
const _pyIDGetGeom () const
void SetMesh (const _pyID &theMeshId)
const _pyIDGetMesh () const
const TCollection_AsciiString & GetAlgoType () const
const TCollection_AsciiString & GetAlgoCreationMethod () const
bool CanBeCreatedBy (const TCollection_AsciiString &algoType) const
const TCollection_AsciiString & GetCreationMethod (const TCollection_AsciiString &algoType) const
virtual bool IsWrappable (const _pyID &theMesh)
virtual bool Addition2Creation (const Handle(_pyCommand)&theAdditionCmd, const _pyID &theMesh)
 Convert the command adding a hypothesis to mesh into a smesh command.
const Handle (_pyCommand)&GetCreationCmd()
virtual void Assign (const Handle(_pyHypothesis)&theOther, const _pyID &theMesh)
 Assign fields of theOther to me except myIsWrapped.
const _pyIDGetID ()
int GetNbCalls () const
void SetCreationCmd (Handle(_pyCommand) cmd)
int GetCommandNb ()
virtual const char * AccessorMethod () const
 Return method name giving access to an interaface object wrapped by python class.

Static Public Member Functions

static Handle (_pyHypothesis) NewHypothesis(const Handle(_pyCommand)&theCreationCmd)
static _pyID FatherID (const _pyID &childID)
 Return ID of a father.

Protected Attributes

bool myIsAlgo
bool myIsWrapped
_pyID myGeom
_pyID myMesh
std::map
< TCollection_AsciiString,
TCollection_AsciiString > 
myType2CreationMethod
TColStd_SequenceOfAsciiString myArgs
TColStd_SequenceOfAsciiString myArgMethods
TColStd_SequenceOfInteger myNbArgsByMethod
std::list< Handle(_pyCommand)> myArgCommands
std::list< Handle(_pyCommand)> myUnknownCommands

Detailed Description

Class for hypotheses having several parameters modified by one method.

Definition at line 358 of file SMESH_2smeshpy.hxx.


Constructor & Destructor Documentation

_pyComplexParamHypo._pyComplexParamHypo ( const Handle(_pyCommand)&  theCreationCmd)

Definition at line 361 of file SMESH_2smeshpy.hxx.

: _pyHypothesis(theCreationCmd) {}

Member Function Documentation

const char * _pyObject::AccessorMethod ( ) const [virtual, inherited]

Return method name giving access to an interaface object wrapped by python class.

Return values:
constchar* - method name

Reimplemented in _pyGen, _pyMesh, and _pyAlgorithm.

Definition at line 2484 of file SMESH_2smeshpy.cxx.

{
  return 0;
}
void _pyHypothesis.AddArgMethod ( const char *  method,
const int  nbArgs = 1 
) [inherited]

Definition at line 305 of file SMESH_2smeshpy.hxx.

  { myArgMethods.Append( (char*)method ); myNbArgsByMethod.Append( nbArgs ); }
bool _pyHypothesis::Addition2Creation ( const Handle(_pyCommand)&  theCmd,
const _pyID theMesh 
) [virtual, inherited]

Convert the command adding a hypothesis to mesh into a smesh command.

Parameters:
theCmd- The command like mesh.AddHypothesis( geom, hypo )
theAlgo- The algo that can create this hypo
Return values:
bool- false if the command cant be converted

Reimplemented in _pyAlgorithm, _pyLayerDistributionHypo, _pyNumberOfSegmentsHyp, and _pySegmentLengthAroundVertexHyp.

Definition at line 1510 of file SMESH_2smeshpy.cxx.

References ex01_cube2build.algo, _pyHypothesis.GetAlgoCreationMethod(), _pyHypothesis.GetAlgoType(), _pyCommand.GetArg(), _pyHypothesis.GetCreationMethod(), _pyObject.GetID(), _pyCommand.GetMethod(), _pyHypothesis.Handle(), _pyHypothesis.IsAlgo(), _pyHypothesis.IsWrappable(), _pyHypothesis.myArgCommands, _pyHypothesis.myArgs, _pyHypothesis.myGeom, _pyHypothesis.myIsWrapped, _pyHypothesis.myUnknownCommands, _pyCommand.RemoveArgs(), _pyCommand.SetArg(), _pyObject.SetCreationCmd(), _pyCommand.SetMethod(), _pyCommand.SetObject(), and _pyCommand.SetResultValue().

Referenced by _pyAlgorithm.Addition2Creation().

{
  ASSERT(( theCmd->GetMethod() == "AddHypothesis" ));

  if ( !IsWrappable( theMesh ))
    return false;

  myGeom = theCmd->GetArg( 1 );

  Handle(_pyHypothesis) algo;
  if ( !IsAlgo() ) {
    // find algo created on myGeom in theMesh
    algo = theGen->FindAlgo( myGeom, theMesh, this );
    if ( algo.IsNull() )
      return false;
    // attach hypothesis creation command to be after algo creation command
    // because it can be new created instance of algorithm
    algo->GetCreationCmd()->AddDependantCmd( theCmd );
  }
  myIsWrapped = true;

  // mesh.AddHypothesis(geom,hyp) --> hyp = <theMesh or algo>.myCreationMethod(args)
  theCmd->SetResultValue( GetID() );
  theCmd->SetObject( IsAlgo() ? theMesh : algo->GetID());
  theCmd->SetMethod( IsAlgo() ? GetAlgoCreationMethod() : GetCreationMethod( algo->GetAlgoType() ));
  // set args
  theCmd->RemoveArgs();
  for ( int i = 1; i <= myArgs.Length(); ++i ) {
    if ( !myArgs( i ).IsEmpty() )
      theCmd->SetArg( i, myArgs( i ));
    else
      theCmd->SetArg( i, "[]");
  }
  // set a new creation command
  GetCreationCmd()->Clear();
  // replace creation command by wrapped instance
  // please note, that hypothesis attaches to algo creation command (see upper)
  SetCreationCmd( theCmd );
  

  // clear commands setting arg values
  list < Handle(_pyCommand) >::iterator argCmd = myArgCommands.begin();
  for ( ; argCmd != myArgCommands.end(); ++argCmd )
    (*argCmd)->Clear();

  // set unknown arg commands after hypo creation
  Handle(_pyCommand) afterCmd = myIsWrapped ? theCmd : GetCreationCmd();
  list<Handle(_pyCommand)>::iterator cmd = myUnknownCommands.begin();
  for ( ; cmd != myUnknownCommands.end(); ++cmd ) {
    afterCmd->AddDependantCmd( *cmd );
  }

  return myIsWrapped;
}
void _pyHypothesis::Assign ( const Handle(_pyHypothesis)&  theOther,
const _pyID theMesh 
) [virtual, inherited]

Assign fields of theOther to me except myIsWrapped.

Definition at line 1647 of file SMESH_2smeshpy.cxx.

References _pyHypothesis.myArgCommands, _pyHypothesis.myArgMethods, _pyHypothesis.myArgs, _pyHypothesis.myGeom, _pyHypothesis.myIsAlgo, _pyHypothesis.myIsWrapped, _pyHypothesis.myMesh, _pyHypothesis.myNbArgsByMethod, _pyHypothesis.myType2CreationMethod, and _pyHypothesis.myUnknownCommands.

{
  myIsWrapped = false;
  myMesh = theMesh;

  // myCreationCmd = theOther->myCreationCmd;
  myIsAlgo = theOther->myIsAlgo;
  myGeom = theOther->myGeom;
  myType2CreationMethod = theOther->myType2CreationMethod;
  myArgs = theOther->myArgs;
  myArgMethods = theOther->myArgMethods;
  myNbArgsByMethod = theOther->myNbArgsByMethod;
  myArgCommands = theOther->myArgCommands;
  myUnknownCommands = theOther->myUnknownCommands;
}
bool _pyHypothesis.CanBeCreatedBy ( const TCollection_AsciiString &  algoType) const [inherited]

Definition at line 320 of file SMESH_2smeshpy.hxx.

  { return myType2CreationMethod.find( algoType ) != myType2CreationMethod.end(); }
void _pyHypothesis::ClearAllCommands ( ) [inherited]

clear creation, arg and unkown commands

Definition at line 1629 of file SMESH_2smeshpy.cxx.

References _pyHypothesis.myArgCommands, and _pyHypothesis.myUnknownCommands.

{
  GetCreationCmd()->Clear();
  list<Handle(_pyCommand)>::iterator cmd = myArgCommands.begin();
  for ( ; cmd != myArgCommands.end(); ++cmd )
    ( *cmd )->Clear();
  cmd = myUnknownCommands.begin();
  for ( ; cmd != myUnknownCommands.end(); ++cmd )
    ( *cmd )->Clear();
}
_pyID _pyObject::FatherID ( const _pyID childID) [static, inherited]

Return ID of a father.

Definition at line 2494 of file SMESH_2smeshpy.cxx.

Referenced by _pySegmentLengthAroundVertexHyp.Addition2Creation().

{
  int colPos = childID.SearchFromEnd(':');
  if ( colPos > 0 )
    return childID.SubString( 1, colPos-1 );
  return "";
}
void _pyComplexParamHypo::Flush ( ) [virtual]

Clear SetObjectEntry() as it is called by methods of Mesh_Segment.

Reimplemented from _pyHypothesis.

Definition at line 1696 of file SMESH_2smeshpy.cxx.

References _pyHypothesis.IsWrapped(), and _pyHypothesis.myUnknownCommands.

{
  if ( IsWrapped() )
  {
    list < Handle(_pyCommand) >::iterator cmd = myUnknownCommands.begin();
    for ( ; cmd != myUnknownCommands.end(); ++cmd )
      if ((*cmd)->GetMethod() == "SetObjectEntry" )
        (*cmd)->Clear();
  }
}
const TCollection_AsciiString& _pyHypothesis.GetAlgoCreationMethod ( ) const [inherited]

Definition at line 318 of file SMESH_2smeshpy.hxx.

Referenced by _pyHypothesis.Addition2Creation().

  { return myType2CreationMethod.begin()->second; }
const TCollection_AsciiString& _pyHypothesis.GetAlgoType ( ) const [inherited]

Definition at line 316 of file SMESH_2smeshpy.hxx.

Referenced by _pyLayerDistributionHypo.Addition2Creation(), and _pyHypothesis.Addition2Creation().

  { return myType2CreationMethod.begin()->first; }
const std::list<Handle(_pyCommand)>& _pyHypothesis.GetArgCommands ( ) const [inherited]

Definition at line 308 of file SMESH_2smeshpy.hxx.

{ return myArgCommands; }
const TColStd_SequenceOfAsciiString& _pyHypothesis.GetArgs ( ) const [inherited]

Definition at line 307 of file SMESH_2smeshpy.hxx.

{ return myArgs; }
int _pyObject.GetCommandNb ( ) [inherited]

Definition at line 167 of file SMESH_2smeshpy.hxx.

{ return myCreationCmd->GetOrderNb(); }
const TCollection_AsciiString& _pyHypothesis.GetCreationMethod ( const TCollection_AsciiString &  algoType) const [inherited]

Definition at line 322 of file SMESH_2smeshpy.hxx.

Referenced by _pyHypothesis.Addition2Creation().

  { return myType2CreationMethod.find( algoType )->second; }
const _pyID& _pyHypothesis.GetGeom ( ) const [inherited]

Definition at line 313 of file SMESH_2smeshpy.hxx.

{ return myGeom; }
const _pyID& _pyObject.GetID ( ) [inherited]
const _pyID& _pyHypothesis.GetMesh ( ) const [inherited]

Definition at line 315 of file SMESH_2smeshpy.hxx.

{ return myMesh; }
int _pyObject.GetNbCalls ( ) const [inherited]

Definition at line 165 of file SMESH_2smeshpy.hxx.

References _pyObject.myNbCalls.

Referenced by _pySubMesh.Flush(), and _pySelfEraser.Flush().

{ return myNbCalls; }
static _pyHypothesis.Handle ( _pyHypothesis  ) const [static, inherited]
const _pyObject.Handle ( _pyCommand  ) [inherited]

Reimplemented in _pyGen, and _pyGen.

Definition at line 164 of file SMESH_2smeshpy.hxx.

{ return myCreationCmd; }
virtual bool _pyHypothesis.IsAlgo ( ) const [virtual, inherited]

Definition at line 310 of file SMESH_2smeshpy.hxx.

Referenced by _pyHypothesis.Addition2Creation().

{ return myIsAlgo; }
bool _pyHypothesis.IsValid ( ) const [inherited]

Definition at line 311 of file SMESH_2smeshpy.hxx.

{ return !myType2CreationMethod.empty(); }
virtual bool _pyHypothesis.IsWrappable ( const _pyID theMesh) [virtual, inherited]
bool _pyHypothesis.IsWrapped ( ) const [inherited]

Definition at line 312 of file SMESH_2smeshpy.hxx.

Referenced by _pyNumberOfSegmentsHyp.Flush(), Flush(), and _pyHypothesis.Flush().

{ return myIsWrapped; }
void _pyComplexParamHypo::Process ( const Handle(_pyCommand)&  theCommand) [virtual]

Remember hypothesis parameter values.

Parameters:
theCommand- The called hypothesis method

Reimplemented from _pyHypothesis.

Definition at line 1671 of file SMESH_2smeshpy.cxx.

References _pyCommand.GetArg(), _pyCommand.GetMethod(), _pyHypothesis.myArgCommands, and _pyHypothesis.myArgs.

{
  if( theCommand->GetMethod() == "SetLength" )
  {
    // NOW it becomes OBSOLETE
    // ex: hyp.SetLength(start, 1)
    //     hyp.SetLength(end,   0)
    ASSERT(( theCommand->GetArg( 2 ).IsIntegerValue() ));
    int i = 2 - theCommand->GetArg( 2 ).IntegerValue();
    while ( myArgs.Length() < i )
      myArgs.Append( "[]" );
    myArgs( i ) = theCommand->GetArg( 1 ); // arg value
    myArgCommands.push_back( theCommand );
  }
  else
  {
    _pyHypothesis::Process( theCommand );
  }
}
void _pyHypothesis.SetConvMethodAndType ( const char *  creationMethod,
const char *  type 
) [inherited]

Definition at line 303 of file SMESH_2smeshpy.hxx.

  { myType2CreationMethod[ (char*)type ] = (char*)creationMethod; }
void _pyObject.SetCreationCmd ( Handle(_pyCommand cmd) [inherited]

Definition at line 166 of file SMESH_2smeshpy.hxx.

Referenced by _pyHypothesis.Addition2Creation().

{ myCreationCmd = cmd; }
void _pyHypothesis.SetMesh ( const _pyID theMeshId) [inherited]

Definition at line 314 of file SMESH_2smeshpy.hxx.

{ if ( myMesh.IsEmpty() ) myMesh = theMeshId; }

Field Documentation

std::list<Handle(_pyCommand)> _pyHypothesis.myArgCommands [protected, inherited]
TColStd_SequenceOfAsciiString _pyHypothesis.myArgMethods [protected, inherited]

Definition at line 297 of file SMESH_2smeshpy.hxx.

Referenced by _pyHypothesis.Assign(), and _pyHypothesis.Process().

TColStd_SequenceOfAsciiString _pyHypothesis.myArgs [protected, inherited]
_pyID _pyHypothesis.myGeom [protected, inherited]

Definition at line 292 of file SMESH_2smeshpy.hxx.

Referenced by _pyHypothesis.Addition2Creation(), and _pyHypothesis.Assign().

bool _pyHypothesis.myIsAlgo [protected, inherited]
bool _pyHypothesis.myIsWrapped [protected, inherited]
_pyID _pyHypothesis.myMesh [protected, inherited]

Definition at line 292 of file SMESH_2smeshpy.hxx.

Referenced by _pyHypothesis.Assign().

TColStd_SequenceOfInteger _pyHypothesis.myNbArgsByMethod [protected, inherited]

Definition at line 298 of file SMESH_2smeshpy.hxx.

Referenced by _pyHypothesis.Assign(), and _pyHypothesis.Process().

std::map<TCollection_AsciiString, TCollection_AsciiString > _pyHypothesis.myType2CreationMethod [protected, inherited]

Definition at line 294 of file SMESH_2smeshpy.hxx.

Referenced by _pyHypothesis.Assign().

std::list<Handle(_pyCommand)> _pyHypothesis.myUnknownCommands [protected, inherited]
Copyright © 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS