Skip to content

Commit

Permalink
move sys argument to the new managment
Browse files Browse the repository at this point in the history
  • Loading branch information
ggeorgiev committed May 15, 2016
1 parent d45a2c4 commit 1d07193
Show file tree
Hide file tree
Showing 8 changed files with 19 additions and 46 deletions.
20 changes: 1 addition & 19 deletions src/doim/manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
#include "doim/generic/location.hpp"
#include "doim/manager_object_mixin.hpp"
#include "doim/manager_object_set_mixin.hpp"
#include "doim/sys/argument.h"
#include "im/initialization_manager.hpp"
#include <shared_ptr>
#include <str>
Expand All @@ -26,8 +25,7 @@ extern ManagerSPtr gManager;

class Manager : public ManagerObjectMixin<DbKey>,
public ManagerObjectSetMixin<FsDirectory>,
public ManagerObjectSetMixin<FsFile>,
public ManagerObjectSetMixin<SysArgument>
public ManagerObjectSetMixin<FsFile>
{
public:
static constexpr int rank()
Expand Down Expand Up @@ -90,22 +88,6 @@ class Manager : public ManagerObjectMixin<DbKey>,
using ManagerObjectMixin<DbKey>::unique;
using ManagerObjectMixin<DbKey>::isUnique;

using ManagerObjectMixin<SysArgument>::unique;
using ManagerObjectSetMixin<SysArgument>::unique;
using ManagerObjectSetMixin<SysArgument>::isUnique;

SysArgumentSPtr obtainArgument(const string& value)
{
return unique(doim::SysArgument::make(value));
}

SysArgumentSetSPtr obtainArguments(const SysArgumentSPtr argument)
{
auto arguments = SysArgumentSet::make();
arguments->insert(argument);
return unique(arguments);
}

private:
unordered_map<FsFileSPtr, CxxHeaderSPtr> mFile2CxxHeader;
};
Expand Down
4 changes: 0 additions & 4 deletions src/doim/sys/argument.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,4 @@

namespace doim
{
SysArgumentSPtr SysArgument::global(const string& value, SysArgumentSPtr& argument)
{
return Manager::global<SysArgument, string>(value, argument);
}
}
5 changes: 2 additions & 3 deletions src/doim/sys/argument.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#pragma once

#include "doim/base.hpp"
#include "doim/set.hpp"
#include <memory>
#include <str>
#include <tuple>
Expand All @@ -13,14 +14,12 @@ namespace doim
{
class SysArgument;
typedef shared_ptr<SysArgument> SysArgumentSPtr;
typedef unordered_set<SysArgumentSPtr> SysArgumentSet;
typedef NewObjectSet<SysArgument> SysArgumentSet;
typedef shared_ptr<SysArgumentSet> SysArgumentSetSPtr;

class SysArgument : public Base<SysArgument, string>
{
public:
static SysArgumentSPtr global(const string& value, SysArgumentSPtr& argument);

SysArgument(const string& value)
: Base(value)
{
Expand Down
2 changes: 1 addition & 1 deletion src/doim/sys/command.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ SysCommand::SysCommand(const SysExecutableSPtr& executable,
: Base(executable, arguments)
{
ASSERT(executable->isUnique());
ASSERT(gManager->isUnique(arguments));
ASSERT(arguments->isUnique());
}

string SysCommand::toString() const
Expand Down
6 changes: 1 addition & 5 deletions src/doim/sys/command.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#pragma once

#include "doim/base.hpp"
#include "doim/sys/argument.h"
#include "doim/sys/executable.h"
#include "dp/simple_memoization.hpp"
#include <memory>
Expand All @@ -13,11 +14,6 @@

namespace doim
{
class SysArgument;
typedef shared_ptr<SysArgument> SysArgumentSPtr;
typedef unordered_set<SysArgumentSPtr> SysArgumentSet;
typedef shared_ptr<SysArgumentSet> SysArgumentSetSPtr;

class SysCommand;
typedef shared_ptr<SysCommand> SysCommandSPtr;

Expand Down
2 changes: 1 addition & 1 deletion src/tool/cxx_clang_format.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ tpool::TaskSPtr CxxClangFormat::formatCommand(const doim::FsDirectorySPtr& direc
arguments->insert(gSortIncludesArgument);

const string& file = cxxFile->file()->path(directory);
auto argument_i = doim::gManager->obtainArgument("-i " + file);
auto argument_i = doim::SysArgument::unique("-i " + file);
arguments->insert(argument_i);

auto formatCommand = doim::SysCommand::unique(mFormatter, arguments);
Expand Down
20 changes: 10 additions & 10 deletions src/tool/cxx_compiler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ doim::SysArgumentSetSPtr CxxCompiler::includeArguments(

value += includeDirectory->directory()->path(directory);

arguments->insert(doim::gManager->obtainArgument(value));
arguments->insert(doim::SysArgument::unique(value));
}

return arguments;
Expand Down Expand Up @@ -89,20 +89,20 @@ doim::SysCommandSPtr CxxCompiler::compileCommand(
break;
}

auto argument_cxxflags = doim::gManager->obtainArgument(
auto argument_cxxflags = doim::SysArgument::unique(
"-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/"
"MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk");
compileArguments->insert(argument_cxxflags);

const string& file = objectFile->cxxFile()->file()->path(directory);

auto argument_c = doim::gManager->obtainArgument("-c " + file);
auto argument_c = doim::SysArgument::unique("-c " + file);
compileArguments->insert(argument_c);

auto argument_o =
doim::gManager->obtainArgument("-o " + objectFile->file()->path(directory));
doim::SysArgument::unique("-o " + objectFile->file()->path(directory));
compileArguments->insert(argument_o);
compileArguments = doim::gManager->unique(compileArguments);
compileArguments = doim::SysArgumentSet::unique(compileArguments);

return doim::SysCommand::unique(mCompiler, compileArguments);
}
Expand All @@ -126,27 +126,27 @@ doim::SysCommandSPtr CxxCompiler::linkCommand(const doim::FsDirectorySPtr& direc

for (const auto& cxxLibrary : *program->staticLibraries())
{
auto argument_L = doim::gManager->obtainArgument(
auto argument_L = doim::SysArgument::unique(
"-L " + cxxLibrary->binary()->directory()->path(directory));
linkArguments->insert(argument_L);

string name = cxxLibrary->binary()->name();
auto argument_l =
doim::gManager->obtainArgument("-l" + name.substr(3, name.size() - 5));
doim::SysArgument::unique("-l" + name.substr(3, name.size() - 5));
linkArguments->insert(argument_l);
}

for (const auto& objectFile : *program->cxxObjectFiles())
{
auto argument_obj =
doim::gManager->obtainArgument(objectFile->file()->path(directory));
doim::SysArgument::unique(objectFile->file()->path(directory));
linkArguments->insert(argument_obj);
}

const auto& path = program->file()->path(directory);
auto argument_o = doim::gManager->obtainArgument("-o " + path);
auto argument_o = doim::SysArgument::unique("-o " + path);
linkArguments->insert(argument_o);
linkArguments = doim::gManager->unique(linkArguments);
linkArguments = doim::SysArgumentSet::unique(linkArguments);

return doim::SysCommand::unique(mCompiler, linkArguments);
}
Expand Down
6 changes: 3 additions & 3 deletions src/tool/cxx_iwyu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,17 @@ tpool::TaskSPtr CxxIwyu::iwyuCommand(const doim::FsDirectorySPtr& directory,
auto arguments =
CxxCompiler::includeArguments(directory, cxxFile->cxxIncludeDirectories());

auto argument_cxxflags = doim::gManager->obtainArgument(
auto argument_cxxflags = doim::SysArgument::unique(
"-std=c++11 -stdlib=libc++ -O0 -g "
"-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/"
"MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk");
arguments->insert(argument_cxxflags);

const string& file = cxxFile->file()->path(directory);

auto argument_file = doim::gManager->obtainArgument(file);
auto argument_file = doim::SysArgument::unique(file);
arguments->insert(argument_file);
arguments = doim::gManager->unique(arguments);
arguments = doim::SysArgumentSet::unique(arguments);

auto command = doim::SysCommand::unique(mTool, arguments);

Expand Down

0 comments on commit 1d07193

Please sign in to comment.