//==================================================================================================
// S t a n d a r d                                                                        Interface
// A s c i i
//                                                                                By Bruno Bachelet
//==================================================================================================
// Copyright (c) 1999-2016
// Bruno Bachelet - bruno@nawouak.net - http://www.nawouak.net
//
// This file is part of the B++ Library. This library is free software; you can redistribute it
// and/or modify it under the terms of the GNU Library General Public License as published by the
// Free Software Foundation; either version 2 of the License, or (at your option) any later
// version.
//
// This library 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 Library General Public License for more details (http://www.gnu.org).

/*DESCRIPTION*/
/* This module provides symbolic constants for some ASCII codes. */

// File Name //-------------------------------------------------------------------------------------
#line __LINE__ "standard/ascii.hpp"

// Guardian //--------------------------------------------------------------------------------------
#ifndef guStandardAscii
#define guStandardAscii

// Headers //---------------------------------------------------------------------------------------
#include <bpp/standard/environment.hpp> /*INCLUDE*/

namespace bpp {

// Importation/Exportation //-----------------------------------------------------------------------
#ifdef STANDARD_DLL
 #define dll_export DLL_EXPORT
#else
 #define dll_export DLL_IMPORT
#endif

// Namespaces //------------------------------------------------------------------------------------
#define public_area  standardAscii
#define private_area standardAscii_private

namespace public_area  { /*NAMESPACE*/ using namespace standardType; }
namespace private_area { using namespace public_area; }

extern_module_name;

// Initialization //--------------------------------------------------------------------------------
#define iniStandardAscii
has_initializer;

// Macrocommands //---------------------------------------------------------------------------------

// Types & Classes //-------------------------------------------------------------------------------
namespace public_area  {}
namespace private_area {}

// Functions Interface //---------------------------------------------------------------------------
namespace public_area  {}
namespace private_area { testing_mode ( function void test(void); ) }

// Errors //----------------------------------------------------------------------------------------
namespace public_area {}

// Constants & Variables //-------------------------------------------------------------------------
/*CONSTANT*/ /* "Alert" ASCII character. */
extern_static_constant(public,tyCharacter,goAlert,alert);

/*CONSTANT*/ /* "Backspace" ASCII character. */
extern_static_constant(public,tyCharacter,goBackspace,backspace);

/*CONSTANT*/ /* "Carriage return" ASCII character. */
extern_static_constant(public,tyCharacter,goCarriageReturn,carriageReturn);

/*CONSTANT*/ /* "End of file" ASCII character. */
extern_static_constant(public,tyCharacter,goEnd,end);

/*CONSTANT*/ /* "Form feed" ASCII character. */
extern_static_constant(public,tyCharacter,goFormFeed,formFeed);

/*CONSTANT*/ /* "Horizontal tabulation" ASCII character. */
extern_static_constant(public,tyCharacter,goHorizontalTab,horizontalTab);

/*CONSTANT*/ /* "New line" ASCII character. */
extern_static_constant(public,tyCharacter,goNewLine,newLine);

/*CONSTANT*/ /* "Vertical tabulation" ASCII character. */
extern_static_constant(public,tyCharacter,goVerticalTab,verticalTab);

// X X X  Interface //------------------------------------------------------------------------------
namespace {}

// Functions Inline //------------------------------------------------------------------------------
namespace public_area  {}
namespace private_area {}

// X X X  Inline //---------------------------------------------------------------------------------
namespace {}

// End //-------------------------------------------------------------------------------------------
}
#undef dll_export
#undef public_area
#undef private_area
#endif
 
//==================================================================================================
// S t a n d a r d                                                                   Implementation
// A s c i i
//                                                                                By Bruno Bachelet
//==================================================================================================
// Copyright (c) 1999-2016
// Bruno Bachelet - bruno@nawouak.net - http://www.nawouak.net
//
// This file is part of the B++ Library. This library is free software; you can redistribute it
// and/or modify it under the terms of the GNU Library General Public License as published by the
// Free Software Foundation; either version 2 of the License, or (at your option) any later
// version.
//
// This library 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 Library General Public License for more details (http://www.gnu.org).

// File Name //-------------------------------------------------------------------------------------
#line __LINE__ "standard/ascii.cpp"

// DLL Belonging //---------------------------------------------------------------------------------
#define STANDARD_DLL

// Headers //---------------------------------------------------------------------------------------
#include <bpp/standard/ascii.hpp> /*INTERFACE*/

namespace bpp {

// Namespaces //------------------------------------------------------------------------------------
#define public_area  standardAscii
#define private_area standardAscii_private
#define dll_export   DLL_EXPORT

namespace public_area  {}
namespace private_area {}

static_module_name("Standard/Ascii");

// Initialization //--------------------------------------------------------------------------------
#undef iniStandardAscii
static_constant(private_area::clInitializer,goInitializer);

// Errors //----------------------------------------------------------------------------------------
namespace public_area {}

// Constants & Variables //-------------------------------------------------------------------------
static_constant(tyCharacter,goAlert);
static_constant(tyCharacter,goBackspace);
static_constant(tyCharacter,goCarriageReturn);
static_constant(tyCharacter,goEnd);
static_constant(tyCharacter,goFormFeed);
static_constant(tyCharacter,goHorizontalTab);
static_constant(tyCharacter,goNewLine);
static_constant(tyCharacter,goVerticalTab);

// Static Members //--------------------------------------------------------------------------------
namespace public_area  {}
namespace private_area {}

// Functions Implementation //----------------------------------------------------------------------
namespace public_area  {}
namespace private_area {}

// X X X  Implementation //-------------------------------------------------------------------------
namespace {}

// I n i t i a l i z e r  Implementation //---------------------------------------------------------
namespace private_area {
 //--------------------------------------------------------------------------------------------Start
 property void clInitializer::start(void) {
  if (atCounter++ == 0) {
   #include <bpp/modules.hpp> /*NEED*/
   registerStop(this);
   environment::informInitialization(goModuleName);

   goAlert          = '\a';
   goBackspace      = '\b';
   goCarriageReturn = '\r';
   goEnd            = tyCharacter(-1);
   goFormFeed       = '\f';
   goHorizontalTab  = '\t';
   goNewLine        = '\n';
   goVerticalTab    = '\v';
  }
 }
 //---------------------------------------------------------------------------------------------Stop
 property void clInitializer::stop(void) { environment::informTermination(goModuleName); }
}

// End //-------------------------------------------------------------------------------------------
}