0031668: Visualization - WebGL sample doesn't work on Emscripten 1.39
[occt.git] / src / StdDrivers / StdDrivers.cxx
old mode 100755 (executable)
new mode 100644 (file)
index c74d9a9..4d15883
@@ -1,85 +1,74 @@
 // Created on: 2000-09-07
 // Created by: TURIN Anatoliy
-// Copyright (c) 2000-2012 OPEN CASCADE SAS
+// Copyright (c) 2000-2015 OPEN CASCADE SAS
 //
-// The content of this file is subject to the Open CASCADE Technology Public
-// License Version 6.5 (the "License"). You may not use the content of this file
-// except in compliance with the License. Please obtain a copy of the License
-// at http://www.opencascade.org and read it completely before using this file.
+// This file is part of Open CASCADE Technology software library.
 //
-// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
-// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
 //
-// The Original Code and all software distributed under the License is
-// distributed on an "AS IS" basis, without warranty of any kind, and the
-// Initial Developer hereby disclaims all such warranties, including without
-// limitation, any warranties of merchantability, fitness for a particular
-// purpose or non-infringement. Please see the License for the specific terms
-// and conditions governing the rights and limitations under the License.
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
 
-
-#include <StdDrivers.ixx>
-#include <StdDrivers_DocumentStorageDriver.hxx>
+#include <StdDrivers.hxx>
 #include <StdDrivers_DocumentRetrievalDriver.hxx>
-#include <StdSchema.hxx>
-#include <StdLSchema.hxx>
-#include <ShapeSchema.hxx>
-#include <Storage_HArrayOfSchema.hxx>
+
+#include <StdLPersistent.hxx>
+#include <StdPersistent.hxx>
+#include <ShapePersistent.hxx>
 
 #include <Standard_Failure.hxx>
 #include <Standard_GUID.hxx>
 #include <Plugin_Macro.hxx>
 
-static Standard_GUID StdStorageDriver     ("ad696000-5b34-11d1-b5ba-00a0c9064368");
-static Standard_GUID StdRetrievalDriver   ("ad696001-5b34-11d1-b5ba-00a0c9064368");
-static Standard_GUID StdSchemaID          ("ad696002-5b34-11d1-b5ba-00a0c9064368");
+#include <PCDM_StorageDriver.hxx>
+#include <TDocStd_Application.hxx>
 
-Handle(Standard_Transient) StdDrivers::Factory(const Standard_GUID& aGUID) {
+static Standard_GUID StdRetrievalDriver ("ad696001-5b34-11d1-b5ba-00a0c9064368");
 
-  if(aGUID == StdSchemaID) {    
-#ifdef DEB
-    cout << "StdSchema : Plugin" << endl;
-#endif
-    static Handle(StdLSchema) model_ss = new StdLSchema;
-    static Standard_Boolean aNeedNested = Standard_True;
-    if(aNeedNested) {
-      aNeedNested = Standard_False;
-#ifdef DEB
-      cout << "StdSchema: Adding nested schema" << endl;
+//=======================================================================
+//function : Factory
+//purpose  : Depending from the ID, returns a list of storage
+//           or retrieval attribute drivers. Used for plugin
+//=======================================================================
+Handle(Standard_Transient) StdDrivers::Factory (const Standard_GUID& aGUID)
+{
+  if (aGUID == StdRetrievalDriver)
+  {
+#ifdef OCCT_DEBUG
+    std::cout << "StdDrivers : Retrieval Plugin" << std::endl;
 #endif
-      Handle(StdSchema) aSchema = new StdSchema;
-      Handle(ShapeSchema) aSSchema = new ShapeSchema;
-      Handle(Storage_HArrayOfSchema) aSchemas = new Storage_HArrayOfSchema(0,1);
-      aSchemas->SetValue(0, aSSchema);
-      aSchemas->SetValue(1, aSchema);
-      model_ss->SetNestedSchemas(aSchemas);
-    }
-    return model_ss;
-  }
 
-  if(aGUID == StdStorageDriver)  {
-#ifdef DEB
-    cout << "StdDrivers : Storage Plugin" << endl;
-#endif
-    static Handle(StdDrivers_DocumentStorageDriver) model_sd = new StdDrivers_DocumentStorageDriver;
-    return model_sd;
-  }
-  if(aGUID == StdRetrievalDriver) {  
-#ifdef DEB
-    cout << "StdDrivers : Retrieval Plugin" << endl;
-#endif
     static Handle(StdDrivers_DocumentRetrievalDriver) model_rd = new StdDrivers_DocumentRetrievalDriver;
     return model_rd;
   }
  
-  Standard_Failure::Raise ("StdDrivers : unknown GUID");
-  Handle(Standard_Transient) t;
-  return t;
+  throw Standard_Failure("StdDrivers : unknown GUID");
 }
 
-#ifdef _MSC_VER
-#pragma warning(disable:4190) /* disable warning on C++ type returned by C function; should be OK for C++ usage */
-#endif
+//=======================================================================
+//function : DefineFormat
+//purpose  : 
+//=======================================================================
+void StdDrivers::DefineFormat (const Handle(TDocStd_Application)& theApp)
+{
+  theApp->DefineFormat ("MDTV-Standard", "Standard OCAF Document", "std",
+                        new StdDrivers_DocumentRetrievalDriver, 0);
+}
+
+//=======================================================================
+//function : BindTypes
+//purpose  : Register types
+//=======================================================================
+void StdDrivers::BindTypes (StdObjMgt_MapOfInstantiators& theMap)
+{
+  StdLPersistent ::BindTypes (theMap);
+  StdPersistent  ::BindTypes (theMap);
+  ShapePersistent::BindTypes (theMap);
+}
 
 // Declare entry point PLUGINFACTORY
-PLUGIN(StdDrivers)
+PLUGIN (StdDrivers)