1 // Copyright 2001-2019 Crytek GmbH / Crytek Group. All rights reserved.
5 #include <CrySchematyc2/ILibRegistry.h>
7 #include "AbstractInterface.h"
12 ////////////////////////////////////////////////////////////////////////////////////////////////////
13 class CLibRegistry
: public ILibRegistry
18 virtual ISignalConstPtr
GetSignal(const SGUID
& guid
) const override
;
19 virtual void VisitSignals(const LibSignalVisitor
& visitor
) const override
;
20 virtual ILibAbstractInterfaceConstPtr
GetAbstractInterface(const SGUID
& guid
) const override
;
21 virtual void VisitAbstractInterfaces(const ILibAbstractInterfaceVisitor
& visitor
) override
;
22 virtual ILibAbstractInterfaceFunctionConstPtr
GetAbstractInterfaceFunction(const SGUID
& guid
) const override
;
23 virtual void VisitAbstractInterfaceFunctions(const ILibAbstractInterfaceFunctionVisitor
& visitor
) override
;
24 virtual SGUID
FindClass(const char* name
) const override
;
25 virtual ILibClassConstPtr
GetClass(const SGUID
& guid
) const override
;
26 virtual void VisitClasses(const ILibClassVisitor
& visitor
) const override
;
27 virtual bool RegisterLib(const ILibPtr
& pLib
) override
;
28 virtual ILibPtr
GetLib(const char* szName
) override
;
29 virtual SLibRegistrySignals
& Signals() override
;
36 typedef std::unordered_map
<SGUID
, ISignalConstPtr
> TSignalMap
;
37 typedef std::unordered_map
<SGUID
, ILibAbstractInterfaceConstPtr
> TAbstractInterfaceMap
;
38 typedef std::unordered_map
<SGUID
, ILibAbstractInterfaceFunctionConstPtr
> TAbstractInterfaceFunctionMap
;
39 typedef std::unordered_map
<SGUID
, ILibClassConstPtr
> TClassMap
;
40 typedef std::map
<string
, ILibPtr
> TLibMap
;
42 EVisitStatus
VisitAndRegisterSignal(const ISignalConstPtr
& pSignal
);
43 EVisitStatus
VisitAndReleaseSignal(const ISignalConstPtr
& pSignal
);
44 EVisitStatus
VisitAndRegisterAbstractInterface(const ILibAbstractInterfaceConstPtr
& pAbstractInterface
);
45 EVisitStatus
VisitAndReleaseAbstractInterface(const ILibAbstractInterfaceConstPtr
& pAbstractInterface
);
46 EVisitStatus
VisitAndRegisterAbstractInterfaceFunction(const ILibAbstractInterfaceFunctionConstPtr
& pAbstractInterfaceFunction
);
47 EVisitStatus
VisitAndReleaseAbstractInterfaceFunction(const ILibAbstractInterfaceFunctionConstPtr
& pAbstractInterfaceFunction
);
48 EVisitStatus
VisitAndRegisterClass(const ILibClassConstPtr
& pClass
);
49 EVisitStatus
VisitAndReleaseClass(const ILibClassConstPtr
& pClass
);
50 void ReleaseLib(const TLibMap::iterator
& iLib
);
53 TAbstractInterfaceMap m_abstractInterfaces
;
54 TAbstractInterfaceFunctionMap m_abstractInterfaceFunctions
;
57 SLibRegistrySignals m_registrySignals
;