/*********************************************************************************************************************** * * Copyright (c) 2010 - 2022 by Tech Soft 3D, Inc. * The information contained herein is confidential and proprietary to Tech Soft 3D, Inc., and considered a trade secret * as defined under civil and criminal statutes. Tech Soft 3D shall pursue its civil and criminal remedies in the event * of unauthorized use or misappropriation of its trade secrets. Use of this information by anyone other than authorized * employees of Tech Soft 3D, Inc. is granted only under a written non-disclosure agreement, expressly prescribing the * scope and manner of such use. * ***********************************************************************************************************************/ #pragma once #ifndef __HTREEDUMP_H__ #define __HTREEDUMP_H__ #include "Visitors.h" #include "tinyxml.h" #include "HXmlReport.h" class HXFeatureTreeReport: public A3DVisitor { public: HXFeatureTreeReport(A3DVisitorContainer* pContainer): A3DVisitor("FeatureTreeReport", pContainer), m_failed_count(0), m_non_implemented_node_count(0), m_non_implemented_subnode_count(0), m_mandatory_missing_count(0), m_hole_mandatory_missing_count(0), m_pattern_mandatory_missing_count(0) {} virtual ~HXFeatureTreeReport() {} inline void SaveFile(const A3DUTF8Char* pcReportPath) { m_sReport.SaveFile(pcReportPath, "FeatureHTML.xsl"); } virtual A3DStatus visitEnter(const A3DFRMTreeConnector& sConnector); virtual A3DStatus visitLeave(const A3DFRMTreeConnector& sConnector); virtual A3DStatus visitEnter(const A3DFRMParameterConnector& sConnector); virtual A3DStatus visitLeave(const A3DFRMParameterConnector& sConnector); virtual A3DStatus visitEnter(const A3DFRMFeatureConnector& sConnector); virtual A3DStatus visitLeave(const A3DFRMFeatureConnector& sConnector); virtual A3DStatus visitEnter(const A3DFRMLinkedItemConnector& sConnector); virtual A3DStatus visitLeave(const A3DFRMLinkedItemConnector& sConnector); private: int m_failed_count; int m_non_implemented_node_count; int m_non_implemented_subnode_count; int m_mandatory_missing_count; int m_hole_mandatory_missing_count; int m_pattern_mandatory_missing_count; HXmlReport m_sReport; std::vector m_apAlreadyparsedFeatures; bool isAlreadyTreadted(const A3DFRMFeatureConnector& sFeature); HXmlElement* traverseRootBaseData(const A3DEntity* pEntity); HXmlElement* traverseReferenceOnTopology(const A3DMiscReferenceOnTopology* pEntityReference); HXmlElement* traverseA3DMiscReferenceOnCsysItem(const A3DMiscReferenceOnCsysItem* pEntityReference); HXmlElement* traverseA3DMiscReferenceOnTessData(const A3DMiscEntityReference* pEntityReference); void traverseEntityReference(const A3DEntity* pEntityReference); void traverseDrawingBlock(const A3DDrawingBlockBasic* pEntityReference); void traverseFeatureStatus(const A3DFRMFeatureConnector& sFeature); void traverseFeatureData(const A3DFRMFeatureConnector& sFeature); }; #endif // __HTREEDUMP_H__