|  | // Copyright 2016 The PDFium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 
|  |  | 
|  | #ifndef XFA_FXFA_PARSER_XFA_BASIC_DATA_H_ | 
|  | #define XFA_FXFA_PARSER_XFA_BASIC_DATA_H_ | 
|  |  | 
|  | #include <stddef.h> | 
|  |  | 
|  | #include <optional> | 
|  |  | 
|  | #include "core/fxcrt/widestring.h" | 
|  | #include "fxjs/xfa/cjx_object.h" | 
|  | #include "xfa/fxfa/fxfa_basic.h" | 
|  |  | 
|  | using XFA_ATTRIBUTE_CALLBACK = void (*)(v8::Isolate* pIsolate, | 
|  | CJX_Object* pNode, | 
|  | v8::Local<v8::Value>* pValue, | 
|  | bool bSetting, | 
|  | XFA_Attribute eAttribute); | 
|  |  | 
|  | enum class XFA_PacketMatch : uint8_t { | 
|  | kCompleteMatch = 1, | 
|  | kPrefixMatch, | 
|  | kNoMatch, | 
|  | }; | 
|  |  | 
|  | enum class XFA_PacketSupport : uint8_t { | 
|  | kSupportOne = 1, | 
|  | kSupportMany, | 
|  | }; | 
|  |  | 
|  | struct XFA_PACKETINFO { | 
|  | XFA_PacketType packet_type; | 
|  | XFA_PacketMatch match; | 
|  | XFA_PacketSupport support; | 
|  | const char* name; | 
|  | const char* uri; | 
|  | }; | 
|  |  | 
|  | struct XFA_ATTRIBUTEINFO { | 
|  | XFA_Attribute attribute; | 
|  | XFA_ScriptType eValueType; | 
|  | }; | 
|  |  | 
|  | struct XFA_SCRIPTATTRIBUTEINFO { | 
|  | XFA_Attribute attribute; | 
|  | XFA_ScriptType eValueType; | 
|  | XFA_ATTRIBUTE_CALLBACK callback = nullptr; | 
|  | }; | 
|  |  | 
|  | XFA_PACKETINFO XFA_GetPacketByIndex(XFA_PacketType ePacket); | 
|  | std::optional<XFA_PACKETINFO> XFA_GetPacketByName(WideStringView wsName); | 
|  |  | 
|  | ByteStringView XFA_ElementToName(XFA_Element elem); | 
|  | XFA_Element XFA_GetElementByName(WideStringView name); | 
|  |  | 
|  | ByteStringView XFA_AttributeToName(XFA_Attribute attr); | 
|  | std::optional<XFA_ATTRIBUTEINFO> XFA_GetAttributeByName(WideStringView name); | 
|  |  | 
|  | ByteStringView XFA_AttributeValueToName(XFA_AttributeValue item); | 
|  | std::optional<XFA_AttributeValue> XFA_GetAttributeValueByName( | 
|  | WideStringView name); | 
|  |  | 
|  | std::optional<XFA_SCRIPTATTRIBUTEINFO> XFA_GetScriptAttributeByName( | 
|  | XFA_Element eElement, | 
|  | WideStringView wsAttributeName); | 
|  |  | 
|  | #endif  // XFA_FXFA_PARSER_XFA_BASIC_DATA_H_ |