
#pragma once

#include "TopoEntity.h"
#include "nlohmann/json.hpp"
#include "group.h"

using json = nlohmann::json;

class BoundaryGroup: public Group
{
public:
	BoundaryGroup(json, std::vector<std::shared_ptr<TopoEntity>>);
	BoundaryGroup();

	json getJson();

	bool isSubShapeOf(Group);

	void setDomain(std::shared_ptr<Group> dom);
	bool isIndefinite();
	void setIndefinite(bool);
	void clearDomains();
	void setIsindomain();
	bool getIsindomain();
	void unsetIsindomain();
private:
	bool is_indefinite;
	std::vector<std::shared_ptr<Group>> domains;
	bool isindomain;
};

typedef std::shared_ptr<BoundaryGroup> BoundaryGroup_;