1 // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
5 #include <CrySchematyc2/Script/IScriptRegistry.h>
6 #include "Bridge_IScriptFile.h"
10 struct IScriptRegistry
;
13 struct IScriptEnumeration
;
14 struct IScriptFunction
;
21 typedef TemplateUtils::CDelegate
<Schematyc2::EVisitStatus(IScriptFile
&)> ScriptFileVisitor
;
22 typedef TemplateUtils::CDelegate
<Schematyc2::EVisitStatus(const IScriptFile
&)> ScriptFileConstVisitor
;
24 struct IScriptRegistry
26 virtual ~IScriptRegistry() {}
28 // Compatibility interface.
29 //////////////////////////////////////////////////
30 virtual IScriptFile
* LoadFile(const char* szFileName
) = 0;
31 virtual IScriptFile
* CreateFile(const char* szFileName
, Schematyc2::EScriptFileFlags flags
= Schematyc2::EScriptFileFlags::None
) = 0;
32 virtual IScriptFile
* GetFile(const Schematyc2::SGUID
& guid
) = 0;
33 virtual IScriptFile
* GetFile(const char* szFileName
) = 0;
34 virtual void VisitFiles(const ScriptFileVisitor
& visitor
, const char* szFilePath
= nullptr) = 0;
35 virtual void VisitFiles(const ScriptFileConstVisitor
& visitor
, const char* szFilePath
= nullptr) const = 0;
36 virtual void RefreshFiles(const Schematyc2::SScriptRefreshParams
& params
) = 0;
37 virtual bool Load() = 0;
38 virtual void Save(bool bAlwaysSave
= false) = 0;
41 //////////////////////////////////////////////////
42 virtual Schematyc2::IScriptModule
* AddModule(const char* szName
, Schematyc2::IScriptElement
* pScope
= nullptr) = 0;
43 virtual Schematyc2::IScriptEnumeration
* AddEnumeration(const char* szName
, Schematyc2::IScriptElement
* pScope
= nullptr) = 0;
44 virtual Schematyc2::IScriptFunction
* AddFunction(const char* szName
, Schematyc2::IScriptElement
* pScope
= nullptr) = 0;
45 virtual Schematyc2::IScriptClass
* AddClass(const char* szName
, const Schematyc2::SGUID
& foundationGUID
, Schematyc2::IScriptElement
* pScope
= nullptr) = 0;
46 virtual Schematyc2::IScriptElement
* GetElement(const Schematyc2::SGUID
& guid
) = 0;
47 virtual void RemoveElement(const Schematyc2::SGUID
& guid
) = 0;
48 virtual Schematyc2::EVisitStatus
VisitElements(const Schematyc2::ScriptElementVisitor
& visitor
, Schematyc2::IScriptElement
* pScope
= nullptr, Schematyc2::EVisitFlags flags
= Schematyc2::EVisitFlags::None
) = 0;
49 virtual Schematyc2::EVisitStatus
VisitElements(const Schematyc2::ScriptElementConstVisitor
& visitor
, const Schematyc2::IScriptElement
* pScope
= nullptr, Schematyc2::EVisitFlags flags
= Schematyc2::EVisitFlags::None
) const = 0;
50 virtual bool IsElementNameUnique(const char* szName
, Schematyc2::IScriptElement
* pScope
= nullptr) const = 0; // #SchematycTODO : Should we also validate the name here?
51 virtual Schematyc2::SScriptRegistrySignals
& Signals() = 0;
52 virtual Bridge::IScriptFile
* Wrapfile(Schematyc2::IScriptFile
* file
) = 0;