summaryrefslogtreecommitdiffstats
path: root/src/cppc4group.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/cppc4group.cpp')
-rw-r--r--src/cppc4group.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/cppc4group.cpp b/src/cppc4group.cpp
index 1b4022e..950a714 100644
--- a/src/cppc4group.cpp
+++ b/src/cppc4group.cpp
@@ -25,6 +25,11 @@ struct CppC4Group::Private {
}
+ Private(CC4Group* g) : g{g}
+ {
+
+ }
+
~Private()
{
cc4group.delete_(g);
@@ -66,6 +71,17 @@ CppC4Group::CppC4Group() : p{new CppC4Group::Private{}}
}
+CppC4Group::CppC4Group(CppC4Group&& other) : p{std::move(other.p)}
+{
+
+}
+
+CppC4Group::CppC4Group(std::unique_ptr<Private>&& p) : p{std::move(p)}
+{
+
+}
+
+
CppC4Group::~CppC4Group()
{
@@ -281,3 +297,16 @@ bool CppC4Group::setEntryData(const std::string& path, const void*const data, co
{
return cc4group.setEntryData(p->g, path.c_str(), data, size, convertMemoryManagement(management));
}
+
+std::optional<CppC4Group> CppC4Group::openAsChild(const std::string& path)
+{
+ auto g = cc4group.openAsChild(p->g, path.c_str());
+ if(g == nullptr)
+ {
+ return {};
+ }
+ else
+ {
+ return {{std::make_unique<Private>(g)}};
+ }
+} \ No newline at end of file