1 #ifndef CORELIB___NCBI_TOOLKIT_IMPL__HPP
2 #define CORELIB___NCBI_TOOLKIT_IMPL__HPP
3 
4 /*  $Id: ncbi_toolkit_impl.hpp 309867 2011-06-28 18:43:15Z gouriano $
5  * ===========================================================================
6  *
7  *                            PUBLIC DOMAIN NOTICE
8  *               National Center for Biotechnology Information
9  *
10  *  This software/database is a "United States Government Work" under the
11  *  terms of the United States Copyright Act.  It was written as part of
12  *  the author's official duties as a United States Government employee and
13  *  thus cannot be copyrighted.  This software/database is freely available
14  *  to the public for use. The National Library of Medicine and the U.S.
15  *  Government have not placed any restriction on its use or reproduction.
16  *
17  *  Although all reasonable efforts have been taken to ensure the accuracy
18  *  and reliability of the software and data, the NLM and the U.S.
19  *  Government do not and cannot warrant the performance or results that
20  *  may be obtained by using this software or data. The NLM and the U.S.
21  *  Government disclaim all warranties, express or implied, including
22  *  warranties of performance, merchantability or fitness for any particular
23  *  purpose.
24  *
25  *  Please cite the author in any work or product based on this material.
26  *
27  * ===========================================================================
28  *
29  * Authors:  Andrei Gourianov, Denis Vakatov
30  *
31  */
32 
33 /// @file ncbi_toolkit_impl.hpp
34 
35 /** @addtogroup AppFramework
36  *
37  * @{
38  */
39 
40 #include <string>
41 
42 namespace ncbi {
43 
44 
45 
46 // Forward declarations
47 class  INcbiToolkit_LogHandler;
48 struct SDiagMessage;
49 class  CNcbiApplication;
50 
51 // Single/Multi-byte characters
52 #if defined(_MSC_VER) && defined(_UNICODE)
53 typedef wchar_t TNcbiToolkit_XChar;
54 #else
55 typedef char    TNcbiToolkit_XChar;
56 #endif
57 
58 // Export/import specifications
59 #if defined(_MSC_VER) && defined(_USRDLL)
60 #  ifdef NCBI_XNCBI_EXPORTS
61 #    define NCBI_TOOLKIT_EXPORT __declspec(dllexport)
62 #  else
63 #    define NCBI_TOOLKIT_EXPORT __declspec(dllimport)
64 #  endif
65 #else
66 #  define NCBI_TOOLKIT_EXPORT
67 #endif
68 
69 
70 
71 /////////////////////////////////////////////////////////////////////////////
72 /// Provide means of creating custom CNcbiApplication object -- to use the
73 /// latter instead of "dummy" NCBI application.
74 /// @note
75 ///  It is an esoteric feature that is very rarely used.
76 
77 typedef CNcbiApplication* (*FNcbiApplicationFactory)(void);
78 
79 void NCBI_TOOLKIT_EXPORT NcbiToolkit_RegisterNcbiApplicationFactory
80     (FNcbiApplicationFactory f);
81 
82 } /* namespace ncbi */
83 
84 
85 
86 #endif  /* CORELIB___NCBI_TOOLKIT_IMPL__HPP */
87