Belos Version of the Day
Loading...
Searching...
No Matches
Belos_Details_registerLinearSolverFactory.cpp
Go to the documentation of this file.
1//@HEADER
2// ************************************************************************
3//
4// Belos: Block Linear Solvers Package
5// Copyright 2004 Sandia Corporation
6//
7// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8// the U.S. Government retains certain rights in this software.
9//
10// Redistribution and use in source and binary forms, with or without
11// modification, are permitted provided that the following conditions are
12// met:
13//
14// 1. Redistributions of source code must retain the above copyright
15// notice, this list of conditions and the following disclaimer.
16//
17// 2. Redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution.
20//
21// 3. Neither the name of the Corporation nor the names of the
22// contributors may be used to endorse or promote products derived from
23// this software without specific prior written permission.
24//
25// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36//
37// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38//
39// ************************************************************************
40//@HEADER
41
44#include "Teuchos_ConfigDefs.hpp" // for __attribute__((weak)) check
45
46// FIXME (mfh 23 Aug 2015) Belos' main library is upstream from
47// libraries where Belos' Epetra and Tpetra specializations live.
48// That's why we need to use weak symbols here. Otherwise, link
49// errors result. Fixing this requires the same run-time registration
50// solution that Bug 6392 is all about.
51
52#if defined(HAVE_BELOS_EPETRA) && defined(HAVE_TEUCHOS_CXX_ATTRIBUTE_WEAK)
53namespace Belos {
54namespace Details {
55namespace Epetra {
57} // namespace Epetra
58} // namespace Details
59} // namespace Belos
60#endif // defined(HAVE_BELOS_EPETRA) && defined(HAVE_TEUCHOS_CXX_ATTRIBUTE_WEAK)
61
62#if defined(HAVE_BELOS_TPETRA) && defined(HAVE_TEUCHOS_CXX_ATTRIBUTE_WEAK)
63namespace Belos {
64namespace Details {
65namespace Tpetra {
67} // namespace Tpetra
68} // namespace Details
69} // namespace Belos
70#endif // defined(HAVE_BELOS_TPETRA) && defined(HAVE_TEUCHOS_CXX_ATTRIBUTE_WEAK)
71
72//
73// FIXME (mfh 23 Aug 2015) We should add Thyra as well.
74//
75
76namespace Belos {
77namespace Details {
78
79void
81{
82#if defined(HAVE_BELOS_TPETRA) && defined(HAVE_TEUCHOS_CXX_ATTRIBUTE_WEAK)
83 // It's a weak symbol, so it might be NULL.
84 if (::Belos::Details::Tpetra::registerLinearSolverFactory != NULL) {
85 ::Belos::Details::Tpetra::registerLinearSolverFactory ();
86 }
87#endif // defined(HAVE_BELOS_TPETRA) && defined(HAVE_TEUCHOS_CXX_ATTRIBUTE_WEAK)
88
89#if defined(HAVE_BELOS_EPETRA) && defined(HAVE_TEUCHOS_CXX_ATTRIBUTE_WEAK)
90 // It's a weak symbol, so it might be NULL.
91 if (::Belos::Details::Epetra::registerLinearSolverFactory != NULL) {
92 ::Belos::Details::Epetra::registerLinearSolverFactory ();
93 }
94#endif // defined(HAVE_BELOS_EPETRA) && defined(HAVE_TEUCHOS_CXX_ATTRIBUTE_WEAK)
95}
96
97} // namespace Details
98} // namespace Belos
99
100
Implementation of Trilinos::Details::LinearSolverFactory.
Declaration of Belos::Details::registerLinearSolverFactory.
void registerLinearSolverFactory()
Register Belos' LinearSolverFactory with the central repository, for all enabled combinations of temp...

Generated for Belos by doxygen 1.10.0