source: GTP/trunk/App/Demos/Geom/Shark3D/src/drv_d3d9_vertdecl.h @ 2236

Revision 2236, 3.0 KB checked in by gumbau, 17 years ago (diff)
Line 
1///////////////////////////////////////////////////////////////////////////////
2//
3//      ##  ######
4//       ######  ###
5//  ## ###############        Shark 3D Engine (www.shark3d.com)
6//   ########## # # #
7//    ########                Copyright (c) 1996-2006 Spinor GmbH.
8//   ######### # # #          All rights reserved.
9//  ##   ##########
10//      ##
11//
12///////////////////////////////////////////////////////////////////////////////
13
14//@cpp
15#ifndef S3D_DRV_D3D9_VERTDECL_H
16#define S3D_DRV_D3D9_VERTDECL_H
17
18#include "drv_d3d9_types.h"
19
20///////////////////////////////////////////////////////////////////////////////
21
22//@
23struct s3d_CDrvD3d9VertElemObj
24        : public s3d_CUtilPtrBase
25{
26    s3d_CSysIntps m_VertElemCnt;
27    s3d_CUtilOwnArray<D3DVERTEXELEMENT9> m_VertElemArray;
28};
29
30//@
31typedef s3d_CUtilPtr<s3d_CDrvD3d9VertElemObj> s3d_CDrvD3d9VertElemObjPtr;
32
33///////////////////////////////////////////////////////////////////////////////
34
35//@
36struct s3d_CDrvD3d9VertElemObjRef
37{
38    s3d_CSysIntps m_VertElemCnt;
39    D3DVERTEXELEMENT9 *m_VertElemArray;
40};
41
42///////////////////////////////////////////////////////////////////////////////
43
44//@
45struct s3d_CDrvD3d9VertElemObjKey
46{
47    s3d_CDrvD3d9VertElemObjPtr m_VertElemObj;
48
49    int Compare(const s3d_CDrvD3d9VertElemObjKey &k) const;
50    bool operator==(const s3d_CDrvD3d9VertElemObjKey &k) const;
51    bool operator<(const s3d_CDrvD3d9VertElemObjKey &k) const;
52
53    static int Compare(
54            const s3d_CDrvD3d9VertElemObj *VertDeclObj,
55            const s3d_CDrvD3d9VertElemObjRef &Ref);
56};
57
58///////////////////////////////////////////////////////////////////////////////
59
60S3D_SYS_INLINE
61int s3d_CDrvD3d9VertElemObjKey::Compare(
62        const s3d_CDrvD3d9VertElemObjKey &k) const
63{
64    s3d_CDrvD3d9VertElemObjRef ElemObjRef;
65    ElemObjRef.m_VertElemCnt = k.m_VertElemObj->m_VertElemCnt;
66    ElemObjRef.m_VertElemArray = k.m_VertElemObj->m_VertElemArray;
67
68    return s3d_CDrvD3d9VertElemObjKey::Compare(m_VertElemObj, ElemObjRef);
69};
70
71S3D_SYS_INLINE
72bool s3d_CDrvD3d9VertElemObjKey::operator==(
73        const s3d_CDrvD3d9VertElemObjKey &k) const
74{
75    return Compare(k) == 0;
76};
77
78S3D_SYS_INLINE
79bool s3d_CDrvD3d9VertElemObjKey::operator<(
80        const s3d_CDrvD3d9VertElemObjKey &k) const
81{
82    return Compare(k) < 0;
83};
84
85///////////////////////////////////////////////////////////////////////////////
86
87S3D_SYS_INLINE
88bool operator==(
89        const s3d_CDrvD3d9VertElemObjKey &VertDeclObj,
90        const s3d_CDrvD3d9VertElemObjRef &Ref)
91{
92    return s3d_CDrvD3d9VertElemObjKey::Compare(
93            VertDeclObj.m_VertElemObj, Ref) == 0;
94}
95
96S3D_SYS_INLINE
97bool operator<(
98        const s3d_CDrvD3d9VertElemObjKey &VertDeclObj,
99        const s3d_CDrvD3d9VertElemObjRef &Ref)
100{
101    return s3d_CDrvD3d9VertElemObjKey::Compare(
102            VertDeclObj.m_VertElemObj, Ref) < 0;
103}
104
105///////////////////////////////////////////////////////////////////////////////
106
107#endif
Note: See TracBrowser for help on using the repository browser.