!39763 去除冗余头文件

Merge pull request !39763 from KentZustc/interfaces_native
This commit is contained in:
openharmony_ci 2024-08-13 08:02:20 +00:00 committed by Gitee
commit 387a9a35a6
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
64 changed files with 0 additions and 322 deletions

View File

@ -15,13 +15,7 @@
#include "ace_forward_compatibility.h"
#include <cstdint>
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#include <unistd.h>
#include <unordered_set>
#include "arkui_log.h"
#ifdef OHOS_PLATFORM

View File

@ -15,10 +15,8 @@
#include "navigation_controller.h"
#include <string>
#include "ace_forward_compatibility.h"
#include "ui_content.h"
#include "utils.h"
namespace OHOS {

View File

@ -16,7 +16,6 @@
#include "interfaces/inner_api/ace/ui_event_func.h"
#include "ace_forward_compatibility.h"
#include "utils.h"
namespace OHOS::Ace {
constexpr char REGISTER_UI_EVENT_OBSERVER_FUNC[] = "OHOS_ACE_RegisterUIEventObserver";

View File

@ -16,8 +16,6 @@
#include "interfaces/inner_api/ace/uicast/uicast_subscriber.h"
#include <dlfcn.h>
#include <string>
#include <unistd.h>
#include "arkui_log.h"

View File

@ -17,20 +17,12 @@
#include "application_context.h"
#endif
#include "drawable_descriptor.h"
#include <cstddef>
#include <memory>
#include <string>
#include "include/core/SkSamplingOptions.h"
#include "third_party/cJSON/cJSON.h"
#ifndef PREVIEW
#include "image_source.h"
#endif
#include "include/core/SkImage.h"
#include "include/core/SkRect.h"
#ifdef PREVIEW
#ifdef WINDOWS_PLATFORM
#include <direct.h>

View File

@ -15,13 +15,6 @@
#include "js_drawable_descriptor.h"
#include "drawable_descriptor.h"
#include "interfaces/inner_api/drawable_descriptor/drawable_descriptor.h"
#include "js_native_api.h"
#include "js_native_api_types.h"
#include "napi/native_api.h"
#include "napi/native_common.h"
#include "napi/native_node_api.h"
#ifndef PREVIEW
#include "pixel_map_napi.h"
#endif

View File

@ -15,11 +15,7 @@
#include "form_renderer.h"
#include "configuration.h"
#include "form_constants.h"
#include "form_renderer_hilog.h"
#include "event_handler.h"
#include "refbase.h"
#include "base/utils/utils.h"

View File

@ -14,7 +14,6 @@
*/
#include "form_renderer_delegate_impl.h"
#include "errors.h"
#include "form_renderer_hilog.h"
namespace OHOS {

View File

@ -14,7 +14,6 @@
*/
#include "form_renderer_delegate_proxy.h"
#include "form_renderer_delegate_interface.h"
#include "form_renderer_hilog.h"
namespace OHOS {

View File

@ -14,12 +14,9 @@
*/
#include "form_renderer_dispatcher_impl.h"
#include <condition_variable>
#include <mutex>
#include "form_renderer.h"
#include "form_renderer_hilog.h"
#include "core/components_ng/gestures/gesture_group.h"
namespace OHOS {
namespace Ace {

View File

@ -14,11 +14,8 @@
*/
#include "form_renderer_dispatcher_proxy.h"
#include "appexecfwk_errors.h"
#include "errors.h"
#include "form_renderer_hilog.h"
#include "core/event/touch_event.h"
namespace OHOS {
namespace Ace {

View File

@ -14,10 +14,7 @@
*/
#include "form_renderer_dispatcher_stub.h"
#include "appexecfwk_errors.h"
#include "errors.h"
#include "form_renderer_hilog.h"
#include "ipc_skeleton.h"
namespace OHOS {
namespace Ace {

View File

@ -15,7 +15,6 @@
#include "form_renderer_group.h"
#include "configuration.h"
#include "form_renderer.h"
#include "form_renderer_hilog.h"

View File

@ -16,10 +16,6 @@
#include "xcomponent_controller.h"
#include "js_native_api.h"
#include "js_native_api_types.h"
#include "jsnapi.h"
#include "napi/native_common.h"
#include "native_engine/impl/ark/ark_native_engine.h"
#include "bridge/declarative_frontend/jsview/js_xcomponent_controller.h"
namespace OHOS::Ace {

View File

@ -13,25 +13,10 @@
* limitations under the License.
*/
#include <memory>
#include <string>
#include "animator_option.h"
#include "interfaces/napi/kits/utils/napi_utils.h"
#include "napi/native_api.h"
#include "napi/native_engine/native_value.h"
#include "napi/native_node_api.h"
#include "base/log/ace_trace.h"
#include "base/log/log.h"
#include "base/memory/ace_type.h"
#include "base/memory/referenced.h"
#include "base/thread/frame_trace_adapter.h"
#include "bridge/common/utils/utils.h"
#include "core/animation/animator.h"
#include "core/animation/curve.h"
#include "core/animation/curve_animation.h"
#include "core/animation/spring_motion.h"
namespace OHOS::Ace::Napi {

View File

@ -13,22 +13,9 @@
* limitations under the License.
*/
#include <cstddef>
#include <cstdint>
#include <memory>
#include <optional>
#include <string>
#include <vector>
#include "interfaces/napi/kits/utils/napi_utils.h"
#include "js_native_api.h"
#include "js_native_api_types.h"
#include "napi/native_api.h"
#include "napi/native_node_api.h"
#include "core/common/ace_engine.h"
#include "core/common/container.h"
#include "core/components_ng/pattern/app_bar/app_bar_view.h"
namespace OHOS::Ace::Napi {
static RefPtr<NG::AppBarView> ObtainAppBar()

View File

@ -16,19 +16,12 @@
#include "js_component_snapshot.h"
#include "interfaces/napi/kits/utils/napi_utils.h"
#include "js_native_api.h"
#include "js_native_api_types.h"
#include "napi/native_common.h"
#include "node_api_types.h"
#include "base/utils/utils.h"
#ifdef PIXEL_MAP_SUPPORTED
#include "pixel_map.h"
#include "pixel_map_napi.h"
#endif
#include "node_api.h"
#include "bridge/common/utils/utils.h"
#include "core/common/ace_engine.h"
#include "frameworks/bridge/common/utils/engine_helper.h"

View File

@ -13,14 +13,9 @@
* limitations under the License.
*/
#include <string>
#include "interfaces/napi/kits/utils/napi_utils.h"
#include "napi/native_api.h"
#include "napi/native_node_api.h"
#include "native_engine/native_value.h"
#include "frameworks/bridge/common/utils/componentInfo.h"
#include "frameworks/bridge/common/utils/engine_helper.h"
namespace OHOS::Ace::Napi {

View File

@ -13,9 +13,7 @@
* limitations under the License.
*/
#include <string>
#include "napi/native_api.h"
#include "napi/native_node_api.h"
#include "frameworks/core/common/ace_application_info.h"

View File

@ -13,10 +13,7 @@
* limitations under the License.
*/
#include <string>
#include "napi/native_api.h"
#include "napi/native_engine/native_value.h"
#include "napi/native_node_api.h"
#include "base/log/log.h"

View File

@ -12,18 +12,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <cstring>
#include <memory>
#include "interfaces/napi/kits/utils/napi_utils.h"
#include "napi/native_api.h"
#include "napi/native_node_api.h"
#include "interfaces/napi/kits/display_sync/js_display_sync.h"
#include "base/log/log.h"
#include "base/memory/ace_type.h"
#include "base/memory/referenced.h"
#include "bridge/common/utils/utils.h"
namespace OHOS::Ace::Napi {
constexpr size_t STR_MAX_BUFFER_SIZE = 1024;

View File

@ -24,7 +24,6 @@
#include "napi/native_common.h"
#include "native_engine/impl/ark/ark_native_engine.h"
#include "native_value.h"
#include "node_api.h"
#if defined(ENABLE_DRAG_FRAMEWORK) && defined(PIXEL_MAP_SUPPORTED)
#include "jsnapi.h"

View File

@ -13,14 +13,9 @@
* limitations under the License.
*/
#include <string>
#include "interfaces/napi/kits/utils/napi_utils.h"
#include "napi/native_api.h"
#include "napi/native_node_api.h"
#include "native_engine/native_value.h"
#include "frameworks/bridge/common/utils/componentInfo.h"
#include "frameworks/bridge/common/utils/engine_helper.h"
namespace OHOS::Ace::Napi {

View File

@ -13,15 +13,10 @@
* limitations under the License.
*/
#include <string>
#include "interfaces/napi/kits/utils/napi_utils.h"
#include "napi/native_api.h"
#include "napi/native_engine/native_value.h"
#include "napi/native_node_api.h"
#include "bridge/common/utils/engine_helper.h"
#include "bridge/js_frontend/engine/common/js_engine.h"
#include "core/common/font_manager.h"
namespace OHOS::Ace::Napi {

View File

@ -12,9 +12,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <string>
#include "napi/native_api.h"
#include "napi/native_node_api.h"
#include "frameworks/core/components/common/layout/grid_system_manager.h"

View File

@ -14,13 +14,6 @@
*/
#include "js_inspector.h"
#include <algorithm>
#include "napi/native_common.h"
#include "napi/native_node_api.h"
#include "base/memory/referenced.h"
namespace OHOS::Ace::Napi {
namespace {
constexpr size_t STR_BUFFER_SIZE = 1024;

View File

@ -13,24 +13,10 @@
* limitations under the License.
*/
#include <map>
#include <optional>
#include <string>
#include "interfaces/napi/kits/utils/napi_utils.h"
#include "js_native_api.h"
#include "js_native_api_types.h"
#include "napi/native_api.h"
#include "napi/native_engine/native_value.h"
#include "napi/native_node_api.h"
#include "base/geometry/dimension.h"
#include "base/geometry/size.h"
#include "bridge/common/utils/engine_helper.h"
#include "bridge/js_frontend/engine/common/js_engine.h"
#include "core/components/common/layout/constants.h"
#include "core/components/common/properties/text_style.h"
#include "frameworks/base/utils/measure_util.h"
extern const char _binary_measure_js_start[];
extern const char _binary_measure_abc_start[];

View File

@ -12,19 +12,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <algorithm>
#include <map>
#include <mutex>
#include <set>
#include "napi/native_api.h"
#include "napi/native_common.h"
#include "napi/native_node_api.h"
#include "bridge/common/media_query/media_queryer.h"
#include "bridge/common/utils/engine_helper.h"
#include "bridge/js_frontend/engine/common/js_engine.h"
#include "core/common/container.h"
namespace OHOS::Ace::Napi {
namespace {

View File

@ -15,18 +15,10 @@
#include "js_ui_observer.h"
#include "ui_observer.h"
#include "ui_observer_listener.h"
#include <map>
#include <optional>
#include <string>
#include "interfaces/napi/kits/utils/napi_utils.h"
#include "js_native_api.h"
#include "js_native_api_types.h"
#include "core/components_ng/base/observer_handler.h"
#include "core/common/container_scope.h"
namespace OHOS::Ace::Napi {
namespace {

View File

@ -17,7 +17,6 @@
#include "bridge/common/utils/engine_helper.h"
#include <algorithm>
namespace OHOS::Ace::Napi {
std::list<std::shared_ptr<UIObserverListener>> UIObserver::unspecifiedNavigationListeners_;

View File

@ -14,14 +14,6 @@
*/
#include "ui_observer_listener.h"
#include <cstdint>
#include "core/pipeline/pipeline_base.h"
#include "frameworks/bridge/declarative_frontend/engine/jsi/jsi_types.h"
#include "frameworks/bridge/declarative_frontend/engine/jsi/jsi_declarative_engine.h"
#include "core/interfaces/native/node/node_api.h"
#include "core/components_ng/common_napi_utils/common_napi_utils.h"
#include "frameworks/base/geometry/dimension.h"
namespace OHOS::Ace::Napi {
namespace {

View File

@ -14,12 +14,8 @@
*/
#include "interfaces/napi/kits/utils/napi_utils.h"
#include "napi/native_api.h"
#include "native_value.h"
#include "napi/native_node_api.h"
#include "bridge/common/utils/engine_helper.h"
#include "bridge/js_frontend/engine/common/js_engine.h"
namespace OHOS::Ace::Napi {
static NG::FrameNode* ParseFrameNode(napi_env env, napi_callback_info info)

View File

@ -13,10 +13,6 @@
* limitations under the License.
*/
#include <cstdio>
#include <functional>
#include <string>
#include "base/perfmonitor/perf_monitor.h"
#include "napi_perf_monitor.h"

View File

@ -14,14 +14,11 @@
*/
#include "js_plugin_callback.h"
#include <memory>
#include <mutex>
#include "js_plugin_callback_mgr.h"
#include "js_plugin_util.h"
#include "js_plugin_want.h"
#include "base/log/log_wrapper.h"
#include "core/common/ace_engine.h"
#include "core/components/plugin/plugin_component_manager.h"

View File

@ -12,18 +12,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <cstdint>
#include "ipc_skeleton.h"
#include "js_plugin_callback.h"
#include "js_plugin_callback_mgr.h"
#include "js_plugin_util.h"
#include "js_plugin_want.h"
#include "napi/native_api.h"
#include "napi/native_node_api.h"
#include "tokenid_kit.h"
#include "base/log/log_wrapper.h"
#include "core/components/plugin/plugin_component_manager.h"
namespace OHOS::Ace::Napi {

View File

@ -13,13 +13,6 @@
* limitations under the License.
*/
#include "js_plugin_util.h"
#include <cinttypes>
#include <cstring>
#include "native_value.h"
#include "securec.h"
#include "core/common/container.h"
namespace OHOS::Ace::Napi {

View File

@ -25,10 +25,8 @@
#include "long_wrapper.h"
#include "short_wrapper.h"
#include "string_wrapper.h"
#include "want_params_wrapper.h"
#include "zchar_wrapper.h"
#include "base/log/log_wrapper.h"
namespace OHOS::Ace::Napi {
/**

View File

@ -14,9 +14,6 @@
*/
#include "interfaces/napi/kits/promptaction/prompt_action.h"
#include "napi/native_api.h"
#include "napi/native_engine/native_value.h"
#include "napi/native_node_api.h"
namespace OHOS::Ace::Napi {
static constexpr uint32_t DEFAULT = 0;

View File

@ -15,20 +15,13 @@
#include "prompt_action.h"
#include <cstddef>
#include <memory>
#include <string>
#include "interfaces/napi/kits/utils/napi_utils.h"
#include "base/i18n/localization.h"
#include "base/log/log_wrapper.h"
#include "base/subwindow/subwindow_manager.h"
#include "base/utils/system_properties.h"
#include "bridge/common/utils/engine_helper.h"
#include "core/common/ace_engine.h"
#include "core/components/common/properties/shadow.h"
#include "core/components/theme/shadow_theme.h"
#include "core/components_ng/pattern/toast/toast_layout_property.h"
namespace OHOS::Ace::Napi {
namespace {

View File

@ -13,21 +13,11 @@
* limitations under the License.
*/
#include <cstdint>
#include <memory>
#include <string>
#include "interfaces/napi/kits/utils/napi_utils.h"
#include "js_native_api.h"
#include "js_native_api_types.h"
#include "napi/native_api.h"
#include "napi/native_engine/native_value.h"
#include "napi/native_node_api.h"
#include "core/common/ace_engine.h"
#include "frameworks/base/log/log.h"
#include "frameworks/bridge/common/utils/engine_helper.h"
#include "frameworks/bridge/js_frontend/engine/common/js_engine.h"
namespace OHOS::Ace::Napi {
const char EN_ALERT_APPROVE[] = "enableAlertBeforeBackPage:ok";

View File

@ -14,16 +14,7 @@
*/
#include "napi_utils.h"
#include <cstddef>
#include "js_native_api_types.h"
#include "base/utils/string_utils.h"
#include "core/animation/curve.h"
#include "core/common/resource/resource_manager.h"
#include "core/common/resource/resource_object.h"
#include "frameworks/bridge/common/utils/utils.h"
namespace OHOS::Ace::Napi {
using namespace OHOS::Ace;

View File

@ -12,26 +12,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <cstdint>
#include "interfaces/native/drag_and_drop.h"
#include "interfaces/native/node/event_converter.h"
#include "interfaces/native/node/node_model.h"
#include "native_node.h"
#include "native_type.h"
#include "ndk_data_conversion.h"
#include "pixelmap_native_impl.h"
#include "securec.h"
#include "base/error/error_code.h"
#include "base/log/log_wrapper.h"
#include "base/utils/utils.h"
#include "core/interfaces/arkoala/arkoala_api.h"
#include "frameworks/bridge/common/utils/engine_helper.h"
#include "frameworks/core/common/ace_engine.h"
#include "frameworks/core/common/container.h"
#include "frameworks/core/interfaces/native/node/node_api.h"
#ifdef __cplusplus
extern "C" {
#endif

View File

@ -15,10 +15,7 @@
#include "interfaces/native/event/ui_input_event_impl.h"
#include "base/utils/type_definition.h"
#include "core/event/touch_event.h"
#include "core/event/axis_event.h"
#include "core/interfaces/arkoala/arkoala_api.h"
#include "interfaces/native/node/event_converter.h"
#include "base/error/error_code.h"

View File

@ -16,9 +16,6 @@
#include "native_interface_xcomponent.h"
#include "node/node_model.h"
#include "ui_input_event.h"
#include "native_node.h"
#include "core/interfaces/arkoala/arkoala_api.h"
#include "base/error/error_code.h"
#include "frameworks/core/components/xcomponent/native_interface_xcomponent_impl.h"

View File

@ -14,7 +14,6 @@
*/
#include "node/animate_impl.h"
#include <cstddef>
#include "node/node_model.h"

View File

@ -14,8 +14,6 @@
*/
#include "dialog_model.h"
#include "native_dialog.h"
#include "native_type.h"
#include "node_model.h"
#include "base/error/error_code.h"

View File

@ -13,9 +13,7 @@
* limitations under the License.
*/
#include <cstdint>
#include "native_type.h"
#include "node_extened.h"
#include "base/utils/utils.h"

View File

@ -14,18 +14,13 @@
*/
#include "node/event_converter.h"
#include <cstdint>
#include "native_node.h"
#include "node/gesture_impl.h"
#include "node/native_compatible.h"
#include "node/node_model.h"
#include "securec.h"
#include "base/log/log_wrapper.h"
#include "base/error/error_code.h"
#include "core/event/touch_event.h"
#include "core/interfaces/arkoala/arkoala_api.h"
#include "interfaces/native/drag_and_drop.h"
namespace OHOS::Ace::NodeModel {

View File

@ -13,17 +13,11 @@
* limitations under the License.
*/
#include <cstdint>
#include "native_gesture.h"
#include "native_node.h"
#include "native_type.h"
#include "node_model.h"
#include "gesture_impl.h"
#include "base/utils/utils.h"
#include "core/gestures/gesture_event.h"
#include "frameworks/core/interfaces/arkoala/arkoala_api.h"
#include "interfaces/native/event/ui_input_event_impl.h"
#ifdef __cplusplus

View File

@ -15,16 +15,11 @@
#include "list_option.h"
#include <cstdint>
#include <vector>
#include "native_node.h"
#include "native_type.h"
#include "node_model.h"
#include "base/error/error_code.h"
#include "base/utils/utils.h"
#include "core/interfaces/arkoala/arkoala_api.h"
#ifdef __cplusplus
extern "C" {

View File

@ -15,11 +15,8 @@
#include "native_drawable_descriptor.h"
#include <memory>
#include "interfaces/inner_api/drawable_descriptor/drawable_descriptor.h"
#include "drawable_descriptor.h"
#include "node_extened.h"
extern "C" {

View File

@ -14,12 +14,9 @@
*/
#include "native_interface.h"
#include "native_node.h"
#include "native_animate.h"
#include "node/animate_impl.h"
#include "node/dialog_model.h"
#include "node/gesture_impl.h"
#include "node/native_compatible.h"
#include "node/node_model.h"
#include "node_extened.h"

View File

@ -13,7 +13,6 @@
* limitations under the License.
*/
#include "drawing_text_typography.h"
#include "native_styled_string.h"
#include "node_extened.h"
#include "styled_string.h"

View File

@ -15,20 +15,12 @@
#include "native_node_napi.h"
#include <cstdint>
#include "js_native_api.h"
#include "js_native_api_types.h"
#include "native_type.h"
#include "node/node_extened.h"
#include "node/node_model.h"
#include "base/error/error_code.h"
#include "base/image/pixel_map.h"
#include "base/log/log_wrapper.h"
#include "base/utils/utils.h"
#include "core/components_ng/base/frame_node.h"
#include "core/components_ng/base/ui_node.h"
extern "C" {

View File

@ -13,15 +13,11 @@
* limitations under the License.
*/
#include <cstdint>
#include "native_node.h"
#include "native_type.h"
#include "node/node_model.h"
#include "base/error/error_code.h"
#include "base/utils/utils.h"
#include "core/interfaces/arkoala/arkoala_api.h"
#ifdef __cplusplus
extern "C" {

View File

@ -13,11 +13,8 @@
* limitations under the License.
*/
#include <cstddef>
#include <cstdint>
#include "animate_impl.h"
#include "native_type.h"
#include "node/node_model.h"
#include "base/error/error_code.h"

View File

@ -14,19 +14,11 @@
*/
#include "node_extened.h"
#include <cstdint>
#include <unordered_map>
#include "event_converter.h"
#include "node_model.h"
#include "style_modifier.h"
#include "base/error/error_code.h"
#include "base/log/log_wrapper.h"
#include "base/utils/utils.h"
#include "core/components_ng/base/ui_node.h"
#include "core/components_ng/property/property.h"
#include "core/interfaces/arkoala/arkoala_api.h"
namespace OHOS::Ace::NodeModel {

View File

@ -15,21 +15,14 @@
#include "node_model.h"
#include <cstdint>
#include <set>
#include <unordered_map>
#include "event_converter.h"
#include "interfaces/native/event/ui_input_event_impl.h"
#include "native_node.h"
#include "native_type.h"
#include "node_extened.h"
#include "style_modifier.h"
#include "base/error/error_code.h"
#include "base/log/log_wrapper.h"
#include "base/utils/utils.h"
#include "core/interfaces/arkoala/arkoala_api.h"
namespace OHOS::Ace::NodeModel {
namespace {

View File

@ -13,10 +13,8 @@
* limitations under the License.
*/
#include "native_type.h"
#include "node/node_model.h"
#include "base/utils/utils.h"
#ifdef __cplusplus
extern "C" {

View File

@ -15,7 +15,6 @@
#include "node_transition.h"
#include "native_type.h"
#include "base/utils/utils.h"

View File

@ -13,10 +13,7 @@
* limitations under the License.
*/
#include <algorithm>
#include <cstddef>
#include "native_type.h"
#include "node/node_transition.h"
#include "base/utils/utils.h"

View File

@ -13,14 +13,10 @@
* limitations under the License.
*/
#include <cstdint>
#include <vector>
#include "native_type.h"
#include "node_model.h"
#include "base/error/error_code.h"
#include "core/interfaces/arkoala/arkoala_api.h"
#ifdef __cplusplus
extern "C" {

View File

@ -14,33 +14,12 @@
*/
#include "style_modifier.h"
#include <cstddef>
#include <cstdint>
#include <map>
#include <unordered_map>
#include <regex>
#include <string>
#include "securec.h"
#include "drawable_descriptor.h"
#include "frame_information.h"
#include "native_node.h"
#include "native_type.h"
#include "node_extened.h"
#include "node_model.h"
#include "node_transition.h"
#include "styled_string.h"
#include "waterflow_section_option.h"
#include "list_option.h"
#include "base/error/error_code.h"
#include "base/log/log_wrapper.h"
#include "base/utils/string_utils.h"
#include "base/utils/utils.h"
#include "bridge/common/utils/utils.h"
#include "core/components/common/properties/color.h"
#include "core/components_ng/base/frame_node.h"
#include "core/interfaces/arkoala/arkoala_api.h"
#include "core/interfaces/native/node/node_api.h"
namespace OHOS::Ace::NodeModel {
namespace {

View File

@ -15,12 +15,9 @@
#include "waterflow_section_option.h"
#include <cstdint>
#include <vector>
#include "native_type.h"
#include "base/utils/utils.h"
#ifdef __cplusplus
extern "C" {