5 #ifndef CNOID_BASE_ARCHIVE_H
6 #define CNOID_BASE_ARCHIVE_H
8 #include <cnoid/ValueTree>
11 #include "exportdecl.h"
19 class FilePathVariableProcessor;
20 class ArchiveSharedData;
30 void initSharedInfo(
const std::string& projectFile,
bool isSubProject,
ArchiveSession* session);
31 void inheritSharedInfoFrom(
Archive& archive);
35 void addProcessOnSubTreeRestored(
const std::function<
void()>& func)
const;
36 void addPostProcess(
const std::function<
void()>& func,
int priority = 0)
const;
37 void addFinalProcess(
const std::function<
void()>& func)
const;
39 Archive* findSubArchive(
const std::string& name);
40 const Archive* findSubArchive(
const std::string& name)
const;
41 bool forSubArchive(
const std::string& name, std::function<
bool(
const Archive& archive)> func)
const;
42 Archive* openSubArchive(
const std::string& name);
48 int getViewId(
View* view)
const;
49 View* findView(
int id)
const;
54 return dynamic_cast<ItemType*
>(findItem(
id));
57 void writeItemId(
const std::string& key,
Item* item);
59 template<
class ItemType>
inline ItemType*
findItem(
const std::string& key)
const {
61 return id->isValid() ? findItem<ItemType>(
id) : 0;
64 std::string expandPathVariables(
const std::string& path)
const;
70 std::string resolveRelocatablePath(
const std::string& relocatable)
const;
72 bool readRelocatablePath(
const std::string& key, std::string& out_value)
const;
73 std::string readItemFilePath()
const;
74 bool loadFileTo(
Item* item)
const;
75 bool loadFileTo(
Item* item,
const std::string& filepath)
const;
78 return loadFileTo(item, filepath);
81 bool loadItemFile(
Item* item,
const std::string& fileNameKey,
const std::string& fileFormatKey = std::string())
const;
83 std::string getRelocatablePath(
const std::string& path)
const;
84 bool writeRelocatablePath(
const std::string& key,
const std::string& path);
85 bool writeFileInformation(
Item* item);
87 Item* currentParentItem()
const;
89 std::string projectDirectory()
const;
96 Item* findItem(
int id)
const;
97 void setCurrentParentItem(
Item* parentItem);
98 static Archive* invalidArchive();
99 void registerItemId(
Item* item,
int id);
100 void registerViewId(
View* view,
int id);
103 void setPointerToProcessesOnSubTreeRestored(std::vector<std::function<
void()>>* pfunc);
104 void callPostProcesses();