diff options
Diffstat (limited to 'src/KeyMap.cxx')
| -rw-r--r-- | src/KeyMap.cxx | 34 | 
1 files changed, 13 insertions, 21 deletions
| diff --git a/src/KeyMap.cxx b/src/KeyMap.cxx index 4d866d195..ab8be2f9e 100644 --- a/src/KeyMap.cxx +++ b/src/KeyMap.cxx @@ -5,6 +5,10 @@  // Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>  // The License.txt file describes the conditions under which this software may be distributed. +#include <stdlib.h> + +#include <vector> +  #include "Platform.h"  #include "Scintilla.h" @@ -15,7 +19,7 @@  using namespace Scintilla;  #endif -KeyMap::KeyMap() : kmap(0), len(0), alloc(0) { +KeyMap::KeyMap() {  	for (int i = 0; MapDefault[i].key; i++) {  		AssignCmdKey(MapDefault[i].key,  			MapDefault[i].modifiers, @@ -28,37 +32,25 @@ KeyMap::~KeyMap() {  }  void KeyMap::Clear() { -	delete []kmap; -	kmap = 0; -	len = 0; -	alloc = 0; +	kmap.clear();  }  void KeyMap::AssignCmdKey(int key, int modifiers, unsigned int msg) { -	if ((len+1) >= alloc) { -		KeyToCommand *ktcNew = new KeyToCommand[alloc + 5]; -		if (!ktcNew) -			return; -		for (int k = 0; k < len; k++) -			ktcNew[k] = kmap[k]; -		alloc += 5; -		delete []kmap; -		kmap = ktcNew; -	} -	for (int keyIndex = 0; keyIndex < len; keyIndex++) { +	for (size_t keyIndex = 0; keyIndex < kmap.size(); keyIndex++) {  		if ((key == kmap[keyIndex].key) && (modifiers == kmap[keyIndex].modifiers)) {  			kmap[keyIndex].msg = msg;  			return;  		}  	} -	kmap[len].key = key; -	kmap[len].modifiers = modifiers; -	kmap[len].msg = msg; -	len++; +	KeyToCommand ktc; +	ktc.key = key; +	ktc.modifiers = modifiers; +	ktc.msg = msg; +	kmap.push_back(ktc);  }  unsigned int KeyMap::Find(int key, int modifiers) { -	for (int i = 0; i < len; i++) { +	for (size_t i = 0; i < kmap.size(); i++) {  		if ((key == kmap[i].key) && (modifiers == kmap[i].modifiers)) {  			return kmap[i].msg;  		} | 
