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::Build> build;
if(Notebook::get().get_current_page()!=-1) {
auto view=Notebook::get().get_current_view();
build=get_build(view->file_path);
if(view->language) {
auto language_id=view->language->get_id();
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")
return std::unique_ptr<Project::Language>(new Project::Python());
return std::unique_ptr<Project::Language>(new Project::Python(build));
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")
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
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() {

12
src/project.h

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

Loading…
Cancel
Save