亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? datamap.h

?? this keik game source
?? H
字號:
//-----------------------------------------------------------------------------
//
//  $Logfile:: /Quake 2 Engine/Sin/code/game/datamap.h                        $
// $Revision:: 2                                                              $
//   $Author:: Jimdose                                                        $
//     $Date:: 8/31/98 5:40p                                                  $
//
// Copyright (C) 1998 by Ritual Entertainment, Inc.
// All rights reserved.
//
// This source is may not be distributed and/or modified without
// expressly written permission by Ritual Entertainment, Inc.
//
// $Log:: /Quake 2 Engine/Sin/code/game/datamap.h                             $
// 
// 2     8/31/98 5:40p Jimdose
// Created file.  Still need to test it.
// 
// 1     8/31/98 5:40p Jimdose
//
// DESCRIPTION:
// Template class for mapping values of one data type to another.
// 

#ifndef __DATAMAP_H__
#define __DATAMAP_H__

#include "g_local.h"
#include <stdlib.h>

template< class Key, class Value >
class EXPORT_FROM_DLL DataMap
	{
	private:
		Key		**keyarray;
		Value		**valuearray;
		int		numobjects;
		int		maxobjects;

	public:
					DataMap();
					DataMap( DataMap<Key,Value> &map );
					~DataMap<Key,Value>();
		void		FreeObjectList( void );
		void		ClearObjectList( void );
		int		NumObjects( void );
		void		Resize( int maxelements );
		Value&	operator[]( Key key );
		int		SetValue( Key key, Value obj );
		void		SetValueAt( int index, Value& obj );
		int		AddKey( Key& key );
		int		AddKeyPair( Key& key, Value& value );
		int		FindKey( Key& key );
		void		KeyInList( Key& key );
		Value&	ValueAt( int index );
		Key&		KeyAt( int index );
		void		RemoveKeyAt( int index );
		void		RemoveKey( Key& key );
	};

template< class Key, class Value>
DataMap<Key,Value>::DataMap()
	{
	keyarray = NULL;
	valuearray = NULL;
	numobjects = 0;
	maxobjects = 0;
	}

template< class Key, class Value>
DataMap<Key,Value>::DataMap( DataMap<Key,Value> &map )
	{
	numobjects = 0;
	maxobjects = 0;
	keyarray = NULL;
	valuearray = NULL;

	Resize( map.maxobjects );
	for( i = 0; i < map.numobjects; i++ )
		{
		AddKeyPair( map.KeyAt( i ), map.ValueAt( i ) );
		}
	}

template< class Key, class Value>
DataMap<Key,Value>::~DataMap<Key,Value>()
	{
	FreeObjectList();
	}

template< class Key, class Value>
EXPORT_FROM_DLL void DataMap<Key,Value>::FreeObjectList
	(
	void
	)

	{
	if ( keyarray )
		{
		ClearObjectList();

		delete[] keyarray;
		delete[] valuearray;
		}

	keyarray = NULL;
	valuearray = NULL;
	numobjects = 0;
	maxobjects = 0;
	}

template< class Key, class Value>
EXPORT_FROM_DLL void DataMap<Key,Value>::ClearObjectList
	(
	void
	)

	{
	// only delete the list if we have objects in it 
	if ( keyarray && numobjects )
		{
		for( i = 0; i < numobjects; i++ )
			{
			delete keyarray[ i ];
			delete valuearray[ i ];
			}

		memset( keyarray, 0, maxobjects * sizeof( Key * ) );
		memset( valuearray, 0, maxobjects * sizeof( Value * ) );

		numobjects = 0;
		}
	}

template< class Key, class Value>
EXPORT_FROM_DLL int DataMap<Key,Value>::NumObjects
	(
	void
	)

	{
	return numobjects;
	}

template< class Key, class Value>
EXPORT_FROM_DLL void DataMap<Key,Value>::Resize
	(
	int maxelements
	)

	{
	Key	*keytemp;
	Value	*valuetemp;

   assert( maxelements > 0 );
   
   if ( maxelements <= 0 )
      {
      FreeObjectList();
      return;
      }

	if ( !keyarray )
		{
		maxobjects = maxelements;

		keyarray = new Key[ maxobjects ];
		memset( keyarray, 0, maxobjects * sizeof( Key * ) );

		valuearray = new Value[ maxobjects ];
		memset( valuearray, 0, maxobjects * sizeof( Value * ) );
		}
	else
		{
		keytemp		= keyarray;
		valuetemp	= valuearray;
		
		maxobjects	= maxelements;
		if ( maxobjects < numobjects )
			{
			maxobjects = numobjects;
			}

		keyarray		= new Key[ maxobjects ];
		valuearray	= new Value[ maxobjects ];
		
		memcpy( keyarray, keytemp, sizeof( Key * ) * maxobjects );
		memcpy( valuearray, valuetemp, sizeof( Value * ) * maxobjects );

		delete[] keytemp;
		delete[] valuetemp;
		}
	}

template< class Key, class Value>
EXPORT_FROM_DLL inline Value& DataMap<Key,Value>::operator[]
	(
	Key key
	)

	{
	int index;

	index = FindKey( key );
	if ( index == -1 )
		{
		index = AddKey( key );
		}

	assert( ( index >= 0 ) && ( index < numobjects ) );
	assert( valuearray );

	return *valuearray[ index ];
	}

template< class Key, class Value>
EXPORT_FROM_DLL inline int DataMap<Key,Value>::SetValue
	(
	Key key,
	Value value
	)

	{
	int index;

	index = FindKey( key );
	if ( index == -1 )
		{
		index = AddKey( key );
		}

	assert( ( index >= 0 ) && ( index < numobjects ) );
	assert( valuearray );

	*valuearray[ index ] = value;
	
	return index;
	}

template< class Key, class Value>
EXPORT_FROM_DLL void DataMap<Key,Value>::SetValueAt
	(
	int index,
	Value& obj
	)

	{
	if ( ( index < 0 ) || ( index >= numobjects ) )
		{
		gi.error( "DataMap::SetValueAt : index out of range" );
		}

	assert( valuearray );

	*valuearray[ index ] = obj;
	}

template< class Key, class Value>
EXPORT_FROM_DLL int DataMap<Key,Value>::AddKey
	(
	Key& key
	)

	{
	int index;

	if ( !keyarray )
		{
		Resize( 10 );
		}

	if ( numobjects == maxobjects )
		{
		Resize( maxobjects * 2 );
		}

	index = numobjects;
	numobjects++;

	keyarray[ index ]		= new Key;
	valuearray[ index ]	= new Value;
	*keyarray[ index ]	= key;

	return index;
	}

template< class Key, class Value>
EXPORT_FROM_DLL int DataMap<Key,Value>::AddKeyPair
	(
	Key& key,
	Value& value
	)

	{
	int index;

	if ( !keyarray )
		{
		Resize( 10 );
		}

	if ( numobjects == maxobjects )
		{
		Resize( maxobjects * 2 );
		}

	index = numobjects;
	numobjects++;

	keyarray[ index ]		= new Key;
	valuearray[ index ]	= new Value;
	*keyarray[ index ]	= key;
	*valuearray[ index ]	= value;

	return index;
	}

template< class Key, class Value>
EXPORT_FROM_DLL int DataMap<Key,Value>::FindKey
	(
	Key& key
	)

	{
	int i;

	for( i = 0; i < numobjects; i++ )
		{
		if ( *keyarray[ i ] == key )
			{
			return i;
			}
		}

	return -1;
	}

template< class Key, class Value>
EXPORT_FROM_DLL void DataMap<Key,Value>::KeyInList
	(
	Key& key
	)

	{
	if ( FindKey( key ) == -1 )
		{
		return false;
		}

	return true;
	}

template< class Key, class Value>
EXPORT_FROM_DLL Value &DataMap<Key,Value>::ValueAt
	(
	int index
	)

	{
	if ( ( index < 0 ) || ( index >= numobjects ) )
		{
		gi.error( "DataMap::ValueAt : index out of range" );
		}

	return *valuearray[ index ];
	}

template< class Key, class Value>
EXPORT_FROM_DLL Key &DataMap<Key,Value>::KeyAt
	(
	int index
	)

	{
	if ( ( index < 0 ) || ( index >= numobjects ) )
		{
		gi.error( "DataMap::KeyAt : index out of range" );
		}

	return *keyarray[ index ];
	}

template< class Key, class Value>
EXPORT_FROM_DLL void DataMap<Key,Value>::RemoveKeyAt
	(
	int index
	)

	{
	int i;

	if ( !keyarray )
		{
		gi.dprintf( "DataMap::RemoveKeyAt : Empty list" );
		return;
		}

	if ( ( index < 0 ) || ( index >= numobjects ) )
		{
		gi.error( "DataMap::RemoveKeyAt : index out of range" );
		return;
		}

	delete keyarray[ index ];
	delete valuearray[ index ];

	for( i = index; i < numobjects; i++ )
		{
		keyarray[ i ]   = keyarray[ i + 1 ];
		valuearray[ i ] = valuearray[ i + 1 ];
		}

	numobjects--;
	keyarray[ numobjects ] = NULL;
	valuearray[ numobjects ] = NULL;
	}

template< class Key, class Value>
EXPORT_FROM_DLL void DataMap<Key,Value>::RemoveKey
	(
	Key& key
	)

	{
	int index;

	index = FindKey( key );
	if ( index == -1 )
		{
		gi.dprintf( "DataMap::RemoveKey : Object not in list" );
		return;
		}

	RemoveKeyAt( index );
	}

#endif /* datamap.h */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品老司机| 精品国产乱码久久久久久图片| 国产又粗又猛又爽又黄91精品| 日韩av中文字幕一区二区三区| 亚洲一区二区综合| 亚洲一区二区三区激情| 亚洲国产综合人成综合网站| 一区二区三区毛片| 天天色综合成人网| 麻豆精品视频在线观看免费 | 色欧美日韩亚洲| 色婷婷av一区| 欧美一区二区三区系列电影| 精品国产人成亚洲区| 国产亚洲精品免费| 中文字幕一区二区在线观看| 亚洲人成精品久久久久| 午夜激情久久久| 国产美女av一区二区三区| www.亚洲精品| 欧美日韩不卡一区二区| 精品美女被调教视频大全网站| 久久美女艺术照精彩视频福利播放| 国产欧美一区在线| 亚洲成人资源在线| 国产剧情一区在线| 在线欧美小视频| 欧美α欧美αv大片| 国产精品成人免费在线| 日韩不卡一区二区| 狠狠色2019综合网| 免费欧美在线视频| 成人av午夜影院| 欧美日韩一级二级| 久久久亚洲精品一区二区三区| 成人免费一区二区三区视频 | 视频精品一区二区| 国产成人av福利| 欧美色老头old∨ideo| 久久综合九色综合欧美98 | 国产美女精品一区二区三区| av一区二区三区四区| 日韩精品一区二区在线| 亚洲欧美国产高清| 国产盗摄视频一区二区三区| 欧美色综合天天久久综合精品| 久久日韩粉嫩一区二区三区| 午夜亚洲国产au精品一区二区| 国产99久久久国产精品免费看 | 欧美成人免费网站| 一区二区三区四区在线播放| 国产剧情av麻豆香蕉精品| 欧美午夜影院一区| 亚洲欧美日韩电影| 国产精品一区三区| 欧美v国产在线一区二区三区| 亚洲精品福利视频网站| 成人免费视频网站在线观看| 日韩女同互慰一区二区| 天堂影院一区二区| 91久久人澡人人添人人爽欧美| 亚洲精品在线一区二区| 日韩国产高清在线| 欧美日韩成人激情| 亚洲图片欧美综合| 在线视频一区二区三区| 亚洲啪啪综合av一区二区三区| 国产成人鲁色资源国产91色综| 欧美一区二区三区精品| 午夜电影网一区| 欧美日韩一区二区三区视频| 亚洲精品免费播放| 91官网在线免费观看| 亚洲人成影院在线观看| 日本国产一区二区| 樱桃国产成人精品视频| 色婷婷久久久久swag精品| 成人欧美一区二区三区1314| 99久久精品免费看国产| 亚洲激情第一区| 欧美性感一类影片在线播放| 亚洲一二三区在线观看| 欧美日韩一区二区三区四区五区| 亚洲在线中文字幕| 欧美美女喷水视频| 亚洲伊人色欲综合网| 欧美肥胖老妇做爰| 韩国精品久久久| 国产清纯美女被跳蛋高潮一区二区久久w | 国产一二精品视频| 国产精品伦理一区二区| 色综合天天综合色综合av| 亚洲国产精品久久久久婷婷884| 欧美日韩欧美一区二区| 久久国产精品一区二区| 久久久久久久综合色一本| 成人激情黄色小说| 亚洲高清免费观看高清完整版在线观看 | 婷婷夜色潮精品综合在线| 欧美成va人片在线观看| 国产成人精品1024| 亚洲一区二区在线观看视频| 5858s免费视频成人| 久久99久久99精品免视看婷婷| 国产精品网站在线| 欧美日韩国产高清一区| 国产成人在线影院 | 欧美日韩一区成人| 国产欧美视频一区二区| 色婷婷久久久综合中文字幕| 日韩av在线播放中文字幕| 中文字幕精品一区二区三区精品| 在线观看视频91| 国产一区二区在线观看视频| 亚洲图片另类小说| 精品蜜桃在线看| 欧美性猛交一区二区三区精品| 国内国产精品久久| 亚洲国产欧美日韩另类综合| 国产亚洲精品aa午夜观看| 欧美日韩一级视频| av一本久道久久综合久久鬼色| 日韩电影在线免费看| 亚洲美女一区二区三区| 久久精品日产第一区二区三区高清版| 欧美伊人久久久久久久久影院 | 亚洲免费看黄网站| 精品欧美久久久| 欧美在线不卡一区| 国产盗摄女厕一区二区三区| 蜜臀av国产精品久久久久| 136国产福利精品导航| 精品99999| 日韩欧美国产麻豆| 欧美精品色一区二区三区| 91免费国产在线观看| 成人午夜激情在线| 国产一区二区三区精品欧美日韩一区二区三区 | 成人爱爱电影网址| 国产乱码精品一区二区三区av| 香蕉成人伊视频在线观看| **性色生活片久久毛片| 中文文精品字幕一区二区| 久久精品视频网| 久久久欧美精品sm网站| 精品1区2区在线观看| 精品少妇一区二区三区免费观看| 91精品国产综合久久精品性色| 欧美亚洲动漫另类| 欧美在线免费播放| 日本精品视频一区二区三区| 91麻豆国产精品久久| av在线播放成人| 色综合一个色综合| 91久久精品一区二区| 色av一区二区| 欧美日韩久久久久久| 欧美日韩精品一区二区天天拍小说| 在线免费精品视频| 欧美精品乱码久久久久久| 5858s免费视频成人| 日韩精品在线网站| 久久青草欧美一区二区三区| 欧美极品xxx| 有码一区二区三区| 奇米精品一区二区三区在线观看 | 国产精品久久影院| 综合久久综合久久| 亚洲综合一区二区| 免费高清不卡av| 国产激情一区二区三区四区| 国产精品一区二区在线看| 成人黄动漫网站免费app| 在线观看免费成人| 日韩一区二区三区视频| 精品少妇一区二区三区在线视频| 欧美激情在线一区二区三区| 亚洲日本护士毛茸茸| 婷婷激情综合网| 国产91精品久久久久久久网曝门 | 久久久久久99久久久精品网站| 日本一区二区成人在线| 亚洲制服欧美中文字幕中文字幕| 人禽交欧美网站| hitomi一区二区三区精品| 欧美日韩一区中文字幕| 久久精品欧美日韩| 亚洲成人av电影| 粉嫩蜜臀av国产精品网站| 欧美伊人精品成人久久综合97| 欧美成人aa大片| 亚洲国产日韩一级| 国产高清在线观看免费不卡| 欧美视频完全免费看| 亚洲国产精品v| 日韩电影在线观看一区| 99精品偷自拍| 久久久亚洲午夜电影| 天堂va蜜桃一区二区三区漫画版| 国产在线精品一区二区不卡了|