LCOV - code coverage report
Current view: top level - geom/cgm - TDUniqueId.hpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 4 4 100.0 %
Date: 2020-06-30 00:58:45 Functions: 3 4 75.0 %
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : //- Class: TDUniqueId
       2                 :            : //- Owner: Tim Tautges
       3                 :            : //- Description: This tool data generates unique ids using a random number
       4                 :            : //-    generator, and keeps an id in this object
       5                 :            : //- A NOTE ABOUT RANDOM NUMBER GENERATION USED IN THIS CLASS:
       6                 :            : //- A 3rd party random number generator is used in this class, to overcome limitations
       7                 :            : //- of the (16-bit) random number generator on windows systems.  This generator is in
       8                 :            : //- the TRandomMersenne class; see that class for documentation of the actual RNG source.
       9                 :            : //- In this class (TDUniqueId), the random number generator is seeded DURING THE FIRST CALL
      10                 :            : //- TO GET A UNIQUE ID with the output of time(NULL).  This "function-static" method is 
      11                 :            : //- used to further randomize the seed to decrease the liklihood of getting duplicate uids.
      12                 :            : //- 
      13                 :            : //- Checked By: 
      14                 :            : //- Version:
      15                 :            : 
      16                 :            : #ifndef TD_UNIQUE_ID
      17                 :            : #define TD_UNIQUE_ID
      18                 :            : 
      19                 :            : #include "ToolData.hpp"
      20                 :            : #include "MemoryManager.hpp"
      21                 :            : #include "CubitDefines.h"
      22                 :            : #include "CGMGeomConfigure.h"
      23                 :            : #include <map>
      24                 :            : 
      25                 :            : template <class X> class DLIList;
      26                 :            : class ToolDataUser;
      27                 :            : class RefEntity;
      28                 :            : class TDUniqueId;
      29                 :            : 
      30                 :            : typedef std::multimap<long, TDUniqueId*> TDUIDList;
      31                 :            : 
      32                 :            : //This map is used when copying an entity. It maps the unique 
      33                 :            : //id of the original to the unique id of the copy
      34                 :            : typedef std::map<long, long> COPYUIDMap;
      35                 :            : 
      36                 :            : class CUBIT_GEOM_EXPORT TDUniqueId : public ToolData
      37                 :            : {
      38                 :            : private:
      39                 :            : 
      40                 :            :   int uniqueId;
      41                 :            :     //- unique id of the owning entity
      42                 :            : 
      43                 :            :   ToolDataUser *ownerEntity;
      44                 :            :     //- back pointer to the owning entity (needed for sorted lists of
      45                 :            :     //- TDUniqueId's)
      46                 :            :   
      47                 :            :   static MemoryManager memoryManager;
      48                 :            :     //- memory management object
      49                 :            : 
      50                 :            :   static TDUIDList uniqueIdList;
      51                 :            :     //- static list of all entities containing unique ids
      52                 :            : 
      53                 :            :   static COPYUIDMap mapForCopying;
      54                 :            :     //- maps original unique id to that on copy of entity 
      55                 :            : 
      56                 :            :   static int initialize();
      57                 :            :     //- initialize the random number generator
      58                 :            : 
      59                 :            :   static TDUIDList &unique_id_list();
      60                 :            :     //- get a reference to the unique id map
      61                 :            : 
      62                 :            : public:
      63                 :            : 
      64                 :            :   static int generate_unique_id();
      65                 :            :   
      66                 :            :   TDUniqueId(ToolDataUser *owner, const int id = 0);
      67                 :            :     
      68                 :            :   virtual ~TDUniqueId();
      69                 :            :     //-constructor and destructor
      70                 :            : 
      71                 :            :     //- clear copy map
      72                 :            :   static void clear_copy_map();
      73                 :            : 
      74                 :            :   static int is_unique_id(const ToolData* td);
      75                 :            :   
      76                 :            :   static int get_unique_id(ToolDataUser *owner,
      77                 :            :                            const CubitBoolean create_new = CUBIT_TRUE);
      78                 :            :     //- get the unique id for owner, or create a new one
      79                 :            : 
      80                 :            :   int unique_id(); /*{return uniqueId;};*/
      81                 :            :   void unique_id(const int id) {uniqueId = id;};
      82                 :            :     //- get/set functions for unique id
      83                 :            : 
      84                 :            :   static int get_unique_id_for_copy( int original_id );
      85                 :            :     //- when copying an entity that has unique id, gets another
      86                 :            :     //unique id for the copy
      87                 :            : 
      88                 :       1512 :   ToolDataUser *owner_entity() {return ownerEntity;};
      89                 :            :   void owner_entity(ToolDataUser *owner) {ownerEntity = owner;};
      90                 :            :     //- get/set functions for ownerEntity
      91                 :            :   
      92                 :            :   static ToolDataUser *find_td_unique_id(const int temp_id,
      93                 :            :                                          const RefEntity *related_entity = NULL);
      94                 :            :     //- find the tdu with id temp_id (sorts the list if not sorted)
      95                 :            : 
      96                 :            :   static int find_td_unique_id(const int temp_id,
      97                 :            :                                DLIList<ToolDataUser*> &td_list,
      98                 :            :                                const RefEntity *related_entity = NULL);
      99                 :            :     //- find all tdus with id temp_id (sorts the list if not sorted); returns num found
     100                 :            : 
     101                 :       2628 :   SetDynamicMemoryAllocation(memoryManager)
     102                 :            :     //- class specific new and delete operators
     103                 :            : 
     104                 :            :   static void set_memory_allocation_increment(int increment = 0)
     105                 :            :       {memoryManager.set_memory_allocation_increment(increment);}
     106                 :            :     //- set block memory size increment
     107                 :            : 
     108                 :            :   static void destroy_memory()
     109                 :            :       {memoryManager.destroy_memory();}
     110                 :            :     //- destroy all memory allocted to this object
     111                 :            : 
     112                 :            : };
     113                 :            : 
     114                 :       3546 : inline TDUIDList &TDUniqueId::unique_id_list() 
     115                 :            : {
     116                 :       3546 :   return uniqueIdList;
     117                 :            : }
     118                 :            : #endif 
     119                 :            : 
     120                 :            : 

Generated by: LCOV version 1.11