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
00031 #ifndef OPENMESH_ARRAY_ITEMS_HH
00032 #define OPENMESH_ARRAY_ITEMS_HH
00033
00034
00035
00036
00037
00038 #include <OpenMesh/Core/System/config.hh>
00039 #include <OpenMesh/Core/Utils/GenProg.hh>
00040 #include <OpenMesh/Core/Mesh/Kernels/Common/Handles.hh>
00041
00042
00043
00044
00045 namespace OpenMesh {
00046
00047
00048
00049
00050
00052 struct ArrayItems
00053 {
00054
00055
00056
00058 class Vertex
00059 {
00060 template <class AttribKernel, class Items> friend class ArrayKernelT;
00061 HalfedgeHandle halfedge_handle_;
00062 };
00063
00064
00065
00066
00067 #ifndef DOXY_IGNORE_THIS
00068 class Halfedge_without_prev
00069 {
00070 template <class AttribKernel, class Items> friend class ArrayKernelT;
00071 FaceHandle face_handle_;
00072 VertexHandle vertex_handle_;
00073 HalfedgeHandle next_halfedge_handle_;
00074 };
00075 #endif
00076
00077
00078 #ifndef DOXY_IGNORE_THIS
00079 class Halfedge_with_prev : public Halfedge_without_prev
00080 {
00081 template <class AttribKernel, class Items> friend class ArrayKernelT;
00082 HalfedgeHandle prev_halfedge_handle_;
00083 };
00084 #endif
00085
00086
00087
00088
00089 #ifndef DOXY_IGNORE_THIS
00090 template <class _Halfedge>
00091 class Edge
00092 {
00093 template <class AttribKernel, class Items> friend class ArrayKernelT;
00094 _Halfedge halfedges_[2];
00095 };
00096 #endif
00097
00098
00099
00100
00101
00102 #ifndef DOXY_IGNORE_THIS
00103 template <bool _is_triangle>
00104 class Face
00105 {
00106 template <class AttribKernel, class Items> friend class ArrayKernelT;
00107 HalfedgeHandle halfedge_handle_;
00108
00109 public:
00110 typedef GenProg::Bool2Type<_is_triangle> IsTriangle;
00111 static bool is_triangle() { return _is_triangle; }
00112 };
00113 };
00114 #endif
00115
00116
00117 }
00118
00119 #endif // OPENMESH_ITEMS_HH defined
00120