Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Side by Side Diff: src/pdf/SkPDFTypes.h

Issue 360473005: Add lock to SkPDFDict (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: response to sunshine comments Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/pdf/SkPDFStream.cpp ('k') | src/pdf/SkPDFTypes.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2010 The Android Open Source Project 3 * Copyright 2010 The Android Open Source Project
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #ifndef SkPDFTypes_DEFINED 10 #ifndef SkPDFTypes_DEFINED
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 362
363 virtual ~SkPDFDict(); 363 virtual ~SkPDFDict();
364 364
365 // The SkPDFObject interface. 365 // The SkPDFObject interface.
366 virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog, 366 virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog,
367 bool indirect); 367 bool indirect);
368 virtual size_t getOutputSize(SkPDFCatalog* catalog, bool indirect); 368 virtual size_t getOutputSize(SkPDFCatalog* catalog, bool indirect);
369 369
370 /** The size of the dictionary. 370 /** The size of the dictionary.
371 */ 371 */
372 int size() { return fValue.count(); } 372 int size() const;
373 373
374 /** Add the value to the dictionary with the given key. Refs value. 374 /** Add the value to the dictionary with the given key. Refs value.
375 * @param key The key for this dictionary entry. 375 * @param key The key for this dictionary entry.
376 * @param value The value for this dictionary entry. 376 * @param value The value for this dictionary entry.
377 * @return The value argument is returned. 377 * @return The value argument is returned.
378 */ 378 */
379 SkPDFObject* insert(SkPDFName* key, SkPDFObject* value); 379 SkPDFObject* insert(SkPDFName* key, SkPDFObject* value);
380 380
381 /** Add the value to the dictionary with the given key. Refs value. The 381 /** Add the value to the dictionary with the given key. Refs value. The
382 * method will create the SkPDFName object. 382 * method will create the SkPDFName object.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 * @param name The name for this dictionary entry. 417 * @param name The name for this dictionary entry.
418 */ 418 */
419 void insertName(const char key[], const SkString& name) { 419 void insertName(const char key[], const SkString& name) {
420 this->insertName(key, name.c_str()); 420 this->insertName(key, name.c_str());
421 } 421 }
422 422
423 /** Remove all entries from the dictionary. 423 /** Remove all entries from the dictionary.
424 */ 424 */
425 void clear(); 425 void clear();
426 426
427 protected:
428 /** Use to remove a single key from the dictionary.
429 */
430 void remove(const char key[]);
431
432 /** Insert references to all of the key-value pairs from the other
433 * dictionary into this one.
434 */
435 void mergeFrom(const SkPDFDict& other);
436
427 private: 437 private:
428 struct Rec { 438 struct Rec {
429 SkPDFName* key; 439 SkPDFName* key;
430 SkPDFObject* value; 440 SkPDFObject* value;
441 Rec(SkPDFName* k, SkPDFObject* v) : key(k), value(v) {}
431 }; 442 };
432 443
433 public:
434 class Iter {
435 public:
436 explicit Iter(const SkPDFDict& dict);
437 SkPDFName* next(SkPDFObject** value);
438
439 private:
440 const Rec* fIter;
441 const Rec* fStop;
442 };
443
444 private:
445 static const int kMaxLen = 4095; 444 static const int kMaxLen = 4095;
446 445
446 mutable SkMutex fMutex; // protects modifications to fValue
447 SkTDArray<struct Rec> fValue; 447 SkTDArray<struct Rec> fValue;
448 448
449 SkPDFObject* append(SkPDFName* key, SkPDFObject* value);
450
449 typedef SkPDFObject INHERITED; 451 typedef SkPDFObject INHERITED;
450 }; 452 };
451 453
452 #endif 454 #endif
OLDNEW
« no previous file with comments | « src/pdf/SkPDFStream.cpp ('k') | src/pdf/SkPDFTypes.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698