Program Listing for File event.cpp

Return to documentation for file (src/cue/event.cpp)

/*
 *
 * Event.cpp - Base class for Show events.
 */
#include "../cue/cuecontroller.h"
#include "event.h"

using namespace PixelMaestro;

namespace PixelMaestro {
    Event::Event(uint32_t time, uint8_t* cue) {
        set_time(time);
        set_cue(cue);
    }

    Event::Event(const Event& other) {
        set_cue(other.cue_);
        this->time_ = other.time_;
    }

    Event& Event::operator=(const Event& other) {
        set_cue(other.cue_);
        this->time_ = other.time_;
        return *this;
    }

    uint8_t* Event::get_cue() const {
        return cue_;
    }

    uint32_t Event::get_time() const {
        return time_;
    }

    bool Event::operator ==(const Event& other) {
        bool match = false;

        if (other.get_time() == this->time_) {
            uint32_t size = IntByteConvert::byte_to_uint32(&other.get_cue()[(uint8_t)CueController::Byte::SizeByte1]);
            for (uint32_t i = 0; i < size; i++) {
                if (other.get_cue()[i] != cue_[i]) {
                    return match;
                }
            }

            match = true;
        }

        return match;
    }

    void Event::set_cue(uint8_t* cue) {
        delete [] this->cue_;

        uint32_t size = IntByteConvert::byte_to_uint32(&cue[(uint8_t)CueController::Byte::SizeByte1]);
        this->cue_ = new uint8_t[size];
        for (uint32_t i = 0; i < size; i++) {
            this->cue_[i] = cue[i];
        }
    }

    void Event::set_time(uint32_t time) {
        this->time_ = time;
    }

    Event::~Event() {
        delete[] cue_;
    }
}