dec382f7918600645fce73558d13c5cbcecc220f
[scilab.git] / scilab / modules / hdf5 / src / cpp / H5Group.hxx
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2012 - Scilab Enterprises - Calixte DENIZET
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 __H5GROUP_HXX__
14 #define __H5GROUP_HXX__
15
16 #include "H5Object.hxx"
17 #include "H5Type.hxx"
18 #include "H5Dataset.hxx"
19 #include "H5SoftLink.hxx"
20 #include "H5ExternalLink.hxx"
21 #include "H5NamedObjectsList.hxx"
22 #include "H5AttributesList.hxx"
23
24 namespace org_modules_hdf5
25 {
26
27 class H5SoftLinksList;
28 class H5LinksList;
29 class H5GroupsList;
30 class H5DatasetsList;
31 class H5TypesList;
32 class H5File;
33
34 class H5Group : public H5Object
35 {
36     typedef struct
37     {
38         H5Object * parent;
39         std::ostringstream * os;
40     } OpData;
41
42     hid_t group;
43     const std::string name;
44
45 public:
46
47     H5Group(H5Object & _parent, const char * name);
48     H5Group(H5Object & _parent, const std::string & name);
49     H5Group(H5Object & _parent, hid_t _group, const char * _name);
50     H5Group(H5Object & _parent, hid_t _group, const std::string & _name);
51
52     virtual ~H5Group();
53
54     virtual hid_t getH5Id() const
55     {
56         return group;
57     }
58
59     virtual bool checkType(const int type) const
60     {
61         return type == H5O_TYPE_GROUP;
62     }
63
64     virtual H5LinksList & getLinks();
65     virtual H5NamedObjectsList<H5SoftLink> & getSoftLinks();
66     virtual H5NamedObjectsList<H5ExternalLink> & getExternalLinks();
67     virtual H5GroupsList & getGroups();
68     virtual H5NamedObjectsList<H5Group> & getHardGroups();
69     virtual H5NamedObjectsList<H5Type> & getHardTypes();
70     virtual H5NamedObjectsList<H5Dataset> & getHardDatasets();
71     virtual H5DatasetsList & getDatasets();
72     virtual H5TypesList & getTypes();
73     const unsigned int getLinksSize() const;
74     virtual std::string getCompletePath() const;
75     virtual const std::string & getName() const
76     {
77         return name;
78     }
79     virtual std::string toString(const unsigned int indentLevel) const;
80     virtual std::string dump(std::map<haddr_t, std::string> & alreadyVisited, const unsigned int indentLevel = 0) const;
81     virtual std::string ls() const;
82     virtual void printLsInfo(std::ostringstream & os) const;
83
84     virtual void getAccessibleAttribute(const std::string & name, const int pos, void * pvApiCtx) const;
85
86     static H5Group & createGroup(H5Object & parent, const std::string & name);
87
88 private :
89
90     void init();
91     static herr_t printLsInfo(hid_t g_id, const char * name, const H5L_info_t * info, void * op_data);
92 };
93 }
94
95 #endif // __H5GROUP_HXX__