packet.cc 805 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // CODYlib -*- mode:c++ -*-
  2. // Copyright (C) 2020 Nathan Sidwell, nathan@acm.org
  3. // License: Apache v2.0
  4. // Cody
  5. #include "internal.hh"
  6. namespace Cody {
  7. void Packet::Destroy ()
  8. {
  9. switch (cat)
  10. {
  11. case STRING:
  12. // Silly scope destructor name rules
  13. using S = std::string;
  14. string.~S ();
  15. break;
  16. case VECTOR:
  17. using V = std::vector<std::string>;
  18. vector.~V ();
  19. break;
  20. default:;
  21. }
  22. }
  23. void Packet::Create (Packet &&t)
  24. {
  25. cat = t.cat;
  26. code = t.code;
  27. request = t.request;
  28. switch (cat)
  29. {
  30. case STRING:
  31. new (&string) std::string (std::move (t.string));
  32. break;
  33. case VECTOR:
  34. new (&vector) std::vector<std::string> (std::move (t.vector));
  35. break;
  36. default:
  37. integer = t.integer;
  38. break;
  39. }
  40. }
  41. }