Program Listing for File SubEnvironmentData.h

Return to documentation for file (include/flamegpu/model/SubEnvironmentData.h)

#ifndef INCLUDE_FLAMEGPU_MODEL_SUBENVIRONMENTDATA_H_
#define INCLUDE_FLAMEGPU_MODEL_SUBENVIRONMENTDATA_H_

#include <memory>
#include <string>
#include <unordered_map>

namespace flamegpu {

struct ModelData;
struct SubModelData;
struct EnvironmentData;
class SubEnvironmentDescription;

struct SubEnvironmentData : std::enable_shared_from_this<SubEnvironmentData> {
    friend class SubEnvironmentDescription;
    friend class SubModelDescription;
    friend struct ModelData;
    std::weak_ptr<const ModelData> model;
    std::weak_ptr<EnvironmentData> subEnvironment;
    std::weak_ptr<EnvironmentData> masterEnvironment;
    typedef std::unordered_map<std::string, std::string> Mapping;
    Mapping properties;
    Mapping macro_properties;
    Mapping directed_graphs;
    std::weak_ptr<SubModelData> parent;
    bool operator==(const SubEnvironmentData& rhs) const;
    bool operator!=(const SubEnvironmentData& rhs) const;
    SubEnvironmentData(const SubEnvironmentData &other) = delete;

 protected:
    explicit SubEnvironmentData(std::shared_ptr<const ModelData> model, const std::shared_ptr<SubModelData> &parent, const SubEnvironmentData &other);
    explicit SubEnvironmentData(std::shared_ptr<const ModelData> model, const std::shared_ptr<SubModelData> &_parent, const std::shared_ptr<EnvironmentData> &subEnv);
};

}  // namespace flamegpu

#endif  // INCLUDE_FLAMEGPU_MODEL_SUBENVIRONMENTDATA_H_