1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2018 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker #ifndef PUBLIC_CPP_FPDF_SCOPERS_H_ 6*3ac0a46fSAndroid Build Coastguard Worker #define PUBLIC_CPP_FPDF_SCOPERS_H_ 7*3ac0a46fSAndroid Build Coastguard Worker 8*3ac0a46fSAndroid Build Coastguard Worker #include <memory> 9*3ac0a46fSAndroid Build Coastguard Worker #include <type_traits> 10*3ac0a46fSAndroid Build Coastguard Worker 11*3ac0a46fSAndroid Build Coastguard Worker #include "fpdf_deleters.h" 12*3ac0a46fSAndroid Build Coastguard Worker 13*3ac0a46fSAndroid Build Coastguard Worker // Versions of FPDF types that clean up the object at scope exit. 14*3ac0a46fSAndroid Build Coastguard Worker 15*3ac0a46fSAndroid Build Coastguard Worker using ScopedFPDFAnnotation = 16*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<std::remove_pointer<FPDF_ANNOTATION>::type, 17*3ac0a46fSAndroid Build Coastguard Worker FPDFAnnotationDeleter>; 18*3ac0a46fSAndroid Build Coastguard Worker 19*3ac0a46fSAndroid Build Coastguard Worker using ScopedFPDFAvail = 20*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<std::remove_pointer<FPDF_AVAIL>::type, FPDFAvailDeleter>; 21*3ac0a46fSAndroid Build Coastguard Worker 22*3ac0a46fSAndroid Build Coastguard Worker using ScopedFPDFBitmap = 23*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<std::remove_pointer<FPDF_BITMAP>::type, FPDFBitmapDeleter>; 24*3ac0a46fSAndroid Build Coastguard Worker 25*3ac0a46fSAndroid Build Coastguard Worker using ScopedFPDFClipPath = 26*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<std::remove_pointer<FPDF_CLIPPATH>::type, 27*3ac0a46fSAndroid Build Coastguard Worker FPDFClipPathDeleter>; 28*3ac0a46fSAndroid Build Coastguard Worker 29*3ac0a46fSAndroid Build Coastguard Worker using ScopedFPDFDocument = 30*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<std::remove_pointer<FPDF_DOCUMENT>::type, 31*3ac0a46fSAndroid Build Coastguard Worker FPDFDocumentDeleter>; 32*3ac0a46fSAndroid Build Coastguard Worker 33*3ac0a46fSAndroid Build Coastguard Worker using ScopedFPDFFont = 34*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<std::remove_pointer<FPDF_FONT>::type, FPDFFontDeleter>; 35*3ac0a46fSAndroid Build Coastguard Worker 36*3ac0a46fSAndroid Build Coastguard Worker using ScopedFPDFFormHandle = 37*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<std::remove_pointer<FPDF_FORMHANDLE>::type, 38*3ac0a46fSAndroid Build Coastguard Worker FPDFFormHandleDeleter>; 39*3ac0a46fSAndroid Build Coastguard Worker 40*3ac0a46fSAndroid Build Coastguard Worker using ScopedFPDFJavaScriptAction = 41*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<std::remove_pointer<FPDF_JAVASCRIPT_ACTION>::type, 42*3ac0a46fSAndroid Build Coastguard Worker FPDFJavaScriptActionDeleter>; 43*3ac0a46fSAndroid Build Coastguard Worker 44*3ac0a46fSAndroid Build Coastguard Worker using ScopedFPDFPage = 45*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<std::remove_pointer<FPDF_PAGE>::type, FPDFPageDeleter>; 46*3ac0a46fSAndroid Build Coastguard Worker 47*3ac0a46fSAndroid Build Coastguard Worker using ScopedFPDFPageLink = 48*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<std::remove_pointer<FPDF_PAGELINK>::type, 49*3ac0a46fSAndroid Build Coastguard Worker FPDFPageLinkDeleter>; 50*3ac0a46fSAndroid Build Coastguard Worker 51*3ac0a46fSAndroid Build Coastguard Worker using ScopedFPDFPageObject = 52*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<std::remove_pointer<FPDF_PAGEOBJECT>::type, 53*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObjectDeleter>; 54*3ac0a46fSAndroid Build Coastguard Worker 55*3ac0a46fSAndroid Build Coastguard Worker using ScopedFPDFStructTree = 56*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<std::remove_pointer<FPDF_STRUCTTREE>::type, 57*3ac0a46fSAndroid Build Coastguard Worker FPDFStructTreeDeleter>; 58*3ac0a46fSAndroid Build Coastguard Worker 59*3ac0a46fSAndroid Build Coastguard Worker using ScopedFPDFTextFind = 60*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<std::remove_pointer<FPDF_SCHHANDLE>::type, 61*3ac0a46fSAndroid Build Coastguard Worker FPDFTextFindDeleter>; 62*3ac0a46fSAndroid Build Coastguard Worker 63*3ac0a46fSAndroid Build Coastguard Worker using ScopedFPDFTextPage = 64*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<std::remove_pointer<FPDF_TEXTPAGE>::type, 65*3ac0a46fSAndroid Build Coastguard Worker FPDFTextPageDeleter>; 66*3ac0a46fSAndroid Build Coastguard Worker 67*3ac0a46fSAndroid Build Coastguard Worker #endif // PUBLIC_CPP_FPDF_SCOPERS_H_ 68