Cortex
10.0.0-a4
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
include
IECore
TypedData.h
1
//
3
// Copyright (c) 2007-2012, Image Engine Design Inc. All rights reserved.
4
//
5
// Redistribution and use in source and binary forms, with or without
6
// modification, are permitted provided that the following conditions are
7
// met:
8
//
9
// * Redistributions of source code must retain the above copyright
10
// notice, this list of conditions and the following disclaimer.
11
//
12
// * Redistributions in binary form must reproduce the above copyright
13
// notice, this list of conditions and the following disclaimer in the
14
// documentation and/or other materials provided with the distribution.
15
//
16
// * Neither the name of Image Engine Design nor the names of any
17
// other contributors to this software may be used to endorse or
18
// promote products derived from this software without specific prior
19
// written permission.
20
//
21
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
22
// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
25
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
//
34
35
#ifndef IECORE_TYPEDDATA_H
36
#define IECORE_TYPEDDATA_H
37
38
#include "IECore/Data.h"
39
#include "IECore/Export.h"
40
#include "IECore/TypedDataInternals.h"
41
42
namespace
IECore
43
{
44
63
template
<
class
T>
64
class
IECORE_API
TypedData
:
public
Data
65
{
66
public
:
67
68
typedef
T ValueType;
69
71
TypedData
();
73
TypedData
(
const
T &data);
74
75
IECORE_RUNTIMETYPED_DECLARETEMPLATE(
TypedData<T>
,
Data
);
76
79
80
typename
TypedData<T>::Ptr
copy()
const
;
81
bool
isEqualTo(
const
Object
*other )
const override
;
82
void
hash(
MurmurHash
&h )
const override
;
84
86
void
operator = (
const
T &data);
88
void
operator = (
const
TypedData<T>
&typedData);
89
94
const
T &readable()
const
;
99
T &writable();
100
102
typedef
typename
TypedDataTraits<T>::BaseType
BaseType
;
103
105
static
bool
hasBase();
106
109
const
BaseType *baseReadable()
const
;
110
113
BaseType *baseWritable();
114
117
size_t
baseSize()
const
;
118
119
protected
:
120
121
typedef
typename
TypedDataTraits<T>::DataHolder DataHolder;
122
123
~
TypedData
()
override
;
124
125
static
Object::TypeDescription<TypedData<T>
> m_typeDescription;
126
127
void
copyFrom(
const
Object
*other,
CopyContext
*context )
override
;
128
void
save(
SaveContext
*context )
const override
;
129
void
load( LoadContextPtr context )
override
;
133
void
memoryUsage(
Object::MemoryAccumulator
&accumulator )
const override
;
134
135
DataHolder m_data;
136
137
};
138
149
#define IECORE_DECLARE_TYPEDDATA( TYPENAME, T, BASETYPE, DATAHOLDER ) \
150
template <> \
151
class IECORE_API TypedDataTraits<T> \
152
{ \
153
public : \
154
typedef BASETYPE BaseType; \
155
typedef DATAHOLDER<T> DataHolder; \
156
}; \
157
\
158
typedef TypedData<T> TYPENAME; \
159
\
160
IE_CORE_DECLAREPTR( TYPENAME ); \
161
162
}
// namespace IECore
163
164
#endif // IECORE_TYPEDDATA_H
IECore::Data
Definition:
Data.h:46
IECore::Object::MemoryAccumulator
Definition:
Object.h:333
IECore::TypedData
Definition:
TypedData.h:64
IECore::Object::CopyContext
Definition:
Object.h:229
IECore::Object
Definition:
Object.h:104
IECore::TypedData::BaseType
TypedDataTraits< T >::BaseType BaseType
Base type used in the internal data structure.
Definition:
TypedData.h:102
IECore::Object::TypeDescription
Definition:
Object.h:203
IECore::MurmurHash
Definition:
MurmurHash.h:64
IECore::Object::SaveContext
The class provided to the save() method implemented by subclasses.
Definition:
Object.h:247
IECore
This namespace contains all components of the core library.
Definition:
AddSmoothSkinningInfluencesOp.h:43
Generated on Tue Oct 24 2017 13:52:49 for Cortex by
1.8.9.1