LCOV - code coverage report
Current view: top level - geom - CAEntityName.cpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 57 83 68.7 %
Date: 2020-06-30 00:58:45 Functions: 9 12 75.0 %
Branches: 68 214 31.8 %

           Branch data     Line data    Source code
       1                 :            : //- Class:          CAEntityName
       2                 :            : //- Owner:          Greg Nielson
       3                 :            : //- Description:    Cubit Attribute for entity names.
       4                 :            : //- Checked By:
       5                 :            : //- Version:
       6                 :            : 
       7                 :            : #include "CAEntityName.hpp"
       8                 :            : #include "BasicTopologyEntity.hpp"
       9                 :            : #include "Body.hpp"
      10                 :            : #include "RefEntityName.hpp"
      11                 :            : #include "CastTo.hpp"
      12                 :            : #include "CubitMessage.hpp"
      13                 :            : 
      14                 :      52575 : CubitAttrib* CAEntityName_creator(RefEntity* entity, const CubitSimpleAttrib &p_csa)
      15                 :            : {
      16         [ +  - ]:      52575 :   return new CAEntityName(entity, p_csa);
      17                 :            : }
      18                 :            : 
      19                 :      52575 : CAEntityName::CAEntityName(RefEntity* new_attrib_owner,
      20                 :            :                            const CubitSimpleAttrib &csa_ptr)
      21         [ +  - ]:      52575 :         : CubitAttrib(new_attrib_owner)
      22                 :            : {
      23 [ +  - ][ +  + ]:      52575 :   if(!csa_ptr.isEmpty())
      24                 :            :   {
      25 [ +  - ][ +  - ]:       1329 :     PRINT_DEBUG_94( "Creating ENTITY_NAME attribute from CSA for %s %d\n",
         [ -  + ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
      26                 :            :                 (attribOwnerEntity ? attribOwnerEntity->class_name() : "(none)"),
      27         [ #  # ]:          0 :                 (attribOwnerEntity ? attribOwnerEntity->id() : 0));
      28                 :            : 
      29         [ +  - ]:       1329 :     const std::vector<CubitString>& cs_list = csa_ptr.string_data_list();
      30                 :            : 
      31                 :            :       // step over the attribute type
      32                 :            : 
      33                 :            :       // now read name / option pairs
      34 [ +  - ][ +  + ]:       2968 :     for (size_t i = 1; i<cs_list.size(); i++)
      35                 :            :     {
      36 [ +  - ][ +  - ]:       1639 :       CubitString cs = cs_list[i];
      37 [ +  - ][ -  + ]:       1639 :       if (cs.length() == 0)
      38 [ #  # ][ #  # ]:          0 :         PRINT_WARNING("Empty name attribute for %s %d.\n",
         [ #  # ][ #  # ]
                 [ #  # ]
      39                 :            :                       attribOwnerEntity->class_name(),
      40         [ #  # ]:          0 :                       attribOwnerEntity->id());
      41                 :            :       else
      42         [ +  - ]:       1639 :         entityNames.append(cs);
      43         [ +  - ]:       1639 :     }
      44                 :            : 
      45 [ +  - ][ -  + ]:       1329 :     if (entityNames.size() == 0)
      46                 :       1329 :       deleteAttrib = CUBIT_TRUE;
      47                 :            :   }
      48                 :      52575 : }
      49                 :            : 
      50         [ +  - ]:     143028 : CAEntityName::~CAEntityName()
      51                 :            : {
      52 [ +  - ][ +  - ]:      47676 :   PRINT_DEBUG_94("Deleting ENTITY_NAME attribute\n");
         [ -  + ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
      53         [ -  + ]:      95352 : }
      54                 :            : 
      55                 :       1329 : CubitStatus CAEntityName::actuate()
      56                 :            : {
      57         [ -  + ]:       1329 :   if (hasActuated == CUBIT_TRUE) return CUBIT_SUCCESS;
      58                 :            : 
      59 [ -  + ][ #  # ]:       1329 :   PRINT_DEBUG_94( "Actuating ENTITY_NAME attribute for %s %d\n",
      60         [ #  # ]:          0 :               attribOwnerEntity->class_name(), attribOwnerEntity->id());
      61                 :            : 
      62                 :       1329 :   entityNames.reset();
      63                 :            : 
      64                 :            :   CubitBoolean update_attribs = (CubitBoolean) 
      65                 :       1329 :       (RefEntityName::instance()->get_generate_default_names()!=1);
      66                 :            :   
      67                 :            :   RefEntityName::instance()->add_refentity_name(attribOwnerEntity,entityNames,
      68                 :       1329 :                                                 update_attribs);
      69                 :            : 
      70                 :       1329 :   hasActuated = CUBIT_TRUE;
      71                 :       1329 :   return CUBIT_SUCCESS;
      72                 :            : }
      73                 :            : 
      74                 :      65447 : CubitStatus CAEntityName::update()
      75                 :            : {
      76         [ +  + ]:      65447 :   if (hasUpdated) return CUBIT_SUCCESS;
      77                 :            :   
      78 [ +  - ][ +  - ]:      64553 :   PRINT_DEBUG_94( "Updating ENTITY_NAME attribute for %s %d\n",
         [ -  + ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
      79         [ #  # ]:          0 :               attribOwnerEntity->class_name(), attribOwnerEntity->id());
      80                 :            : 
      81                 :            :     // set the updated flag
      82                 :      64553 :   hasUpdated = CUBIT_TRUE;
      83                 :            : 
      84                 :            :     // first, remove this attrib in its old form from the geometry entity
      85         [ +  + ]:      64553 :   if (hasWritten == CUBIT_TRUE) {
      86         [ +  - ]:       1882 :     attribOwnerEntity->remove_attrib_geometry_entity(this);
      87                 :       1882 :     hasWritten = CUBIT_FALSE;
      88                 :            :   }
      89                 :            :   
      90         [ +  - ]:      64553 :   DLIList<CubitString> names;
      91                 :            :   int num_names = RefEntityName::instance()->
      92 [ +  - ][ +  - ]:      64553 :       get_refentity_name(attribOwnerEntity,names);
      93         [ +  + ]:      64553 :   if( num_names == 0)
      94                 :            :   {
      95         [ +  - ]:      59408 :     delete_attrib(CUBIT_TRUE);
      96                 :      59408 :     return CUBIT_SUCCESS;
      97                 :            :   }
      98                 :            :   else
      99                 :            :   {
     100                 :            :       // get the names; since RefEntityName passes back pointers to
     101                 :            :       // its own strings, create new ones here
     102                 :            :     int i;
     103                 :            : 
     104                 :            :       // first, delete all the old names on the list
     105         [ +  - ]:       5145 :     entityNames.clean_out();
     106                 :            :     
     107 [ +  - ][ +  + ]:      11202 :     for (i = names.size(); i > 0; i--) {
     108 [ +  - ][ +  - ]:       6057 :       entityNames.append(names.get_and_step());
     109                 :            :     }
     110                 :            :     
     111                 :            :       // reset the delete flag if it was set before
     112         [ +  - ]:       5145 :     delete_attrib(CUBIT_FALSE);
     113                 :            :     
     114                 :            :       // now, write to geometry entity
     115         [ +  - ]:       5145 :     attribOwnerEntity->write_specific_cubit_attrib(this);
     116                 :            :   }
     117         [ +  - ]:      65447 :   return CUBIT_SUCCESS;
     118                 :            : }
     119                 :            : 
     120                 :       3104 : CubitStatus CAEntityName::reset()
     121                 :            : {
     122 [ -  + ][ #  # ]:       3104 :   PRINT_DEBUG_94("CAEntityName::reset()\n");
                 [ #  # ]
     123                 :            :   
     124                 :            :   //- reset function, cleans out name list
     125                 :       3104 :   entityNames.clean_out();
     126                 :            : 
     127                 :            :     // need to reset hasUpdated flag too, so next update will do something
     128                 :       3104 :   hasUpdated = CUBIT_FALSE;
     129                 :       3104 :   return CUBIT_SUCCESS;
     130                 :            : }
     131                 :            : 
     132                 :          0 : CubitSimpleAttrib CAEntityName::split_owner()
     133                 :            : {
     134                 :            :     // if this entity is to be split, pass back a simple attribute with
     135                 :            :     // duplicate name data to be put on new entity
     136 [ #  # ][ #  # ]:          0 :   PRINT_DEBUG_94("CAEntityName::split_owner()\n");
                 [ #  # ]
     137                 :          0 :   update();
     138         [ #  # ]:          0 :   if( deleteAttrib )
     139                 :          0 :     return CubitSimpleAttrib();
     140                 :            :   else
     141                 :          0 :     return cubit_simple_attrib();
     142                 :            : }
     143                 :            : 
     144                 :          0 : void CAEntityName::merge_owner(CubitAttrib *deletable_attrib)
     145                 :            : {
     146                 :            :     // if this entity is to be merged, copy names over from deletable entity
     147         [ #  # ]:          0 :   CAEntityName *caen_ptr = CAST_TO(deletable_attrib, CAEntityName);
     148         [ #  # ]:          0 :   if (caen_ptr)
     149                 :            :   {
     150                 :          0 :     DLIList<CubitString> &other_names = caen_ptr->entityNames;
     151                 :          0 :     other_names.reset();
     152         [ #  # ]:          0 :     for (int i = other_names.size(); i--; )
     153                 :            :     {
     154                 :          0 :       entityNames.append(other_names.get_and_step());
     155                 :            :     }
     156                 :            :   }
     157                 :          0 : }
     158                 :            : 
     159                 :      42475 : CubitSimpleAttrib CAEntityName::cubit_simple_attrib()
     160                 :            : {
     161 [ +  - ][ +  - ]:      42475 :   PRINT_DEBUG_94("CAEntityName::cubit_simple_attrib()\n");
         [ -  + ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     162                 :            :   
     163         [ +  - ]:      42475 :   std::vector<CubitString> cs_list;
     164                 :            : 
     165                 :            :     // pack the string list:
     166                 :            :     // character type of this CA
     167 [ +  - ][ +  - ]:      42475 :   cs_list.push_back(att_internal_name());
         [ +  - ][ +  - ]
     168                 :            : 
     169                 :            :     // name, option pairs
     170                 :            :   int i;
     171 [ +  - ][ +  + ]:      55699 :   for ( i = entityNames.size(); i > 0; i--) {
     172 [ +  - ][ +  - ]:      13224 :     cs_list.push_back(entityNames.get_and_step());
     173                 :            :   }
     174                 :            : 
     175 [ +  - ][ +  - ]:      42475 :   return CubitSimpleAttrib(&cs_list, NULL, NULL);
     176                 :            : }
     177                 :            : 
     178                 :            : 
     179                 :          0 : void CAEntityName::print()
     180                 :            : {
     181                 :            :     // print info on this attribute
     182                 :          0 :   entityNames.reset();
     183                 :            :   
     184         [ #  # ]:          0 :   PRINT_INFO("CAEntityName: owner = %s %d; names: ",
     185         [ #  # ]:          0 :              attribOwnerEntity->class_name(), attribOwnerEntity->id());
     186         [ #  # ]:          0 :   for (int i = entityNames.size(); i > 0; i--)
     187 [ #  # ][ #  # ]:          0 :     PRINT_INFO("%s ", entityNames.get_and_step().c_str());
     188                 :            : 
     189 [ #  # ][ #  # ]:          0 :   PRINT_INFO("\n");
     190 [ +  - ][ +  - ]:       6540 : }

Generated by: LCOV version 1.11