Common Tools & Definitions - C++ Utilities

The following C++ utilities are provided by the CTD Package:

  • “ifw/ctd/cpp/defines”: Constant definitions of common nature. For instance, definitions of variable data types, used in the context of the ELT ICS (CII).
  • “ifw/ctd/cpp/string”: Small tools to facilitate string manipulation.
  • “ifw/ctd/cpp/conversion”: Tools to convert between various type representations.
  • “ifw/ctd/cpp/system”: Contains small ‘system level’ tools, e.g. to for obtaining time stamps, obtaining information about the OS platform, generating unique IDs, generating random numbers, fail safe mutex semaphore, and more.
  • “ifw/ctd/cpp/time”: Contains utilities to handle time related aspects, like generating ISO 8601 timestamps.
  • “ifw/ctd/cpp/param”: Tools to handle parameters.
  • “ifw/ctd/cpp/file”: Provides small tools for handling files, for instance a function to locate files in the ELT ICS directory structure. Also provides a parameter set class to handle parameter files, and a specialization for YAML.

The following, Python utilities are provided by the CTD Package:

  • “ifw/ctd/python/packages/ctdUtils”: Various convenience functions, e.g. a function to locate files in the ICS directory structure.
  • “ifw/ctd/python/packages/ctdOpcua”: Provides an SCXML driven/OPC UA server toolkit and an OPC UA client toolkit.
  • “ifw/ctd/python/programs/opcuaClient”: OPC UA client command line tool to commnicate with OPC UA servers, mostly dedicated to interact with servers based on the CTD OPC UA Server toolkit.
  • “ifw/ctd/python/packages/opcuaGenProfile”: Command line utility to generate OPC UA XML profile documents from a simple/compact (YAML based) format, listing the application namespace.

C++ Modules

Module: “ifw/ctd/cpp/defines”

Namespace: “ctd::defines”.

Library: “ifwCtdDef”.

Header file: “ctd/defines/defines.hpp”.

Provides various basic definitions of constants and a few convenience functions.

“ctd::defines” doxygen documentation.

Module: “ifw/ctd/cpp/string”

Namespace: “ctd::string”.

Library: “ifwCtdString”.

Header file: “ctd/string/string.hpp”.

Provides small convenience tools for string manipulation.

“ctd::string” doxygen documentation.

Module: “ifw/ctd/cpp/conversion”

Namespace: “ctd::conversion”.

Library: “ifwCtdConv”.

Header file: “ctd/conversion/conversion.hpp”.

Provides utilites to convert between different data types.

“ctd::conversion” doxygen documentation.

Module: “ifw/ctd/cpp/system”

Namespace: “ctd::system”.

Library: “ifwCtdSys”.

Header file: “ctd/system/system.hpp”.

Provides various system level utilities (functions) and a scope based mutex semaphore class.

Doxygen documentation:

“ctd::system” doxygen documentation.

Module: “ifw/ctd/cpp/time”

Namespace: “ctd::time”.

Library: “ifwCtdTime”.

Header file: “ctd/time/time.hpp”.

Provides small convenience functions for dealing with time aspects, e.g. generating ISO 8601 time stamps.

Doxygen documentation:

“ctd::time” doxygen documentation.

Module: “ifw/ctd/cpp/param”

Namespace: “ctd::param”.

Library: “ifwCtdParam”.

Header files:

  • “ctd/param/Parameter.hpp”: Contains class to handle one parameter.
  • “ctd/param/ParameterSet.hpp”: Contains class to handle a set of parameter class instances.

Provides two classes for handling parameter files in a generic way.

Note: This module is under evaluation. During the porting of ICS to CII, it will be evaluated whether to keep this.

“ctd::param” doxygen documentation.

Module: “ifw/ctd/cpp/file”

Namespace: “ctd::file”.

Library: “ifwCtdFile”.

Header files:

  • “ctd/file/file.hpp”: Defines various constants to be used in the context of the ICS directory structure. Moreover, various utilities to handle files and filenames, e.g. a tool for locating files in the ICS directory structure.
  • “ctd/file/ParameterFile.hpp”: Provides a class, “ParameterFile”, based on “ctd::param::ParameterSet” to handle parameter files in a simple ASCII format.
  • “ctd/file/Yaml.hpp”: Provides a class, based on “ctd::param::ParameterSet”, to handle YAML files in the ICS directory structure.

Note: It is under consideration to provide a class, which transparently can handle YAML and JSON files transparently. This will be assessed in connection with the porting to CII.

“ctd::file” doxygen documentation.