case FR_TYPE_IFID:
case FR_TYPE_TIME_DELTA:
case FR_TYPE_DATE:
+ case FR_TYPE_ATTR:
{
char *in;
size_t len;
return value;
}
- case FR_TYPE_ATTR:
case FR_TYPE_NON_LEAF:
REDEBUG("Cannot convert %s to ruby type", fr_type_to_str(vp->vp_type));
break;
/** Convert a ruby value to a fr_pair_t value
*
*/
-static void mruby_roby_to_pair_value(mrb_state *mrb, mrb_value *value, fr_pair_t *vp)
+static void mruby_ruby_to_pair_value(mrb_state *mrb, mrb_value *value, fr_pair_t *vp)
{
switch (vp->vp_type) {
case FR_TYPE_STRING:
RUBYSETFLOAT(32)
RUBYSETFLOAT(64)
+ case FR_TYPE_SIZE:
+ if (mrb_type(*value) != MRB_TT_INTEGER) {
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "Integer value required");
+ }
+ vp->vp_size = mrb_integer(*value);
+ break;
+
+ case FR_TYPE_BOOL:
+ if (mrb_type(*value) == MRB_TT_TRUE) {
+ vp->vp_bool = true;
+ } else if (mrb_type(*value) == MRB_TT_FALSE) {
+ vp->vp_bool = false;
+ } else {
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "Boolean value required");
+ }
+ break;
+
case FR_TYPE_ETHERNET:
case FR_TYPE_IPV4_ADDR:
case FR_TYPE_IPV6_ADDR:
case FR_TYPE_IFID:
case FR_TYPE_TIME_DELTA:
case FR_TYPE_DATE:
+ case FR_TYPE_ATTR:
+
*value = mrb_obj_as_string(mrb, *value);
if (fr_pair_value_from_str(vp, RSTRING_PTR(*value), RSTRING_LEN(*value), NULL, false) < 0) {
mrb_raise(mrb, E_RUNTIME_ERROR, "Failed populating pair");
}
break;
- default:
+ case FR_TYPE_NON_LEAF:
fr_assert(0);
break;
}
}
}
- mruby_roby_to_pair_value(mrb, &value, vp);
+ mruby_ruby_to_pair_value(mrb, &value, vp);
RDEBUG2("%pP", vp);
return mrb_nil_value();
mrb_raisef(mrb, E_RUNTIME_ERROR, "Failed adding %s", pair->da->name);
}
- mruby_roby_to_pair_value(mrb, &value, vp);
+ mruby_ruby_to_pair_value(mrb, &value, vp);
RDEBUG2("%pP", vp);
return mrb_nil_value();