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
00028
00029
00030 #ifndef _hyp_data_base_h_
00031 #define _hyp_data_base_h_
00032
00033
00034 #ifndef hypfem_INSIDE_INTERN
00035 #error Inclusion not allowed (include hyp.fem.intern.h instead)
00036 #endif
00037
00047 class CGeometricBase :
00048 #ifdef hypfem_IDENTIFY_CONSTRUCTION_ON
00049 protected CIDClass,
00050 #endif
00051 public IGeometricBase,
00052 public hyp_ker::CUnknown
00053 {
00054 public:
00056 CGeometricBase(hyp_ker::IUnknown*);
00057 virtual ~CGeometricBase();
00058 hyp_DECLARE_IUNKNOWN
00059 virtual hyp_ker::com_result NondelegatingQueryInterface(const hyp_ker::hypIID&,void**);
00060 static hyp_ker::com_result CreateInstance(hyp_ker::IUnknown* ,hyp_ker::CUnknown**);
00061 hyp_ker::com_result Init(void);
00062 void FinalRelease(void);
00064
00068 virtual t_size GetNumberOfVertices();
00069 virtual IGeometricVertex* GetVertex(const t_label& );
00070 virtual IGeometricVertex* GetVertex(const t_real& ,const t_real& ,const t_real& );
00071 virtual t_label GetLabel(IGeometricVertex*);
00072 virtual void AddVertex(IGeometricVertex*,const t_label& );
00073 virtual void DeleteVertex(const t_label& );
00074 virtual IContainerKey* GetContainerOfVertices();
00075 virtual void SetFilter(const hyp_ker::hypIID* );
00076 virtual void ClearFilter();
00078
00079 private:
00080 hyp_ker::IPtrUnknown m_spUnknownCont;
00081
00082
00083 bool IsCompatibleWithFilter(IGeometricVertex*) const;
00084 typedef std::vector<const hyp_ker::hypIID*> t_ContainerForIID;
00085 t_ContainerForIID m_Filter;
00086 };
00087
00088 #endif