Coin3D is Free Software,
published under the
BSD 3-clause license
.
https://bitbucket.org/Coin3D/
http://www.kongsberg.com/kogt/
SoFieldData.h
1
#ifndef COIN_SOFIELDDATA_H
2
#define COIN_SOFIELDDATA_H
3
4
/**************************************************************************\
5
* Copyright (c) Kongsberg Oil & Gas Technologies AS
6
* All rights reserved.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions are
10
* met:
11
*
12
* Redistributions of source code must retain the above copyright notice,
13
* this list of conditions and the following disclaimer.
14
*
15
* Redistributions in binary form must reproduce the above copyright
16
* notice, this list of conditions and the following disclaimer in the
17
* documentation and/or other materials provided with the distribution.
18
*
19
* Neither the name of the copyright holder nor the names of its
20
* contributors may be used to endorse or promote products derived from
21
* this software without specific prior written permission.
22
*
23
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
\**************************************************************************/
35
36
#include <Inventor/SbBasic.h>
37
#include <Inventor/lists/SbList.h>
38
39
class
SbName
;
40
class
SoField
;
41
class
SoFieldContainer
;
42
class
SoInput
;
43
class
SoOutput
;
44
45
class
SoEnumEntry;
46
class
SoFieldEntry;
47
48
class
COIN_DLL_API
SoFieldData
{
49
public
:
50
SoFieldData
(
void
);
51
SoFieldData
(
const
SoFieldData
& fd);
52
SoFieldData
(
const
SoFieldData
* fd);
53
SoFieldData
(
int
numfields);
54
~
SoFieldData
();
55
56
void
addField(
SoFieldContainer
* base,
const
char
* name,
57
const
SoField
* field);
58
59
void
overlay(
SoFieldContainer
* to,
const
SoFieldContainer
* from,
60
SbBool copyconnections)
const
;
61
62
int
getNumFields(
void
)
const
;
63
const
SbName
& getFieldName(
int
index)
const
;
64
SoField
* getField(
const
SoFieldContainer
*
object
,
int
index)
const
;
65
int
getIndex(
const
SoFieldContainer
* fc,
const
SoField
* field)
const
;
66
67
void
addEnumValue(
const
char
* enumname,
const
char
* valuename,
int
value);
68
void
getEnumData(
const
char
* enumname,
69
int
& num,
const
int
*& values,
const
SbName
*& names);
70
71
SbBool read(
SoInput
* input,
SoFieldContainer
*
object
,
72
SbBool erroronunknownfield, SbBool & notbuiltin)
const
;
73
SbBool read(
SoInput
* input,
SoFieldContainer
*
object
,
74
const
SbName
& fieldname, SbBool & foundname)
const
;
75
void
write(
SoOutput
* out,
const
SoFieldContainer
*
object
)
const
;
76
void
copy(
const
SoFieldData
* src);
77
SbBool isSame(
const
SoFieldContainer
* c1,
78
const
SoFieldContainer
* c2)
const
;
79
80
SbBool readFieldDescriptions(
SoInput
* input,
SoFieldContainer
*
object
,
81
int
numdescriptionsexpected,
82
const
SbBool readfieldvalues = TRUE)
const
;
83
void
writeFieldDescriptions(
SoOutput
* out,
84
const
SoFieldContainer
*
object
)
const
;
85
86
private
:
87
SbBool hasField(
const
char
* name)
const
;
88
SbBool hasEnumValue(
const
char
* enumname,
const
char
* valuename);
89
90
// Bitflags for control word in the file format.
91
enum
ControlWord {
92
NOTBUILTIN = 0x40
93
};
94
95
int
operator==(
const
SoFieldData
* fd)
const
;
96
int
operator!=(
const
SoFieldData
* fd)
const
{
return
! operator==(fd); }
97
int
operator==(
const
SoFieldData
& fd)
const
{
return
operator==(&fd); }
98
int
operator!=(
const
SoFieldData
& fd)
const
{
return
! operator==(&fd); }
99
100
void
freeResources(
void
);
101
102
SbList<SoFieldEntry *>
fields;
103
SbList<SoEnumEntry *>
enums;
104
};
105
106
#endif // !COIN_SOFIELDDATA_H
SbName
The SbName class stores strings by reference.
Definition:
SbName.h:40
SoOutput
The SoOutput class is an abstraction of an output stream.
Definition:
SoOutput.h:51
SoField
The SoField class is the top-level abstract base class for fields.
Definition:
SoField.h:47
SbList< SoFieldEntry * >
SoFieldData
The SoFieldData class is a container for a prototype set of fields.
Definition:
SoFieldData.h:48
SoFieldContainer
The SoFieldContainer class is a base class for all classes that contain fields.
Definition:
SoFieldContainer.h:43
SoInput
The SoInput class is an abstraction of file import functionality.
Definition:
SoInput.h:61
coin-Coin-4.0.0
include
Inventor
fields
SoFieldData.h
Generated on Sat Apr 4 2020 11:55:01 for Coin by
doxygen
1.8.17