Clifford Wolf:

Added commandline_commands support



git-svn-id: http://svn.clifford.at/openscad/trunk@132 b57f626f-c46c-0410-a088-ec61d464b74c
stl_dim
clifford 2009-11-08 19:14:03 +00:00
parent ac26c9d683
commit 8394d6002b
4 changed files with 23 additions and 7 deletions

View File

@ -411,7 +411,7 @@ void MainWindow::compile(bool procevents)
root_ctx.set_variable("$vpr", vpr);
last_compiled_doc = editor->toPlainText();
root_module = parse(last_compiled_doc.toAscii().data(), false);
root_module = parse((last_compiled_doc + commandline_commands).toAscii().data(), false);
delete highlighter;
highlighter = new Highlighter(editor->document());

View File

@ -30,11 +30,13 @@
static void help(const char *progname)
{
fprintf(stderr, "Usage: %s [ -m make_command ] [ filename ]\n", progname);
fprintf(stderr, " %s { -s stl_file | -o off_file } [ -d deps_file ] [ -m make_command ] filename\n", progname);
fprintf(stderr, "Usage: %s [ { -s stl_file | -o off_file } [ -d deps_file ] ]\\\n"
"%*s[ -m make_command ] [ -D var=val [..] ] filename\n",
progname, strlen(progname)+8, "");
exit(1);
}
QString commandline_commands;
const char *make_command = NULL;
QSet<QString> dependencies;
@ -80,7 +82,7 @@ int main(int argc, char **argv)
int opt;
while ((opt = getopt(argc, argv, "s:o:d:m:")) != -1)
while ((opt = getopt(argc, argv, "s:o:d:m:D:")) != -1)
{
switch (opt)
{
@ -104,6 +106,9 @@ int main(int argc, char **argv)
help(argv[0]);
make_command = optarg;
break;
case 'D':
commandline_commands += QString(optarg) + QString(";\n");
break;
default:
help(argv[0]);
}

View File

@ -828,6 +828,7 @@ public slots:
extern AbstractModule *parse(const char *text, int debug);
extern int get_fragments_from_r(double r, double fn, double fs, double fa);
extern QString commandline_commands;
extern int parser_error_pos;
extern QPointer<MainWindow> current_win;

View File

@ -112,9 +112,19 @@ statement:
}
} |
TOK_ID '=' expr ';' {
module->assignments_var.append($1);
module->assignments_expr.append($3);
free($1);
bool add_new_assignment = true;
for (int i = 0; i < module->assignments_var.size(); i++) {
if (module->assignments_var[i] != QString($1))
continue;
delete module->assignments_expr[i];
module->assignments_expr[i] = $3;
add_new_assignment = false;
}
if (add_new_assignment) {
module->assignments_var.append($1);
module->assignments_expr.append($3);
free($1);
}
} |
TOK_MODULE TOK_ID '(' arguments_decl optional_commas ')' {
Module *p = module;