sig
  type direction = [ `down | `left | `right | `unknown | `up ]
  val add : Evas.obj -> Evas.obj
  val addx : Elm_object.t_addx
  val hover_parent_set : Evas.obj -> Evas.obj -> unit
  val hover_parent_get : Evas.obj -> Evas.obj
  val clear : Evas.obj -> unit
  val horizontal_set : Evas.obj -> bool -> unit
  val horizontal_get : Evas.obj -> bool
  val item_append :
    Evas.obj ->
    ?label:string ->
    ?icon:Evas.obj -> ?func:Evas.smart_cb -> unit -> Elm_object.item
  val item_prepend :
    Evas.obj ->
    ?label:string ->
    ?icon:Evas.obj -> ?func:Evas.smart_cb -> unit -> Elm_object.item
  val direction_priority_set :
    Evas.obj ->
    Elm_ctxpopup.direction ->
    Elm_ctxpopup.direction ->
    Elm_ctxpopup.direction -> Elm_ctxpopup.direction -> unit
  val direction_priority_get :
    Evas.obj ->
    Elm_ctxpopup.direction * Elm_ctxpopup.direction *
    Elm_ctxpopup.direction * Elm_ctxpopup.direction
  val direction_get : Evas.obj -> Elm_ctxpopup.direction
  val dismiss : Evas.obj -> unit
  val auto_hide_disabled_set : Evas.obj -> bool -> unit
  val auto_hide_disabled_get : Evas.obj -> bool
  val items_get : Evas.obj -> Elm_object.item list
  val first_item_get : Evas.obj -> Elm_object.item option
  val last_item_get : Evas.obj -> Elm_object.item option
  val item_prev_get : Elm_object.item -> Elm_object.item option
  val item_next_get : Elm_object.item -> Elm_object.item option
end