diff options
| author | HampusM <hampus@hampusmat.com> | 2022-03-14 10:40:26 +0100 | 
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2022-03-14 10:40:26 +0100 | 
| commit | 5aa818e65eaa3cc288e097ed3b1a134015215500 (patch) | |
| tree | 23bb39e48c94634b12de82c74708dea8e720dc38 | |
| parent | a119e6ca70ffab14f0a70908fa3eeb83b41bb5ab (diff) | |
refactor: move UniquePtr to memory dir in common
| -rw-r--r-- | src/common/conversion.cpp | 3 | ||||
| -rw-r--r-- | src/common/conversion.hpp | 2 | ||||
| -rw-r--r-- | src/common/memory.hpp | 31 | ||||
| -rw-r--r-- | src/common/memory.tpp | 49 | ||||
| -rw-r--r-- | src/common/memory/unique_ptr.hpp | 37 | ||||
| -rw-r--r-- | src/common/memory/unique_ptr.tpp | 55 | ||||
| -rw-r--r-- | src/gyronardo.cpp | 2 | 
7 files changed, 97 insertions, 82 deletions
| diff --git a/src/common/conversion.cpp b/src/common/conversion.cpp index 0bdc81a..b016537 100644 --- a/src/common/conversion.cpp +++ b/src/common/conversion.cpp @@ -1,5 +1,8 @@  #include "conversion.hpp" +#include <math.h> +#include <stdlib.h> +  namespace common  { diff --git a/src/common/conversion.hpp b/src/common/conversion.hpp index 81a4a52..e87adc5 100644 --- a/src/common/conversion.hpp +++ b/src/common/conversion.hpp @@ -1,6 +1,6 @@  #pragma once -#include "common/memory.hpp" +#include "common/memory/unique_ptr.hpp"  #include "common/string.hpp"  namespace common diff --git a/src/common/memory.hpp b/src/common/memory.hpp index de72d80..888ede3 100644 --- a/src/common/memory.hpp +++ b/src/common/memory.hpp @@ -8,37 +8,6 @@ namespace common  template <typename memType>  memType *malloc_s(unsigned int size); -template <class Target> -class UniquePtr -{ -public: -	explicit UniquePtr() = default; -	explicit UniquePtr(Target *target); - -	// Move constructor -	UniquePtr(UniquePtr &&unique_ptr) noexcept; - -	// Move assignment operator -	UniquePtr &operator=(UniquePtr &&unique_ptr) noexcept; - -	// Disable the copy constructor -	UniquePtr(const UniquePtr &unique_ptr) = delete; - -	// Disable the copy assignment operator -	UniquePtr &operator=(const UniquePtr &unique_ptr) = delete; - -	~UniquePtr(); - -	Target operator*() const; -	Target *operator->() const; - -private: -	Target *_target = nullptr; -}; - -template <typename Target, typename... Args> -UniquePtr<Target> make_unique(Args... args); -  } // namespace common  #include "memory.tpp" diff --git a/src/common/memory.tpp b/src/common/memory.tpp index ace2432..af833bc 100644 --- a/src/common/memory.tpp +++ b/src/common/memory.tpp @@ -24,53 +24,4 @@ memType *malloc_s(unsigned int size)  	return static_cast<memType *>(mem);  } -template <class Target> -UniquePtr<Target>::UniquePtr(Target *target) : _target(target) -{ -} - -template <class Target> -UniquePtr<Target>::UniquePtr(UniquePtr &&unique_ptr) noexcept -	: _target(unique_ptr._target) -{ -	unique_ptr._target = nullptr; -} - -template <class Target> -UniquePtr<Target> &UniquePtr<Target>::operator=(UniquePtr &&unique_ptr) noexcept -{ -	if (&unique_ptr != this) -	{ -		delete _target; -		_target = unique_ptr._target; -		unique_ptr._target = nullptr; -	} - -	return *this; -} - -template <class Target> -UniquePtr<Target>::~UniquePtr() -{ -	delete _target; -} - -template <class Target> -Target UniquePtr<Target>::operator*() const -{ -	return *(_target); -} - -template <class Target> -Target *UniquePtr<Target>::operator->() const -{ -	return _target; -} - -template <class Target, typename... Args> -UniquePtr<Target> make_unique(Args... args) -{ -	return UniquePtr<Target>(new Target(args...)); -} -  } // namespace common diff --git a/src/common/memory/unique_ptr.hpp b/src/common/memory/unique_ptr.hpp new file mode 100644 index 0000000..94c02d0 --- /dev/null +++ b/src/common/memory/unique_ptr.hpp @@ -0,0 +1,37 @@ +#pragma once
 +
 +namespace common
 +{
 +template <class Target>
 +class UniquePtr
 +{
 +public:
 +	explicit UniquePtr() = default;
 +	explicit UniquePtr(Target *target);
 +
 +	// Move constructor
 +	UniquePtr(UniquePtr &&unique_ptr) noexcept;
 +
 +	// Move assignment operator
 +	UniquePtr &operator=(UniquePtr &&unique_ptr) noexcept;
 +
 +	// Disable the copy constructor
 +	UniquePtr(const UniquePtr &unique_ptr) = delete;
 +
 +	// Disable the copy assignment operator
 +	UniquePtr &operator=(const UniquePtr &unique_ptr) = delete;
 +
 +	~UniquePtr();
 +
 +	Target operator*() const;
 +	Target *operator->() const;
 +
 +private:
 +	Target *_target = nullptr;
 +};
 +
 +template <typename Target, typename... Args>
 +UniquePtr<Target> make_unique(Args... args);
 +} // namespace common
 +
 +#include "unique_ptr.tpp"
 diff --git a/src/common/memory/unique_ptr.tpp b/src/common/memory/unique_ptr.tpp new file mode 100644 index 0000000..3cab9ec --- /dev/null +++ b/src/common/memory/unique_ptr.tpp @@ -0,0 +1,55 @@ +#pragma once
 +
 +#include "unique_ptr.hpp"
 +
 +namespace common
 +{
 +template <class Target>
 +UniquePtr<Target>::UniquePtr(Target *target) : _target(target)
 +{
 +}
 +
 +template <class Target>
 +UniquePtr<Target>::UniquePtr(UniquePtr &&unique_ptr) noexcept
 +	: _target(unique_ptr._target)
 +{
 +	unique_ptr._target = nullptr;
 +}
 +
 +template <class Target>
 +UniquePtr<Target> &UniquePtr<Target>::operator=(UniquePtr &&unique_ptr) noexcept
 +{
 +	if (&unique_ptr != this)
 +	{
 +		delete _target;
 +		_target = unique_ptr._target;
 +		unique_ptr._target = nullptr;
 +	}
 +
 +	return *this;
 +}
 +
 +template <class Target>
 +UniquePtr<Target>::~UniquePtr()
 +{
 +	delete _target;
 +}
 +
 +template <class Target>
 +Target UniquePtr<Target>::operator*() const
 +{
 +	return *(_target);
 +}
 +
 +template <class Target>
 +Target *UniquePtr<Target>::operator->() const
 +{
 +	return _target;
 +}
 +
 +template <class Target, typename... Args>
 +UniquePtr<Target> make_unique(Args... args)
 +{
 +	return UniquePtr<Target>(new Target(args...));
 +}
 +} // namespace common
 diff --git a/src/gyronardo.cpp b/src/gyronardo.cpp index 4b6b5fd..d05b3ce 100644 --- a/src/gyronardo.cpp +++ b/src/gyronardo.cpp @@ -1,7 +1,7 @@ -#include "common/memory.hpp"  #include "sensor/calibration.hpp"  #include "sensor/sensor.hpp"  #include "serial.hpp" +#include "utils.hpp"  #include <Arduino.h>  #include <Wire.h> | 
