VTK
9.3.20240327
IO
XMLParser
vtkXMLDataHeaderPrivate.h
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2
// SPDX-License-Identifier: BSD-3-Clause
3
4
#ifndef vtkXMLDataHeaderPrivate_DoNotInclude
5
#error "do not include unless you know what you are doing"
6
#endif
7
8
#ifndef vtkXMLDataHeaderPrivate_h
9
#define vtkXMLDataHeaderPrivate_h
10
11
#include "
vtkType.h
"
12
#include <vector>
13
14
// Abstract interface using type vtkTypeUInt64 to access an array
15
// of either vtkTypeUInt32 or vtkTypeUInt64. Shared by vtkXMLWriter
16
// and vtkXMLDataParser to write/read binary data headers.
17
VTK_ABI_NAMESPACE_BEGIN
18
class
vtkXMLDataHeader
19
{
20
public
:
21
virtual
void
Resize
(
size_t
count) = 0;
22
virtual
vtkTypeUInt64
Get
(
size_t
index
)
const
= 0;
23
virtual
bool
Set
(
size_t
index
, vtkTypeUInt64
value
) = 0;
24
virtual
size_t
WordSize
()
const
= 0;
25
virtual
size_t
WordCount
()
const
= 0;
26
virtual
unsigned
char
*
Data
() = 0;
27
size_t
DataSize
()
const
{
return
this->
WordCount
() * this->
WordSize
(); }
28
virtual
~vtkXMLDataHeader
() =
default
;
29
static
inline
vtkXMLDataHeader
*
New
(
int
width,
size_t
count);
30
};
31
32
template
<
typename
T>
33
class
vtkXMLDataHeaderImpl
:
public
vtkXMLDataHeader
34
{
35
std::vector<T> Header;
36
37
public
:
38
vtkXMLDataHeaderImpl
(
size_t
n)
39
: Header(n, 0)
40
{
41
}
42
void
Resize
(
size_t
count)
override
{ this->Header.resize(count, 0); }
43
vtkTypeUInt64
Get
(
size_t
index
)
const override
{
return
this->Header[
index
]; }
44
bool
Set
(
size_t
index
, vtkTypeUInt64
value
)
override
45
{
46
this->Header[
index
] = T(
value
);
47
return
vtkTypeUInt64(this->Header[
index
]) ==
value
;
48
}
49
size_t
WordSize
()
const override
{
return
sizeof
(T); }
50
size_t
WordCount
()
const override
{
return
this->Header.size(); }
51
unsigned
char
*
Data
()
override
{
return
reinterpret_cast<
unsigned
char
*
>
(&this->Header[0]); }
52
};
53
54
vtkXMLDataHeader
*
vtkXMLDataHeader::New
(
int
width,
size_t
count)
55
{
56
switch
(width)
57
{
58
case
32:
59
return
new
vtkXMLDataHeaderImpl<vtkTypeUInt32>
(count);
60
case
64:
61
return
new
vtkXMLDataHeaderImpl<vtkTypeUInt64>
(count);
62
}
63
return
nullptr
;
64
}
65
66
VTK_ABI_NAMESPACE_END
67
#endif
68
// VTK-HeaderTest-Exclude: vtkXMLDataHeaderPrivate.h
vtkXMLDataHeaderImpl
Definition:
vtkXMLDataHeaderPrivate.h:34
vtkXMLDataHeaderImpl::Data
unsigned char * Data() override
Definition:
vtkXMLDataHeaderPrivate.h:51
vtkXMLDataHeaderImpl::vtkXMLDataHeaderImpl
vtkXMLDataHeaderImpl(size_t n)
Definition:
vtkXMLDataHeaderPrivate.h:38
vtkXMLDataHeaderImpl::Set
bool Set(size_t index, vtkTypeUInt64 value) override
Definition:
vtkXMLDataHeaderPrivate.h:44
vtkXMLDataHeaderImpl::WordCount
size_t WordCount() const override
Definition:
vtkXMLDataHeaderPrivate.h:50
vtkXMLDataHeaderImpl::Get
vtkTypeUInt64 Get(size_t index) const override
Definition:
vtkXMLDataHeaderPrivate.h:43
vtkXMLDataHeaderImpl::Resize
void Resize(size_t count) override
Definition:
vtkXMLDataHeaderPrivate.h:42
vtkXMLDataHeaderImpl::WordSize
size_t WordSize() const override
Definition:
vtkXMLDataHeaderPrivate.h:49
vtkXMLDataHeader
Definition:
vtkXMLDataHeaderPrivate.h:19
vtkXMLDataHeader::Get
virtual vtkTypeUInt64 Get(size_t index) const =0
vtkXMLDataHeader::Data
virtual unsigned char * Data()=0
vtkXMLDataHeader::New
static vtkXMLDataHeader * New(int width, size_t count)
Definition:
vtkXMLDataHeaderPrivate.h:54
vtkXMLDataHeader::WordCount
virtual size_t WordCount() const =0
vtkXMLDataHeader::Set
virtual bool Set(size_t index, vtkTypeUInt64 value)=0
vtkXMLDataHeader::DataSize
size_t DataSize() const
Definition:
vtkXMLDataHeaderPrivate.h:27
vtkXMLDataHeader::WordSize
virtual size_t WordSize() const =0
vtkXMLDataHeader::Resize
virtual void Resize(size_t count)=0
vtkXMLDataHeader::~vtkXMLDataHeader
virtual ~vtkXMLDataHeader()=default
vtkX3D::value
@ value
Definition:
vtkX3D.h:220
vtkX3D::index
@ index
Definition:
vtkX3D.h:246
vtkType.h
Generated on Wed Mar 27 2024 23:24:56 for VTK by
1.9.1