text: /*
   * Copyright (c) 2020 Huawei Device Co., Ltd.
   * 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.
   */
  
  /**
   * @addtogroup BundleManager
   * @{
   *
   * @brief Provides structures and functions for managing application bundles and obtaining application information.
   *
   * You can use functions provided by this module to install, update, or uninstall an application, obtain
   * {@link AbilityInfo} and {@link BundleInfo} about an application, and obtain the bundle name of an application based
   * on the application's user ID (UID).
   *
   * @since 1.0
   * @version 1.0
   */
  
  /**
   * @file module_info.h
   *
   * @brief Declares structures and functions for managing HAP package information.
   *
   * The HAP package is used to deploy {@link Ability} instances. It is a module package consisting of the code,
   * resources, third-party libraries, and an application configuration file. You can use the function provided in this
   * file to clear HAP information.
   *
   * @since 1.0
   * @version 1.0
   */
  #ifndef OHOS_BUNDLE_MODULE_INFO_H
  #define OHOS_BUNDLE_MODULE_INFO_H
  
  #include <stdbool.h>
  #include "stdint.h"
  
  #ifdef OHOS_APPEXECFWK_BMS_BUNDLEMANAGER
  #define DEVICE_TYPE_SIZE 16
  #endif
  #define METADATA_SIZE 16
  
  /**
   * @brief Defines the metadata information in a {@link ModuleInfo} object.
   */
  typedef struct {
      /** Pointer to the metadata name */
      char *name;
  
      /** Pointer to the metadata value */
      char *value;
  
      /** Extra data. You can customize this field as required. */
      char *extra;
  } MetaData;
  
  /**
   * @brief Defines the HAP information.
   */
  typedef struct {
      /** Pointer to the HAP package name */
      char *moduleName;
  #ifdef OHOS_APPEXECFWK_BMS_BUNDLEMANAGER
  
      /** Pointer to the description of the HAP package */
      char *description;
  
      /** Pointer to the class name of the HAP package */
      char *name;
  
      /** Type of the HAP package, either <b>Entry.hap</b> or <b>Feature.hap</b> */
      char *moduleType;
  
      /** Whether the HAP package is installed while the user is installing the application */
      bool isDeliveryInstall;
  
      /** 
       * Pointer to the types of devices that can run the application. The maximum size of the device type array is
       * {@link DEVICE_TYPE_SIZE}.
       */
      char *deviceType[DEVICE_TYPE_SIZE];
  #endif
  
      /** Pointer to the metadata array whose maximum size is {@link METADATA_SIZE} */
      MetaData *metaData[METADATA_SIZE];
  } ModuleInfo;
  
  #ifdef __cplusplus
  #if __cplusplus
  extern "C" {
  #endif
  #endif // __cplusplus
  /**
   * @brief Clears a {@link ModuleInfo} object.
   *
   * This function clears and releases the memory occupied by the fields of the pointer type included in the specified
   * {@link ModuleInfo} object.
   * @param moduleInfo Indicates the pointer to the {@link ModuleInfo} object to clear.
   *
   * @since 1.0
   * @version 1.0
   */
  void ClearModuleInfo(ModuleInfo *moduleInfo);
  #ifdef __cplusplus
  #if __cplusplus
  }
  #endif
  #endif // __cplusplus
  
  #endif // OHOS_BUNDLE_MODULE_INFO_H
  /** @} */