⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testmap2.cc

📁 这是一款很好用的工具包
💻 CC
字号:
//// Interactive testing for Map2 datastructure//// $Header: /home/srilm/devel/dstruct/src/RCS/testMap2.cc,v 1.3 2003/03/05 00:54:09 stolcke Exp $//#include <stdio.h>#include <string.h>#include <tcl.h>//#define USE_SARRAY_MAP2#include "Map2.cc"#define KEY1_T int#define KEY2_T const char *#define DATA_T char *#define MAP2_T Map2<KEY1_T,KEY2_T,DATA_T>#define ITER_T Map2Iter<KEY1_T,KEY2_T,DATA_T>#define ITER2_T Map2Iter2<KEY1_T,KEY2_T,DATA_T>#ifdef INSTANTIATE_TEMPLATESINSTANTIATE_MAP2(KEY1_T,KEY2_T,DATA_T);#endifstatic MAP2_T myMap2;int compKeys(KEY1_T key1, KEY1_T key2){	return key2 - key1;}KEY1_Tget_key1 (Tcl_Interp *interp, char **argv){	KEY1_T result = -999999;	if (argv[0] != NULL) {	       Tcl_GetInt(interp, argv[0], &result);	}	return result;}KEY2_Tget_key2 (Tcl_Interp *interp, char **argv){	if (argv[0] != NULL && argv[1] != NULL) {		return argv[1];	} else {		return "NOARG";	}}/*ARGSUSED*/intFind(ClientData cd, Tcl_Interp *interp, int argc, char **argv){   DATA_T *result;   if (argc < 2) {	Tcl_SetResult(interp, "2 args expected", TCL_STATIC);	return TCL_ERROR;   }   KEY1_T key1 = get_key1(interp, argv + 1);   KEY2_T key2 = get_key2(interp, argv + 1);   result = myMap2.find(key1, key2);   if (result) {       Tcl_SetResult(interp, *result, TCL_STATIC);    }   return TCL_OK;}/*ARGSUSED*/intInsert(ClientData cd, Tcl_Interp *interp, int argc, char **argv){   DATA_T *result;   if (argc < 3) {	Tcl_SetResult(interp, "3 args expected", TCL_STATIC);	return TCL_ERROR;   }   char *value = strdup(argv[1]);   KEY1_T key1 = get_key1(interp, argv + 2);   KEY2_T key2 = get_key2(interp, argv + 2);   result = myMap2.insert(key1, key2);   if (result) {       Tcl_SetResult(interp, *result, TCL_DYNAMIC);       *result = value;   }   myMap2.dump();   return TCL_OK;}/*ARGSUSED*/intDelete(ClientData cd, Tcl_Interp *interp, int argc, char **argv){   DATA_T *result;   if (argc < 2) {	Tcl_SetResult(interp, "2 args expected", TCL_STATIC);	return TCL_ERROR;   }   KEY1_T key1 = get_key1(interp, argv + 1);   KEY2_T key2 = get_key2(interp, argv + 1);   result = myMap2.remove(key1, key2);   if (result) {       Tcl_SetResult(interp, *result, TCL_DYNAMIC);   }   return TCL_OK;}/*ARGSUSED*/intDeleteRow(ClientData cd, Tcl_Interp *interp, int argc, char **argv){   Boolean result;   if (argc < 1) {	Tcl_SetResult(interp, "1 arg expected", TCL_STATIC);	return TCL_ERROR;   }   KEY1_T key1 = get_key1(interp, argv + 1);   result = myMap2.remove(key1);   if (result) {       Tcl_SetResult(interp, "FOUND", TCL_STATIC);   }   return TCL_OK;}/*ARGSUSED*/intList(ClientData cd, Tcl_Interp *interp, int argc, char **argv){   MAP2_T *result;   KEY1_T key1;   ITER_T myIter(myMap2, compKeys);   while (myIter.next(key1)) {	ITER2_T myIter2(myMap2, key1);	KEY2_T key2;	DATA_T *data;	while (data = myIter2.next(key2)) {	    cout << "key = " << key1 << "," << key2 		    << ", value = " << *data << endl;	}   }   MemStats stats;   myMap2.memStats(stats);   stats.print();   return TCL_OK;}/*ARGSUSED*/intQuit(ClientData cd, Tcl_Interp *interp, int argc, char **argv){   exit(0);   return TCL_OK;}extern "C" intTcl_AppInit(Tcl_Interp *interp){   Tcl_CreateCommand(interp, "find", (Tcl_CmdProc *)Find, 0, NULL);   Tcl_CreateCommand(interp, "insert", (Tcl_CmdProc *)Insert, 0, NULL);   Tcl_CreateCommand(interp, "delete", (Tcl_CmdProc *)Delete, 0, NULL);   Tcl_CreateCommand(interp, "delrow", (Tcl_CmdProc *)DeleteRow, 0, NULL);   Tcl_CreateCommand(interp, "list", (Tcl_CmdProc *)List, 0, NULL);   Tcl_CreateCommand(interp, "quit", (Tcl_CmdProc *)Quit, 0, NULL);   return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -