Posted to tcl by ro at Fri Jan 11 08:16:39 GMT 2008view raw

  1. /*
  2. Unpack binary data from a string
  3. */
  4. SWIGRUNTIME const char *
  5. SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
  6. register unsigned char *u = (unsigned char *) ptr;
  7. register const unsigned char *eu = u + sz;
  8. for (; u != eu; ++u) {
  9. register char d = *(c++);
  10. register unsigned char uu;
  11. if ((d >= '0') && (d <= '9'))
  12. uu = ((d - '0') << 4);
  13. else if ((d >= 'a') && (d <= 'f'))
  14. uu = ((d - ('a'-10)) << 4);
  15. else
  16. return (char *) 0;
  17. d = *(c++);
  18. if ((d >= '0') && (d <= '9'))
  19. uu |= (d - '0');
  20. else if ((d >= 'a') && (d <= 'f'))
  21. uu |= (d - ('a'-10));
  22. else
  23. return (char *) 0;
  24. *u = uu;
  25. }
  26. return c;
  27. }
  28.