/* Distributed under the Apache License, Version 2.0.
   See accompanying NOTICE file for details.*/

#pragma once
#include "cdm/circuit/SECircuit.h"
#include "cdm/circuit/fluid/SEFluidCircuitNode.h"
#include "cdm/circuit/fluid/SEFluidCircuitPath.h"

class SECircuitManager;

class CDM_DECL SEFluidCircuit : public SECircuit<SEFluidCircuitNode, SEFluidCircuitPath>
{
  friend class PBCircuit;//friend the serialization class
  friend class SECircuitManager;
protected:
  SEFluidCircuit(const std::string& name, SECircuitManager& mgr);
public:
  virtual ~SEFluidCircuit();

  SEFluidCircuitNode& CreateNode(const std::string& name);
  SEFluidCircuitPath& CreatePath(SEFluidCircuitNode& src, SEFluidCircuitNode& tgt, const std::string& name);

  void AddCircuit(SEFluidCircuit& circuit);

protected:
  SECircuitManager& m_Mgr;
};
