Itasca C++ Interface
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
imulticontainer.h
1 #pragma once
2 
3 #include "base/src/baseqt.h"
4 #include <functional>
5 
6 namespace itasca {
7  class IThing;
8 
10  public:
11  inline static const TType type_ = 0x51cdf4ee;
12 
13  struct IMultiCallInfo {
14  IThing *thing_;
15  uint thread_;
16  quint64 index_;
17  quint64 block_;
18  };
19  typedef std::function<void(void *,IMultiCallInfo &)> base_func;
20 
21  // Returns the IThing pointer of the container.
22  virtual IThing * getIThing()=0;
23  virtual const IThing *getIThing() const=0;
24  virtual IContainer * getIContainer()=0;
25  virtual const IContainer *getIContainer() const=0;
26  virtual quint64 getBlockSize() const=0;
27  virtual void imultiLoopBase(base_func &func,void *v)=0;
28  template <class Data>
29  void imultiLoop(std::function<void(Data *,IMultiCallInfo &)> &func,Data *data);
30  };
31 
32  template <class Data>
33  void IMultiContainer::imultiLoop(std::function<void(Data *,IMultiCallInfo &)> &func,Data *data) {
34  base_func out = [&](void *v,IMultiCallInfo &info)->void{ func((Data *)v,info); };
35  imultiLoopBase(out,(void *)data);
36  }
37 } // namespace itasca
38 
39 // EoF
namespace Itasca
Definition: basememory.cpp:9
Base class for items that will be stored in containers.
Definition: ithing.h:31
Definition: imulticontainer.h:13
unsigned int TType
class type indicator
Definition: basedef.h:41
Definition: imulticontainer.h:9
Interface for containers of IThings.
Definition: icontainer.h:23
All default base headers if Qt is being used.