// 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
//
//
//
// Module : GEOM
// $Header$
-#include <strstream>
+#include <Standard_Stream.hxx>
+
+#include <Standard_Stream.hxx>
-using namespace std;
+#include <strstream>
#include "GEOM_Client.hxx"
#include <SALOMEconfig.h>
#include "OpUtil.hxx"
#include "utilities.h"
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(GEOM_Gen)
-
#include <BRep_Builder.hxx>
#include <BRepTools.hxx>
#include <TopoDS_Shape.hxx>
#include <TopAbs.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
+#ifdef WNT
+#include <process.h>
+#else
#include <unistd.h>
+#endif
+
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(GEOM_Gen)
#define HST_CLIENT_LEN 256
//=======================================================================
GEOM_Client::GEOM_Client()
{
- pid_client = (long)getpid();
+ pid_client =
+#ifdef WNT
+ (long)_getpid();
+#else
+ (long)getpid();
+#endif
}
//=======================================================================
// 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; i<list->length(); 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;
+}