-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi This short and, I believe, trivial patch adds support for uint16_t type for add_data_handlers. I guess it may be useful for others. I hope I haven't missed anything. Best Ruben - -- Ruben Merz Deutsche Telekom Laboratories http://www.net.t-labs.tu-berlin.de/people/ruben_merz.shtml -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (Darwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJLY+XhAAoJEF+2tk4uvSJPPsoH/jR22+DEyU8faxvWMX8Ja41U 4gjrVjkpmOaaGoRd/fp3i/8r/vpdHjIZbqbW4Ujx1a2Wk2liLo0UNg6A4VWXFT4X SuVKf+DfKAa5U6irDBU0La6tOF/cK5dtOdacJcmOjUPP7PsCT0A4E3Nk0czqaSpq OvOQAzw1DYu+hXxf7qbK9CB1lwgPqImt1tlwk2v77o6HkRaCgC0pMp1XX1P08Zm+ RLhNQCRPXB/SsiGtraM7OS2l6f4VFs01vO8Nf8UNGY0xAXQF3A9AJnon4/FMs1Oa iIxY6iwjNskIQEmygGD1qu6kgUbyIwA/ccKdgbJpL5oyygLSIDLS/FiddrJuDx4= =Gd/a -----END PGP SIGNATURE-----
>From b02aaa18a0a1f618839988c45f0582ba71560d30 Mon Sep 17 00:00:00 2001 From: Ruben Merz <[email protected]> Date: Sat, 30 Jan 2010 08:46:28 +0100 Subject: [PATCH] add uint16_t support for add_data_handlers Signed-off-by: Ruben Merz <[email protected]> --- include/click/element.hh | 1 + lib/element.cc | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 0 deletions(-) diff --git a/include/click/element.hh b/include/click/element.hh index 9128a5a..2f019f5 100644 --- a/include/click/element.hh +++ b/include/click/element.hh @@ -163,6 +163,7 @@ class Element { public: void add_task_handlers(Task *task, const String& prefix = String()); void add_data_handlers(const String &name, int flags, uint8_t *data); + void add_data_handlers(const String &name, int flags, uint16_t *data); void add_data_handlers(const String &name, int flags, bool *data); void add_data_handlers(const String &name, int flags, int *data); void add_data_handlers(const String &name, int flags, unsigned *data); diff --git a/lib/element.cc b/lib/element.cc index cc2cc6e..6d955b6 100644 --- a/lib/element.cc +++ b/lib/element.cc @@ -2139,6 +2139,25 @@ uint8_t_write_data_handler(const String &str, Element *element, void *user_data, } static String +uint16_t_read_data_handler(Element *element, void *user_data) +{ + uint16_t *ptr = reinterpret_cast<uint16_t *>(reinterpret_cast<uintptr_t>(element) + reinterpret_cast<uintptr_t>(user_data)); + return String((int) *ptr); +} + +static int +uint16_t_write_data_handler(const String &str, Element *element, void *user_data, ErrorHandler *errh) +{ + uint16_t *ptr = reinterpret_cast<uint16_t *>(reinterpret_cast<uintptr_t>(element) + reinterpret_cast<uintptr_t>(user_data)); + int x; + if (cp_integer(str, &x) && x >= 0 && x < 65536) { + *ptr = x; + return 0; + } else + return errh->error("expected uint16_t"); +} + +static String bool_read_data_handler(Element *element, void *user_data) { bool *ptr = reinterpret_cast<bool *>(reinterpret_cast<uintptr_t>(element) + reinterpret_cast<uintptr_t>(user_data)); @@ -2312,6 +2331,13 @@ Element::add_data_handlers(const String &name, int flags, uint8_t *data) /** @overload */ void +Element::add_data_handlers(const String &name, int flags, uint16_t *data) +{ + add_data_handlers(name, flags, uint16_t_read_data_handler, uint16_t_write_data_handler, data); +} + +/** @overload */ +void Element::add_data_handlers(const String &name, int flags, bool *data) { add_data_handlers(name, flags, bool_read_data_handler, bool_write_data_handler, data); -- 1.6.6.1
_______________________________________________ click mailing list [email protected] https://amsterdam.lcs.mit.edu/mailman/listinfo/click
