kernel modules Wiedervereinigung
[scilab.git] / scilab / modules / ast / includes / types / library.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS
4  *
5  *  This file must be used under the terms of the CeCILL.
6  *  This source file is licensed as described in the file COPYING, which
7  *  you should have received as part of this distribution.  The terms
8  *  are also available at
9  *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 #ifndef __LIBRARY_HXX__
14 #define __LIBRARY_HXX__
15
16 #include <list>
17 #include "typesdecl.hxx"
18
19 namespace types
20 {
21 class EXTERN_AST Library : public InternalType
22 {
23 public :
24     Library(const std::wstring& _wstPath);
25     ~Library();
26
27     bool isLibrary(void)
28     {
29         return true;
30     }
31
32     /* return type as string ( double, int, cell, list, ... )*/
33     virtual std::wstring getTypeStr()
34     {
35         return L"library";
36     }
37     /* return type as short string ( s, i, ce, l, ... )*/
38     virtual std::wstring getShortTypeStr()
39     {
40         return L"f";
41     }
42
43     inline ScilabType getType(void)
44     {
45         return ScilabLibrary;
46     }
47     inline ScilabId getId(void)
48     {
49         return IdLibrary;
50     }
51
52     bool toString(std::wostringstream& ostr);
53     InternalType* clone();
54     bool isAssignable()
55     {
56         return true;
57     }
58
59     bool extract(const std::wstring & name, InternalType *& out);
60
61     void add(const std::wstring& _wstName, MacroFile* _macro);
62     MacroFile* get(const std::wstring& _wstName);
63     std::list<std::wstring>* getMacrosName();
64 private :
65     std::wstring m_wstPath;
66     typedef std::map<std::wstring, MacroFile*> MacroMap;
67     MacroMap m_macros;
68 };
69 }
70
71 #endif /* __LIBRARY_HXX__ */