Fix bugs and it is now possible to read hyperslabs
[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     } OpDataPrintLs;
41
42     hid_t group;
43
44 public:
45
46     H5Group(H5Object & _parent, const std::string & name);
47     H5Group(H5Object & _parent, hid_t _group, const std::string & _name);
48
49     virtual ~H5Group();
50
51     virtual hid_t getH5Id() const
52     {
53         return group;
54     }
55
56     virtual bool isGroup() const
57     {
58         return true;
59     }
60
61     virtual H5LinksList & getLinks();
62     virtual H5NamedObjectsList<H5SoftLink> & getSoftLinks();
63     virtual H5NamedObjectsList<H5ExternalLink> & getExternalLinks();
64     virtual H5GroupsList & getGroups();
65     virtual H5NamedObjectsList<H5Group> & getHardGroups();
66     virtual H5NamedObjectsList<H5Type> & getHardTypes();
67     virtual H5NamedObjectsList<H5Dataset> & getHardDatasets();
68     virtual H5DatasetsList & getDatasets();
69     virtual H5TypesList & getTypes();
70     const unsigned int getLinksSize() const;
71     virtual std::string getCompletePath() const;
72     virtual std::string toString(const unsigned int indentLevel) const;
73     virtual std::string dump(std::map<haddr_t, std::string> & alreadyVisited, const unsigned int indentLevel = 0) const;
74     virtual std::string ls() const;
75     virtual void ls(std::vector<std::string> & name, std::vector<std::string> & type) const;
76     virtual void printLsInfo(std::ostringstream & os) const;
77
78     virtual void getAccessibleAttribute(const std::string & name, const int pos, void * pvApiCtx) const;
79
80     static H5Group & createGroup(H5Object & parent, const std::string & name);
81
82 private :
83
84     void init();
85     static herr_t printLsInfo(hid_t g_id, const char * name, const H5L_info_t * info, void * op_data);
86     static herr_t getLsInfo(hid_t g_id, const char * name, const H5L_info_t * info, void * op_data);
87 };
88 }
89
90 #endif // __H5GROUP_HXX__