| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "xfa/fxfa/parser/xfa_basic_imp.h" | 7 #include "xfa/fxfa/parser/xfa_basic_imp.h" |
| 8 | 8 |
| 9 #include "core/fxcrt/include/fx_ext.h" | 9 #include "core/fxcrt/include/fx_ext.h" |
| 10 #include "xfa/fgas/crt/fgas_codepage.h" | 10 #include "xfa/fgas/crt/fgas_codepage.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 int32_t iMid = (iStart + iEnd) / 2; | 29 int32_t iMid = (iStart + iEnd) / 2; |
| 30 const XFA_PACKETINFO* pInfo = g_XFAPacketData + iMid; | 30 const XFA_PACKETINFO* pInfo = g_XFAPacketData + iMid; |
| 31 if (uHash == pInfo->uHash) { | 31 if (uHash == pInfo->uHash) { |
| 32 return pInfo; | 32 return pInfo; |
| 33 } else if (uHash < pInfo->uHash) { | 33 } else if (uHash < pInfo->uHash) { |
| 34 iEnd = iMid - 1; | 34 iEnd = iMid - 1; |
| 35 } else { | 35 } else { |
| 36 iStart = iMid + 1; | 36 iStart = iMid + 1; |
| 37 } | 37 } |
| 38 } while (iStart <= iEnd); | 38 } while (iStart <= iEnd); |
| 39 return NULL; | 39 return nullptr; |
| 40 } | 40 } |
| 41 | 41 |
| 42 const XFA_PACKETINFO* XFA_GetPacketByID(uint32_t dwPacket) { | 42 const XFA_PACKETINFO* XFA_GetPacketByID(uint32_t dwPacket) { |
| 43 int32_t iStart = 0, iEnd = g_iXFAPacketCount - 1; | 43 int32_t iStart = 0, iEnd = g_iXFAPacketCount - 1; |
| 44 do { | 44 do { |
| 45 int32_t iMid = (iStart + iEnd) / 2; | 45 int32_t iMid = (iStart + iEnd) / 2; |
| 46 uint32_t dwFind = (g_XFAPacketData + iMid)->eName; | 46 uint32_t dwFind = (g_XFAPacketData + iMid)->eName; |
| 47 if (dwPacket == dwFind) { | 47 if (dwPacket == dwFind) { |
| 48 return g_XFAPacketData + iMid; | 48 return g_XFAPacketData + iMid; |
| 49 } else if (dwPacket < dwFind) { | 49 } else if (dwPacket < dwFind) { |
| 50 iEnd = iMid - 1; | 50 iEnd = iMid - 1; |
| 51 } else { | 51 } else { |
| 52 iStart = iMid + 1; | 52 iStart = iMid + 1; |
| 53 } | 53 } |
| 54 } while (iStart <= iEnd); | 54 } while (iStart <= iEnd); |
| 55 return NULL; | 55 return nullptr; |
| 56 } | 56 } |
| 57 | 57 |
| 58 const XFA_PACKETINFO* XFA_GetPacketByIndex(XFA_PACKET ePacket) { | 58 const XFA_PACKETINFO* XFA_GetPacketByIndex(XFA_PACKET ePacket) { |
| 59 return g_XFAPacketData + ePacket; | 59 return g_XFAPacketData + ePacket; |
| 60 } | 60 } |
| 61 | 61 |
| 62 const XFA_ATTRIBUTEENUMINFO* XFA_GetAttributeEnumByName( | 62 const XFA_ATTRIBUTEENUMINFO* XFA_GetAttributeEnumByName( |
| 63 const CFX_WideStringC& wsName) { | 63 const CFX_WideStringC& wsName) { |
| 64 if (wsName.IsEmpty()) | 64 if (wsName.IsEmpty()) |
| 65 return nullptr; | 65 return nullptr; |
| 66 | 66 |
| 67 uint32_t uHash = FX_HashCode_GetW(wsName, false); | 67 uint32_t uHash = FX_HashCode_GetW(wsName, false); |
| 68 int32_t iStart = 0; | 68 int32_t iStart = 0; |
| 69 int32_t iEnd = g_iXFAEnumCount - 1; | 69 int32_t iEnd = g_iXFAEnumCount - 1; |
| 70 do { | 70 do { |
| 71 int32_t iMid = (iStart + iEnd) / 2; | 71 int32_t iMid = (iStart + iEnd) / 2; |
| 72 const XFA_ATTRIBUTEENUMINFO* pInfo = g_XFAEnumData + iMid; | 72 const XFA_ATTRIBUTEENUMINFO* pInfo = g_XFAEnumData + iMid; |
| 73 if (uHash == pInfo->uHash) { | 73 if (uHash == pInfo->uHash) { |
| 74 return pInfo; | 74 return pInfo; |
| 75 } else if (uHash < pInfo->uHash) { | 75 } else if (uHash < pInfo->uHash) { |
| 76 iEnd = iMid - 1; | 76 iEnd = iMid - 1; |
| 77 } else { | 77 } else { |
| 78 iStart = iMid + 1; | 78 iStart = iMid + 1; |
| 79 } | 79 } |
| 80 } while (iStart <= iEnd); | 80 } while (iStart <= iEnd); |
| 81 return NULL; | 81 return nullptr; |
| 82 } | 82 } |
| 83 const XFA_ATTRIBUTEENUMINFO* XFA_GetAttributeEnumByID(XFA_ATTRIBUTEENUM eName) { | 83 const XFA_ATTRIBUTEENUMINFO* XFA_GetAttributeEnumByID(XFA_ATTRIBUTEENUM eName) { |
| 84 return g_XFAEnumData + eName; | 84 return g_XFAEnumData + eName; |
| 85 } | 85 } |
| 86 | 86 |
| 87 const XFA_ATTRIBUTEINFO* XFA_GetAttributeByName(const CFX_WideStringC& wsName) { | 87 const XFA_ATTRIBUTEINFO* XFA_GetAttributeByName(const CFX_WideStringC& wsName) { |
| 88 if (wsName.IsEmpty()) | 88 if (wsName.IsEmpty()) |
| 89 return nullptr; | 89 return nullptr; |
| 90 | 90 |
| 91 uint32_t uHash = FX_HashCode_GetW(wsName, false); | 91 uint32_t uHash = FX_HashCode_GetW(wsName, false); |
| 92 int32_t iStart = 0; | 92 int32_t iStart = 0; |
| 93 int32_t iEnd = g_iXFAAttributeCount - 1; | 93 int32_t iEnd = g_iXFAAttributeCount - 1; |
| 94 do { | 94 do { |
| 95 int32_t iMid = (iStart + iEnd) / 2; | 95 int32_t iMid = (iStart + iEnd) / 2; |
| 96 const XFA_ATTRIBUTEINFO* pInfo = g_XFAAttributeData + iMid; | 96 const XFA_ATTRIBUTEINFO* pInfo = g_XFAAttributeData + iMid; |
| 97 if (uHash == pInfo->uHash) { | 97 if (uHash == pInfo->uHash) { |
| 98 return pInfo; | 98 return pInfo; |
| 99 } else if (uHash < pInfo->uHash) { | 99 } else if (uHash < pInfo->uHash) { |
| 100 iEnd = iMid - 1; | 100 iEnd = iMid - 1; |
| 101 } else { | 101 } else { |
| 102 iStart = iMid + 1; | 102 iStart = iMid + 1; |
| 103 } | 103 } |
| 104 } while (iStart <= iEnd); | 104 } while (iStart <= iEnd); |
| 105 return nullptr; | 105 return nullptr; |
| 106 } | 106 } |
| 107 const XFA_ATTRIBUTEINFO* XFA_GetAttributeByID(XFA_ATTRIBUTE eName) { | 107 const XFA_ATTRIBUTEINFO* XFA_GetAttributeByID(XFA_ATTRIBUTE eName) { |
| 108 return (eName < g_iXFAAttributeCount) ? (g_XFAAttributeData + eName) : NULL; | 108 return (eName < g_iXFAAttributeCount) ? (g_XFAAttributeData + eName) |
| 109 : nullptr; |
| 109 } | 110 } |
| 110 FX_BOOL XFA_GetAttributeDefaultValue(void*& pValue, | 111 FX_BOOL XFA_GetAttributeDefaultValue(void*& pValue, |
| 111 XFA_ELEMENT eElement, | 112 XFA_ELEMENT eElement, |
| 112 XFA_ATTRIBUTE eAttribute, | 113 XFA_ATTRIBUTE eAttribute, |
| 113 XFA_ATTRIBUTETYPE eType, | 114 XFA_ATTRIBUTETYPE eType, |
| 114 uint32_t dwPacket) { | 115 uint32_t dwPacket) { |
| 115 const XFA_ATTRIBUTEINFO* pInfo = XFA_GetAttributeByID(eAttribute); | 116 const XFA_ATTRIBUTEINFO* pInfo = XFA_GetAttributeByID(eAttribute); |
| 116 if (pInfo == NULL) { | 117 if (!pInfo) |
| 117 return FALSE; | 118 return FALSE; |
| 118 } | 119 |
| 119 if (dwPacket && (dwPacket & pInfo->dwPackets) == 0) { | 120 if (dwPacket && (dwPacket & pInfo->dwPackets) == 0) { |
| 120 return FALSE; | 121 return FALSE; |
| 121 } | 122 } |
| 122 if (pInfo->eType == eType) { | 123 if (pInfo->eType == eType) { |
| 123 pValue = pInfo->pDefValue; | 124 pValue = pInfo->pDefValue; |
| 124 return TRUE; | 125 return TRUE; |
| 125 } else if (pInfo->eType == XFA_ATTRIBUTETYPE_NOTSURE) { | 126 } else if (pInfo->eType == XFA_ATTRIBUTETYPE_NOTSURE) { |
| 126 const XFA_NOTSUREATTRIBUTE* pAttr = | 127 const XFA_NOTSUREATTRIBUTE* pAttr = |
| 127 XFA_GetNotsureAttribute(eElement, eAttribute, eType); | 128 XFA_GetNotsureAttribute(eElement, eAttribute, eType); |
| 128 if (pAttr) { | 129 if (pAttr) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 143 return XFA_ATTRIBUTEENUM_Unknown; | 144 return XFA_ATTRIBUTEENUM_Unknown; |
| 144 } | 145 } |
| 145 CFX_WideStringC XFA_GetAttributeDefaultValue_Cdata(XFA_ELEMENT eElement, | 146 CFX_WideStringC XFA_GetAttributeDefaultValue_Cdata(XFA_ELEMENT eElement, |
| 146 XFA_ATTRIBUTE eAttribute, | 147 XFA_ATTRIBUTE eAttribute, |
| 147 uint32_t dwPacket) { | 148 uint32_t dwPacket) { |
| 148 void* pValue; | 149 void* pValue; |
| 149 if (XFA_GetAttributeDefaultValue(pValue, eElement, eAttribute, | 150 if (XFA_GetAttributeDefaultValue(pValue, eElement, eAttribute, |
| 150 XFA_ATTRIBUTETYPE_Cdata, dwPacket)) { | 151 XFA_ATTRIBUTETYPE_Cdata, dwPacket)) { |
| 151 return (const FX_WCHAR*)pValue; | 152 return (const FX_WCHAR*)pValue; |
| 152 } | 153 } |
| 153 return NULL; | 154 return nullptr; |
| 154 } | 155 } |
| 155 FX_BOOL XFA_GetAttributeDefaultValue_Boolean(XFA_ELEMENT eElement, | 156 FX_BOOL XFA_GetAttributeDefaultValue_Boolean(XFA_ELEMENT eElement, |
| 156 XFA_ATTRIBUTE eAttribute, | 157 XFA_ATTRIBUTE eAttribute, |
| 157 uint32_t dwPacket) { | 158 uint32_t dwPacket) { |
| 158 void* pValue; | 159 void* pValue; |
| 159 if (XFA_GetAttributeDefaultValue(pValue, eElement, eAttribute, | 160 if (XFA_GetAttributeDefaultValue(pValue, eElement, eAttribute, |
| 160 XFA_ATTRIBUTETYPE_Boolean, dwPacket)) { | 161 XFA_ATTRIBUTETYPE_Boolean, dwPacket)) { |
| 161 return (FX_BOOL)(uintptr_t)pValue; | 162 return (FX_BOOL)(uintptr_t)pValue; |
| 162 } | 163 } |
| 163 return FALSE; | 164 return FALSE; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 185 int32_t iMid = (iStart + iEnd) / 2; | 186 int32_t iMid = (iStart + iEnd) / 2; |
| 186 const XFA_ELEMENTINFO* pInfo = g_XFAElementData + iMid; | 187 const XFA_ELEMENTINFO* pInfo = g_XFAElementData + iMid; |
| 187 if (uHash == pInfo->uHash) { | 188 if (uHash == pInfo->uHash) { |
| 188 return pInfo; | 189 return pInfo; |
| 189 } else if (uHash < pInfo->uHash) { | 190 } else if (uHash < pInfo->uHash) { |
| 190 iEnd = iMid - 1; | 191 iEnd = iMid - 1; |
| 191 } else { | 192 } else { |
| 192 iStart = iMid + 1; | 193 iStart = iMid + 1; |
| 193 } | 194 } |
| 194 } while (iStart <= iEnd); | 195 } while (iStart <= iEnd); |
| 195 return NULL; | 196 return nullptr; |
| 196 } | 197 } |
| 197 const XFA_ELEMENTINFO* XFA_GetElementByID(XFA_ELEMENT eName) { | 198 const XFA_ELEMENTINFO* XFA_GetElementByID(XFA_ELEMENT eName) { |
| 198 return (eName < g_iXFAElementCount) ? (g_XFAElementData + eName) : NULL; | 199 return (eName < g_iXFAElementCount) ? (g_XFAElementData + eName) : nullptr; |
| 199 } | 200 } |
| 200 const uint16_t* XFA_GetElementChildren(XFA_ELEMENT eElement, int32_t& iCount) { | 201 const uint16_t* XFA_GetElementChildren(XFA_ELEMENT eElement, int32_t& iCount) { |
| 201 if (eElement >= g_iXFAElementCount) { | 202 if (eElement >= g_iXFAElementCount) { |
| 202 return NULL; | 203 return nullptr; |
| 203 } | 204 } |
| 204 const XFA_ELEMENTHIERARCHY* pElement = g_XFAElementChildrenIndex + eElement; | 205 const XFA_ELEMENTHIERARCHY* pElement = g_XFAElementChildrenIndex + eElement; |
| 205 iCount = pElement->wCount; | 206 iCount = pElement->wCount; |
| 206 return g_XFAElementChildrenData + pElement->wStart; | 207 return g_XFAElementChildrenData + pElement->wStart; |
| 207 } | 208 } |
| 208 const uint8_t* XFA_GetElementAttributes(XFA_ELEMENT eElement, int32_t& iCount) { | 209 const uint8_t* XFA_GetElementAttributes(XFA_ELEMENT eElement, int32_t& iCount) { |
| 209 if (eElement >= g_iXFAElementCount) { | 210 if (eElement >= g_iXFAElementCount) { |
| 210 return NULL; | 211 return nullptr; |
| 211 } | 212 } |
| 212 const XFA_ELEMENTHIERARCHY* pElement = g_XFAElementAttributeIndex + eElement; | 213 const XFA_ELEMENTHIERARCHY* pElement = g_XFAElementAttributeIndex + eElement; |
| 213 iCount = pElement->wCount; | 214 iCount = pElement->wCount; |
| 214 return g_XFAElementAttributeData + pElement->wStart; | 215 return g_XFAElementAttributeData + pElement->wStart; |
| 215 } | 216 } |
| 216 | 217 |
| 217 const XFA_ATTRIBUTEINFO* XFA_GetAttributeOfElement(XFA_ELEMENT eElement, | 218 const XFA_ATTRIBUTEINFO* XFA_GetAttributeOfElement(XFA_ELEMENT eElement, |
| 218 XFA_ATTRIBUTE eAttribute, | 219 XFA_ATTRIBUTE eAttribute, |
| 219 uint32_t dwPacket) { | 220 uint32_t dwPacket) { |
| 220 int32_t iCount = 0; | 221 int32_t iCount = 0; |
| 221 const uint8_t* pAttr = XFA_GetElementAttributes(eElement, iCount); | 222 const uint8_t* pAttr = XFA_GetElementAttributes(eElement, iCount); |
| 222 if (!pAttr || iCount < 1) | 223 if (!pAttr || iCount < 1) |
| 223 return nullptr; | 224 return nullptr; |
| 224 | 225 |
| 225 if (!std::binary_search(pAttr, pAttr + iCount, eAttribute)) | 226 if (!std::binary_search(pAttr, pAttr + iCount, eAttribute)) |
| 226 return nullptr; | 227 return nullptr; |
| 227 | 228 |
| 228 const XFA_ATTRIBUTEINFO* pInfo = XFA_GetAttributeByID(eAttribute); | 229 const XFA_ATTRIBUTEINFO* pInfo = XFA_GetAttributeByID(eAttribute); |
| 229 ASSERT(pInfo); | 230 ASSERT(pInfo); |
| 230 if (dwPacket == XFA_XDPPACKET_UNKNOWN) | 231 if (dwPacket == XFA_XDPPACKET_UNKNOWN) |
| 231 return pInfo; | 232 return pInfo; |
| 232 return (dwPacket & pInfo->dwPackets) ? pInfo : nullptr; | 233 return (dwPacket & pInfo->dwPackets) ? pInfo : nullptr; |
| 233 } | 234 } |
| 234 | 235 |
| 235 const XFA_PROPERTY* XFA_GetElementProperties(XFA_ELEMENT eElement, | 236 const XFA_PROPERTY* XFA_GetElementProperties(XFA_ELEMENT eElement, |
| 236 int32_t& iCount) { | 237 int32_t& iCount) { |
| 237 if (eElement >= g_iXFAElementCount) { | 238 if (eElement >= g_iXFAElementCount) { |
| 238 return NULL; | 239 return nullptr; |
| 239 } | 240 } |
| 240 const XFA_ELEMENTHIERARCHY* pElement = g_XFAElementPropertyIndex + eElement; | 241 const XFA_ELEMENTHIERARCHY* pElement = g_XFAElementPropertyIndex + eElement; |
| 241 iCount = pElement->wCount; | 242 iCount = pElement->wCount; |
| 242 return g_XFAElementPropertyData + pElement->wStart; | 243 return g_XFAElementPropertyData + pElement->wStart; |
| 243 } | 244 } |
| 244 const XFA_PROPERTY* XFA_GetPropertyOfElement(XFA_ELEMENT eElement, | 245 const XFA_PROPERTY* XFA_GetPropertyOfElement(XFA_ELEMENT eElement, |
| 245 XFA_ELEMENT eProperty, | 246 XFA_ELEMENT eProperty, |
| 246 uint32_t dwPacket) { | 247 uint32_t dwPacket) { |
| 247 int32_t iCount = 0; | 248 int32_t iCount = 0; |
| 248 const XFA_PROPERTY* pProperty = XFA_GetElementProperties(eElement, iCount); | 249 const XFA_PROPERTY* pProperty = XFA_GetElementProperties(eElement, iCount); |
| 249 if (pProperty == NULL || iCount < 1) { | 250 if (!pProperty || iCount < 1) |
| 250 return NULL; | 251 return nullptr; |
| 251 } | 252 |
| 252 int32_t iStart = 0, iEnd = iCount - 1, iMid; | 253 int32_t iStart = 0, iEnd = iCount - 1, iMid; |
| 253 do { | 254 do { |
| 254 iMid = (iStart + iEnd) / 2; | 255 iMid = (iStart + iEnd) / 2; |
| 255 XFA_ELEMENT eName = (XFA_ELEMENT)pProperty[iMid].eName; | 256 XFA_ELEMENT eName = (XFA_ELEMENT)pProperty[iMid].eName; |
| 256 if (eProperty == eName) { | 257 if (eProperty == eName) { |
| 257 break; | 258 break; |
| 258 } else if (eProperty < eName) { | 259 } else if (eProperty < eName) { |
| 259 iEnd = iMid - 1; | 260 iEnd = iMid - 1; |
| 260 } else { | 261 } else { |
| 261 iStart = iMid + 1; | 262 iStart = iMid + 1; |
| 262 } | 263 } |
| 263 } while (iStart <= iEnd); | 264 } while (iStart <= iEnd); |
| 264 if (iStart > iEnd) { | 265 if (iStart > iEnd) { |
| 265 return NULL; | 266 return nullptr; |
| 266 } | 267 } |
| 267 const XFA_ELEMENTINFO* pInfo = XFA_GetElementByID(eProperty); | 268 const XFA_ELEMENTINFO* pInfo = XFA_GetElementByID(eProperty); |
| 268 ASSERT(pInfo); | 269 ASSERT(pInfo); |
| 269 if (dwPacket == XFA_XDPPACKET_UNKNOWN) | 270 if (dwPacket == XFA_XDPPACKET_UNKNOWN) |
| 270 return pProperty + iMid; | 271 return pProperty + iMid; |
| 271 return (dwPacket & pInfo->dwPackets) ? (pProperty + iMid) : NULL; | 272 return (dwPacket & pInfo->dwPackets) ? (pProperty + iMid) : nullptr; |
| 272 } | 273 } |
| 273 const XFA_NOTSUREATTRIBUTE* XFA_GetNotsureAttribute(XFA_ELEMENT eElement, | 274 const XFA_NOTSUREATTRIBUTE* XFA_GetNotsureAttribute(XFA_ELEMENT eElement, |
| 274 XFA_ATTRIBUTE eAttribute, | 275 XFA_ATTRIBUTE eAttribute, |
| 275 XFA_ATTRIBUTETYPE eType) { | 276 XFA_ATTRIBUTETYPE eType) { |
| 276 int32_t iStart = 0, iEnd = g_iXFANotsureCount - 1; | 277 int32_t iStart = 0, iEnd = g_iXFANotsureCount - 1; |
| 277 do { | 278 do { |
| 278 int32_t iMid = (iStart + iEnd) / 2; | 279 int32_t iMid = (iStart + iEnd) / 2; |
| 279 const XFA_NOTSUREATTRIBUTE* pAttr = g_XFANotsureAttributes + iMid; | 280 const XFA_NOTSUREATTRIBUTE* pAttr = g_XFANotsureAttributes + iMid; |
| 280 if (eElement == pAttr->eElement) { | 281 if (eElement == pAttr->eElement) { |
| 281 if (pAttr->eAttribute == eAttribute) { | 282 if (pAttr->eAttribute == eAttribute) { |
| 282 if (eType == XFA_ATTRIBUTETYPE_NOTSURE || eType == pAttr->eType) { | 283 if (eType == XFA_ATTRIBUTETYPE_NOTSURE || eType == pAttr->eType) { |
| 283 return pAttr; | 284 return pAttr; |
| 284 } | 285 } |
| 285 return NULL; | 286 return nullptr; |
| 286 } else { | 287 } else { |
| 287 int32_t iBefore = iMid - 1; | 288 int32_t iBefore = iMid - 1; |
| 288 if (iBefore >= 0) { | 289 if (iBefore >= 0) { |
| 289 pAttr = g_XFANotsureAttributes + iBefore; | 290 pAttr = g_XFANotsureAttributes + iBefore; |
| 290 while (eElement == pAttr->eElement) { | 291 while (eElement == pAttr->eElement) { |
| 291 if (pAttr->eAttribute == eAttribute) { | 292 if (pAttr->eAttribute == eAttribute) { |
| 292 if (eType == XFA_ATTRIBUTETYPE_NOTSURE || eType == pAttr->eType) { | 293 if (eType == XFA_ATTRIBUTETYPE_NOTSURE || eType == pAttr->eType) { |
| 293 return pAttr; | 294 return pAttr; |
| 294 } | 295 } |
| 295 return NULL; | 296 return nullptr; |
| 296 } | 297 } |
| 297 iBefore--; | 298 iBefore--; |
| 298 if (iBefore < 0) { | 299 if (iBefore < 0) { |
| 299 break; | 300 break; |
| 300 } | 301 } |
| 301 pAttr = g_XFANotsureAttributes + iBefore; | 302 pAttr = g_XFANotsureAttributes + iBefore; |
| 302 } | 303 } |
| 303 } | 304 } |
| 304 int32_t iAfter = iMid + 1; | 305 int32_t iAfter = iMid + 1; |
| 305 if (iAfter <= g_iXFANotsureCount - 1) { | 306 if (iAfter <= g_iXFANotsureCount - 1) { |
| 306 pAttr = g_XFANotsureAttributes + iAfter; | 307 pAttr = g_XFANotsureAttributes + iAfter; |
| 307 while (eElement == pAttr->eElement) { | 308 while (eElement == pAttr->eElement) { |
| 308 if (pAttr->eAttribute == eAttribute) { | 309 if (pAttr->eAttribute == eAttribute) { |
| 309 if (eType == XFA_ATTRIBUTETYPE_NOTSURE || eType == pAttr->eType) { | 310 if (eType == XFA_ATTRIBUTETYPE_NOTSURE || eType == pAttr->eType) { |
| 310 return pAttr; | 311 return pAttr; |
| 311 } | 312 } |
| 312 return NULL; | 313 return nullptr; |
| 313 } | 314 } |
| 314 iAfter++; | 315 iAfter++; |
| 315 if (iAfter > g_iXFANotsureCount - 1) { | 316 if (iAfter > g_iXFANotsureCount - 1) { |
| 316 break; | 317 break; |
| 317 } | 318 } |
| 318 pAttr = g_XFANotsureAttributes + iAfter; | 319 pAttr = g_XFANotsureAttributes + iAfter; |
| 319 } | 320 } |
| 320 } | 321 } |
| 321 return NULL; | 322 return nullptr; |
| 322 } | 323 } |
| 323 } else if (eElement < pAttr->eElement) { | 324 } else if (eElement < pAttr->eElement) { |
| 324 iEnd = iMid - 1; | 325 iEnd = iMid - 1; |
| 325 } else { | 326 } else { |
| 326 iStart = iMid + 1; | 327 iStart = iMid + 1; |
| 327 } | 328 } |
| 328 } while (iStart <= iEnd); | 329 } while (iStart <= iEnd); |
| 329 return NULL; | 330 return nullptr; |
| 330 } | 331 } |
| 331 | 332 |
| 332 const XFA_METHODINFO* XFA_GetMethodByName(XFA_ELEMENT eElement, | 333 const XFA_METHODINFO* XFA_GetMethodByName(XFA_ELEMENT eElement, |
| 333 const CFX_WideStringC& wsMethodName) { | 334 const CFX_WideStringC& wsMethodName) { |
| 334 if (wsMethodName.IsEmpty()) | 335 if (wsMethodName.IsEmpty()) |
| 335 return nullptr; | 336 return nullptr; |
| 336 | 337 |
| 337 int32_t iElementIndex = eElement; | 338 int32_t iElementIndex = eElement; |
| 338 while (iElementIndex != -1) { | 339 while (iElementIndex != -1) { |
| 339 const XFA_SCRIPTHIERARCHY* scriptIndex = g_XFAScriptIndex + iElementIndex; | 340 const XFA_SCRIPTHIERARCHY* scriptIndex = g_XFAScriptIndex + iElementIndex; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 351 if (uHash == pInfo->uHash) { | 352 if (uHash == pInfo->uHash) { |
| 352 return pInfo; | 353 return pInfo; |
| 353 } else if (uHash < pInfo->uHash) { | 354 } else if (uHash < pInfo->uHash) { |
| 354 iEnd = iMid - 1; | 355 iEnd = iMid - 1; |
| 355 } else { | 356 } else { |
| 356 iStart = iMid + 1; | 357 iStart = iMid + 1; |
| 357 } | 358 } |
| 358 } while (iStart <= iEnd); | 359 } while (iStart <= iEnd); |
| 359 iElementIndex = scriptIndex->wParentIndex; | 360 iElementIndex = scriptIndex->wParentIndex; |
| 360 } | 361 } |
| 361 return NULL; | 362 return nullptr; |
| 362 } | 363 } |
| 363 const XFA_SCRIPTATTRIBUTEINFO* XFA_GetScriptAttributeByName( | 364 const XFA_SCRIPTATTRIBUTEINFO* XFA_GetScriptAttributeByName( |
| 364 XFA_ELEMENT eElement, | 365 XFA_ELEMENT eElement, |
| 365 const CFX_WideStringC& wsAttributeName) { | 366 const CFX_WideStringC& wsAttributeName) { |
| 366 if (wsAttributeName.IsEmpty()) | 367 if (wsAttributeName.IsEmpty()) |
| 367 return nullptr; | 368 return nullptr; |
| 368 | 369 |
| 369 int32_t iElementIndex = eElement; | 370 int32_t iElementIndex = eElement; |
| 370 while (iElementIndex != -1) { | 371 while (iElementIndex != -1) { |
| 371 const XFA_SCRIPTHIERARCHY* scriptIndex = g_XFAScriptIndex + iElementIndex; | 372 const XFA_SCRIPTHIERARCHY* scriptIndex = g_XFAScriptIndex + iElementIndex; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 382 if (uHash == pInfo->uHash) { | 383 if (uHash == pInfo->uHash) { |
| 383 return pInfo; | 384 return pInfo; |
| 384 } else if (uHash < pInfo->uHash) { | 385 } else if (uHash < pInfo->uHash) { |
| 385 iEnd = iMid - 1; | 386 iEnd = iMid - 1; |
| 386 } else { | 387 } else { |
| 387 iStart = iMid + 1; | 388 iStart = iMid + 1; |
| 388 } | 389 } |
| 389 } while (iStart <= iEnd); | 390 } while (iStart <= iEnd); |
| 390 iElementIndex = scriptIndex->wParentIndex; | 391 iElementIndex = scriptIndex->wParentIndex; |
| 391 } | 392 } |
| 392 return NULL; | 393 return nullptr; |
| 393 } | 394 } |
| 394 void CXFA_Measurement::Set(const CFX_WideStringC& wsMeasure) { | 395 void CXFA_Measurement::Set(const CFX_WideStringC& wsMeasure) { |
| 395 if (wsMeasure.IsEmpty()) { | 396 if (wsMeasure.IsEmpty()) { |
| 396 m_fValue = 0; | 397 m_fValue = 0; |
| 397 m_eUnit = XFA_UNIT_Unknown; | 398 m_eUnit = XFA_UNIT_Unknown; |
| 398 return; | 399 return; |
| 399 } | 400 } |
| 400 int32_t iUsedLen = 0; | 401 int32_t iUsedLen = 0; |
| 401 int32_t iOffset = (wsMeasure.GetAt(0) == L'=') ? 1 : 0; | 402 int32_t iOffset = (wsMeasure.GetAt(0) == L'=') ? 1 : 0; |
| 402 FX_FLOAT fValue = FX_wcstof(wsMeasure.c_str() + iOffset, | 403 FX_FLOAT fValue = FX_wcstof(wsMeasure.c_str() + iOffset, |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 564 m_iPosition += iMaxLength; | 565 m_iPosition += iMaxLength; |
| 565 bEOS = IsEOF(); | 566 bEOS = IsEOF(); |
| 566 return iMaxLength; | 567 return iMaxLength; |
| 567 } | 568 } |
| 568 uint16_t CXFA_WideTextRead::GetCodePage() const { | 569 uint16_t CXFA_WideTextRead::GetCodePage() const { |
| 569 return (sizeof(FX_WCHAR) == 2) ? FX_CODEPAGE_UTF16LE : FX_CODEPAGE_UTF32LE; | 570 return (sizeof(FX_WCHAR) == 2) ? FX_CODEPAGE_UTF16LE : FX_CODEPAGE_UTF32LE; |
| 570 } | 571 } |
| 571 uint16_t CXFA_WideTextRead::SetCodePage(uint16_t wCodePage) { | 572 uint16_t CXFA_WideTextRead::SetCodePage(uint16_t wCodePage) { |
| 572 return GetCodePage(); | 573 return GetCodePage(); |
| 573 } | 574 } |
| OLD | NEW |