// $Id$
//
-// Copyright (C) 2009
+// Copyright (C) 2009
// Fraunhofer Institute for Open Communication Systems (FOKUS)
-// Competence Center NETwork research (NET), St. Augustin, GERMANY
-// Stefan Bund <g0dil@berlios.de>
//
-// 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.
+// The contents of this file are subject to the Fraunhofer FOKUS Public License
+// Version 1.0 (the "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+// http://senf.berlios.de/license.html
//
-// 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.
+// The Fraunhofer FOKUS Public License Version 1.0 is based on,
+// but modifies the Mozilla Public License Version 1.1.
+// See the full license text for the amendments.
//
-// 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.,
-// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+// Software distributed under the License is distributed on an "AS IS" basis,
+// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+// for the specific language governing rights and limitations under the License.
+//
+// The Original Code is Fraunhofer FOKUS code.
+//
+// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V.
+// (registered association), Hansastraße 27 c, 80686 Munich, Germany.
+// All Rights Reserved.
+//
+// Contributor(s):
+// Stefan Bund <g0dil@berlios.de>
/** \file
\brief Terminfo public header */
#include <senf/Utils/Exception.hh>
//#include "Terminfo.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace term {
*/
/** \brief Terminfo database entry
-
+
This class reads a single terminfo database entry and allows to access the terminfo
- properties.
-
- \ingroup terminfo_group
+ properties.
+
+ \ingroup terminfo_group
*/
class Terminfo
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
/** \brief NoValue constant
CpiChangesRes, LpiChangesRes, BackspacesWithBs, CrtNoScrolling,
NoCorrectlyWorkingCr, GnuHasMetaKey, LinefeedIsNewline, HasHardwareTabs,
ReturnDoesClrEol };
-
+
/** \brief Boolean property names
\hideinitializer */
static char const * const BooleanNames[];
-
+
/** \brief Numeric terminfo properties */
enum Numeric {
Columns, InitTabs, Lines, LinesOfMemory, MagicCookieGlitch, PaddingBaudRate,
typedef boost::int16_t number_t; ///< Numeric terminfo property type
typedef char const* string_t; ///< String terminfo property type
- ///////////////////////////////////////////////////////////////////////////
-
+ //-////////////////////////////////////////////////////////////////////////
+
Terminfo();
explicit Terminfo(std::string const & term); ///< Load terminfo entry \a term
void load(std::string const & term); ///< Load terminfo entry \a term
-
+
bool getFlag(properties::Boolean p) const; ///< Get boolean property value
number_t getNumber(properties::Numeric p) const; ///< Get numeric property value
string_t getString(properties::String p) const; ///< Get string property value
bool hasProperty(properties::String p ) const; ///< \c true, if string property \a p exists
std::string formatString(properties::String p,
- number_t arg1=NoValue, number_t arg2=NoValue,
+ number_t arg1=NoValue, number_t arg2=NoValue,
number_t arg3=NoValue, number_t arg4=NoValue,
number_t arg5=NoValue, number_t arg6=NoValue,
number_t arg7=NoValue, number_t arg8=NoValue,
/**< Formats the string property \a p containing special
terminfo codes. Terminfo supports up to 9 parameters. */
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
void dump(std::ostream & os) const; ///< Dump a description of the terminfo entry
All keys are returned as keyboard code's. Values 0 to 255 represent ordinary ASCII
characters, larger values are special keys taken from the KeyCode \c enum
-
- \ingroup terminfo_group
+
+ \ingroup terminfo_group
*/
class KeyParser
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
/** \brief Special keyboard key codes */
/** \brief Helper to convert uppercase char to Control key code */
static keycode_t Ctrl(char ch) { return ch-'@'; }
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
KeyParser();
explicit KeyParser(Terminfo const & ti); ///< Load keymap information from \a ti
Keytable table_;
};
-
+
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Terminfo.cci"
//#include "Terminfo.ct"
//#include "Terminfo.cti"