From 565dbea9607eaad307f249345c679a5c190506c6 Mon Sep 17 00:00:00 2001 From: Thomas Pietrzak Date: Fri, 15 Feb 2013 13:59:10 +0000 Subject: [PATCH] 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 --- TactonDebug/MagicCircle/magiccircle.cpp | 2 +- TactonLibrary.suo | Bin 28160 -> 28160 bytes TactonPlayer/Tacton.cpp | 77 +++++++++++++++++++++--- TactonPlayer/Tacton.hpp | 4 ++ 4 files changed, 73 insertions(+), 10 deletions(-) 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 e92b0b2091cc3699787f9f3a8785a6d624dd46db..f9c1b39bcf1a5037b9eddc1a1a8b4bd883cd3379 100644 GIT binary patch delta 854 zcmb_ZO-~b16rI=3v_)H>P}%@u3&EsRO4>5wlxo1*Hl|>yAAs^9t*r*gKnfy(pk$&U zVQY^Y6HWYDxG)O5r3On}NTLfcE=(XX@&nWbacA_6X-M7sZeDWlx#!+@?z_r1QMSpF z%s7NG+GnK;k&Jx z1W?P{C|}t|@Rs)qsMC9uu>1zXp5!!q$`aD1tUrsRPNn^>8@un2a zeix>tEhC#@?_khh2gScb9%8xYHXMCcvE63Kg2DMK8XLWmY zx6P=*yWMA)NH5?=qMrT??$aY_wd19fAaN+s9Ffu95vkaFmN{$zoC<{4 z64EQ3PqpTG&%2`VOrSV$@AG`AYwnGJT6;NN?~(-E@m@uy!-~0XE6sMlCfMoCB6DsL zp0fsW023D;ko)-o4w6Nj8CnpAS?^-3b=$BcD{u@N$RRu$2q2y`LK%~ahPezgj;q2} zUq4;#A17EH>|u>(@WO7D*F_=`fqx%5Q4!CowtEsWp}Pvr?P0bfS{sN8w!v z`h-_q1bGqkgL=B^$0ijB-Y9gJM0DY0c_9%L)UgoOMVGyY_wb(QdEe)}=e+VJl{e`^ zR7lYeJb(P~8-|1p9W@g|G~9o3!-i0Rgh60qsx^&{C8!283BHKw1D73kp zGW^kxVGZV6_sgCYuW+rRzcG%CxbNp0COgy$Ek=V(7M=xQ~)Rcr6tKbQipt-0YKWxVkw$0s76sa*ImP7A4iahbrE`LTK(lhFHm-2O8bd@`t zWnzWB)Fsx~%YA&4DtvWzudB>a>64^Nv7+wAL||mNR~m`O2V=u+Nip=cICY-l?YA1N>EgtT2HNmz6poyFTHmrvchBpOO$WXtNoCfl_>E z%|XIlh}#|;y4)9+POd678N7CHx@@Oft3a2h7+Y>DeSm8{Q`im{u&+|88q_~Yqmcax z)YSX3tb3P|?N_BdKEmD0rxsaim{%G`2j5P8*OXUId`WBSd_U+`A>We8RvVov(BKT4 z3BIKG*m4Iq+sBX>(Bf1}Dz=;SkXxs*aABI>#bWa<-h@fj%XI~;1kG58%E)Wis1I|b znbcw>RE4c82QlB~#J#Q)cw#ZK7on?^i_T&>Bq7#rWX6sr0dEG3vpsI;i~amJN-!Dr h@PZDd|F?*REqAXg|3^0nhf)x4?MJwvn9W7|=`R92AMOAE 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); -- 2.30.2