aboutsummaryrefslogtreecommitdiff
path: root/main.cc
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-06-29 18:38:35 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-06-29 20:49:28 +0900
commite7992752dbfe23d0a88312b4279531c39512b9a6 (patch)
treeebbbff517aed82fe2b04d9cbb0903865fc997c44 /main.cc
parent94d7a61c9edd45b6c6b0f19c60e64aeddfdc8e46 (diff)
downloadkati-e7992752dbfe23d0a88312b4279531c39512b9a6.tar.gz
[C++] Introduce Symbol
Diffstat (limited to 'main.cc')
-rw-r--r--main.cc19
1 files changed, 10 insertions, 9 deletions
diff --git a/main.cc b/main.cc
index b99a035..aa09bed 100644
--- a/main.cc
+++ b/main.cc
@@ -34,6 +34,7 @@
#include "string_piece.h"
#include "stringprintf.h"
#include "strutil.h"
+#include "symtab.h"
#include "time.h"
#include "var.h"
@@ -61,7 +62,7 @@ static bool ParseCommandLineOptionWithArg(StringPiece option,
}
static void ParseCommandLine(int argc, char* argv[],
- vector<StringPiece>* targets,
+ vector<Symbol>* targets,
vector<StringPiece>* cl_vars) {
for (int i = 1; i < argc; i++) {
const char* arg = argv[i];
@@ -116,7 +117,7 @@ static void Quit() {
QuitSymtab();
}
-static void ReadBootstrapMakefile(const vector<StringPiece>& targets,
+static void ReadBootstrapMakefile(const vector<Symbol>& targets,
vector<AST*>* asts) {
string bootstrap = (
"CC:=cc\n"
@@ -138,7 +139,7 @@ static void ReadBootstrapMakefile(const vector<StringPiece>& targets,
// TODO: Add more builtin rules.
);
bootstrap += StringPrintf("MAKECMDGOALS:=%s\n",
- JoinStrings(targets, " ").c_str());
+ JoinSymbols(targets, " ").c_str());
char cwd[PATH_MAX];
if (!getcwd(cwd, PATH_MAX)) {
@@ -146,13 +147,13 @@ static void ReadBootstrapMakefile(const vector<StringPiece>& targets,
CHECK(false);
}
bootstrap += StringPrintf("CURDIR:=%s\n", cwd);
- Parse(Intern(bootstrap), Loc("*bootstrap*", 0), asts);
+ Parse(Intern(bootstrap).str(), Loc("*bootstrap*", 0), asts);
}
static void SetVar(StringPiece l, VarOrigin origin, Vars* vars) {
size_t found = l.find('=');
CHECK(found != string::npos);
- StringPiece lhs = Intern(l.substr(0, found));
+ Symbol lhs = Intern(l.substr(0, found));
StringPiece rhs = l.substr(found + 1);
vars->Assign(lhs,
new RecursiveVar(NewLiteral(rhs.data()), origin, rhs.data()));
@@ -168,7 +169,7 @@ static void FillDefaultVars(const vector<StringPiece>& cl_vars, Vars* vars) {
}
}
-static int Run(const vector<StringPiece>& targets,
+static int Run(const vector<Symbol>& targets,
const vector<StringPiece>& cl_vars) {
MakefileCacheManager* cache_mgr = NewMakefileCacheManager();
@@ -185,7 +186,7 @@ static int Run(const vector<StringPiece>& targets,
}
ev->set_is_bootstrap(false);
- vars->Assign("MAKEFILE_LIST",
+ vars->Assign(Intern("MAKEFILE_LIST"),
new SimpleVar(make_shared<string>(
StringPrintf(" %s", g_makefile)), VarOrigin::FILE));
@@ -205,7 +206,7 @@ static int Run(const vector<StringPiece>& targets,
}
for (const auto& p : ev->exports()) {
- const string& name = p.first.as_string();
+ const Symbol name = p.first;
if (p.second) {
Var* v = ev->LookupVar(name);
shared_ptr<string> value = v->Eval(ev);
@@ -242,7 +243,7 @@ static int Run(const vector<StringPiece>& targets,
int main(int argc, char* argv[]) {
Init();
- vector<StringPiece> targets;
+ vector<Symbol> targets;
vector<StringPiece> cl_vars;
ParseCommandLine(argc, argv, &targets, &cl_vars);
int r = Run(targets, cl_vars);