Pyrogenesis HEAD
Pyrogenesis, a RTS Engine
Message.h
Go to the documentation of this file.
1/* Copyright (C) 2023 Wildfire Games.
2 * This file is part of 0 A.D.
3 *
4 * 0 A.D. is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * 0 A.D. is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef INCLUDED_MESSAGE
19#define INCLUDED_MESSAGE
20
22
23class ScriptRequest;
24
26{
28protected:
30public:
31 virtual ~CMessage() { }
32 virtual int GetType() const = 0;
33 virtual const char* GetScriptHandlerName() const = 0;
34 virtual const char* GetScriptGlobalHandlerName() const = 0;
35 virtual JS::Value ToJSVal(const ScriptRequest&) const = 0;
36 JS::Value ToJSValCached(const ScriptRequest&) const;
37private:
38 mutable std::unique_ptr<JS::PersistentRootedValue> m_Cached;
39};
40// TODO: GetType could be replaced with a plain member variable to avoid some
41// virtual calls, if that turns out to be worthwhile
42
43CMessage* CMessageFromJSVal(int mtid, const ScriptRequest&, JS::HandleValue);
44
45#endif // INCLUDED_MESSAGE
CMessage * CMessageFromJSVal(int mtid, const ScriptRequest &, JS::HandleValue)
Definition: MessageTypeConversions.cpp:546
Definition: Message.h:26
NONCOPYABLE(CMessage)
virtual int GetType() const =0
JS::Value ToJSValCached(const ScriptRequest &) const
Definition: MessageTypeConversions.cpp:51
virtual JS::Value ToJSVal(const ScriptRequest &) const =0
virtual const char * GetScriptHandlerName() const =0
CMessage()
Definition: Message.h:29
std::unique_ptr< JS::PersistentRootedValue > m_Cached
Definition: Message.h:38
virtual const char * GetScriptGlobalHandlerName() const =0
virtual ~CMessage()
Definition: Message.h:31
Spidermonkey maintains some 'local' state via the JSContext* object.
Definition: ScriptRequest.h:60