FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
skia/tools/SkMetaData.h at main · AndroidHighQualityCodeStudy/skia · GitHub
AndroidHighQualityCodeStudy
/
skia
Public
forked from
google/skia
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
skia
/
tools
/
SkMetaData.h
Copy path
More file actions
More file actions
Latest commit
History
History
History
123 lines (103 loc) · 3.73 KB
Breadcrumbs
skia
/
tools
/
SkMetaData.h
Copy path
File metadata and controls
123 lines (103 loc) · 3.73 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/*
* Copyright 2006 The Android Open Source Project
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#
ifndef
SkMetaData_DEFINED
#
define
SkMetaData_DEFINED
#
include
"
include/core/SkScalar.h
"
/*
* A map from c-string keys to arrays of POD (int32_t, kScalar, void*, or bool)
values.
*/
class
SkMetaData
{
public:
SkMetaData
() {}
~SkMetaData
() {
if
(
fRec
) {
this
->
reset
(); } }
void
reset
();
bool
findS32
(
const
char
name[],
int32_t
* value =
nullptr
)
const
;
bool
findScalar
(
const
char
name[], SkScalar* value =
nullptr
)
const
;
const
SkScalar*
findScalars
(
const
char
name[],
int
* count,
SkScalar values[] =
nullptr
)
const
;
bool
findPtr
(
const
char
name[],
void
** value =
nullptr
)
const
;
bool
findBool
(
const
char
name[],
bool
* value =
nullptr
)
const
;
bool
hasS32
(
const
char
name[],
int32_t
value)
const
{
int32_t
v;
return
this
->
findS32
(name, &v) && v == value;
}
bool
hasScalar
(
const
char
name[], SkScalar value)
const
{
SkScalar v;
return
this
->
findScalar
(name, &v) && v == value;
}
bool
hasPtr
(
const
char
name[],
void
* value)
const
{
void
* v;
return
this
->
findPtr
(name, &v) && v == value;
}
bool
hasBool
(
const
char
name[],
bool
value)
const
{
bool
v;
return
this
->
findBool
(name, &v) && v == value;
}
void
setS32
(
const
char
name[],
int32_t
value);
void
setScalar
(
const
char
name[], SkScalar value);
SkScalar*
setScalars
(
const
char
name[],
int
count,
const
SkScalar values[] =
nullptr
);
void
setPtr
(
const
char
name[],
void
* value);
void
setBool
(
const
char
name[],
bool
value);
bool
removeS32
(
const
char
name[]);
bool
removeScalar
(
const
char
name[]);
bool
removePtr
(
const
char
name[]);
bool
removeBool
(
const
char
name[]);
enum
Type {
kS32_Type
,
kScalar_Type
,
kPtr_Type
,
kBool_Type
,
kTypeCount
};
struct
Rec
;
class
Iter
;
friend
class
Iter
;
class
Iter
{
public:
Iter
() :
fRec
(
nullptr
) {}
Iter
(
const
SkMetaData&);
/*
* Reset the iterator, so that calling next() will return the first
data element. This is done implicitly in the constructor.
*/
void
reset
(
const
SkMetaData&);
/*
* Each time next is called, it returns the name of the next data element,
or null when there are no more elements. If non-null is returned, then the
element's type is returned (if not null), and the number of data values
is returned in count (if not null).
*/
const
char
*
next
(Type*,
int
* count);
private:
Rec*
fRec
;
};
public:
struct
Rec
{
Rec*
fNext
;
uint16_t
fDataCount
;
//
number of elements
uint8_t
fDataLen
;
//
sizeof a single element
uint8_t
fType
;
const
void
*
data
()
const
{
return
(
this
+
1
); }
void
*
data
() {
return
(
this
+
1
); }
const
char
*
name
()
const
{
return
(
const
char
*)
this
->
data
() +
fDataLen
*
fDataCount
; }
char
*
name
() {
return
(
char
*)
this
->
data
() +
fDataLen
*
fDataCount
; }
static
Rec*
Alloc
(
size_t
);
static
void
Free
(Rec*);
};
Rec*
fRec
=
nullptr
;
const
Rec*
find
(
const
char
name[], Type)
const
;
void
*
set
(
const
char
name[],
const
void
* data,
size_t
len, Type,
int
count);
bool
remove
(
const
char
name[], Type);
SkMetaData
(
const
SkMetaData&) =
delete
;
SkMetaData&
operator
=(
const
SkMetaData&) =
delete
;
private:
struct
FindResult
{
SkMetaData::Rec* rec;
SkMetaData::Rec* prev;
};
FindResult
findWithPrev
(
const
char
name[], Type type)
const
;
void
remove
(FindResult);
};
#
endif
Back
|
FazBrowse Home
|
New Git URL