mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
c98929fa7e
svn path=/trunk/; revision=2458
135 lines
4 KiB
C++
135 lines
4 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
//Telnet Win32 : an ANSI telnet client.
|
|
//Copyright (C) 1998-2000 Paul Brannan
|
|
//Copyright (C) 1998 I.Ioannou
|
|
//Copyright (C) 1997 Brad Johnson
|
|
//
|
|
//This program is free software; you can redistribute it and/or
|
|
//modify it under the terms of the GNU General Public License
|
|
//as published by the Free Software Foundation; either version 2
|
|
//of the License, or (at your option) any later version.
|
|
//
|
|
//This program is distributed in the hope that it will be useful,
|
|
//but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
//GNU General Public License for more details.
|
|
//
|
|
//You should have received a copy of the GNU General Public License
|
|
//along with this program; if not, write to the Free Software
|
|
//Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
//
|
|
//I.Ioannou
|
|
//roryt@hol.gr
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
/////////////////////////////////////////////////////////
|
|
// Class TkeyDef - Key Definitions //
|
|
// - kept in an array container //
|
|
// originally part of KeyTrans.cpp //
|
|
/////////////////////////////////////////////////////////
|
|
|
|
#include "tkeydef.h"
|
|
|
|
// This class did not properly release memory before, and a buffer overrun
|
|
// was apparent in operator=(char*). Fixed. (Paul Brannan Feb. 4, 1999)
|
|
|
|
TKeyDef::TKeyDef() {
|
|
uKeyDef.szKeyDef = 0;
|
|
vk_code = dwState = 0;
|
|
}
|
|
|
|
TKeyDef::TKeyDef(char *def, DWORD state, DWORD code) {
|
|
uKeyDef.szKeyDef = 0;
|
|
if (def != NULL && *def != 0) {
|
|
// szKeyDef = (char *) GlobalAlloc(GPTR, strlen(def) +1);
|
|
uKeyDef.szKeyDef = new char[strlen(def)+1];
|
|
strcpy(uKeyDef.szKeyDef, def);
|
|
}
|
|
dwState = state;
|
|
vk_code = code;
|
|
}
|
|
|
|
TKeyDef::TKeyDef(optype op, DWORD state, DWORD code) {
|
|
uKeyDef.op = new optype;
|
|
uKeyDef.op->sendstr = 0;
|
|
uKeyDef.op->the_op = op.the_op;
|
|
dwState = state;
|
|
vk_code = code;
|
|
}
|
|
|
|
TKeyDef::TKeyDef(const TKeyDef &t) {
|
|
if(t.uKeyDef.szKeyDef == NULL) {
|
|
uKeyDef.szKeyDef = (char *)NULL;
|
|
} else if(t.uKeyDef.op->sendstr == 0) {
|
|
uKeyDef.op = new optype;
|
|
uKeyDef.op->sendstr = 0;
|
|
uKeyDef.op->the_op = t.uKeyDef.op->the_op;
|
|
} else {
|
|
uKeyDef.szKeyDef = new char[strlen(t.uKeyDef.szKeyDef)+1];
|
|
strcpy(uKeyDef.szKeyDef, t.uKeyDef.szKeyDef);
|
|
}
|
|
dwState = t.dwState;
|
|
vk_code = t.vk_code;
|
|
}
|
|
|
|
TKeyDef::~TKeyDef() {
|
|
if(uKeyDef.szKeyDef) delete[] uKeyDef.szKeyDef;
|
|
}
|
|
|
|
char * TKeyDef::operator=(char *def) {
|
|
if(def != NULL && *def != 0) {
|
|
if(uKeyDef.szKeyDef) delete[] uKeyDef.szKeyDef;
|
|
uKeyDef.szKeyDef = new char[strlen(def)+1];
|
|
strcpy(uKeyDef.szKeyDef, def);
|
|
}
|
|
return uKeyDef.szKeyDef;
|
|
}
|
|
|
|
DWORD TKeyDef::operator=(DWORD code) {
|
|
return vk_code = code;
|
|
}
|
|
|
|
TKeyDef& TKeyDef::operator=(const TKeyDef &t) {
|
|
if(t.uKeyDef.szKeyDef) {
|
|
if(uKeyDef.szKeyDef) delete[] uKeyDef.szKeyDef;
|
|
if(t.uKeyDef.op->sendstr) {
|
|
uKeyDef.szKeyDef = new char[strlen(t.uKeyDef.szKeyDef)+1];
|
|
strcpy(uKeyDef.szKeyDef, t.uKeyDef.szKeyDef);
|
|
} else {
|
|
uKeyDef.op = new optype;
|
|
uKeyDef.op->sendstr = 0;
|
|
uKeyDef.op->the_op = t.uKeyDef.op->the_op;
|
|
}
|
|
} else {
|
|
uKeyDef.szKeyDef = (char *)NULL;
|
|
}
|
|
dwState = t.dwState;
|
|
vk_code = t.vk_code;
|
|
return *this;
|
|
}
|
|
|
|
const optype& TKeyDef::operator=(optype op) {
|
|
uKeyDef.op = new optype;
|
|
uKeyDef.op->sendstr = 0;
|
|
uKeyDef.op->the_op = op.the_op;
|
|
return *uKeyDef.op;
|
|
}
|
|
|
|
// STL requires that operators be friends rather than member functions
|
|
// (Paul Brannan 5/25/98)
|
|
#ifndef __BORLANDC__
|
|
bool operator==(const TKeyDef & t1, const TKeyDef & t2) {
|
|
return ((t1.vk_code == t2.vk_code) && (t1.dwState == t2.dwState));
|
|
}
|
|
// We need this function for compatibility with STL (Paul Brannan 5/25/98)
|
|
bool operator< (const TKeyDef& t1, const TKeyDef& t2) {
|
|
if (t1.vk_code == t2.vk_code) return t1.dwState < t2.dwState;
|
|
return t1.vk_code < t2.vk_code;
|
|
}
|
|
#else
|
|
int TKeyDef::operator==(TKeyDef & t) {
|
|
return ((vk_code == t.vk_code) && (dwState == t.dwState));
|
|
}
|
|
#endif
|
|
|