refactoring launcher
[platform/core/dotnet/launcher.git] / NativeLauncher / launcher / launcher.h
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef __LAUNCHER_INTERFACE_H__
18 #define __LAUNCHER_INTERFACE_H__
19
20 #include <string>
21 #include <functional>
22
23 namespace tizen {
24 namespace runtime {
25
26 class LauncherInterface
27 {
28   public:
29     virtual int Initialize(bool standalone) = 0;
30     virtual void Dispose() = 0;
31     virtual int RunManagedLauncher(const char* app_id, const char* app_base, const char* tpa_list) = 0;
32     virtual int Launch(const char* app_id, const char* root, const char* path, int argc, char* argv[]) = 0;
33 };
34
35 struct AppInfo
36 {
37   std::string root;
38   std::string path;
39   std::string id;
40   std::string pkg;
41   std::string type;
42 };
43
44 class LaunchpadAdapter
45 {
46   public:
47     virtual void LoaderMain(int argc, char* argv[]) = 0;
48     std::function<void()> OnCreate = nullptr;
49     std::function<void(const AppInfo&, int, char**)> OnLaunch = nullptr;
50     std::function<void(const AppInfo&, int, char**)> OnTerminate = nullptr;
51 };
52
53 extern LaunchpadAdapter& Launchpad;
54
55 }  // namespace runtime
56 }  // namespace tizen
57
58 #endif  // __LAUNCHER_INTERFACE_H__