X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMClient%2FGEOM_Client.cxx;h=2659f6209b4f5a38bba8e62f6932f59d71aa854c;hb=9499b99fe2dcb53e1ea364f97986f8f432b04600;hp=b18299bffb9c55c0b4391ea97d4bd78dc7e14504;hpb=d3dd282390888d7dc091ba2c2ffe7923bd7458e6;p=modules%2Fgeom.git diff --git a/src/GEOMClient/GEOM_Client.cxx b/src/GEOMClient/GEOM_Client.cxx index b18299bff..2659f6209 100644 --- a/src/GEOMClient/GEOM_Client.cxx +++ b/src/GEOMClient/GEOM_Client.cxx @@ -17,7 +17,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -26,15 +26,17 @@ // Module : GEOM // $Header$ -using namespace std; +#include + +#include + +#include + #include "GEOM_Client.hxx" #include #include "OpUtil.hxx" #include "utilities.h" -#include CORBA_SERVER_HEADER(SALOMEDS) -#include CORBA_SERVER_HEADER(GEOM_Gen) - #include #include #include @@ -45,7 +47,14 @@ using namespace std; #include #include +#ifdef WNT +#include +#else #include +#endif + +#include CORBA_SERVER_HEADER(SALOMEDS) +#include CORBA_SERVER_HEADER(GEOM_Gen) #define HST_CLIENT_LEN 256 @@ -86,7 +95,12 @@ TopoDS_Shape GEOM_Client::Load( GEOM::GEOM_Gen_ptr geom, GEOM::GEOM_Object_ptr a //======================================================================= GEOM_Client::GEOM_Client() { - pid_client = (long)getpid(); + pid_client = +#ifdef WNT + (long)_getpid(); +#else + (long)getpid(); +#endif } //======================================================================= @@ -184,47 +198,46 @@ unsigned int GEOM_Client::BufferLength() // function : GetShape() // purpose : //======================================================================= +TopoDS_Shape GEOM_Client::GetShape( GEOM::GEOM_Gen_ptr geom, GEOM::GEOM_Object_ptr aShape ) +{ + TopoDS_Shape S; + TCollection_AsciiString IOR = geom->GetStringFromIOR(aShape); + Standard_Integer anIndex = Find(IOR, S); -TopoDS_Shape GEOM_Client::GetShape( GEOM::GEOM_Gen_ptr geom, GEOM::GEOM_Object_ptr aShape ) -{ - TopoDS_Shape S; - TCollection_AsciiString IOR = geom->GetStringFromIOR(aShape); - Standard_Integer anIndex = Find(IOR, S); - - if (anIndex !=0 ) return S ; + if (anIndex != 0) return S; - /******* in case of a MAIN GEOM::SHAPE ********/ - if (aShape->IsMainShape()) { - S = Load(geom, aShape); - Bind(IOR, S); - return S; - } + /******* in case of a MAIN GEOM::SHAPE ********/ + if (aShape->IsMainShape()) { + S = Load(geom, aShape); + Bind(IOR, S); + return S; + } - /******* in case of SUB GEOM::SHAPE ***********/ - // Load and Explore the Main Shape - TopoDS_Shape aMainShape = GetShape (geom, aShape->GetMainShape()); - GEOM::ListOfLong_var list = aShape->GetSubShapeIndices(); + /******* in case of SUB GEOM::SHAPE ***********/ + // Load and Explore the Main Shape + TopoDS_Shape aMainShape = GetShape (geom, aShape->GetMainShape()); + GEOM::ListOfLong_var list = aShape->GetSubShapeIndices(); TopTools_IndexedMapOfShape anIndices; TopExp::MapShapes(aMainShape, anIndices); - /* Case of only one subshape */ - if (list->length() == 1) - { - S = anIndices.FindKey(list[0]); - } + /* Case of only one subshape */ + if (list->length() == 1) { + S = anIndices.FindKey(list[0]); + } else { BRep_Builder B; TopoDS_Compound aCompound; B.MakeCompound(aCompound); - for(int i=0; ilength(); i++) { - TopoDS_Shape aSubShape = anIndices.FindKey(list[i]); - B.Add(aCompound, aSubShape); + for (int i = 0; i < list->length(); i++) { + if (0 < list[i] && list[i] <= anIndices.Extent()) { + TopoDS_Shape aSubShape = anIndices.FindKey(list[i]); + B.Add(aCompound, aSubShape); + } } S = aCompound; } - Bind(IOR, S); - return S; -} - + Bind(IOR, S); + return S; +}