0023935: Compiler warnings on returning Handle from C functions in OCAF schemas
authorvro <vro@opencascade.com>
Fri, 31 May 2013 13:29:27 +0000 (17:29 +0400)
committervro <vro@opencascade.com>
Fri, 31 May 2013 13:29:27 +0000 (17:29 +0400)
The warning 4190 is disabled because a C++ object calling from C section is manipulating only in C++ (outside of C section).
Second attempt to remove the warning: extern "C" is removed - everything works fine. But I tested it only on Windows.
Removed "Create##schema" method at all: without "extern "C"" it is useless. Checked that in OCCT and Samples this method is unused.

"new ##Schema" is used instead (like in StdDrivers.cxx, for an example). Also this approach is advised in Storage_Schema.cdl:
     --   For example, if ShapeSchema is the class
     -- inheriting from Storage_Schema and containing
     -- the description of your application data schema,
     -- you create a storage/retrieval algorithm as follows:
     -- Handle(ShapeSchema) s = new
     -- ShapeSchema;

src/Storage/Storage_Macros.hxx

index 62ecfb6..23665f3 100755 (executable)
@@ -29,9 +29,6 @@ Standard_EXPORT Handle(Storage_CallBack)  CallBackSelection(const TCollection_As
 // Read_TypeSelection
 //
 #define Storage_BEGIN_READ_SELECTION(schema) \
-                  extern "C" { \
-                  Standard_EXPORT Handle(Storage_Schema) Create##schema() { return new schema; } \
-                            } \
                   Handle(Storage_CallBack) schema::CallBackSelection(const TCollection_AsciiString& rt) const \
                                              { \
                                              Handle(Standard_Persistent) p; \