• 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
  • CDP C++ Classes
  • 5.0.0

CDP Runtime License Credits

CDP C++ Classes

Namespaces

CDP

Contains CDP implementation classes

CDP::StudioAPI

Contains StudioAPI implementation classes

ServerIO

Contains ServerIO implementation classes

Classes

CDPAlarm

Alarm class is used to generate alarm-events based on signals or component state.

CDPException

The base class for exceptions used in the CDP system

CDPParameter

Used for persistent values (parameters) that seldom change

Application

CDP Application main component. Creates and starts all other CDP components, and performs periodic maintenance tasks.

CDPBuilder

Creates CDPObject, CDPComponent, CDPOperator and CDPNode instances

CDPBaseObject

The base-class for all objects that need a Property-database and optional message-handling

CDPComponent

The base class for a standard component in the CDP system, but can also be used as a container during the configuration of an application. It is a CDPObject with a state machine, message handling, signals for real-time data, alarms and configuration properties

CDPConnector

Handles communication with a CDPComponent or CDPObject

CDPEnum

CDP Enum is a class to hold enums as string/value pairs

CDPObject

Base class for all addressable objects in CDP

CDPPort

Used to gather related values into a single data object similar to a structure in programming languages

CDPProperty

Representing primitive named value as a string or a numeric type. It implements base real-time value propagation and optionally event-based value propagation in CDP applications for all other value types such as CDPSignal, CDPParameter, Argument, etc. except for CDPSetting and as such, the CDPSetting is not supported by the CDP Routing system as a value source or destination

CDPPropertyBase

Base class for working with CDPProperty<T> pointers

MessageArgument

is a class used to add configurable Message receive and send capability to Operators and Components

CDPEngine

Runs CDPComponents and CDPOperators and delivers messages to all objects with registered object Handle in this application

ApplicationConnector

Connected application list item with message sending capability. This class is used by Messenger

Messenger

Connects to other CDP Applications, and sends/receives all CDP messages to/from other applications

PortDEMUX

Component is a demultiplexer for CDPPort objects where Index=0 selects the first output port and propagates the connection or data from the input port to the selected output port

PortMUX

Component is a multiplexer for CDPPort objects where Index=0 selects the first input port and propagates the connection or data to the output port

Sine

Component is a simple sine signal generator

IIRFilter

The 1st order IIR low-pass filter. Implements the difference equation:

Integrator

Integrator class produces an integral of the input signal

RateLimitedFilter

Rate limited output nonlinear filter

CDPThreadPool

Used to manage a pool of threads for executing tasks concurrently

CDPUtils

Utility like free functions for all around use

Document

Used to list URLs that describe a CDP Component

FIFOBuffer

A FIFO buffer using a circular buffer with head and tail indices

MessagePacket

Encapsulates a message and its transport header, along with various methods for managing and accessing the message data

MessagePacketHandle

Represents a handle to a message packet

MessageReusePool

Custom pool to reuse packets for example when large packets are needed in application

IOServer

A base class for IOServers

MessengerIOServer

Handles transfer of signals and properties between applications

CDP::IO::NetworkTransport

Base functionality for UDPTransport and TCPTransport. It handles the following properties as read from the configuration:

CDP::IO::SerialTransport

Base functionality for communicating using a serialport. It handles the following properties, as read from the configuration file:

ServerIO::ACDPBaseChannel

Template base class, exposing channel-methods for converting values from to CDP data source

ServerIO::CDPPropertyChannel

Template-class is ACDPBaseChannel implementation based on CDPProperty

ServerIO::CDPPropertyChannelFactory

Used to create a CDPPropertyChannel of specified type

ServerIO::CDPSignalChannel

Template-class is an ACDPBaseChannel<> implementation based on CDPSignal

ServerIO::CDPSignalChannelFactory

Used to create a CDPSignalChannel of specified type

ServerIO::ChangeValidatorSupport

Has a list of IChangeValidators that is iterated on each value change in channel

ServerIO::ChannelManager

Can be used to synchronize ICDPChannel classes between User/Worker thread and CDPProcess where the CDP class (like CDPSignal, CDPProperty) for channel implementation is created

ServerIO::ComponentStateChannel

Template-class is ACDPBaseChannel implementation using CDPConnector

ServerIO::ComponentStateChannelFactory

Used to create a ComponentStateChannel of specified type

ServerIO::DeltaValidatorSendTrigger

Class that implements the Equals(), NotEquals() and Revert() functions from IChangeValidator-class

ServerIO::ICDPChannel

Exposes methods from a channel that we expect to be on a CDP class based single type value converting channel from to CDP data source or sink like CDPSignal

ServerIO::IChangeValidator

May be used on each value change in channel. The Validate()-function decides if the new value is accepted or not

ServerIO::IChannel

Exposes methods from a channel that can be used by IOServer implementation to convert to from IOServer raw packets to some CDP based implementation of the channel

ServerIO::ISendTrigger

Interface class used for trig sending, e.g. when a routed property has an edge (change from true to false or from false to true). ISendOnPropertyChange is a typedef for ISendTrigger

ServerIO::IWakeFunctor

Generic wake functor for IOServers to provide a way to wake them from the ISendTrigger implementer FlagForSend() call. See IOServer::RegisterSendOnChangeWakeCall()

ServerIO::RPCClient

Generic RPC (remote procedure call) binary-message-based service client

ServerIO::RPCServer

Generic RPC (remote procedure call) binary-message-based server class to be used in RPC service implementers

ServerIO::Translator::TranslatorBase

Translator abstract class. Derived classes have to implement Translate() for ostream (for compose) and/or for istream (for parse). Derived classes can override MimeType() to inform translator users (IOServers) about MIME type that the class is generating or parsing

ServerIO::Translator::TranslatorChannel

TranslatorChannel<T> class is inherited from TranslatorChannelBase class. TranslatorChannel composes ICDPChannel pointer and can be used for threadsafe and valuemapped channel value access in Translators. During construction overrides given ICDPChannel internal data pointer (syncValue)

ServerIO::Translator::TranslatorChannelBase

Type-less base class for TranslatorChannel<T>. Defines virtual functions to be implemented in derived (typed) classes for setting and getting channel synced values

ServerIO::Translator::TranslatorChannelGroup

Abstract class represents TranslatorChannel channel-tree used by Translators for translating channel values to/from streams. Eash TranslatorChannelGroup is actually a subtree by holding: a) vector of TranslatorChannels and b) vector of subrees (TranslatorChannelGroups) Inherited class must implement OwnerName() and GetDebugLevel()

ServerIO::Translator::ValueMap

Holds ChannelValue <-> StreamValue valuemap property pair

ServerIO::Translator::ValueMapBase

Type-less base class for ValueMap<T>

ServerIO::Translator::ValueMapper

Instance is used for thread-safe and fast valuemap access in Translators. Uses templated class ValueMapperType<T> to actually implement maps and code for every CDP Channel type. ValueMapper will be created based on ValueMap vector reference using Update(vector<ValueMapBase*>) method

CDP::IO::TCPTransport

Class used to simplify the handling of configurable TCP communication in an IOServer

CDP::IO::Transport

Class used to simplify the handling of configurable communication in an IOServer. It provides methods to configure itself from XML, and it has functions to Read() and Write() data

CDP::IO::UDPTransport

Class used to simplify the handling of configurable UDP communication in an IOServer

CDPNetwork

Has some initialization-functions which are called during application startup, regarding MAC addresses and socket-initialization. CDPNetwork also has some conversion functions and static helper-functions

EthernetManager

Manages the IP interfaces to the ethernet

IpAddress

IpAddress: int32 ip address with name, string, subnetmask, port and MAC address

Url

Extends ipaddress to store extra information like port, protocol etc

TCPConnection

Represents a Transmission Control Protocol (TCP) connection

TCPException

Exception thrown by TCPConnection class in case an error happens during TCP connection handling or data transferring

UdpReceive

This class implements code to receive UDP/IP packets

UdpSend

UDP/IP socket. Sends generic udp packets to a specified port on a specified IP address

UdpSendReceive

Class for sending and receiving generic udp packets using one socket

OSAPIEvent

Synchronisation semaphore based on event

OSAPIEventWithFd

Windows and Linux conformant event which is listened to by calling poll() or select() on the caller thread

OSAPIMutex

Used for simple mutual exclusion

OSAPIMutexLocker

Used for handling automatic unlocking of a mutex when it goes out of scope

OSAPISemaphore

Counting semaphore for synchronisation

OSAPITask

Wraps a thread/task running in the process space of the application

OSAPIThread

Used to run code in a new thread

ThreadInfo

Contains information about the thread

ThreadInfoManager

Enables users to output thread information

Serial

This is the serial communication class

SerialLinux

Implements the Serial interface on Linux

SerialNT

Implements the Serial interface on Win32

CDPParameterTimer

CDPTimer with timeout specified as CDPParameter parameter This object behaves as a CDPParameter and a CDPTimer at the same time. It should be used as a CDPTimer object except that the timeout value should be set in the configuration instead of being hardcoded

CDPTime

Holds time and date in double and string format

CDPParameterTimerMs

CDPTimerMs with timeout specified as CDPParameter parameter. This object behaves as a CDPParameter and a CDPTimerMs at the same time. It should be used as a CDPTimerMs object except that the timeout value should be set in the configuration instead of being hardcoded

CDPTimerMs

Used instead of CDPTimer where the time delay is longer than 1 ms and the resolution is longer than 1 ms

CDPRampTimer

Used to get a scaled time-value between 0 and 1 (double value)

CDPTimer

Real-time timer for delay and time monitoring

CDPTimerCounting

Timer based on counting

OSAPIOneShotTimer

High-resolution one-shot timer, based on OSAPIPeriodicTimer.

OSAPIPeriodicTimer

High-resolution timer for periodic thread scheduling

Argument

Simple routable value

ArgumentBase

Pure virtual base class inherited by class Argument

CDPOperator

An operator that can do operations on CDPObject properties etc

CDPOperatorBase

The base class of CDPOperator

CDPSignal

Class used for propagating real-time values between components using CDP Routing mechanism

CDP::StudioAPI::CDPNode

Base class for all classes exposed through StudioAPI

CDP::StudioAPI::CDPValueTypeConverter

CDPValueType converter class

CDP::StudioAPI::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

CDP::StudioAPI::AbsorbedChild

Wrapper class to absorbe a composited node into parent during serialization

CDP::StudioAPI::AdoptedChild

Used as a wrapper class to relocate a node in logical tree from its parent during serialization

CDP::StudioAPI::NodeStream

Helper class abstracting node serialization

CDP Runtime License Credits

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