GDevelop Core
Core library for developing platforms and tools compatible with GDevelop.
ResourcesMergingHelper.h
1 /*
2  * GDevelop Core
3  * Copyright 2008-2016 Florian Rival ([email protected]). All rights
4  * reserved. This project is released under the MIT License.
5  */
6 #pragma once
7 
8 #include <map>
9 #include <memory>
10 #include <vector>
11 #include "GDCore/IDE/Project/ArbitraryResourceWorker.h"
12 #include "GDCore/String.h"
13 namespace gd {
14 class AbstractFileSystem;
15 }
16 
17 namespace gd {
18 
29 class GD_CORE_API ResourcesMergingHelper : public ArbitraryResourceWorker {
30 public:
32  gd::AbstractFileSystem &fileSystem)
33  : ArbitraryResourceWorker(resourcesManager),
34  preserveDirectoriesStructure(false), preserveAbsoluteFilenames(false),
35  fs(fileSystem){};
36  virtual ~ResourcesMergingHelper(){};
37 
42  void SetBaseDirectory(const gd::String& baseDirectory);
43 
49  void PreserveDirectoriesStructure(bool preserveDirectoriesStructure_ = true) {
50  preserveDirectoriesStructure = preserveDirectoriesStructure_;
51  };
52 
56  void PreserveAbsoluteFilenames(bool preserveAbsoluteFilenames_ = true) {
57  preserveAbsoluteFilenames = preserveAbsoluteFilenames_;
58  };
59 
65  bool shouldUseOriginalAbsoluteFilenames_ = true) {
66  shouldUseOriginalAbsoluteFilenames = shouldUseOriginalAbsoluteFilenames_;
67  };
68 
74  std::map<gd::String, gd::String>& GetAllResourcesOldAndNewFilename() {
75  return newFilenames;
76  };
77 
82  void ExposeFile(gd::String& resource) override;
83 
84  protected:
85  void SetNewFilename(gd::String oldFilename, gd::String newFilename);
86 
90  std::map<gd::String, gd::String> oldFilenames;
94  std::map<gd::String, gd::String> newFilenames;
95  gd::String baseDirectory;
104 
108  bool shouldUseOriginalAbsoluteFilenames = false;
110  fs;
111 };
112 
113 } // namespace gd
An interface to manipulate files in a platform agnostic way. This allow exporters to work on files wi...
Definition: AbstractFileSystem.h:24
ArbitraryResourceWorker is used so as to inventory resources and sometimes update them.
Definition: ArbitraryResourceWorker.h:44
Inventory all resources used by a project.
Definition: ResourcesContainer.h:628
ResourcesMergingHelper is used (mainly during export) to list resources and generate new filenames,...
Definition: ResourcesMergingHelper.h:29
bool preserveAbsoluteFilenames
Definition: ResourcesMergingHelper.h:100
void PreserveDirectoriesStructure(bool preserveDirectoriesStructure_=true)
Set if the directories structure, starting from the base directory, must be preserved....
Definition: ResourcesMergingHelper.h:49
std::map< gd::String, gd::String > & GetAllResourcesOldAndNewFilename()
Return a map containing the resources old absolute filename as key, and the resources new filenames a...
Definition: ResourcesMergingHelper.h:74
void SetShouldUseOriginalAbsoluteFilenames(bool shouldUseOriginalAbsoluteFilenames_=true)
Set if the absolute filenames of original files must be used for any resource.
Definition: ResourcesMergingHelper.h:64
gd::AbstractFileSystem & fs
The gd::AbstractFileSystem used to manipulate files.
Definition: ResourcesMergingHelper.h:110
std::map< gd::String, gd::String > newFilenames
Definition: ResourcesMergingHelper.h:94
std::map< gd::String, gd::String > oldFilenames
Definition: ResourcesMergingHelper.h:90
void PreserveAbsoluteFilenames(bool preserveAbsoluteFilenames_=true)
Set if the absolute filenames must be preserved.
Definition: ResourcesMergingHelper.h:56
bool preserveDirectoriesStructure
Definition: ResourcesMergingHelper.h:96
String represents an UTF8 encoded string.
Definition: String.h:33
Definition: CommonTools.h:24