]> OCCT Git - occt-wok.git/commitdiff
0025183: WOK - add "Standard_Override" specifier to redefined methods
authordbv <dbv@opencascade.com>
Fri, 16 Jan 2015 13:27:06 +0000 (16:27 +0300)
committerbugmaster <bugmaster@opencascade.com>
Tue, 3 Mar 2015 15:08:08 +0000 (18:08 +0300)
WOK now adds "Standard_OVERRIDE" specifier to redefined methods

src/CPPExt/CPPExt.cxx

index 64d6e413e92cddf809463cb7e350043c878900e9..5b464516b0cd9ed0c764f3f5c0303ef816ebf222 100755 (executable)
@@ -4,6 +4,8 @@
 // 10/1995
 //
 #include <CPPExt.hxx>
+#include <EDL_API.hxx>
+#include <EDL_Variable.hxx>
 #include <WOKTools_Messages.hxx>
 #include <MS_ParamWithValue.hxx>
 #include <MS_HArray1OfParam.hxx>
@@ -438,29 +440,45 @@ void CPP_BuildMethod(const Handle(MS_MetaSchema)& aMeta,
     
     api->AddVariable(VIsCreateMethod,"no");
 
-    if (!im->IsDeferred() || !forDeclaration) {
-      if (!im->IsStatic() && forDeclaration) {
-       api->AddVariable(VVirtual,"virtual ");
+    TCollection_AsciiString aVMetSpec = "";
+    Standard_Boolean isDerived = TCollection_AsciiString (api->GetVariable (VInherits).GetValue()).Length();
+
+    if (!im->IsDeferred() || !forDeclaration)
+    {
+      if (!im->IsStatic() && forDeclaration)
+      {
+        api->AddVariable(VVirtual,"virtual ");
       }
     
-      if (im->IsConst()) {
-       api->AddVariable(VMetSpec," const");
+      if (im->IsConst())
+      {
+        aVMetSpec += " const";
       }
-      else {
-       api->AddVariable(VMetSpec,"");
+
+      if (im->IsRedefined() && isDerived)
+      {
+        aVMetSpec += " Standard_OVERRIDE";
       }
     }
-    else if (forDeclaration) {
+    else if (forDeclaration)
+    {
       api->AddVariable(VVirtual,"virtual ");
 
-      if (im->IsConst()) {
-       api->AddVariable(VMetSpec," const = 0");
+      if (im->IsConst())
+      {
+        aVMetSpec += " const";
       }
-      else {
-       api->AddVariable(VMetSpec," = 0");
+
+      if (im->IsRedefined() && isDerived)
+      {
+        aVMetSpec += " Standard_OVERRIDE";
       }
+
+      aVMetSpec += " = 0";
     }
 
+    api->AddVariable(VMetSpec, aVMetSpec.ToCString());
+
     api->Apply(VMethod,MetTemplate->ToCString());
     
     if (InlineMethod) {