#pragma once

#include "sdkexport.h"
#include <string>
#include <vector>

namespace mpl {

namespace sdk {
class TypeConversions;
}

class MPL_API CompoundOperation {
public:
    CompoundOperation() = delete;
    ~CompoundOperation();
    CompoundOperation(const CompoundOperation&) = default;
    CompoundOperation& operator=(const CompoundOperation&) = default;
    CompoundOperation(CompoundOperation&&) = default;
    CompoundOperation& operator=(CompoundOperation&&) = default;
    
    unsigned getId() const;

    const std::string& getName() const;

    bool hasChildOperation() const;

    std::vector<unsigned> getChildOperationIds() const;
    
    std::string getComment() const;
    
    void setComment(const std::string& comment);

private:
    friend class sdk::TypeConversions;

    explicit CompoundOperation(void* impl);

    void* pImpl;
};

}
