]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - c++/cursesp.h
ncurses 5.4
[ncurses.git] / c++ / cursesp.h
index f347875f2c79a708d0a01200a4b2fd96ee636e1f..33eae9b24c301e197beb37425f6c9c13b909c498 100644 (file)
@@ -1,8 +1,40 @@
 // * This makes emacs happy -*-Mode: C++;-*-
-#ifndef _CURSESP_H
-#define _CURSESP_H
-
-// $Id: cursesp.h,v 1.10 1998/02/17 09:01:28 juergen Exp $
+/****************************************************************************
+ * Copyright (c) 1998-2002,2003 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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, sublicense, and/or sell       *
+ * copies of the Software, and to permit persons to whom the Software is    *
+ * furnished to do so, subject to the following conditions:                 *
+ *                                                                          *
+ * The above copyright notice and this permission notice shall be included  *
+ * in all copies or substantial portions of the Software.                   *
+ *                                                                          *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+ *                                                                          *
+ * Except as contained in this notice, the name(s) of the above copyright   *
+ * holders shall not be used in advertising or otherwise to promote the     *
+ * sale, use or other dealings in this Software without prior written       *
+ * authorization.                                                           *
+ ****************************************************************************/
+
+/****************************************************************************
+ *   Author: Juergen Pfeifer, 1997                                          *
+ ****************************************************************************/
+
+#ifndef NCURSES_CURSESP_H_incl
+#define NCURSES_CURSESP_H_incl 1
+
+// $Id: cursesp.h,v 1.18 2003/10/25 15:04:46 tom Exp $
 
 #include <cursesw.h>
 
@@ -10,7 +42,7 @@ extern "C" {
 #  include <panel.h>
 }
 
-class NCursesPanel : public NCursesWindow {
+class NCURSES_IMPEXP NCursesPanel : public NCursesWindow {
 protected:
   PANEL *p;
   static NCursesPanel *dummy;
@@ -29,14 +61,14 @@ private:
 protected:
   void set_user(void *user) {
     UserHook* uptr = (UserHook*)::panel_userptr (p);
-    assert (uptr && uptr->m_back==this && uptr->m_owner==p);
+    assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==p);
     uptr->m_user = user;
   }
   // Set the user pointer of the panel.
   
   void *get_user() {
     UserHook* uptr = (UserHook*)::panel_userptr (p);
-    assert (uptr && uptr->m_back==this && uptr->m_owner==p);
+    assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==p);
     return uptr->m_user;
   }
   
@@ -47,6 +79,9 @@ protected:
   // If err is equal to the curses error indicator ERR, an error handler
   // is called.
 
+  // Get a keystroke. Default implementation calls getch()
+  virtual int getKey(void);
+
 public:
   NCursesPanel(int lines,
               int cols,
@@ -86,7 +121,7 @@ public:
   // N.B.: The panel associated with ::stdscr is always on the bottom. So
   // actually bottom() makes the panel the first above ::stdscr.
   
-  inline int mvwin(int y, int x) {
+  virtual int mvwin(int y, int x) {
     OnError(::move_panel(p, y, x));
     return OK;
   }
@@ -115,11 +150,11 @@ public:
 
   // Those two are rewrites of the corresponding virtual members of
   // NCursesWindow
-  int refresh();
+  virtual int refresh();
   // Propagate all panel changes to the virtual screen and update the 
   // physical screen.
 
-  int noutrefresh();
+  virtual int noutrefresh();
   // Propagate all panel changes to the virtual screen.
 
   static void redraw();
@@ -183,4 +218,4 @@ public:
   // Associate the user panel with the user data pointed to by p_UserData.
 };
 
-#endif // _CURSESP_H
+#endif // NCURSES_CURSESP_H_incl