/*********************************************************************************************************************** * * Copyright (c) 2010 - 2025 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_not_implemented_node_count(0), m_not_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_not_implemented_node_count; int m_not_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); void traverseRootBaseData(const A3DEntity* pEntity); void traverseMiscReferenceOnTopology(const A3DMiscReferenceOnTopology* pEntityReference); void traverseMiscReferenceOnCsysItem(const A3DMiscReferenceOnCsysItem* pEntityReference); void traverseMiscReferenceOnTessData(const A3DMiscEntityReference* pEntityReference); void traverseMiscReferenceOnBRep( const A3DEntity* pEntity, const A3DEEntityType eType, const A3DUns32* puiAdditionalIndexes, const A3DUns32 uiAdditionalIndexesSize); void traverseEntityReference(const A3DEntity* pEntityReference); void traverseDrawingBlock(const A3DDrawingBlockBasic* pEntityReference); void traverseFeatureStatus(const A3DFRMFeatureConnector& sFeature); void traverseFeatureData(const A3DFRMFeatureConnector& sFeature); void traverseIndexes(const A3DUns32 uiSize, const A3DUns32* puiIndexes); void DumpIndexesBy3(const char* name, const A3DUns32 uiAdditionalIndexesSize, const A3DUns32* puiAdditionalIndexes); void DumpIndexesBy4(const char* name, const A3DUns32 uiAdditionalIndexesSize, const A3DUns32* puiAdditionalIndexes); }; #endif // __HTREEDUMP_H__