LCOV - code coverage report
Current view: top level - geom/cgm - CubitAttrib.hpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 19 29 65.5 %
Date: 2020-06-30 00:58:45 Functions: 12 16 75.0 %
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : //- Class:          CubitAttrib
       2                 :            : //- Owner:          Greg Nielson
       3                 :            : //- Description:    pure virtual base class from which all the specific
       4                 :            : //-                 cubit attributes are derived.
       5                 :            : //- Checked By:
       6                 :            : //- Version:
       7                 :            : 
       8                 :            : #ifndef CUBIT_ATTRIB_HPP
       9                 :            : #define CUBIT_ATTRIB_HPP
      10                 :            : 
      11                 :            : #include "CubitString.hpp"
      12                 :            : #include "CubitDefines.h"
      13                 :            : #include "CubitVector.hpp"
      14                 :            : 
      15                 :            : #include "CubitAttribManager.hpp"
      16                 :            : #include "CGMApp.hpp"
      17                 :            : #include "CGMGeomConfigure.h"
      18                 :            : #include "CubitSimpleAttrib.hpp"
      19                 :            : 
      20                 :            : class RefEntity;
      21                 :            : template <class X> class DLIList;
      22                 :            : class CubitSimpleAttrib;
      23                 :            : class CubitAttribUser;
      24                 :            : 
      25                 :            : // this enum used to index static arrays; first attribute must start at 0,
      26                 :            : // last attribute must be CA_LAST_CA (some static arrays dimensioned using
      27                 :            : // this item)
      28                 :            : /*
      29                 :            : enum CubitAttributeType {
      30                 :            :     CA_UNDEFINED = -1,
      31                 :            :     CA_MERGE_PARTNER = 0, // must be 0!!!
      32                 :            :     CA_ENTITY_NAME,
      33                 :            :     CA_GROUP,
      34                 :            :     CA_ENTITY_ID,
      35                 :            : //    CA_PARTITION_VG,
      36                 :            : //    CA_COMPOSITE_VG,
      37                 :            : //    CA_VIRTUAL_VG,
      38                 :            :     CA_UNIQUE_ID,
      39                 :            :     CA_DEFERRED_ATTRIB,
      40                 :            :     CA_MESH_INTERVAL,
      41                 :            :     CA_MESH_RELATIVE_LENGTH,
      42                 :            :     CA_GENESIS_ENTITY,
      43                 :            :     CA_MESH_SCHEME,
      44                 :            :     CA_SMOOTH_SCHEME,
      45                 :            :     CA_VERTEX_TYPE,
      46                 :            :     CA_MESH_CONTAINER,
      47                 :            :     CA_BODIES,
      48                 :            :     CA_ENTITY_COLOR,
      49                 :            : #ifdef CAT
      50                 :            :     CA_VERTEX_FORCE,
      51                 :            :     CA_SURFACE_FORCE,
      52                 :            :     CA_CURVE_FORCE,
      53                 :            :     CA_VERTEX_DISPLACEMENT,
      54                 :            :     CA_SURFACE_DISPLACEMENT,
      55                 :            :     CA_CURVE_DISPLACEMENT,
      56                 :            :     CA_VOLUME_DISPLACEMENT,
      57                 :            :     CA_SURFACE_PRESSURE,
      58                 :            :     CA_CURVE_PRESSURE,
      59                 :            :     CA_SURFACE_TEMPERATURE,
      60                 :            :     CA_CURVE_TEMPERATURE,
      61                 :            :     CA_VERTEX_TEMPERATURE,
      62                 :            :     CA_SURFACE_HEATFLUX,
      63                 :            :     CA_CURVE_HEATFLUX,
      64                 :            :     CA_SURFACE_CONVECTION,
      65                 :            :     CA_CURVE_CONVECTION,
      66                 :            :     CA_SURFACE_CONTACT,
      67                 :            :     CA_CURVE_CONTACT,
      68                 :            : #endif
      69                 :            :     CA_MERGE_STATUS,
      70                 :            :     CA_LAST_CA // must be last item!!!
      71                 :            : };
      72                 :            : */
      73                 :            : class CubitAttrib;
      74                 :            : 
      75                 :            : class CUBIT_GEOM_EXPORT CubitAttribFactory 
      76                 :            : {
      77                 :            : public:
      78                 :            :   friend class CubitAttrib;
      79                 :            :   
      80                 :            : protected:
      81                 :            :   CubitAttribFactory() {};
      82                 :            :   
      83                 :            :   virtual ~CubitAttribFactory() {};
      84                 :            : 
      85                 :            : private:
      86                 :            :   virtual CubitAttrib *create_cubit_attrib(const int attrib_type,
      87                 :            :                                            RefEntity *entity) = 0;
      88                 :            :   
      89                 :            :   virtual CubitAttrib *create_cubit_attrib(CubitSimpleAttrib *csa_ptr,
      90                 :            :                                            RefEntity *entity) = 0;
      91                 :            : };
      92                 :            : 
      93                 :            : class CUBIT_GEOM_EXPORT CubitAttrib
      94                 :            : {
      95                 :            : public:
      96                 :            : 
      97                 :            :   CubitAttrib(RefEntity *attrib_owner);
      98                 :            :     //- bare constructor
      99                 :            : 
     100                 :            :   virtual ~CubitAttrib();
     101                 :            :     //- destructor
     102                 :            : 
     103                 :            : //  static CubitAttrib *create_cubit_attrib(const int attrib_type,
     104                 :            : //                                          RefEntity *entity);
     105                 :            :     //- create a cubit attribute of the specified type and pass it back
     106                 :            : 
     107                 :            : //  static CubitAttrib *create_cubit_attrib(CubitSimpleAttrib *csa_ptr,
     108                 :            : //                                          RefEntity *entity);
     109                 :            :     //- create a cubit attribute from a CSA and pass it back
     110                 :            : 
     111                 :            :     //HEADER-: get/set functions
     112                 :            : 
     113                 :      76700 :   RefEntity* attrib_owner() {return attribOwnerEntity;}
     114                 :            :   void attrib_owner(RefEntity* new_attrib_owner)
     115                 :            :     {attribOwnerEntity = new_attrib_owner;}
     116                 :            :     //- get/set the attrib owner
     117                 :            : 
     118                 :      28884 :   CubitBoolean has_actuated() {return hasActuated;}
     119                 :          0 :   void has_actuated(CubitBoolean set_has_actuated)
     120                 :          0 :     { hasActuated = set_has_actuated;}
     121                 :            :     //- get/set hasActuated
     122                 :            : 
     123                 :     414300 :   CubitBoolean has_updated() {return hasUpdated;}
     124                 :      15489 :   void has_updated(CubitBoolean set_has_updated)
     125                 :      15489 :     { hasUpdated = set_has_updated;}
     126                 :            :     //- get/set hasUpdated
     127                 :            : 
     128                 :            :   virtual CubitBoolean has_written() const;
     129                 :            :   virtual void has_written(CubitBoolean set_has_written);
     130                 :            :     //- get/set hasWritten
     131                 :            :   
     132                 :     246070 :   void delete_attrib(CubitBoolean set_remove) {deleteAttrib = set_remove;}
     133                 :     577254 :   CubitBoolean delete_attrib() {return deleteAttrib;}
     134                 :            :     //- get/set the deleteAttrib flag
     135                 :            : 
     136                 :   10480858 :   CubitAttrib* next_attrib() {return nextAttrib;}
     137                 :            :   CubitStatus set_next_attrib(CubitAttrib* next_attrib_ptr);
     138                 :            :     //- get/set the next attribute in the chain
     139                 :            : 
     140                 :            : //  static CubitStatus auto_create_attribs(CubitAttribUser *cau);
     141                 :            :     //- create attribs whose auto update flag is set
     142                 :            :   
     143                 :            : //  static CubitStatus auto_update_attribs(CubitAttribUser *cau);
     144                 :            :     //- create attribs whose auto update flag is set
     145                 :            :   
     146                 :            : //  static void auto_actuate_flag(int attrib_type, CubitBoolean value);
     147                 :            : //  static CubitBoolean auto_actuate_flag(int attrib_type);
     148                 :            : //  static void auto_update_flag(int attrib_type, CubitBoolean value);
     149                 :            : //  static CubitBoolean auto_update_flag(int attrib_type);
     150                 :            : //  static void auto_write_flag(int attrib_type, CubitBoolean value);
     151                 :            : //  static CubitBoolean auto_write_flag(int attrib_type);
     152                 :            : //  static void auto_read_flag(int attrib_type, CubitBoolean value);
     153                 :            : //  static CubitBoolean auto_read_flag(int attrib_type);
     154                 :            :     //- get/set actuate, update, write, and read flags, static versions
     155                 :            : 
     156                 :            : //  static CubitBoolean* auto_read_flag_ptr(int attrib_type);
     157                 :            : //  static CubitBoolean* auto_actuate_flag_ptr(int attrib_type);
     158                 :            : //  static CubitBoolean* auto_update_flag_ptr(int attrib_type);
     159                 :            : //  static CubitBoolean* auto_write_flag_ptr(int attrib_type);
     160                 :            :       //- get array ptr for actuate, update, write, and read flags, static versions
     161                 :            : 
     162                 :            : //  static void auto_flag(int flag);
     163                 :            : //  static int auto_flag();
     164                 :            :     //- get/set all attribute flags
     165                 :            :   //- returns -1, 0 or 1.
     166                 :            : 
     167                 :            :   void auto_actuate_flag(CubitBoolean value);
     168                 :            :   CubitBoolean auto_actuate_flag();
     169                 :            :   void auto_update_flag(CubitBoolean value);
     170                 :            :   CubitBoolean auto_update_flag();
     171                 :            :   void auto_write_flag(CubitBoolean value);
     172                 :            :   CubitBoolean auto_write_flag();
     173                 :            :   void auto_read_flag(CubitBoolean value);
     174                 :            :   CubitBoolean auto_read_flag();
     175                 :            :     //- get/set actuate, update, write, and read flags, non-static versions
     176                 :            : 
     177                 :            :   CubitBoolean actuate_in_constructor();
     178                 :            :     //- return value of actuateInConstructor for this attribute type
     179                 :            :   
     180                 :            :   CubitBoolean actuate_after_geom_changes();
     181                 :            :     //- return value of actuateAfterGeomChanges for this attribute type
     182                 :            : 
     183                 :            : //  static CubitBoolean overwrite_flag() {return overwriteFlag;}
     184                 :            : //  static void overwrite_flag(CubitBoolean flag) {overwriteFlag = flag;}
     185                 :            :     //- get/set overwriteFlag
     186                 :            :   
     187                 :            :   virtual CubitSimpleAttrib cubit_simple_attrib() = 0;
     188                 :            :     //- return a cubitSimpleAttrib for this CA
     189                 :            : 
     190                 :            :   virtual CubitStatus actuate() = 0;
     191                 :            :     //- actuate this attrib
     192                 :            :   
     193                 :            :   virtual CubitStatus actuate_list(DLIList<RefEntity*>);
     194                 :            :     //- actuate this attrib on each of the entities passed in
     195                 :            : 
     196                 :            :   virtual CubitStatus update() = 0;
     197                 :            :     //- update this attrib
     198                 :            : 
     199                 :            :   virtual CubitStatus reset() = 0;
     200                 :            :     //- reset any lists or other info in this attribute
     201                 :            :   
     202                 :            :   virtual CubitSimpleAttrib split_owner();
     203                 :            :     //- split this attrib; pass back a new simple attrib if desired
     204                 :            : 
     205                 :            :   virtual void merge_owner(CubitAttrib *deletable_ca_ptr);
     206                 :            :     //- merge this attrib with deletable_ca_ptr (keep this)
     207                 :            : 
     208                 :            :   virtual void transf_owner(const CubitVector &matrow1,
     209                 :            :                             const CubitVector &matrow2,
     210                 :            :                             const CubitVector &matrow3,
     211                 :            :                             const CubitVector &translate_vec,
     212                 :            :                             const double scale_factor);
     213                 :            :     //- transform this attrib with the data passed in
     214                 :            : 
     215                 :            :     virtual int int_attrib_type() = 0;
     216                 :            :     //- return the enumerated type of attribute
     217                 :            : 
     218                 :     212532 :   const char *att_internal_name() {
     219                 :     212532 :     return CGMApp::instance()->attrib_manager()->att_internal_name( int_attrib_type() );
     220                 :            :   }
     221                 :            :     //- return the internal name of this attribute
     222                 :            :   
     223                 :            : //  static const char *att_internal_name(CubitAttributeType attrib_type) {
     224                 :            : //    return (attrib_type < 0 || attrib_type > CA_LAST_CA)
     225                 :            : //          ? NULL : attInternalNames[attrib_type]; 
     226                 :            : //  } 
     227                 :            :     //- return the internal name of this CA given the enumerated attribute type
     228                 :            :   
     229                 :            : //  static const char *att_name(CubitAttributeType attrib_type) {
     230                 :            : //    return (attrib_type < 0 || attrib_type > CA_LAST_CA)
     231                 :            : //          ? NULL : attTypeNames[attrib_type]; 
     232                 :            : //  } 
     233                 :            :     //- return the internal name of this CA given the enumerated attribute type
     234                 :            :   
     235                 :            : //  static CubitAttributeType attrib_type(const char* name);
     236                 :            :     //- Converts a string to the corresponding int
     237                 :            : 
     238                 :            : //  static CubitAttributeType attrib_type_from_internal_name(const char* name);
     239                 :            :     //- Converts an "internal name" string to the corresponding int
     240                 :            : 
     241                 :            : //  static CubitAttributeType attrib_type(CubitSimpleAttrib *csa_ptr);
     242                 :            :     //- returns the type given a simple attribute
     243                 :            : 
     244                 :            : //  static int equivalent(CubitAttrib* first_attrib_ptr,
     245                 :            : //                        CubitAttrib* second_attrib_ptr);
     246                 :            :     //- return true if the two ca's are equivalent
     247                 :            :   
     248                 :            :   int equivalent(const CubitSimpleAttrib& csa_ptr);
     249                 :            :     //- return true if the csa and this are equivalent
     250                 :            :   
     251                 :            : //  static CubitBoolean attrib_exists(int attrib_type, CubitBoolean print = CUBIT_TRUE);
     252                 :            :     //- find if the attrib exists, and print some details  
     253                 :            : 
     254                 :            :   virtual void print();
     255                 :            :     //- print some details about this attrib
     256                 :            : 
     257                 :            : //  static CubitStatus import_actuate(DLIList<RefEntity*> &entity_list);
     258                 :            :     //- given a Body list, actuates first the merge partner attribute
     259                 :            :     //- on all entities in the list, then actuates all other types of
     260                 :            :     //- attributes
     261                 :            : 
     262                 :            : //  static void set_cubit_attrib_factory(CubitAttribFactory *factory)
     263                 :            : //    {cubitAttribFactory = factory;}
     264                 :            :     //- user-provided attribute factory
     265                 :            : 
     266                 :            : //  static int number_of_attributes();
     267                 :            :     //- Returns number of defined attributes
     268                 :            :   
     269                 :            : //  static void clear_attrib_importeds();
     270                 :            :     //- clear the attribImported array
     271                 :            : 
     272                 :            : //  static void report_attrib_importeds();
     273                 :            :     //- print info on the attribImported array
     274                 :            : 
     275                 :            : protected:
     276                 :            : 
     277                 :            :   virtual void remove_attribute();
     278                 :            :   //- Removes 'this' attribute
     279                 :            :   virtual void add_attribute();
     280                 :            :   //- and adds a new one with the changed data.
     281                 :            : 
     282                 :            :   CubitBoolean hasActuated;
     283                 :            :     //- flag telling whether this CA has actuated
     284                 :            : 
     285                 :            :   CubitBoolean hasUpdated;
     286                 :            :     //- flag telling whether this CA has updated
     287                 :            : 
     288                 :            :   CubitBoolean hasWritten;
     289                 :            :     //- flag telling whether this CA has a corresponding geometry attribute
     290                 :            :     //- (on the geometric entity assoc'd with the owner)
     291                 :            :   
     292                 :            :   CubitBoolean deleteAttrib;
     293                 :            :     //- flag telling whether this CA should be deleted
     294                 :            : 
     295                 :            :   RefEntity* attribOwnerEntity;
     296                 :            :     //- ref entity to which this CA is associated
     297                 :            :   
     298                 :            :   CubitAttrib* nextAttrib;
     299                 :            :     //- next attribute in the chain
     300                 :            :   
     301                 :            : //   static const char* attTypeNames[];
     302                 :            :     //- names of attribute types
     303                 :            :   
     304                 :            : //   static const char* attInternalNames[];
     305                 :            :     //- names of attributes, used in acis files; can't be the same as
     306                 :            :     //- attTypeNames because those have to be user-recognizable and can
     307                 :            :     //- be multiple words (e.g. "entity name")
     308                 :            : 
     309                 :            : //  static CubitBoolean autoActuateFlag[CA_LAST_CA];
     310                 :            : //  static CubitBoolean autoUpdateFlag[CA_LAST_CA];
     311                 :            : //  static CubitBoolean autoWriteFlag[CA_LAST_CA];
     312                 :            : //  static CubitBoolean autoReadFlag[CA_LAST_CA];
     313                 :            : //  static CubitBoolean actuateInConstructor[CA_LAST_CA];
     314                 :            : //  static CubitBoolean actuateAfterGeomChanges[CA_LAST_CA];
     315                 :            :     //- auto flags for each type of CA
     316                 :            : 
     317                 :            : //  static bool attribImported[CA_LAST_CA];
     318                 :            :     //- static flag used in import type reporting
     319                 :            : 
     320                 :            : //  static CubitBoolean overwriteFlag;
     321                 :            :     //- if CUBIT_TRUE, any attribute can overwrite default files
     322                 :            :     //- (used for mesh container attribute default filenames)
     323                 :            : 
     324                 :            : private:
     325                 :            : 
     326                 :            : //  static CubitAttribFactory *cubitAttribFactory;
     327                 :            :     //- application-provided attribute factory
     328                 :            :   
     329                 :            : };
     330                 :            : 
     331                 :            : // static versions 
     332                 :            : //inline CubitBoolean CubitAttrib::auto_actuate_flag(int attrib_type)
     333                 :            : //{return autoActuateFlag[attrib_type];}
     334                 :            : 
     335                 :            : //inline CubitBoolean CubitAttrib::auto_update_flag(int attrib_type)
     336                 :            : //{return autoUpdateFlag[attrib_type];}
     337                 :            : 
     338                 :            : //inline CubitBoolean CubitAttrib::auto_write_flag(int attrib_type)
     339                 :            : //{return autoWriteFlag[attrib_type];}
     340                 :            : 
     341                 :            : //inline CubitBoolean CubitAttrib::auto_read_flag(int attrib_type)
     342                 :            : //{return autoReadFlag[attrib_type];}
     343                 :            : 
     344                 :            : //inline CubitBoolean* CubitAttrib::auto_read_flag_ptr(int attrib_type)
     345                 :            : //{return &autoReadFlag[attrib_type];}
     346                 :            : 
     347                 :            : //inline CubitBoolean* CubitAttrib::auto_actuate_flag_ptr(int attrib_type)
     348                 :            : //{return &autoActuateFlag[attrib_type];}
     349                 :            : 
     350                 :            : //inline CubitBoolean* CubitAttrib::auto_update_flag_ptr(int attrib_type)
     351                 :            : //{return &autoUpdateFlag[attrib_type];}
     352                 :            : 
     353                 :            : //inline CubitBoolean* CubitAttrib::auto_write_flag_ptr(int attrib_type)
     354                 :            : //{return &autoWriteFlag[attrib_type];}
     355                 :            : 
     356                 :            : // non-static versions 
     357                 :            : inline void CubitAttrib::auto_actuate_flag(CubitBoolean value)
     358                 :            : {
     359                 :            :   CGMApp::instance()->attrib_manager()->set_auto_actuate_flag(int_attrib_type(), value);
     360                 :            : }
     361                 :            : 
     362                 :      16466 : inline CubitBoolean CubitAttrib::auto_actuate_flag()
     363                 :            : {
     364                 :      16466 :   return CGMApp::instance()->attrib_manager()->auto_actuate_flag(int_attrib_type());
     365                 :            : }
     366                 :            :   
     367                 :       6317 : inline CubitBoolean CubitAttrib::actuate_in_constructor()
     368                 :            : {
     369                 :       6317 :   return CGMApp::instance()->attrib_manager()->actuate_in_constructor(int_attrib_type());
     370                 :            : }
     371                 :            :     //- get/set actuate, update, write, and read flags, non-static versions
     372                 :            : 
     373                 :       7621 : inline CubitBoolean CubitAttrib::actuate_after_geom_changes()
     374                 :            : {
     375                 :       7621 :   return CGMApp::instance()->attrib_manager()->actuate_after_geom_changes(int_attrib_type());
     376                 :            : }
     377                 :            :     //- get/set actuate, update, write, and read flags, non-static versions
     378                 :            : 
     379                 :     263386 : inline CubitStatus CubitAttrib::set_next_attrib(CubitAttrib* next_attrib_ptr)
     380                 :            : {
     381                 :     263386 :   nextAttrib = next_attrib_ptr;
     382                 :     263386 :   return CUBIT_SUCCESS;
     383                 :            : }
     384                 :            : 
     385                 :          0 : inline CubitSimpleAttrib CubitAttrib::split_owner()
     386                 :            : {
     387                 :            :     //- split this attrib; pass back a new simple attrib if desired
     388                 :            : 
     389                 :            :     // by default, get rid of this attribute and don't copy to new entity
     390                 :          0 :   deleteAttrib = CUBIT_TRUE;
     391                 :          0 :   return CubitSimpleAttrib();
     392                 :            : }
     393                 :            : 
     394                 :          0 : inline void CubitAttrib::merge_owner(CubitAttrib *)
     395                 :            : {
     396                 :            :     //- merge this attrib with deletable_ca_ptr (keep this)
     397                 :            : 
     398                 :            :     // by default, get rid of this attribute
     399                 :          0 :   deleteAttrib = CUBIT_TRUE;
     400                 :          0 :   return;
     401                 :            : }
     402                 :            : 
     403                 :          0 : inline void CubitAttrib::transf_owner(const CubitVector &,
     404                 :            :                                       const CubitVector &,
     405                 :            :                                       const CubitVector &,
     406                 :            :                                       const CubitVector &,
     407                 :            :                                       const double)
     408                 :            : {
     409                 :            :     //- by default, do nothing
     410                 :          0 : }
     411                 :            : 
     412                 :            : //inline int CubitAttrib::number_of_attributes()
     413                 :            : //{return CA_LAST_CA;}
     414                 :            : 
     415                 :            : #endif
     416                 :            : 

Generated by: LCOV version 1.11