fix missing-override warnings on Scilab types
[scilab.git] / scilab / modules / ast / includes / types / function.hxx
index 63f4896..648f059 100644 (file)
@@ -3,11 +3,14 @@
  *  Copyright (C) 2008-2008 - DIGITEO - Antoine ELIAS
  *  Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
  *
- *  This file must be used under the terms of the CeCILL.
- *  This source file is licensed as described in the file COPYING, which
- *  you should have received as part of this distribution.  The terms
- *  are also available at
- *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ * Copyright (C) 2012 - 2016 - Scilab Enterprises
+ *
+ * This file is hereby licensed under the terms of the GNU GPL v2.0,
+ * pursuant to article 5.3.4 of the CeCILL v.2.1.
+ * This file was originally licensed under the terms of the CeCILL v2.1,
+ * and continues to be available under such terms.
+ * For more information, see the COPYING file which you should have received
+ * along with this program.
  *
  */
 
@@ -38,10 +41,11 @@ class EXTERN_AST Function : public Callable
 public :
     enum FunctionType
     {
-        EntryPointC         = 0,
-        EntryPointCPP       = 1,
-        EntryPointMex       = 2,
-        EntryPointCPPOpt    = 3,
+        EntryPointOldC = 0,
+        EntryPointCPP = 1,
+        EntryPointMex = 2,
+        EntryPointCPPOpt = 3,
+        EntryPointC = 4
     };
 
     typedef int(*LOAD_DEPS)(const std::wstring&);
@@ -49,12 +53,17 @@ public :
     typedef ReturnValue (*GW_FUNC)(typed_list &in, int _iRetCount, typed_list &out);
     typedef ReturnValue (*GW_FUNC_OPT)(typed_list &in, optional_list &opt, int _iRetCount, typed_list &out);
 
-    Function() : Callable() {};
+    Function() : Callable()
+    {
+        m_pFunc = nullptr;
+        m_pLoadDeps = nullptr;
+    };
     Function(const std::wstring& _wstName, GW_FUNC _pFunc, LOAD_DEPS _pLoadDeps, const std::wstring& _wstModule);
     ~Function();
 
     //FIXME : Should not return NULL
-    InternalType*           clone();
+    virtual Function*       clone() override;
+    virtual bool operator==(const InternalType& it) override;
 
     static Function*        createFunction(const std::wstring& _wstName, GW_FUNC _pFunc, const std::wstring& _wstModule);
     static Function*        createFunction(const std::wstring& _wstName, GW_FUNC_OPT _pFunc, const std::wstring& _wstModule);
@@ -64,38 +73,40 @@ public :
     static Function*        createFunction(const std::wstring& _wstName, GW_FUNC_OPT _pFunc, LOAD_DEPS _pLoadDeps, const std::wstring& _wstModule);
     static Function*        createFunction(const std::wstring& _wstName, OLDGW_FUNC _pFunc, LOAD_DEPS _pLoadDeps, const std::wstring& _wstModule);
     static Function*        createFunction(const std::wstring& _wstName, MEXGW_FUNC _pFunc, LOAD_DEPS _pLoadDeps, const std::wstring& _wstModule);
+    static Function*        createFunction(const std::wstring& _wstName, GW_C_FUNC _pFunc, const std::wstring& _wstModule);
+    static Function*        createFunction(const std::wstring& _wstName, GW_C_FUNC _pFunc, LOAD_DEPS _pLoadDeps, const std::wstring& _wstModule);
 
     /*dynamic gateways*/
     static Function*        createFunction(const std::wstring& _wstFunctionName, const std::wstring& _wstEntryPointName, const std::wstring& _wstLibName, FunctionType _iType, LOAD_DEPS _pLoadDeps, const std::wstring& _wstModule, bool _bCloseLibAfterCall = false);
     static Function*        createFunction(const std::wstring& _wstFunctionName, const std::wstring& _wstEntryPointName, const std::wstring& _wstLibName, FunctionType _iType, const std::wstring& _wstLoadDepsName, const std::wstring& _wstModule, bool _bCloseLibAfterCall = false);
 
-    inline ScilabType       getType(void)
+    inline ScilabType       getType(void) override
     {
         return ScilabFunction;
     }
-    inline ScilabId         getId(void)
+    inline ScilabId         getId(void) override
     {
         return IdFunction;
     }
 
-    bool                    isFunction()
+    bool                    isFunction() override
     {
         return true;
     }
 
-    void                    whoAmI();
+    void                    whoAmI() override;
 
-    bool                    toString(std::wostringstream& ostr);
+    bool                    toString(std::wostringstream& ostr) override;
 
-    virtual ReturnValue     call(typed_list &in, optional_list &opt, int _iRetCount, typed_list &out, ast::ConstVisitor* execFunc);
+    virtual ReturnValue     call(typed_list &in, optional_list &opt, int _iRetCount, typed_list &out) override;
 
     /* return type as string ( double, int, cell, list, ... )*/
-    virtual std::wstring    getTypeStr()
+    virtual std::wstring    getTypeStr() const override
     {
         return L"fptr";
     }
     /* return type as short string ( s, i, ce, l, ... )*/
-    virtual std::wstring    getShortTypeStr()
+    virtual std::wstring    getShortTypeStr() const override
     {
         return L"fptr";
     }
@@ -124,38 +135,57 @@ private :
 public :
     OptFunction(const std::wstring& _wstName, GW_FUNC_OPT _pFunc, LOAD_DEPS _pLoadDeps, const std::wstring& _wstModule);
 
-    Callable::ReturnValue call(typed_list &in, optional_list &opt, int _iRetCount, typed_list &out, ast::ConstVisitor* execFunc);
-    InternalType*           clone();
+    Callable::ReturnValue   call(typed_list &in, optional_list &opt, int _iRetCount, typed_list &out) override;
+    OptFunction*            clone() override;
 
     GW_FUNC_OPT             getFunc()
     {
         return m_pFunc;
     }
 
-private :
+private:
     GW_FUNC_OPT             m_pFunc;
 };
 
 
 class WrapFunction : public Function
 {
-private :
+private:
     WrapFunction(WrapFunction* _pWrapFunction);
-public :
+public:
     WrapFunction(const std::wstring& _wstName, OLDGW_FUNC _pFunc, LOAD_DEPS _pLoadDeps, const std::wstring& _wstModule);
 
-    Callable::ReturnValue call(typed_list &in, optional_list &opt, int _iRetCount, typed_list &out, ast::ConstVisitor* execFunc);
-    InternalType*           clone();
+    Callable::ReturnValue   call(typed_list &in, optional_list &opt, int _iRetCount, typed_list &out) override;
+    WrapFunction*           clone() override;
 
     OLDGW_FUNC              getFunc()
     {
         return m_pOldFunc;
     }
 
-private :
+private:
     OLDGW_FUNC              m_pOldFunc;
 };
 
+class WrapCFunction : public Function
+{
+private:
+    WrapCFunction(WrapCFunction* _pWrapFunction);
+public:
+    WrapCFunction(const std::wstring& _wstName, GW_C_FUNC _pFunc, LOAD_DEPS _pLoadDeps, const std::wstring& _wstModule);
+
+    Callable::ReturnValue   call(typed_list &in, optional_list &opt, int _iRetCount, typed_list &out) override;
+    WrapCFunction*          clone() override;
+
+    GW_C_FUNC               getFunc()
+    {
+        return m_pCFunc;
+    }
+
+private:
+    GW_C_FUNC               m_pCFunc;
+};
+
 class WrapMexFunction : public Function
 {
 private :
@@ -163,8 +193,8 @@ private :
 public :
     WrapMexFunction(const std::wstring& _wstName, MEXGW_FUNC _pFunc, LOAD_DEPS _pLoadDeps, const std::wstring& _wstModule);
 
-    Callable::ReturnValue call(typed_list &in, optional_list &opt, int _iRetCount, typed_list &out, ast::ConstVisitor* execFunc);
-    InternalType*           clone();
+    Callable::ReturnValue call(typed_list &in, optional_list &opt, int _iRetCount, typed_list &out) override;
+    WrapMexFunction*        clone() override;
 
     MEXGW_FUNC              getFunc()
     {
@@ -185,7 +215,8 @@ public :
     virtual ~DynamicFunction();
 
     DynamicFunction(const std::wstring& _wstName, const std::wstring& _wstEntryPointName, const std::wstring& _wstLibName, FunctionType _iType, const std::wstring& _wstLoadDepsName, const std::wstring& _wstModule, bool _bCloseLibAfterCall = false);
-    Callable::ReturnValue   call(typed_list &in, optional_list &opt, int _iRetCount, typed_list &out, ast::ConstVisitor* execFunc);
+    Callable::ReturnValue   call(typed_list &in, optional_list &opt, int _iRetCount, typed_list &out) override;
+
 private :
     Callable::ReturnValue   Init();
     void                    Clear();
@@ -198,6 +229,7 @@ private :
     GW_FUNC                 m_pFunc;
     GW_FUNC_OPT             m_pOptFunc;
     OLDGW_FUNC              m_pOldFunc;
+    GW_C_FUNC               m_pCFunc;
     MEXGW_FUNC              m_pMexFunc;
     Function*               m_pFunction;
 };