Skip to content

Commit ba7d651

Browse files
committed
Change Field::(param and result) to not use boost
Fall back to the KISS boolean flag denoting whether the variable is set or not.
1 parent 5724a2c commit ba7d651

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

src/mp/gen.cpp

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
#include <mp/config.h>
66
#include <mp/util.h>
77

8-
#include <boost/optional.hpp>
98
#include <capnp/schema-parser.h>
109
#include <fstream>
1110
#include <map>
1211
#include <set>
1312
#include <sstream>
13+
#include <unistd.h>
1414
#include <vector>
1515

1616
#define PROXY_BIN "mpgen"
@@ -329,8 +329,10 @@ void Generate(kj::StringPtr src_prefix,
329329

330330
struct Field
331331
{
332-
boost::optional<::capnp::StructSchema::Field> param;
333-
boost::optional<::capnp::StructSchema::Field> result;
332+
::capnp::StructSchema::Field param;
333+
bool param_is_set = false;
334+
::capnp::StructSchema::Field result;
335+
bool result_is_set = false;
334336
int args = 0;
335337
bool retval = false;
336338
bool optional = false;
@@ -354,7 +356,13 @@ void Generate(kj::StringPtr src_prefix,
354356
fields.emplace_back();
355357
}
356358
auto& field = fields[inserted.first->second];
357-
(param ? field.param : field.result) = schema_field;
359+
if (param) {
360+
field.param = schema_field;
361+
field.param_is_set = true;
362+
} else {
363+
field.result = schema_field;
364+
field.result_is_set = true;
365+
}
358366

359367
if (!param && field_name == "result") {
360368
field.retval = true;
@@ -393,7 +401,7 @@ void Generate(kj::StringPtr src_prefix,
393401
fields[field.second].optional = true;
394402
}
395403
auto want_field = field_idx.find("want" + Cap(field.first));
396-
if (want_field != field_idx.end() && fields[want_field->second].param) {
404+
if (want_field != field_idx.end() && fields[want_field->second].param_is_set) {
397405
fields[want_field->second].skip = true;
398406
fields[field.second].requested = true;
399407
}
@@ -416,12 +424,12 @@ void Generate(kj::StringPtr src_prefix,
416424
for (const auto& field : fields) {
417425
if (field.skip) continue;
418426

419-
auto field_name = field.param ? field.param->getProto().getName() :
420-
field.result ? field.result->getProto().getName() : "";
421-
auto field_type = field.param ? field.param->getType() : field.result->getType();
427+
const auto& f = field.param_is_set ? field.param : field.result;
428+
auto field_name = f.getProto().getName();
429+
auto field_type = f.getType();
422430

423431
std::ostringstream field_flags;
424-
field_flags << (!field.param ? "FIELD_OUT" : field.result ? "FIELD_IN | FIELD_OUT" : "FIELD_IN");
432+
field_flags << (!field.param_is_set ? "FIELD_OUT" : field.result_is_set ? "FIELD_IN | FIELD_OUT" : "FIELD_IN");
425433
if (field.optional) field_flags << " | FIELD_OPTIONAL";
426434
if (field.requested) field_flags << " | FIELD_REQUESTED";
427435
if (BoxedType(field_type)) field_flags << " | FIELD_BOXED";

0 commit comments

Comments
 (0)