Kill CFX_Object.

CFX_Object is a type that implements its own new operators that return
NULL on error. There's no need for this given the |new (std::nothrow)|
syntax; in fact, the current code can only work if there is no activity
in the constructors.  This may explain the pervasive lack of
constructors and reliance on Init() methods throughout the codebase.

The activity takes place in fx_memory.h, where FX_NEW is mapped onto
the std::nothrow syntax.  The rest is just cleanup.

Down the road, we will simply throw and remove all the error-checking
paths for new objects. Landing this patch first will at least show a
simple path back to the old behaviour without having to re-introduce
CFX_Object should someone want to do so in their own fork.

R=thestig@chromium.org

Review URL: https://codereview.chromium.org/1088733002
diff --git a/core/include/fpdfapi/fpdf_module.h b/core/include/fpdfapi/fpdf_module.h
index cec8155..9b3a5bf 100644
--- a/core/include/fpdfapi/fpdf_module.h
+++ b/core/include/fpdfapi/fpdf_module.h
@@ -23,7 +23,7 @@
 class ICodec_FlateModule;
 #define ADDIN_NAME_CJK			"Eastern Asian Language Support"
 #define ADDIN_NAME_DECODER		"JPEG2000 and JBIG2 Image Decoders"
-class CPDF_ModuleMgr : public CFX_Object
+class CPDF_ModuleMgr 
 {
 public:
 
@@ -123,7 +123,7 @@
 class IPDF_FontMgr;
 class IPDF_FontMapper;
 class CPDF_ColorSpace;
-class CPDF_PageModuleDef : public CFX_Object
+class CPDF_PageModuleDef 
 {
 public:
     virtual ~CPDF_PageModuleDef() {}
@@ -161,7 +161,7 @@
 class CFX_DIBSource;
 class CPDF_RenderConfig;
 class CPDF_Image;
-class CPDF_RenderModuleDef : public CFX_Object
+class CPDF_RenderModuleDef 
 {
 public:
     virtual ~CPDF_RenderModuleDef() {}
diff --git a/core/include/fpdfapi/fpdf_objects.h b/core/include/fpdfapi/fpdf_objects.h
index bb449dd..df5803c 100644
--- a/core/include/fpdfapi/fpdf_objects.h
+++ b/core/include/fpdfapi/fpdf_objects.h
@@ -35,7 +35,7 @@
 #define PDFOBJ_NULL			8
 #define PDFOBJ_REFERENCE	9
 typedef IFX_FileStream* (*FPDF_LPFCloneStreamCallback)(CPDF_Stream *pStream, FX_LPVOID pUserData);
-class CPDF_Object : public CFX_Object
+class CPDF_Object 
 {
 public:
 
@@ -568,7 +568,7 @@
     friend class			CPDF_StreamAcc;
     friend class			CPDF_AttachmentAcc;
 };
-class CPDF_StreamAcc : public CFX_Object
+class CPDF_StreamAcc 
 {
 public:
 
@@ -622,7 +622,7 @@
 };
 CFX_DataFilter* FPDF_CreateFilter(FX_BSTR name, const CPDF_Dictionary* pParam, int width = 0, int height = 0);
 #define FPDF_FILTER_BUFFER_SIZE		20480
-class CPDF_StreamFilter : public CFX_Object
+class CPDF_StreamFilter 
 {
 public:
 
@@ -705,7 +705,7 @@
     FX_DWORD				m_RefObjNum;
     friend class			CPDF_Object;
 };
-class CPDF_IndirectObjects : public CFX_Object
+class CPDF_IndirectObjects 
 {
 public:
 
diff --git a/core/include/fpdfapi/fpdf_page.h b/core/include/fpdfapi/fpdf_page.h
index 3fea866..0bac059 100644
--- a/core/include/fpdfapi/fpdf_page.h
+++ b/core/include/fpdfapi/fpdf_page.h
@@ -32,7 +32,7 @@
 #define PDF_CONTENT_NOT_PARSED	0
 #define PDF_CONTENT_PARSING		1
 #define PDF_CONTENT_PARSED		2
-class CPDF_PageObjects : public CFX_Object
+class CPDF_PageObjects 
 {
 public:
 
@@ -199,7 +199,7 @@
 
     CPDF_PageRenderCache*	m_pPageRender;
 };
-class CPDF_ParseOptions : public CFX_Object
+class CPDF_ParseOptions 
 {
 public:
 
@@ -229,7 +229,7 @@
 
     CPDF_Form*			Clone() const;
 };
-class CPDF_PageContentGenerate : public CFX_Object
+class CPDF_PageContentGenerate 
 {
 public:
     CPDF_PageContentGenerate(CPDF_Page* pPage);
diff --git a/core/include/fpdfapi/fpdf_pageobj.h b/core/include/fpdfapi/fpdf_pageobj.h
index f211254..bd11a20 100644
--- a/core/include/fpdfapi/fpdf_pageobj.h
+++ b/core/include/fpdfapi/fpdf_pageobj.h
@@ -99,7 +99,7 @@
         return m_pObject->IsRect();
     }
 };
-class CPDF_ClipPathData : public CFX_Object
+class CPDF_ClipPathData 
 {
 public:
 
@@ -161,7 +161,7 @@
 
     void				Transform(const CFX_AffineMatrix& matrix);
 };
-class CPDF_ColorStateData : public CFX_Object
+class CPDF_ColorStateData 
 {
 public:
 
@@ -208,7 +208,7 @@
 {
 public:
 };
-class CPDF_TextStateData : public CFX_Object
+class CPDF_TextStateData 
 {
 public:
 
@@ -267,7 +267,7 @@
 
 };
 class CPDF_TransferFunc;
-class CPDF_GeneralStateData : public CFX_Object
+class CPDF_GeneralStateData 
 {
 public:
 
@@ -336,7 +336,7 @@
         return m_pObject ? FXSYS_round((bStroke ? m_pObject->m_StrokeAlpha : m_pObject->m_FillAlpha) * 255) : 255;
     }
 };
-class CPDF_ContentMarkItem : public CFX_Object
+class CPDF_ContentMarkItem 
 {
 public:
 
@@ -388,7 +388,7 @@
 
     void*				m_pParam;
 };
-class CPDF_ContentMarkData : public CFX_Object
+class CPDF_ContentMarkData 
 {
 public:
 
@@ -434,7 +434,7 @@
 #define PDFPAGE_SHADING		4
 #define PDFPAGE_FORM		5
 #define PDFPAGE_INLINES		6
-class CPDF_GraphicStates : public CFX_Object
+class CPDF_GraphicStates 
 {
 public:
 
@@ -507,7 +507,7 @@
 
     virtual ~CPDF_PageObject() {}
 };
-struct CPDF_TextObjectItem : public CFX_Object {
+struct CPDF_TextObjectItem  {
 
     FX_DWORD			m_CharCode;
 
diff --git a/core/include/fpdfapi/fpdf_parser.h b/core/include/fpdfapi/fpdf_parser.h
index 4b91802..c72acc8 100644
--- a/core/include/fpdfapi/fpdf_parser.h
+++ b/core/include/fpdfapi/fpdf_parser.h
@@ -211,7 +211,7 @@
 #define PDFWORD_TEXT		2
 #define PDFWORD_DELIMITER	3
 #define PDFWORD_NAME		4
-class CPDF_SimpleParser : public CFX_Object
+class CPDF_SimpleParser 
 {
 public:
 
@@ -250,7 +250,7 @@
 
     FX_DWORD			m_dwCurPos;
 };
-class CPDF_SyntaxParser : public CFX_Object
+class CPDF_SyntaxParser 
 {
 public:
 
@@ -372,7 +372,7 @@
 
     FX_FILESIZE	m_DataEnd;
 };
-class IPDF_DocParser : public CFX_Object
+class IPDF_DocParser 
 {
 public:
     virtual ~IPDF_DocParser() { }
@@ -613,7 +613,7 @@
 #define FXCIPHER_RC4	1
 #define FXCIPHER_AES	2
 #define FXCIPHER_AES2   3
-class CPDF_SecurityHandler : public CFX_Object
+class CPDF_SecurityHandler 
 {
 public:
 
@@ -715,7 +715,7 @@
 
     int					m_KeyLen;
 };
-class CPDF_CryptoHandler : public CFX_Object
+class CPDF_CryptoHandler 
 {
 public:
 
@@ -772,7 +772,7 @@
 
     FX_LPBYTE			m_pAESContext;
 };
-class CPDF_Point : public CFX_Object
+class CPDF_Point 
 {
 public:
 
@@ -829,7 +829,7 @@
 void FlateEncode(const FX_BYTE* src_buf, FX_DWORD src_size, FX_LPBYTE& dest_buf, FX_DWORD& dest_size);
 FX_DWORD FlateDecode(const FX_BYTE* src_buf, FX_DWORD src_size, FX_LPBYTE& dest_buf, FX_DWORD& dest_size);
 FX_DWORD RunLengthDecode(const FX_BYTE* src_buf, FX_DWORD src_size, FX_LPBYTE& dest_buf, FX_DWORD& dest_size);
-class CPDF_NumberTree : public CFX_Object
+class CPDF_NumberTree 
 {
 public:
 
@@ -885,7 +885,7 @@
     IFX_FileAvail* m_pFileAvail;
     IFX_FileRead* m_pFileRead;
 };
-class CPDF_SortObjNumArray : public CFX_Object
+class CPDF_SortObjNumArray 
 {
 public:
 
@@ -910,7 +910,7 @@
     PDF_PAGENODE_PAGES,
     PDF_PAGENODE_ARRAY,
 };
-class CPDF_PageNode : public CFX_Object
+class CPDF_PageNode 
 {
 public:
     CPDF_PageNode() : m_type(PDF_PAGENODE_UNKOWN) {}
diff --git a/core/include/fpdfapi/fpdf_render.h b/core/include/fpdfapi/fpdf_render.h
index e2801f6..2028550 100644
--- a/core/include/fpdfapi/fpdf_render.h
+++ b/core/include/fpdfapi/fpdf_render.h
@@ -55,7 +55,7 @@
 #define RENDER_NOPATHSMOOTH			0x20000000
 #define RENDER_NOIMAGESMOOTH		0x40000000
 #define RENDER_LIMITEDIMAGECACHE	0x80000000
-class CPDF_RenderOptions : public CFX_Object
+class CPDF_RenderOptions 
 {
 public:
 
@@ -81,7 +81,7 @@
 
     FX_ARGB			TranslateColor(FX_ARGB argb) const;
 };
-class CPDF_RenderContext : public CFX_Object
+class CPDF_RenderContext 
 {
 public:
 
@@ -144,7 +144,7 @@
         const CFX_AffineMatrix* pOriginal2Bitmap
     ) = 0;
 };
-class CPDF_ProgressiveRenderer : public CFX_Object
+class CPDF_ProgressiveRenderer 
 {
 public:
 
@@ -201,7 +201,7 @@
 
     void				RenderStep();
 };
-class CPDF_TextRenderer : public CFX_Object
+class CPDF_TextRenderer 
 {
 public:
 
@@ -249,7 +249,7 @@
 
     virtual void		SetCacheLimit(FX_DWORD limit) = 0;
 };
-class CPDF_PageRenderCache : public CFX_Object
+class CPDF_PageRenderCache 
 {
 public:
     CPDF_PageRenderCache(CPDF_Page* pPage)
@@ -307,7 +307,7 @@
     FX_DWORD			m_nCacheSize;
     FX_BOOL				m_bCurFindCache;
 };
-class CPDF_RenderConfig : public CFX_Object
+class CPDF_RenderConfig 
 {
 public:
     CPDF_RenderConfig();
diff --git a/core/include/fpdfapi/fpdf_resource.h b/core/include/fpdfapi/fpdf_resource.h
index 02edd55..86084d0 100644
--- a/core/include/fpdfapi/fpdf_resource.h
+++ b/core/include/fpdfapi/fpdf_resource.h
@@ -39,7 +39,7 @@
 class CFX_CTTGSUBTable;
 class CPDF_Page;
 
-template <class ObjClass> class CPDF_CountedObject : public CFX_Object
+template <class ObjClass> class CPDF_CountedObject 
 {
 public:
     ObjClass	m_Obj;
@@ -76,7 +76,7 @@
 #define PDFFONT_USEEXTERNATTR	0x80000
 FX_WCHAR PDF_UnicodeFromAdobeName(const FX_CHAR* name);
 CFX_ByteString PDF_AdobeNameFromUnicode(FX_WCHAR unicode);
-class CPDF_Font : public CFX_Object
+class CPDF_Font 
 {
 public:
 
@@ -323,7 +323,7 @@
 #define PDFFONT_ENCODING_PDFDOC			7
 #define PDFFONT_ENCODING_MS_SYMBOL		8
 #define PDFFONT_ENCODING_UNICODE		9
-class CPDF_FontEncoding : public CFX_Object
+class CPDF_FontEncoding 
 {
 public:
 
@@ -438,7 +438,7 @@
     virtual FX_BOOL			_Load();
     virtual void			LoadGlyphMap();
 };
-class CPDF_Type3Char : public CFX_Object
+class CPDF_Type3Char 
 {
 public:
 
@@ -582,7 +582,8 @@
 #define PDFCS_DEVICEN           9
 #define PDFCS_INDEXED           10
 #define PDFCS_PATTERN           11
-class CPDF_ColorSpace : public CFX_Object
+
+class CPDF_ColorSpace
 {
 public:
 
@@ -677,7 +678,7 @@
 
     FX_DWORD				m_dwStdConversion;
 };
-class CPDF_Color : public CFX_Object
+class CPDF_Color 
 {
 public:
 
@@ -726,7 +727,7 @@
 };
 #define PATTERN_TILING		1
 #define PATTERN_SHADING		2
-class CPDF_Pattern : public CFX_Object
+class CPDF_Pattern 
 {
 public:
    
@@ -803,7 +804,7 @@
     FX_FLOAT x, y;
     FX_FLOAT r, g, b;
 };
-class CPDF_MeshStream : public CFX_Object
+class CPDF_MeshStream 
 {
 public:
 
@@ -843,7 +844,7 @@
     FX_ARGB* pMatteColor;
     FX_INT32 nQuality;
 };
-class CPDF_Image : public CFX_Object
+class CPDF_Image 
 {
 public:
 
diff --git a/core/include/fpdfapi/fpdf_serial.h b/core/include/fpdfapi/fpdf_serial.h
index a91870b..50e5fbc 100644
--- a/core/include/fpdfapi/fpdf_serial.h
+++ b/core/include/fpdfapi/fpdf_serial.h
@@ -113,7 +113,7 @@
 #define FPDFCREATE_NO_ORIGINAL		2
 #define FPDFCREATE_PROGRESSIVE		4
 #define FPDFCREATE_OBJECTSTREAM		8
-class CPDF_Creator : public CFX_Object
+class CPDF_Creator 
 {
 public:
 
diff --git a/core/include/fpdfdoc/fpdf_doc.h b/core/include/fpdfdoc/fpdf_doc.h
index 002f7ea..40d5723 100644
--- a/core/include/fpdfdoc/fpdf_doc.h
+++ b/core/include/fpdfdoc/fpdf_doc.h
@@ -42,7 +42,7 @@
 class CPDF_LWinParam;
 class CFieldTree;
 class CPDF_ApSettings;
-class CPDF_NameTree : public CFX_Object
+class CPDF_NameTree 
 {
 public:
 
@@ -73,7 +73,7 @@
 
     CPDF_Dictionary*		m_pRoot;
 };
-class CPDF_BookmarkTree : public CFX_Object
+class CPDF_BookmarkTree 
 {
 public:
     CPDF_BookmarkTree(CPDF_Document* pDoc) : m_pDocument(pDoc) {}
@@ -89,7 +89,7 @@
 };
 #define PDFBOOKMARK_ITALIC			1
 #define PDFBOOKMARK_BOLD			2
-class CPDF_Bookmark : public CFX_Object
+class CPDF_Bookmark 
 {
 public:
 
@@ -121,7 +121,7 @@
 #define PDFZOOM_FITBBOX				6
 #define PDFZOOM_FITBHORZ			7
 #define PDFZOOM_FITBVERT			8
-class CPDF_Dest : public CFX_Object
+class CPDF_Dest 
 {
 public:
     CPDF_Dest() : m_pObj(nullptr) { }
@@ -139,7 +139,7 @@
 protected:
     CPDF_Object*		m_pObj;
 };
-class CPDF_OCContext : public CFX_Object, public IPDF_OCContext
+class CPDF_OCContext : public IPDF_OCContext
 {
 public:
 
@@ -185,7 +185,7 @@
 
     CFX_MapPtrTemplate<const CPDF_Dictionary*, void*>	m_OCGStates;
 };
-class CPDF_LWinParam : public CFX_Object
+class CPDF_LWinParam 
 {
 public:
 
@@ -224,7 +224,7 @@
 
     CPDF_Dictionary*		m_pDict;
 };
-class CPDF_ActionFields : public CFX_Object
+class CPDF_ActionFields 
 {
 public:
 
@@ -252,7 +252,7 @@
 #define PDFNAMED_FIRSTPAGE		3
 #define PDFNAMED_LASTPAGE		4
 #define PDFJS_MAXLENGTH			64
-class CPDF_Action : public CFX_Object
+class CPDF_Action 
 {
 public:
     enum ActionType {
@@ -412,7 +412,7 @@
 protected:
     CPDF_Dictionary*	m_pDict;
 };
-class CPDF_AAction : public CFX_Object
+class CPDF_AAction 
 {
 public:
 
@@ -460,7 +460,7 @@
 
     CPDF_Dictionary*	m_pDict;
 };
-class CPDF_DocJSActions : public CFX_Object
+class CPDF_DocJSActions 
 {
 public:
     CPDF_DocJSActions(CPDF_Document* pDoc);
@@ -484,7 +484,7 @@
 
     CPDF_Document*		m_pDocument;
 };
-class CPDF_FileSpec : public CFX_Object
+class CPDF_FileSpec 
 {
 public:
 
@@ -511,7 +511,7 @@
 
     CPDF_Object		*m_pObj;
 };
-class CPDF_LinkList : public CFX_Object
+class CPDF_LinkList 
 {
 public:
 
@@ -542,7 +542,7 @@
 
     void				LoadPageLinks(CPDF_Page* pPage, CFX_PtrArray* pList);
 };
-class CPDF_Link : public CFX_Object
+class CPDF_Link 
 {
 public:
     CPDF_Link() : m_pDict(nullptr) { }
@@ -566,7 +566,7 @@
 #define ANNOTFLAG_READONLY			0x40
 #define ANNOTFLAG_LOCKED			0x80
 #define ANNOTFLAG_TOGGLENOVIEW		0x100
-class CPDF_Annot : public CFX_PrivateData, public CFX_Object
+class CPDF_Annot : public CFX_PrivateData
 {
 public:
 
@@ -623,7 +623,7 @@
 
     CPDF_Reference*		NewAnnotRef();
 };
-class CPDF_AnnotList : public CFX_Object
+class CPDF_AnnotList 
 {
 public:
 
@@ -695,7 +695,7 @@
 #define COLORTYPE_GRAY			1
 #define COLORTYPE_RGB			2
 #define COLORTYPE_CMYK			3
-class CPDF_DefaultAppearance : public CFX_Object
+class CPDF_DefaultAppearance 
 {
 public:
 
@@ -767,7 +767,7 @@
 #define FIELDTYPE_LISTBOX			5
 #define FIELDTYPE_TEXTFIELD			6
 #define FIELDTYPE_SIGNATURE			7
-class CPDF_InterForm : public CFX_PrivateData, public CFX_Object
+class CPDF_InterForm : public CFX_PrivateData
 {
 public:
 
@@ -1025,7 +1025,7 @@
 #define FORMTEXT_COMB			0x800
 #define FORMCOMBO_EDIT			0x100
 #define FORMLIST_MULTISELECT	0x100
-class CPDF_FormField : public CFX_Object
+class CPDF_FormField 
 {
 public:
 
@@ -1247,7 +1247,7 @@
     CPDF_Font*				m_pFont;
 };
 CPDF_Object*	FPDF_GetFieldAttr(CPDF_Dictionary* pFieldDict, const FX_CHAR* name, int nLevel = 0);
-class CPDF_IconFit : public CFX_Object
+class CPDF_IconFit 
 {
 public:
 
@@ -1299,7 +1299,7 @@
 #define TEXTPOS_RIGHT		4
 #define TEXTPOS_LEFT		5
 #define TEXTPOS_OVERLAID	6
-class CPDF_FormControl : public CFX_Object
+class CPDF_FormControl 
 {
 public:
 
@@ -1507,7 +1507,7 @@
     friend class			CPDF_InterForm;
     friend class			CPDF_FormField;
 };
-class CPDF_FormNotify : public CFX_Object
+class CPDF_FormNotify 
 {
 public:
 
@@ -1559,7 +1559,7 @@
     }
 };
 FX_BOOL		FPDF_GenerateAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict);
-class CPDF_PageLabel : public CFX_Object
+class CPDF_PageLabel 
 {
 public:
 
@@ -1623,7 +1623,7 @@
 protected:
     CPDF_Document*	m_pDoc;
 };
-class CPDF_ApSettings : public CFX_Object
+class CPDF_ApSettings 
 {
 public:
 
diff --git a/core/include/fpdfdoc/fpdf_tagged.h b/core/include/fpdfdoc/fpdf_tagged.h
index 1a2a5d4..a5862e0 100644
--- a/core/include/fpdfdoc/fpdf_tagged.h
+++ b/core/include/fpdfdoc/fpdf_tagged.h
@@ -13,7 +13,7 @@
 class CPDF_Page;
 class IPDF_ReflowEngine;
 class IPDF_ReflowedPage;
-class CPDF_StructTree : public CFX_Object
+class CPDF_StructTree 
 {
 public:
 
@@ -65,7 +65,7 @@
         } m_Object;
     };
 };
-class CPDF_StructElement : public CFX_Object
+class CPDF_StructElement 
 {
 public:
     virtual ~CPDF_StructElement() { }
diff --git a/core/include/fpdfdoc/fpdf_vt.h b/core/include/fpdfdoc/fpdf_vt.h
index c9a6602..18ea709 100644
--- a/core/include/fpdfdoc/fpdf_vt.h
+++ b/core/include/fpdfdoc/fpdf_vt.h
@@ -164,7 +164,7 @@
 
     CPVT_WordPlace EndPos;
 };
-struct CPVT_SecProps : public CFX_Object {
+struct CPVT_SecProps  {
 
     CPVT_SecProps() : fLineLeading(0.0f), fLineIndent(0.0f), nAlignment(0)
     {
@@ -186,7 +186,7 @@
 
     FX_INT32			nAlignment;
 };
-struct CPVT_WordProps : public CFX_Object {
+struct CPVT_WordProps  {
 
     CPVT_WordProps() : nFontIndex(-1), fFontSize(0.0f), dwWordColor(0), nScriptType(0), nWordStyle(0),
         fCharSpace(0.0f), nHorzScale(0)
diff --git a/core/include/fpdftext/fpdf_text.h b/core/include/fpdftext/fpdf_text.h
index 3900806..8673c1a 100644
--- a/core/include/fpdftext/fpdf_text.h
+++ b/core/include/fpdftext/fpdf_text.h
@@ -59,7 +59,7 @@
 #define FPDFTEXT_WRITINGMODE_LRTB	1
 #define FPDFTEXT_WRITINGMODE_RLTB	2
 #define FPDFTEXT_WRITINGMODE_TBRL	3
-class CPDFText_ParseOptions : public CFX_Object
+class CPDFText_ParseOptions 
 {
 public:
 
@@ -68,7 +68,7 @@
     FX_BOOL			m_bNormalizeObjs;
     FX_BOOL			m_bOutputHyphen;
 };
-class IPDF_TextPage : public CFX_Object
+class IPDF_TextPage 
 {
 public:
 
@@ -130,7 +130,7 @@
 #define FPDFTEXT_MATCHCASE      0x00000001
 #define FPDFTEXT_MATCHWHOLEWORD 0x00000002
 #define FPDFTEXT_CONSECUTIVE	0x00000004
-class IPDF_TextPageFind : public CFX_Object
+class IPDF_TextPageFind 
 {
 public:
 
@@ -151,7 +151,7 @@
 
     virtual int					GetMatchedCount() const = 0;
 };
-class IPDF_LinkExtract : public CFX_Object
+class IPDF_LinkExtract 
 {
 public:
 
diff --git a/core/include/fxcodec/fx_codec.h b/core/include/fxcodec/fx_codec.h
index da8b309..afa0627 100644
--- a/core/include/fxcodec/fx_codec.h
+++ b/core/include/fxcodec/fx_codec.h
@@ -22,7 +22,7 @@
 class ICodec_FlateModule;
 class ICodec_Jbig2Encoder;
 class ICodec_ScanlineDecoder;
-class CCodec_ModuleMgr : public CFX_Object
+class CCodec_ModuleMgr 
 {
 public:
 
@@ -80,7 +80,7 @@
     ICodec_FlateModule*	m_pFlateModule;
 
 };
-class ICodec_BasicModule : public CFX_Object
+class ICodec_BasicModule 
 {
 public:
 
@@ -92,7 +92,7 @@
     virtual ICodec_ScanlineDecoder*	CreateRunLengthDecoder(FX_LPCBYTE src_buf, FX_DWORD src_size, int width, int height,
             int nComps, int bpc) = 0;
 };
-class ICodec_ScanlineDecoder : public CFX_Object
+class ICodec_ScanlineDecoder 
 {
 public:
 
@@ -118,7 +118,7 @@
 
     virtual void		ClearImageData() = 0;
 };
-class ICodec_FlateModule : public CFX_Object
+class ICodec_FlateModule 
 {
 public:
 
@@ -133,7 +133,7 @@
                                FX_LPBYTE& dest_buf, FX_DWORD& dest_size) = 0;
     virtual FX_BOOL		Encode(FX_LPCBYTE src_buf, FX_DWORD src_size, FX_LPBYTE& dest_buf, FX_DWORD& dest_size) = 0;
 };
-class ICodec_FaxModule : public CFX_Object
+class ICodec_FaxModule 
 {
 public:
 
@@ -146,7 +146,7 @@
     virtual FX_BOOL		Encode(FX_LPCBYTE src_buf, int width, int height, int pitch,
                                FX_LPBYTE& dest_buf, FX_DWORD& dest_size) = 0;
 };
-class ICodec_JpegModule : public CFX_Object
+class ICodec_JpegModule 
 {
 public:
 
@@ -181,7 +181,7 @@
 
     virtual FX_DWORD	GetAvailInput(void* pContext, FX_LPBYTE* avail_buf_ptr = NULL) = 0;
 };
-class ICodec_JpxModule : public CFX_Object
+class ICodec_JpxModule 
 {
 public:
 
@@ -197,7 +197,7 @@
 
     virtual void		DestroyDecoder(FX_LPVOID ctx) = 0;
 };
-class ICodec_Jbig2Module : public CFX_Object
+class ICodec_Jbig2Module 
 {
 public:
 
@@ -218,13 +218,13 @@
     virtual FXCODEC_STATUS		ContinueDecode(void* pJbig2Content, IFX_Pause* pPause) = 0;
     virtual void				DestroyJbig2Context(void* pJbig2Content) = 0;
 };
-class ICodec_Jbig2Encoder : public CFX_Object
+class ICodec_Jbig2Encoder 
 {
 public:
 
     virtual ~ICodec_Jbig2Encoder() {}
 };
-class ICodec_IccModule : public CFX_Object
+class ICodec_IccModule 
 {
 public:
     typedef enum {
diff --git a/core/include/fxcrt/fx_basic.h b/core/include/fxcrt/fx_basic.h
index 45a5a6e..7b700d3 100644
--- a/core/include/fxcrt/fx_basic.h
+++ b/core/include/fxcrt/fx_basic.h
@@ -27,7 +27,7 @@
 template <typename T, size_t N>
 char (&ArraySizeHelper(T (&array)[N]))[N];
 
-class CFX_BinaryBuf : public CFX_Object
+class CFX_BinaryBuf 
 {
 public:
     CFX_BinaryBuf();
@@ -155,7 +155,7 @@
 
     CFX_WideStringC			GetWideString() const;
 };
-class CFX_ArchiveSaver : public CFX_Object
+class CFX_ArchiveSaver 
 {
 public:
     CFX_ArchiveSaver() : m_pStream(NULL) {}
@@ -198,7 +198,7 @@
 
     IFX_FileStream*			m_pStream;
 };
-class CFX_ArchiveLoader : public CFX_Object
+class CFX_ArchiveLoader 
 {
 public:
 
@@ -260,7 +260,7 @@
 
     FX_STRSIZE				m_Length;
 };
-class CFX_FileBufferArchive : public IFX_BufferArchive, public CFX_Object
+class CFX_FileBufferArchive : public IFX_BufferArchive
 {
 public:
     CFX_FileBufferArchive(FX_STRSIZE size = 32768);
@@ -352,7 +352,7 @@
 CFX_WideString FX_UrlDecode(const CFX_ByteString& bsUrl);
 CFX_ByteString FX_EncodeURI(const CFX_WideString& wsURI);
 CFX_WideString FX_DecodeURI(const CFX_ByteString& bsURI);
-class CFX_BasicArray : public CFX_Object
+class CFX_BasicArray 
 {
 protected:
     CFX_BasicArray(int unit_size);
@@ -665,7 +665,7 @@
 };
 typedef CFX_ObjectArray<CFX_ByteString> CFX_ByteStringArray;
 typedef CFX_ObjectArray<CFX_WideString> CFX_WideStringArray;
-class CFX_BaseSegmentedArray : public CFX_Object
+class CFX_BaseSegmentedArray 
 {
 public:
     CFX_BaseSegmentedArray(int unit_size = 1, int segment_units = 512, int index_size = 8);
@@ -734,7 +734,7 @@
     }
 };
 template <class DataType, int FixedSize>
-class CFX_FixedBufGrow : public CFX_Object
+class CFX_FixedBufGrow 
 {
 public:
     CFX_FixedBufGrow() : m_pData(NULL)
@@ -799,7 +799,7 @@
 private:
     DataType*		m_pData;
 };
-class CFX_MapPtrToPtr : public CFX_Object
+class CFX_MapPtrToPtr 
 {
 protected:
 
@@ -916,7 +916,7 @@
         rValue = (ValueType)(FX_UINTPTR)pValue;
     }
 };
-class CFX_CMapDWordToDWord : public CFX_Object
+class CFX_CMapDWordToDWord 
 {
 public:
 
@@ -933,7 +933,7 @@
 
     CFX_BinaryBuf	m_Buffer;
 };
-class CFX_MapByteStringToPtr : public CFX_Object
+class CFX_MapByteStringToPtr 
 {
 protected:
 
@@ -1013,7 +1013,7 @@
 
     ~CFX_MapByteStringToPtr();
 };
-class CFX_CMapByteStringToPtr : public CFX_Object
+class CFX_CMapByteStringToPtr 
 {
 public:
     CFX_CMapByteStringToPtr();
@@ -1041,7 +1041,7 @@
 
     CFX_BaseSegmentedArray			m_Buffer;
 };
-class CFX_PtrList : public CFX_Object
+class CFX_PtrList 
 {
 protected:
 
@@ -1190,7 +1190,7 @@
 
     void					AddData(FX_LPVOID module_id, FX_LPVOID pData, PD_CALLBACK_FREEDATA callback, FX_BOOL bSelfDestruct);
 };
-class CFX_BitStream : public CFX_Object
+class CFX_BitStream 
 {
 public:
 
@@ -1223,7 +1223,7 @@
 
     FX_LPCBYTE			m_pData;
 };
-template <class ObjClass> class CFX_CountRef : public CFX_Object
+template <class ObjClass> class CFX_CountRef 
 {
 public:
 
@@ -1373,7 +1373,7 @@
     virtual ~IFX_Pause() { }
     virtual FX_BOOL	NeedToPauseNow() = 0;
 };
-class CFX_DataFilter : public CFX_Object
+class CFX_DataFilter 
 {
 public:
 
@@ -1448,7 +1448,7 @@
 };
 #define FX_DATALIST_LENGTH	1024
 template<size_t unit>
-class CFX_SortListArray : public CFX_Object
+class CFX_SortListArray 
 {
 protected:
 
@@ -1562,7 +1562,7 @@
     CFX_ArrayTemplate<DataList>	m_DataLists;
 };
 template<typename T1, typename T2>
-class CFX_ListArrayTemplate : public CFX_Object
+class CFX_ListArrayTemplate 
 {
 public:
 
@@ -1603,7 +1603,7 @@
 #define ProgressiveStatus	FX_ProgressiveStatus
 #define FX_NAMESPACE_DECLARE(namespace, type)       namespace::type
 
-class CFX_Vector_3by1 : public CFX_Object
+class CFX_Vector_3by1 
 {
 public:
 
@@ -1619,7 +1619,7 @@
     FX_FLOAT b;
     FX_FLOAT c;
 };
-class CFX_Matrix_3by3 : public CFX_Object
+class CFX_Matrix_3by3 
 {
 public:
 
diff --git a/core/include/fxcrt/fx_coordinates.h b/core/include/fxcrt/fx_coordinates.h
index 0b4b920..758d337 100644
--- a/core/include/fxcrt/fx_coordinates.h
+++ b/core/include/fxcrt/fx_coordinates.h
@@ -18,7 +18,7 @@
 template<class baseType> class CFX_RRTemplate;
 class CFX_Matrix;
 template<class baseType>
-class CFX_PSVTemplate : public CFX_Object
+class CFX_PSVTemplate 
 {
 public:
     typedef CFX_PSVTemplate<baseType>	FXT_PSV;
@@ -230,7 +230,7 @@
 typedef CFX_VTemplate<FX_INT32> CFX_Vector;
 typedef CFX_VTemplate<FX_FLOAT> CFX_VectorF;
 template<class baseType>
-class CFX_RTemplate: public CFX_Object
+class CFX_RTemplate
 {
 public:
     typedef CFX_PSVTemplate<baseType>	FXT_POINT;
@@ -610,7 +610,7 @@
 
     FX_SHORT	Bottom;
 };
-class CFX_FloatRect : public CFX_Object
+class CFX_FloatRect 
 {
 public:
 
@@ -749,7 +749,7 @@
 
     FX_FLOAT			top;
 };
-class CFX_Matrix : public CFX_Object
+class CFX_Matrix 
 {
 public:
 
diff --git a/core/include/fxcrt/fx_memory.h b/core/include/fxcrt/fx_memory.h
index 15dc7da..7884d6b 100644
--- a/core/include/fxcrt/fx_memory.h
+++ b/core/include/fxcrt/fx_memory.h
@@ -10,6 +10,7 @@
 #include "fx_system.h"
 
 #ifdef __cplusplus
+#include <new>
 extern "C" {
 #endif
 #define FX_Alloc(type, size)						(type*)calloc(size, sizeof(type))
@@ -22,76 +23,18 @@
 void	FXMEM_DefaultFree(void* pointer, int flags);
 #ifdef __cplusplus
 }
-#endif
-#ifdef __cplusplus
-class CFX_Object
-{
-public:
-    void*			operator new (size_t size, FX_LPCSTR file, int line)
-    {
-        return malloc(size);
-    }
-    void			operator delete (void* p, FX_LPCSTR file, int line)
-    {
-        free(p);
-    }
-    void*			operator new (size_t size)
-    {
-        return malloc(size);
-    }
-    void			operator delete (void* p)
-    {
-        free(p);
-    }
-    void*			operator new[] (size_t size, FX_LPCSTR file, int line)
-    {
-        return malloc(size);
-    }
-    void			operator delete[] (void* p, FX_LPCSTR file, int line)
-    {
-        free(p);
-    }
-    void*			operator new[] (size_t size)
-    {
-        return malloc(size);
-    }
-    void			operator delete[] (void* p)
-    {
-        free(p);
-    }
-    void*			operator new (size_t, void* buf)
-    {
-        return buf;
-    }
-    void			operator delete (void*, void*)							{}
-};
-#endif
-#ifdef __cplusplus
-#if defined(_DEBUG)
-#define FX_NEW new(__FILE__, __LINE__)
-#else
 
-#define FX_NEW new
-#endif
-#define FX_NEW_VECTOR(Pointer, Class, Count) \
-    { \
-        Pointer = FX_Alloc(Class, Count); \
-        if (Pointer) { \
-            for (int i = 0; i < (Count); i ++) new (Pointer + i) Class; \
-        } \
-    }
-#define FX_DELETE_VECTOR(Pointer, Class, Count) \
-    { \
-        for (int i = 0; i < (Count); i ++) Pointer[i].~Class(); \
-        FX_Free(Pointer); \
-    }
-class CFX_DestructObject : public CFX_Object
+#define FX_NEW new(std::nothrow)
+#define FX_NEW_VECTOR(Pointer, Class, Count) (Pointer = FX_NEW Class[Count])
+#define FX_DELETE_VECTOR(Pointer, Class, Count) delete[] Pointer
+
+class CFX_DestructObject 
 {
 public:
 
     virtual ~CFX_DestructObject() {}
 };
-class CFX_GrowOnlyPool : public CFX_Object
+class CFX_GrowOnlyPool 
 {
 public:
 
diff --git a/core/include/fxcrt/fx_string.h b/core/include/fxcrt/fx_string.h
index ad1d083..df7dd0c 100644
--- a/core/include/fxcrt/fx_string.h
+++ b/core/include/fxcrt/fx_string.h
@@ -21,7 +21,7 @@
 
 // An immutable string with caller-provided storage which must outlive the
 // string itself.
-class CFX_ByteStringC : public CFX_Object
+class CFX_ByteStringC 
 {
 public:
     typedef FX_CHAR value_type;
@@ -171,7 +171,7 @@
 
     FX_CHAR		m_String[1];
 };
-class CFX_ByteString : public CFX_Object
+class CFX_ByteString 
 {
 public:
     typedef FX_CHAR value_type;
@@ -428,7 +428,7 @@
 {
     return CFX_ByteString(str1, str2);
 }
-class CFX_StringBufBase : public CFX_Object
+class CFX_StringBufBase 
 {
 public:
 
@@ -484,7 +484,7 @@
     FX_CHAR		m_Buffer[limit];
 };
 typedef CFX_StringBufTemplate<256> CFX_StringBuf256;
-class CFX_WideStringC : public CFX_Object
+class CFX_WideStringC 
 {
 public:
     typedef FX_WCHAR value_type;
@@ -630,7 +630,7 @@
 
     FX_WCHAR	m_String[1];
 };
-class CFX_WideString : public CFX_Object
+class CFX_WideString 
 {
 public:
     typedef FX_WCHAR value_type;
diff --git a/core/include/fxcrt/fx_xml.h b/core/include/fxcrt/fx_xml.h
index 8fb0015..7f3dbcc 100644
--- a/core/include/fxcrt/fx_xml.h
+++ b/core/include/fxcrt/fx_xml.h
@@ -9,14 +9,14 @@
 
 #include "fx_basic.h"
 
-class CXML_AttrItem : public CFX_Object
+class CXML_AttrItem 
 {
 public:
     CFX_ByteString	m_QSpaceName;
     CFX_ByteString	m_AttrName;
     CFX_WideString	m_Value;
 };
-class CXML_AttrMap : public CFX_Object
+class CXML_AttrMap 
 {
 public:
     CXML_AttrMap()
@@ -35,7 +35,7 @@
     CXML_AttrItem&			GetAt(int index) const;
     CFX_ObjectArray<CXML_AttrItem>*	m_pMap;
 };
-class CXML_Content : public CFX_Object
+class CXML_Content 
 {
 public:
     CXML_Content() : m_bCDATA(FALSE), m_Content() {}
@@ -47,7 +47,7 @@
     FX_BOOL			m_bCDATA;
     CFX_WideString	m_Content;
 };
-class CXML_Element : public CFX_Object
+class CXML_Element 
 {
 public:
     static CXML_Element*	Parse(const void* pBuffer, size_t size, FX_BOOL bSaveSpaceChars = FALSE, FX_FILESIZE* pParsedSize = NULL);
diff --git a/core/include/fxge/fx_dib.h b/core/include/fxge/fx_dib.h
index f7e435d..d6e99b7 100644
--- a/core/include/fxge/fx_dib.h
+++ b/core/include/fxge/fx_dib.h
@@ -136,7 +136,7 @@
 #define FXSETFLAG_COLORTYPE(flag, val)		flag = (((val)<<8)|(flag&0xffff00ff))
 #define FXSETFLAG_ALPHA_FILL(flag, val)		flag = ((val)|(flag&0xffffff00))
 #define FXSETFLAG_ALPHA_STROKE(flag, val)	flag = (((val)<<16)|(flag&0xff00ffff))
-class CFX_DIBSource : public CFX_Object
+class CFX_DIBSource 
 {
 public:
 
@@ -353,7 +353,7 @@
 
     FX_BOOL			GetGrayData(void* pIccTransform = NULL);
 };
-class CFX_DIBExtractor : public CFX_Object
+class CFX_DIBExtractor 
 {
 public:
 
@@ -408,7 +408,7 @@
 
     virtual FX_BOOL		SetInfo(int width, int height, FXDIB_Format src_format, FX_DWORD* pSrcPalette) = 0;
 };
-class CFX_ScanlineCompositor : public CFX_Object
+class CFX_ScanlineCompositor 
 {
 public:
     CFX_ScanlineCompositor();
@@ -450,7 +450,7 @@
     int					m_CacheSize;
     FX_BOOL             m_bRgbByteOrder;
 };
-class CFX_BitmapComposer : public IFX_ScanlineComposer, public CFX_Object
+class CFX_BitmapComposer : public IFX_ScanlineComposer
 {
 public:
 
@@ -487,7 +487,7 @@
     void				ComposeScanlineV(int line, FX_LPCBYTE scanline, FX_LPCBYTE scan_extra_alpha = NULL);
     FX_LPBYTE			m_pScanlineV, m_pClipScanV, m_pAddClipScan, m_pScanlineAlphaV;
 };
-class CFX_BitmapStorer : public IFX_ScanlineComposer, public CFX_Object
+class CFX_BitmapStorer : public IFX_ScanlineComposer
 {
 public:
 
@@ -511,7 +511,7 @@
     CFX_DIBitmap*		m_pBitmap;
 };
 class CStretchEngine;
-class CFX_ImageStretcher : public CFX_Object
+class CFX_ImageStretcher 
 {
 public:
 
@@ -548,7 +548,7 @@
 
     FX_INT32		ContinueStretch(IFX_Pause* pPause);
 };
-class CFX_ImageTransformer : public CFX_Object
+class CFX_ImageTransformer 
 {
 public:
 
@@ -569,7 +569,7 @@
     FX_DWORD	m_Flags;
     int			m_Status;
 };
-class CFX_ImageRenderer : public CFX_Object
+class CFX_ImageRenderer 
 {
 public:
 
diff --git a/core/include/fxge/fx_font.h b/core/include/fxge/fx_font.h
index bf9bb40..6e0c1ba 100644
--- a/core/include/fxge/fx_font.h
+++ b/core/include/fxge/fx_font.h
@@ -50,7 +50,7 @@
 #define FXFONT_FF_SCRIPT		(4<<4)
 #define FXFONT_FW_NORMAL		400
 #define FXFONT_FW_BOLD			700
-class CFX_Font : public CFX_Object
+class CFX_Font 
 {
 public:
     CFX_Font();
@@ -145,7 +145,7 @@
 };
 #define ENCODING_INTERNAL		0
 #define ENCODING_UNICODE		1
-class IFX_FontEncoding : public CFX_Object
+class IFX_FontEncoding 
 {
 public:
     virtual ~IFX_FontEncoding() {}
@@ -164,7 +164,7 @@
 #define FXFONT_SUBST_NONSYMBOL		0x20
 #define FXFONT_SUBST_EXACT			0x40
 #define FXFONT_SUBST_STANDARD		0x80
-class CFX_SubstFont : public CFX_Object
+class CFX_SubstFont 
 {
 public:
 
@@ -199,7 +199,7 @@
     FX_LPCBYTE	m_pFontData;
     FX_DWORD	m_dwSize;
 } FoxitFonts;
-class CFX_FontMgr : public CFX_Object
+class CFX_FontMgr 
 {
 public:
     CFX_FontMgr();
@@ -229,7 +229,7 @@
     FXFT_Library	m_FTLibrary;
     FoxitFonts m_ExternalFonts[16];
 };
-class IFX_FontMapper : public CFX_Object
+class IFX_FontMapper 
 {
 public:
 
@@ -293,7 +293,7 @@
     FXFT_Face			m_FoxitFaces[14];
     IFX_FontEnumerator*		m_pFontEnumerator;
 };
-class IFX_SystemFontInfo : public CFX_Object
+class IFX_SystemFontInfo 
 {
 public:
     static IFX_SystemFontInfo*	CreateDefault();
@@ -339,14 +339,14 @@
     void				ScanFile(CFX_ByteString& path);
     void				ReportFace(CFX_ByteString& path, FXSYS_FILE* pFile, FX_DWORD filesize, FX_DWORD offset);
 };
-class CFX_CountedFaceCache : public CFX_Object
+class CFX_CountedFaceCache 
 {
 public:
     CFX_FaceCache*	m_Obj;
     FX_DWORD		m_nCount;
 };
 typedef CFX_MapPtrTemplate<FXFT_Face, CFX_CountedFaceCache*> CFX_FTCacheMap;
-class CFX_FontCache : public CFX_Object
+class CFX_FontCache 
 {
 public:
     ~CFX_FontCache();
@@ -374,14 +374,14 @@
     CFX_Font* m_pFont;
 };
 #define FX_FONTCACHE_DEFINE(pFontCache, pFont) CFX_AutoFontCache autoFontCache((pFontCache), (pFont))
-class CFX_GlyphBitmap : public CFX_Object
+class CFX_GlyphBitmap 
 {
 public:
     int						m_Top;
     int						m_Left;
     CFX_DIBitmap			m_Bitmap;
 };
-class CFX_FaceCache : public CFX_Object
+class CFX_FaceCache 
 {
 public:
     ~CFX_FaceCache();
diff --git a/core/include/fxge/fx_ge.h b/core/include/fxge/fx_ge.h
index 0c4bce8..f9c4e9b 100644
--- a/core/include/fxge/fx_ge.h
+++ b/core/include/fxge/fx_ge.h
@@ -23,7 +23,7 @@
 class IFX_RenderDeviceDriver;
 class CCodec_ModuleMgr;
 class IFXG_PaintModuleMgr;
-class CFX_GEModule : public CFX_Object
+class CFX_GEModule 
 {
 public:
 
@@ -87,7 +87,7 @@
 #define FXPT_TYPE				0x06
 #define FXFILL_ALTERNATE		1
 #define FXFILL_WINDING			2
-class CFX_ClipRgn : public CFX_Object
+class CFX_ClipRgn 
 {
 public:
 
@@ -146,7 +146,7 @@
 {
     return argb;
 }
-class CFX_PathData : public CFX_Object
+class CFX_PathData 
 {
 public:
 
@@ -222,7 +222,7 @@
 
     int					m_AllocCount;
 };
-class CFX_GraphStateData : public CFX_Object
+class CFX_GraphStateData 
 {
 public:
 
@@ -305,7 +305,7 @@
     FX_DWORD			m_ExtGID;
     FX_BOOL				m_bFontStyle;
 } FXTEXT_CHARPOS;
-class CFX_RenderDevice : public CFX_Object
+class CFX_RenderDevice 
 {
 public:
     CFX_RenderDevice();
@@ -505,7 +505,7 @@
 
     FX_BOOL			m_bOwnedBitmap;
 };
-class IFX_RenderDeviceDriver : public CFX_Object
+class IFX_RenderDeviceDriver 
 {
 public:
 
@@ -644,7 +644,7 @@
     ~IFX_PSOutput() { }
 };
 class CPSFont;
-class CFX_PSRenderer : public CFX_Object
+class CFX_PSRenderer 
 {
 public:
 
diff --git a/core/src/fpdfapi/fpdf_edit/editint.h b/core/src/fpdfapi/fpdf_edit/editint.h
index 6346f06..73b28e3 100644
--- a/core/src/fpdfapi/fpdf_edit/editint.h
+++ b/core/src/fpdfapi/fpdf_edit/editint.h
@@ -6,7 +6,7 @@
 
 #ifndef _FPDF_EDITINT_
 #define _FPDF_EDITINT_
-class CPDF_ObjectStream : public CFX_Object
+class CPDF_ObjectStream 
 {
 public:
     CPDF_ObjectStream();
@@ -27,7 +27,7 @@
 
     CFX_DWordArray		m_OffsetArray;
 };
-class CPDF_XRefStream : public CFX_Object
+class CPDF_XRefStream 
 {
 public:
 
diff --git a/core/src/fpdfapi/fpdf_font/font_int.h b/core/src/fpdfapi/fpdf_font/font_int.h
index 43f4e30..a2d544a 100644
--- a/core/src/fpdfapi/fpdf_font/font_int.h
+++ b/core/src/fpdfapi/fpdf_font/font_int.h
@@ -5,7 +5,7 @@
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
 typedef void* FXFT_Library;
-class CPDF_CMapManager : public CFX_Object
+class CPDF_CMapManager 
 {
 public:
     CPDF_CMapManager();
@@ -22,7 +22,7 @@
     CFX_MapByteStringToPtr	m_CMaps;
     CPDF_CID2UnicodeMap*	m_CID2UnicodeMaps[6];
 };
-class CPDF_FontGlobals : public CFX_Object
+class CPDF_FontGlobals 
 {
 public:
     CPDF_FontGlobals();
@@ -48,7 +48,7 @@
     FX_BYTE		m_Lower[4];
     FX_BYTE		m_Upper[4];
 };
-class CPDF_CMapParser : public CFX_Object
+class CPDF_CMapParser 
 {
 public:
     CPDF_CMapParser();
@@ -73,7 +73,7 @@
 #define CIDCODING_UCS2		5
 #define CIDCODING_CID		6
 #define CIDCODING_UTF16		7
-class CPDF_CMap : public CFX_Object
+class CPDF_CMap 
 {
 public:
     CPDF_CMap();
@@ -138,7 +138,7 @@
     FX_DWORD	dwDataOffset;
     FX_DWORD	dwRecordSize;
 } FXMP_FILEHEADER;
-class CPDF_CID2UnicodeMap : public CFX_Object
+class CPDF_CID2UnicodeMap 
 {
 public:
     CPDF_CID2UnicodeMap();
@@ -152,7 +152,7 @@
     const FX_WORD*	m_pEmbeddedMap;
     FX_DWORD	m_EmbeddedCount;
 };
-class CPDF_ToUnicodeMap : public CFX_Object
+class CPDF_ToUnicodeMap 
 {
 public:
     void					Load(CPDF_Stream* pStream);
@@ -163,7 +163,7 @@
     CPDF_CID2UnicodeMap*	m_pBaseMap;
     CFX_WideTextBuf			m_MultiCharBuf;
 };
-class CPDF_FontCharMap : public CFX_CharMap, public CFX_Object
+class CPDF_FontCharMap : public CFX_CharMap
 {
 public:
     CPDF_FontCharMap(CPDF_Font* pFont);
diff --git a/core/src/fpdfapi/fpdf_font/fpdf_font.cpp b/core/src/fpdfapi/fpdf_font/fpdf_font.cpp
index 41bb95a..91d4010 100644
--- a/core/src/fpdfapi/fpdf_font/fpdf_font.cpp
+++ b/core/src/fpdfapi/fpdf_font/fpdf_font.cpp
@@ -35,7 +35,7 @@
         FX_Free(m_pContrastRamps);
     }
 }
-class CFX_StockFontArray : public CFX_Object
+class CFX_StockFontArray 
 {
 public:
     CFX_StockFontArray()
diff --git a/core/src/fpdfapi/fpdf_font/ttgsubtable.h b/core/src/fpdfapi/fpdf_font/ttgsubtable.h
index 6b1b4f2..d231c13 100644
--- a/core/src/fpdfapi/fpdf_font/ttgsubtable.h
+++ b/core/src/fpdfapi/fpdf_font/ttgsubtable.h
@@ -19,7 +19,7 @@
 protected:
     CFX_BinaryBuf	m_Buffer;
 };
-class CFX_CTTGSUBTable : public CFX_Object
+class CFX_CTTGSUBTable 
 {
 public:
     CFX_CTTGSUBTable(void): m_bFeautureMapLoad(FALSE), loaded(false) {};
@@ -406,7 +406,7 @@
     struct TFeatureList FeatureList;
     struct TLookupList LookupList;
 };
-class CFX_GSUBTable FX_FINAL : public IFX_GSUBTable, public CFX_Object
+class CFX_GSUBTable FX_FINAL : public IFX_GSUBTable
 {
 public:
     virtual void	Release() FX_OVERRIDE
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_func.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_func.cpp
index ae912ac..c786df5 100644
--- a/core/src/fpdfapi/fpdf_page/fpdf_page_func.cpp
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page_func.cpp
@@ -21,7 +21,7 @@
               PSOP_IF, PSOP_IFELSE, PSOP_POP, PSOP_EXCH, PSOP_DUP, PSOP_COPY,
               PSOP_INDEX, PSOP_ROLL, PSOP_PROC, PSOP_CONST
              } PDF_PSOP;
-class CPDF_PSProc : public CFX_Object
+class CPDF_PSProc 
 {
 public:
     ~CPDF_PSProc();
@@ -30,7 +30,7 @@
     CFX_PtrArray		m_Operators;
 };
 #define PSENGINE_STACKSIZE 100
-class CPDF_PSEngine : public CFX_Object
+class CPDF_PSEngine 
 {
 public:
     CPDF_PSEngine();
diff --git a/core/src/fpdfapi/fpdf_page/pageint.h b/core/src/fpdfapi/fpdf_page/pageint.h
index f6b6bea..d9d16a3 100644
--- a/core/src/fpdfapi/fpdf_page/pageint.h
+++ b/core/src/fpdfapi/fpdf_page/pageint.h
@@ -11,7 +11,7 @@
 #define PARSE_STEP_LIMIT		100
 #define STREAM_PARSE_BUFSIZE	20480
 class CPDF_QuickFontCache;
-class CPDF_StreamParser : public CFX_Object
+class CPDF_StreamParser 
 {
 public:
 
@@ -118,7 +118,7 @@
 #define _FPDF_MAX_FORM_LEVEL_		30
 #define _FPDF_MAX_TYPE3_FORM_LEVEL_	4
 #define _FPDF_MAX_OBJECT_STACK_SIZE_ 512
-class CPDF_StreamContentParser : public CFX_Object
+class CPDF_StreamContentParser 
 {
 public:
     CPDF_StreamContentParser();
@@ -280,7 +280,7 @@
     void Handle_NextLineShowText_Space();
     void Handle_Invalid();
 };
-class CPDF_ContentParser : public CFX_Object
+class CPDF_ContentParser 
 {
 public:
     CPDF_ContentParser();
@@ -359,7 +359,7 @@
     }
     return FALSE;
 }
-class CPDF_DocPageData : public CFX_Object
+class CPDF_DocPageData 
 {
 public:
     CPDF_DocPageData(CPDF_Document *pPDFDoc);
@@ -393,7 +393,7 @@
     CPDF_FontFileMap            m_FontFileMap;
     FX_BOOL                     m_bForceClear;
 };
-class CPDF_Function : public CFX_Object
+class CPDF_Function 
 {
 public:
     static CPDF_Function*	Load(CPDF_Object* pFuncObj);
@@ -416,7 +416,7 @@
     virtual FX_BOOL	v_Init(CPDF_Object* pObj) = 0;
     virtual FX_BOOL	v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const = 0;
 };
-class CPDF_IccProfile : public CFX_Object
+class CPDF_IccProfile 
 {
 public:
     CPDF_IccProfile(FX_LPCBYTE pData, FX_DWORD dwSize);
@@ -451,10 +451,10 @@
     CPDF_CountedColorSpace*	m_pCountedBaseCS;
 };
 #define	MAX_PAGE_OBJECTS_UNIFY_NAMING				4096
-class CPDF_ResourceNaming : public CFX_Object
+class CPDF_ResourceNaming 
 {
 public:
-    struct _NamingState : public CFX_Object {
+    struct _NamingState  {
         CFX_ByteString	m_Prefix;
         int				m_nIndex;
     };
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp
index b6d6dc7..4fb9b4d 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp
@@ -54,7 +54,7 @@
 {
     return FX_NEW CPDF_StandardCryptoHandler;
 }
-typedef struct _PDF_CRYPTOITEM : public CFX_Object {
+typedef struct _PDF_CRYPTOITEM  {
     FX_INT32	m_Cipher;
     FX_INT32	m_KeyLen;
     FX_BOOL		m_bChecked;
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
index 4be403b..7c3253f 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
@@ -2724,7 +2724,7 @@
     }
 }
 
-class CPDF_DataAvail FX_FINAL : public CFX_Object, public IPDF_DataAvail
+class CPDF_DataAvail FX_FINAL : public IPDF_DataAvail
 {
 public:
     CPDF_DataAvail(IFX_FileAvail* pFileAvail, IFX_FileRead* pFileRead);
diff --git a/core/src/fpdfapi/fpdf_render/render_int.h b/core/src/fpdfapi/fpdf_render/render_int.h
index 5606562..086a1c2 100644
--- a/core/src/fpdfapi/fpdf_render/render_int.h
+++ b/core/src/fpdfapi/fpdf_render/render_int.h
@@ -9,7 +9,7 @@
 #endif
 class CPDF_QuickStretcher;
 #define TYPE3_MAX_BLUES		16
-class CPDF_Type3Glyphs : public CFX_Object
+class CPDF_Type3Glyphs 
 {
 public:
     CPDF_Type3Glyphs()
@@ -25,7 +25,7 @@
     int						m_TopBlueCount, m_BottomBlueCount;
 };
 class CFX_GlyphBitmap;
-class CPDF_Type3Cache : public CFX_Object
+class CPDF_Type3Cache 
 {
 public:
     CPDF_Type3Cache(CPDF_Type3Font* pFont)
@@ -39,7 +39,7 @@
     CPDF_Type3Font*			m_pFont;
     CFX_MapByteStringToPtr	m_SizeMap;
 };
-class CPDF_TransferFunc : public CFX_Object
+class CPDF_TransferFunc 
 {
 public:
     CPDF_Document*	m_pPDFDoc;
@@ -51,7 +51,7 @@
 };
 typedef CFX_MapPtrTemplate<CPDF_Font*, CPDF_CountedObject<CPDF_Type3Cache*>*> CPDF_Type3CacheMap;
 typedef CFX_MapPtrTemplate<CPDF_Object*, CPDF_CountedObject<CPDF_TransferFunc*>*> CPDF_TransferFuncMap;
-class CPDF_DocRenderData : public CFX_Object
+class CPDF_DocRenderData 
 {
 public:
     CPDF_DocRenderData(CPDF_Document* pPDFDoc = NULL);
@@ -78,7 +78,7 @@
     CFX_AffineMatrix			m_Matrix;
 };
 typedef CFX_ArrayTemplate<_PDF_RenderItem>	CPDF_RenderLayer;
-class IPDF_ObjectRenderer : public CFX_Object
+class IPDF_ObjectRenderer 
 {
 public:
     static IPDF_ObjectRenderer* Create(int type);
@@ -87,7 +87,7 @@
     virtual FX_BOOL Continue(IFX_Pause* pPause) = 0;
     FX_BOOL		m_Result;
 };
-class CPDF_RenderStatus : public CFX_Object
+class CPDF_RenderStatus 
 {
 public:
     CPDF_RenderStatus();
@@ -179,7 +179,7 @@
     FX_ARGB					m_T3FillColor;
     int                     m_curBlend;
 };
-class CPDF_ImageLoader : public CFX_Object
+class CPDF_ImageLoader 
 {
 public:
     CPDF_ImageLoader()
@@ -205,7 +205,7 @@
     FX_INT32                m_nDownsampleWidth;
     FX_INT32                m_nDownsampleHeight;
 };
-class CPDF_ProgressiveImageLoaderHandle : public CFX_Object
+class CPDF_ProgressiveImageLoaderHandle 
 {
 public:
     CPDF_ProgressiveImageLoaderHandle();
@@ -258,7 +258,7 @@
     FX_BOOL				DrawMaskedImage();
     FX_BOOL				DrawPatternImage(const CFX_Matrix* pObj2Device);
 };
-class CPDF_ScaledRenderBuffer : public CFX_Object
+class CPDF_ScaledRenderBuffer 
 {
 public:
     CPDF_ScaledRenderBuffer();
@@ -283,7 +283,7 @@
     CFX_AffineMatrix	m_Matrix;
 };
 class ICodec_ScanlineDecoder;
-class CPDF_QuickStretcher : public CFX_Object
+class CPDF_QuickStretcher 
 {
 public:
     CPDF_QuickStretcher();
@@ -300,7 +300,7 @@
     CPDF_StreamAcc m_StreamAcc;
     int			m_LineIndex;
 };
-class CPDF_DeviceBuffer : public CFX_Object
+class CPDF_DeviceBuffer 
 {
 public:
     CPDF_DeviceBuffer();
@@ -324,7 +324,7 @@
     CFX_DIBitmap*		m_pBitmap;
     CFX_AffineMatrix	m_Matrix;
 };
-class CPDF_ImageCache : public CFX_Object
+class CPDF_ImageCache 
 {
 public:
     CPDF_ImageCache(CPDF_Document* pDoc, CPDF_Stream* pStream);
diff --git a/core/src/fpdfdoc/doc_form.cpp b/core/src/fpdfdoc/doc_form.cpp
index d695cb9..d8ca525 100644
--- a/core/src/fpdfdoc/doc_form.cpp
+++ b/core/src/fpdfdoc/doc_form.cpp
@@ -29,7 +29,7 @@
 void			EncodeFieldName(const CFX_WideString& csName, CFX_ByteString& csT);
 void			UpdateEncodeFieldName(CPDF_Dictionary* pFieldDict, int nLevel = 0);
 const int nMaxRecursion = 32;
-class _CFieldNameExtractor : public CFX_Object
+class _CFieldNameExtractor 
 {
 public:
     _CFieldNameExtractor(const CFX_WideString& full_name)
@@ -54,10 +54,10 @@
     FX_LPCWSTR m_pEnd;
     FX_LPCWSTR m_pCur;
 };
-class CFieldTree : public CFX_Object
+class CFieldTree 
 {
 public:
-    struct _Node : public CFX_Object {
+    struct _Node  {
         _Node *parent;
         CFX_PtrArray children;
         CFX_WideString short_name;
diff --git a/core/src/fpdfdoc/pdf_vt.h b/core/src/fpdfdoc/pdf_vt.h
index 8fc9c7c..f910dfd 100644
--- a/core/src/fpdfdoc/pdf_vt.h
+++ b/core/src/fpdfdoc/pdf_vt.h
@@ -136,7 +136,7 @@
     FX_FLOAT					fLineAscent;
     FX_FLOAT					fLineDescent;
 };
-struct CPVT_WordInfo : public CFX_Object {
+struct CPVT_WordInfo  {
     CPVT_WordInfo() : Word(0), nCharset(0),
         fWordX(0.0f), fWordY(0.0f), fWordTail(0.0f), nFontIndex(-1), pWordProps(NULL)
     {
@@ -215,7 +215,7 @@
         }
     }
 };
-class CLine : public CFX_Object
+class CLine 
 {
 public:
     CLine();
@@ -282,7 +282,7 @@
     CPVT_ArrayTemplate<CLine*>				m_Lines;
     FX_INT32								m_nTotal;
 };
-class CSection : public CFX_Object
+class CSection 
 {
     friend class CTypeset;
 public:
@@ -400,7 +400,7 @@
     CPDF_Rect								m_rcPlate;
     CPVT_FloatRect							m_rcContent;
 };
-class CPDF_VariableText : public IPDF_VariableText, public CFX_Object, private CPDF_EditContainer
+class CPDF_VariableText : public IPDF_VariableText, private CPDF_EditContainer
 {
     friend class CTypeset;
     friend class CSection;
@@ -613,7 +613,7 @@
     IPDF_VariableText_Provider *			m_pVTProvider;
     CPDF_VariableText_Iterator *			m_pVTIterator;
 };
-class CPDF_VariableText_Iterator : public IPDF_VariableText_Iterator, public CFX_Object
+class CPDF_VariableText_Iterator : public IPDF_VariableText_Iterator
 {
 public:
     CPDF_VariableText_Iterator(CPDF_VariableText * pVT);
diff --git a/core/src/fpdftext/fpdf_text_search.cpp b/core/src/fpdftext/fpdf_text_search.cpp
index 3bd6450..bfd742f 100644
--- a/core/src/fpdftext/fpdf_text_search.cpp
+++ b/core/src/fpdftext/fpdf_text_search.cpp
@@ -7,7 +7,7 @@
 #include "../../include/fpdfapi/fpdf_pageobj.h"
 #include "../../include/fpdftext/fpdf_text.h"
 #include "../../include/fpdfapi/fpdf_page.h"
-class CPDF_TextStream : public CFX_Object
+class CPDF_TextStream 
 {
 public:
     CPDF_TextStream(CFX_WideTextBuf& buffer, FX_BOOL bUseLF, CFX_PtrArray* pObjArray);
diff --git a/core/src/fpdftext/text_int.h b/core/src/fpdftext/text_int.h
index c3f3b71..0dc17a8 100644
--- a/core/src/fpdftext/text_int.h
+++ b/core/src/fpdftext/text_int.h
@@ -6,7 +6,7 @@
 
 #ifndef _PDF_TEXT_INT_H_
 #define _PDF_TEXT_INT_H_
-class CPDF_TextParseOptions : public CFX_Object
+class CPDF_TextParseOptions 
 {
 public:
     CPDF_TextParseOptions();
@@ -27,7 +27,7 @@
 #define FPDFTEXT_MC_PASS			0
 #define FPDFTEXT_MC_DONE			1
 #define FPDFTEXT_MC_DELAY			2
-typedef struct _PAGECHAR_INFO: public CFX_Object {
+typedef struct _PAGECHAR_INFO {
     int					m_CharCode;
     FX_WCHAR			m_Unicode;
     FX_FLOAT			m_OriginX;
@@ -177,7 +177,7 @@
     CFX_RectArray					m_resArray;
     FX_BOOL							m_IsFind;
 };
-class CPDF_LinkExt: public CFX_Object
+class CPDF_LinkExt
 {
 public:
     CPDF_LinkExt() {};
diff --git a/core/src/fpdftext/txtproc.h b/core/src/fpdftext/txtproc.h
index 5a88ee5..abbe105 100644
--- a/core/src/fpdftext/txtproc.h
+++ b/core/src/fpdftext/txtproc.h
@@ -6,14 +6,14 @@
 
 #ifndef _PDF_TXTPROC_H_
 #define _PDF_TXTPROC_H_
-class CTextColumn : public CFX_Object
+class CTextColumn 
 {
 public:
     FX_FLOAT	m_AvgPos;
     int		m_Count;
     int		m_TextPos;
 };
-class CTextBox : public CFX_Object
+class CTextBox 
 {
 public:
     CFX_WideString	m_Text;
@@ -25,7 +25,7 @@
     FX_FLOAT	m_FontSizeV;
     CTextColumn* m_pColumn;
 };
-class CTextBaseLine : public CFX_Object
+class CTextBaseLine 
 {
 public:
     CTextBaseLine();
@@ -46,7 +46,7 @@
 };
 class CPDF_PageObject;
 class CPDF_TextObject;
-class CTextPage : public CFX_Object
+class CTextPage 
 {
 public:
     CTextPage();
diff --git a/core/src/fxcodec/codec/codec_int.h b/core/src/fxcodec/codec/codec_int.h
index d79f7ce..2b693e8 100644
--- a/core/src/fxcodec/codec/codec_int.h
+++ b/core/src/fxcodec/codec/codec_int.h
@@ -205,7 +205,7 @@
     FX_BOOL		Decode(void* ctx, FX_LPBYTE dest_data, int pitch, FX_BOOL bTranslateColor, FX_LPBYTE offsets);
     void		DestroyDecoder(void* ctx);
 };
-class CPDF_Jbig2Interface : public CFX_Object, public CJBig2_Module
+class CPDF_Jbig2Interface : public CJBig2_Module
 {
 public:
     virtual void *JBig2_Malloc(FX_DWORD dwSize)
@@ -239,7 +239,7 @@
         FX_Free(pMem);
     }
 };
-class CCodec_Jbig2Context : public CFX_Object
+class CCodec_Jbig2Context 
 {
 public:
     CCodec_Jbig2Context();
diff --git a/core/src/fxcodec/codec/fx_codec_fax.cpp b/core/src/fxcodec/codec/fx_codec_fax.cpp
index c6c13f9..c6ab791 100644
--- a/core/src/fxcodec/codec/fx_codec_fax.cpp
+++ b/core/src/fxcodec/codec/fx_codec_fax.cpp
@@ -926,7 +926,7 @@
         }
     }
 }
-class CCodec_FaxEncoder : public CFX_Object
+class CCodec_FaxEncoder 
 {
 public:
     CCodec_FaxEncoder(FX_LPCBYTE src_buf, int width, int height, int pitch);
diff --git a/core/src/fxcodec/codec/fx_codec_flate.cpp b/core/src/fxcodec/codec/fx_codec_flate.cpp
index e17c32a..afdb835 100644
--- a/core/src/fxcodec/codec/fx_codec_flate.cpp
+++ b/core/src/fxcodec/codec/fx_codec_flate.cpp
@@ -74,7 +74,7 @@
         compress(dest_buf, dest_size, src_buf, src_size);
     }
 }
-class CLZWDecoder : public CFX_Object
+class CLZWDecoder 
 {
 public:
     FX_BOOL Decode(FX_LPBYTE output, FX_DWORD& outlen, const FX_BYTE* input, FX_DWORD& size, FX_BOOL bEarlyChange);
diff --git a/core/src/fxcodec/codec/fx_codec_icc.cpp b/core/src/fxcodec/codec/fx_codec_icc.cpp
index 6bdc225..1a4fce6 100644
--- a/core/src/fxcodec/codec/fx_codec_icc.cpp
+++ b/core/src/fxcodec/codec/fx_codec_icc.cpp
@@ -17,7 +17,7 @@
 {
     return cmsMD5computeIDExt(buf, dwSize, ID);
 }
-struct CLcmsCmm : public CFX_Object {
+struct CLcmsCmm  {
     cmsHTRANSFORM m_hTransform;
     int			m_nSrcComponents;
     int			m_nDstComponents;
@@ -342,7 +342,7 @@
             return 0;
     }
 }
-class CFX_IccProfileCache : public CFX_Object
+class CFX_IccProfileCache 
 {
 public:
     CFX_IccProfileCache();
@@ -366,7 +366,7 @@
 void CFX_IccProfileCache::Purge()
 {
 }
-class CFX_IccTransformCache : public CFX_Object
+class CFX_IccTransformCache 
 {
 public:
     CFX_IccTransformCache(CLcmsCmm* pCmm = NULL);
diff --git a/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp b/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp
index d98cb03..0f0d2e5 100644
--- a/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp
+++ b/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp
@@ -584,7 +584,7 @@
         return;
     }
 }
-class CJPX_Decoder : public CFX_Object
+class CJPX_Decoder 
 {
 public:
     CJPX_Decoder();
diff --git a/core/src/fxcrt/extension.h b/core/src/fxcrt/extension.h
index 961e0ec..dbee7e6 100644
--- a/core/src/fxcrt/extension.h
+++ b/core/src/fxcrt/extension.h
@@ -28,7 +28,7 @@
     virtual FX_BOOL		Truncate(FX_FILESIZE szFile) = 0;
 };
 IFXCRT_FileAccess*	FXCRT_FileAccess_Create();
-class CFX_CRTFileStream FX_FINAL : public IFX_FileStream, public CFX_Object
+class CFX_CRTFileStream FX_FINAL : public IFX_FileStream
 {
 public:
     CFX_CRTFileStream(IFXCRT_FileAccess* pFA) : m_pFile(pFA), m_dwCount(1), m_bUseRange(FALSE), m_nOffset(0), m_nSize(0) {}
@@ -133,7 +133,7 @@
 #define FX_MEMSTREAM_BlockSize		(64 * 1024)
 #define FX_MEMSTREAM_Consecutive	0x01
 #define FX_MEMSTREAM_TakeOver		0x02
-class CFX_MemoryStream FX_FINAL : public IFX_MemoryStream, public CFX_Object
+class CFX_MemoryStream FX_FINAL : public IFX_MemoryStream
 {
 public:
     CFX_MemoryStream(FX_BOOL bConsecutive)
diff --git a/core/src/fxcrt/fx_arabic.h b/core/src/fxcrt/fx_arabic.h
index 70ffc9c..b3e906a 100644
--- a/core/src/fxcrt/fx_arabic.h
+++ b/core/src/fxcrt/fx_arabic.h
@@ -6,7 +6,7 @@
 
 #ifndef _FX_ARABIC_IMP
 #define _FX_ARABIC_IMP
-class CFX_BidiChar FX_FINAL : public IFX_BidiChar, public CFX_Object
+class CFX_BidiChar FX_FINAL : public IFX_BidiChar
 {
 public:
     CFX_BidiChar();
diff --git a/core/src/fxcrt/fx_basic_util.cpp b/core/src/fxcrt/fx_basic_util.cpp
index c3df07f..272d43e 100644
--- a/core/src/fxcrt/fx_basic_util.cpp
+++ b/core/src/fxcrt/fx_basic_util.cpp
@@ -294,7 +294,7 @@
     return CFX_WideString::FromUTF8(rURI, rURI.GetLength());
 }
 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
-class CFindFileData : public CFX_Object
+class CFindFileData 
 {
 public:
     virtual ~CFindFileData() {}
diff --git a/core/src/fxcrt/fxcrt_platforms.h b/core/src/fxcrt/fxcrt_platforms.h
index dbdff6a..dbfa58b 100644
--- a/core/src/fxcrt/fxcrt_platforms.h
+++ b/core/src/fxcrt/fxcrt_platforms.h
@@ -10,7 +10,7 @@
 #if _FX_OS_ == _FX_ANDROID_
 void	FXCRT_GetFileModeString(FX_DWORD dwModes, CFX_ByteString &bsMode);
 void	FXCRT_GetFileModeString(FX_DWORD dwModes, CFX_WideString &wsMode);
-class CFXCRT_FileAccess_CRT : public IFXCRT_FileAccess, public CFX_Object
+class CFXCRT_FileAccess_CRT : public IFXCRT_FileAccess
 {
 public:
     CFXCRT_FileAccess_CRT();
diff --git a/core/src/fxcrt/fxcrt_posix.h b/core/src/fxcrt/fxcrt_posix.h
index db4377f..89162cd 100644
--- a/core/src/fxcrt/fxcrt_posix.h
+++ b/core/src/fxcrt/fxcrt_posix.h
@@ -8,7 +8,7 @@
 #define _FXCRT_LINUX_
 #include "extension.h"
 #if _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ || _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ || _FXM_PLATFORM_ == _FXM_PLATFORM_ANDROID_
-class CFXCRT_FileAccess_Posix : public IFXCRT_FileAccess, public CFX_Object
+class CFXCRT_FileAccess_Posix : public IFXCRT_FileAccess
 {
 public:
     CFXCRT_FileAccess_Posix();
diff --git a/core/src/fxcrt/fxcrt_windows.h b/core/src/fxcrt/fxcrt_windows.h
index 39d7255..92646b2 100644
--- a/core/src/fxcrt/fxcrt_windows.h
+++ b/core/src/fxcrt/fxcrt_windows.h
@@ -8,7 +8,7 @@
 #define _FXCRT_WINDOWS_
 #include "extension.h"
 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
-class CFXCRT_FileAccess_Win64 : public IFXCRT_FileAccess, public CFX_Object
+class CFXCRT_FileAccess_Win64 : public IFXCRT_FileAccess
 {
 public:
     CFXCRT_FileAccess_Win64();
diff --git a/core/src/fxcrt/xml_int.h b/core/src/fxcrt/xml_int.h
index 1f75928..964c794 100644
--- a/core/src/fxcrt/xml_int.h
+++ b/core/src/fxcrt/xml_int.h
@@ -6,7 +6,7 @@
 
 #ifndef _FXCRT_XML_INT_
 #define _FXCRT_XML_INT_
-class CXML_DataBufAcc : public IFX_BufferRead, public CFX_Object
+class CXML_DataBufAcc : public IFX_BufferRead
 {
 public:
     CXML_DataBufAcc(FX_LPCBYTE pBuffer, size_t size)
@@ -61,7 +61,7 @@
     size_t			m_dwCurPos;
 };
 #define FX_XMLDATASTREAM_BufferSize		(32 * 1024)
-class CXML_DataStmAcc : public IFX_BufferRead, public CFX_Object
+class CXML_DataStmAcc : public IFX_BufferRead
 {
 public:
     CXML_DataStmAcc(IFX_FileRead *pFileRead)
diff --git a/core/src/fxge/agg/agg23/agg_array.h b/core/src/fxge/agg/agg23/agg_array.h
index f5680d9..b3b5f2b 100644
--- a/core/src/fxge/agg/agg23/agg_array.h
+++ b/core/src/fxge/agg/agg23/agg_array.h
@@ -18,7 +18,7 @@
 #include "agg_basics.h"
 namespace agg
 {
-template<class T> class pod_array : public CFX_Object
+template<class T> class pod_array 
 {
 public:
     typedef T value_type;
@@ -157,7 +157,7 @@
     }
     return *this;
 }
-template<class T, unsigned S = 6> class pod_deque : public CFX_Object
+template<class T, unsigned S = 6> class pod_deque 
 {
 public:
     enum block_scale_e {
@@ -409,7 +409,7 @@
 {
     return m_size * sizeof(T);
 }
-class pod_allocator : public CFX_Object
+class pod_allocator 
 {
 public:
     void remove_all()
diff --git a/core/src/fxge/agg/agg23/agg_basics.h b/core/src/fxge/agg/agg23/agg_basics.h
index a78fed8..d2fad58 100644
--- a/core/src/fxge/agg/agg23/agg_basics.h
+++ b/core/src/fxge/agg/agg23/agg_basics.h
@@ -58,7 +58,7 @@
     cover_none  = 0,
     cover_full  = cover_mask
 };
-template<class T> struct rect_base : public CFX_Object {
+template<class T> struct rect_base  {
     typedef rect_base<T> self_type;
     T x1;
     T y1;
@@ -257,7 +257,7 @@
     c &= ~path_flags_jr;
     return clear_orientation(c) | o;
 }
-struct point_type : public CFX_Object {
+struct point_type  {
     FX_FLOAT x, y;
     unsigned flag;
     point_type() {}
@@ -271,7 +271,7 @@
     }
     point_type_flag(FX_FLOAT x_, FX_FLOAT y_, unsigned flag_ = 0) : point_type(x_, y_), flag(flag_) {}
 };
-struct vertex_type : public CFX_Object {
+struct vertex_type  {
     FX_FLOAT   x, y;
     unsigned cmd;
     vertex_type() {}
diff --git a/core/src/fxge/agg/agg23/agg_conv_adaptor_vcgen.h b/core/src/fxge/agg/agg23/agg_conv_adaptor_vcgen.h
index 1cf817a..0d8d6ff 100644
--- a/core/src/fxge/agg/agg23/agg_conv_adaptor_vcgen.h
+++ b/core/src/fxge/agg/agg23/agg_conv_adaptor_vcgen.h
@@ -18,7 +18,7 @@
 #include "agg_basics.h"
 namespace agg
 {
-struct null_markers : public CFX_Object {
+struct null_markers  {
     void remove_all() {}
     void add_vertex(FX_FLOAT, FX_FLOAT, unsigned) {}
     void prepare_src() {}
@@ -30,7 +30,7 @@
 };
 template<class VertexSource,
          class Generator,
-         class Markers = null_markers> class conv_adaptor_vcgen : public CFX_Object
+         class Markers = null_markers> class conv_adaptor_vcgen 
 {
     enum status {
         initial,
diff --git a/core/src/fxge/agg/agg23/agg_curves.h b/core/src/fxge/agg/agg23/agg_curves.h
index 61270e6..495f7a6 100644
--- a/core/src/fxge/agg/agg23/agg_curves.h
+++ b/core/src/fxge/agg/agg23/agg_curves.h
@@ -19,7 +19,7 @@
 #include "agg_array.h"
 namespace agg
 {
-struct curve4_points : public CFX_Object {
+struct curve4_points  {
     FX_FLOAT cp[8];
     curve4_points() {}
     curve4_points(FX_FLOAT x1, FX_FLOAT y1,
@@ -59,7 +59,7 @@
         return cp[i];
     }
 };
-class curve4_div : public CFX_Object
+class curve4_div 
 {
 public:
     curve4_div() :
@@ -135,7 +135,7 @@
     unsigned              m_count;
     pod_deque<point_type> m_points;
 };
-class curve4 : public CFX_Object
+class curve4 
 {
 public:
     curve4() {}
diff --git a/core/src/fxge/agg/agg23/agg_path_storage.h b/core/src/fxge/agg/agg23/agg_path_storage.h
index 64ea0b4..dc13851 100644
--- a/core/src/fxge/agg/agg23/agg_path_storage.h
+++ b/core/src/fxge/agg/agg23/agg_path_storage.h
@@ -18,7 +18,7 @@
 #include "agg_basics.h"
 namespace agg
 {
-class path_storage : public CFX_Object
+class path_storage 
 {
     enum block_scale_e {
         block_shift = 8,
@@ -27,7 +27,7 @@
         block_pool  = 256
     };
 public:
-    class vertex_source : public CFX_Object
+    class vertex_source 
     {
     public:
         vertex_source() {}
diff --git a/core/src/fxge/agg/agg23/agg_pixfmt_gray.h b/core/src/fxge/agg/agg23/agg_pixfmt_gray.h
index 052a2e3..5a80935 100644
--- a/core/src/fxge/agg/agg23/agg_pixfmt_gray.h
+++ b/core/src/fxge/agg/agg23/agg_pixfmt_gray.h
@@ -28,7 +28,7 @@
 #include "agg_rendering_buffer.h"
 namespace agg
 {
-template<class ColorT> struct blender_gray : public CFX_Object {
+template<class ColorT> struct blender_gray  {
     typedef ColorT color_type;
     typedef typename color_type::value_type value_type;
     typedef typename color_type::calc_type calc_type;
@@ -40,7 +40,7 @@
     }
 };
 template<class Blender, unsigned Step = 1, unsigned Offset = 0>
-class pixel_formats_gray : public CFX_Object
+class pixel_formats_gray 
 {
 public:
     typedef rendering_buffer::row_data row_data;
diff --git a/core/src/fxge/agg/agg23/agg_rasterizer_scanline_aa.h b/core/src/fxge/agg/agg23/agg_rasterizer_scanline_aa.h
index e9f0def..e06322c 100644
--- a/core/src/fxge/agg/agg23/agg_rasterizer_scanline_aa.h
+++ b/core/src/fxge/agg/agg23/agg_rasterizer_scanline_aa.h
@@ -46,7 +46,7 @@
 {
     return int(c * poly_base_size);
 }
-struct cell_aa : public CFX_Object {
+struct cell_aa  {
     int x;
     int y;
     int cover;
@@ -56,7 +56,7 @@
     void set_cover(int c, int a);
     void add_cover(int c, int a);
 };
-class outline_aa : public CFX_Object
+class outline_aa 
 {
     enum cell_block_scale_e {
         cell_block_shift = 12,
@@ -65,7 +65,7 @@
         cell_block_pool  = 256,
         cell_block_limit = 1024
     };
-    struct sorted_y : public CFX_Object {
+    struct sorted_y  {
         unsigned start;
         unsigned num;
     };
@@ -134,7 +134,7 @@
     int       m_max_y;
     bool      m_sorted;
 };
-class scanline_hit_test : public CFX_Object
+class scanline_hit_test 
 {
 public:
     scanline_hit_test(int x) : m_x(x), m_hit(false) {}
@@ -168,7 +168,7 @@
     fill_non_zero,
     fill_even_odd
 };
-class rasterizer_scanline_aa : public CFX_Object
+class rasterizer_scanline_aa 
 {
     enum status {
         status_initial,
diff --git a/core/src/fxge/agg/agg23/agg_renderer_base.h b/core/src/fxge/agg/agg23/agg_renderer_base.h
index 3e20a6d..bd1b203 100644
--- a/core/src/fxge/agg/agg23/agg_renderer_base.h
+++ b/core/src/fxge/agg/agg23/agg_renderer_base.h
@@ -23,7 +23,7 @@
 #include "agg_rendering_buffer.h"
 namespace agg
 {
-template<class PixelFormat> class renderer_base : public CFX_Object
+template<class PixelFormat> class renderer_base 
 {
 public:
     typedef PixelFormat pixfmt_type;
diff --git a/core/src/fxge/agg/agg23/agg_renderer_scanline.h b/core/src/fxge/agg/agg23/agg_renderer_scanline.h
index b02b6b5..62d104f 100644
--- a/core/src/fxge/agg/agg23/agg_renderer_scanline.h
+++ b/core/src/fxge/agg/agg23/agg_renderer_scanline.h
@@ -20,7 +20,7 @@
 #include "agg_render_scanlines.h"
 namespace agg
 {
-template<class BaseRenderer, class SpanGenerator> class renderer_scanline_aa : public CFX_Object
+template<class BaseRenderer, class SpanGenerator> class renderer_scanline_aa 
 {
 public:
     typedef BaseRenderer  base_ren_type;
diff --git a/core/src/fxge/agg/agg23/agg_rendering_buffer.h b/core/src/fxge/agg/agg23/agg_rendering_buffer.h
index 5a8681b..9c1c0c6 100644
--- a/core/src/fxge/agg/agg23/agg_rendering_buffer.h
+++ b/core/src/fxge/agg/agg23/agg_rendering_buffer.h
@@ -22,17 +22,17 @@
 #include "agg_basics.h"
 namespace agg
 {
-class rendering_buffer : public CFX_Object
+class rendering_buffer 
 {
 public:
-    struct row_data : public CFX_Object {
+    struct row_data  {
         int x1, x2;
         const int8u* ptr;
         row_data() {}
         row_data(int x1_, int x2_, const int8u* ptr_) :
             x1(x1_), x2(x2_), ptr(ptr_) {}
     };
-    struct span_data : public CFX_Object {
+    struct span_data  {
         int x;
         unsigned len;
         int8u* ptr;
diff --git a/core/src/fxge/agg/agg23/agg_scanline_u.h b/core/src/fxge/agg/agg23/agg_scanline_u.h
index f99feef..5b13290 100644
--- a/core/src/fxge/agg/agg23/agg_scanline_u.h
+++ b/core/src/fxge/agg/agg23/agg_scanline_u.h
@@ -26,13 +26,13 @@
 #include "agg_array.h"
 namespace agg
 {
-template<class CoverT> class scanline_u : public CFX_Object
+template<class CoverT> class scanline_u 
 {
 public:
     typedef scanline_u<CoverT> self_type;
     typedef CoverT cover_type;
     typedef int16  coord_type;
-    struct span : public CFX_Object {
+    struct span  {
         coord_type  x;
         coord_type  len;
         cover_type* covers;
diff --git a/core/src/fxge/agg/agg23/agg_vcgen_dash.h b/core/src/fxge/agg/agg23/agg_vcgen_dash.h
index 961da2d..9c3aa63 100644
--- a/core/src/fxge/agg/agg23/agg_vcgen_dash.h
+++ b/core/src/fxge/agg/agg23/agg_vcgen_dash.h
@@ -23,7 +23,7 @@
 #include "agg_vertex_sequence.h"
 namespace agg
 {
-class vcgen_dash : public CFX_Object
+class vcgen_dash 
 {
     enum max_dashes_e {
         max_dashes = 32
diff --git a/core/src/fxge/agg/agg23/agg_vcgen_stroke.h b/core/src/fxge/agg/agg23/agg_vcgen_stroke.h
index 38fe1fc..84fadd6 100644
--- a/core/src/fxge/agg/agg23/agg_vcgen_stroke.h
+++ b/core/src/fxge/agg/agg23/agg_vcgen_stroke.h
@@ -18,7 +18,7 @@
 #include "agg_math_stroke.h"
 namespace agg
 {
-class vcgen_stroke : public CFX_Object
+class vcgen_stroke 
 {
     enum status_e {
         initial,
diff --git a/core/src/fxge/agg/agg23/agg_vertex_sequence.h b/core/src/fxge/agg/agg23/agg_vertex_sequence.h
index 29486d4..6600bf2 100644
--- a/core/src/fxge/agg/agg23/agg_vertex_sequence.h
+++ b/core/src/fxge/agg/agg23/agg_vertex_sequence.h
@@ -70,7 +70,7 @@
     }
 }
 const FX_FLOAT vertex_dist_epsilon = 1e-14f;
-struct vertex_dist : public CFX_Object {
+struct vertex_dist  {
     FX_FLOAT   x;
     FX_FLOAT   y;
     FX_FLOAT   dist;
diff --git a/core/src/fxge/agg/agg23/fx_agg_driver.cpp b/core/src/fxge/agg/agg23/fx_agg_driver.cpp
index 8cea42d..5944332 100644
--- a/core/src/fxge/agg/agg23/fx_agg_driver.cpp
+++ b/core/src/fxge/agg/agg23/fx_agg_driver.cpp
@@ -369,7 +369,7 @@
     SetClipMask(rasterizer);
     return TRUE;
 }
-class CFX_Renderer : public CFX_Object
+class CFX_Renderer 
 {
 private:
     int			m_Alpha,
diff --git a/core/src/fxge/agg/include/fx_agg_driver.h b/core/src/fxge/agg/include/fx_agg_driver.h
index c341190..c87fc24 100644
--- a/core/src/fxge/agg/include/fx_agg_driver.h
+++ b/core/src/fxge/agg/include/fx_agg_driver.h
@@ -8,7 +8,7 @@
 #define _FX_AGG_DEVICE_DRIVER_
 #include "fxfx_agg_path_storage.h"
 #include "fxfx_agg_rasterizer_scanline_aa.h"
-class CAgg_PathData : public CFX_Object
+class CAgg_PathData 
 {
 public:
     CAgg_PathData() {}
diff --git a/core/src/fxge/android/fpf_skiafont.h b/core/src/fxge/android/fpf_skiafont.h
index 1d1073c..4285e13 100644
--- a/core/src/fxge/android/fpf_skiafont.h
+++ b/core/src/fxge/android/fpf_skiafont.h
@@ -10,7 +10,7 @@
 class CFPF_SkiaFontDescriptor;
 class CFPF_SkiaFontMgr;
 class SkTypeface;
-class CFPF_SkiaFont : public IFPF_Font, public CFX_Object
+class CFPF_SkiaFont : public IFPF_Font
 {
 public:
     CFPF_SkiaFont();
diff --git a/core/src/fxge/android/fpf_skiafontmgr.h b/core/src/fxge/android/fpf_skiafontmgr.h
index 472fbbd..1ec4a1d 100644
--- a/core/src/fxge/android/fpf_skiafontmgr.h
+++ b/core/src/fxge/android/fpf_skiafontmgr.h
@@ -11,7 +11,7 @@
 #define	FPF_SKIAFONTTYPE_Path		1
 #define FPF_SKIAFONTTYPE_File		2
 #define FPF_SKIAFONTTYPE_Buffer		3
-class CFPF_SkiaFontDescriptor : public CFX_Object
+class CFPF_SkiaFontDescriptor 
 {
 public:
     CFPF_SkiaFontDescriptor() : m_pFamily(NULL), m_dwStyle(0), m_iFaceIndex(0), m_dwCharsets(0), m_iGlyphNum(0) {}
@@ -88,7 +88,7 @@
     FX_LPVOID			m_pBuffer;
     size_t				m_szBuffer;
 };
-class CFPF_SkiaFontMgr : public IFPF_FontMgr, public CFX_Object
+class CFPF_SkiaFontMgr : public IFPF_FontMgr
 {
 public:
     CFPF_SkiaFontMgr();
diff --git a/core/src/fxge/android/fpf_skiamodule.h b/core/src/fxge/android/fpf_skiamodule.h
index c3a78bf..7f53751 100644
--- a/core/src/fxge/android/fpf_skiamodule.h
+++ b/core/src/fxge/android/fpf_skiamodule.h
@@ -8,7 +8,7 @@
 #define _FPF_MODULE_H_
 #if _FX_OS_ == _FX_ANDROID_
 class CFPF_SkiaFontMgr;
-class CFPF_SkiaDeviceModule : public IFPF_DeviceModule, public CFX_Object
+class CFPF_SkiaDeviceModule : public IFPF_DeviceModule
 {
 public:
     CFPF_SkiaDeviceModule() : m_pFontMgr(NULL) {}
diff --git a/core/src/fxge/apple/apple_int.h b/core/src/fxge/apple/apple_int.h
index e379415..6d8260c 100644
--- a/core/src/fxge/apple/apple_int.h
+++ b/core/src/fxge/apple/apple_int.h
@@ -61,7 +61,7 @@
     void saveGraphicsState(void* graphics);
     void restoreGraphicsState(void* graphics);
 };
-class CApplePlatform : public CFX_Object
+class CApplePlatform 
 {
 public:
     CApplePlatform()
diff --git a/core/src/fxge/dib/dib_int.h b/core/src/fxge/dib/dib_int.h
index 19dc358..844c356 100644
--- a/core/src/fxge/dib/dib_int.h
+++ b/core/src/fxge/dib/dib_int.h
@@ -7,7 +7,7 @@
 #ifndef _DIB_INT_H_
 #define _DIB_INT_H_
 
-class CPDF_FixedMatrix : public CFX_Object
+class CPDF_FixedMatrix 
 {
 public:
     CPDF_FixedMatrix(const CFX_AffineMatrix& src, int bits)
@@ -34,7 +34,7 @@
     int		m_SrcEnd;
     int		m_Weights[1];
 };
-class CWeightTable : public CFX_Object
+class CWeightTable 
 {
 public:
     CWeightTable()
@@ -56,7 +56,7 @@
     int				m_DestMin, m_ItemSize;
     FX_LPBYTE		m_pWeightTables;
 };
-class CStretchEngine : public CFX_Object
+class CStretchEngine 
 {
 public:
     CStretchEngine(IFX_ScanlineComposer* pDestBitmap, FXDIB_Format dest_format,
diff --git a/core/src/fxge/dib/fx_dib_convert.cpp b/core/src/fxge/dib/fx_dib_convert.cpp
index ddc24cc..cfcbc70 100644
--- a/core/src/fxge/dib/fx_dib_convert.cpp
+++ b/core/src/fxge/dib/fx_dib_convert.cpp
@@ -97,7 +97,7 @@
     0xffEEEEEE, 0xffDDDDDD, 0xffBBBBBB, 0xffAAAAAA, 0xff888888, 0xff777777,
     0xff555555, 0xff444444, 0xff222222, 0xff111111, 0xff000000
 };
-class CFX_Palette : public CFX_Object
+class CFX_Palette 
 {
 public:
     CFX_Palette();
diff --git a/core/src/fxge/ge/fx_ge_ps.cpp b/core/src/fxge/ge/fx_ge_ps.cpp
index d664b70..9da2246 100644
--- a/core/src/fxge/ge/fx_ge_ps.cpp
+++ b/core/src/fxge/ge/fx_ge_ps.cpp
@@ -13,7 +13,7 @@
     FX_BOOL			m_bGlyphAdjust;
     FX_FLOAT		m_AdjustMatrix[4];
 };
-class CPSFont : public CFX_Object
+class CPSFont 
 {
 public:
     PSGlyph			m_Glyphs[256];
diff --git a/core/src/fxge/ge/text_int.h b/core/src/fxge/ge/text_int.h
index c8d5596..d6b794a 100644
--- a/core/src/fxge/ge/text_int.h
+++ b/core/src/fxge/ge/text_int.h
@@ -12,7 +12,7 @@
     FX_CHAR		m_Key[128];
     int			m_KeyLen;
 };
-class CFX_SizeGlyphCache : public CFX_Object
+class CFX_SizeGlyphCache 
 {
 public:
     CFX_SizeGlyphCache()
@@ -22,7 +22,7 @@
     ~CFX_SizeGlyphCache();
     CFX_MapPtrToPtr			m_GlyphMap;
 };
-class CTTFontDesc : public CFX_Object
+class CTTFontDesc 
 {
 public:
     CTTFontDesc()
@@ -74,7 +74,7 @@
 #define CHARSET_FLAG_BIG5		8
 #define CHARSET_FLAG_GB			16
 #define CHARSET_FLAG_KOREAN		32
-class CFontFaceInfo : public CFX_Object
+class CFontFaceInfo 
 {
 public:
     CFX_ByteString		m_FilePath;
@@ -85,7 +85,7 @@
     FX_DWORD			m_FileSize;
     CFX_ByteString		m_FontTables;
 };
-class CFontFileFaceInfo : public CFX_Object
+class CFontFileFaceInfo 
 {
 public:
     CFontFileFaceInfo();
diff --git a/core/src/fxge/skia/fx_skia_blitter_new.h b/core/src/fxge/skia/fx_skia_blitter_new.h
index 6482832..84fe89d 100644
--- a/core/src/fxge/skia/fx_skia_blitter_new.h
+++ b/core/src/fxge/skia/fx_skia_blitter_new.h
@@ -6,7 +6,7 @@
 #define _FX_SKIABLITTER_H_
 //#define _SKIA_SUPPORT_
 #if defined(_SKIA_SUPPORT_)
-class CFX_SkiaRenderer : public SkBlitter, public CFX_Object
+class CFX_SkiaRenderer : public SkBlitter
 {
 protected:
 	int			m_Alpha, 
@@ -208,7 +208,7 @@
 	FX_BOOL Init(CFX_DIBitmap* pDevice, CFX_DIBitmap* pOriDevice, const CFX_ClipRgn* pClipRgn, FX_DWORD color, FX_BOOL bFullCover, FX_BOOL bRgbByteOrder, 
 		int alpha_flag = 0, void* pIccTransform = NULL); //The alpha flag must be fill_flag if exist.
 };
-class CFX_SkiaA8Renderer : public SkBlitter, public CFX_Object
+class CFX_SkiaA8Renderer : public SkBlitter
 {
 public:
     //--------------------------------------------------------------------
@@ -226,4 +226,4 @@
 	int m_dstHeight;
 };
 #endif
-#endif
\ No newline at end of file
+#endif
diff --git a/core/src/fxge/skia/fx_skia_device.cpp b/core/src/fxge/skia/fx_skia_device.cpp
index 00fe228..6c329ee 100644
--- a/core/src/fxge/skia/fx_skia_device.cpp
+++ b/core/src/fxge/skia/fx_skia_device.cpp
@@ -117,7 +117,7 @@
 	proc(*devPathPtr, rect, blitter);
 }
 
-class CSkia_PathData : public CFX_Object
+class CSkia_PathData 
 {
 public:
 	CSkia_PathData() {}
diff --git a/core/src/fxge/win32/fx_win32_dwrite.cpp b/core/src/fxge/win32/fx_win32_dwrite.cpp
index 2b32d57..1ad4f8c 100644
--- a/core/src/fxge/win32/fx_win32_dwrite.cpp
+++ b/core/src/fxge/win32/fx_win32_dwrite.cpp
@@ -26,7 +26,7 @@
     }
     return newObject;
 }
-class CDwFontFileStream FX_FINAL : public IDWriteFontFileStream, public CFX_Object
+class CDwFontFileStream FX_FINAL : public IDWriteFontFileStream
 {
 public:
     explicit CDwFontFileStream(void const* fontFileReferenceKey, UINT32 fontFileReferenceKeySize);
@@ -46,7 +46,7 @@
     void const* resourcePtr_;
     DWORD resourceSize_;
 };
-class CDwFontFileLoader FX_FINAL : public IDWriteFontFileLoader, public CFX_Object
+class CDwFontFileLoader FX_FINAL : public IDWriteFontFileLoader
 {
 public:
     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void** ppvObject);
@@ -71,7 +71,7 @@
     ULONG refCount_;
     static IDWriteFontFileLoader* instance_;
 };
-class CDwFontContext : public CFX_Object
+class CDwFontContext 
 {
 public:
     CDwFontContext(IDWriteFactory* dwriteFactory);
@@ -83,7 +83,7 @@
     HRESULT hr_;
     IDWriteFactory* dwriteFactory_;
 };
-class CDwGdiTextRenderer : public CFX_Object
+class CDwGdiTextRenderer 
 {
 public:
     CDwGdiTextRenderer(
diff --git a/core/src/fxge/win32/fx_win32_gdipext.cpp b/core/src/fxge/win32/fx_win32_gdipext.cpp
index 0f13721..e668b49 100644
--- a/core/src/fxge/win32/fx_win32_gdipext.cpp
+++ b/core/src/fxge/win32/fx_win32_gdipext.cpp
@@ -1008,7 +1008,7 @@
     CallFunc(GdipDeleteGraphics)(pGraphics);
     return TRUE;
 }
-class GpStream FX_FINAL : public IStream, public CFX_Object
+class GpStream FX_FINAL : public IStream
 {
     LONG	m_RefCount;
     int     m_ReadPos;
diff --git a/core/src/fxge/win32/win32_int.h b/core/src/fxge/win32/win32_int.h
index 83595cb..bc3eb87 100644
--- a/core/src/fxge/win32/win32_int.h
+++ b/core/src/fxge/win32/win32_int.h
@@ -58,7 +58,7 @@
     HMODULE         m_GdiModule;
 };
 #include "dwrite_int.h"
-class CWin32Platform : public CFX_Object
+class CWin32Platform 
 {
 public:
     FX_BOOL			m_bHalfTone;
@@ -164,7 +164,7 @@
     int				m_HorzSize, m_VertSize;
     FX_BOOL			m_bSupportROP;
 };
-class CPSOutput : public IFX_PSOutput, public CFX_Object
+class CPSOutput : public IFX_PSOutput
 {
 public:
     CPSOutput(HDC hDC);
diff --git a/core/src/reflow/autoreflow.h b/core/src/reflow/autoreflow.h
index d98f33b..6a137e9 100644
--- a/core/src/reflow/autoreflow.h
+++ b/core/src/reflow/autoreflow.h
@@ -12,7 +12,7 @@
 class CPDF_AutoReflowLayoutProvider;
 typedef CFX_ArrayTemplate<CPDF_AutoReflowElement*> CAR_ElmPtrArray;
 typedef CFX_ArrayTemplate<CPDF_PageObject*> CAR_ObjPtrArray;
-class CRF_CELL : public CFX_Object
+class CRF_CELL 
 {
 public:
     CRF_CELL() { };
@@ -21,7 +21,7 @@
     int			m_CellWritingMode;
     FX_RECT		m_BBox;
 };
-class CPDF_AutoReflowElement : public IPDF_LayoutElement, public CFX_Object
+class CPDF_AutoReflowElement : public IPDF_LayoutElement
 {
 public:
     CPDF_AutoReflowElement(LayoutType layoutType = LayoutUnknown , CPDF_AutoReflowElement* pParent = NULL) ;
@@ -68,7 +68,7 @@
 #define AUTOREFLOW_STEP_GENERATEParagraph	2
 #define AUTOREFLOW_STEP_CREATEELEMENT		3
 #define AUTOREFLOW_STEP_REMOVEDATA			4
-class CPDF_AutoReflowLayoutProvider : public IPDF_LayoutProvider, public CFX_Object
+class CPDF_AutoReflowLayoutProvider : public IPDF_LayoutProvider
 {
 public:
     CPDF_AutoReflowLayoutProvider(CPDF_PageObjects* pPage, FX_BOOL bReadOrder);
diff --git a/core/src/reflow/layoutprovider_taggedpdf.h b/core/src/reflow/layoutprovider_taggedpdf.h
index b2c8947..b573c3e 100644
--- a/core/src/reflow/layoutprovider_taggedpdf.h
+++ b/core/src/reflow/layoutprovider_taggedpdf.h
@@ -7,7 +7,7 @@
 #ifndef LayoutProvider_TaggedPDF_H
 #define LayoutProvider_TaggedPDF_H
 #include "../../include/reflow/reflowengine.h"
-class CPDF_LayoutElement : public IPDF_LayoutElement, public CFX_Object
+class CPDF_LayoutElement : public IPDF_LayoutElement
 {
 public:
     CPDF_LayoutElement();
@@ -47,7 +47,7 @@
     FX_COLORREF		GetDefaultColorValue(LayoutAttr attr_type);
     CFX_PtrArray	m_ObjArray;
 };
-class CPDF_LayoutProvider_TaggedPDF : public IPDF_LayoutProvider, public CFX_Object
+class CPDF_LayoutProvider_TaggedPDF : public IPDF_LayoutProvider
 {
 public:
     CPDF_LayoutProvider_TaggedPDF();
diff --git a/core/src/reflow/reflowedpage.h b/core/src/reflow/reflowedpage.h
index b768341..5ca7a8d 100644
--- a/core/src/reflow/reflowedpage.h
+++ b/core/src/reflow/reflowedpage.h
@@ -18,7 +18,6 @@
 class CRF_OperationDate;
 class CPDF_ReflowedPage;
 class CPDF_Rect;
-class CFX_Object;
 typedef CFX_SegmentedArray<CRF_Data*> CRF_DataPtrArray;
 class CRF_CharState;
 typedef CFX_SegmentedArray<CRF_CharState> CRF_CharStateArray;
@@ -26,7 +25,7 @@
 #define SST_BLSE	2
 #define SST_ILSE	3
 #define SST_IE		4
-class CPDF_LayoutProcessor_Reflow : public IPDF_LayoutProcessor, public CFX_Object
+class CPDF_LayoutProcessor_Reflow : public IPDF_LayoutProcessor
 {
 public:
     CPDF_LayoutProcessor_Reflow();
@@ -106,7 +105,7 @@
     LayoutEnum	m_InlineAlign;
 };
 typedef CFX_ArrayTemplate<RF_TableCell*> CRF_TableCellArray;
-class CRF_Table : public CFX_Object
+class CRF_Table 
 {
 public:
     CRF_Table()
@@ -120,7 +119,7 @@
     FX_FLOAT			m_TableWidth;
     FX_FLOAT			m_ReflowPageHeight;
 };
-class CRF_CharState : public CFX_Object
+class CRF_CharState 
 {
 public:
     CPDF_Font*	m_pFont;
@@ -132,7 +131,7 @@
 
     CPDF_TextObject*	m_pTextObj;
 };
-class CRF_PageInfo : public CFX_Object
+class CRF_PageInfo 
 {
 public:
     CRF_PageInfo(CPDF_PageObject* pPageObj, CRF_PageInfo* pParent = NULL)
@@ -158,7 +157,7 @@
     CPDF_PageObject*		m_pPageObj;
     CRF_PageInfo*			m_pParent;
 };
-class CPDF_ReflowedPage : public IPDF_ReflowedPage, public CFX_PrivateData, public CFX_Object
+class CPDF_ReflowedPage : public IPDF_ReflowedPage, public CFX_PrivateData
 {
 public:
 
@@ -192,7 +191,7 @@
 
     CFX_MapPtrToPtr*		m_pPageInfos;
 };
-class CPDF_ProgressiveReflowPageParser : public IPDF_ProgressiveReflowPageParser, public CFX_Object
+class CPDF_ProgressiveReflowPageParser : public IPDF_ProgressiveReflowPageParser
 {
 public:
     CPDF_ProgressiveReflowPageParser();
@@ -227,7 +226,7 @@
     int					m_nObjProcessed;
     int m_flags;
 };
-class CPDF_ProgressiveReflowPageRender : public IPDF_ProgressiveReflowPageRender, public CFX_Object
+class CPDF_ProgressiveReflowPageRender : public IPDF_ProgressiveReflowPageRender
 {
 public:
     CPDF_ProgressiveReflowPageRender();
@@ -292,7 +291,7 @@
 #define TYPE_PATH		2
 #define TYPE_IMAGE		3
 #define TYPE_LINE		4
-class CRF_Data : public CFX_Object
+class CRF_Data 
 {
 public:
     typedef enum {Unknow, Text, Image, Path, Line, paragraph} RF_DataType;
diff --git a/fpdfsdk/include/fsdk_baseannot.h b/fpdfsdk/include/fsdk_baseannot.h
index 155ab58..6762bb0 100644
--- a/fpdfsdk/include/fsdk_baseannot.h
+++ b/fpdfsdk/include/fsdk_baseannot.h
@@ -27,7 +27,7 @@
 
 #define CFX_IntArray				CFX_ArrayTemplate<int>
 
-class  CPDFSDK_DateTime : public CFX_Object
+class  CPDFSDK_DateTime 
 {
 public:
 	CPDFSDK_DateTime();
diff --git a/fpdfsdk/include/fsdk_define.h b/fpdfsdk/include/fsdk_define.h
index 7a4067e..2dee672 100644
--- a/fpdfsdk/include/fsdk_define.h
+++ b/fpdfsdk/include/fsdk_define.h
@@ -67,7 +67,7 @@
 
 #include "fpdfview.h"
 
-class CPDF_CustomAccess FX_FINAL : public IFX_FileRead, public CFX_Object
+class CPDF_CustomAccess FX_FINAL : public IFX_FileRead
 {
 public:
 	CPDF_CustomAccess(FPDF_FILEACCESS* pFileAccess);
diff --git a/fpdfsdk/include/fsdk_rendercontext.h b/fpdfsdk/include/fsdk_rendercontext.h
index 51c37b3..94ad48e 100644
--- a/fpdfsdk/include/fsdk_rendercontext.h
+++ b/fpdfsdk/include/fsdk_rendercontext.h
@@ -10,7 +10,7 @@
 #include "../include/fpdf_progressive.h"
 
 // Everything about rendering is put here: for OOM recovery
-class CRenderContext : public CFX_Object
+class CRenderContext 
 {
 public:
 	CRenderContext() { Clear(); }
diff --git a/fpdfsdk/include/javascript/JS_Object.h b/fpdfsdk/include/javascript/JS_Object.h
index 4c7ec89..72cd990 100644
--- a/fpdfsdk/include/javascript/JS_Object.h
+++ b/fpdfsdk/include/javascript/JS_Object.h
@@ -17,7 +17,7 @@
 class CJS_Timer;
 class CJS_Context;
 
-class CJS_EmbedObj : public CFX_Object
+class CJS_EmbedObj 
 {
 public:
 	CJS_EmbedObj(CJS_Object* pJSObject);
@@ -39,7 +39,7 @@
 	CJS_Object*					m_pJSObject;
 };
 
-class CJS_Object : public CFX_Object
+class CJS_Object 
 {
 public:
 	CJS_Object(JSFXObject pObject);
diff --git a/fpdfsdk/src/fpdf_dataavail.cpp b/fpdfsdk/src/fpdf_dataavail.cpp
index 910221a..d6ed3c3 100644
--- a/fpdfsdk/src/fpdf_dataavail.cpp
+++ b/fpdfsdk/src/fpdf_dataavail.cpp
@@ -77,7 +77,7 @@
 	FX_DOWNLOADHINTS* m_pDownloadHints;
 };
 
-class CFPDF_DataAvail : public CFX_Object
+class CFPDF_DataAvail 
 {
 public:
 	CFPDF_DataAvail()
diff --git a/fpdfsdk/src/fpdfview.cpp b/fpdfsdk/src/fpdfview.cpp
index 09690d3..11ef232 100644
--- a/fpdfsdk/src/fpdfview.cpp
+++ b/fpdfsdk/src/fpdfview.cpp
@@ -198,7 +198,7 @@
 
 extern void CheckUnSupportError(CPDF_Document * pDoc, FX_DWORD err_code);
 
-class CMemFile FX_FINAL: public IFX_FileRead, public CFX_Object
+class CMemFile FX_FINAL: public IFX_FileRead
 {
 public:
 	CMemFile(FX_BYTE* pBuf, FX_FILESIZE size):m_pBuf(pBuf),m_size(size) {}
diff --git a/fpdfsdk/src/jsapi/fxjs_v8.cpp b/fpdfsdk/src/jsapi/fxjs_v8.cpp
index 1fb2a08..fdac40d 100644
--- a/fpdfsdk/src/jsapi/fxjs_v8.cpp
+++ b/fpdfsdk/src/jsapi/fxjs_v8.cpp
@@ -28,7 +28,7 @@
 }
 
 
-class CJS_PrivateData: public CFX_Object
+class CJS_PrivateData
 {
 public:
 	CJS_PrivateData():ObjDefID(-1), pPrivate(NULL) {}
@@ -37,7 +37,7 @@
 };
 
 
-class CJS_ObjDefintion: public CFX_Object
+class CJS_ObjDefintion
 {
 public:
 	CJS_ObjDefintion(v8::Isolate* isolate, const wchar_t* sObjName, FXJSOBJTYPE eObjType, LP_CONSTRUCTOR pConstructor, LP_DESTRUCTOR pDestructor, unsigned bApplyNew):