1/****************************************************************************************
2
3 Copyright (C) 2015 Autodesk, Inc.
4 All rights reserved.
5
6 Use of this software is subject to the terms of the Autodesk license agreement
7 provided at the time of installation or download, or which otherwise accompanies
8 this software in either electronic or hard copy form.
9
10****************************************************************************************/
11
12//! \file fbxqueryevent.h
13#ifndef _FBXSDK_CORE_QUERY_EVENT_H_
14#define _FBXSDK_CORE_QUERY_EVENT_H_
15
16#include <fbxsdk/fbxsdk_def.h>
17
18#include <fbxsdk/core/fbxevent.h>
19
20#include <fbxsdk/fbxsdk_nsbegin.h>
21
22/** A query event is something that is emitted by an entity, with the goal of being filled by someone that listen to it.
23* You can see that like a form that you send to some people. If those people know how to fill the form, they fill it and return
24* it to you with the right information in it. A query event is emitted, and plug-in who are listening to that type of query,
25* fill the data that can be accessed by the query emitter.
26*/
27template <typename QueryT> class FbxQueryEvent : public FbxEvent<FbxQueryEvent<QueryT> >
28{
29public:
30 /**
31 *\name Public interface
32 */
33 //@{
34 /** Constructor.
35 * \param pData The requested data.
36 */
37 explicit FbxQueryEvent(QueryT* pData):mData(pData){}
38
39 /** Accessor to a mutable reference to the data. Event are usually const and can't be modified by listener.
40 * This special type of event can have is content modified via this accessor.
41 * \return A mutable reference the requested data.
42 */
43 QueryT& GetData()const { return *mData; }
44 //@}
45
46private:
47 mutable QueryT* mData;
48
49private:
50 virtual const char* GetEventName() const { FBX_ASSERT(false); return ""; }
51 static const char* FbxEventName() { FBX_ASSERT(false); return ""; }
52 friend class FbxEvent< FbxQueryEvent<QueryT> >;
53};
54
55#include <fbxsdk/fbxsdk_nsend.h>
56
57#endif /* _FBXSDK_CORE_QUERY_EVENT_H_ */
58