buffer.h - エンジンの C API リファレンス

buffer.h
  1. #pragma once
  2. #include "stream.h"
  3. //#include "array.h"
  4. #include "allocator.h"
  5. // sourced from engine's data_compiler.h
  6. namespace stingray_plugin_foundation {
  7. namespace buffer
  8. {
  9. //Buffer buffer(const Array<char> &resource, Allocator &allocator) {
  10. // Buffer result;
  11. // result.len = resource.size();
  12. // result.p = (char *)allocator.allocate(result.len);
  13. // memmove(result.p, resource.begin(), result.len);
  14. // return result;
  15. //}
  16. //Buffer buffer(const Array<char> &header, const Array<char> &data, Allocator &allocator) {
  17. // Buffer result;
  18. // result.len = header.size() + data.size();
  19. // XENSURE(result.len > 0);
  20. // result.p = (char *)allocator.allocate(result.len);
  21. // memcpy(result.p, header.begin(), header.size());
  22. // memcpy(result.p + header.size(), data.begin(), data.size());
  23. // return result;
  24. //}
  25. //Buffer buffer(const StringStream &os, Allocator &allocator) {
  26. // Buffer result;
  27. // result.p = (char *)allocator.allocate(os.size());
  28. // result.len = os.size();
  29. // memcpy(result.p, os.c_str(), os.size());
  30. // return result;
  31. //}
  32. //Buffer buffer(MemoryOutputBuffer &ob, Allocator &allocator) {
  33. // Buffer result;
  34. // result.len = (unsigned)ob.position();
  35. // result.p = (char *)allocator.allocate(result.len);
  36. // ob.read(result.p);
  37. // return result;
  38. //}
  39. //Buffer copy(Buffer b, Allocator &allocator)
  40. //{
  41. // Buffer result;
  42. // result.len = b.len;
  43. // result.p = (char *)allocator.allocate(result.len);
  44. // memcpy(result.p, b.p, result.len);
  45. // return result;
  46. //}
  47. //template <class T> Buffer serialize(T &t, Allocator &allocator) {
  48. // MemoryOutputBuffer mob(allocator);
  49. // OutputArchive oa = SharedPtr<OutputBuffer>(mob);
  50. // oa & t;
  51. // return buffer(mob, allocator);
  52. //}
  53. template <class T> Buffer pack(T &t, Allocator &allocator) {
  54. Buffer result;
  55. result.len = sizeof(T);
  56. result.p = (char *)allocator.allocate(result.len);
  57. char *p = result.p;
  58. stream::pack(p, t);
  59. return result;
  60. }
  61. } // namespace buffer
  62. } // namespace stingray_plugin_foundation