LCOV - code coverage report
Current view: top level - geom - CGMApp.cpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 108 136 79.4 %
Date: 2020-06-30 00:58:45 Functions: 11 12 91.7 %
Branches: 60 174 34.5 %

           Branch data     Line data    Source code
       1                 :            : //-------------------------------------------------------------------------
       2                 :            : // Filename      : CGMApp.cpp
       3                 :            : //
       4                 :            : // Purpose       : Init and cleanup for CGM
       5                 :            : //
       6                 :            : // Special Notes : 
       7                 :            : //
       8                 :            : // Creator       : Byron Hanks
       9                 :            : //
      10                 :            : // Date          : 01/09/2002
      11                 :            : //
      12                 :            : // Owner         : 
      13                 :            : //-------------------------------------------------------------------------
      14                 :            : 
      15                 :            : #include "CGMApp.hpp"
      16                 :            : #include "AppUtil.hpp"
      17                 :            : 
      18                 :            : #include "GeometryQueryTool.hpp"
      19                 :            : #include "GeometryModifyTool.hpp"
      20                 :            : #include "GeometryFeatureTool.hpp"
      21                 :            : #include "GeometryHealerTool.hpp"
      22                 :            : #include "BoundingBoxTool.hpp"
      23                 :            : #include "RefEntityName.hpp"
      24                 :            : #include "SurfaceOverlapTool.hpp"
      25                 :            : #include "CubitSimpleAttrib.hpp"
      26                 :            : #include "TDUniqueId.hpp"
      27                 :            : #include "MergeTool.hpp"
      28                 :            : #include "OldUnmergeCode.hpp"
      29                 :            : #include "ModelQueryEngine.hpp"
      30                 :            : 
      31                 :            : // TODO - I'm not sure this is the place to include all the attributes
      32                 :            : #include "CADefines.hpp"
      33                 :            : #include "CAMergePartner.hpp"
      34                 :            : #include "CAEntityName.hpp"
      35                 :            : #include "CAGroup.hpp"
      36                 :            : #include "CAEntityId.hpp"
      37                 :            : #include "CAUniqueId.hpp"
      38                 :            : #include "CADeferredAttrib.hpp"
      39                 :            : #include "CAEntityColor.hpp"
      40                 :            : #include "CAEntityTol.hpp"
      41                 :            : #include "CAMergeStatus.hpp"
      42                 :            : #include "CASourceFeature.hpp"
      43                 :            : #include "CAEntitySense.hpp"
      44                 :            : #ifdef CAT
      45                 :            : #include "CAProWeld.hpp"
      46                 :            : #endif
      47                 :            : 
      48                 :            : CGMApp* CGMApp::instance_ = NULL;
      49                 :            : 
      50                 :            : // Returns the singleton instance of the app object.
      51                 :     948725 : CGMApp* CGMApp::instance()
      52                 :            : {
      53         [ +  + ]:     948725 :    if (instance_ == NULL)
      54                 :            :    {
      55         [ +  - ]:        874 :       instance_ = new CGMApp();
      56         [ -  + ]:        874 :       if (!instance_ )
      57                 :            :       {
      58 [ #  # ][ #  # ]:          0 :          PRINT_ERROR(" *** Unable to initialize application ***\n");
      59                 :          0 :          exit(1);
      60                 :            :       }
      61                 :            :    }
      62                 :     948725 :    return instance_;
      63                 :            : }
      64                 :            : 
      65                 :       1748 : CGMApp::CGMApp()
      66                 :            : {
      67                 :        874 :     mAppStarted = CUBIT_FALSE;
      68                 :            : 
      69                 :            :       // CGMApp depends on there being an AppUtil
      70         [ +  - ]:        874 :     AppUtil::instance();
      71                 :            : 
      72                 :            :       // initialize my settings
      73         [ +  - ]:        874 :     initialize_settings();    
      74                 :            :   
      75                 :        874 :     caUpdateFlgs = NULL;
      76                 :        874 :     caActuateFlgs = NULL;
      77                 :        874 :     caWriteFlgs = NULL;
      78                 :        874 :     caReadFlgs = NULL;
      79                 :        874 : }
      80                 :            : 
      81                 :          0 : CGMApp::~CGMApp()
      82                 :            : {
      83                 :          0 :     instance_ = NULL;
      84                 :          0 : }
      85                 :            : 
      86                 :        852 : void CGMApp::startup(const std::vector<CubitString> &args)
      87                 :            : {
      88         [ +  + ]:        852 :    if (mAppStarted)
      89                 :         11 :        return;
      90                 :            : 
      91                 :            :     // make sure apputil has started
      92                 :        841 :   AppUtil::instance()->startup();
      93                 :            : 
      94                 :            :      // register attributes
      95                 :        841 :    register_attributes();
      96                 :            : 
      97                 :        841 :    mAppStarted = CUBIT_TRUE;
      98                 :            : }
      99                 :            : 
     100                 :        322 : void CGMApp::shutdown()
     101                 :            : {
     102                 :        322 :    GeometryHealerTool::delete_instance();
     103                 :        322 :    GeometryModifyTool::delete_instance();
     104                 :        322 :    GeometryQueryTool::delete_instance();
     105                 :        322 :    GeometryFeatureTool::delete_instance();
     106                 :        322 :    AnalyticGeometryTool::delete_instance();
     107                 :        322 :    RefEntityName::delete_instance();
     108                 :        322 :    MergeTool::delete_instance();
     109                 :        322 :    ModelQueryEngine::delete_instance();
     110                 :            : 
     111                 :        322 :    DAG::delete_instance();
     112                 :        322 :    mAppStarted = CUBIT_FALSE;
     113                 :        322 : }
     114                 :            : 
     115                 :        874 : void CGMApp::initialize_settings()
     116                 :            : {
     117                 :        874 :   GeometryQueryTool::instance()->initialize_settings();
     118                 :        874 :   GeometryModifyTool::instance()->initialize_settings();
     119                 :        874 :   BoundingBoxTool::initialize_settings();  
     120                 :        874 :   CubitSimpleAttrib::initialize_settings();
     121                 :        874 :   RefEntityName::initialize_settings();
     122                 :        874 :   SurfaceOverlapTool::initialize_settings();
     123                 :        874 :   MergeTool::initialize_settings();
     124                 :        874 :   OldUnmergeCode::initialize_settings();
     125                 :            :   
     126                 :        874 : }
     127                 :            : 
     128                 :        841 : void CGMApp::register_attributes()
     129                 :            : {
     130                 :            :   CubitStatus result;
     131                 :            :   result = mAttribManager.register_attrib_type(CA_MERGE_PARTNER, "merge", "MERGE_PARTNER", 
     132                 :            :                                                CAMergePartner_creator, CUBIT_FALSE,
     133                 :            :                                                CUBIT_FALSE, CUBIT_TRUE, CUBIT_TRUE,
     134                 :        841 :                                                CUBIT_FALSE, CUBIT_FALSE);
     135         [ -  + ]:        841 :   if (CUBIT_SUCCESS != result) {
     136 [ #  # ][ #  # ]:          0 :     PRINT_ERROR("Failed to register attribute type merge.\n");
     137                 :          0 :     return;
     138                 :            :   }
     139                 :            : 
     140                 :            :   result = mAttribManager.register_attrib_type(CA_ENTITY_NAME, "name", "ENTITY_NAME", 
     141                 :            :                                                CAEntityName_creator, CUBIT_TRUE,
     142                 :            :                                                CUBIT_TRUE, CUBIT_TRUE, CUBIT_TRUE,
     143                 :        841 :                                                CUBIT_TRUE, CUBIT_FALSE);
     144         [ -  + ]:        841 :   if (CUBIT_SUCCESS != result) {
     145 [ #  # ][ #  # ]:          0 :     PRINT_ERROR("Failed to register attribute type name.\n");
     146                 :          0 :     return;
     147                 :            :   }
     148                 :            : 
     149                 :            :   result = mAttribManager.register_attrib_type(CA_GROUP, "group", "GROUP",
     150                 :            :                                                CAGroup_creator, CUBIT_FALSE,
     151                 :            :                                                CUBIT_FALSE, CUBIT_TRUE, CUBIT_TRUE,
     152                 :        841 :                                                CUBIT_FALSE, CUBIT_FALSE);
     153         [ -  + ]:        841 :   if (CUBIT_SUCCESS != result) {
     154 [ #  # ][ #  # ]:          0 :     PRINT_ERROR("Failed to register attribute type group.\n");
     155                 :          0 :     return;
     156                 :            :   }
     157                 :            : 
     158                 :            :   result = mAttribManager.register_attrib_type(CA_ENTITY_ID, "id", "ENTITY_ID",
     159                 :            :                                                CAEntityId_creator, CUBIT_FALSE,
     160                 :            :                                                CUBIT_FALSE, CUBIT_TRUE, CUBIT_TRUE,
     161                 :        841 :                                                CUBIT_TRUE, CUBIT_FALSE);
     162         [ -  + ]:        841 :   if (CUBIT_SUCCESS != result) {
     163 [ #  # ][ #  # ]:          0 :     PRINT_ERROR("Failed to register attribute type id.\n");
     164                 :          0 :     return;
     165                 :            :   }
     166                 :            : 
     167                 :            :   result = mAttribManager.register_attrib_type(CA_ENTITY_TOL, "tolerance", "ENTITY_TOL",
     168                 :            :                                                CAEntityTol_creator, CUBIT_FALSE,
     169                 :            :                                                CUBIT_FALSE, CUBIT_TRUE, CUBIT_TRUE,
     170                 :        841 :                                                CUBIT_FALSE, CUBIT_TRUE);
     171         [ -  + ]:        841 :   if (CUBIT_SUCCESS != result) {
     172 [ #  # ][ #  # ]:          0 :     PRINT_ERROR("Failed to register attribute type tolerance.\n");
     173                 :          0 :     return;
     174                 :            :   }
     175                 :            : 
     176                 :            :   result = mAttribManager.register_attrib_type(CA_UNIQUE_ID, "unique id", "UNIQUE_ID",
     177                 :            :                                                CAUniqueId_creator, CUBIT_FALSE,
     178                 :            :                                                CUBIT_FALSE, CUBIT_TRUE, CUBIT_TRUE,
     179                 :        841 :                                                CUBIT_TRUE, CUBIT_FALSE);
     180         [ -  + ]:        841 :   if (CUBIT_SUCCESS != result) {
     181 [ #  # ][ #  # ]:          0 :     PRINT_ERROR("Failed to register attribute type unique id.\n");
     182                 :          0 :     return;
     183                 :            :   }
     184                 :            : 
     185                 :            :   result = mAttribManager.register_attrib_type(CA_DEFERRED_ATTRIB, "deferred attrib", "DEFERRED_ATTRIB",
     186                 :            :                                                CADeferredAttrib_creator, CUBIT_FALSE,
     187                 :            :                                                CUBIT_FALSE, CUBIT_TRUE, CUBIT_TRUE,
     188                 :        841 :                                                CUBIT_FALSE, CUBIT_FALSE);
     189         [ -  + ]:        841 :   if (CUBIT_SUCCESS != result) {
     190 [ #  # ][ #  # ]:          0 :     PRINT_ERROR("Failed to register attribute type deferred attrib.\n");
     191                 :          0 :     return;
     192                 :            :   }
     193                 :            : 
     194                 :            :   result = mAttribManager.register_attrib_type(CA_ENTITY_COLOR, "color", "ENTITY_COLOR",
     195                 :            :                                                CAEntityColor_creator, CUBIT_FALSE,
     196                 :            :                                                CUBIT_FALSE, CUBIT_TRUE, CUBIT_TRUE,
     197                 :        841 :                                                CUBIT_FALSE, CUBIT_TRUE);
     198         [ -  + ]:        841 :   if (CUBIT_SUCCESS != result) {
     199 [ #  # ][ #  # ]:          0 :     PRINT_ERROR("Failed to register attribute type color.\n");
     200                 :          0 :     return;
     201                 :            :   }
     202                 :            : 
     203                 :            :   result = mAttribManager.register_attrib_type(CA_MERGE_STATUS, "merge status", "MERGE_STATUS",
     204                 :            :                                                CAMergeStatus_creator, CUBIT_FALSE,
     205                 :            :                                                CUBIT_FALSE, CUBIT_TRUE, CUBIT_TRUE,
     206                 :        841 :                                                CUBIT_FALSE, CUBIT_FALSE);
     207         [ -  + ]:        841 :   if (CUBIT_SUCCESS != result) {
     208 [ #  # ][ #  # ]:          0 :     PRINT_ERROR("Failed to register attribute type merge status.\n");
     209                 :          0 :     return;
     210                 :            :   }
     211                 :            : 
     212                 :            :   result = mAttribManager.register_attrib_type(CA_SOURCE_FEATURE, "source feature", "SOURCE_FEATURE",
     213                 :            :                                                CASourceFeature_creator, CUBIT_TRUE,
     214                 :            :                                                CUBIT_TRUE, CUBIT_TRUE, CUBIT_TRUE,
     215                 :        841 :                                                CUBIT_TRUE, CUBIT_FALSE);
     216         [ -  + ]:        841 :   if (CUBIT_SUCCESS != result) {
     217 [ #  # ][ #  # ]:          0 :     PRINT_ERROR("Failed to register attribute type source feature.\n");
     218                 :          0 :     return;
     219                 :            :   }
     220                 :            : 
     221                 :            :   result = mAttribManager.register_attrib_type(CA_ENTITY_SENSE, "entity sense", "ENTITY_SENSE",
     222                 :            :                                                CAEntitySense_creator, CUBIT_TRUE,
     223                 :            :                                                CUBIT_TRUE, CUBIT_TRUE, CUBIT_TRUE,
     224                 :        841 :                                                CUBIT_FALSE, CUBIT_FALSE);
     225         [ -  + ]:        841 :   if (CUBIT_SUCCESS != result) {
     226 [ #  # ][ #  # ]:          0 :     PRINT_ERROR("Failed to register attribute type entity sense.\n");
     227                 :        841 :     return;
     228                 :            :   }
     229                 :            : 
     230                 :            : #ifdef CAT
     231                 :            :   result = mAttribManager.register_attrib_type(CA_PRO_WELD, "pro weld", "PRO_WELD",
     232                 :            :                                                CAProWeld_creator, CUBIT_TRUE,
     233                 :            :                                                CUBIT_TRUE, CUBIT_TRUE, CUBIT_TRUE,
     234                 :            :                                                CUBIT_TRUE, CUBIT_FALSE);
     235                 :            :   if (CUBIT_SUCCESS != result) {
     236                 :            :     PRINT_ERROR("Failed to register attribute type pro weld.\n");
     237                 :            :   }
     238                 :            : #endif
     239                 :            : }
     240                 :            : 
     241                 :     946913 : CubitAttribManager* CGMApp::attrib_manager()
     242                 :            : {
     243                 :     946913 :   return &mAttribManager;
     244                 :            : }
     245                 :            : 
     246                 :            : 
     247                 :        319 : void CGMApp::save_current_attribute_states()
     248                 :            : {
     249                 :            :   //all pointers must be NULL
     250 [ -  + ][ #  # ]:        319 :   if( !!caUpdateFlgs && !!caActuateFlgs &&
                 [ #  # ]
     251         [ #  # ]:          0 :       !!caWriteFlgs && !!caReadFlgs )
     252                 :            :   {
     253 [ #  # ][ #  # ]:          0 :     PRINT_ERROR("Problem setting attribute flags\n");
         [ #  # ][ #  # ]
     254                 :        319 :     return;
     255                 :            :   }
     256                 :            :     
     257         [ +  - ]:        319 :   DLIList<int> attrib_types;
     258         [ +  - ]:        319 :   mAttribManager.get_registered_types(attrib_types);
     259                 :            : 
     260 [ +  - ][ +  - ]:        319 :   caUpdateFlgs = new CubitBoolean[attrib_types.size()];
     261 [ +  - ][ +  - ]:        319 :   caActuateFlgs = new CubitBoolean[attrib_types.size()];
     262 [ +  - ][ +  - ]:        319 :   caWriteFlgs = new CubitBoolean[attrib_types.size()];
     263 [ +  - ][ +  - ]:        319 :   caReadFlgs = new CubitBoolean[attrib_types.size()];
     264                 :            : 
     265         [ +  - ]:        319 :   int num_att = attrib_types.size();
     266         [ +  - ]:        319 :   attrib_types.reset();
     267                 :            :   int i;
     268         [ +  + ]:       5324 :   for( i=0; i<num_att; i++ )
     269                 :            :   {
     270         [ +  - ]:       5005 :     int att_type = attrib_types.get();
     271         [ +  - ]:       5005 :     caUpdateFlgs[i] = mAttribManager.auto_update_flag( att_type );
     272         [ +  - ]:       5005 :     caActuateFlgs[i] = mAttribManager.auto_actuate_flag( att_type );
     273         [ +  - ]:       5005 :     caWriteFlgs[i] = mAttribManager.auto_write_flag( att_type );
     274         [ +  - ]:       5005 :     caReadFlgs[i] = mAttribManager.auto_read_flag( att_type );
     275         [ +  - ]:       5005 :     attrib_types.step();
     276         [ +  - ]:        319 :   }
     277                 :            : }
     278                 :            : 
     279                 :        319 : void CGMApp::restore_previous_attribute_states()
     280                 :            : {
     281         [ +  - ]:        319 :   DLIList<int> attrib_types;
     282         [ +  - ]:        319 :   mAttribManager.get_registered_types(attrib_types);
     283                 :            : 
     284         [ +  - ]:        319 :   int num_att = attrib_types.size();
     285         [ +  - ]:        319 :   attrib_types.reset();
     286                 :            :   int i;
     287         [ +  + ]:       5324 :   for( i=0; i<num_att; i++ )
     288                 :            :   {
     289         [ +  - ]:       5005 :     int att_type = attrib_types.get();
     290         [ +  - ]:       5005 :     mAttribManager.set_auto_update_flag( att_type, caUpdateFlgs[i] );
     291         [ +  - ]:       5005 :     mAttribManager.set_auto_actuate_flag( att_type, caActuateFlgs[i] );
     292         [ +  - ]:       5005 :     mAttribManager.set_auto_write_flag( att_type, caWriteFlgs[i] );
     293         [ +  - ]:       5005 :     mAttribManager.set_auto_read_flag( att_type, caReadFlgs[i] );
     294         [ +  - ]:       5005 :     attrib_types.step();
     295                 :            :   }
     296                 :            :   
     297         [ +  - ]:        319 :   delete [] caUpdateFlgs;
     298         [ +  - ]:        319 :   delete [] caActuateFlgs;
     299         [ +  - ]:        319 :   delete [] caWriteFlgs;
     300         [ +  - ]:        319 :   delete [] caReadFlgs;
     301                 :            : 
     302                 :        319 :   caUpdateFlgs = NULL;
     303                 :        319 :   caActuateFlgs = NULL;
     304                 :        319 :   caWriteFlgs = NULL;
     305         [ +  - ]:        319 :   caReadFlgs = NULL;
     306 [ +  - ][ +  - ]:       6859 : }
     307                 :            : 

Generated by: LCOV version 1.11