summaryrefslogtreecommitdiff
path: root/src/protocol/oBus_member.mli
blob: f901d1f0a4b8ebe1d98af08ec04764e12ab2d6c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
(*
 * oBus_member.mli
 * ---------------
 * Copyright : (c) 2010, Jeremie Dimino <jeremie@dimino.org>
 * Licence   : BSD3
 *
 * This file is a part of obus, an ocaml implementation of D-Bus.
 *)

(** D-Bus members description *)

(** D-Bus Methods *)
module Method : sig

  (** D-Bus method description *)

  (** Type of a method description *)
  type ('a, 'b) t = {
    interface : OBus_name.interface;
    member : OBus_name.member;
    i_args : 'a OBus_value.arguments;
    (** Input arguments *)
    o_args : 'b OBus_value.arguments;
    (** Output arguments *)
    annotations : OBus_introspect.annotation list;
  }

  (** {6 Creation} *)

  val make :
    interface : OBus_name.interface ->
    member : OBus_name.member ->
    i_args : 'a OBus_value.arguments ->
    o_args : 'b OBus_value.arguments ->
    annotations : OBus_introspect.annotation list -> ('a, 'b) t

  (** {6 Projections} *)

  val interface : ('a, 'b) t -> OBus_name.interface
  val member : ('a, 'b) t -> OBus_name.member
  val i_args : ('a, 'b) t -> 'a OBus_value.arguments
  val o_args : ('a, 'b) t -> 'b OBus_value.arguments
  val annotations : ('a, 'b) t -> OBus_introspect.annotation list

  (** {6 Introspection} *)

  val introspect : ('a, 'b) t -> OBus_introspect.member
end

(** D-Bus signals *)
module Signal : sig

  (** D-Bus signal description *)

  (** Type of a signal description *)
  type 'a t = {
    interface : OBus_name.interface;
    member : OBus_name.member;
    args : 'a OBus_value.arguments;
    annotations : OBus_introspect.annotation list;
  }

  (** {6 Creation} *)

  val make :
    interface : OBus_name.interface ->
    member : OBus_name.member ->
    args : 'a OBus_value.arguments ->
    annotations : OBus_introspect.annotation list -> 'a t

  (** {6 Projections} *)

  val interface : 'a t -> OBus_name.interface
  val member : 'a t -> OBus_name.member
  val args : 'a t -> 'a OBus_value.arguments
  val annotations : 'a t -> OBus_introspect.annotation list

  (** {6 Introspection} *)

  val introspect : 'a t -> OBus_introspect.member
end

(** D-Bus properties *)
module Property : sig

  (** D-Bus property description *)

  (** Type of access modes *)
  type 'a access =
      private
    | Readable
    | Writable
    | Readable_writable

  val readable : [ `readable ] access
    (** Access mode for readable properties *)

  val writable : [ `writable ] access
    (** Access mode for writable properties *)

  val readable_writable : [ `readable | `writable ] access
    (** Access mode for readable and writable properties *)

  (** Type of a property description *)
  type ('a, 'access) t = {
    interface : OBus_name.interface;
    member : OBus_name.member;
    typ : 'a OBus_value.C.single;
    access : 'access access;
    annotations : OBus_introspect.annotation list;
  }

  (** {6 Creation} *)

  val make :
    interface : OBus_name.interface ->
    member : OBus_name.member ->
    typ : 'a OBus_value.C.single ->
    access : 'access access ->
    annotations : OBus_introspect.annotation list -> ('a, 'access) t

  (** {6 Projections} *)

  val interface : ('a, 'access) t -> OBus_name.interface
  val member : ('a, 'access) t -> OBus_name.member
  val typ : ('a, 'access) t -> 'a OBus_value.C.single
  val access : ('a, 'access) t -> 'access access
  val annotations : ('a, 'access) t -> OBus_introspect.annotation list

  (** {6 Introspection} *)

  val introspect : ('a, 'access) t -> OBus_introspect.member
end