/**
* This file is part of Code::Blocks Studio, an open-source cross-platform IDE
* Copyright (C) 2003 Yiannis An. Mandravellos
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Contact e-mail: Yiannis An. Mandravellos <mandrav@codeblocks.org>
* Program URL : http://www.codeblocks.org
*
* @file Managers.h
* @author Muhammad Haggag (MHaggag@optimize-eg.com)
* @brief
*/
#if !defined( __MANAGERS_MANAGERS_H )
#define __MANAGERS_MANAGERS_H
#include <wx/config.h>
#ifdef __WXMSW__
#ifdef EXPORT_LIB
// Export
#define MANAGERS_API __declspec(dllexport)
#else
#define MANAGERS_API __declspec(dllimport)
#endif
#else
#define MANAGERS_API
#endif
extern "C"
{
MANAGERS_API Manager* GetManager();
MANAGERS_API wxConfigBase* GetConfigBase();
MANAGERS_API TemplateManager* GetTemplateManager();
MANAGERS_API PluginManager* GetPluginManager();
MANAGERS_API EditorManager* GetEditorManager();
MANAGERS_API MacrosManager* GetMacrosManager();
MANAGERS_API MessageManager* GetMessageManager();
MANAGERS_API ProjectManager* GetProjectManager();
MANAGERS_API ToolsManager* GetToolsManager();
MANAGERS_API PersonalityManager* GetPersonalityManager();
MANAGERS_API void SetManager( Manager* manager );
MANAGERS_API void SetConfigBase( wxConfigBase* config );
MANAGERS_API void SetTemplateManager( TemplateManager* manager );
MANAGERS_API void SetPluginManager( PluginManager* manager );
MANAGERS_API void SetEditorManager( EditorManager* manager );
MANAGERS_API void SetMacrosManager( MacrosManager* manager );
MANAGERS_API void SetMessageManager( MessageManager* manager );
MANAGERS_API void SetProjectManager( ProjectManager* manager );
MANAGERS_API void SetToolsManager( ToolsManager* manager );
MANAGERS_API void SetPersonalityManager( PersonalityManager* manager );
}
namespace Managers
{
// Overloaded getter functions. The overloader is useless, it's just there so that the
// compiler can know which function the caller means
inline Manager* Get( Manager* overloader ) { return GetManager(); }
inline void Set( Manager* manager ) { SetManager( manager ); }
// wxConfigBase Specializations
inline wxConfigBase* Get(wxConfigBase *overloader) { return GetConfigBase(); }
inline void Set( wxConfigBase* config ) { SetConfigBase( config ); }
// TemplateManager specializations
inline TemplateManager* Get(TemplateManager* overloader) { return GetTemplateManager(); }
inline void Set( TemplateManager* manager ) { SetTemplateManager( manager ); }
// Plugin specializations
inline PluginManager* Get(PluginManager *overloader) { return GetPluginManager(); }
inline void Set( PluginManager* manager ) { SetPluginManager( manager ); }
// Editor specializations
inline EditorManager* Get(EditorManager *overloader) { return GetEditorManager(); }
inline void Set( EditorManager* manager ) { SetEditorManager( manager ); }
// Macors specializations
inline MacrosManager* Get( MacrosManager *overloader ) { return GetMacrosManager(); }
inline void Set( MacrosManager* manager ) { SetMacrosManager( manager ); }
// Message specializations
inline MessageManager* Get(MessageManager *overloader) { return GetMessageManager(); }
inline void Set( MessageManager* manager ) { SetMessageManager( manager ); }
// Project specializations
inline ProjectManager* Get(ProjectManager *overloader) { return GetProjectManager(); }
inline void Set( ProjectManager* manager ) { SetProjectManager( manager ); }
// Tools specializations
inline ToolsManager* Get(ToolsManager *overloader) { return GetToolsManager(); }
inline void Set( ToolsManager* manager ) { SetToolsManager( manager ); }
// Personality specializations
inline PersonalityManager* Get(PersonalityManager *overloader) { return GetPersonalityManager(); }
inline void Set( PersonalityManager* manager ) { SetPersonalityManager( manager ); }
};
#endif // if !defined( __MANAGERS_MANAGERS_H )
syntax highlighted by Code2HTML, v. 0.9.1