1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef FWL_THREAD_H_ 8 #define FWL_THREAD_H_ 9 10 // The FWL thread/app code contains three parallel inheritance hierarchies, 11 // which reference each other via pointers as follows: 12 // 13 // m_pImpl 14 // (nonesuch) IFWL_Thread ----------> CFWL_ThreadImp 15 // | <---------- | 16 // A m_pIface A 17 // | | 18 // (nonesuch) IFWL_NoteThread CFWL_NoteThreadImp 19 // | | 20 // A A 21 // m_pIface | | 22 // CFWL_App --------------> IFWL_App CFWL_AppImp 23 // 24 25 class CFWL_ThreadImp; 26 class IFWL_NoteDriver; 27 28 typedef struct _FWL_HTHREAD { void* pData; } * FWL_HTHREAD; 29 30 class IFWL_Thread { 31 public: 32 // These call into polymorphic methods in the impl; no need to override. 33 void Release(); 34 FWL_ERR Run(FWL_HTHREAD hThread); 35 GetImpl()36 CFWL_ThreadImp* GetImpl() const { return m_pImpl; } SetImpl(CFWL_ThreadImp * pImpl)37 void SetImpl(CFWL_ThreadImp* pImpl) { m_pImpl = pImpl; } 38 39 protected: ~IFWL_Thread()40 virtual ~IFWL_Thread() {} 41 42 private: 43 CFWL_ThreadImp* m_pImpl; 44 }; 45 46 class IFWL_NoteThread : public IFWL_Thread { 47 public: 48 IFWL_NoteDriver* GetNoteDriver(); 49 }; 50 51 #endif // FWL_THREAD_H_ 52