// * this is for making emacs happy: -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
#include "internal.h"
#include "cursslk.h"
#include "cursesapp.h"
-#include <string.h>
-MODULE_ID("$Id: cursslk.cc,v 1.11 2003/10/25 15:04:46 tom Exp $")
+MODULE_ID("$Id: cursslk.cc,v 1.16 2012/02/23 10:41:56 tom Exp $")
-void Soft_Label_Key_Set::Soft_Label_Key::operator=(char *text) {
+Soft_Label_Key_Set::Soft_Label_Key&
+ Soft_Label_Key_Set::Soft_Label_Key::operator=(char *text)
+{
delete[] label;
- label = new char[1 + ::strlen(text)];
- (::strcpy)(label,text);
+ size_t need = 1 + ::strlen(text);
+ label = new char[need];
+ ::_nc_STRCPY(label,text,need);
+ return *this;
}
long Soft_Label_Key_Set::count = 0L;
int Soft_Label_Key_Set::num_labels = 0;
-Soft_Label_Key_Set::Label_Layout
+Soft_Label_Key_Set::Label_Layout
Soft_Label_Key_Set::format = None;
-void Soft_Label_Key_Set::init() {
+void Soft_Label_Key_Set::init()
+{
slk_array = new Soft_Label_Key[num_labels];
for(int i=0; i < num_labels; i++) {
slk_array[i].num = i+1;
b_attrInit = FALSE;
}
-Soft_Label_Key_Set::Soft_Label_Key_Set() {
+Soft_Label_Key_Set::Soft_Label_Key_Set()
+ : b_attrInit(FALSE),
+ slk_array(NULL)
+{
if (format==None)
Error("No default SLK layout");
init();
}
-Soft_Label_Key_Set::Soft_Label_Key_Set(Soft_Label_Key_Set::Label_Layout fmt) {
+Soft_Label_Key_Set::Soft_Label_Key_Set(Soft_Label_Key_Set::Label_Layout fmt)
+ : b_attrInit(FALSE),
+ slk_array(NULL)
+{
if (fmt==None)
Error("Invalid SLK Layout");
if (count++==0) {
format = fmt;
- if (ERR == ::slk_init((int)fmt))
+ if (ERR == ::slk_init(static_cast<int>(fmt)))
Error("slk_init");
num_labels = (fmt>=PC_Style?12:8);
}
noutrefresh();
}
-void Soft_Label_Key_Set::activate_labels(bool bf) {
+void Soft_Label_Key_Set::activate_labels(bool bf)
+{
if (!b_attrInit) {
NCursesApplication* A = NCursesApplication::getApplication();
if (A) attrset(A->labels());