gitbaseoid.h 789 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #ifndef GITBASEOID_H
  2. #define GITBASEOID_H
  3. #include <gitbase.h>
  4. #include <gitoid.h>
  5. #include <git2/oid.h>
  6. template<typename T>
  7. class GitBaseOid : public GitBase<T>
  8. {
  9. public:
  10. const GitOid &oid() const {
  11. return m_oid;
  12. }
  13. protected:
  14. GitBaseOid(T *raw, GitRepository *parent) : GitBase<T>(raw, parent)
  15. ,m_oid(nullptr, parent)
  16. {}
  17. GitBaseOid(GitBaseOid &&other) : GitBase<T>(std::move(other))
  18. {
  19. m_oid = other.m_oid;
  20. other.m_oid = GitOid();
  21. }
  22. GitBaseOid &operator=(GitBaseOid &&other) {
  23. if (&other != this) {
  24. m_oid = other.m_oid;
  25. other.m_oid = GitOid();
  26. }
  27. return static_cast<GitBaseOid&>(GitBase<T>::operator=(std::move(other)));
  28. }
  29. GitOid m_oid;
  30. };
  31. #endif // GITBASEOID_H