diff --git a/cpp/csp/core/BasicAllocator.h b/cpp/csp/core/BasicAllocator.h index da3aac792..029518a7c 100644 --- a/cpp/csp/core/BasicAllocator.h +++ b/cpp/csp/core/BasicAllocator.h @@ -15,7 +15,7 @@ namespace csp { // Extremely basic non-thread safe fixed-size allocator -class BasicAllocator +class CSP_PUBLIC BasicAllocator { public: //elemsize is size of a single alloc, blockSize is number of elements to diff --git a/cpp/csp/core/DynamicBitSet.h b/cpp/csp/core/DynamicBitSet.h index 5fb120f06..eb4a950fc 100644 --- a/cpp/csp/core/DynamicBitSet.h +++ b/cpp/csp/core/DynamicBitSet.h @@ -9,7 +9,7 @@ namespace csp { template -class DynamicBitSet +class CSP_PUBLIC DynamicBitSet { public: diff --git a/cpp/csp/core/Enum.h b/cpp/csp/core/Enum.h index aac11fd5d..428dadee2 100644 --- a/cpp/csp/core/Enum.h +++ b/cpp/csp/core/Enum.h @@ -73,7 +73,7 @@ bool UnknownOnInvalidValue(long) { return false; } START_PACKED template -struct Enum : public EnumTraits +struct CSP_PUBLIC Enum : public EnumTraits { using EnumV = typename EnumTraits::_enum; using Mapping = std::vector; diff --git a/cpp/csp/core/EnumBitSet.h b/cpp/csp/core/EnumBitSet.h index 660681029..49c0fdac5 100644 --- a/cpp/csp/core/EnumBitSet.h +++ b/cpp/csp/core/EnumBitSet.h @@ -1,6 +1,8 @@ #ifndef _IN_CSP_CORE_ENUMBITSET_H #define _IN_CSP_CORE_ENUMBITSET_H +#include + #include #include #include @@ -12,7 +14,7 @@ namespace csp //Utility class to hold enums as a bitmask ( where enum values are incremental from 0 ) //enum must have a NUM_TYPES entry for number of entries template< typename EnumT > -class EnumBitSet +class CSP_PUBLIC EnumBitSet { using value_type = uint64_t; diff --git a/cpp/csp/core/Generator.h b/cpp/csp/core/Generator.h index 8f33eaddf..fabd1e8ec 100644 --- a/cpp/csp/core/Generator.h +++ b/cpp/csp/core/Generator.h @@ -1,12 +1,13 @@ #ifndef _IN_CSP_CORE_GENERATOR_H #define _IN_CSP_CORE_GENERATOR_H +#include #include namespace csp { template< typename V, typename ...Args > -class Generator +class CSP_PUBLIC Generator { public: using Ptr = std::shared_ptr>; diff --git a/cpp/csp/core/QueueWaiter.h b/cpp/csp/core/QueueWaiter.h index 307930cd5..d8d40bb81 100644 --- a/cpp/csp/core/QueueWaiter.h +++ b/cpp/csp/core/QueueWaiter.h @@ -1,17 +1,20 @@ #ifndef _IN_CSP_CORE_QUEUEBLOCKINGWAIT_H #define _IN_CSP_CORE_QUEUEBLOCKINGWAIT_H +#include +#include +#include + #include #include -#include -#include + namespace csp { class TimeDelta; -class QueueWaiter +class CSP_PUBLIC QueueWaiter { public: QueueWaiter() : m_eventsPending( false ) diff --git a/cpp/csp/core/SRMWLockFreeQueue.h b/cpp/csp/core/SRMWLockFreeQueue.h index 902c8a364..23a05592b 100644 --- a/cpp/csp/core/SRMWLockFreeQueue.h +++ b/cpp/csp/core/SRMWLockFreeQueue.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_CORE_SRMWLOCKFREEQUEUE_H #define _IN_CSP_CORE_SRMWLOCKFREEQUEUE_H +#include #include #include #include @@ -14,7 +15,7 @@ namespace csp one of the simplest! template type is required to have an intrinsic next pointer */ template< typename T > -class alignas(CACHELINE_SIZE) SRMWLockFreeQueue +class alignas(CACHELINE_SIZE) CSP_PUBLIC SRMWLockFreeQueue { public: class Batch diff --git a/cpp/csp/core/TaggedPointerUnion.h b/cpp/csp/core/TaggedPointerUnion.h index 43a41a85f..358bc1744 100644 --- a/cpp/csp/core/TaggedPointerUnion.h +++ b/cpp/csp/core/TaggedPointerUnion.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_CORE_TAGGEDPOINTERUNION_H #define _IN_CSP_CORE_TAGGEDPOINTERUNION_H +#include #include namespace csp @@ -25,7 +26,7 @@ struct IndexOf > template -class TaggedPointerUnion +class CSP_PUBLIC TaggedPointerUnion { public: static inline constexpr size_t NUM_TAGS = sizeof...(Ts); diff --git a/cpp/csp/core/Time.h b/cpp/csp/core/Time.h index f2e73d990..70e8d2f70 100644 --- a/cpp/csp/core/Time.h +++ b/cpp/csp/core/Time.h @@ -21,7 +21,7 @@ const int64_t NANOS_PER_SECOND = 1000000000; const int64_t SECONDS_PER_DAY = 86400; const int64_t NANOS_PER_DAY = NANOS_PER_SECOND * SECONDS_PER_DAY; -class TimeDelta +class CSP_PUBLIC TimeDelta { public: constexpr TimeDelta() : TimeDelta( TimeDelta::NONE() ) {} @@ -165,7 +165,7 @@ inline std::ostream & operator <<( std::ostream &os, const TimeDelta & d ) return os; } -class Date +class CSP_PUBLIC Date { public: Date() : Date( NONE() ) {} @@ -316,7 +316,7 @@ inline std::ostream & operator <<( std::ostream &os, const Date & d ) return os; } -class Time +class CSP_PUBLIC Time { public: Time() : Time( -1 ) {} //NONE @@ -446,7 +446,7 @@ inline std::ostream & operator <<( std::ostream &os, const Time & t ) // Time is internally stored as an int64_t nanoseconds since 1970. // All DateTime objects are stored as UTC and should be treated as such -class DateTime +class CSP_PUBLIC DateTime { public: DateTime() : DateTime( DateTime::NONE() ) {} @@ -597,7 +597,7 @@ inline std::ostream & operator <<( std::ostream &os, const DateTime & dt ) //Helper class to extract day/month/year/etc info from raw timestamp //ie DateTimeEx dte( existingDt ) //dte.day, etc etc -class DateTimeEx : public DateTime +class CSP_PUBLIC DateTimeEx : public DateTime { public: DateTimeEx( const DateTime & dt ); diff --git a/cpp/csp/engine/AdapterManager.h b/cpp/csp/engine/AdapterManager.h index fd71126c9..52e243965 100644 --- a/cpp/csp/engine/AdapterManager.h +++ b/cpp/csp/engine/AdapterManager.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ADAPTER_MANAGER_H #define _IN_CSP_ADAPTER_MANAGER_H +#include #include #include #include @@ -16,7 +17,7 @@ class AdapterManager; class Engine; -class ManagedSimInputAdapter : public InputAdapter +class CSP_PUBLIC ManagedSimInputAdapter : public InputAdapter { public: ManagedSimInputAdapter( csp::Engine *engine, const CspTypePtr &type, AdapterManager *manager, PushMode pushMode ); diff --git a/cpp/csp/engine/AlarmInputAdapter.h b/cpp/csp/engine/AlarmInputAdapter.h index 28b70f704..f0428bac9 100644 --- a/cpp/csp/engine/AlarmInputAdapter.h +++ b/cpp/csp/engine/AlarmInputAdapter.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ENGINE_ALARMINPUTADAPTER_H #define _IN_CSP_ENGINE_ALARMINPUTADAPTER_H +#include #include #include @@ -8,7 +9,7 @@ namespace csp { template -class AlarmInputAdapter final : public InputAdapter +class CSP_PUBLIC AlarmInputAdapter final : public InputAdapter { public: AlarmInputAdapter( Engine * engine, CspTypePtr & type ) : InputAdapter( engine, type, PushMode::NON_COLLAPSING ) diff --git a/cpp/csp/engine/BasketInfo.h b/cpp/csp/engine/BasketInfo.h index 4fa50cb8a..cd4da8a0b 100644 --- a/cpp/csp/engine/BasketInfo.h +++ b/cpp/csp/engine/BasketInfo.h @@ -2,6 +2,7 @@ #define _IN_CSP_ENGINE_BASKETINFO_H #include +#include #include #include #include @@ -12,7 +13,7 @@ namespace csp class Node; -class InputBasketInfo +class CSP_PUBLIC InputBasketInfo { using TickedInputs = std::vector; @@ -188,7 +189,7 @@ class InputBasketInfo bool m_isDynamic; }; -class DynamicInputBasketInfo : public InputBasketInfo +class CSP_PUBLIC DynamicInputBasketInfo : public InputBasketInfo { public: using ChangeCallback = std::function; @@ -227,7 +228,7 @@ class DynamicInputBasketInfo : public InputBasketInfo TimeDelta m_timeWindowPolicy; }; -class OutputBasketInfo +class CSP_PUBLIC OutputBasketInfo { public: OutputBasketInfo( CspTypePtr & type, Node * node, size_t size, bool isDynamic = false ); @@ -254,7 +255,7 @@ class OutputBasketInfo bool m_isDynamic; }; -class DynamicOutputBasketInfo : public OutputBasketInfo +class CSP_PUBLIC DynamicOutputBasketInfo : public OutputBasketInfo { public: DynamicOutputBasketInfo( CspTypePtr & type, Node * node ); diff --git a/cpp/csp/engine/Consumer.h b/cpp/csp/engine/Consumer.h index f9d2bc7c6..22bcc077d 100644 --- a/cpp/csp/engine/Consumer.h +++ b/cpp/csp/engine/Consumer.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ENGINE_CONSUMER_H #define _IN_CSP_ENGINE_CONSUMER_H +#include #include #include #include @@ -13,7 +14,7 @@ namespace csp class InputAdapter; //Base of either regular Nodes or output adapters -class Consumer +class CSP_PUBLIC Consumer { public: Consumer( Engine * ); diff --git a/cpp/csp/engine/CppNode.h b/cpp/csp/engine/CppNode.h index f4d33f58e..22a7a0a0c 100644 --- a/cpp/csp/engine/CppNode.h +++ b/cpp/csp/engine/CppNode.h @@ -13,7 +13,7 @@ namespace csp //CppNode is used specifically for C++ defined Nodes, and should only be used //for definig c++ nodes using the macros defined at the end -class CppNode : public csp::Node +class CSP_PUBLIC CppNode : public csp::Node { public: using Shape = std::variant>; diff --git a/cpp/csp/engine/CspEnum.h b/cpp/csp/engine/CspEnum.h index 93f083369..05e236c7f 100644 --- a/cpp/csp/engine/CspEnum.h +++ b/cpp/csp/engine/CspEnum.h @@ -3,6 +3,7 @@ #include #include +#include #include #include #include @@ -14,7 +15,7 @@ namespace csp class CspEnumMeta; -class CspEnumInstance +class CSP_PUBLIC CspEnumInstance { public: CspEnumInstance( std::string name, int64_t value, csp::CspEnumMeta * meta ) : m_name( name ), m_value( value ), m_meta( meta ) {} @@ -34,7 +35,7 @@ class CspEnumInstance //As an optimization we do NOT attach meta or value to every instance of an enum. Instead, the enum //holds only a pointer to a singleton CspEnumInstance, which holds the value, name, and meta pointer. -class CspEnum +class CSP_PUBLIC CspEnum { public: CspEnum(); @@ -58,7 +59,7 @@ class CspEnum std::ostream &operator<<( std::ostream &os, const CspEnum & rhs ); -class CspEnumMeta +class CSP_PUBLIC CspEnumMeta { public: using ValueDef = std::unordered_map; diff --git a/cpp/csp/engine/CspType.h b/cpp/csp/engine/CspType.h index b85ab4148..c3c070bbf 100644 --- a/cpp/csp/engine/CspType.h +++ b/cpp/csp/engine/CspType.h @@ -2,6 +2,7 @@ #define _IN_CSP_ENGINE_CSPTYPE_H #include +#include #include #include #include @@ -14,7 +15,7 @@ namespace csp class CspStringType; -class CspType +class CSP_PUBLIC CspType { public: @@ -115,7 +116,7 @@ class CspType Type m_type; }; -class CspStringType : public CspType +class CSP_PUBLIC CspStringType : public CspType { public: CspStringType(bool isBytes) @@ -134,7 +135,7 @@ class CspEnum; class CspEnumMeta; -class CspEnumType : public CspType +class CSP_PUBLIC CspEnumType : public CspType { public: CspEnumType( std::shared_ptr & meta ) : CspType( CspType::Type::ENUM ), @@ -154,7 +155,7 @@ using StructPtr = TypedStructPtr; class StructMeta; -class CspStructType : public CspType +class CSP_PUBLIC CspStructType : public CspType { public: CspStructType( const std::shared_ptr & meta ) : CspType( CspType::Type::STRUCT ), @@ -167,7 +168,7 @@ class CspStructType : public CspType std::shared_ptr m_meta; }; -class CspArrayType : public CspType +class CSP_PUBLIC CspArrayType : public CspType { public: CspArrayType( CspTypePtr elemType, bool isPyStructFastList = false ) : diff --git a/cpp/csp/engine/CycleStepTable.h b/cpp/csp/engine/CycleStepTable.h index 8605a7c2e..435377646 100644 --- a/cpp/csp/engine/CycleStepTable.h +++ b/cpp/csp/engine/CycleStepTable.h @@ -2,6 +2,7 @@ #define _IN_CSP_ENGINE_CYCLESTEPTABLE_H #include +#include #include #include @@ -11,7 +12,7 @@ namespace csp class Consumer; class Profiler; -class CycleStepTable +class CSP_PUBLIC CycleStepTable { public: CycleStepTable(); diff --git a/cpp/csp/engine/Dictionary.h b/cpp/csp/engine/Dictionary.h index 1e7a2c82a..faf6193f6 100644 --- a/cpp/csp/engine/Dictionary.h +++ b/cpp/csp/engine/Dictionary.h @@ -2,6 +2,7 @@ #define _IN_CSP_CORE_DICTIONARY_H #include +#include #include #include #include @@ -22,7 +23,7 @@ using DictionaryPtr = std::shared_ptr; class StructMeta; using StructMetaPtr = std::shared_ptr; -class Dictionary +class CSP_PUBLIC Dictionary { public: struct Data; diff --git a/cpp/csp/engine/DynamicEngine.h b/cpp/csp/engine/DynamicEngine.h index e45392c6d..aa2b4130b 100644 --- a/cpp/csp/engine/DynamicEngine.h +++ b/cpp/csp/engine/DynamicEngine.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ENGINE_DYNAMICENGINE_H #define _IN_CSP_ENGINE_DYNAMICENGINE_H +#include #include #include #include @@ -9,7 +10,7 @@ namespace csp { -class DynamicEngine final : public Engine +class CSP_PUBLIC DynamicEngine final : public Engine { public: using ShutdownFn = std::function; diff --git a/cpp/csp/engine/DynamicNode.h b/cpp/csp/engine/DynamicNode.h index 3ad3711a6..6434cf26c 100644 --- a/cpp/csp/engine/DynamicNode.h +++ b/cpp/csp/engine/DynamicNode.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ENGINE_DYNAMIC_H #define _IN_CSP_ENGINE_DYNAMIC_H +#include #include #include #include @@ -17,7 +18,7 @@ class DynamicEngine; //external inputs and triggering a cycle step. //All dynamic engine input adapters as well as all external timeseries wired into dynamic are registered as inputs //into the DynanicNode instance so that it can invoke cycle step at the appropriate times. -class DynamicNode final : public Node +class CSP_PUBLIC DynamicNode final : public Node { public: using Outputs = std::vector; diff --git a/cpp/csp/engine/Engine.h b/cpp/csp/engine/Engine.h index ed8799625..23afb256a 100644 --- a/cpp/csp/engine/Engine.h +++ b/cpp/csp/engine/Engine.h @@ -2,6 +2,7 @@ #define _IN_CSP_ENGINE_ENGINE_H #include +#include #include #include #include @@ -23,7 +24,7 @@ class TimeSeriesProvider; class Engine; class RootEngine; -struct EngineOwned +struct CSP_PUBLIC EngineOwned { //force objects derived from EngineOwned to go through engine createOwnedObject methods //little trick here to force all derivations to fail @@ -34,7 +35,7 @@ struct EngineOwned void operator delete( void* ptr ) { ::operator delete(ptr); } }; -class Engine +class CSP_PUBLIC Engine { using AdapterManagers = std::vector>; using InputAdapters = std::vector>; diff --git a/cpp/csp/engine/Enums.h b/cpp/csp/engine/Enums.h index 9581ba0e0..0a45bb28d 100644 --- a/cpp/csp/engine/Enums.h +++ b/cpp/csp/engine/Enums.h @@ -2,12 +2,13 @@ #define _IN_CSP_ENGINE_ENUMS_H #include +#include namespace csp { // NOTE this must align with the python side Enum definition /// -struct PushModeTraits +struct CSP_PUBLIC PushModeTraits { enum _enum : unsigned char { diff --git a/cpp/csp/engine/EventPropagator.h b/cpp/csp/engine/EventPropagator.h index 3627d6b5f..77e45ca4c 100644 --- a/cpp/csp/engine/EventPropagator.h +++ b/cpp/csp/engine/EventPropagator.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ENGINE_EVENTPROPAGATOR_H #define _IN_CSP_ENGINE_EVENTPROPAGATOR_H +#include #include #include @@ -9,7 +10,7 @@ namespace csp class Consumer; -class EventPropagator +class CSP_PUBLIC EventPropagator { public: EventPropagator(); diff --git a/cpp/csp/engine/Feedback.h b/cpp/csp/engine/Feedback.h index ae02925aa..c8a128a5b 100644 --- a/cpp/csp/engine/Feedback.h +++ b/cpp/csp/engine/Feedback.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ENGINE_FEEDBACK_H #define _IN_CSP_ENGINE_FEEDBACK_H +#include #include #include @@ -11,7 +12,7 @@ template class FeedbackInputAdapter; template -class FeedbackOutputAdapter final : public OutputAdapter +class CSP_PUBLIC FeedbackOutputAdapter final : public OutputAdapter { public: FeedbackOutputAdapter( csp::Engine * engine, diff --git a/cpp/csp/engine/GraphOutputAdapter.h b/cpp/csp/engine/GraphOutputAdapter.h index c160f9d1a..14e869361 100644 --- a/cpp/csp/engine/GraphOutputAdapter.h +++ b/cpp/csp/engine/GraphOutputAdapter.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ENGINE_GRAPHOUTPUTADAPTER_H #define _IN_CSP_ENGINE_GRAPHOUTPUTADAPTER_H +#include #include #include @@ -14,7 +15,7 @@ namespace csp //GraphOutputAdapters are also special in that they are registered in both a dynamic engine and the root engine as sahred_ptr. They make it into root //so that the root processes them at the end of the csp.run call ( dynamics could be shutdown by then ). We also register in root //to ensure we dont hit key clashses. -class GraphOutputAdapter : public OutputAdapter, public std::enable_shared_from_this +class CSP_PUBLIC GraphOutputAdapter : public OutputAdapter, public std::enable_shared_from_this { public: GraphOutputAdapter( csp::Engine * engine, int32_t tickCount, TimeDelta tickHistory ); diff --git a/cpp/csp/engine/InputAdapter.h b/cpp/csp/engine/InputAdapter.h index f992d6ff2..462000f2c 100644 --- a/cpp/csp/engine/InputAdapter.h +++ b/cpp/csp/engine/InputAdapter.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ENGINE_INPUTADAPTER_H #define _IN_CSP_ENGINE_INPUTADAPTER_H +#include #include #include #include @@ -11,7 +12,7 @@ namespace csp class Consumer; -class InputAdapter : public TimeSeriesProvider, public EngineOwned +class CSP_PUBLIC InputAdapter : public TimeSeriesProvider, public EngineOwned { public: InputAdapter( Engine * engine, const CspTypePtr & type, PushMode pushMode ); diff --git a/cpp/csp/engine/Node.h b/cpp/csp/engine/Node.h index 23ab37a4d..73bbaadb3 100644 --- a/cpp/csp/engine/Node.h +++ b/cpp/csp/engine/Node.h @@ -2,6 +2,7 @@ #define _IN_CSP_ENGINE_NODE_H #include +#include #include #include #include @@ -24,7 +25,7 @@ struct NodeDef INOUT_ID_TYPE numOutputs; }; -class Node : public Consumer, public EngineOwned +class CSP_PUBLIC Node : public Consumer, public EngineOwned { public: Node( NodeDef def, Engine * ); diff --git a/cpp/csp/engine/OutputAdapter.h b/cpp/csp/engine/OutputAdapter.h index 7a3f1040d..53c993f1d 100644 --- a/cpp/csp/engine/OutputAdapter.h +++ b/cpp/csp/engine/OutputAdapter.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ENGINE_OUTPUTADAPTER_H #define _IN_CSP_ENGINE_OUTPUTADAPTER_H +#include #include #include @@ -9,7 +10,7 @@ namespace csp class TimeSeriesProvider; -class OutputAdapter : public Consumer, public EngineOwned +class CSP_PUBLIC OutputAdapter : public Consumer, public EngineOwned { public: OutputAdapter( csp::Engine * engine ); diff --git a/cpp/csp/engine/PendingPushEvents.h b/cpp/csp/engine/PendingPushEvents.h index 5036e7fd2..95b43e43b 100644 --- a/cpp/csp/engine/PendingPushEvents.h +++ b/cpp/csp/engine/PendingPushEvents.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ENGINE_PENDINGPUSHEVENTS_H #define _IN_CSP_ENGINE_PENDINGPUSHEVENTS_H +#include #include #include @@ -10,7 +11,7 @@ namespace csp struct PushGroup; class PushInputAdapters; -class PendingPushEvents +class CSP_PUBLIC PendingPushEvents { public: PendingPushEvents(); diff --git a/cpp/csp/engine/Profiler.h b/cpp/csp/engine/Profiler.h index 6fb5dfee8..71044aba8 100644 --- a/cpp/csp/engine/Profiler.h +++ b/cpp/csp/engine/Profiler.h @@ -13,7 +13,7 @@ namespace csp { -class Profiler +class CSP_PUBLIC Profiler { // All times are returned as doubles representing time in seconds diff --git a/cpp/csp/engine/PullInputAdapter.h b/cpp/csp/engine/PullInputAdapter.h index 5da071e23..455e21aa0 100644 --- a/cpp/csp/engine/PullInputAdapter.h +++ b/cpp/csp/engine/PullInputAdapter.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ENGINE_PULLINPUTADAPTER_H #define _IN_CSP_ENGINE_PULLINPUTADAPTER_H +#include #include #include #include @@ -9,7 +10,7 @@ namespace csp { template -class PullInputAdapter : public InputAdapter +class CSP_PUBLIC PullInputAdapter : public InputAdapter { public: PullInputAdapter( Engine * engine, CspTypePtr & type, PushMode pushMode ) : InputAdapter( engine, type, pushMode ) diff --git a/cpp/csp/engine/PushEvent.h b/cpp/csp/engine/PushEvent.h index bc16c024d..6e75ce7e0 100644 --- a/cpp/csp/engine/PushEvent.h +++ b/cpp/csp/engine/PushEvent.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ENGINE_PUSHEVENT_H #define _IN_CSP_ENGINE_PUSHEVENT_H +#include #include namespace csp @@ -8,7 +9,7 @@ namespace csp class PushInputAdapter; -struct PushEvent +struct CSP_PUBLIC PushEvent { PushEvent( PushInputAdapter *adapter ) : m_adapter( adapter ), next( nullptr ) {} diff --git a/cpp/csp/engine/PushInputAdapter.h b/cpp/csp/engine/PushInputAdapter.h index 665962a7a..d17233a19 100644 --- a/cpp/csp/engine/PushInputAdapter.h +++ b/cpp/csp/engine/PushInputAdapter.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ENGINE_PUSHINPUTADAPTER_H #define _IN_CSP_ENGINE_PUSHINPUTADAPTER_H +#include #include #include #include @@ -75,7 +76,7 @@ class PushBatch : public SRMWLockFreeQueue::Batch PushGroup * m_group; //used for assertion check }; -class PushInputAdapter : public InputAdapter +class CSP_PUBLIC PushInputAdapter : public InputAdapter { public: PushInputAdapter( Engine * engine, CspTypePtr & type, PushMode pushMode, diff --git a/cpp/csp/engine/PushPullInputAdapter.h b/cpp/csp/engine/PushPullInputAdapter.h index 2cd46bee7..2f08da998 100644 --- a/cpp/csp/engine/PushPullInputAdapter.h +++ b/cpp/csp/engine/PushPullInputAdapter.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ENGINE_PUSHPULLINPUTADAPTER_H #define _IN_CSP_ENGINE_PUSHPULLINPUTADAPTER_H +#include #include #include @@ -9,7 +10,7 @@ namespace csp //A variation of PushInputAdapter that lets you schedule historical data as well. Used for adapters //that can replay history and switch to realtime seamlessly ( ie kafka ) -class PushPullInputAdapter : public PushInputAdapter +class CSP_PUBLIC PushPullInputAdapter : public PushInputAdapter { public: PushPullInputAdapter( Engine * engine, CspTypePtr & type, PushMode pushMode, diff --git a/cpp/csp/engine/RootEngine.h b/cpp/csp/engine/RootEngine.h index 746704580..d8c10be7b 100644 --- a/cpp/csp/engine/RootEngine.h +++ b/cpp/csp/engine/RootEngine.h @@ -2,6 +2,7 @@ #define _IN_CSP_ENGINE_ROOTENGINE_H #include +#include #include #include #include @@ -33,7 +34,7 @@ class EndCycleListener bool m_dirty = false; }; -class RootEngine : public Engine +class CSP_PUBLIC RootEngine : public Engine { using PushEventQueue = SRMWLockFreeQueue; diff --git a/cpp/csp/engine/Scheduler.h b/cpp/csp/engine/Scheduler.h index 96efc2c58..438c489a6 100644 --- a/cpp/csp/engine/Scheduler.h +++ b/cpp/csp/engine/Scheduler.h @@ -2,6 +2,7 @@ #define _IN_CSP_ENGINE_SCHEDULER_H #include +#include #include #include #include @@ -14,7 +15,7 @@ namespace csp class InputAdapter; -class Scheduler +class CSP_PUBLIC Scheduler { struct Event; diff --git a/cpp/csp/engine/StatusAdapter.h b/cpp/csp/engine/StatusAdapter.h index f243c7c70..aebacc3f6 100644 --- a/cpp/csp/engine/StatusAdapter.h +++ b/cpp/csp/engine/StatusAdapter.h @@ -1,6 +1,7 @@ #ifndef _IN_CSP_ADAPTERS_STATUSADAPTER_H #define _IN_CSP_ADAPTERS_STATUSADAPTER_H +#include #include #include @@ -29,7 +30,7 @@ struct StatusLevelTraits using StatusLevel = csp::Enum; -class StatusAdapter : public PushInputAdapter +class CSP_PUBLIC StatusAdapter : public PushInputAdapter { public: StatusAdapter( Engine * engine, CspTypePtr & type, PushMode pushMode, PushGroup * group = nullptr ) : PushInputAdapter( engine, type, pushMode, group ) diff --git a/cpp/csp/engine/Struct.h b/cpp/csp/engine/Struct.h index 1b09cb97b..692ad842e 100644 --- a/cpp/csp/engine/Struct.h +++ b/cpp/csp/engine/Struct.h @@ -2,6 +2,7 @@ #define _IN_CSP_ENGINE_STRUCT_H #include +#include #include #include #include @@ -18,7 +19,7 @@ class TypedStructPtr; using StructPtr = TypedStructPtr; -class StructField +class CSP_PUBLIC StructField { public: @@ -113,7 +114,7 @@ class StructField using StructFieldPtr = std::shared_ptr; template -class NativeStructField : public StructField +class CSP_PUBLIC NativeStructField : public StructField { static_assert( CspType::Type::fromCType::type <= CspType::Type::MAX_NATIVE_TYPE ); static_assert( sizeof(T) == alignof(T) ); @@ -176,7 +177,7 @@ using TimeDeltaStructField = NativeStructField; using DateStructField = NativeStructField; using TimeStructField = NativeStructField