00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _hyp_data_object_h_
00028 #define _hyp_data_object_h_
00029
00030 #ifndef hypfem_INSIDE_INTERN
00031 #error Inclusion not allowed (include hyp.fem.intern.h instead)
00032 #endif
00033
00046 class CGeometricObject :
00047 #ifdef hypfem_IDENTIFY_CONSTRUCTION_ON
00048 protected CIDClass,
00049 #endif
00050 public IGeometricObject,
00051
00052
00053
00054
00055 public hyp_ker::CUnknown
00056
00057 {
00058 public:
00060 CGeometricObject(hyp_ker::IUnknown*,const hyp_ker::hypCLSID* );
00061 virtual ~CGeometricObject();
00062 hyp_DECLARE_IUNKNOWN
00063 virtual hyp_ker::com_result NondelegatingQueryInterface(const hyp_ker::hypIID&,void**);
00064 static hyp_ker::com_result CreateInstanceForGeometry(hyp_ker::IUnknown* ,hyp_ker::CUnknown** );
00065 static hyp_ker::com_result CreateInstanceForFiniteElement(hyp_ker::IUnknown* ,hyp_ker::CUnknown** );
00066 hyp_ker::com_result Init(void);
00067 void FinalRelease(void);
00069
00070
00074 virtual IGeometricSide* CreateSide(const t_label&,const t_label_enum&);
00075 virtual IGeometricSide* CreateSide(const t_label&);
00076 virtual IGeometricVertex* CreateVertex(const t_label&,const t_real&,const t_real&,const t_real&);
00077 virtual IGeometricVertex* CreateVertex(const t_label&);
00078 virtual void AddSide(IGeometricSide*,const t_label&);
00079 virtual void DeleteSide(const t_label&);
00080 virtual IContainerKey* GetContainerOfSides();
00081 virtual t_size GetNumberOfSides();
00082 virtual IGeometricSide* GetSide(const t_label&);
00084
00085
00086
00087
00088
00089
00090
00091 private:
00092 t_spContainerKey m_spSideContKey;
00093 hyp_ker::IPtrUnknown m_spUnknownVertices;
00094
00095
00096 const hyp_ker::hypCLSID* m_pCLSID_Vertex;
00097
00098 };
00099
00100
00101 #endif