Fix bug in Line number handling
[clinton/Smoothieware.git] / src / modules / communication / utils / Gcode.h
CommitLineData
df27a6a3 1/*
cd011f58
AW
2 This file is part of Smoothie (http://smoothieware.org/). The motion control part is heavily based on Grbl (https://github.com/simen/grbl).
3 Smoothie is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
4 Smoothie is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
df27a6a3 5 You should have received a copy of the GNU General Public License along with Smoothie. If not, see <http://www.gnu.org/licenses/>.
cd011f58
AW
6*/
7
8
4cff3ded
AW
9#ifndef GCODE_H
10#define GCODE_H
11#include <string>
12using std::string;
4cff3ded 13
fc7b9a7b
JM
14class StreamOutput;
15
16// Object to represent a Gcode command
4cff3ded
AW
17class Gcode {
18 public:
aae5a789 19 Gcode(const string&, StreamOutput*, bool strip=true);
fc7b9a7b 20 Gcode(const Gcode& to_copy);
e55e3062 21 Gcode& operator= (const Gcode& to_copy);
8090190d
JM
22 ~Gcode();
23
24 const char* get_command() const { return command; }
25 bool has_letter ( char letter ) const;
b9b1bb25
JM
26 float get_value ( char letter, char **ptr= nullptr ) const;
27 int get_int ( char letter, char **ptr= nullptr ) const;
8090190d 28 int get_num_args() const;
8090190d 29 void mark_as_taken();
b9b1bb25 30 void strip_parameters();
8090190d
JM
31
32 // FIXME these should be private
e6b5ae25
AW
33 unsigned int m;
34 unsigned int g;
8090190d 35 float millimeters_of_travel;
e6b5ae25 36
8090190d
JM
37 struct {
38 bool add_nl:1;
39 bool has_m:1;
40 bool has_g:1;
41 bool accepted_by_module:1;
42 };
ac9f9b7a 43
8090190d 44 StreamOutput* stream;
93284f6f 45 string txt_after_ok;
702023f3 46
8090190d 47 private:
aae5a789 48 void prepare_cached_values(bool strip=true);
b9b1bb25 49 char *command;
4cff3ded
AW
50};
51#endif