From: Thomas Pietrzak Date: Fri, 15 Feb 2013 13:59:10 +0000 (+0000) Subject: Add default constructor for Tacton, as well as operator = X-Git-Url: https://git.thomaspietrzak.com/?a=commitdiff_plain;h=565dbea9607eaad307f249345c679a5c190506c6;p=tactonlibrary.git Add default constructor for Tacton, as well as operator = git-svn-id: svn+ssh://thomaspietrzak.com/var/svn/rep@103 47cf9a05-e0a8-4ed5-9e9b-101a649bc004 --- diff --git a/TactonDebug/MagicCircle/magiccircle.cpp b/TactonDebug/MagicCircle/magiccircle.cpp index 8b883c7..6ea4475 100644 --- a/TactonDebug/MagicCircle/magiccircle.cpp +++ b/TactonDebug/MagicCircle/magiccircle.cpp @@ -7,7 +7,7 @@ MagicCircle::MagicCircle(QWidget *parent, Qt::WFlags flags) { try { - _tactonPlayer = new TactonPlayer("COM4"); + _tactonPlayer = new TactonPlayer("COM8"); } catch(...) { diff --git a/TactonLibrary.suo b/TactonLibrary.suo index e92b0b2..f9c1b39 100644 Binary files a/TactonLibrary.suo and b/TactonLibrary.suo differ diff --git a/TactonPlayer/Tacton.cpp b/TactonPlayer/Tacton.cpp index 64745b9..60c47af 100644 --- a/TactonPlayer/Tacton.cpp +++ b/TactonPlayer/Tacton.cpp @@ -3,6 +3,11 @@ #include #include +Tacton::Tacton() +:_nbframes(0), _patterns(NULL), _durations(NULL), _frequencies(NULL), _amplitudes(NULL) +{ +} + Tacton::Tacton(unsigned int nbframes, unsigned char *desc) :_nbframes(nbframes), _patterns(new unsigned char[nbframes]), _durations(new unsigned int[nbframes]), _frequencies(new unsigned int[nbframes]), _amplitudes(new unsigned char[nbframes]) { @@ -101,20 +106,74 @@ Tacton::Tacton(const char *pattern, unsigned int duration, unsigned int frequenc } Tacton::Tacton(const Tacton &t) -:_nbframes(t._nbframes), _patterns(new unsigned char[t._nbframes]), _durations(new unsigned int[t._nbframes]), _frequencies(new unsigned int[t._nbframes]), _amplitudes(new unsigned char[t._nbframes]) +:_nbframes(t._nbframes) { - memcpy(_patterns, t._patterns, t._nbframes * sizeof(unsigned char)); - memcpy(_durations, t._durations, t._nbframes * sizeof(unsigned int)); - memcpy(_frequencies, t._frequencies, t._nbframes * sizeof(unsigned int)); - memcpy(_amplitudes, t._amplitudes, t._nbframes * sizeof(unsigned char)); + if (_nbframes > 0) + { + _patterns = new unsigned char[t._nbframes]; + memcpy(_patterns, t._patterns, t._nbframes * sizeof(unsigned char)); + _durations = new unsigned int[t._nbframes]; + memcpy(_durations, t._durations, t._nbframes * sizeof(unsigned int)); + _frequencies = new unsigned int[t._nbframes]; + memcpy(_frequencies, t._frequencies, t._nbframes * sizeof(unsigned int)); + _amplitudes = new unsigned char[t._nbframes]; + memcpy(_amplitudes, t._amplitudes, t._nbframes * sizeof(unsigned char)); + } + else + { + _patterns = NULL; + _durations = NULL; + _frequencies = NULL; + _amplitudes = NULL; + } } Tacton::~Tacton() { - delete []_patterns; - delete []_durations; - delete []_frequencies; - delete []_amplitudes; + if (_nbframes > 0) + { + delete []_patterns; + delete []_durations; + delete []_frequencies; + delete []_amplitudes; + } +} + +Tacton &Tacton::operator = (const Tacton &t) +{ + if (&t == this) + return *this; + + if (_nbframes > 0) + { + delete []_patterns; + delete []_durations; + delete []_frequencies; + delete []_amplitudes; + } + + _nbframes = t.getNbFrames(); + + if (_nbframes > 0) + { + _patterns = new unsigned char[t._nbframes]; + memcpy(_patterns, t._patterns, t._nbframes * sizeof(unsigned char)); + _durations = new unsigned int[t._nbframes]; + memcpy(_durations, t._durations, t._nbframes * sizeof(unsigned int)); + _frequencies = new unsigned int[t._nbframes]; + memcpy(_frequencies, t._frequencies, t._nbframes * sizeof(unsigned int)); + _amplitudes = new unsigned char[t._nbframes]; + memcpy(_amplitudes, t._amplitudes, t._nbframes * sizeof(unsigned char)); + } + else + { + _patterns = NULL; + _durations = NULL; + _frequencies = NULL; + _amplitudes = NULL; + } + + return *this; } const unsigned int Tacton::getNbFrames() const diff --git a/TactonPlayer/Tacton.hpp b/TactonPlayer/Tacton.hpp index 31cf631..a076135 100644 --- a/TactonPlayer/Tacton.hpp +++ b/TactonPlayer/Tacton.hpp @@ -24,6 +24,7 @@ class EXPORTED Tacton { public: + Tacton(); //creates a tacton using the raw data format //6 bytes per frame : //1 for the pattern @@ -46,6 +47,9 @@ class EXPORTED Tacton Tacton(const Tacton &t); ~Tacton(); + //assignment overload + Tacton &operator = (const Tacton &t); + //changes the pattern using raw format void setPattern(char pattern); void setPattern(unsigned int frame, char pattern);