MAK Legion 1.1 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"
15 
17 
18 #include <vector>
19 #include <string>
20 #include <atomic>
21 #include <mutex>
22 
23 namespace Legion
24 {
25  typedef UInt64 ViewHandle;
26  typedef UInt64 InstanceHandle;
27 
28  class SimulationDatabase;
29 
31  enum class ViewScope : UInt32
32  {
33  Local = 0,
34  Remote,
35  All
36  };
37 
38 
42  class LEGION_DLL View
43  {
44  public:
46  View(ViewHandle handle, SimulationDatabase& database);
47 
49  virtual ~View();
50 
52  virtual void initialize();
53 
55  virtual std::string name() const;
56 
58  virtual UInt32 count() const;
59 
62  virtual ViewScope scope() const;
63 
64 
66  SimulationDatabase& database() const;
67 
68  protected:
69  virtual void reset();
70 
73  friend class ViewManager;
74 
75  std::atomic<UInt32> myCount;
76  bool myDirty;
77  };
78 
79 
83  template<typename SET_TYPE>
84  class SetView : public View
85  {
86  public:
88  {
89  SET_TYPE instance;
90  std::vector<AttributeIndex> attributesChanged;
91  };
92 
97 
98  public:
101 
103  virtual ~SetView();
104 
106  std::vector<SET_TYPE>& instances();
107 
111 
115 
119 
122  virtual bool addInstanceUpdatedCallback(InstanceUpdateCallback cb, const std::vector<AttributeIndex>& attributeIndexFilter = std::vector<AttributeIndex>());
124 
125  virtual void setPredicateFunction(PredicateCallback cb);
126 
127  protected:
129  virtual void rebuildInstanceList();
130 
131  std::vector<SET_TYPE> myInstances;
132  std::mutex myRebuildMutex;
133 
134  std::vector<InstanceCallback> myAddedCallbacks;
135  std::vector<InstanceCallback> myMovedCallbacks;
136  std::vector<InstanceCallback> myRemovedCallbacks;
137  std::vector<InstanceUpdateCallback> myUpdatedCallbacks;
139 
140  static void addedCallback(void* usr, const InstanceHandle* instances, UInt32 count);
141  static void movedCallback(void* usr, const InstanceHandle* instances, UInt32 count);
142  static void removedCallback(void* usr, const InstanceHandle* instances, UInt32 count);
143  static void updatedCallback(void* usr, const LEG_InstanceUpdateData* instances, UInt32 count, int cbIndex);
144  static int predicate(void* usr, InstanceHandle instance);
145 
150  };
151 }
152 
153 #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:135
static void removedCallback(void *usr, const InstanceHandle *instances, UInt32 count)
Definition: view.inl:181
bool myDirty
Definition: view.h:76
std::atomic< UInt32 > myCount
Definition: view.h:75
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:42
The ViewManager creates and manages the views of a database.
Definition: viewManager.h:42
virtual bool removeInstanceAddedCallback(InstanceCallback cb)
Definition: view.inl:50
virtual bool removeInstanceRemovedCallback(InstanceCallback cb)
Definition: view.inl:110
virtual bool addInstanceUpdatedCallback(InstanceUpdateCallback cb, const std::vector< AttributeIndex > &attributeIndexFilter=std::vector< AttributeIndex >())
Add/Remove Instances updated callbacks if attributeIndexFiter == null then all attributes will be tes...
Definition: view.inl:125
UInt64 ViewHandle
Definition: view.h:25
Defines a template callback object to make binding member function pointers easier.
SimulationDatabase & myDatabase
Definition: view.h:72
void callRemovedCallbacks(const InstanceHandle *instances, UInt32 count)
Definition: view.inl:270
std::mutex myRebuildMutex
Definition: view.h:132
PredicateCallback myPredicateFunction
Definition: view.h:138
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:137
SET_TYPE instance
Definition: view.h:89
static int predicate(void *usr, InstanceHandle instance)
Definition: view.inl:307
Callback< bool(const SET_TYPE &instance)> PredicateCallback
Definition: view.h:96
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:42
virtual bool addInstanceAddedCallback(InstanceCallback cb)
Add/Remove Instances added callbacks.
Definition: view.inl:35
SimulationDatabase & database() const
The database this view uses.
ViewHandle myHandle
Definition: view.h:71
std::vector< AttributeIndex > attributesChanged
Definition: view.h:90
ViewScope
View Scope selects if only local entities, remote (network) entities or a mix should be considered fo...
Definition: view.h:31
virtual bool removeInstanceUpdatedCallback(InstanceUpdateCallback cb)
Definition: view.inl:151
unsigned long long UInt64
Definition: dataTypes.h:46
std::vector< InstanceCallback > myAddedCallbacks
Definition: view.h:134
The SetView is a concrete view class that provides a view of the database for instances of a given ty...
Definition: view.h:84
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:131
void callMovedCallbacks(const InstanceHandle *instances, UInt32 count)
Definition: view.inl:251
UInt64 InstanceHandle
Definition: readStateInstance.h:20
std::vector< InstanceCallback > myRemovedCallbacks
Definition: view.h:136
Definition: c_api.h:224

Document ID: Generated on Wed May 26 15:17:05 EDT 2021 from SVN revision 229676
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)