]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
CCAR: add a new operation (SetAttrString) to SObject CORBA interface to be able
authorcaremoli <caremoli>
Mon, 3 Jan 2011 14:00:38 +0000 (14:00 +0000)
committercaremoli <caremoli>
Mon, 3 Jan 2011 14:00:38 +0000 (14:00 +0000)
to set an attribute value (of type string) without creating the intermediate Attribute object (faster)

idl/SALOMEDS.idl
src/Basics/Basics_Utils.hxx
src/SALOMEDS/SALOMEDS_SObject.cxx
src/SALOMEDS/SALOMEDS_SObject.hxx
src/SALOMEDS/SALOMEDS_SObject_i.cxx
src/SALOMEDS/SALOMEDS_SObject_i.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeIOR.cxx
src/SALOMEDSImpl/SALOMEDSImpl_SObject.cxx
src/SALOMEDSImpl/SALOMEDSImpl_SObject.hxx

index 0cc5780ca4d80270e437b1ff06577910bfedfb06..85efbab4c3d2a36ff6db7ce9c0ec6dde508afe03 100644 (file)
@@ -1091,6 +1091,13 @@ Gets the list of open studies
 */
     string GetIOR();
 
+/*!
+    Set an attribute value (of type string)
+   \param name the name of the attribute
+   \param value the value of the attribute
+*/
+    void SetAttrString(in string name, in string value);
+
 /*!
     Private method, returns an implementation of this SObject.
    \param theHostname is a hostname of the caller
index 7442518b96ad8552ef67a64c263417e9d81691ac..ce0513c4986c65cf4d3b90db03e8fc742f3a772e 100644 (file)
@@ -28,6 +28,8 @@
 #include "SALOME_Basics.hxx"
 
 #include <string>
+#include <iostream>
+#include <sys/time.h>
 
 namespace Kernel_Utils
 {
@@ -52,4 +54,14 @@ namespace Kernel_Utils
   BASICS_EXPORT std::string GetGUID( GUIDtype );
 }
 
+#define START_TIMING(name) static long name##tcount=0;static long name##cumul;long name##tt0; timeval name##tv; gettimeofday(&name##tv,0); \
+                           name##tt0=name##tv.tv_usec+name##tv.tv_sec*1000000; \
+                           if(name##tcount==0)std::cerr<<__FILE__<<":"<<__LINE__<<":"<<#name<<std::endl;
+
+#define END_TIMING(name,NUMBER) name##tcount=name##tcount+1;gettimeofday(&name##tv,0); \
+                                name##cumul=name##cumul+name##tv.tv_usec+name##tv.tv_sec*1000000 -name##tt0; \
+                                if(name##tcount==NUMBER){ \
+                                  std::cerr <<__FILE__<<":"<<__LINE__<<":"<<#name<<" temps CPU(mus): "<< name##cumul<<std::endl; \
+                                  name##tcount=0;name##cumul=0;}
+
 #endif //_Basics_UTILS_HXX_
index c9f45d4a3a9e1fb505b257923f0344893817c001..8d513b031ef4dd46301de513eb97192e62b2615e 100644 (file)
@@ -342,3 +342,16 @@ void SALOMEDS_SObject::init_orb()
   ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
   _orb = init(0 , 0 ) ;     
 }
+
+void SALOMEDS_SObject::SetAttrString(const std::string& name, const std::string& value)
+{
+  if(_isLocal)
+    {
+      SALOMEDS::Locker lock;
+      _local_impl->SetAttrString(name,value);
+    }
+  else
+    {
+      _corba_impl->SetAttrString(name.c_str(),value.c_str());
+    }
+}
index 7866ec901bc731fb8f08e8dc1da89c9d826b5b26..e7d4b3aeeab9d6b285ec00774fe4af5f3b9d4680 100644 (file)
@@ -66,6 +66,7 @@ public:
   virtual std::string GetName();
   virtual std::string GetComment();
   virtual std::string GetIOR();
+  virtual void SetAttrString(const std::string& name, const std::string& value);
   virtual int   Tag();
   virtual int   Depth();
 
index 76cd689b0d7854144f305b7e2642b10bffd6bdc5..8de5670dd63dea327ebb24f726cb8a436a7ee81d 100644 (file)
@@ -318,6 +318,17 @@ char* SALOMEDS_SObject_i::GetIOR()
   return aStr._retn();
 }
 
+//============================================================================
+/*! Function : SetAttrString
+ *  Purpose  :
+ */
+//============================================================================
+void SALOMEDS_SObject_i::SetAttrString(const char* name, const char* value)
+{
+  SALOMEDS::Locker lock;
+  _impl->SetAttrString(name,value);
+}
+
 //===========================================================================
 //   PRIVATE FUNCTIONS
 //===========================================================================
index c9dd3c123019b9d496b70fc9dc77981da5a4b29a..d5637230832aed13776e794cf6ec2c449d6f607c 100644 (file)
@@ -71,6 +71,7 @@ public:
   virtual char* GetName();
   virtual char* GetComment();
   virtual char* GetIOR();
+  virtual void SetAttrString(const char*, const char*);
 
   virtual CORBA::Short Tag();
   virtual CORBA::Short Depth();
index 1762ec9a0d05b2f32fd0e2a6f4e68b6837e72497..668e1a142a8695878e0e50c99a3147b93c946a4d 100644 (file)
@@ -41,6 +41,7 @@ static CORBA::ORB_var getORB()
 
 void IORGenericObjDecref(const std::string& anIOR)
 {
+  if(anIOR=="")return;
   CORBA::Object_var obj;
   SALOME::GenericObj_var gobj;
   try
index d2028fe7b57a26acf7d9cc27ea4ea302db01c65c..7cf41a0f8b91955b57905e89ec7e02a4f3321023 100644 (file)
@@ -292,3 +292,10 @@ bool SALOMEDSImpl_SObject::IsComponent() const
     return SALOMEDSImpl_SComponent::IsA(_lab);
 }
 
+void SALOMEDSImpl_SObject::SetAttrString(const std::string& name, const std::string& value)
+{
+  if(name=="AttributeName")SALOMEDSImpl_AttributeName::Set(GetLabel(), value);
+  else if(name=="AttributeIOR")SALOMEDSImpl_AttributeIOR::Set(GetLabel(), value);
+  else if(name=="AttributeString")SALOMEDSImpl_AttributeString::Set(GetLabel(), value);
+  else if(name=="AttributePixMap")SALOMEDSImpl_AttributePixMap::Set(GetLabel(), value);
+}
index 5c049fba3af147e15420c72883b1c0c0bc467ba7..54a799953f7f7270322c2a3a447b5e42ab32e320 100644 (file)
@@ -67,6 +67,7 @@ public:
   virtual std::string GetName() const ;
   virtual std::string GetComment() const;
   virtual std::string GetIOR() const;
+  virtual void SetAttrString(const std::string& name,const std::string& value);
 
   virtual int Tag() const { return _lab.Tag(); }
   virtual int Depth() const { return _lab.Depth(); }