/* ///////////////////////////////////////////////////////////////////////// * File: pantheios/frontends/stock.h * * Purpose: Declaration of the Pantheios Stock Front-end API Common * Elements. * * Created: 23rd November 2007 * Updated: 6th August 2012 * * Home: http://www.pantheios.org/ * * Copyright (c) 2007-2012, Matthew Wilson and Synesis Software * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - Neither the name(s) of Matthew Wilson and Synesis Software nor the * names of any contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * ////////////////////////////////////////////////////////////////////// */ /** \file pantheios/frontends/stock.h * * [C, C++] Declaration of the Pantheios Stock Front-end API Common * Elements. */ #ifndef PANTHEIOS_INCL_PANTHEIOS_FRONTENDS_H_STOCK #define PANTHEIOS_INCL_PANTHEIOS_FRONTENDS_H_STOCK /* ///////////////////////////////////////////////////////////////////////// * Version information */ #ifndef PANTHEIOS_DOCUMENTATION_SKIP_SECTION # define PANTHEIOS_VER_PANTHEIOS_FRONTENDS_H_STOCK_MAJOR 1 # define PANTHEIOS_VER_PANTHEIOS_FRONTENDS_H_STOCK_MINOR 2 # define PANTHEIOS_VER_PANTHEIOS_FRONTENDS_H_STOCK_REVISION 2 # define PANTHEIOS_VER_PANTHEIOS_FRONTENDS_H_STOCK_EDIT 13 #endif /* !PANTHEIOS_DOCUMENTATION_SKIP_SECTION */ /* ///////////////////////////////////////////////////////////////////////// * Includes */ #ifndef PANTHEIOS_INCL_PANTHEIOS_H_PANTHEIOS # include #endif /* !PANTHEIOS_INCL_PANTHEIOS_H_PANTHEIOS */ #ifndef PANTHEIOS_INCL_PANTHEIOS_H_FRONTEND # include #endif /* !PANTHEIOS_INCL_PANTHEIOS_H_FRONTEND */ /** \defgroup group__frontend__stock_frontends Pantheios Stock Front-ends * \ingroup group__frontend Pantheios * Pre-built front-ends supplied with the Pantheios library * * Pantheios comes with several pre-written stock front-end libraries, which * cover most common needs for diagnostic logging. They also serve as good * examples of how to write a custom front-end. */ /* ///////////////////////////////////////////////////////////////////////// * Compiler compatibility */ #if defined(__DMC__) && \ __DMC__ < 0x0850 /* Previous versions of Digital Mars compiler/linker did not operate * correctly with declaration of extern const char []. */ # error Not compatible with Digital Mars C/C++ prior to version 8.50. Download the latest free version at www.digitalmars.com #endif /* compiler */ /* ///////////////////////////////////////////////////////////////////////// * External Declarations */ /** The application must define this variable, to contain the * application name/identity. * * \ingroup group__frontend__stock_frontends * * The variable is an immutable array of PAN_CHAR_T (i.e. * char in multibyte string builds, wchar_t in * wide string builds) whose name is non-mangled and has external linkage. * * Therefore, when defining within a C++ compilation unit it must be * declared extern "C"; when defined within a C compilation * unit it must be extern (optionally declared extern; it * must not be declared static). * * Examples: \htmlonly
  // C: multibyte string build
  char const                            PANTHEIOS_FE_PROCESS_IDENTITY[] = "my.app";

  // C++: wide string build
  extern "C" wchar_t const              PANTHEIOS_FE_PROCESS_IDENTITY[] = L"my.app";
\endhtmlonly * * For convenience, the constructs PANTHEIOS_EXTERN_C, PAN_CHAR_T, and * PANTHEIOS_LITERAL_STRING() may be employed to write the variable * definition in a manner independent of language and/or character encoding, * as in: \htmlonly
  /\* C or C++; multibyte or wide string build \*\/
  PANTHEIOS_EXTERN_C PAN_CHAR_T const   PANTHEIOS_FE_PROCESS_IDENTITY[] = PANTHEIOS_LITERAL_STRING("my.app");

\endhtmlonly * * \note The process identity must not contain any whitespace characters, * otherwise Pantheios library initialisation will fail. * * \warn If you define the variable as a pointer * (PAN_CHAR_T const*) the behaviour of the link unit is * undefined. */ PANTHEIOS_EXTERN_C PAN_CHAR_T const PANTHEIOS_FE_PROCESS_IDENTITY[]; /* ///////////////////////////////////////////////////////////////////////// * Application-defined functions */ /** \ref page__frontend__callbacks "Callback" function defined by the * application, invoked during API initialisation. * * \ingroup group__frontend__stock_frontends * * \note This function is only required when the * \ref page__frontend__callbacks "callback" version of the front-end * library is used. * * \note This function *MUST NOT* throw an exception, and *MUST NOT* return * NULL. If the implementation fails to acquire/produce the * identity, it must call pantheios_exitProcess(1). It may * optionally call pantheios_util_onBailOut4() first. */ PANTHEIOS_CALL(PAN_CHAR_T const*) pantheios_fe_getAppProcessIdentity(void) /* throw() */; /* ////////////////////////////////////////////////////////////////////// */ #endif /* PANTHEIOS_INCL_PANTHEIOS_FRONTENDS_H_STOCK */ /* ///////////////////////////// end of file //////////////////////////// */