Stream.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #include "Stream.h"
  2. int streamGetChar(char* c, Stream* in)
  3. {
  4. if(in->index < in->size)
  5. {
  6. *c = in->data[in->index];
  7. in->index++;
  8. return 0;
  9. }
  10. return -1;
  11. }
  12. int streamGetShort(short* s, Stream* in)
  13. {
  14. if(in->index + 1 < in->size)
  15. {
  16. *s = (in->data[in->index] & 0xFF) | ((in->data[in->index + 1] & 0xFF) << 8);
  17. in->index += 2;
  18. return 0;
  19. }
  20. return -1;
  21. }
  22. int streamGetInt(int* i, Stream* in)
  23. {
  24. if(in->index + 3 < in->size)
  25. {
  26. *i = (in->data[in->index] & 0xFF) | ((in->data[in->index + 1] & 0xFF) << 8) |
  27. ((in->data[in->index + 2] & 0xFF) << 16) | ((in->data[in->index + 3] & 0xFF) << 24);
  28. in->index += 4;
  29. return 0;
  30. }
  31. return -1;
  32. }
  33. int streamWriteChar(char c, Stream* in)
  34. {
  35. if(in->index < in->size)
  36. {
  37. in->data[in->index] = c;
  38. in->index++;
  39. return 0;
  40. }
  41. return -1;
  42. }
  43. int streamWriteShort(short s, Stream* in)
  44. {
  45. if(in->index + 1 < in->size)
  46. {
  47. in->data[in->index] = s & 0xFF;
  48. in->data[in->index + 1] = (s >> 8) & 0xFF;
  49. in->index += 2;
  50. return 0;
  51. }
  52. return -1;
  53. }
  54. int streamWriteInt(int i, Stream* in)
  55. {
  56. if(in->index + 3 < in->size)
  57. {
  58. in->data[in->index] = i & 0xFF;
  59. in->data[in->index + 1] = (i >> 8) & 0xFF;
  60. in->data[in->index + 2] = (i >> 16) & 0xFF;
  61. in->data[in->index + 3] = (i >> 24) & 0xFF;
  62. in->index += 4;
  63. return 0;
  64. }
  65. return -1;
  66. }