MAK Legion API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
view.h
Go to the documentation of this file.
1 /*********************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************************/
5 
8 
9 
10 #pragma once
11 
12 #include "legionDataStore/export.h"
16 
18 
19 #include <vector>
20 #include <string>
21 #include <atomic>
22 #include <mutex>
23 
24 namespace Legion
25 {
26  typedef UInt64 ViewHandle;
27  typedef UInt64 InstanceHandle;
28 
29  class SimulationDatabase;
30 
35  {
36  public:
38  View(ViewHandle handle, SimulationDatabase& database);
39 
41  virtual ~View();
42 
44  virtual void initialize();
45 
47  virtual std::string name() const;
48 
50  virtual UInt32 count() const;
51 
54  virtual Scope scope() const;
55 
56 
58  SimulationDatabase& database() const;
59 
60  protected:
61  virtual void reset();
62 
65  friend class ViewManager;
66 
67  std::atomic<UInt32> myCount;
68  bool myDirty;
69  };
70 
71 
75  template<typename SET_TYPE>
76  class SetView : public View
77  {
78  public:
80  {
81  SET_TYPE instance;
82  std::vector<UInt32> attributesChanged;
83  };
84 
89 
90  public:
93 
95  virtual ~SetView();
96 
98  std::vector<SET_TYPE>& instances();
99 
103 
107 
111 
114  virtual bool addInstanceUpdatedCallback(InstanceUpdateCallback cb, const std::vector<int>* attributeIndexFilter = nullptr);
116 
117  virtual void setPredicateFunction(PredicateCallback cb);
118 
119  protected:
121  virtual void rebuildInstanceList();
122 
123  std::vector<SET_TYPE> myInstances;
124  std::mutex myRebuildMutex;
125 
126  std::vector<InstanceCallback> myAddedCallbacks;
127  std::vector<InstanceCallback> myMovedCallbacks;
128  std::vector<InstanceCallback> myRemovedCallbacks;
129  std::vector<InstanceUpdateCallback> myUpdatedCallbacks;
131 
132  static void addedCallback(void* usr, const InstanceHandle* instances, UInt32 count);
133  static void movedCallback(void* usr, const InstanceHandle* instances, UInt32 count);
134  static void removedCallback(void* usr, const InstanceHandle* instances, UInt32 count);
135  static void updatedCallback(void* usr, const LEG_InstanceUpdateData* instances, UInt32 count, int cbIndex);
136  static int predicate(void* usr, InstanceHandle instance);
137 
142  };
143 }
144 
145 #include "legionDataStore/view.inl"
static void updatedCallback(void *usr, const LEG_InstanceUpdateData *instances, UInt32 count, int cbIndex)
Definition: view.inl:187
virtual ~SetView()
destructor
Definition: view.inl:23
std::vector< InstanceCallback > myMovedCallbacks
Definition: view.h:127
static void removedCallback(void *usr, const InstanceHandle *instances, UInt32 count)
Definition: view.inl:181
bool myDirty
Definition: view.h:68
std::atomic< UInt32 > myCount
Definition: view.h:67
virtual bool addInstanceMovedCallback(InstanceCallback cb)
Add/Remove Instances moved callbacks.
Definition: view.inl:65
virtual void setPredicateFunction(PredicateCallback cb)
Definition: view.inl:29
std::vector< SET_TYPE > & instances()
Returns the instances in this view.
Definition: view.inl:193
virtual bool removeInstanceMovedCallback(InstanceCallback cb)
Definition: view.inl:80
void callUpdatedCallbacks(const LEG_InstanceUpdateData *instances, UInt32 count, int cbIndex)
Definition: view.inl:289
The View is an abstract base class for class that provide read only access to instances of a single a...
Definition: view.h:34
The ViewManager creates and manages the views of a database.
Definition: viewManager.h:48
virtual bool removeInstanceAddedCallback(InstanceCallback cb)
Definition: view.inl:50
virtual bool removeInstanceRemovedCallback(InstanceCallback cb)
Definition: view.inl:110
UInt64 ViewHandle
Definition: view.h:26
Defines a template callback object to make binding member function pointers easier.
SimulationDatabase & myDatabase
Definition: view.h:64
void callRemovedCallbacks(const InstanceHandle *instances, UInt32 count)
Definition: view.inl:270
std::mutex myRebuildMutex
Definition: view.h:124
PredicateCallback myPredicateFunction
Definition: view.h:130
Callback template for binding static or member functions for callback at later time The return type a...
Definition: callback.h:66
std::vector< InstanceUpdateCallback > myUpdatedCallbacks
Definition: view.h:129
std::vector< UInt32 > attributesChanged
Definition: view.h:82
SET_TYPE instance
Definition: view.h:81
static int predicate(void *usr, InstanceHandle instance)
Definition: view.inl:307
Callback< bool(const SET_TYPE &instance)> PredicateCallback
Definition: view.h:88
#define LEGION_DLL
Definition: legionDataStore/export.h:24
unsigned int UInt32
Definition: dataTypes.h:44
The SimulationDatabase stores all data for the simulation. It also owns the event, control, and view managers.
Definition: simulationDatabase.h:39
virtual bool addInstanceAddedCallback(InstanceCallback cb)
Add/Remove Instances added callbacks.
Definition: view.inl:35
Scope
View Scope selects if only local entities, remote (network) entities or a mix should be considered fo...
Definition: viewManager.h:31
SimulationDatabase & database() const
The database this view uses.
ViewHandle myHandle
Definition: view.h:63
virtual bool removeInstanceUpdatedCallback(InstanceUpdateCallback cb)
Definition: view.inl:151
unsigned long long UInt64
Definition: dataTypes.h:46
std::vector< InstanceCallback > myAddedCallbacks
Definition: view.h:126
The SetView is a concrete view class that provides a view of the database for instances of a given ty...
Definition: view.h:76
virtual bool addInstanceUpdatedCallback(InstanceUpdateCallback cb, const std::vector< int > *attributeIndexFilter=nullptr)
Add/Remove Instances updated callbacks if attributeIndexFiter == null then all attributes will be tes...
Definition: view.inl:125
static void movedCallback(void *usr, const InstanceHandle *instances, UInt32 count)
Definition: view.inl:175
static void addedCallback(void *usr, const InstanceHandle *instances, UInt32 count)
Definition: view.inl:169
void callAddedCallbacks(const InstanceHandle *instances, UInt32 count)
Definition: view.inl:232
virtual UInt32 count() const
Get the number entities in this view.
virtual bool addInstanceRemovedCallback(InstanceCallback cb)
Add/Remove Instances removed callbacks.
Definition: view.inl:95
virtual void rebuildInstanceList()
Rebuilds the instance list if instances are added/removed.
Definition: view.inl:204
SetView(ViewHandle handle, SimulationDatabase &database)
constructor
Definition: view.inl:13
std::vector< SET_TYPE > myInstances
Definition: view.h:123
void callMovedCallbacks(const InstanceHandle *instances, UInt32 count)
Definition: view.inl:251
UInt64 InstanceHandle
Definition: readStateInstance.h:20
std::vector< InstanceCallback > myRemovedCallbacks
Definition: view.h:128
Definition: c_api.h:222

Document ID: Generated on Mon Mar 8 15:11:30 EST 2021 from SVN revision 225633
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)