]> mj.ucw.cz Git - paperjam.git/blob - cmds.cc
More parsing
[paperjam.git] / cmds.cc
1 #include <cassert>
2 #include <cstdlib>
3 #include <cstdio>
4
5 #include "jam.h"
6
7 /*** null ***/
8
9 class null_cmd : public cmd_exec {
10 };
11
12 static const arg_def null_args[] = {
13   { NULL,       0 }
14 };
15
16 static cmd_exec *null_ctor(cmd *c UNUSED)
17 {
18   return new null_cmd;
19 }
20
21 /*** move ***/
22
23 class move_cmd : public cmd_exec {
24 public:
25   double x, y;
26 };
27
28 static const arg_def move_args[] = {
29   { "x",        AT_DIMEN | AT_MANDATORY | AT_POSITIONAL },
30   { "y",        AT_DIMEN | AT_MANDATORY | AT_POSITIONAL },
31   { "str",      AT_STRING },
32   { NULL,       0 }
33 };
34
35 static cmd_exec *move_ctor(cmd *c)
36 {
37   move_cmd *m = new move_cmd;
38   m->x = c->args.at(0)->double_default(0);
39   m->y = c->args.at(1)->double_default(0);
40   return m;
41 }
42
43 /*** Command table ***/
44
45 const cmd_def cmd_table[] = {
46   { "move",     move_args,      1,      move_ctor       },
47   { "null",     null_args,      0,      null_ctor       },
48   { NULL,       NULL,           0,      NULL    }
49 };