// This file is part of OpenCV project.1// It is subject to the license terms in the LICENSE file found in the top-level directory2// of this distribution and at http://opencv.org/license.html.3//4// Copyright (C) 2018 Intel Corporation567#ifndef OPENCV_GAPI_GNODE_HPP8#define OPENCV_GAPI_GNODE_HPP910#include <memory> // std::shared_ptr1112namespace cv {1314class GCall;1516// TODO Move "internal" namespace17// TODO Expose details?1819// This class won't be public2021// data GNode = Call Operation [GNode]22// | Const <T>23// | Param <GMat|GParam>2425class GNode26{27public:28class Priv;2930// Constructors31GNode(); // Empty (invalid) constructor32static GNode Call (const GCall &c); // Call constructor33static GNode Param(); // Param constructor34static GNode Const();3536// Internal use only37Priv& priv();38const Priv& priv() const;39enum class NodeShape: unsigned int;4041const NodeShape& shape() const;42const GCall& call() const;4344protected:45struct ParamTag {};46struct ConstTag {};4748explicit GNode(const GCall &c);49explicit GNode(ParamTag unused);50explicit GNode(ConstTag unused);5152std::shared_ptr<Priv> m_priv;53};5455}5657#endif // OPENCV_GAPI_GNODE_HPP585960