Use absl::holds_alternative<T>(variant) instead of variant.index().
This makes the absl::variant usage more readable, and reduce the amount
of changes required in the future, if the variant type ordering changes.
Change-Id: I99478cf0e9215483bb8a62fc5e122fef101eb539
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/102690
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_contentparser.h b/core/fpdfapi/page/cpdf_contentparser.h
index 34006c7..090c624 100644
--- a/core/fpdfapi/page/cpdf_contentparser.h
+++ b/core/fpdfapi/page/cpdf_contentparser.h
@@ -63,7 +63,10 @@
bool HandlePageContentArray(const CPDF_Array* pArray);
void HandlePageContentFailure();
- bool is_owned() const { return m_Data.index() == 1; }
+ bool is_owned() const {
+ return absl::holds_alternative<FixedTryAllocZeroedDataVector<uint8_t>>(
+ m_Data);
+ }
pdfium::span<const uint8_t> GetData() const;
Stage m_CurrentStage;
diff --git a/core/fpdfapi/parser/cpdf_flateencoder.h b/core/fpdfapi/parser/cpdf_flateencoder.h
index f4334e7..2d26d9b 100644
--- a/core/fpdfapi/parser/cpdf_flateencoder.h
+++ b/core/fpdfapi/parser/cpdf_flateencoder.h
@@ -32,7 +32,9 @@
pdfium::span<const uint8_t> GetSpan() const;
private:
- bool is_owned() const { return m_Data.index() == 1; }
+ bool is_owned() const {
+ return absl::holds_alternative<DataVector<uint8_t>>(m_Data);
+ }
// Returns |m_pClonedDict| if it is valid. Otherwise returns |m_pDict|.
const CPDF_Dictionary* GetDict() const;
diff --git a/core/fpdfapi/parser/cpdf_stream.h b/core/fpdfapi/parser/cpdf_stream.h
index c683cba..f1bb78b 100644
--- a/core/fpdfapi/parser/cpdf_stream.h
+++ b/core/fpdfapi/parser/cpdf_stream.h
@@ -58,9 +58,15 @@
// Can only be called when a stream is not memory-based.
DataVector<uint8_t> ReadAllRawData() const;
- bool IsUninitialized() const { return data_.index() == 0; }
- bool IsFileBased() const { return data_.index() == 1; }
- bool IsMemoryBased() const { return data_.index() == 2; }
+ bool IsUninitialized() const {
+ return absl::holds_alternative<absl::monostate>(data_);
+ }
+ bool IsFileBased() const {
+ return absl::holds_alternative<RetainPtr<IFX_SeekableReadStream>>(data_);
+ }
+ bool IsMemoryBased() const {
+ return absl::holds_alternative<DataVector<uint8_t>>(data_);
+ }
bool HasFilter() const;
private:
diff --git a/core/fpdfapi/parser/cpdf_stream_acc.h b/core/fpdfapi/parser/cpdf_stream_acc.h
index 0fb5509..1f0e726 100644
--- a/core/fpdfapi/parser/cpdf_stream_acc.h
+++ b/core/fpdfapi/parser/cpdf_stream_acc.h
@@ -55,7 +55,9 @@
// Returns the raw data from `m_pStream`, or no data on failure.
DataVector<uint8_t> ReadRawStream() const;
- bool is_owned() const { return m_Data.index() == 1; }
+ bool is_owned() const {
+ return absl::holds_alternative<DataVector<uint8_t>>(m_Data);
+ }
ByteString m_ImageDecoder;
RetainPtr<const CPDF_Dictionary> m_pImageParam;