Itasca C++ Interface
Toggle main menu visibility
Loading...
Searching...
No Matches
imulticontainer.h
1
#pragma once
2
3
#include "
base/src/base.h
"
4
#include <functional>
5
6
namespace
itasca
{
7
class
IThing
;
8
9
class
IMultiContainer
{
10
public
:
11
inline
static
const
TType
type_ = 0x51cdf4ee;
12
13
struct
IMultiCallInfo
{
14
IThing
*thing_=
nullptr
;
15
uint32 thread_=0;
16
uint64 index_=0;
17
uint64 block_=0;
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
uint64 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
base.h
One stop include for all objects defined as part of base interface.
itasca::IContainer
Interface for containers of IThings.
Definition
icontainer.h:21
itasca::IMultiContainer
Definition
imulticontainer.h:9
itasca::IThing
Base class for items that will be stored in containers.
Definition
ithing.h:31
TType
uint32 TType
class type indicator
Definition
basedef.h:47
itasca
namespace Itasca
Definition
basememory.cpp:14
itasca::IMultiContainer::IMultiCallInfo
Definition
imulticontainer.h:13
common
utility
interface
imulticontainer.h
Generated by
1.18.0