From 6f89d25f908e6c08e1cf20546b43dc269a93409b Mon Sep 17 00:00:00 2001
From: Yuri Kunde Schlesner <yuriks@yuriks.net>
Date: Wed, 6 May 2015 02:15:46 -0300
Subject: [PATCH] FileSys: Clean-up includes, de-inline destructors

---
 src/core/file_sys/archive_backend.h | 17 ++++++++++-------
 src/core/file_sys/disk_archive.h    |  2 ++
 src/core/file_sys/ivfc_archive.h    |  2 ++
 src/core/hle/service/cfg/cfg.cpp    |  5 +++--
 src/core/hle/service/fs/archive.cpp | 10 ++++++++++
 src/core/hle/service/fs/archive.h   | 16 ++++++----------
 src/core/hle/service/ptm/ptm.cpp    |  3 ++-
 7 files changed, 35 insertions(+), 20 deletions(-)

diff --git a/src/core/file_sys/archive_backend.h b/src/core/file_sys/archive_backend.h
index 43a106549d..1956d76cb9 100644
--- a/src/core/file_sys/archive_backend.h
+++ b/src/core/file_sys/archive_backend.h
@@ -5,22 +5,25 @@
 #pragma once
 
 #include <memory>
+#include <sstream>
+#include <string>
+#include <utility>
+#include <vector>
 
+#include "common/bit_field.h"
 #include "common/common_types.h"
+#include "common/logging/log.h"
 #include "common/string_util.h"
-#include "common/bit_field.h"
-
-#include "core/file_sys/file_backend.h"
-#include "core/file_sys/directory_backend.h"
 
+#include "core/hle/result.h"
 #include "core/mem_map.h"
-#include "core/hle/kernel/kernel.h"
 
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// FileSys namespace
 
 namespace FileSys {
 
+class FileBackend;
+class DirectoryBackend;
+
 // Path string type
 enum LowPathType : u32 {
     Invalid = 0,
diff --git a/src/core/file_sys/disk_archive.h b/src/core/file_sys/disk_archive.h
index 770bd715e6..a22d3837a4 100644
--- a/src/core/file_sys/disk_archive.h
+++ b/src/core/file_sys/disk_archive.h
@@ -8,6 +8,8 @@
 #include "common/file_util.h"
 
 #include "core/file_sys/archive_backend.h"
+#include "core/file_sys/directory_backend.h"
+#include "core/file_sys/file_backend.h"
 #include "core/loader/loader.h"
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/core/file_sys/ivfc_archive.h b/src/core/file_sys/ivfc_archive.h
index 1aff9e0a49..10415798d5 100644
--- a/src/core/file_sys/ivfc_archive.h
+++ b/src/core/file_sys/ivfc_archive.h
@@ -10,6 +10,8 @@
 #include "common/common_types.h"
 
 #include "core/file_sys/archive_backend.h"
+#include "core/file_sys/directory_backend.h"
+#include "core/file_sys/file_backend.h"
 #include "core/loader/loader.h"
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/core/hle/service/cfg/cfg.cpp b/src/core/hle/service/cfg/cfg.cpp
index 5eccdecf7d..94bac5498c 100644
--- a/src/core/hle/service/cfg/cfg.cpp
+++ b/src/core/hle/service/cfg/cfg.cpp
@@ -4,12 +4,13 @@
 
 #include <algorithm>
 
-#include "core/hle/service/fs/archive.h"
-#include "core/hle/service/service.h"
+#include "core/file_sys/file_backend.h"
 #include "core/hle/service/cfg/cfg.h"
 #include "core/hle/service/cfg/cfg_i.h"
 #include "core/hle/service/cfg/cfg_s.h"
 #include "core/hle/service/cfg/cfg_u.h"
+#include "core/hle/service/fs/archive.h"
+#include "core/hle/service/service.h"
 
 namespace Service {
 namespace CFG {
diff --git a/src/core/hle/service/fs/archive.cpp b/src/core/hle/service/fs/archive.cpp
index b0fd834c77..a6ed089296 100644
--- a/src/core/hle/service/fs/archive.cpp
+++ b/src/core/hle/service/fs/archive.cpp
@@ -78,6 +78,11 @@ enum class DirectoryCommand : u32 {
     Close           = 0x08020000,
 };
 
+File::File(std::unique_ptr<FileSys::FileBackend>&& backend, const FileSys::Path & path)
+    : path(path), priority(0), backend(std::move(backend)) {}
+
+File::~File() {}
+
 ResultVal<bool> File::SyncRequest() {
     u32* cmd_buff = Kernel::GetCommandBuffer();
     FileCommand cmd = static_cast<FileCommand>(cmd_buff[0]);
@@ -172,6 +177,11 @@ ResultVal<bool> File::SyncRequest() {
     return MakeResult<bool>(false);
 }
 
+Directory::Directory(std::unique_ptr<FileSys::DirectoryBackend>&& backend, const FileSys::Path & path)
+    : path(path), backend(std::move(backend)) {}
+
+Directory::~Directory() {}
+
 ResultVal<bool> Directory::SyncRequest() {
     u32* cmd_buff = Kernel::GetCommandBuffer();
     DirectoryCommand cmd = static_cast<DirectoryCommand>(cmd_buff[0]);
diff --git a/src/core/hle/service/fs/archive.h b/src/core/hle/service/fs/archive.h
index b00f0fd607..faab0cb798 100644
--- a/src/core/hle/service/fs/archive.h
+++ b/src/core/hle/service/fs/archive.h
@@ -45,31 +45,27 @@ typedef u64 ArchiveHandle;
 
 class File : public Kernel::Session {
 public:
-    File(std::unique_ptr<FileSys::FileBackend>&& backend, const FileSys::Path& path)
-        : path(path), priority(0), backend(std::move(backend)) {
-    }
+    File(std::unique_ptr<FileSys::FileBackend>&& backend, const FileSys::Path& path);
+    ~File();
 
     std::string GetName() const override { return "Path: " + path.DebugStr(); }
+    ResultVal<bool> SyncRequest() override;
 
     FileSys::Path path; ///< Path of the file
     u32 priority; ///< Priority of the file. TODO(Subv): Find out what this means
     std::unique_ptr<FileSys::FileBackend> backend; ///< File backend interface
-
-    ResultVal<bool> SyncRequest() override;
 };
 
 class Directory : public Kernel::Session {
 public:
-    Directory(std::unique_ptr<FileSys::DirectoryBackend>&& backend, const FileSys::Path& path)
-        : path(path), backend(std::move(backend)) {
-    }
+    Directory(std::unique_ptr<FileSys::DirectoryBackend>&& backend, const FileSys::Path& path);
+    ~Directory();
 
     std::string GetName() const override { return "Directory: " + path.DebugStr(); }
+    ResultVal<bool> SyncRequest() override;
 
     FileSys::Path path; ///< Path of the directory
     std::unique_ptr<FileSys::DirectoryBackend> backend; ///< File backend interface
-
-    ResultVal<bool> SyncRequest() override;
 };
 
 /**
diff --git a/src/core/hle/service/ptm/ptm.cpp b/src/core/hle/service/ptm/ptm.cpp
index d44510c1b6..6480a323d9 100644
--- a/src/core/hle/service/ptm/ptm.cpp
+++ b/src/core/hle/service/ptm/ptm.cpp
@@ -2,12 +2,13 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
-#include "core/hle/service/service.h"
+#include "core/file_sys/file_backend.h"
 #include "core/hle/service/fs/archive.h"
 #include "core/hle/service/ptm/ptm.h"
 #include "core/hle/service/ptm/ptm_play.h"
 #include "core/hle/service/ptm/ptm_sysm.h"
 #include "core/hle/service/ptm/ptm_u.h"
+#include "core/hle/service/service.h"
 
 namespace Service {
 namespace PTM {
-- 
GitLab