/usr/include/choreonoid-1.1/cnoid/src/Base/ExtensionManager.h is in libcnoid-dev 1.1.0+dfsg-6.1+b4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | /**
@author Shin'ichiro NAKAOKA
*/
#ifndef CNOID_GUIBASE_EXTENSION_MANAGER_H_INCLUDED
#define CNOID_GUIBASE_EXTENSION_MANAGER_H_INCLUDED
#include "SignalProxy.h"
#include <boost/intrusive_ptr.hpp>
#include <string>
#include "exportdecl.h"
namespace cnoid {
class Item;
class View;
class ToolBar;
class Archive;
class ItemManager;
class TimeSyncItemEngineManager;
class MenuManager;
class OptionManager;
class ExtensionManagerImpl;
class CNOID_EXPORT ExtensionManager
{
public:
ExtensionManager(const std::string& moduleName, bool isPlugin);
ExtensionManager(const std::string& moduleName, const std::string& version, bool isPlugin);
virtual ~ExtensionManager();
ItemManager& itemManager();
TimeSyncItemEngineManager& timeSyncItemEngineManger();
MenuManager& menuManager();
OptionManager& optionManager();
const char* textDomain() const;
private:
struct CNOID_EXPORT PtrHolderBase {
virtual ~PtrHolderBase();
};
// smart pointer version
template <class PointerType> struct PtrHolder : public PtrHolderBase {
PtrHolder(PointerType pointer) : pointer(pointer) { }
virtual ~PtrHolder() { }
PointerType pointer;
};
// raw pointer version
template <class Object> struct PtrHolder<Object*> : public PtrHolderBase {
PtrHolder(Object* pointer) : pointer(pointer) { }
virtual ~PtrHolder() { delete pointer; }
Object* pointer;
};
void manageSub(PtrHolderBase* holder);
public:
void addView(View* view);
void addToolBar(ToolBar* toolBar);
template <class PointerType> PointerType manage(PointerType pointer) {
manageSub(new PtrHolder<PointerType>(pointer));
return pointer;
}
/**
@if jp
起動時にオブジェクトの初期生成が全て終わった時や、
新たにプラグインの読み込み・解放があったときなど、
システムで利用可能なオブジェクトの状態に更新があったときに
発行される 'SystemUpdated' シグナルと接続する。
@endif
*/
SignalProxy< boost::signal<void()> > sigSystemUpdated();
/**
@if jp
'SystemUpdated' シグナルを発行する。
シグナルの発行は本メソッド呼び出し時ではなく、後ほどイベントループ内にて行われる。
これにより、スロットの処理は現在処理中の他のイベントが処理された後になる。
また、本メソッドが同時期に複数回呼ばれた場合でも、シグナルの発行はひとつにまとめられる。
@endif
*/
static void notifySystemUpdate();
SignalProxy< boost::signal<void()> > sigReleaseRequest();
void connectProjectArchiver(
const std::string& name,
boost::function<bool(Archive&)> storeFunction,
boost::function<void(const Archive&)> restoreFunction);
private:
ExtensionManager(const ExtensionManager& org); // disable the copy constructor
ExtensionManagerImpl* impl;
friend class ExtensionManagerImpl;
};
}
#endif
|