• 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
  • StudioAPI Namespace
  • 5.0.0

StudioAPI Namespace

(CDP::StudioAPI)

Contains StudioAPI implementation classes More...

Header: #include <StudioAPI>

Classes

class AbsorbedChild
class AdoptedChild
class CDPNode
class CDPValueTypeConverter
class CrossThreadValueNode
class ICDPNode
class NodeStream

Types

enum CDPNodeMode { eNodeIsLeaf, eValueIsPersistent, eValueIsReadOnly, eNodeIsRemovable, ..., eNodeIsIOServer }
typedef CDPNodeModeFlags
typedef CDPNodePermissionFlags
enum CDPNodePermissions { eNoAccess, eCanBrowse, eCanRead, eCanWrite, eCanWriteRolePermissions, eCanAddRemoveChildren }
enum CDPNodeType { eUNDEFINED_NODE, eCDP_SYSTEM_NODE, eCDP_APPLICATION_NODE, eCDP_COMPONENT_NODE, ..., eCDP_USERTYPE_NODE }
enum CDPValueType { eUNDEFINED, eDOUBLE, eUINT64, eINT64, ..., eVALUEUSERTYPE }
typedef NodeList

Functions

CDPNodePermissionFlags Permissions(const std::string &permissionString)
std::string Permissions(CDPNodePermissionFlags permissionFlags)

Detailed Description

Contains StudioAPI implementation classes

Classes

class AbsorbedChild

The AbsorbedChild is wrapper class to absorbe a composited node into parent during serialization. More...

class AdoptedChild

The AdoptedChild is used as a wrapper class to relocate a node in logical tree from its parent during serialization. More...

class CDPNode

The CDPNode is base class for all classes exposed through StudioAPI. More...

class CDPValueTypeConverter

The CDPValueTypeConverter is CDPValueType converter class. More...

class CrossThreadValueNode

A class for the cross-thread manipulatable value. Can be used in situations where a value needs to be manipulated (read and/or written) from a thread context. The shadow value of the node is created in the thread context and can be manipulated there. An addition, a thread context value copy is created for direct manipulation in the thread context and to determine if the thread context value has been changed and the change should be synced back to the node context. All value synchronization between the threads is done without mutexes - only using lockfree commands queues. More...

class ICDPNode

class NodeStream

The NodeStream is helper class abstracting node serialization. More...

Type Documentation

enum StudioAPI::CDPNodeMode

CDPNodeMode defines possible runtime node flags that indicate some node characteristics.

Note: CDP::StudioAPI::CDPNodeMode duplicates StudioAPI::Proto::PBInfo::Flags and should not be changed

ConstantValueDescription
CDP::StudioAPI::eNodeIsLeaf1<<0Node does not contain any other nodes.
CDP::StudioAPI::eValueIsPersistent1<<1Nodes value is stored on change to be persistent across application runs.
CDP::StudioAPI::eValueIsReadOnly1<<2Nodes value can not be changed.
CDP::StudioAPI::eNodeIsRemovable1<<3Node can be removed from its parent.
CDP::StudioAPI::eNodeCanAddChildren1<<4Node allows children to be added to itself.
CDP::StudioAPI::eNodeIsRenamable1<<5Node can be renamed.
CDP::StudioAPI::eNodeIsInternal1<<6Hint that node is part of internal implementation and should not be visible in UI.
CDP::StudioAPI::eNodeIsImportant1<<7Hint that node is important and should always be visible in UI.
CDP::StudioAPI::eValueIsNonSticky1<<8Node value has no meaning after the processing cycle is finished. Can be set to avoid meaningless syncing by the redundancy.
CDP::StudioAPI::eValueIsState1<<9Node value is not re-calculated in every cycle (or is calculated very occasionally) - i.e. it is a state or some sort of accumulated value (like integral). Can be set to force syncing by redundancy, regardless of the read-only flag set.
CDP::StudioAPI::eValueIsInputDerived1<<10Node is an output value in some parent node (e.g. in the operator) and it is calculated purely from the parent node input values (e.g. from the operator input arguments) and the calculation is 100% repeatable i.e. the same value will always be calculated when the parent input values remain the same. Can be set to avoid meaningless syncing by the redundancy when the value is residing in cyclically calculated block.
CDP::StudioAPI::eNodeIsIOServer1<<11Node is a block that directly communicates with IO. Among other things this instructs redundancy that the block should be excluded from synchronization.

typedef StudioAPI::CDPNodeModeFlags

Utilizes CDP::Generic::Flags<T> to create a type safe flags class from CDP::StudioAPI::CDPNodeMode.

typedef StudioAPI::CDPNodePermissionFlags

enum StudioAPI::CDPNodePermissions

enum StudioAPI::CDPNodeType

CDPNodeType defines possible node cdp base types. This indicates the closest CDP base class of the node.

Note: Duplicates StudioAPIProtobuf::CDPNodeType and should not be changed.

ConstantValueDescription
CDP::StudioAPI::eUNDEFINED_NODE-1Node type is not defined for uninitialized nodes.
CDP::StudioAPI::eCDP_SYSTEM_NODE0Node representing a system.
CDP::StudioAPI::eCDP_APPLICATION_NODE1Node representing a application in system.
CDP::StudioAPI::eCDP_COMPONENT_NODE2Node representing a component in application or in parent component.
CDP::StudioAPI::eCDP_OBJECT_NODE3Node representing a object in component or application.
CDP::StudioAPI::eCDP_MESSAGE_NODE4Node representing a message in object, component or application.
CDP::StudioAPI::eCDP_BASE_OBJECT_NODE5Node representing a baseobject in component or application.
CDP::StudioAPI::eCDP_PROPERTY_NODE6Node representing a property in baseobject, object, component or application.
CDP::StudioAPI::eCDP_SETTING_NODE7Node representing a setting in property.
CDP::StudioAPI::eCDP_ENUM_NODE8Node representing a enum.
CDP::StudioAPI::eCDP_OPERATOR_BASE_NODE9Node representing a operatorbase.
CDP::StudioAPI::eCDP_NODE10Node representing simplest node.
CDP::StudioAPI::eCDP_USERTYPE_NODE100Not to be used. Start of Protocol buffer extension values.

enum StudioAPI::CDPValueType

This enum CDPValueType defines possible node value types.

Note: Duplicates StudioAPIProtobuf::CDPValueType and should not be changed.

ConstantValueDescription
CDP::StudioAPI::eUNDEFINED0Value type for non value nodes.
CDP::StudioAPI::eDOUBLE1C++ double type used for high precision real numbers.
CDP::StudioAPI::eUINT642C++ uint64_t type used for 64 bit unsigned natural numbers.
CDP::StudioAPI::eINT643C++ int64_t type used for 64 bit signed natural numbers.
CDP::StudioAPI::eFLOAT4C++ float type type used for low precision real numbers.
CDP::StudioAPI::eUINT5C++ unsigned int type used for 32 bit unsigned natural numbers.
CDP::StudioAPI::eINT6C++ int type used for 32 bit signed natural numbers.
CDP::StudioAPI::eUSHORT7C++ unsigned short type used for 16 bit unsigned natural numbers.
CDP::StudioAPI::eSHORT8C++ short type used for 16 bit signed natural numbers.
CDP::StudioAPI::eUCHAR9C++ unsigned char type used for 8 bit unsigned natural numbers.
CDP::StudioAPI::eCHAR10C++ char type used for 8 bit signed natural numbers.
CDP::StudioAPI::eBOOL11C++ bool type used for 1 bit true/false values.
CDP::StudioAPI::eSTRING12C++ string type used for text values.
CDP::StudioAPI::eVALUEUSERTYPE100Not to be used. Start of Protocol buffer extension values.

typedef StudioAPI::NodeList

Function Documentation

CDPNodePermissionFlags StudioAPI::Permissions(const std::string &permissionString)

std::string StudioAPI::Permissions(CDPNodePermissionFlags permissionFlags)

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