Browse Source

build now created in get_language so that language can be chosen based on build management system found

merge-requests/365/head
eidheim 10 years ago
parent
commit
f9e22d55f7
  1. 23
      src/project.cc
  2. 12
      src/project.h

23
src/project.cc

@ -98,29 +98,30 @@ void Project::debug_update_stop() {
} }
std::unique_ptr<Project::Language> Project::get_language() { std::unique_ptr<Project::Language> Project::get_language() {
std::unique_ptr<Project::Build> build;
if(Notebook::get().get_current_page()!=-1) { if(Notebook::get().get_current_page()!=-1) {
auto view=Notebook::get().get_current_view(); auto view=Notebook::get().get_current_view();
build=get_build(view->file_path);
if(view->language) { if(view->language) {
auto language_id=view->language->get_id(); auto language_id=view->language->get_id();
if(language_id=="markdown") if(language_id=="markdown")
return std::unique_ptr<Project::Language>(new Project::Markdown()); return std::unique_ptr<Project::Language>(new Project::Markdown(build));
if(language_id=="python") if(language_id=="python")
return std::unique_ptr<Project::Language>(new Project::Python()); return std::unique_ptr<Project::Language>(new Project::Python(build));
if(language_id=="js") if(language_id=="js")
return std::unique_ptr<Project::Language>(new Project::JavaScript()); return std::unique_ptr<Project::Language>(new Project::JavaScript(build));
if(language_id=="html") if(language_id=="html")
return std::unique_ptr<Project::Language>(new Project::HTML()); return std::unique_ptr<Project::Language>(new Project::HTML(build));
}
} }
return std::unique_ptr<Project::Language>(new Project::Clang());
} }
Project::Language::Language() {
if(Notebook::get().get_current_page()!=-1)
build=get_build(Notebook::get().get_current_view()->file_path);
else else
build=get_build(Directories::get().path); build=get_build(Directories::get().path);
if(dynamic_cast<CMake*>(build.get()))
return std::unique_ptr<Project::Language>(new Project::Clang(build));
else
return std::unique_ptr<Project::Language>(new Project::Language(build));
} }
std::pair<std::string, std::string> Project::Clang::get_run_arguments() { std::pair<std::string, std::string> Project::Clang::get_run_arguments() {

12
src/project.h

@ -27,7 +27,7 @@ namespace Project {
class Language { class Language {
public: public:
Language(); Language(std::unique_ptr<Build> &build): build(std::move(build)) {}
virtual ~Language() {} virtual ~Language() {}
std::unique_ptr<Build> build; std::unique_ptr<Build> build;
@ -59,7 +59,7 @@ namespace Project {
private: private:
Dispatcher dispatcher; Dispatcher dispatcher;
public: public:
Clang() : Language() {} Clang(std::unique_ptr<Build> &build) : Language(build) {}
~Clang() { dispatcher.disconnect(); } ~Clang() { dispatcher.disconnect(); }
std::pair<std::string, std::string> get_run_arguments() override; std::pair<std::string, std::string> get_run_arguments() override;
@ -89,7 +89,7 @@ namespace Project {
class Markdown : public Language { class Markdown : public Language {
public: public:
Markdown() : Language() {} Markdown(std::unique_ptr<Build> &build) : Language(build) {}
~Markdown(); ~Markdown();
boost::filesystem::path last_temp_path; boost::filesystem::path last_temp_path;
@ -98,21 +98,21 @@ namespace Project {
class Python : public Language { class Python : public Language {
public: public:
Python() : Language() {} Python(std::unique_ptr<Build> &build) : Language(build) {}
void compile_and_run() override; void compile_and_run() override;
}; };
class JavaScript : public Language { class JavaScript : public Language {
public: public:
JavaScript() : Language() {} JavaScript(std::unique_ptr<Build> &build) : Language(build) {}
void compile_and_run() override; void compile_and_run() override;
}; };
class HTML : public Language { class HTML : public Language {
public: public:
HTML() : Language() {} HTML(std::unique_ptr<Build> &build) : Language(build) {}
void compile_and_run() override; void compile_and_run() override;
}; };

Loading…
Cancel
Save