-----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

Reply via email to