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

           Branch data     Line data    Source code
       1                 :            : //-------------------------------------------------------------------------
       2                 :            : // Filename      : RefEntityFactory.hpp
       3                 :            : //
       4                 :            : // Purpose       : This file produces RefEntity and derived classes; it is
       5                 :            : //                 the interface through which RE's should be created;
       6                 :            : //                 applications of the geometry module can provide their
       7                 :            : //                 own factory, otherwise this factory is used
       8                 :            : //
       9                 :            : // Creator       : Tim Tautges (in its new state)
      10                 :            : //
      11                 :            : // Creation Date : 9/99
      12                 :            : //-------------------------------------------------------------------------
      13                 :            : 
      14                 :            : #ifndef REFENTITYFACTORY_HPP
      15                 :            : #define REFENTITYFACTORY_HPP
      16                 :            : 
      17                 :            : #include "CubitObserver.hpp"
      18                 :            : #include "CubitDefines.h"
      19                 :            : #include "CGMGeomConfigure.h" 
      20                 :            : 
      21                 :            : class RefVertex;
      22                 :            : class RefEdge;
      23                 :            : class RefFace;
      24                 :            : class RefVolume;
      25                 :            : class RefGroup;
      26                 :            : class Body;
      27                 :            : class RefEntity;
      28                 :            : #ifdef PROE
      29                 :            : class RefAssembly;
      30                 :            : class RefPart;
      31                 :            : #endif
      32                 :            : class TBPoint;
      33                 :            : class Curve;
      34                 :            : class Surface;
      35                 :            : class Lump;
      36                 :            : class BodySM;
      37                 :            : 
      38                 :            : class RefVertex;
      39                 :            : class RefEdge;
      40                 :            : class RefFace;
      41                 :            : class RefGroup;
      42                 :            : class RefVolume;
      43                 :            : template <class X> class DLIList;
      44                 :            : class CubitEntity;
      45                 :            : 
      46                 :            : class CUBIT_GEOM_EXPORT RefEntityFactory : public CubitObserver
      47                 :            : {
      48                 :            : public:
      49                 :            : 
      50                 :            :   static RefEntityFactory *instance();
      51                 :            :     //- the function used to access the singleton instance
      52                 :            : 
      53                 :            :   static void delete_instance();
      54                 :            : 
      55                 :            :   virtual RefVertex *construct_RefVertex(TBPoint *point = NULL);
      56                 :            : 
      57                 :            :   virtual RefEdge *construct_RefEdge(Curve *curve = NULL);
      58                 :            : 
      59                 :            :   virtual RefFace *construct_RefFace(Surface *surface = NULL);
      60                 :            : 
      61                 :            :   virtual RefVolume *construct_RefVolume(Lump *lump = NULL);
      62                 :            : 
      63                 :            :   virtual Body *construct_Body(BodySM *body_sm = NULL);
      64                 :            : 
      65                 :            :   virtual RefGroup *construct_RefGroup(const char* name = NULL);
      66                 :            :   virtual RefGroup *construct_RefGroup (DLIList<RefEntity*>& entity_list);
      67                 :            : 
      68                 :            :   virtual CubitStatus ref_entity_list( char const* keyword,
      69                 :            :                                        DLIList<RefEntity*> &entity_list,
      70                 :            :                                        const CubitBoolean print_errors = CUBIT_TRUE);
      71                 :            :     //- return entities of type keyword from the global list in entity_list;
      72                 :            :     //- virtual to allow derived factories to work from their native lists
      73                 :            : 
      74                 :            :   virtual void bodies               (DLIList<Body*> &bodies);
      75                 :            :   virtual void ref_volumes          (DLIList<RefVolume*> &ref_volumes);
      76                 :            :   virtual void ref_groups           (DLIList<RefGroup*> &ref_groups);
      77                 :            :   virtual void ref_faces            (DLIList<RefFace*> &ref_faces);
      78                 :            :   virtual void ref_edges            (DLIList<RefEdge*> &ref_edges);
      79                 :            :   virtual void ref_vertices         (DLIList<RefVertex*> &ref_vertices);
      80                 :            : #ifdef PROE
      81                 :            :   virtual void ref_parts                        (DLIList<RefPart*> &ref_parts);
      82                 :            :   virtual void ref_assemblies           (DLIList<RefAssembly*> &ref_assemblies);
      83                 :            : #endif
      84                 :            : 
      85                 :            :   virtual int num_bodies() const;
      86                 :            :   virtual int num_ref_volumes() const;
      87                 :            :   virtual int num_ref_groups() const;
      88                 :            :   virtual int num_ref_faces() const;
      89                 :            :   virtual int num_ref_edges() const;
      90                 :            :   virtual int num_ref_vertices() const;
      91                 :            : 
      92                 :            :   virtual RefEntity          *get_ref_entity          (const char *type, int id);
      93                 :            :   virtual RefEntity          *get_ref_entity          (const std::type_info& type, int id);
      94                 :            :   virtual Body               *get_body                ( int id );
      95                 :            :   virtual RefVolume          *get_ref_volume          ( int id );
      96                 :            :   virtual RefGroup           *get_ref_group           ( int id );
      97                 :            :   virtual RefFace            *get_ref_face            ( int id );
      98                 :            :   virtual RefEdge            *get_ref_edge            ( int id );
      99                 :            :   virtual RefVertex          *get_ref_vertex          ( int id );
     100                 :            : 
     101                 :            :   virtual Body *get_first_body                ();
     102                 :            :   virtual RefVolume *get_first_ref_volume          ();
     103                 :            :   virtual RefGroup *get_first_ref_group           ();
     104                 :            :   virtual RefFace *get_first_ref_face            ();
     105                 :            :   virtual RefEdge *get_first_ref_edge            ();
     106                 :            :   virtual RefVertex *get_first_ref_vertex          ();
     107                 :            : 
     108                 :            :   virtual Body *get_next_body                ();
     109                 :            :   virtual RefVolume *get_next_ref_volume          ();
     110                 :            :   virtual RefGroup *get_next_ref_group           ();
     111                 :            :   virtual RefFace *get_next_ref_face            ();
     112                 :            :   virtual RefEdge *get_next_ref_edge            ();
     113                 :            :   virtual RefVertex *get_next_ref_vertex          ();
     114                 :            : 
     115                 :            :   virtual Body *get_last_body                ();
     116                 :            :   virtual RefVolume *get_last_ref_volume          ();
     117                 :            :   virtual RefGroup *get_last_ref_group           ();
     118                 :            :   virtual RefFace *get_last_ref_face            ();
     119                 :            :   virtual RefEdge *get_last_ref_edge            ();
     120                 :            :   virtual RefVertex *get_last_ref_vertex          ();
     121                 :            : 
     122                 :            :   virtual void add ( RefEntity    *ref_entity );
     123                 :            :   virtual void add ( Body         *bodyPtr  );
     124                 :            :   virtual void add ( RefVolume    *refVolumePtr  );
     125                 :            :   virtual void add ( RefGroup     *refGroupPtr  );
     126                 :            :   virtual void add ( RefFace      *refFacePtr  );
     127                 :            :   virtual void add ( RefEdge      *refEdgePtr  );
     128                 :            :   virtual void add ( RefVertex    *refVertexPtr  );
     129                 :            : 
     130                 :            :   virtual void remove (RefEntity    *ref_entity );
     131                 :            :   virtual void remove (RefVertex* refVertexPtr);
     132                 :            :   virtual void remove (RefEdge*   refEdgePtr);
     133                 :            :   virtual void remove (RefFace*   refFacePtr);
     134                 :            :   virtual void remove (RefGroup*  refGroupPtr);
     135                 :            :   virtual void remove (RefVolume* refVolumePtr);
     136                 :            :   virtual void remove (Body*      bodyPtr);
     137                 :            : 
     138                 :            :   int next_body_id   ();
     139                 :            :   int next_ref_volume_id ();
     140                 :            :   int next_ref_group_id  ();
     141                 :            :   int next_ref_face_id   ();
     142                 :            :   int next_ref_edge_id   ();
     143                 :            :   int next_ref_vertex_id ();
     144                 :            :   int next_surf_sub_domain_id ();
     145                 :            :   int next_curve_sub_domain_id();
     146                 :            : #ifdef PROE
     147                 :            :   int next_ref_assembly_id();
     148                 :            :   int next_ref_part_id();
     149                 :            : #endif
     150                 :            : 
     151                 :          0 :   int current_body_id() {return maxBodyId;};
     152                 :          0 :   int current_volume_id() {return maxRefVolumeId;};
     153                 :            :   int current_group_id() {return maxRefGroupId;};
     154                 :          0 :   int current_face_id() {return maxRefFaceId;};
     155                 :          0 :   int current_edge_id() {return maxRefEdgeId;};
     156                 :          0 :   int current_vertex_id() {return maxRefVertexId;};
     157                 :            : 
     158                 :            :   void incorporate_id (RefEntity *ref_ent);
     159                 :            :   
     160                 :            :   int maximum_id(const char *entity_type);
     161                 :            :   int maximum_id (RefEntity *ref_ent);
     162                 :            :     //- get max id of specified type
     163                 :            :   
     164                 :            :   void maximum_id (const std::type_info& type, int max_id);
     165                 :            :     //- set max id of specified type
     166                 :            :   
     167                 :            :   void compress_ref_ids(const char *entity_type, int retain_max_id);
     168                 :            :     //- take out holes in the id space; make virtual so that factory can work
     169                 :            :     //- off of native lists
     170                 :            : 
     171                 :            :   static void compress_ids(DLIList<CubitEntity*> &list);
     172                 :            :     //- compress ids of the entities in this list; this function should really be
     173                 :            :     //- in CubitEntity, but it references label drawing functions, which aren't
     174                 :            :     //- accessable from CubitEntity
     175                 :            : 
     176                 :            :   void reset_ids();
     177                 :            :     //- resets all the id counters to 0
     178                 :            :   
     179                 :            :   virtual void renumber_geometry_by_properties(CubitBoolean retain_max_ids);
     180                 :            :     //- Renumbers all geometry based on geometric properties such as volume,
     181                 :            :     //- bounding box, etc.  Used to get consistent numbering, no matter
     182                 :            :     //- what order the entities appear in the input file.
     183                 :            :   
     184                 :            :   void notify_observer(const CubitEvent *observer_event);
     185                 :            :     //- handle MODEL_ENTITY_DESTRUCTED/MODEL_ENTITY_CONSTRUCTED events
     186                 :            : 
     187                 :            : protected: 
     188                 :            : 
     189                 :            :   RefEntityFactory(bool make_lists = true) ;
     190                 :            :     //- This is a singleton class, but derived classes need to be able
     191                 :            :     //- to instantiate it
     192                 :            :   virtual ~RefEntityFactory ();
     193                 :            : 
     194                 :            :   static RefEntityFactory *instance_;
     195                 :            :     //- the singleton instance
     196                 :            :   
     197                 :            :   bool ManageListSorting;
     198                 :            :   int maxBodyId;
     199                 :            :   int maxRefVolumeId;
     200                 :            :   int maxRefGroupId;
     201                 :            :   int maxRefFaceId;
     202                 :            :   int maxRefEdgeId;
     203                 :            :   int maxRefVertexId;
     204                 :            :   int maxRefCoordSysId;
     205                 :            :   int maxSurfSubDomainId;
     206                 :            :   int maxCurveSubDomainId;
     207                 :            : #ifdef PROE
     208                 :            :   int maxRefAssemblyId;
     209                 :            :   int maxRefPartId;
     210                 :            : #endif
     211                 :            : 
     212                 :            : private:
     213                 :            : 
     214                 :            :   bool refVertexListIsSorted;
     215                 :            :   bool refEdgeListIsSorted;
     216                 :            :   bool refFaceListIsSorted;
     217                 :            :   bool refVolumeListIsSorted;
     218                 :            :   bool bodyListIsSorted;
     219                 :            :   bool refGroupListIsSorted;
     220                 :            : 
     221                 :            :   DLIList<RefVertex*> *refVertexList;
     222                 :            :   DLIList<RefEdge*> *refEdgeList;
     223                 :            :   DLIList<RefFace*> *refFaceList;
     224                 :            :   DLIList<RefGroup*> *refGroupList;
     225                 :            :   DLIList<RefVolume*> *refVolumeList;
     226                 :            :   DLIList<Body*> *bodyList;
     227                 :            : #ifdef PROE
     228                 :            :   DLIList<RefAssembly*> *refAssemblyList;
     229                 :            :   DLIList<RefPart*> *refPartList;
     230                 :            : #endif
     231                 :            : 
     232                 :            : };
     233                 :            : 
     234                 :            : #endif
     235                 :            : 

Generated by: LCOV version 1.11