EdgeHolder.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "EdgeHolder.h"
  2. namespace msdfgen {
  3. void EdgeHolder::swap(EdgeHolder &a, EdgeHolder &b) {
  4. EdgeSegment *tmp = a.edgeSegment;
  5. a.edgeSegment = b.edgeSegment;
  6. b.edgeSegment = tmp;
  7. }
  8. EdgeHolder::EdgeHolder(const EdgeHolder &orig) : edgeSegment(orig.edgeSegment ? orig.edgeSegment->clone() : NULL) { }
  9. #ifdef MSDFGEN_USE_CPP11
  10. EdgeHolder::EdgeHolder(EdgeHolder &&orig) : edgeSegment(orig.edgeSegment) {
  11. orig.edgeSegment = NULL;
  12. }
  13. #endif
  14. EdgeHolder::~EdgeHolder() {
  15. delete edgeSegment;
  16. }
  17. EdgeHolder &EdgeHolder::operator=(const EdgeHolder &orig) {
  18. if (this != &orig) {
  19. delete edgeSegment;
  20. edgeSegment = orig.edgeSegment ? orig.edgeSegment->clone() : NULL;
  21. }
  22. return *this;
  23. }
  24. #ifdef MSDFGEN_USE_CPP11
  25. EdgeHolder &EdgeHolder::operator=(EdgeHolder &&orig) {
  26. if (this != &orig) {
  27. delete edgeSegment;
  28. edgeSegment = orig.edgeSegment;
  29. orig.edgeSegment = NULL;
  30. }
  31. return *this;
  32. }
  33. #endif
  34. EdgeSegment &EdgeHolder::operator*() {
  35. return *edgeSegment;
  36. }
  37. const EdgeSegment &EdgeHolder::operator*() const {
  38. return *edgeSegment;
  39. }
  40. EdgeSegment *EdgeHolder::operator->() {
  41. return edgeSegment;
  42. }
  43. const EdgeSegment *EdgeHolder::operator->() const {
  44. return edgeSegment;
  45. }
  46. EdgeHolder::operator EdgeSegment *() {
  47. return edgeSegment;
  48. }
  49. EdgeHolder::operator const EdgeSegment *() const {
  50. return edgeSegment;
  51. }
  52. }