TizenRT Libs&Environment  v2.0 M2
cxxinitialize.h
Go to the documentation of this file.
1 /****************************************************************************
2  *
3  * Copyright 2018 Samsung Electronics All Rights Reserved.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing,
12  * software distributed under the License is distributed on an
13  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
14  * either express or implied. See the License for the specific
15  * language governing permissions and limitations under the License.
16  *
17  ****************************************************************************/
18 /****************************************************************************
19  * apps/include/platform/cxxinitialize.h
20  *
21  * Copyright (C) 2017 Gregory Nutt. All rights reserved.
22  * Author: Gregory Nutt <gnutt@nuttx.org>
23  *
24  * Redistribution and use in source and binary forms, with or without
25  * modification, are permitted provided that the following conditions
26  * are met:
27  *
28  * 1. Redistributions of source code must retain the above copyright
29  * notice, this list of conditions and the following disclaimer.
30  * 2. Redistributions in binary form must reproduce the above copyright
31  * notice, this list of conditions and the following disclaimer in
32  * the documentation and/or other materials provided with the
33  * distribution.
34  * 3. Neither the name NuttX nor the names of its contributors may be
35  * used to endorse or promote products derived from this software
36  * without specific prior written permission.
37  *
38  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
39  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
40  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
41  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
42  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
43  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING,
44  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
45  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
46  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
47  * LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
48  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
49  * POSSIBILITY OF SUCH DAMAGE.
50  *
51  ****************************************************************************/
52 
53 #ifndef __APPS_INCLUDE_PLATFORM_CXXINITIALIZE_H
54 #define __APPS_INCLUDE_PLATFORM_CXXINITIALIZE_H
55 
56 /****************************************************************************
57  * Included Files
58  ****************************************************************************/
59 
60 #include <tinyara/config.h>
61 
62 /****************************************************************************
63  * Public Functions
64  ****************************************************************************/
65 
66 #undef EXTERN
67 #if defined(__cplusplus)
68 #define EXTERN extern "C"
69 extern "C" {
70 #else
71 
72 #define EXTERN extern
73 #endif
74 
75 /****************************************************************************
76  * Name: up_cxxinitialize
77  *
78  * Description:
79  * If C++ and C++ static constructors are supported, then this function
80  * must be provided by board-specific logic in order to perform
81  * initialization of the static C++ class instances.
82  *
83  * This function should then be called in the application-specific
84  * logic in order to perform the C++ initialization. NOTE that no
85  * component of the core RTOS logic is involved; This function
86  * definition only provides the 'contract' between application
87  * specific C++ code and platform-specific toolchain support
88  *
89  ****************************************************************************/
90 
91 #if defined(CONFIG_HAVE_CXX) && defined(CONFIG_HAVE_CXXINITIALIZE)
92 void up_cxxinitialize(void);
93 #endif
94 
95 #undef EXTERN
96 #if defined(__cplusplus)
97 }
98 #endif
99 
100 #endif /* __APPS_INCLUDE_PLATFORM_CXXINITIALIZE_H */