#define __NI_COMMON_H__
#include <functional>
+#include <vector>
+#include <string>
+#include <cstdint>
+
+#ifndef DWORD
+#define DWORD uint32_t
+#endif
+
+/**
+ * Common flags passed to crossgen()
+*/
+#define NI_FLAGS_APPNI 0x0001
+#define NI_FLAGS_VERBOSE 0x0002
+#define NI_FLAGS_APP_UNDER_RO_AREA 0x0004
+#define NI_FLAGS_INPUT_BUBBLE 0x0010
+#define NI_FLAGS_INPUT_BUBBLE_REF 0x0020
+#define NI_FLAGS_EXTRA_REF 0x0040
+#define NI_FLAGS_NO_PIPELINE 0x0080
+#define NI_FLAGS_MIBC 0x0100
+#define NI_FLAGS_PRINT_CMD 0x0200
+#define NI_FLAGS_SKIP_RO_APP 0x0400
+#define NI_FLAGS_RM_ORIGIN_AFTER_NI 0x0800
+#define NI_FLAGS_SET_PRIORITY 0x1000
typedef std::function<void (std::string)> afterCreate;
+typedef enum {
+ NI_ERROR_NONE = 0,
+ NI_ERROR_INVALID_PARAMETER = -1,
+ NI_ERROR_ALREADY_EXIST = -2,
+ NI_ERROR_NO_SUCH_FILE = -3,
+ NI_ERROR_INVALID_PACKAGE = -4,
+ NI_ERROR_NOT_SUPPORTED = -5,
+ NI_ERROR_CORE_NI_FILE = -6,
+ NI_ERROR_ABNORMAL_PROCESS_TERMINATION = -7,
+ NI_ERROR_UNKNOWN = -9
+} ni_error_e;
+
+typedef struct NIOption{
+ DWORD flags;
+ std::vector<std::string> refFiles;
+ std::vector<std::string> extraRefPath;
+ std::vector<std::string> inputBubbleRefFiles;
+ std::vector<std::string> mibcPath;
+ int priority;
+} NIOption;
+
/**
- * @brief : structure which contains directory info
+ * @brief get NIOption structure for setting
+ * @return NIOption*
*/
-typedef struct NiCommonOption {
- std::string runtimeDir; /**< .NETCore Runtime directory */
- std::string tizenFXDir; /**< TizenFX directory */
- std::string extraDirs; /**< ":" seperated directories which can be set by plugins */
-} NiCommonOption;
+NIOption* getNIOption();
/**
* @brief initialize NICommon
- * @param[in] options to initialize path
- * @return 0 on success, otherwise a negative error value
+ * @return ni_error_e 0 on success, otherwise a negative error value
*/
-int initNICommon(NiCommonOption* option);
+ni_error_e initNICommon();
/**
* @brief finalize NICommon
void finalizeNICommon();
/**
- * @brief create native images (NI file) for Platform DLLs (.NETCore + TizenFX)
+ * @brief create native images for platform DLLs (.NETCore + TizenFX)
+ * @param[in] paths paths to directories which contains extra platform dlls
+ * @param[in] flags additional flags for the image generator
+ * @return ni_error_e
*/
-void createNiPlatform(bool enableR2R);
+ni_error_e createNIPlatform(std::string& extraInputs, NIOption* opt);
+
+/**
+ * @brief create a native image for a single DLL
+ * @param[in] dllPath path to input DLL
+ * @param[in] flags additional flags for the image generator
+ * @return ni_error_e
+ */
+ni_error_e createNIDll(const std::string& dllPath, NIOption* opt);
+
/**
- * @brief create native image for specific dll with file path.
- * @param[i] dllPath file path to generate native image
- * @param[i] enableR2R enable ready-to-run mode
- * @return 0 on success, otherwise a negative error value
+ * @brief create native images for all DLLs under directories
+ * @param[in] rootPaths paths to directories
+ * @param[in] flags additional flags for the image generator
+ * @return ni_error_e
*/
-int createNiDll(const std::string& dllPath, bool enableR2R);
+ni_error_e createNIUnderDirs(const std::string& rootPaths, NIOption* opt);
/**
- * @brief create native images with files under specific directory.
- * @param[i] rootPaths directories whicn contains DLLs
- * @param[i] count number of rootPath
- * @param[i] enableR2R enable ready-to-run mode
+ * @brief create native images for all DLLs in a package
+ * @param[in] pkgId package ID
+ * @param[in] flags additional flags for the image generator
+ * @return ni_error_e
*/
-void createNiUnderDirs(const std::string rootPaths[], int count, bool enableR2R);
+ni_error_e createNIUnderPkgRoot(const std::string& pkgId, NIOption* opt);
/**
- * @brief create native images for specific package. (All DLLs)
- * @param[i] pkgId package ID
- * @param[i] enableR2R enable ready-to-run mode
- * @return 0 on success, otherwise a negative error value
+ * @brief remove platform native images (.NETCore + TizenFX)
*/
-int createNiUnderPkgRoot(const std::string& pkgId, bool enableR2R);
+void removeNIPlatform();
/**
- * @brief create native image for specific dll in the package.
- * @Details All dlls in the package are added for reference when create native image.
- * @param[i] pkgId package ID
- * @param[i] enableR2R enable ready-to-run mode
- * @return 0 on success, otherwise a negative error value
+ * @brief remove native images under directories
+ * @param[in] rootPaths paths to directories
*/
-int createNiDllUnderPkgRoot(const std::string& pkgId, const std::string& dllPath, bool enableR2R);
+void removeNIUnderDirs(const std::string& rootPaths);
/**
- * @brief remove native images (NI file) for Platform DLLs (.NETCore + TizenFX)
+ * @brief remove native images of a package
+ * @param[in] pkgId package ID
+ * @return ni_error_e
*/
-void removeNiPlatform();
+ni_error_e removeNIUnderPkgRoot(const std::string& pkgId);
/**
- * @brief remove native images under specific directory.
- * @param[i] rootPaths directories whicn contains native image
- * @param[i] count number of rootPath
+ * @brief regenerate native images of all installed applications
+ * @param[in] flags additional flags for the image generator
+ * @return ni_error_e
*/
-void removeNiUnderDirs(const std::string rootPaths[], int count);
+ni_error_e regenerateAppNI(NIOption* opt);
/**
- * @brief remove native images for specific package.
- * @param[i] pkgId package ID
- * @return 0 on success, otherwise a negative error value
+ * @brief regenerate native image of TAC for all shared assembly.
+ * @param[in] flags additional flags for the image generator
+ * @return ni_error_e
*/
-int removeNiUnderPkgRoot(const std::string& pkgId);
+ni_error_e regenerateTACNI(NIOption* opt);
/**
- * @brief regenerate native image for all installed application
+ * @brief Sets the priority of the process to the specified values from -20 to 19.(default : 0)
*/
-int regenerateAppNI(bool enableR2R = true);
+void setPriority(NIOption* opt);
#endif /* __NI_COMMON_H__ */