WSF
ScriptMessage.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI//REL TO USA ONLY
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11#ifndef L16_SCRIPTMESSAGE_HPP
12#define L16_SCRIPTMESSAGE_HPP
13
14#include <list>
15
16#include "UtScriptBasicTypes.hpp"
17#include "UtScriptClass.hpp"
18
19namespace WsfL16
20{
21namespace Messages
22{
23class Base;
24class ContinuationBase;
25class ExtensionBase;
26class InitialBase;
27class MessageAccessorType;
28
29class MessageScriptClass : public UtScriptClass
30{
31public:
32 MessageScriptClass(const std::string& aClassName, UtScriptTypes* aTypesPtr, MessageAccessorType* aAccessor);
33 ~MessageScriptClass() override;
34
35 void Destroy(void* aObjectPtr) override;
36
37 virtual void CreateAccessors(UtScriptTypes* aTypesPtr);
38
39protected:
42};
43
45{
46public:
47 MessageInitialScriptClass(const std::string& aClassName,
48 UtScriptTypes* aTypesPtr,
49 Messages::InitialBase* aMessagePrototype = nullptr);
51 void* Create(const UtScriptContext& aContext) override;
52 void* Clone(void* aObjectPtr) override;
53
55 UT_DECLARE_SCRIPT_METHOD(SourceTrackNumber);
56
57private:
58 Messages::InitialBase* mMessagePrototype;
59 std::list<MessageScriptClass*> mSubWordScriptClasses;
60};
61
63{
64public:
65 MessageContinuationScriptClass(const std::string& aClassName,
66 UtScriptTypes* aTypesPtr,
67 std::unique_ptr<ContinuationBase> aMessagePrototype = nullptr);
68 ~MessageContinuationScriptClass() override = default;
69 void* Create(const UtScriptContext& aContext) override;
70 void* Clone(void* aObjectPtr) override;
71
72private:
73 std::unique_ptr<ContinuationBase> mMessagePrototype;
74};
75
77{
78public:
79 MessageExtensionScriptClass(const std::string& aClassName,
80 UtScriptTypes* aTypesPtr,
81 std::unique_ptr<ExtensionBase> aMessagePrototype = nullptr);
82 ~MessageExtensionScriptClass() override = default;
83 void* Create(const UtScriptContext& aContext) override;
84 void* Clone(void* aObjectPtr) override;
85
86private:
87 std::unique_ptr<ExtensionBase> mMessagePrototype;
88};
89
90class FieldSetterInterface : public UtScriptClass::InterfaceMethod
91{
92public:
93 FieldSetterInterface(UtScriptClass* aParentPtr, const std::string& aName, MessageAccessorType* aAccessor, int aFieldIndex);
94 void operator()(UtScriptExecutor* aExecutorPtr,
95 UtScriptContext& aContext,
96 const UtScriptRef& aReference,
97 UtScriptMethodArgs aVarArgs,
98 UtScriptData& aReturnVal) override;
99
100private:
101 MessageAccessorType* mAccessor;
102 int mFieldIndex;
103};
104
105class FieldGetterInterface : public UtScriptClass::InterfaceMethod
106{
107public:
108 FieldGetterInterface(UtScriptClass* aParentPtr, const std::string& aName, MessageAccessorType* aAccessor, int aFieldIndex);
109
110 void operator()(UtScriptExecutor* aExecutorPtr,
111 UtScriptContext& aContext,
112 const UtScriptRef& aReference,
113 UtScriptMethodArgs aVarArgs,
114 UtScriptData& aReturnVal) override;
115
116private:
117 MessageAccessorType* mAccessor;
118 int mFieldIndex;
119};
120
121} // namespace Messages
122} // namespace WsfL16
123#endif
ut::script::Data UtScriptData
Definition WsfScriptContext.hpp:47
FieldGetterInterface(UtScriptClass *aParentPtr, const std::string &aName, MessageAccessorType *aAccessor, int aFieldIndex)
Definition ScriptMessage.cpp:232
void operator()(UtScriptExecutor *aExecutorPtr, UtScriptContext &aContext, const UtScriptRef &aReference, UtScriptMethodArgs aVarArgs, UtScriptData &aReturnVal) override
Definition ScriptMessage.cpp:243
void operator()(UtScriptExecutor *aExecutorPtr, UtScriptContext &aContext, const UtScriptRef &aReference, UtScriptMethodArgs aVarArgs, UtScriptData &aReturnVal) override
Definition ScriptMessage.cpp:217
FieldSetterInterface(UtScriptClass *aParentPtr, const std::string &aName, MessageAccessorType *aAccessor, int aFieldIndex)
Definition ScriptMessage.cpp:203
Definition MessageAccessor.hpp:80
MessageContinuationScriptClass(const std::string &aClassName, UtScriptTypes *aTypesPtr, std::unique_ptr< ContinuationBase > aMessagePrototype=nullptr)
Definition ScriptMessage.cpp:383
void * Create(const UtScriptContext &aContext) override
Definition ScriptMessage.cpp:404
void * Clone(void *aObjectPtr) override
Definition ScriptMessage.cpp:409
MessageExtensionScriptClass(const std::string &aClassName, UtScriptTypes *aTypesPtr, std::unique_ptr< ExtensionBase > aMessagePrototype=nullptr)
Definition ScriptMessage.cpp:414
void * Clone(void *aObjectPtr) override
Definition ScriptMessage.cpp:439
void * Create(const UtScriptContext &aContext) override
Definition ScriptMessage.cpp:434
MessageInitialScriptClass(const std::string &aClassName, UtScriptTypes *aTypesPtr, Messages::InitialBase *aMessagePrototype=nullptr)
Definition ScriptMessage.cpp:282
void * Clone(void *aObjectPtr) override
Definition ScriptMessage.cpp:367
void * Create(const UtScriptContext &aContext) override
Definition ScriptMessage.cpp:362
void Destroy(void *aObjectPtr) override
Definition ScriptMessage.cpp:275
MessageScriptClass(const std::string &aClassName, UtScriptTypes *aTypesPtr, MessageAccessorType *aAccessor)
Definition ScriptMessage.cpp:257
MessageAccessorType * mAccessor
Definition ScriptMessage.hpp:41
virtual void CreateAccessors(UtScriptTypes *aTypesPtr)
Definition ScriptMessage.cpp:263
int mAddingFieldIndex
Definition ScriptMessage.hpp:40
Definition ComputerPart.hpp:45
This file should be included prior to defining a message. Currently there is a limit of 32 fields per...
Definition AllMessages.hpp:55
Copyrights Multiple, All Rights Reserved