/*
* This file is part of the Code::Blocks IDE and licensed under the GNU Lesser General Public License, version 3
* http://www.gnu.org/licenses/lgpl-3.0.html
*/
#ifndef COMPILEOPTIONSBASE_H
#define COMPILEOPTIONSBASE_H
#include "globals.h"
#include <wx/hashmap.h>
WX_DECLARE_STRING_HASH_MAP(wxString, StringHash);
/**
* This is a base class for all classes needing compilation parameters. It
* offers functions to get/set the following:\n
* \li Compiler options
* \li Linker options
* \li Compiler include dirs
* \li Resource compiler include dirs
* \li Linker include dirs
* \li Custom commands to be executed before/after build
* \li The settings modification status
* \n\n
* These settings are used by the compiler plugins to construct the necessary
* compilation commands.
*/
class DLLIMPORT CompileOptionsBase
{
public:
CompileOptionsBase();
virtual ~CompileOptionsBase();
virtual void AddPlatform(int platform);
virtual void RemovePlatform(int platform);
virtual void SetPlatforms(int platforms);
virtual int GetPlatforms() const;
virtual bool SupportsCurrentPlatform() const;
virtual void SetLinkerOptions(const wxArrayString& linkerOpts);
virtual const wxArrayString& GetLinkerOptions() const;
virtual void AddLinkerOption(const wxString& option);
virtual void RemoveLinkerOption(const wxString& option);
virtual void SetLinkLibs(const wxArrayString& linkLibs);
virtual const wxArrayString& GetLinkLibs() const;
virtual void AddLinkLib(const wxString& lib);
virtual void RemoveLinkLib(const wxString& lib);
virtual void SetCompilerOptions(const wxArrayString& compilerOpts);
virtual const wxArrayString& GetCompilerOptions() const;
virtual void AddCompilerOption(const wxString& option);
virtual void RemoveCompilerOption(const wxString& option);
virtual void SetIncludeDirs(const wxArrayString& includeDirs);
virtual const wxArrayString& GetIncludeDirs() const;
virtual void AddIncludeDir(const wxString& option);
virtual void RemoveIncludeDir(const wxString& option);
virtual void SetResourceIncludeDirs(const wxArrayString& resIncludeDirs);
virtual const wxArrayString& GetResourceIncludeDirs() const;
virtual void AddResourceIncludeDir(const wxString& option);
virtual void RemoveResourceIncludeDir(const wxString& option);
virtual void SetLibDirs(const wxArrayString& libDirs);
virtual const wxArrayString& GetLibDirs() const;
virtual void AddLibDir(const wxString& option);
virtual void RemoveLibDir(const wxString& option);
virtual void SetCommandsBeforeBuild(const wxArrayString& commands);
virtual const wxArrayString& GetCommandsBeforeBuild() const;
virtual void AddCommandsBeforeBuild(const wxString& command);
virtual void RemoveCommandsBeforeBuild(const wxString& command);
virtual void SetCommandsAfterBuild(const wxArrayString& commands);
virtual const wxArrayString& GetCommandsAfterBuild() const;
virtual void AddCommandsAfterBuild(const wxString& command);
virtual void RemoveCommandsAfterBuild(const wxString& command);
virtual void SetBuildScripts(const wxArrayString& scripts);
virtual const wxArrayString& GetBuildScripts() const;
virtual void AddBuildScript(const wxString& script);
virtual void RemoveBuildScript(const wxString& script);
virtual bool GetModified() const;
virtual void SetModified(bool modified);
virtual bool GetAlwaysRunPostBuildSteps() const;
virtual void SetAlwaysRunPostBuildSteps(bool always);
virtual bool SetVar(const wxString& key, const wxString& value, bool onlyIfExists = false);
virtual bool UnsetVar(const wxString& key);
virtual void UnsetAllVars();
virtual const wxString& GetVar(const wxString& key) const;
virtual const StringHash& GetAllVars() const;
protected:
int m_Platform;
wxArrayString m_LinkerOptions;
wxArrayString m_LinkLibs;
wxArrayString m_CompilerOptions;
wxArrayString m_IncludeDirs;
wxArrayString m_ResIncludeDirs;
wxArrayString m_LibDirs;
wxArrayString m_CmdsBefore;
wxArrayString m_CmdsAfter;
wxArrayString m_Scripts;
bool m_Modified;
bool m_AlwaysRunPostCmds;
StringHash m_Vars;
private:
};
#endif // COMPILEOPTIONSBASE_H