CGrowableArray解析 _ DXUT容器

CGrowableArray的声明                                       in  DXUTmisc.h

 1 //--------------------------------------------------------------------------------------
 2 // A growable array .
 3 //--------------------------------------------------------------------------------------
 4 template<typename TYPE> class CGrowableArray
 5 {
 6 public:
 7             CGrowableArray()
 8             {
 9                 m_pData = NULL; m_nSize = 0; m_nMaxSize = 0;
10             }
11             CGrowableArray( const CGrowableArray <TYPE>& a )
12             {
13                 for( int i = 0; i < a.m_nSize; i++ ) Add( a.m_pData[i] );
14             }
15             ~CGrowableArray()
16             {
17                 RemoveAll();
18             }
19
20     const TYPE& operator[]( int nIndex ) const
21     {
22         return GetAt( nIndex );
23     }
24     TYPE& operator[]( int nIndex )
25     {
26         return GetAt( nIndex );
27     }
28
29     CGrowableArray& operator=( const CGrowableArray <TYPE>& a )
30     {
31         if( this == &a ) return *this; RemoveAll(); for( int i = 0; i < a.m_nSize;
32                                                          i++ ) Add( a.m_pData[i] ); return *this;
33     }
34
35     HRESULT SetSize( int nNewMaxSize );
36     HRESULT Add( const TYPE& value );
37     HRESULT Insert( int nIndex, const TYPE& value );
38     HRESULT SetAt( int nIndex, const TYPE& value );
39     TYPE& GetAt( int nIndex ) const
40     {
41         assert( nIndex >= 0 && nIndex < m_nSize ); return m_pData[nIndex];
42     }
43     int     GetSize() const
44     {
45         return m_nSize;
46     }
47     TYPE* GetData()
48     {
49         return m_pData;
50     }
51     bool    Contains( const TYPE& value )
52     {
53         return ( -1 != IndexOf( value ) );
54     }
55
56     int     IndexOf( const TYPE& value )
57     {
58         return ( m_nSize > 0 ) ? IndexOf( value, 0, m_nSize ) : -1;
59     }
60     int     IndexOf( const TYPE& value, int iStart )
61     {
62         return IndexOf( value, iStart, m_nSize - iStart );
63     }
64     int     IndexOf( const TYPE& value, int nIndex, int nNumElements );
65
66     int     LastIndexOf( const TYPE& value )
67     {
68         return ( m_nSize > 0 ) ? LastIndexOf( value, m_nSize - 1, m_nSize ) : -1;
69     }
70     int     LastIndexOf( const TYPE& value, int nIndex )
71     {
72         return LastIndexOf( value, nIndex, nIndex + 1 );
73     }
74     int     LastIndexOf( const TYPE& value, int nIndex, int nNumElements );
75
76     HRESULT Remove( int nIndex );
77     void    RemoveAll()
78     {
79         SetSize( 0 );
80     }
81     void    Reset()
82     {
83         m_nSize = 0;
84     }
85
86 protected:
87     TYPE* m_pData;      // the actual array of data
88     int m_nSize;        // # of elements (upperBound - 1)
89     int m_nMaxSize;     // max allocated
90
91     HRESULT SetSizeInternal( int nNewMaxSize );  // This version doesn‘t call ctor or dtor.
92 };

时间: 2024-10-06 01:19:06

CGrowableArray解析 _ DXUT容器的相关文章

Asp.Net Identity学习笔记+MVC5默认项目解析_授权&Claim

Identity学习笔记 Asp.Net Identity学习笔记+MVC5默认项目解析_基础用法 Asp.Net Identity学习笔记+MVC5默认项目解析_授权&Claim Identity学习笔记授权以角色授权IdentityRoleRoleManager基于声明的(Claims)IPrincipalIIdentityCalimsIdentityClaim用户登入用户授权其他细节Claim Type命名空间 授权 最常用的授权就是给Controller或Action打上[Authori

Asp.Net Identity学习笔记+MVC5默认项目解析_第三方登入&授权总结

Identity学习笔记 Asp.Net Identity学习笔记+MVC5默认项目解析_基础用法 Asp.Net Identity学习笔记+MVC5默认项目解析_授权&Claim Asp.Net Identity学习笔记+MVC5默认项目解析_第三方登入&授权总结 Identity学习笔记第三方登入配置登入案例登入技术总结本地,已登入本地,未登入第三方登入 第三方登入 本文介绍Identity的第三方登入技术.到目前为止只介绍了CookieAuthentication这种授权方式,即浏览

Linux内核编程:Linux2.6内核源码解析_进程遍历 &nbsp; &nbsp; &nbsp; &nbsp;

/*     *File    : test.c   *Author  : DavidLin        *Date    : 2014-12-07pm        *Email   : [email protected] or [email protected]        *world   : the city of SZ, in China        *Ver     : 000.000.001        *history :     editor      time    

IOS数据解析_使用GDataXML解析,多层结构,相同目录的方法

项目例子(包含GDataXML框架) http://download.csdn.net/detail/u013686641/7672689 /*说明 将GDataXML引入你的项目 加入libxml2框架 导入#import "GDataXMLNode.h" 在TARGETS 接下来再进入Build Settings,在搜索框中搜索header search paths,添加/usr/include/libxml2 然后搜索Other linker flags,同样的方式添加-lxml

dubbo源码分析7——dubbo的配置解析_与spring的整合

dubbo的配置其实就是建立在spring的命名空间的配置机制之上的.在dubbo的jar包的META-INF目录下会有spring.handlers这个文件,用来配置spring的命名空间和解析类的对应关系.打开spring.handlers文件,可知dubbo的命名空间配置的处理类为com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler,代码: public void init() { registerBeanDefiniti

摘:Windows系统内存计数器理解解析_备忘录_51Testing软件测试网...

[原创]Windows系统内存计数器理解解析 2008-05-13 11:42:23 / 个人分类:性能测试 说明:本文的计数器以Windows2003为准. 序言;F9n)\%V1a6Z C)?ZV0内存的使用情况是系统性能中重要的因素之一,频繁的页交换及内存泄露都会影响到系统的性能.本文主要是描述内存的一些概念.计数器含义,以及可能存在的性能瓶颈.4Cd%l3r(T&z y051Testing软件测试网xi[8VP?r?Q?a一些概念f2c(qDw-y&{l01Vu7t|%D} r5e

spring源码解析之IOC容器(二)------加载和注册

上一篇跟踪了IOC容器对配置文件的定位,现在我们继续跟踪代码,看看IOC容器是怎么加载和注册配置文件中的信息的.开始之前,首先我们先来了解一下IOC容器所使用的数据结构-------BeanDefinition,它是一个上层接口,有很多实现类,分别对应不同的数据载体.我们平时开发的时候,也会定义很多pojo类,来作为获取数据的载体.最常见的就是,从数据库中获取数据之后,使用一个定义的pojo来装载,然后我们就可以在程序中使用这个pojo类来编写各种业务逻辑.同样,IOC容器首先会读取配置的XML

spring源码解析之IOC容器(三)——依赖注入

上一篇主要是跟踪了IOC容器对bean标签进行解析之后存入Map中的过程,这些bean只是以BeanDefinition为载体单纯的存储起来了,并没有转换成一个个的对象,今天继续进行跟踪,看一看IOC容器是怎样实例化对象的. 我们都使用过以下代码: 1 FileSystemXmlApplicationContext context=new FileSystemXmlApplicationContext("bean.xml"); 2 User user=context.getBean(&

Spring5源码解析1-从启动容器开始

从启动容器开始 最简单的启动spring的代码如下: @Configuration @ComponentScan public class AppConfig { } public class Main { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); con