HydroCouple  2.0.0-alpha.1
HydroCouple Interface Definitions
Loading...
Searching...
No Matches
hydrocouple.h File Reference

Core interface definitions for the HydroCouple component-based modeling framework. More...

#include <string>
#include <array>
#include <vector>
#include <span>
#include <cstdint>
#include <functional>
#include <list>
#include <set>
#include <memory>
#include <typeinfo>
#include <unordered_map>
Include dependency graph for hydrocouple.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  HydroCouple::BufferDescriptor
 BufferDescriptor describes a typed, possibly strided, possibly device-resident multi-dimensional array. It is the sole currency of field data exchange. More...
 
struct  HydroCouple::ErrorEntry
 ErrorEntry is one diagnostic record in a component's error queue. More...
 
class  HydroCouple::ISlot< Args >
 ISlot interface class must be implemented by classes that want to listen to signals. More...
 
class  HydroCouple::ISignal< Args >
 Forward declarations. More...
 
class  HydroCouple::IPropertyChanged
 IPropertyChanged interface is used to emit signal/event when a property of an object changes. More...
 
class  HydroCouple::IDescription
 IDescription interface class provides descriptive information on a HydroCouple object. More...
 
class  HydroCouple::IIdentity
 IIdentity interface class defines a method to get the Id of an HydroCouple entity. More...
 
class  HydroCouple::IComponentInfo
 IComponentInfo interface class is a factory that provides detailed metadata about a component and creates new instances of a component. More...
 
class  HydroCouple::ILicensedComponent
 ILicensedComponent is an optional side interface for components that require license validation. More...
 
class  HydroCouple::IUIProvider
 IUIProvider is an optional side interface for entities that can present a graphical editor and/or viewer. More...
 
class  HydroCouple::IModelComponentInfo
 IModelComponentInfo interface inherits from the IComponentInfo interface which provides detailed metadata about an IModelComponent. Additionally, it creates new instances of a component. More...
 
class  HydroCouple::IModelComponent
 IModelComponent interface is the core interface in the HydroCouple standard defining a model component. More...
 
class  HydroCouple::IComponentStatusChangeEventArgs
 The IComponentStatusChangeEventArgs contains the information that will be passed when the IModelComponent fires a signal. More...
 
class  HydroCouple::ICloneableModelComponent
 The ICloneableModelComponent class is an IModelComponent that supports deep cloning of itself and its configuration. More...
 
class  HydroCouple::ICheckpointableModelComponent
 ICheckpointableModelComponent is an IModelComponent that can save and restore its complete simulation state. More...
 
class  HydroCouple::IValueDefinition
 IValueDefinition describes the type and properties of values returned by IComponentDataItem::getValue() and related methods. More...
 
class  HydroCouple::IDimension
 IDimension provides the properties of the dimensions of a variable. More...
 
class  HydroCouple::IQuality
 IQuality describes qualitative data, where a value is specified as one category within a number of predefined (possible) categories. These categories can be ordered or not. More...
 
class  HydroCouple::IUnitDimensions
 Defines the order of dimension in each FundamentalDimension for a unit. More...
 
class  HydroCouple::IUnit
 IUnit interface, describing the physical unit of a IQuantity. More...
 
class  HydroCouple::IQuantity
 IQuantity specifies values as an amount of some unit, usually as a floating point number. More...
 
class  HydroCouple::IComponentDataItem
 IComponentDataItem is a fundamental unit of data for a component. More...
 
class  HydroCouple::IComponentDataItemValueChanged
 IComponentDataItemValueChanged interface class used to notify when the values of a IComponentDataItem change. More...
 
class  HydroCouple::IArgument
 IArgument interface class used to set the arguments for components. They can be complex or simple multi-dimensional datasets. More...
 
class  HydroCouple::IExchangeItemChangeEventArgs
 The IExchangeItemChangeEventArgs contains the information that will be passed when the IComponentItem fires the componentItemChanged signal. More...
 
class  HydroCouple::IExchangeItem
 IExchangeItem the base data item the can be exchanged between components at runtime. More...
 
class  HydroCouple::IOutput
 An output exchange item that can deliver values from an IModelComponent. More...
 
class  HydroCouple::IAdaptedOutput
 An IAdaptedOutput adds one or more data operations on top of an IOutput. More...
 
class  HydroCouple::IAdaptedOutputFactory
 IAdaptedOutputFactory is used to create instances of IAdaptedOutput. More...
 
class  HydroCouple::IAdaptedOutputFactoryComponentInfo
 IAdaptedOutputFactoryComponentInfo interface class provides information about an IAdaptedOutputFactoryComponent. More...
 
class  HydroCouple::IAdaptedOutputFactoryComponent
 IAdaptedOutputFactoryComponent is an IAdaptedOutputFactory generated from an IAdaptedOutputFactoryComponentInfo. More...
 
class  HydroCouple::IInput
 An IInput item that can accept values for an IModelComponent. More...
 
class  HydroCouple::IMultiInput
 The IMultiInput class is an IInput class that has multiple outputs supplying data to it. More...
 
class  HydroCouple::IIdBasedComponentDataItem
 IIdBasedComponentDataItem is an IComponentDataItem whose data is indexed by string identifiers. More...
 
class  HydroCouple::IWorkflowComponentInfo
 IWorkflowComponentInfo provides metadata about an IWorkflowComponent and creates new instances of it. More...
 
class  HydroCouple::IWorkflowComponent
 IWorkflowComponent manages the execution workflow for a set of coupled IModelComponent instances. More...
 
class  HydroCouple::IWorkflowComponentStatusChangeEventArgs
 The IWorkflowComponentStatusChangeEventArgs contains the information that will be passed when the IWorkflowComponent fires a signal. More...
 

Namespaces

namespace  HydroCouple
 HydroCouple namespace contains the core interface specifications for the HydroCouple component-based modeling framework interface specification.
 

Enumerations

enum class  ByteOrder : uint8_t {
  BigEndian = 0 ,
  LittleEndian = 1
}
 The ByteOrder enum class indicates the byte order of serialized data. More...
 
enum class  HydroCouple::DataKind : uint8_t {
  HydroCouple::Unknown = 0 ,
  HydroCouple::Int8 ,
  HydroCouple::UInt8 ,
  HydroCouple::Int16 ,
  HydroCouple::UInt16 ,
  HydroCouple::Int32 ,
  HydroCouple::UInt32 ,
  HydroCouple::Int64 ,
  HydroCouple::UInt64 ,
  HydroCouple::Float32 ,
  HydroCouple::Float64 ,
  HydroCouple::Boolean ,
  HydroCouple::String ,
  HydroCouple::Opaque
}
 DataKind identifies the element type of a typed data buffer. More...
 
enum class  HydroCouple::MemorySpace : uint8_t {
  HydroCouple::Host = 0 ,
  HydroCouple::HostPinned ,
  HydroCouple::Device ,
  HydroCouple::Unified
}
 MemorySpace identifies where a buffer's bytes physically live. More...
 
enum class  HydroCouple::Capability : uint32_t {
  HydroCouple::DeviceBuffers = 0 ,
  HydroCouple::PartitionedData ,
  HydroCouple::DistributedExecution ,
  HydroCouple::Checkpointing ,
  HydroCouple::Cloneable ,
  HydroCouple::UserInterface ,
  HydroCouple::Licensing
}
 Capability identifies an optional behavior a component may support. More...
 

Variables

constexpr int HydroCouple::HYDROCOUPLE_ABI_VERSION = 2
 ABI version for the HydroCouple interface.
 

Detailed Description

Core interface definitions for the HydroCouple component-based modeling framework.

Author
Caleb Buahin caleb.nosp@m..bua.nosp@m.hin@g.nosp@m.mail.nosp@m..com
Version
2.0.0-alpha.1

This header file contains the core interface definitions for the HydroCouple component-based modeling framework. It defines the fundamental abstractions for model components, exchange items, signals/slots, value definitions, dimensions, arguments, and workflow management.

License\n
This file and its associated files and libraries are free software. You can redistribute them and/or modify them under the terms of the MIT License. They are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MIT License for details.
Date
2014-2026

Enumeration Type Documentation

◆ ByteOrder

enum class ByteOrder : uint8_t
strong

The ByteOrder enum class indicates the byte order of serialized data.

Enumerator
BigEndian 

BigEndian serialized data byte order (most significant byte first).

LittleEndian 

LittleEndian serialized data byte order (least significant byte first).