// Interpreter internals - Python bindings // Michael Haberler 7/2011 // #include #include #include namespace bp = boost::python; #include "rs274ngc.hh" #include "interp_internal.hh" #include "rs274ngc_interp.hh" #include "array1.hh" namespace pp = pyplusplus::containers::static_sized; #include "interp_array_types.hh" static const char *get_comment(block &b) { return b.comment; }; static const char *get_o_name(block &b) { return b.o_name; }; static g_modes_array g_modes_wrapper ( block & b) { return g_modes_array(b.g_modes); } static m_modes_array m_modes_wrapper ( block & b) { return m_modes_array(b.m_modes); } static params_array params_wrapper ( block & b) { return params_array(b.params); } void export_Block() { using namespace boost::python; using namespace boost; class_ ("Block",no_init) .def_readwrite("f_flag",&block::f_flag) .def_readwrite("p_flag",&block::p_flag) .def_readwrite("p_number",&block::p_number) .def_readwrite("a_flag",&block::a_flag) .def_readwrite("a_number",&block::a_number) .def_readwrite("b_flag",&block::b_flag) .def_readwrite("b_number",&block::b_number) .def_readwrite("c_flag",&block::c_flag) .def_readwrite("c_number",&block::c_number) .def_readwrite("d_number_float",&block::d_number_float) .def_readwrite("d_flag",&block::d_flag) .def_readwrite("e_flag",&block::e_flag) .def_readwrite("e_number",&block::e_number) .def_readwrite("f_flag",&block::f_flag) .def_readwrite("f_number",&block::f_number) .def_readwrite("h_flag",&block::h_flag) .def_readwrite("h_number",&block::h_number) .def_readwrite("i_flag",&block::i_flag) .def_readwrite("i_number",&block::i_number) .def_readwrite("j_flag",&block::j_flag) .def_readwrite("j_number",&block::j_number) .def_readwrite("k_flag",&block::k_flag) .def_readwrite("k_number",&block::k_number) .def_readwrite("l_number",&block::l_number) .def_readwrite("l_flag",&block::l_flag) .def_readwrite("line_number",&block::line_number) .def_readwrite("saved_line_number",&block::line_number) .def_readwrite("n_number",&block::n_number) .def_readwrite("motion_to_be",&block::motion_to_be) .def_readwrite("m_count",&block::m_count) .def_readwrite("user_m",&block::user_m) .def_readwrite("p_number",&block::p_number) .def_readwrite("p_flag",&block::p_flag) .def_readwrite("q_number",&block::q_number) .def_readwrite("q_flag",&block::q_flag) .def_readwrite("r_flag",&block::r_flag) .def_readwrite("r_number",&block::r_number) .def_readwrite("s_flag",&block::s_flag) .def_readwrite("s_number",&block::s_number) .def_readwrite("t_flag",&block::t_flag) .def_readwrite("t_number",&block::t_number) .def_readwrite("u_flag",&block::u_flag) .def_readwrite("u_number",&block::u_number) .def_readwrite("v_flag",&block::v_flag) .def_readwrite("v_number",&block::v_number) .def_readwrite("w_flag",&block::w_flag) .def_readwrite("w_number",&block::w_number) .def_readwrite("x_flag",&block::x_flag) .def_readwrite("x_number",&block::x_number) .def_readwrite("y_flag",&block::y_flag) .def_readwrite("y_number",&block::y_number) .def_readwrite("z_flag",&block::z_flag) .def_readwrite("z_number",&block::z_number) .def_readwrite("radius_flag",&block::radius_flag) .def_readwrite("radius",&block::radius) .def_readwrite("theta_flag",&block::theta_flag) .def_readwrite("theta",&block::theta) .def_readwrite("offset",&block::offset) .def_readwrite("o_type",&block::o_type) // I hope someday I really understand this .add_property("executing_remap", make_getter(&block::executing_remap, return_value_policy()), make_setter(&block::executing_remap, return_value_policy())) .def_readwrite("call_type",&block::call_type) .def_readwrite("breadcrumbs",&block::breadcrumbs) .def_readwrite("phase",&block::phase) .def_readwrite("builtin_used",&block::builtin_used) // read-only .add_property("comment", &get_comment) .add_property("o_name", &get_o_name) .add_property( "params", bp::make_function( params_w(¶ms_wrapper), bp::with_custodian_and_ward_postcall< 0, 1 >())) // arrays .add_property( "m_modes", bp::make_function( m_modes_w(&m_modes_wrapper), bp::with_custodian_and_ward_postcall< 0, 1 >())) .add_property( "g_modes", bp::make_function( g_modes_w(&g_modes_wrapper), bp::with_custodian_and_ward_postcall< 0, 1 >())) ; }