Chromium Code Reviews| Index: core/include/fxcrt/fx_basic.h |
| diff --git a/core/include/fxcrt/fx_basic.h b/core/include/fxcrt/fx_basic.h |
| index c5bb570fcabd06c4bbf763a68172144850f4a052..710bbcc3c3ac3a62c67690a5f92cd2d7d8a16855 100644 |
| --- a/core/include/fxcrt/fx_basic.h |
| +++ b/core/include/fxcrt/fx_basic.h |
| @@ -130,6 +130,70 @@ class CFX_WideTextBuf : public CFX_BinaryBuf { |
| CFX_WideStringC GetWideString() const; |
| }; |
| +#ifdef PDF_ENABLE_XFA |
| +class CFX_ArchiveSaver { |
| + public: |
| + CFX_ArchiveSaver() : m_pStream(NULL) {} |
| + |
| + CFX_ArchiveSaver& operator<<(uint8_t i); |
| + |
| + CFX_ArchiveSaver& operator<<(int i); |
| + |
| + CFX_ArchiveSaver& operator<<(FX_DWORD i); |
| + |
| + CFX_ArchiveSaver& operator<<(FX_FLOAT i); |
| + |
| + CFX_ArchiveSaver& operator<<(double i); |
| + |
| + CFX_ArchiveSaver& operator<<(const CFX_ByteStringC& bstr); |
| + |
| + CFX_ArchiveSaver& operator<<(const FX_WCHAR* bstr); |
| + |
| + CFX_ArchiveSaver& operator<<(const CFX_WideString& wstr); |
| + |
| + void Write(const void* pData, FX_STRSIZE dwSize); |
| + |
| + intptr_t GetLength() { return m_SavingBuf.GetSize(); } |
| + |
| + const uint8_t* GetBuffer() { return m_SavingBuf.GetBuffer(); } |
| + |
| + void SetStream(IFX_FileStream* pStream) { m_pStream = pStream; } |
| + |
| + protected: |
| + CFX_BinaryBuf m_SavingBuf; |
| + |
| + IFX_FileStream* m_pStream; |
| +}; |
| +class CFX_ArchiveLoader { |
| + public: |
| + CFX_ArchiveLoader(const uint8_t* pData, FX_DWORD dwSize); |
| + |
| + CFX_ArchiveLoader& operator>>(uint8_t& i); |
| + |
| + CFX_ArchiveLoader& operator>>(int& i); |
| + |
| + CFX_ArchiveLoader& operator>>(FX_DWORD& i); |
| + |
| + CFX_ArchiveLoader& operator>>(FX_FLOAT& i); |
| + |
| + CFX_ArchiveLoader& operator>>(double& i); |
| + |
| + CFX_ArchiveLoader& operator>>(CFX_ByteString& bstr); |
| + |
| + CFX_ArchiveLoader& operator>>(CFX_WideString& wstr); |
| + |
| + FX_BOOL IsEOF(); |
| + |
| + FX_BOOL Read(void* pBuf, FX_DWORD dwSize); |
| + |
| + protected: |
| + FX_DWORD m_LoadingPos; |
| + |
| + const uint8_t* m_pLoadingBuf; |
| + |
| + FX_DWORD m_LoadingSize; |
| +}; |
| +#endif |
| class IFX_BufferArchive { |
| public: |
| @@ -374,6 +438,10 @@ typedef CFX_ArrayTemplate<FX_WORD> CFX_WordArray; |
| typedef CFX_ArrayTemplate<FX_DWORD> CFX_DWordArray; |
| typedef CFX_ArrayTemplate<void*> CFX_PtrArray; |
| typedef CFX_ArrayTemplate<FX_FILESIZE> CFX_FileSizeArray; |
| +#ifdef PDF_ENABLE_XFA |
| +typedef CFX_ArrayTemplate<FX_FLOAT> CFX_FloatArray; |
| +typedef CFX_ArrayTemplate<int32_t> CFX_Int32Array; |
| +#endif |
| template <class ObjectClass> |
| class CFX_ObjectArray : public CFX_BasicArray { |
| @@ -634,7 +702,46 @@ class CFX_MapPtrToPtr { |
| CAssoc* GetAssocAt(void* key, FX_DWORD& hash) const; |
| }; |
| +#ifdef PDF_ENABLE_XFA |
| +template <class KeyType, class ValueType> |
| +class CFX_MapPtrTemplate : public CFX_MapPtrToPtr { |
| + public: |
| + CFX_MapPtrTemplate() : CFX_MapPtrToPtr(10) {} |
| + |
| + FX_BOOL Lookup(KeyType key, ValueType& rValue) const { |
| + void* pValue = NULL; |
| + if (!CFX_MapPtrToPtr::Lookup((void*)(uintptr_t)key, pValue)) { |
| + return FALSE; |
| + } |
| + rValue = (ValueType)(uintptr_t)pValue; |
| + return TRUE; |
| + } |
| + |
| + ValueType& operator[](KeyType key) { |
| + return (ValueType&)CFX_MapPtrToPtr::operator[]((void*)(uintptr_t)key); |
| + } |
| + |
| + void SetAt(KeyType key, ValueType newValue) { |
| + CFX_MapPtrToPtr::SetAt((void*)(uintptr_t)key, (void*)(uintptr_t)newValue); |
| + } |
| + |
| + FX_BOOL RemoveKey(KeyType key) { |
| + return CFX_MapPtrToPtr::RemoveKey((void*)(uintptr_t)key); |
| + } |
| +#endif |
| +#ifdef PDF_ENABLE_XFA |
| + void GetNextAssoc(FX_POSITION& rNextPosition, |
| + KeyType& rKey, |
| + ValueType& rValue) const { |
| + void* pKey = NULL; |
| + void* pValue = NULL; |
| + CFX_MapPtrToPtr::GetNextAssoc(rNextPosition, pKey, pValue); |
| + rKey = (KeyType)(uintptr_t)pKey; |
| + rValue = (ValueType)(uintptr_t)pValue; |
| + } |
| +}; |
| +#endif |
| class CFX_CMapByteStringToPtr { |
| public: |
| CFX_CMapByteStringToPtr(); |
| @@ -1088,6 +1195,15 @@ typedef enum { |
| } FX_ProgressiveStatus; |
| #define ProgressiveStatus FX_ProgressiveStatus |
| #define FX_NAMESPACE_DECLARE(namespace, type) namespace ::type |
| +#ifdef PDF_ENABLE_XFA |
| +class IFX_Unknown { |
|
Lei Zhang
2015/10/30 06:15:30
I think we killed this on master.
|
| + public: |
| + virtual ~IFX_Unknown() {} |
| + virtual FX_DWORD Release() = 0; |
| + virtual FX_DWORD AddRef() = 0; |
| +}; |
| +#define FX_IsOdd(a) ((a)&1) |
| +#endif |
| class CFX_Vector_3by1 { |
| public: |