• Skip to main content
  • Skip to header right navigation
  • Skip to site footer
CDP Studio logo

CDP Studio

The no-code and full-code software development tool for distributed control systems and HMI

  • Doc
  • Why CDP
    • Software developers
    • Automation engineers
    • Managers
  • Products
    • Automation Designer
    • HMI Designer
    • Maritime HMIs
  • Services
  • Use cases
  • Pricing
  • Try CDP

CDP Studio Documentation

  • Framework - CDP Core
  • ICDPNode
  • 5.0.0

ICDPNode Class

(CDP::StudioAPI::ICDPNode)
Inherited By:

CDP::StudioAPI::CDPNode

  • List of all members, including inherited members

Public Functions

virtual ~ICDPNode()
virtual bool AddChild(const std::string &name, const std::string &typeName, const std::string &configuration) = 0
virtual void FillNodeChildren(NodeStream &serializer) const = 0
virtual const ICDPNode *GetChild(const std::string &pathInParent) const
virtual std::vector<const ICDPNode *> GetChildren() const
virtual CDPNodePermissionFlags GetEffectivePermissionFlags(const std::shared_ptr<IAuthSession> &session) const
virtual std::shared_ptr<ICDPNodeAPI> GetNodeAPI() const = 0
virtual unsigned int GetNodeID() const = 0
virtual std::string GetNodeLongName() const
virtual CDPNodeModeFlags GetNodeModeFlags() const = 0
virtual const std::string GetNodeName() const = 0
virtual ICDPNode *GetNodeOwner() const = 0
virtual CDPNodeType GetNodeType() const = 0
virtual std::string GetNodeTypeName() const = 0
virtual CDPValueType GetNodeValueType() const = 0
virtual INodePermissions *GetPermissionHandler() const
virtual CDPVariantValue GetVariantValue() const = 0
virtual bool IsNodeAbsorbed() const = 0
virtual bool IsNodeLocal() const = 0
virtual bool IsNodeReparented() const = 0
virtual bool RemoveChild(const std::string &name) = 0
virtual void SetNodeOwner(ICDPNode *parent) const = 0
virtual void SetVariantValue(const CDPVariantValue &value) = 0

Member Function Documentation

[virtual] ICDPNode::~ICDPNode()

Destroys the instance of ICDPNode. The destructor is virtual.

[pure virtual] bool ICDPNode::AddChild(const std::string &name, const std::string &typeName, const std::string &configuration)

[pure virtual] void ICDPNode::FillNodeChildren(NodeStream &serializer) const

[virtual] const ICDPNode *ICDPNode::GetChild(const std::string &pathInParent) const

Returns a child node with a matching fullPath if it is published through the FillNodeChildren method.

Warning: CDPComponent children can run in a different thread context. It is not recommended to access them directly using this method (use instead a CDPConnector to send messages) but if you do, remember to lock the member access mutex:

auto child = GetChild("MyComponent");
if (child->GetNodeType() == CDP::StudioAPI::eCDP_COMPONENT_NODE)
{
    // Note: Consider using a CDPConnector instead of directly accessing a subcomponent pointer
    if (auto subcomponent = const_cast<CDPComponent*>(dynamic_cast<const CDPComponent*>(child)))
    {
        OSAPIMutexLocker lock(subcomponent->GetMemberAccessMutex());
        ProcessChild(subcomponent);
    }
}
else // Non-component children always run in my thread context
    ProcessChild(child);

[virtual] std::vector<const ICDPNode *> ICDPNode::GetChildren() const

Returns a list of child nodes published through the FillNodeChildren method.

Warning: CDPComponent children can run in a different thread context. It is not recommended to access them directly using this method (use instead a CDPConnector to send messages) but if you do, remember to lock the member access mutex:

for (auto child : GetChildren());
{
    if (child->GetNodeType() == CDP::StudioAPI::eCDP_COMPONENT_NODE)
    {
        if (auto subcomponent = const_cast<CDPComponent*>(dynamic_cast<const CDPComponent*>(child)))
        {
            // Note: Consider using a CDPConnector instead of directly accessing a subcomponent pointer
            OSAPIMutexLocker lock(subcomponent->GetMemberAccessMutex());
            ProcessChild(subcomponent);
        }
    }
    else // Non-component children always run in my thread context
        ProcessChild(child);
}

[virtual] CDPNodePermissionFlags ICDPNode::GetEffectivePermissionFlags(const std::shared_ptr<IAuthSession> &session) const

[pure virtual] std::shared_ptr<ICDPNodeAPI> ICDPNode::GetNodeAPI() const

[pure virtual] unsigned int ICDPNode::GetNodeID() const

[virtual] std::string ICDPNode::GetNodeLongName() const

Returns the full path of the node, e.g. "MyApp.MyComp.MyObject.MyNode".

[pure virtual] CDPNodeModeFlags ICDPNode::GetNodeModeFlags() const

[pure virtual] const std::string ICDPNode::GetNodeName() const

[pure virtual] ICDPNode *ICDPNode::GetNodeOwner() const

[pure virtual] CDPNodeType ICDPNode::GetNodeType() const

[pure virtual] std::string ICDPNode::GetNodeTypeName() const

[pure virtual] CDPValueType ICDPNode::GetNodeValueType() const

[virtual] INodePermissions *ICDPNode::GetPermissionHandler() const

[pure virtual] CDPVariantValue ICDPNode::GetVariantValue() const

[pure virtual] bool ICDPNode::IsNodeAbsorbed() const

[pure virtual] bool ICDPNode::IsNodeLocal() const

[pure virtual] bool ICDPNode::IsNodeReparented() const

[pure virtual] bool ICDPNode::RemoveChild(const std::string &name)

[pure virtual] void ICDPNode::SetNodeOwner(ICDPNode *parent) const

[pure virtual] void ICDPNode::SetVariantValue(const CDPVariantValue &value)

The content of this document is confidential information not to be published without the consent of CDP Technologies AS.

CDP Technologies AS, www.cdpstudio.com

Get started with CDP Studio today

Let us help you take your great ideas and turn them into the products your customer will love.

Try CDP Studio for free
Why CDP Studio?

CDP Technologies AS
Hundsværgata 8,
P.O. Box 144
6001 Ålesund, Norway

Tel: +47 990 80 900
E-mail: info@cdptech.com

Company

About CDP

Contact us

Services

Partners

Blog

Developers

Get started

User manuals

Support

Document download

Release notes

My account

Follow CDP

  • LinkedIn
  • YouTube
  • GitHub

© Copyright 2025 CDP Technologies. Privacy and cookie policy.

Return to top