summaryrefslogtreecommitdiff
path: root/public
diff options
context:
space:
mode:
Diffstat (limited to 'public')
-rw-r--r--public/cpp/fpdf_scopers.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/public/cpp/fpdf_scopers.h b/public/cpp/fpdf_scopers.h
new file mode 100644
index 0000000000..1898ac887d
--- /dev/null
+++ b/public/cpp/fpdf_scopers.h
@@ -0,0 +1,54 @@
+// Copyright 2018 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef PUBLIC_CPP_FPDF_SCOPERS_H_
+#define PUBLIC_CPP_FPDF_SCOPERS_H_
+
+#include <memory>
+#include <type_traits>
+
+#include "public/cpp/fpdf_deleters.h"
+#include "public/fpdf_annot.h"
+#include "public/fpdf_dataavail.h"
+#include "public/fpdf_edit.h"
+#include "public/fpdf_formfill.h"
+#include "public/fpdf_structtree.h"
+#include "public/fpdf_text.h"
+#include "public/fpdfview.h"
+
+// Versions of FPDF types that clean up the object at scope exit.
+
+using ScopedFPDFAnnotation =
+ std::unique_ptr<std::remove_pointer<FPDF_ANNOTATION>::type,
+ FPDFAnnotationDeleter>;
+
+using ScopedFPDFAvail =
+ std::unique_ptr<std::remove_pointer<FPDF_AVAIL>::type, FPDFAvailDeleter>;
+
+using ScopedFPDFBitmap =
+ std::unique_ptr<std::remove_pointer<FPDF_BITMAP>::type, FPDFBitmapDeleter>;
+
+using ScopedFPDFDocument =
+ std::unique_ptr<std::remove_pointer<FPDF_DOCUMENT>::type,
+ FPDFDocumentDeleter>;
+
+using ScopedFPDFFormHandle =
+ std::unique_ptr<std::remove_pointer<FPDF_FORMHANDLE>::type,
+ FPDFFormHandleDeleter>;
+
+using ScopedFPDFTextPage =
+ std::unique_ptr<std::remove_pointer<FPDF_TEXTPAGE>::type,
+ FPDFTextPageDeleter>;
+
+using ScopedFPDFPage =
+ std::unique_ptr<std::remove_pointer<FPDF_PAGE>::type, FPDFPageDeleter>;
+
+using ScopedFPDFStructTree =
+ std::unique_ptr<std::remove_pointer<FPDF_STRUCTTREE>::type,
+ FPDFStructTreeDeleter>;
+
+using ScopedFPDFFont =
+ std::unique_ptr<std::remove_pointer<FPDF_FONT>::type, FPDFFontDeleter>;
+
+#endif // PUBLIC_CPP_FPDF_SCOPERS_H_