float.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include "pbc.h"
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <stdint.h>
  5. #include <stddef.h>
  6. #include "readfile.h"
  7. static void
  8. dump(uint8_t *buffer, int sz) {
  9. int i , j;
  10. for (i=0;i<sz;i++) {
  11. printf("%02X ",buffer[i]);
  12. if (i % 16 == 15) {
  13. for (j = 0 ;j <16 ;j++) {
  14. char c = buffer[i/16 * 16+j];
  15. if (c>=32 && c<127) {
  16. printf("%c",c);
  17. } else {
  18. printf(".");
  19. }
  20. }
  21. printf("\n");
  22. }
  23. }
  24. printf("\n");
  25. }
  26. static void
  27. test_rmessage(struct pbc_env *env, struct pbc_slice *slice) {
  28. struct pbc_rmessage * m = pbc_rmessage_new(env, "real", slice);
  29. printf("f = %f\n", pbc_rmessage_real(m , "f" , 0 ));
  30. printf("d = %f\n", pbc_rmessage_real(m , "d" , 0 ));
  31. pbc_rmessage_delete(m);
  32. }
  33. static struct pbc_wmessage *
  34. test_wmessage(struct pbc_env * env)
  35. {
  36. struct pbc_wmessage * msg = pbc_wmessage_new(env, "real");
  37. pbc_wmessage_real(msg, "f", 1.0);
  38. pbc_wmessage_real(msg, "d" , 4.0);
  39. return msg;
  40. }
  41. int
  42. main()
  43. {
  44. struct pbc_slice slice;
  45. read_file("float.pb", &slice);
  46. if (slice.buffer == NULL)
  47. return 1;
  48. struct pbc_env * env = pbc_new();
  49. pbc_register(env, &slice);
  50. free(slice.buffer);
  51. struct pbc_wmessage *msg = test_wmessage(env);
  52. pbc_wmessage_buffer(msg, &slice);
  53. dump(slice.buffer, slice.len);
  54. test_rmessage(env, &slice);
  55. pbc_wmessage_delete(msg);
  56. pbc_delete(env);
  57. return 0;
  58. }