author | František Kučera <franta-hg@frantovo.cz> |
Fri, 12 Jan 2024 00:45:40 +0100 | |
branch | v_0 |
changeset 40 | df1376ef9f6d |
parent 29 | dc3c102e1264 |
permissions | -rw-r--r-- |
19 | 1 |
/** |
29
dc3c102e1264
derive OHP3D from ShaderShark
František Kučera <franta-hg@frantovo.cz>
parents:
24
diff
changeset
|
2 |
* OHP3D |
19 | 3 |
* Copyright © 2023 František Kučera (Frantovo.cz, GlobalCode.info) |
4 |
* |
|
5 |
* This program is free software: you can redistribute it and/or modify |
|
6 |
* it under the terms of the GNU General Public License as published by |
|
7 |
* the Free Software Foundation, version 3 of the License. |
|
8 |
* |
|
9 |
* This program is distributed in the hope that it will be useful, |
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 |
* GNU General Public License for more details. |
|
13 |
* |
|
14 |
* You should have received a copy of the GNU General Public License |
|
15 |
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
16 |
*/ |
|
17 |
||
18 |
#pragma once |
|
19 |
||
24
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
20 |
#include <memory> |
19 | 21 |
#include <string> |
22 |
||
23 |
#include "Buffer.h" |
|
24 |
||
24
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
25 |
class XAttrs { |
19 | 26 |
public: |
27 |
||
24
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
28 |
class Null; |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
29 |
|
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
30 |
class Attribute { |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
31 |
public: |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
32 |
virtual ~Attribute(); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
33 |
const std::string getName(); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
34 |
const std::string getValue(bool reload = false); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
35 |
bool exists(bool reload = false); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
36 |
bool missing(bool reload = false); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
37 |
Attribute& operator=(const std::string& value); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
38 |
Attribute& operator=(const Attribute& value); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
39 |
operator std::string(); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
40 |
friend std::ostream& operator<<(std::ostream& s, Attribute& a); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
41 |
friend std::ostream& operator>>(Attribute& a, std::ostream& s); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
42 |
private: |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
43 |
class Impl; |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
44 |
std::shared_ptr<Impl> impl; |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
45 |
Attribute(); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
46 |
friend XAttrs; |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
47 |
friend Null; |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
48 |
}; |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
49 |
|
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
50 |
class Null : public Attribute { |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
51 |
public: |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
52 |
Null(); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
53 |
}; |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
54 |
|
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
55 |
XAttrs(const std::string& fileName, const std::string& nameSpace = "user"); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
56 |
virtual ~XAttrs(); |
19 | 57 |
const std::string getFileName() const; |
24
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
58 |
Attribute& operator[](std::string name); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
59 |
Attribute& operator[](std::size_t index); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
60 |
size_t size(bool reload = false); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
61 |
Attribute* begin(); |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
62 |
Attribute* end(); |
19 | 63 |
private: |
64 |
class Impl; |
|
24
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
65 |
std::shared_ptr<Impl> impl; |
98d033d3ef7c
xattr: XAttrs class that read/write/list extended attributes
František Kučera <franta-hg@frantovo.cz>
parents:
19
diff
changeset
|
66 |
friend Attribute; |
19 | 67 |
}; |