Add default constructor for Tacton, as well as operator =
authorThomas Pietrzak <thomas.pietrzak@gmail.com>
Fri, 15 Feb 2013 13:59:10 +0000 (13:59 +0000)
committerThomas Pietrzak <thomas.pietrzak@gmail.com>
Fri, 15 Feb 2013 13:59:10 +0000 (13:59 +0000)
git-svn-id: svn+ssh://thomaspietrzak.com/var/svn/rep@103 47cf9a05-e0a8-4ed5-9e9b-101a649bc004

TactonDebug/MagicCircle/magiccircle.cpp
TactonLibrary.suo
TactonPlayer/Tacton.cpp
TactonPlayer/Tacton.hpp

index 8b883c716431f7e00c17fa3217efda82b5102027..6ea4475d95315a6cdb52d6b0f97dceadf430286f 100644 (file)
@@ -7,7 +7,7 @@ MagicCircle::MagicCircle(QWidget *parent, Qt::WFlags flags)
 {\r
        try\r
        {\r
-               _tactonPlayer = new TactonPlayer("COM4");\r
+               _tactonPlayer = new TactonPlayer("COM8");\r
        }\r
        catch(...)\r
        {\r
index e92b0b2091cc3699787f9f3a8785a6d624dd46db..f9c1b39bcf1a5037b9eddc1a1a8b4bd883cd3379 100644 (file)
Binary files a/TactonLibrary.suo and b/TactonLibrary.suo differ
index 64745b92191310e9abf8c1af545c7c85d550ab04..60c47af7f6529e8d123bf18bd4e1dab904a18bea 100644 (file)
@@ -3,6 +3,11 @@
 #include <cstring>\r
 #include <cstdlib>\r
 \r
+Tacton::Tacton()\r
+:_nbframes(0), _patterns(NULL), _durations(NULL), _frequencies(NULL), _amplitudes(NULL)\r
+{\r
+}\r
+\r
 Tacton::Tacton(unsigned int nbframes, unsigned char *desc)\r
 :_nbframes(nbframes), _patterns(new unsigned char[nbframes]), _durations(new unsigned int[nbframes]), _frequencies(new unsigned int[nbframes]), _amplitudes(new unsigned char[nbframes])\r
 {\r
@@ -101,20 +106,74 @@ Tacton::Tacton(const char *pattern, unsigned int duration, unsigned int frequenc
 }\r
 \r
 Tacton::Tacton(const Tacton &t)\r
-:_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])\r
+:_nbframes(t._nbframes)\r
 {\r
-       memcpy(_patterns, t._patterns, t._nbframes * sizeof(unsigned char));\r
-       memcpy(_durations, t._durations, t._nbframes * sizeof(unsigned int));\r
-       memcpy(_frequencies, t._frequencies, t._nbframes * sizeof(unsigned int));\r
-       memcpy(_amplitudes, t._amplitudes, t._nbframes * sizeof(unsigned char));\r
+       if (_nbframes > 0)\r
+       {\r
+               _patterns = new unsigned char[t._nbframes];\r
+               memcpy(_patterns, t._patterns, t._nbframes * sizeof(unsigned char));\r
+               _durations = new unsigned int[t._nbframes];\r
+               memcpy(_durations, t._durations, t._nbframes * sizeof(unsigned int));\r
+               _frequencies = new unsigned int[t._nbframes];\r
+               memcpy(_frequencies, t._frequencies, t._nbframes * sizeof(unsigned int));\r
+               _amplitudes = new unsigned char[t._nbframes];\r
+               memcpy(_amplitudes, t._amplitudes, t._nbframes * sizeof(unsigned char));\r
+       }\r
+       else\r
+       {\r
+               _patterns = NULL;\r
+               _durations = NULL;\r
+               _frequencies = NULL;\r
+               _amplitudes = NULL;\r
+       }\r
 }\r
 \r
 Tacton::~Tacton()\r
 {\r
-       delete []_patterns;\r
-       delete []_durations;\r
-       delete []_frequencies;\r
-       delete []_amplitudes;\r
+       if (_nbframes > 0)\r
+       {\r
+               delete []_patterns;\r
+               delete []_durations;\r
+               delete []_frequencies;\r
+               delete []_amplitudes;\r
+       }\r
+}\r
+\r
+Tacton &Tacton::operator = (const Tacton &t)\r
+{\r
+       if (&t == this)\r
+               return *this;\r
+\r
+       if (_nbframes > 0)\r
+       {\r
+               delete []_patterns;\r
+               delete []_durations;\r
+               delete []_frequencies;\r
+               delete []_amplitudes;\r
+       }\r
+\r
+       _nbframes = t.getNbFrames();\r
+\r
+       if (_nbframes > 0)\r
+       {\r
+               _patterns = new unsigned char[t._nbframes];\r
+               memcpy(_patterns, t._patterns, t._nbframes * sizeof(unsigned char));\r
+               _durations = new unsigned int[t._nbframes];\r
+               memcpy(_durations, t._durations, t._nbframes * sizeof(unsigned int));\r
+               _frequencies = new unsigned int[t._nbframes];\r
+               memcpy(_frequencies, t._frequencies, t._nbframes * sizeof(unsigned int));\r
+               _amplitudes = new unsigned char[t._nbframes];\r
+               memcpy(_amplitudes, t._amplitudes, t._nbframes * sizeof(unsigned char));\r
+       }\r
+       else\r
+       {\r
+               _patterns = NULL;\r
+               _durations = NULL;\r
+               _frequencies = NULL;\r
+               _amplitudes = NULL;\r
+       }\r
+\r
+       return *this;\r
 }\r
 \r
 const unsigned int Tacton::getNbFrames() const\r
index 31cf63155c5ed31677203a0301edb9ee1e639598..a0761354783c2f4a5cd9bedee4a8a22289633941 100644 (file)
@@ -24,6 +24,7 @@
 class EXPORTED Tacton \r
 {\r
        public:\r
+               Tacton();\r
                //creates a tacton using the raw data format\r
                //6 bytes per frame : \r
                //1 for the pattern\r
@@ -46,6 +47,9 @@ class EXPORTED Tacton
                Tacton(const Tacton &t);\r
                ~Tacton();\r
 \r
+               //assignment overload\r
+               Tacton &operator = (const Tacton &t);\r
+\r
                //changes the pattern using raw format\r
                void setPattern(char pattern);\r
                void setPattern(unsigned int frame, char pattern);\r