%define tizen_common_feature_media_key_support 0
%define tizen_common_feature_message_port_support 1
%define tizen_common_feature_messaging_support 0
-%define tizen_common_feature_metadata_support 1
+%define tizen_common_feature_metadata_support 1
+%define tizen_common_feature_ml_support 1
%define tizen_common_feature_nbs_support 0
%define tizen_common_feature_nfc_support 0
%define tizen_common_feature_nfc_emulation_support 0
%define tizen_mobile_feature_media_key_support 1
%define tizen_mobile_feature_message_port_support 1
%define tizen_mobile_feature_messaging_support 1
-%define tizen_mobile_feature_metadata_support 1
+%define tizen_mobile_feature_metadata_support 1
+%define tizen_mobile_feature_ml_support 1
%define tizen_mobile_feature_nfc_support 0
%define tizen_mobile_feature_nfc_emulation_support 0
%define tizen_mobile_feature_notification_support 1
%define tizen_wearable_feature_media_key_support 1
%define tizen_wearable_feature_message_port_support 1
%define tizen_wearable_feature_messaging_support 0
-%define tizen_wearable_feature_metadata_support 1
+%define tizen_wearable_feature_metadata_support 1
+%define tizen_wearable_feature_ml_support 1
%define tizen_wearable_feature_nfc_support 1
%define tizen_wearable_feature_nfc_emulation_support 0
%define tizen_wearable_feature_notification_support 1
%define tizen_tv_feature_media_key_support 0
%define tizen_tv_feature_message_port_support 1
%define tizen_tv_feature_messaging_support 0
-%define tizen_tv_feature_metadata_support 1
+%define tizen_tv_feature_metadata_support 1
+%define tizen_tv_feature_ml_support 1
%define tizen_tv_feature_nbs_support 0
%define tizen_tv_feature_nfc_support 0
%define tizen_tv_feature_nfc_emulation_support 0
%define tizen_feature_media_key_support %{expand:%tizen_%{?profile}_feature_media_key_support}
%define tizen_feature_message_port_support %{expand:%tizen_%{?profile}_feature_message_port_support}
%define tizen_feature_messaging_support %{expand:%tizen_%{?profile}_feature_messaging_support}
+%define tizen_feature_ml_support %{expand:%tizen_%{?profile}_feature_ml_support}
%define tizen_feature_nfc_emulation_support %{expand:%tizen_%{?profile}_feature_nfc_emulation_support}
%define tizen_feature_nfc_support %{expand:%tizen_%{?profile}_feature_nfc_support}
%define tizen_feature_notification_support %{expand:%tizen_%{?profile}_feature_notification_support}
BuildRequires: pkgconfig(db-util)
%endif
+%if "%{?tizen_feature_ml_support}" == "1" || "%{?unified_build}" == "1"
+BuildRequires: pkgconfig(nnstreamer)
+BuildRequires: pkgconfig(capi-nnstreamer)
+%endif
+
%if "%{?tizen_feature_badge_support}" == "1" || "%{?unified_build}" == "1"
BuildRequires: pkgconfig(badge)
%endif
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_message_port_support=%{?tizen_mobile_feature_message_port_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_messaging_support=%{?tizen_mobile_feature_messaging_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_metadata_support=%{?tizen_mobile_feature_metadata_support}"
+GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_ml_support=%{?tizen_mobile_feature_ml_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nbs_support=%{?tizen_mobile_feature_nbs_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nfc_emulation_support=%{?tizen_mobile_feature_nfc_emulation_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nfc_support=%{?tizen_mobile_feature_nfc_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_message_port_support=%{?tizen_mobile_feature_message_port_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_messaging_support=%{?tizen_mobile_feature_messaging_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_metadata_support=%{?tizen_mobile_feature_metadata_support}"
+GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_ml_support=%{?tizen_mobile_feature_ml_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nbs_support=%{?tizen_mobile_feature_nbs_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nfc_emulation_support=%{?tizen_mobile_feature_nfc_emulation_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nfc_support=%{?tizen_mobile_feature_nfc_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_message_port_support=%{?tizen_wearable_feature_message_port_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_messaging_support=%{?tizen_wearable_feature_messaging_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_metadata_support=%{?tizen_wearable_feature_metadata_support}"
+GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_ml_support=%{?tizen_wearable_feature_ml_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nbs_support=%{?tizen_wearable_feature_nbs_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nfc_emulation_support=%{?tizen_wearable_feature_nfc_emulation_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nfc_support=%{?tizen_wearable_feature_nfc_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_message_port_support=%{?tizen_wearable_feature_message_port_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_messaging_support=%{?tizen_wearable_feature_messaging_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_metadata_support=%{?tizen_wearable_feature_metadata_support}"
+GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_ml_support=%{?tizen_wearable_feature_ml_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nbs_support=%{?tizen_wearable_feature_nbs_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nfc_emulation_support=%{?tizen_wearable_feature_nfc_emulation_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nfc_support=%{?tizen_wearable_feature_nfc_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_message_port_support=%{?tizen_tv_feature_message_port_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_messaging_support=%{?tizen_tv_feature_messaging_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_metadata_support=%{?tizen_tv_feature_metadata_support}"
+GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_ml_support=%{?tizen_tv_feature_ml_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nbs_support=%{?tizen_tv_feature_nbs_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nfc_emulation_support=%{?tizen_tv_feature_nfc_emulation_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nfc_support=%{?tizen_tv_feature_nfc_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_message_port_support=%{?tizen_common_feature_message_port_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_messaging_support=%{?tizen_common_feature_messaging_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_metadata_support=%{?tizen_common_feature_metadata_support}"
+GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_ml_support=%{?tizen_common_feature_ml_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nbs_support=%{?tizen_common_feature_nbs_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nfc_emulation_support=%{?tizen_common_feature_nfc_emulation_support}"
GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_nfc_support=%{?tizen_common_feature_nfc_support}"
--- /dev/null
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var privUtils_ = xwalk.utils;
+var validator_ = privUtils_.validator;
+var types_ = validator_.Types;
+
+// TensorRawData
+
+var TensorRawData = function() {
+ Object.defineProperties(this, {
+ data: {
+ enumerable: true,
+ get: function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+ }
+ },
+ size: {
+ enumerable: true,
+ get: function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+ }
+ },
+ shape: {
+ enumerable: true,
+ get: function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+ }
+ }
+ });
+};
+
+var TensorType = {
+ INT8: 'INT8',
+ UINT8: 'UINT8',
+ INT16: 'INT16',
+ UINT16: 'UINT16',
+ FLOAT32: 'FLOAT32',
+ INT32: 'INT32',
+ UINT32: 'UINT32',
+ FLOAT64: 'FLOAT64',
+ INT64: 'INT64',
+ UINT64: 'UINT64',
+ UNKNOWN: 'UNKNOWN'
+};
+
+// TensorsData
+
+var TensorsData = function() {
+ Object.defineProperties(this, {
+ count: {
+ enumerable: true,
+ get: function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+ }
+ },
+ tensorsInfo : {
+ enumerable: true,
+ get: function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+ }
+ }
+ });
+};
+
+TensorsData.prototype.getTensorRawData = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
+
+TensorsData.prototype.setTensorData = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
+
+TensorsData.prototype.dispose = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
+
+// TensorsInfo
+
+var TensorsInfo = function() {
+ validator_.isConstructorCall(this, TensorsInfo);
+ Object.defineProperties(this, {
+ count: {
+ enumerable: true,
+ get: function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+ }
+ }
+ });
+};
+
+TensorsInfo.prototype.addTensorInfo = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
+
+TensorsInfo.prototype.clone = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
+
+TensorsInfo.prototype.equals = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
+
+TensorsInfo.prototype.getDimensions = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
+
+TensorsInfo.prototype.setDimensions = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
+
+TensorsInfo.prototype.getTensorName = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
+
+TensorsInfo.prototype.setTensorName = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
+
+TensorsInfo.prototype.getTensorType = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
+
+TensorsInfo.prototype.setTensorType = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
+
+TensorsInfo.prototype.getTensorSize = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
+
+TensorsInfo.prototype.getTensorsData = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
+
+TensorsInfo.prototype.dispose = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
--- /dev/null
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var MachineLearningManager = function() {};
+
+MachineLearningManager.prototype.single = new MachineLearningSingle();
+
+MachineLearningManager.prototype.pipeline = new MachineLearningPipeline();
+
+MachineLearningManager.prototype.checkNNFWAvailability = function() {
+ throw new WebAPIException(WebAPIException.ABORT_ERR, 'Not implemented');
+};
+
+exports = new MachineLearningManager();
+exports.TensorsInfo = TensorsInfo;
--- /dev/null
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var MachineLearningPipeline = function() {};
+
+// ML Pipeline API
--- /dev/null
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var MachineLearningSingle = function() {};
+
+// ML Single API
--- /dev/null
+{
+ 'includes':[
+ '../common/common.gypi',
+ ],
+ 'targets': [
+ {
+ 'target_name': 'tizen_ml',
+ 'type': 'loadable_module',
+ 'dependencies': [
+ '../common/common.gyp:tizen_common',
+ ],
+ 'sources': [
+ 'ml_api.js',
+ 'ml_extension.cc',
+ 'ml_extension.h',
+ 'ml_instance.cc',
+ 'ml_instance.h',
+ 'ml_utils.cc',
+ 'ml_utils.h',
+ ],
+ 'conditions': [
+ ['tizen == 1', {
+ 'variables': {
+ 'packages': [
+ 'nnstreamer',
+ 'capi-nnstreamer',
+ ]
+ },
+ }],
+ ],
+ },
+ ],
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//= require('ml_common.js');
+//= require('ml_single.js');
+//= require('ml_pipeline.js');
+//= require('ml_manager.js');
--- /dev/null
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "ml_extension.h"
+#include "ml_instance.h"
+
+#include "common/logger.h"
+
+namespace {}
+
+// This will be generated from ml_api.js.
+extern const char kSource_ml_api[];
+
+common::Extension* CreateExtension() {
+ ScopeLogger();
+ return new MlExtension;
+}
+
+MlExtension::MlExtension() {
+ ScopeLogger();
+ SetExtensionName("tizen.ml");
+ SetJavaScriptAPI(kSource_ml_api);
+}
+
+MlExtension::~MlExtension() {
+}
+
+common::Instance* MlExtension::CreateInstance() {
+ ScopeLogger();
+ return new extension::ml::MlInstance();
+}
--- /dev/null
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ML_EXTENSION_H_
+#define ML_EXTENSION_H_
+
+#include "common/extension.h"
+
+class MlExtension : public common::Extension {
+ public:
+ MlExtension();
+ virtual ~MlExtension();
+
+ private:
+ virtual common::Instance* CreateInstance();
+};
+
+#endif // ML_EXTENSION_H_
--- /dev/null
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "ml_instance.h"
+
+#include "common/logger.h"
+#include "common/picojson.h"
+
+namespace extension {
+namespace ml {
+
+using namespace common;
+
+MlInstance::MlInstance() {
+ ScopeLogger();
+ using namespace std::placeholders;
+
+#define REGISTER_METHOD(M) RegisterSyncHandler(#M, std::bind(&MlInstance::M, this, _1, _2))
+
+// Common ML API begin
+
+// Common ML API end
+
+// Single API begin
+
+// Single API end
+
+// Pipeline API begin
+
+// Pipeline API end
+
+#undef REGISTER_METHOD
+}
+
+MlInstance::~MlInstance() {
+ ScopeLogger();
+}
+
+// Common ML API begin
+
+// Common ML API end
+
+// Single API begin
+
+// Single API end
+
+// Pipeline API begin
+
+// Pipeline API end
+
+} // namespace ml
+} // namespace extension
--- /dev/null
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ML_ML_INSTANCE_H_
+#define ML_ML_INSTANCE_H_
+
+#include "common/extension.h"
+
+#include "nnstreamer/nnstreamer-single.h"
+#include "nnstreamer/nnstreamer.h"
+
+namespace extension {
+namespace ml {
+
+class MlInstance : public common::ParsedInstance {
+ public:
+ MlInstance();
+ virtual ~MlInstance();
+
+ private:
+ // Common ML API begin
+
+ // Common ML API end
+
+ // Single API begin
+
+ // Single API end
+
+ // Pipeline API begin
+
+ // Pipeline API end
+};
+
+} // namespace ml
+} // namespace extension
+
+#endif // ML_ML_INSTANCE_H_
--- /dev/null
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <memory>
+
+#include "ml_utils.h"
+
+#include "common/logger.h"
+
+namespace extension {
+namespace ml {
+namespace util {
+
+using namespace common;
+
+} // util
+} // ml
+} // extension
--- /dev/null
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ML_ML_UTILS_H_
+#define ML_ML_UTILS_H_
+
+#include "common/picojson.h"
+#include "common/platform_result.h"
+
+namespace extension {
+namespace ml {
+namespace util {} // util
+} // ml
+} // extension
+
+#endif // ML_ML_UTILS_H_
'common/common.gyp:*',
'tizen/tizen.gyp:*',
'utils/utils.gyp:*',
+ 'ml/ml.gyp:*',
],
'conditions': [
[