xref: /aosp_15_r20/external/pdfium/public/cpp/fpdf_scopers.h (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
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