Add even more CXFA_*::FromNode() static methods
Change-Id: I1b2207cb8e2e00a2dd56bcf6fef2c8d1308e59b5
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/94133
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fxfa/parser/cxfa_arc.cpp b/xfa/fxfa/parser/cxfa_arc.cpp
index 78c1fb1..dcb164c 100644
--- a/xfa/fxfa/parser/cxfa_arc.cpp
+++ b/xfa/fxfa/parser/cxfa_arc.cpp
@@ -29,6 +29,13 @@
} // namespace
+// static
+CXFA_Arc* CXFA_Arc::FromNode(CXFA_Node* pNode) {
+ return pNode && pNode->GetElementType() == XFA_Element::Arc
+ ? static_cast<CXFA_Arc*>(pNode)
+ : nullptr;
+}
+
CXFA_Arc::CXFA_Arc(CXFA_Document* doc, XFA_PacketType packet)
: CXFA_Box(doc,
packet,
diff --git a/xfa/fxfa/parser/cxfa_arc.h b/xfa/fxfa/parser/cxfa_arc.h
index dee205b..e5e763c 100644
--- a/xfa/fxfa/parser/cxfa_arc.h
+++ b/xfa/fxfa/parser/cxfa_arc.h
@@ -11,6 +11,8 @@
class CXFA_Arc final : public CXFA_Box {
public:
+ static CXFA_Arc* FromNode(CXFA_Node* pNode);
+
CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED;
~CXFA_Arc() override;
diff --git a/xfa/fxfa/parser/cxfa_exdata.cpp b/xfa/fxfa/parser/cxfa_exdata.cpp
index 2811d32..865b10d 100644
--- a/xfa/fxfa/parser/cxfa_exdata.cpp
+++ b/xfa/fxfa/parser/cxfa_exdata.cpp
@@ -26,6 +26,13 @@
} // namespace
+// static
+CXFA_ExData* CXFA_ExData::FromNode(CXFA_Node* pNode) {
+ return pNode && pNode->GetElementType() == XFA_Element::ExData
+ ? static_cast<CXFA_ExData*>(pNode)
+ : nullptr;
+}
+
CXFA_ExData::CXFA_ExData(CXFA_Document* doc, XFA_PacketType packet)
: CXFA_Node(doc,
packet,
diff --git a/xfa/fxfa/parser/cxfa_exdata.h b/xfa/fxfa/parser/cxfa_exdata.h
index 27c5fb2..d5d513a 100644
--- a/xfa/fxfa/parser/cxfa_exdata.h
+++ b/xfa/fxfa/parser/cxfa_exdata.h
@@ -11,6 +11,8 @@
class CXFA_ExData final : public CXFA_Node {
public:
+ static CXFA_ExData* FromNode(CXFA_Node* pNode);
+
CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED;
~CXFA_ExData() override;
diff --git a/xfa/fxfa/parser/cxfa_image.cpp b/xfa/fxfa/parser/cxfa_image.cpp
index 1cc0402..7f38394 100644
--- a/xfa/fxfa/parser/cxfa_image.cpp
+++ b/xfa/fxfa/parser/cxfa_image.cpp
@@ -26,6 +26,13 @@
} // namespace
+// static
+CXFA_Image* CXFA_Image::FromNode(CXFA_Node* pNode) {
+ return pNode && pNode->GetElementType() == XFA_Element::Image
+ ? static_cast<CXFA_Image*>(pNode)
+ : nullptr;
+}
+
CXFA_Image::CXFA_Image(CXFA_Document* doc, XFA_PacketType packet)
: CXFA_Node(doc,
packet,
diff --git a/xfa/fxfa/parser/cxfa_image.h b/xfa/fxfa/parser/cxfa_image.h
index bf84c93..035656c 100644
--- a/xfa/fxfa/parser/cxfa_image.h
+++ b/xfa/fxfa/parser/cxfa_image.h
@@ -11,6 +11,8 @@
class CXFA_Image final : public CXFA_Node {
public:
+ static CXFA_Image* FromNode(CXFA_Node* pNode);
+
CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED;
~CXFA_Image() override;
diff --git a/xfa/fxfa/parser/cxfa_line.cpp b/xfa/fxfa/parser/cxfa_line.cpp
index c7166b0..24b72e3 100644
--- a/xfa/fxfa/parser/cxfa_line.cpp
+++ b/xfa/fxfa/parser/cxfa_line.cpp
@@ -29,6 +29,13 @@
} // namespace
+// static
+CXFA_Line* CXFA_Line::FromNode(CXFA_Node* pNode) {
+ return pNode && pNode->GetElementType() == XFA_Element::Line
+ ? static_cast<CXFA_Line*>(pNode)
+ : nullptr;
+}
+
CXFA_Line::CXFA_Line(CXFA_Document* doc, XFA_PacketType packet)
: CXFA_Node(doc,
packet,
diff --git a/xfa/fxfa/parser/cxfa_line.h b/xfa/fxfa/parser/cxfa_line.h
index 9c63c95..deb647a 100644
--- a/xfa/fxfa/parser/cxfa_line.h
+++ b/xfa/fxfa/parser/cxfa_line.h
@@ -13,6 +13,8 @@
class CXFA_Line final : public CXFA_Node {
public:
+ static CXFA_Line* FromNode(CXFA_Node* pNode);
+
CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED;
~CXFA_Line() override;
diff --git a/xfa/fxfa/parser/cxfa_rectangle.cpp b/xfa/fxfa/parser/cxfa_rectangle.cpp
index f9b2874..ed43d3f 100644
--- a/xfa/fxfa/parser/cxfa_rectangle.cpp
+++ b/xfa/fxfa/parser/cxfa_rectangle.cpp
@@ -36,6 +36,13 @@
} // namespace
+// static
+CXFA_Rectangle* CXFA_Rectangle::FromNode(CXFA_Node* pNode) {
+ return pNode && pNode->GetElementType() == XFA_Element::Rectangle
+ ? static_cast<CXFA_Rectangle*>(pNode)
+ : nullptr;
+}
+
CXFA_Rectangle::CXFA_Rectangle(CXFA_Document* doc, XFA_PacketType packet)
: CXFA_Box(doc,
packet,
diff --git a/xfa/fxfa/parser/cxfa_rectangle.h b/xfa/fxfa/parser/cxfa_rectangle.h
index f5b9680..0004df5 100644
--- a/xfa/fxfa/parser/cxfa_rectangle.h
+++ b/xfa/fxfa/parser/cxfa_rectangle.h
@@ -14,6 +14,8 @@
class CXFA_Rectangle : public CXFA_Box {
public:
+ static CXFA_Rectangle* FromNode(CXFA_Node* pNode);
+
CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED;
~CXFA_Rectangle() override;
diff --git a/xfa/fxfa/parser/cxfa_text.cpp b/xfa/fxfa/parser/cxfa_text.cpp
index e10f853..ab62485 100644
--- a/xfa/fxfa/parser/cxfa_text.cpp
+++ b/xfa/fxfa/parser/cxfa_text.cpp
@@ -22,6 +22,13 @@
} // namespace
+// static
+CXFA_Text* CXFA_Text::FromNode(CXFA_Node* pNode) {
+ return pNode && pNode->GetElementType() == XFA_Element::Text
+ ? static_cast<CXFA_Text*>(pNode)
+ : nullptr;
+}
+
CXFA_Text::CXFA_Text(CXFA_Document* doc, XFA_PacketType packet)
: CXFA_Node(doc,
packet,
diff --git a/xfa/fxfa/parser/cxfa_text.h b/xfa/fxfa/parser/cxfa_text.h
index ad42509..e115891 100644
--- a/xfa/fxfa/parser/cxfa_text.h
+++ b/xfa/fxfa/parser/cxfa_text.h
@@ -12,6 +12,8 @@
class CXFA_Text final : public CXFA_Node {
public:
+ static CXFA_Text* FromNode(CXFA_Node* pNode);
+
CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED;
~CXFA_Text() override;
diff --git a/xfa/fxfa/parser/cxfa_value.cpp b/xfa/fxfa/parser/cxfa_value.cpp
index ac9df46..787de2e 100644
--- a/xfa/fxfa/parser/cxfa_value.cpp
+++ b/xfa/fxfa/parser/cxfa_value.cpp
@@ -70,43 +70,25 @@
}
CXFA_Arc* CXFA_Value::GetArcIfExists() const {
- CXFA_Node* node = GetFirstChild();
- if (!node || node->GetElementType() != XFA_Element::Arc)
- return nullptr;
- return static_cast<CXFA_Arc*>(node);
+ return CXFA_Arc::FromNode(GetFirstChild());
}
CXFA_Line* CXFA_Value::GetLineIfExists() const {
- CXFA_Node* node = GetFirstChild();
- if (!node || node->GetElementType() != XFA_Element::Line)
- return nullptr;
- return static_cast<CXFA_Line*>(node);
+ return CXFA_Line::FromNode(GetFirstChild());
}
CXFA_Rectangle* CXFA_Value::GetRectangleIfExists() const {
- CXFA_Node* node = GetFirstChild();
- if (!node || node->GetElementType() != XFA_Element::Rectangle)
- return nullptr;
- return static_cast<CXFA_Rectangle*>(node);
+ return CXFA_Rectangle::FromNode(GetFirstChild());
}
CXFA_Text* CXFA_Value::GetTextIfExists() const {
- CXFA_Node* node = GetFirstChild();
- if (!node || node->GetElementType() != XFA_Element::Text)
- return nullptr;
- return static_cast<CXFA_Text*>(node);
+ return CXFA_Text::FromNode(GetFirstChild());
}
CXFA_ExData* CXFA_Value::GetExDataIfExists() const {
- CXFA_Node* node = GetFirstChild();
- if (!node || node->GetElementType() != XFA_Element::ExData)
- return nullptr;
- return static_cast<CXFA_ExData*>(node);
+ return CXFA_ExData::FromNode(GetFirstChild());
}
CXFA_Image* CXFA_Value::GetImageIfExists() const {
- CXFA_Node* node = GetFirstChild();
- if (!node || node->GetElementType() != XFA_Element::Image)
- return nullptr;
- return static_cast<CXFA_Image*>(node);
+ return CXFA_Image::FromNode(GetFirstChild());
}