10 #ifndef SkMetaData_DEFINED
11 #define SkMetaData_DEFINED
36 typedef void* (*PtrProc)(
void* ptr,
bool doRef);
41 static void* RefCntProc(
void* ptr,
bool doRef);
51 bool findS32(
const char name[], int32_t* value = NULL)
const;
52 bool findScalar(
const char name[], SkScalar* value = NULL)
const;
53 const SkScalar* findScalars(
const char name[],
int* count,
54 SkScalar values[] = NULL)
const;
55 const char* findString(
const char name[])
const;
56 bool findPtr(
const char name[],
void** value = NULL, PtrProc* = NULL)
const;
57 bool findBool(
const char name[],
bool* value = NULL)
const;
58 const void* findData(
const char name[],
size_t* byteCount = NULL)
const;
60 bool hasS32(
const char name[], int32_t value)
const {
62 return this->findS32(name, &v) && v == value;
64 bool hasScalar(
const char name[], SkScalar value)
const {
66 return this->findScalar(name, &v) && v == value;
68 bool hasString(
const char name[],
const char value[])
const {
69 const char* v = this->findString(name);
70 return (v == NULL && value == NULL) ||
71 (v != NULL && value != NULL && !strcmp(v, value));
73 bool hasPtr(
const char name[],
void* value)
const {
75 return this->findPtr(name, &v) && v == value;
77 bool hasBool(
const char name[],
bool value)
const {
79 return this->findBool(name, &v) && v == value;
81 bool hasData(
const char name[],
const void* data,
size_t byteCount)
const {
83 const void* ptr = this->findData(name, &len);
84 return ptr && len == byteCount && !memcmp(ptr, data, len);
87 void setS32(
const char name[], int32_t value);
88 void setScalar(
const char name[], SkScalar value);
89 SkScalar* setScalars(
const char name[],
int count,
const SkScalar values[] = NULL);
90 void setString(
const char name[],
const char value[]);
91 void setPtr(
const char name[],
void* value, PtrProc proc = NULL);
92 void setBool(
const char name[],
bool value);
94 void setData(
const char name[],
const void* data,
size_t byteCount);
96 bool removeS32(
const char name[]);
97 bool removeScalar(
const char name[]);
98 bool removeString(
const char name[]);
99 bool removePtr(
const char name[]);
100 bool removeBool(
const char name[]);
101 bool removeData(
const char name[]);
104 bool findRefCnt(
const char name[],
SkRefCnt** ptr = NULL) {
105 return this->findPtr(name, reinterpret_cast<void**>(ptr));
107 bool hasRefCnt(
const char name[],
SkRefCnt* ptr) {
108 return this->hasPtr(name, ptr);
110 void setRefCnt(
const char name[],
SkRefCnt* ptr) {
111 this->setPtr(name, ptr, RefCntProc);
113 bool removeRefCnt(
const char name[]) {
114 return this->removePtr(name);
134 Iter() : fRec(NULL) {}
147 const char* next(Type*,
int* count);
160 const void* data()
const {
return (
this + 1); }
161 void* data() {
return (
this + 1); }
162 const char* name()
const {
return (
const char*)this->data() + fDataLen * fDataCount; }
163 char* name() {
return (
char*)this->data() + fDataLen * fDataCount; }
165 static Rec* Alloc(
size_t);
166 static void Free(
Rec*);
170 const Rec* find(
const char name[], Type)
const;
171 void* set(
const char name[],
const void* data,
size_t len, Type,
int count);
172 bool remove(
const char name[], Type);
Definition: SkRefCnt.h:125