text: /** \file algo/swstate/auto_generated/access/meter_access.h
   *
   * sw state functions declarations
   *
   * DO NOT EDIT THIS FILE!
   * This file is auto-generated.
   * Edits to this file will be lost when it is regenerated.
   */
  /*
   * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
   * 
   * Copyright 2007-2020 Broadcom Inc. All rights reserved.
   */
  
  #ifndef __METER_ACCESS_H__
  #define __METER_ACCESS_H__
  
  #include <soc/dnxc/swstate/dnxc_sw_state_h_includes.h>
  #include <bcm_int/dnx/algo/swstate/auto_generated/types/meter_types.h>
  #include <bcm_int/dnx/algo/template_mngr/template_mngr.h>
  #include <bcm_int/dnx/algo/template_mngr/template_mngr_internal.h>
  #include <bcm_int/dnx/policer/policer_mgmt.h>
  #include <include/bcm/policer.h>
  /*
   * TYPEDEFs
   */
  
  /**
   * implemented by: dnx_meter_db_is_init
   */
  typedef int (*dnx_meter_db_is_init_cb)(
      int unit, uint8 *is_init);
  
  /**
   * implemented by: dnx_meter_db_init
   */
  typedef int (*dnx_meter_db_init_cb)(
      int unit);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_set
   */
  typedef int (*dnx_meter_db_profile_limits_info_set_cb)(
      int unit, CONST dnx_policer_profile_limits_info_t *profile_limits_info);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_get
   */
  typedef int (*dnx_meter_db_profile_limits_info_get_cb)(
      int unit, dnx_policer_profile_limits_info_t *profile_limits_info);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_max_rate_set
   */
  typedef int (*dnx_meter_db_profile_limits_info_max_rate_set_cb)(
      int unit, uint32 max_rate);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_max_rate_get
   */
  typedef int (*dnx_meter_db_profile_limits_info_max_rate_get_cb)(
      int unit, uint32 *max_rate);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_max_burst_normal_mode_set
   */
  typedef int (*dnx_meter_db_profile_limits_info_max_burst_normal_mode_set_cb)(
      int unit, uint32 max_burst_normal_mode);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_max_burst_normal_mode_get
   */
  typedef int (*dnx_meter_db_profile_limits_info_max_burst_normal_mode_get_cb)(
      int unit, uint32 *max_burst_normal_mode);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_max_burst_large_mode_set
   */
  typedef int (*dnx_meter_db_profile_limits_info_max_burst_large_mode_set_cb)(
      int unit, uint32 max_burst_large_mode);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_max_burst_large_mode_get
   */
  typedef int (*dnx_meter_db_profile_limits_info_max_burst_large_mode_get_cb)(
      int unit, uint32 *max_burst_large_mode);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_min_rate_set
   */
  typedef int (*dnx_meter_db_profile_limits_info_min_rate_set_cb)(
      int unit, uint32 min_rate);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_min_rate_get
   */
  typedef int (*dnx_meter_db_profile_limits_info_min_rate_get_cb)(
      int unit, uint32 *min_rate);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_min_burst_set
   */
  typedef int (*dnx_meter_db_profile_limits_info_min_burst_set_cb)(
      int unit, uint32 min_burst);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_min_burst_get
   */
  typedef int (*dnx_meter_db_profile_limits_info_min_burst_get_cb)(
      int unit, uint32 *min_burst);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_max_cbs_mant_set
   */
  typedef int (*dnx_meter_db_profile_limits_info_max_cbs_mant_set_cb)(
      int unit, uint32 max_cbs_mant);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_max_cbs_mant_get
   */
  typedef int (*dnx_meter_db_profile_limits_info_max_cbs_mant_get_cb)(
      int unit, uint32 *max_cbs_mant);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_max_cbs_exp_set
   */
  typedef int (*dnx_meter_db_profile_limits_info_max_cbs_exp_set_cb)(
      int unit, uint32 max_cbs_exp);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_max_cbs_exp_get
   */
  typedef int (*dnx_meter_db_profile_limits_info_max_cbs_exp_get_cb)(
      int unit, uint32 *max_cbs_exp);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_max_ir_mant_set
   */
  typedef int (*dnx_meter_db_profile_limits_info_max_ir_mant_set_cb)(
      int unit, uint32 max_ir_mant);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_max_ir_mant_get
   */
  typedef int (*dnx_meter_db_profile_limits_info_max_ir_mant_get_cb)(
      int unit, uint32 *max_ir_mant);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_max_ir_exp_set
   */
  typedef int (*dnx_meter_db_profile_limits_info_max_ir_exp_set_cb)(
      int unit, uint32 max_ir_exp);
  
  /**
   * implemented by: dnx_meter_db_profile_limits_info_max_ir_exp_get
   */
  typedef int (*dnx_meter_db_profile_limits_info_max_ir_exp_get_cb)(
      int unit, uint32 *max_ir_exp);
  
  /**
   * implemented by: dnx_meter_db_global_meter_enabled_set
   */
  typedef int (*dnx_meter_db_global_meter_enabled_set_cb)(
      int unit, uint32 global_meter_enabled_idx_0, int global_meter_enabled);
  
  /**
   * implemented by: dnx_meter_db_global_meter_enabled_get
   */
  typedef int (*dnx_meter_db_global_meter_enabled_get_cb)(
      int unit, uint32 global_meter_enabled_idx_0, int *global_meter_enabled);
  
  /**
   * implemented by: dnx_meter_db_global_meter_enabled_alloc
   */
  typedef int (*dnx_meter_db_global_meter_enabled_alloc_cb)(
      int unit, uint32 nof_instances_to_alloc_0);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_alloc
   */
  typedef int (*dnx_meter_db_generic_meter_info_alloc_cb)(
      int unit, uint32 nof_instances_to_alloc_0);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_alloc
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_alloc_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 nof_instances_to_alloc_1);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_enable_set
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_enable_set_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 enable);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_enable_get
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_enable_get_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 *enable);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_created_set
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_created_set_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 created);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_created_get
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_created_get_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 *created);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_expansion_enable_set
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_expansion_enable_set_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 expansion_enable);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_expansion_enable_get
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_expansion_enable_get_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 *expansion_enable);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_expansion_is_per_tc_set
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_expansion_is_per_tc_set_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 expansion_is_per_tc);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_expansion_is_per_tc_get
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_expansion_is_per_tc_get_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 *expansion_is_per_tc);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_is_single_bucket_set
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_is_single_bucket_set_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 is_single_bucket);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_is_single_bucket_get
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_is_single_bucket_get_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 *is_single_bucket);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_use_single_bucket_bank_set
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_use_single_bucket_bank_set_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, int use_single_bucket_bank);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_use_single_bucket_bank_get
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_use_single_bucket_bank_get_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, int *use_single_bucket_bank);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_nof_generic_banks_set
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_nof_generic_banks_set_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 nof_generic_banks);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_nof_generic_banks_get
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_nof_generic_banks_get_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 *nof_generic_banks);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_banks_arr_bank_id_set
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_banks_arr_bank_id_set_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 banks_arr_idx_0, int bank_id);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_banks_arr_bank_id_get
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_banks_arr_bank_id_get_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 banks_arr_idx_0, int *bank_id);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_banks_arr_base_meter_index_set
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_banks_arr_base_meter_index_set_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 banks_arr_idx_0, int base_meter_index);
  
  /**
   * implemented by: dnx_meter_db_generic_meter_info_db_info_banks_arr_base_meter_index_get
   */
  typedef int (*dnx_meter_db_generic_meter_info_db_info_banks_arr_base_meter_index_get_cb)(
      int unit, uint32 generic_meter_info_idx_0, uint32 db_info_idx_0, uint32 db_info_idx_1, uint32 banks_arr_idx_0, int *base_meter_index);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db0_set
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db0_set_cb)(
      int unit, uint32 policer_ingress_db0_idx_0, dnx_algo_template_t policer_ingress_db0);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db0_get
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db0_get_cb)(
      int unit, uint32 policer_ingress_db0_idx_0, dnx_algo_template_t *policer_ingress_db0);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db0_alloc
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db0_alloc_cb)(
      int unit);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db0_create
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db0_create_cb)(
      int unit, uint32 policer_ingress_db0_idx_0, dnx_algo_template_create_data_t * data, void *extra_arguments);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db0_exchange
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db0_exchange_cb)(
      int unit, uint32 policer_ingress_db0_idx_0, uint32 flags, const dnx_meter_profile_info_t *profile_data, int old_profile, const void *extra_arguments, int *new_profile, uint8 *first_reference, uint8 *last_reference);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db0_replace_data
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db0_replace_data_cb)(
      int unit, uint32 policer_ingress_db0_idx_0, int profile,  const dnx_meter_profile_info_t *new_profile_data);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db0_profile_data_get
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db0_profile_data_get_cb)(
      int unit, uint32 policer_ingress_db0_idx_0, int profile, int *ref_count, dnx_meter_profile_info_t *profile_data);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db0_clear
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db0_clear_cb)(
      int unit, uint32 policer_ingress_db0_idx_0);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db1_set
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db1_set_cb)(
      int unit, uint32 policer_ingress_db1_idx_0, dnx_algo_template_t policer_ingress_db1);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db1_get
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db1_get_cb)(
      int unit, uint32 policer_ingress_db1_idx_0, dnx_algo_template_t *policer_ingress_db1);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db1_alloc
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db1_alloc_cb)(
      int unit);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db1_create
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db1_create_cb)(
      int unit, uint32 policer_ingress_db1_idx_0, dnx_algo_template_create_data_t * data, void *extra_arguments);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db1_exchange
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db1_exchange_cb)(
      int unit, uint32 policer_ingress_db1_idx_0, uint32 flags, const dnx_meter_profile_info_t *profile_data, int old_profile, const void *extra_arguments, int *new_profile, uint8 *first_reference, uint8 *last_reference);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db1_replace_data
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db1_replace_data_cb)(
      int unit, uint32 policer_ingress_db1_idx_0, int profile,  const dnx_meter_profile_info_t *new_profile_data);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db1_profile_data_get
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db1_profile_data_get_cb)(
      int unit, uint32 policer_ingress_db1_idx_0, int profile, int *ref_count, dnx_meter_profile_info_t *profile_data);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db1_clear
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db1_clear_cb)(
      int unit, uint32 policer_ingress_db1_idx_0);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db2_set
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db2_set_cb)(
      int unit, uint32 policer_ingress_db2_idx_0, dnx_algo_template_t policer_ingress_db2);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db2_get
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db2_get_cb)(
      int unit, uint32 policer_ingress_db2_idx_0, dnx_algo_template_t *policer_ingress_db2);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db2_alloc
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db2_alloc_cb)(
      int unit);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db2_create
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db2_create_cb)(
      int unit, uint32 policer_ingress_db2_idx_0, dnx_algo_template_create_data_t * data, void *extra_arguments);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db2_exchange
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db2_exchange_cb)(
      int unit, uint32 policer_ingress_db2_idx_0, uint32 flags, const dnx_meter_profile_info_t *profile_data, int old_profile, const void *extra_arguments, int *new_profile, uint8 *first_reference, uint8 *last_reference);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db2_replace_data
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db2_replace_data_cb)(
      int unit, uint32 policer_ingress_db2_idx_0, int profile,  const dnx_meter_profile_info_t *new_profile_data);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db2_profile_data_get
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db2_profile_data_get_cb)(
      int unit, uint32 policer_ingress_db2_idx_0, int profile, int *ref_count, dnx_meter_profile_info_t *profile_data);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_ingress_db2_clear
   */
  typedef int (*dnx_meter_db_policer_templates_policer_ingress_db2_clear_cb)(
      int unit, uint32 policer_ingress_db2_idx_0);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db0_set
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db0_set_cb)(
      int unit, uint32 policer_egress_db0_idx_0, dnx_algo_template_t policer_egress_db0);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db0_get
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db0_get_cb)(
      int unit, uint32 policer_egress_db0_idx_0, dnx_algo_template_t *policer_egress_db0);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db0_alloc
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db0_alloc_cb)(
      int unit);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db0_create
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db0_create_cb)(
      int unit, uint32 policer_egress_db0_idx_0, dnx_algo_template_create_data_t * data, void *extra_arguments);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db0_exchange
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db0_exchange_cb)(
      int unit, uint32 policer_egress_db0_idx_0, uint32 flags, const dnx_meter_profile_info_t *profile_data, int old_profile, const void *extra_arguments, int *new_profile, uint8 *first_reference, uint8 *last_reference);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db0_replace_data
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db0_replace_data_cb)(
      int unit, uint32 policer_egress_db0_idx_0, int profile,  const dnx_meter_profile_info_t *new_profile_data);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db0_profile_data_get
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db0_profile_data_get_cb)(
      int unit, uint32 policer_egress_db0_idx_0, int profile, int *ref_count, dnx_meter_profile_info_t *profile_data);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db0_clear
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db0_clear_cb)(
      int unit, uint32 policer_egress_db0_idx_0);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db1_set
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db1_set_cb)(
      int unit, uint32 policer_egress_db1_idx_0, dnx_algo_template_t policer_egress_db1);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db1_get
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db1_get_cb)(
      int unit, uint32 policer_egress_db1_idx_0, dnx_algo_template_t *policer_egress_db1);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db1_alloc
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db1_alloc_cb)(
      int unit);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db1_create
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db1_create_cb)(
      int unit, uint32 policer_egress_db1_idx_0, dnx_algo_template_create_data_t * data, void *extra_arguments);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db1_exchange
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db1_exchange_cb)(
      int unit, uint32 policer_egress_db1_idx_0, uint32 flags, const dnx_meter_profile_info_t *profile_data, int old_profile, const void *extra_arguments, int *new_profile, uint8 *first_reference, uint8 *last_reference);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db1_replace_data
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db1_replace_data_cb)(
      int unit, uint32 policer_egress_db1_idx_0, int profile,  const dnx_meter_profile_info_t *new_profile_data);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db1_profile_data_get
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db1_profile_data_get_cb)(
      int unit, uint32 policer_egress_db1_idx_0, int profile, int *ref_count, dnx_meter_profile_info_t *profile_data);
  
  /**
   * implemented by: dnx_meter_db_policer_templates_policer_egress_db1_clear
   */
  typedef int (*dnx_meter_db_policer_templates_policer_egress_db1_clear_cb)(
      int unit, uint32 policer_egress_db1_idx_0);
  
  /*
   * STRUCTs
   */
  
  /**
   * This structure holds the access functions for the variable max_rate
   */
  typedef struct {
      dnx_meter_db_profile_limits_info_max_rate_set_cb set;
      dnx_meter_db_profile_limits_info_max_rate_get_cb get;
  } dnx_meter_db_profile_limits_info_max_rate_cbs;
  
  /**
   * This structure holds the access functions for the variable max_burst_normal_mode
   */
  typedef struct {
      dnx_meter_db_profile_limits_info_max_burst_normal_mode_set_cb set;
      dnx_meter_db_profile_limits_info_max_burst_normal_mode_get_cb get;
  } dnx_meter_db_profile_limits_info_max_burst_normal_mode_cbs;
  
  /**
   * This structure holds the access functions for the variable max_burst_large_mode
   */
  typedef struct {
      dnx_meter_db_profile_limits_info_max_burst_large_mode_set_cb set;
      dnx_meter_db_profile_limits_info_max_burst_large_mode_get_cb get;
  } dnx_meter_db_profile_limits_info_max_burst_large_mode_cbs;
  
  /**
   * This structure holds the access functions for the variable min_rate
   */
  typedef struct {
      dnx_meter_db_profile_limits_info_min_rate_set_cb set;
      dnx_meter_db_profile_limits_info_min_rate_get_cb get;
  } dnx_meter_db_profile_limits_info_min_rate_cbs;
  
  /**
   * This structure holds the access functions for the variable min_burst
   */
  typedef struct {
      dnx_meter_db_profile_limits_info_min_burst_set_cb set;
      dnx_meter_db_profile_limits_info_min_burst_get_cb get;
  } dnx_meter_db_profile_limits_info_min_burst_cbs;
  
  /**
   * This structure holds the access functions for the variable max_cbs_mant
   */
  typedef struct {
      dnx_meter_db_profile_limits_info_max_cbs_mant_set_cb set;
      dnx_meter_db_profile_limits_info_max_cbs_mant_get_cb get;
  } dnx_meter_db_profile_limits_info_max_cbs_mant_cbs;
  
  /**
   * This structure holds the access functions for the variable max_cbs_exp
   */
  typedef struct {
      dnx_meter_db_profile_limits_info_max_cbs_exp_set_cb set;
      dnx_meter_db_profile_limits_info_max_cbs_exp_get_cb get;
  } dnx_meter_db_profile_limits_info_max_cbs_exp_cbs;
  
  /**
   * This structure holds the access functions for the variable max_ir_mant
   */
  typedef struct {
      dnx_meter_db_profile_limits_info_max_ir_mant_set_cb set;
      dnx_meter_db_profile_limits_info_max_ir_mant_get_cb get;
  } dnx_meter_db_profile_limits_info_max_ir_mant_cbs;
  
  /**
   * This structure holds the access functions for the variable max_ir_exp
   */
  typedef struct {
      dnx_meter_db_profile_limits_info_max_ir_exp_set_cb set;
      dnx_meter_db_profile_limits_info_max_ir_exp_get_cb get;
  } dnx_meter_db_profile_limits_info_max_ir_exp_cbs;
  
  /**
   * This structure holds the access functions for the variable dnx_policer_profile_limits_info_t
   */
  typedef struct {
      dnx_meter_db_profile_limits_info_set_cb set;
      dnx_meter_db_profile_limits_info_get_cb get;
      /**
       * Access struct for max_rate
       */
      dnx_meter_db_profile_limits_info_max_rate_cbs max_rate;
      /**
       * Access struct for max_burst_normal_mode
       */
      dnx_meter_db_profile_limits_info_max_burst_normal_mode_cbs max_burst_normal_mode;
      /**
       * Access struct for max_burst_large_mode
       */
      dnx_meter_db_profile_limits_info_max_burst_large_mode_cbs max_burst_large_mode;
      /**
       * Access struct for min_rate
       */
      dnx_meter_db_profile_limits_info_min_rate_cbs min_rate;
      /**
       * Access struct for min_burst
       */
      dnx_meter_db_profile_limits_info_min_burst_cbs min_burst;
      /**
       * Access struct for max_cbs_mant
       */
      dnx_meter_db_profile_limits_info_max_cbs_mant_cbs max_cbs_mant;
      /**
       * Access struct for max_cbs_exp
       */
      dnx_meter_db_profile_limits_info_max_cbs_exp_cbs max_cbs_exp;
      /**
       * Access struct for max_ir_mant
       */
      dnx_meter_db_profile_limits_info_max_ir_mant_cbs max_ir_mant;
      /**
       * Access struct for max_ir_exp
       */
      dnx_meter_db_profile_limits_info_max_ir_exp_cbs max_ir_exp;
  } dnx_meter_db_profile_limits_info_cbs;
  
  /**
   * This structure holds the access functions for the variable global_meter_enabled
   */
  typedef struct {
      dnx_meter_db_global_meter_enabled_set_cb set;
      dnx_meter_db_global_meter_enabled_get_cb get;
      dnx_meter_db_global_meter_enabled_alloc_cb alloc;
  } dnx_meter_db_global_meter_enabled_cbs;
  
  /**
   * This structure holds the access functions for the variable enable
   */
  typedef struct {
      dnx_meter_db_generic_meter_info_db_info_enable_set_cb set;
      dnx_meter_db_generic_meter_info_db_info_enable_get_cb get;
  } dnx_meter_db_generic_meter_info_db_info_enable_cbs;
  
  /**
   * This structure holds the access functions for the variable created
   */
  typedef struct {
      dnx_meter_db_generic_meter_info_db_info_created_set_cb set;
      dnx_meter_db_generic_meter_info_db_info_created_get_cb get;
  } dnx_meter_db_generic_meter_info_db_info_created_cbs;
  
  /**
   * This structure holds the access functions for the variable expansion_enable
   */
  typedef struct {
      dnx_meter_db_generic_meter_info_db_info_expansion_enable_set_cb set;
      dnx_meter_db_generic_meter_info_db_info_expansion_enable_get_cb get;
  } dnx_meter_db_generic_meter_info_db_info_expansion_enable_cbs;
  
  /**
   * This structure holds the access functions for the variable expansion_is_per_tc
   */
  typedef struct {
      dnx_meter_db_generic_meter_info_db_info_expansion_is_per_tc_set_cb set;
      dnx_meter_db_generic_meter_info_db_info_expansion_is_per_tc_get_cb get;
  } dnx_meter_db_generic_meter_info_db_info_expansion_is_per_tc_cbs;
  
  /**
   * This structure holds the access functions for the variable is_single_bucket
   */
  typedef struct {
      dnx_meter_db_generic_meter_info_db_info_is_single_bucket_set_cb set;
      dnx_meter_db_generic_meter_info_db_info_is_single_bucket_get_cb get;
  } dnx_meter_db_generic_meter_info_db_info_is_single_bucket_cbs;
  
  /**
   * This structure holds the access functions for the variable use_single_bucket_bank
   */
  typedef struct {
      dnx_meter_db_generic_meter_info_db_info_use_single_bucket_bank_set_cb set;
      dnx_meter_db_generic_meter_info_db_info_use_single_bucket_bank_get_cb get;
  } dnx_meter_db_generic_meter_info_db_info_use_single_bucket_bank_cbs;
  
  /**
   * This structure holds the access functions for the variable nof_generic_banks
   */
  typedef struct {
      dnx_meter_db_generic_meter_info_db_info_nof_generic_banks_set_cb set;
      dnx_meter_db_generic_meter_info_db_info_nof_generic_banks_get_cb get;
  } dnx_meter_db_generic_meter_info_db_info_nof_generic_banks_cbs;
  
  /**
   * This structure holds the access functions for the variable bank_id
   */
  typedef struct {
      dnx_meter_db_generic_meter_info_db_info_banks_arr_bank_id_set_cb set;
      dnx_meter_db_generic_meter_info_db_info_banks_arr_bank_id_get_cb get;
  } dnx_meter_db_generic_meter_info_db_info_banks_arr_bank_id_cbs;
  
  /**
   * This structure holds the access functions for the variable base_meter_index
   */
  typedef struct {
      dnx_meter_db_generic_meter_info_db_info_banks_arr_base_meter_index_set_cb set;
      dnx_meter_db_generic_meter_info_db_info_banks_arr_base_meter_index_get_cb get;
  } dnx_meter_db_generic_meter_info_db_info_banks_arr_base_meter_index_cbs;
  
  /**
   * This structure holds the access functions for the variable dnx_policer_bank_info_t
   */
  typedef struct {
      /**
       * Access struct for bank_id
       */
      dnx_meter_db_generic_meter_info_db_info_banks_arr_bank_id_cbs bank_id;
      /**
       * Access struct for base_meter_index
       */
      dnx_meter_db_generic_meter_info_db_info_banks_arr_base_meter_index_cbs base_meter_index;
  } dnx_meter_db_generic_meter_info_db_info_banks_arr_cbs;
  
  /**
   * This structure holds the access functions for the variable dnx_policer_database_info_t
   */
  typedef struct {
      dnx_meter_db_generic_meter_info_db_info_alloc_cb alloc;
      /**
       * Access struct for enable
       */
      dnx_meter_db_generic_meter_info_db_info_enable_cbs enable;
      /**
       * Access struct for created
       */
      dnx_meter_db_generic_meter_info_db_info_created_cbs created;
      /**
       * Access struct for expansion_enable
       */
      dnx_meter_db_generic_meter_info_db_info_expansion_enable_cbs expansion_enable;
      /**
       * Access struct for expansion_is_per_tc
       */
      dnx_meter_db_generic_meter_info_db_info_expansion_is_per_tc_cbs expansion_is_per_tc;
      /**
       * Access struct for is_single_bucket
       */
      dnx_meter_db_generic_meter_info_db_info_is_single_bucket_cbs is_single_bucket;
      /**
       * Access struct for use_single_bucket_bank
       */
      dnx_meter_db_generic_meter_info_db_info_use_single_bucket_bank_cbs use_single_bucket_bank;
      /**
       * Access struct for nof_generic_banks
       */
      dnx_meter_db_generic_meter_info_db_info_nof_generic_banks_cbs nof_generic_banks;
      /**
       * Access struct for banks_arr
       */
      dnx_meter_db_generic_meter_info_db_info_banks_arr_cbs banks_arr;
  } dnx_meter_db_generic_meter_info_db_info_cbs;
  
  /**
   * This structure holds the access functions for the variable dnx_generic_meter_info_t
   */
  typedef struct {
      dnx_meter_db_generic_meter_info_alloc_cb alloc;
      /**
       * Access struct for db_info
       */
      dnx_meter_db_generic_meter_info_db_info_cbs db_info;
  } dnx_meter_db_generic_meter_info_cbs;
  
  /**
   * This structure holds the access functions for the variable policer_ingress_db0
   */
  typedef struct {
      dnx_meter_db_policer_templates_policer_ingress_db0_set_cb set;
      dnx_meter_db_policer_templates_policer_ingress_db0_get_cb get;
      dnx_meter_db_policer_templates_policer_ingress_db0_alloc_cb alloc;
      dnx_meter_db_policer_templates_policer_ingress_db0_create_cb create;
      dnx_meter_db_policer_templates_policer_ingress_db0_exchange_cb exchange;
      dnx_meter_db_policer_templates_policer_ingress_db0_replace_data_cb replace_data;
      dnx_meter_db_policer_templates_policer_ingress_db0_profile_data_get_cb profile_data_get;
      dnx_meter_db_policer_templates_policer_ingress_db0_clear_cb clear;
  } dnx_meter_db_policer_templates_policer_ingress_db0_cbs;
  
  /**
   * This structure holds the access functions for the variable policer_ingress_db1
   */
  typedef struct {
      dnx_meter_db_policer_templates_policer_ingress_db1_set_cb set;
      dnx_meter_db_policer_templates_policer_ingress_db1_get_cb get;
      dnx_meter_db_policer_templates_policer_ingress_db1_alloc_cb alloc;
      dnx_meter_db_policer_templates_policer_ingress_db1_create_cb create;
      dnx_meter_db_policer_templates_policer_ingress_db1_exchange_cb exchange;
      dnx_meter_db_policer_templates_policer_ingress_db1_replace_data_cb replace_data;
      dnx_meter_db_policer_templates_policer_ingress_db1_profile_data_get_cb profile_data_get;
      dnx_meter_db_policer_templates_policer_ingress_db1_clear_cb clear;
  } dnx_meter_db_policer_templates_policer_ingress_db1_cbs;
  
  /**
   * This structure holds the access functions for the variable policer_ingress_db2
   */
  typedef struct {
      dnx_meter_db_policer_templates_policer_ingress_db2_set_cb set;
      dnx_meter_db_policer_templates_policer_ingress_db2_get_cb get;
      dnx_meter_db_policer_templates_policer_ingress_db2_alloc_cb alloc;
      dnx_meter_db_policer_templates_policer_ingress_db2_create_cb create;
      dnx_meter_db_policer_templates_policer_ingress_db2_exchange_cb exchange;
      dnx_meter_db_policer_templates_policer_ingress_db2_replace_data_cb replace_data;
      dnx_meter_db_policer_templates_policer_ingress_db2_profile_data_get_cb profile_data_get;
      dnx_meter_db_policer_templates_policer_ingress_db2_clear_cb clear;
  } dnx_meter_db_policer_templates_policer_ingress_db2_cbs;
  
  /**
   * This structure holds the access functions for the variable policer_egress_db0
   */
  typedef struct {
      dnx_meter_db_policer_templates_policer_egress_db0_set_cb set;
      dnx_meter_db_policer_templates_policer_egress_db0_get_cb get;
      dnx_meter_db_policer_templates_policer_egress_db0_alloc_cb alloc;
      dnx_meter_db_policer_templates_policer_egress_db0_create_cb create;
      dnx_meter_db_policer_templates_policer_egress_db0_exchange_cb exchange;
      dnx_meter_db_policer_templates_policer_egress_db0_replace_data_cb replace_data;
      dnx_meter_db_policer_templates_policer_egress_db0_profile_data_get_cb profile_data_get;
      dnx_meter_db_policer_templates_policer_egress_db0_clear_cb clear;
  } dnx_meter_db_policer_templates_policer_egress_db0_cbs;
  
  /**
   * This structure holds the access functions for the variable policer_egress_db1
   */
  typedef struct {
      dnx_meter_db_policer_templates_policer_egress_db1_set_cb set;
      dnx_meter_db_policer_templates_policer_egress_db1_get_cb get;
      dnx_meter_db_policer_templates_policer_egress_db1_alloc_cb alloc;
      dnx_meter_db_policer_templates_policer_egress_db1_create_cb create;
      dnx_meter_db_policer_templates_policer_egress_db1_exchange_cb exchange;
      dnx_meter_db_policer_templates_policer_egress_db1_replace_data_cb replace_data;
      dnx_meter_db_policer_templates_policer_egress_db1_profile_data_get_cb profile_data_get;
      dnx_meter_db_policer_templates_policer_egress_db1_clear_cb clear;
  } dnx_meter_db_policer_templates_policer_egress_db1_cbs;
  
  /**
   * This structure holds the access functions for the variable policer_template_t
   */
  typedef struct {
      /**
       * Access struct for policer_ingress_db0
       */
      dnx_meter_db_policer_templates_policer_ingress_db0_cbs policer_ingress_db0;
      /**
       * Access struct for policer_ingress_db1
       */
      dnx_meter_db_policer_templates_policer_ingress_db1_cbs policer_ingress_db1;
      /**
       * Access struct for policer_ingress_db2
       */
      dnx_meter_db_policer_templates_policer_ingress_db2_cbs policer_ingress_db2;
      /**
       * Access struct for policer_egress_db0
       */
      dnx_meter_db_policer_templates_policer_egress_db0_cbs policer_egress_db0;
      /**
       * Access struct for policer_egress_db1
       */
      dnx_meter_db_policer_templates_policer_egress_db1_cbs policer_egress_db1;
  } dnx_meter_db_policer_templates_cbs;
  
  /**
   * This structure holds the access functions for the variable dnx_meter_db_t
   */
  typedef struct {
      dnx_meter_db_is_init_cb is_init;
      dnx_meter_db_init_cb init;
      /**
       * Access struct for profile_limits_info
       */
      dnx_meter_db_profile_limits_info_cbs profile_limits_info;
      /**
       * Access struct for global_meter_enabled
       */
      dnx_meter_db_global_meter_enabled_cbs global_meter_enabled;
      /**
       * Access struct for generic_meter_info
       */
      dnx_meter_db_generic_meter_info_cbs generic_meter_info;
      /**
       * Access struct for policer_templates
       */
      dnx_meter_db_policer_templates_cbs policer_templates;
  } dnx_meter_db_cbs;
  
  /*
   * Global Variables
   */
  
  /*
   * Global Variables
   */
  
  extern dnx_meter_db_cbs dnx_meter_db;
  
  #endif /* __METER_ACCESS_H__ */
  