If we're gonna break the API, let's do it with a BANG.
-void sub_op_register(pTHX_ const sub_op_config_t *c) {
+void sub_op_register(pTHX_ const sub_op_config_t *c, U32 flags) {
SV *key = newSViv(PTR2IV(c->pp));
if (!PL_custom_op_names)
SV *key = newSViv(PTR2IV(c->pp));
if (!PL_custom_op_names)
c.pp = scalar_util_reftype;
c.check = 0;
c.ud = NULL;
c.pp = scalar_util_reftype;
c.check = 0;
c.ud = NULL;
- sub_op_register(aTHX_ &c);
+ sub_op_register(aTHX_ &c, 0);
}
In your Perl module file :
}
In your Perl module file :
For future compatibility, it is required to call this function with your config object before storing your actual values.
It will store safe defaults for members you won't set.
For future compatibility, it is required to call this function with your config object before storing your actual values.
It will store safe defaults for members you won't set.
-=head2 C<void sub_op_register(pTHX_ const sub_op_config_t *c)>
+=head2 C<void sub_op_register(pTHX_ const sub_op_config_t *c, U32 flags)>
Registers a name and its configuration into L<Sub::Op>.
The caller is responsible for allocating and freeing the C<sub_op_config_t> object.
Registers a name and its configuration into L<Sub::Op>.
The caller is responsible for allocating and freeing the C<sub_op_config_t> object.
} sub_op_config_t;
void sub_op_init (sub_op_config_t *c);
} sub_op_config_t;
void sub_op_init (sub_op_config_t *c);
-void sub_op_register(pTHX_ const sub_op_config_t *c);
+void sub_op_register(pTHX_ const sub_op_config_t *c, U32 flags);
sub_op_config_t *sub_op_dup (pTHX_ const sub_op_config_t *c);
void sub_op_free (pTHX_ sub_op_config_t *c);
sub_op_config_t *sub_op_dup (pTHX_ const sub_op_config_t *c);
void sub_op_free (pTHX_ sub_op_config_t *c);
c.check = sols_check;
c.ud = SvREFCNT_inc(cb);
c.pp = sols_pp;
c.check = sols_check;
c.ud = SvREFCNT_inc(cb);
c.pp = sols_pp;
- sub_op_register(aTHX_ &c);
+ sub_op_register(aTHX_ &c, 0);