summaryrefslogtreecommitdiff
path: root/fxjs/xfa/cjx_object.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fxjs/xfa/cjx_object.cpp')
-rw-r--r--fxjs/xfa/cjx_object.cpp122
1 files changed, 52 insertions, 70 deletions
diff --git a/fxjs/xfa/cjx_object.cpp b/fxjs/xfa/cjx_object.cpp
index 45089f68da..f1b863ddc1 100644
--- a/fxjs/xfa/cjx_object.cpp
+++ b/fxjs/xfa/cjx_object.cpp
@@ -152,9 +152,8 @@ void CJX_Object::className(CFXJSE_Value* pValue,
int32_t CJX_Object::Subform_and_SubformSet_InstanceIndex() {
int32_t index = 0;
- for (CXFA_Node* pNode =
- ToNode(GetXFAObject())->GetNodeItem(XFA_NODEITEM_PrevSibling);
- pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_PrevSibling)) {
+ for (CXFA_Node* pNode = ToNode(GetXFAObject())->GetPrevSibling(); pNode;
+ pNode = pNode->GetPrevSibling()) {
if ((pNode->GetElementType() != XFA_Element::Subform) &&
(pNode->GetElementType() != XFA_Element::SubformSet)) {
break;
@@ -452,7 +451,8 @@ bool CJX_Object::SetCData(XFA_Attribute eAttr,
const WideString& wsValue,
bool bNotify,
bool bScriptModify) {
- void* pKey = GetMapKey_Element(GetXFAObject()->GetElementType(), eAttr);
+ CXFA_Node* xfaObj = ToNode(GetXFAObject());
+ void* pKey = GetMapKey_Element(xfaObj->GetElementType(), eAttr);
OnChanging(eAttr, bNotify);
if (eAttr == XFA_Attribute::Value) {
WideString* pClone = new WideString(wsValue);
@@ -460,40 +460,35 @@ bool CJX_Object::SetCData(XFA_Attribute eAttr,
} else {
SetMapModuleString(pKey, wsValue.AsStringView());
if (eAttr == XFA_Attribute::Name)
- ToNode(GetXFAObject())->UpdateNameHash();
+ xfaObj->UpdateNameHash();
}
OnChanged(eAttr, bNotify, bScriptModify);
- if (!ToNode(GetXFAObject())->IsNeedSavingXMLNode() ||
- eAttr == XFA_Attribute::QualifiedName ||
+ if (!xfaObj->IsNeedSavingXMLNode() || eAttr == XFA_Attribute::QualifiedName ||
eAttr == XFA_Attribute::BindingNode) {
return true;
}
if (eAttr == XFA_Attribute::Name &&
- (GetXFAObject()->GetElementType() == XFA_Element::DataValue ||
- GetXFAObject()->GetElementType() == XFA_Element::DataGroup)) {
+ (xfaObj->GetElementType() == XFA_Element::DataValue ||
+ xfaObj->GetElementType() == XFA_Element::DataGroup)) {
return true;
}
- auto* elem =
- static_cast<CFX_XMLElement*>(ToNode(GetXFAObject())->GetXMLMappingNode());
+ auto* elem = static_cast<CFX_XMLElement*>(xfaObj->GetXMLMappingNode());
if (eAttr == XFA_Attribute::Value) {
FX_XMLNODETYPE eXMLType = elem->GetType();
switch (eXMLType) {
case FX_XMLNODE_Element:
- if (ToNode(GetXFAObject())->IsAttributeInXML()) {
+ if (xfaObj->IsAttributeInXML()) {
elem->SetString(WideString(GetCData(XFA_Attribute::QualifiedName)),
wsValue);
} else {
bool bDeleteChildren = true;
- if (ToNode(GetXFAObject())->GetPacketType() ==
- XFA_PacketType::Datasets) {
- for (CXFA_Node* pChildDataNode =
- ToNode(GetXFAObject())
- ->GetNodeItem(XFA_NODEITEM_FirstChild);
- pChildDataNode; pChildDataNode = pChildDataNode->GetNodeItem(
- XFA_NODEITEM_NextSibling)) {
+ if (xfaObj->GetPacketType() == XFA_PacketType::Datasets) {
+ for (CXFA_Node* pChildDataNode = xfaObj->GetFirstChild();
+ pChildDataNode;
+ pChildDataNode = pChildDataNode->GetNextSibling()) {
if (!pChildDataNode->GetBindItems()->empty()) {
bDeleteChildren = false;
break;
@@ -507,7 +502,7 @@ bool CJX_Object::SetCData(XFA_Attribute eAttr,
}
break;
case FX_XMLNODE_Text:
- static_cast<CFX_XMLText*>(ToNode(GetXFAObject())->GetXMLMappingNode())
+ static_cast<CFX_XMLText*>(xfaObj->GetXMLMappingNode())
->SetText(wsValue);
break;
default:
@@ -529,31 +524,30 @@ void CJX_Object::SetAttributeValue(const WideString& wsValue,
const WideString& wsXMLValue,
bool bNotify,
bool bScriptModify) {
+ auto* xfaObj = ToNode(GetXFAObject());
+
void* pKey =
- GetMapKey_Element(GetXFAObject()->GetElementType(), XFA_Attribute::Value);
+ GetMapKey_Element(xfaObj->GetElementType(), XFA_Attribute::Value);
OnChanging(XFA_Attribute::Value, bNotify);
WideString* pClone = new WideString(wsValue);
SetUserData(pKey, pClone, &deleteWideStringCallBack);
OnChanged(XFA_Attribute::Value, bNotify, bScriptModify);
- if (!ToNode(GetXFAObject())->IsNeedSavingXMLNode())
+ if (!xfaObj->IsNeedSavingXMLNode())
return;
- auto* elem =
- static_cast<CFX_XMLElement*>(ToNode(GetXFAObject())->GetXMLMappingNode());
+ auto* elem = static_cast<CFX_XMLElement*>(xfaObj->GetXMLMappingNode());
FX_XMLNODETYPE eXMLType = elem->GetType();
switch (eXMLType) {
case FX_XMLNODE_Element:
- if (ToNode(GetXFAObject())->IsAttributeInXML()) {
+ if (xfaObj->IsAttributeInXML()) {
elem->SetString(WideString(GetCData(XFA_Attribute::QualifiedName)),
wsXMLValue);
} else {
bool bDeleteChildren = true;
- if (ToNode(GetXFAObject())->GetPacketType() ==
- XFA_PacketType::Datasets) {
- for (CXFA_Node* pChildDataNode =
- ToNode(GetXFAObject())->GetNodeItem(XFA_NODEITEM_FirstChild);
- pChildDataNode; pChildDataNode = pChildDataNode->GetNodeItem(
- XFA_NODEITEM_NextSibling)) {
+ if (xfaObj->GetPacketType() == XFA_PacketType::Datasets) {
+ for (CXFA_Node* pChildDataNode = xfaObj->GetFirstChild();
+ pChildDataNode;
+ pChildDataNode = pChildDataNode->GetNextSibling()) {
if (!pChildDataNode->GetBindItems()->empty()) {
bDeleteChildren = false;
break;
@@ -567,7 +561,7 @@ void CJX_Object::SetAttributeValue(const WideString& wsValue,
}
break;
case FX_XMLNODE_Text:
- static_cast<CFX_XMLText*>(ToNode(GetXFAObject())->GetXMLMappingNode())
+ static_cast<CFX_XMLText*>(xfaObj->GetXMLMappingNode())
->SetText(wsXMLValue);
break;
default:
@@ -633,7 +627,7 @@ bool CJX_Object::SetContent(const WideString& wsContent,
if (!pValue)
break;
- CXFA_Node* pChildValue = pValue->GetNodeItem(XFA_NODEITEM_FirstChild);
+ CXFA_Node* pChildValue = pValue->GetFirstChild();
ASSERT(pChildValue);
pChildValue->JSObject()->SetCData(XFA_Attribute::ContentType,
L"text/xml", false, false);
@@ -664,8 +658,7 @@ bool CJX_Object::SetContent(const WideString& wsContent,
iSize = wsSaveTextArray.size();
}
if (iSize == 0) {
- while (CXFA_Node* pChildNode =
- pBind->GetNodeItem(XFA_NODEITEM_FirstChild)) {
+ while (CXFA_Node* pChildNode = pBind->GetFirstChild()) {
pBind->RemoveChild(pChildNode, true);
}
} else {
@@ -687,15 +680,12 @@ bool CJX_Object::SetContent(const WideString& wsContent,
} else if (iDatas > iSize) {
size_t iDelNodes = iDatas - iSize;
while (iDelNodes-- > 0) {
- pBind->RemoveChild(pBind->GetNodeItem(XFA_NODEITEM_FirstChild),
- true);
+ pBind->RemoveChild(pBind->GetFirstChild(), true);
}
}
int32_t i = 0;
- for (CXFA_Node* pValueNode =
- pBind->GetNodeItem(XFA_NODEITEM_FirstChild);
- pValueNode; pValueNode = pValueNode->GetNodeItem(
- XFA_NODEITEM_NextSibling)) {
+ for (CXFA_Node* pValueNode = pBind->GetFirstChild(); pValueNode;
+ pValueNode = pValueNode->GetNextSibling()) {
pValueNode->JSObject()->SetAttributeValue(
wsSaveTextArray[i], wsSaveTextArray[i], false, false);
i++;
@@ -718,7 +708,7 @@ bool CJX_Object::SetContent(const WideString& wsContent,
if (!pValue)
break;
- CXFA_Node* pChildValue = pValue->GetNodeItem(XFA_NODEITEM_FirstChild);
+ CXFA_Node* pChildValue = pValue->GetFirstChild();
ASSERT(pChildValue);
pChildValue->JSObject()->SetContent(wsContent, wsContent, bNotify,
bScriptModify, false);
@@ -751,8 +741,7 @@ bool CJX_Object::SetContent(const WideString& wsContent,
}
}
- CXFA_Node* pContentRawDataNode =
- ToNode(GetXFAObject())->GetNodeItem(XFA_NODEITEM_FirstChild);
+ CXFA_Node* pContentRawDataNode = ToNode(GetXFAObject())->GetFirstChild();
if (!pContentRawDataNode) {
pContentRawDataNode =
ToNode(GetXFAObject())
@@ -772,13 +761,12 @@ bool CJX_Object::SetContent(const WideString& wsContent,
pNode = ToNode(GetXFAObject());
if (bSyncData &&
ToNode(GetXFAObject())->GetPacketType() == XFA_PacketType::Form) {
- CXFA_Node* pParent =
- ToNode(GetXFAObject())->GetNodeItem(XFA_NODEITEM_Parent);
+ CXFA_Node* pParent = ToNode(GetXFAObject())->GetParent();
if (pParent) {
- pParent = pParent->GetNodeItem(XFA_NODEITEM_Parent);
+ pParent = pParent->GetParent();
}
if (pParent && pParent->GetElementType() == XFA_Element::Value) {
- pParent = pParent->GetNodeItem(XFA_NODEITEM_Parent);
+ pParent = pParent->GetParent();
if (pParent && pParent->IsContainerNode()) {
pBindNode = pParent->GetBindData();
if (pBindNode) {
@@ -826,7 +814,7 @@ Optional<WideString> CJX_Object::TryContent(bool bScriptModify, bool bProto) {
if (!pValue)
return {};
- CXFA_Node* pChildValue = pValue->GetNodeItem(XFA_NODEITEM_FirstChild);
+ CXFA_Node* pChildValue = pValue->GetFirstChild();
if (pChildValue && XFA_FieldIsMultiListBox(ToNode(GetXFAObject()))) {
pChildValue->JSObject()->SetAttribute(XFA_Attribute::ContentType,
L"text/xml", false);
@@ -837,8 +825,7 @@ Optional<WideString> CJX_Object::TryContent(bool bScriptModify, bool bProto) {
}
break;
case XFA_ObjectType::ContentNode: {
- CXFA_Node* pContentRawDataNode =
- ToNode(GetXFAObject())->GetNodeItem(XFA_NODEITEM_FirstChild);
+ CXFA_Node* pContentRawDataNode = ToNode(GetXFAObject())->GetFirstChild();
if (!pContentRawDataNode) {
XFA_Element element = XFA_Element::Sharptext;
if (ToNode(GetXFAObject())->GetElementType() == XFA_Element::ExData) {
@@ -917,7 +904,7 @@ std::pair<CXFA_Node*, int32_t> CJX_Object::GetPropertyInternal(
int32_t iCount = 0;
for (CXFA_Node* pNode = xfaNode->GetChildNode(); pNode;
- pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
+ pNode = pNode->GetNextSibling()) {
if (pNode->GetElementType() == eProperty) {
iCount++;
if (iCount > index)
@@ -941,7 +928,7 @@ CXFA_Node* CJX_Object::GetOrCreatePropertyInternal(int32_t index,
if (xfaNode->HasPropertyFlags(eProperty, XFA_PROPERTYFLAG_OneOf)) {
for (CXFA_Node* pNode = xfaNode->GetChildNode(); pNode;
- pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
+ pNode = pNode->GetNextSibling()) {
if (xfaNode->HasPropertyFlags(pNode->GetElementType(),
XFA_PROPERTYFLAG_OneOf)) {
return nullptr;
@@ -1185,15 +1172,13 @@ void CJX_Object::MoveBufferMapData(CXFA_Object* pSrcModule,
if (!pSrcModule || !pDstModule)
return;
- CXFA_Node* pSrcChild =
- ToNode(pSrcModule)->GetNodeItem(XFA_NODEITEM_FirstChild);
- CXFA_Node* pDstChild =
- ToNode(pDstModule)->GetNodeItem(XFA_NODEITEM_FirstChild);
+ CXFA_Node* pSrcChild = ToNode(pSrcModule)->GetFirstChild();
+ CXFA_Node* pDstChild = ToNode(pDstModule)->GetFirstChild();
while (pSrcChild && pDstChild) {
MoveBufferMapData(pSrcChild, pDstChild);
- pSrcChild = pSrcChild->GetNodeItem(XFA_NODEITEM_NextSibling);
- pDstChild = pDstChild->GetNodeItem(XFA_NODEITEM_NextSibling);
+ pSrcChild = pSrcChild->GetNextSibling();
+ pDstChild = pDstChild->GetNextSibling();
}
ToNode(pSrcModule)->JSObject()->MoveBufferMapData(pDstModule);
}
@@ -1270,18 +1255,17 @@ void CJX_Object::Script_Attribute_String(CFXJSE_Value* pValue,
if (!pProtoNode)
return;
- CXFA_Node* pHeadChild =
- ToNode(GetXFAObject())->GetNodeItem(XFA_NODEITEM_FirstChild);
+ CXFA_Node* pHeadChild = ToNode(GetXFAObject())->GetFirstChild();
while (pHeadChild) {
- CXFA_Node* pSibling = pHeadChild->GetNodeItem(XFA_NODEITEM_NextSibling);
+ CXFA_Node* pSibling = pHeadChild->GetNextSibling();
ToNode(GetXFAObject())->RemoveChild(pHeadChild, true);
pHeadChild = pSibling;
}
std::unique_ptr<CXFA_Node> pProtoForm(pProtoNode->CloneTemplateToForm(true));
- pHeadChild = pProtoForm->GetNodeItem(XFA_NODEITEM_FirstChild);
+ pHeadChild = pProtoForm->GetFirstChild();
while (pHeadChild) {
- CXFA_Node* pSibling = pHeadChild->GetNodeItem(XFA_NODEITEM_NextSibling);
+ CXFA_Node* pSibling = pHeadChild->GetNextSibling();
pProtoForm->RemoveChild(pHeadChild, true);
ToNode(GetXFAObject())->InsertChild(pHeadChild, nullptr);
pHeadChild = pSibling;
@@ -1619,9 +1603,8 @@ void CJX_Object::Script_Som_InstanceIndex(CFXJSE_Value* pValue,
int32_t iTo = pValue->ToInteger();
int32_t iFrom = Subform_and_SubformSet_InstanceIndex();
CXFA_Node* pManagerNode = nullptr;
- for (CXFA_Node* pNode =
- ToNode(GetXFAObject())->GetNodeItem(XFA_NODEITEM_PrevSibling);
- pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_PrevSibling)) {
+ for (CXFA_Node* pNode = ToNode(GetXFAObject())->GetPrevSibling(); pNode;
+ pNode = pNode->GetPrevSibling()) {
if (pNode->GetElementType() == XFA_Element::InstanceManager) {
pManagerNode = pNode;
break;
@@ -1658,9 +1641,8 @@ void CJX_Object::Script_Subform_InstanceManager(CFXJSE_Value* pValue,
WideString wsName = GetCData(XFA_Attribute::Name);
CXFA_Node* pInstanceMgr = nullptr;
- for (CXFA_Node* pNode =
- ToNode(GetXFAObject())->GetNodeItem(XFA_NODEITEM_PrevSibling);
- pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_PrevSibling)) {
+ for (CXFA_Node* pNode = ToNode(GetXFAObject())->GetPrevSibling(); pNode;
+ pNode = pNode->GetPrevSibling()) {
if (pNode->GetElementType() == XFA_Element::InstanceManager) {
WideString wsInstMgrName =
pNode->JSObject()->GetCData(XFA_Attribute::Name);