1 /* 2 * This file is part of gtkD. 3 * 4 * gtkD is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License 6 * as published by the Free Software Foundation; either version 3 7 * of the License, or (at your option) any later version, with 8 * some exceptions, please read the COPYING file. 9 * 10 * gtkD is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with gtkD; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA 18 */ 19 20 // generated automatically - do not change 21 // find conversion definition on APILookup.txt 22 // implement new conversion functionalities on the wrap.utils pakage 23 24 25 module gio.DBusNodeInfo; 26 27 private import gio.DBusAnnotationInfo; 28 private import gio.DBusInterfaceInfo; 29 private import gio.c.functions; 30 public import gio.c.types; 31 private import glib.ConstructionException; 32 private import glib.ErrorG; 33 private import glib.GException; 34 private import glib.Str; 35 private import glib.StringG; 36 private import glib.c.functions; 37 private import gobject.ObjectG; 38 public import gtkc.giotypes; 39 private import gtkd.Loader; 40 41 42 /** 43 * Information about nodes in a remote object hierarchy. 44 * 45 * Since: 2.26 46 */ 47 public final class DBusNodeInfo 48 { 49 /** the main Gtk struct */ 50 protected GDBusNodeInfo* gDBusNodeInfo; 51 protected bool ownedRef; 52 53 /** Get the main Gtk struct */ 54 public GDBusNodeInfo* getDBusNodeInfoStruct(bool transferOwnership = false) 55 { 56 if (transferOwnership) 57 ownedRef = false; 58 return gDBusNodeInfo; 59 } 60 61 /** the main Gtk struct as a void* */ 62 protected void* getStruct() 63 { 64 return cast(void*)gDBusNodeInfo; 65 } 66 67 /** 68 * Sets our main struct and passes it to the parent class. 69 */ 70 public this (GDBusNodeInfo* gDBusNodeInfo, bool ownedRef = false) 71 { 72 this.gDBusNodeInfo = gDBusNodeInfo; 73 this.ownedRef = ownedRef; 74 } 75 76 ~this () 77 { 78 if ( Linker.isLoaded(LIBRARY_GIO) && ownedRef ) 79 g_dbus_node_info_unref(gDBusNodeInfo); 80 } 81 82 83 /** 84 * The reference count or -1 if statically allocated. 85 */ 86 public @property int refCount() 87 { 88 return gDBusNodeInfo.refCount; 89 } 90 91 /** Ditto */ 92 public @property void refCount(int value) 93 { 94 gDBusNodeInfo.refCount = value; 95 } 96 97 /** 98 * The path of the node or %NULL if omitted. Note that this may be a relative path. See the D-Bus specification for more details. 99 */ 100 public @property string path() 101 { 102 return Str.toString(gDBusNodeInfo.path); 103 } 104 105 /** Ditto */ 106 public @property void path(string value) 107 { 108 gDBusNodeInfo.path = Str.toStringz(value); 109 } 110 111 /** 112 * A pointer to a %NULL-terminated array of pointers to #GDBusInterfaceInfo structures or %NULL if there are no interfaces. 113 */ 114 public @property DBusInterfaceInfo[] interfaces() 115 { 116 DBusInterfaceInfo[] arr = new DBusInterfaceInfo[getArrayLength(gDBusNodeInfo.interfaces)]; 117 for ( int i = 0; i < arr.length; i++ ) 118 { 119 arr[i] = ObjectG.getDObject!(DBusInterfaceInfo)(gDBusNodeInfo.interfaces[i], false); 120 } 121 122 return arr; 123 } 124 125 /** Ditto */ 126 public @property void interfaces(DBusInterfaceInfo[] value) 127 { 128 GDBusInterfaceInfo*[] arr = new GDBusInterfaceInfo*[value.length+1]; 129 for ( int i = 0; i < value.length; i++ ) 130 { 131 arr[i] = value[i].getDBusInterfaceInfoStruct(); 132 } 133 arr[value.length] = null; 134 135 gDBusNodeInfo.interfaces = arr.ptr; 136 } 137 138 /** 139 * A pointer to a %NULL-terminated array of pointers to #GDBusNodeInfo structures or %NULL if there are no nodes. 140 */ 141 public @property DBusNodeInfo[] nodes() 142 { 143 DBusNodeInfo[] arr = new DBusNodeInfo[getArrayLength(gDBusNodeInfo.nodes)]; 144 for ( int i = 0; i < arr.length; i++ ) 145 { 146 arr[i] = ObjectG.getDObject!(DBusNodeInfo)(gDBusNodeInfo.nodes[i], false); 147 } 148 149 return arr; 150 } 151 152 /** Ditto */ 153 public @property void nodes(DBusNodeInfo[] value) 154 { 155 GDBusNodeInfo*[] arr = new GDBusNodeInfo*[value.length+1]; 156 for ( int i = 0; i < value.length; i++ ) 157 { 158 arr[i] = value[i].getDBusNodeInfoStruct(); 159 } 160 arr[value.length] = null; 161 162 gDBusNodeInfo.nodes = arr.ptr; 163 } 164 165 /** 166 * A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations. 167 */ 168 public @property DBusAnnotationInfo[] annotations() 169 { 170 DBusAnnotationInfo[] arr = new DBusAnnotationInfo[getArrayLength(gDBusNodeInfo.annotations)]; 171 for ( int i = 0; i < arr.length; i++ ) 172 { 173 arr[i] = ObjectG.getDObject!(DBusAnnotationInfo)(gDBusNodeInfo.annotations[i], false); 174 } 175 176 return arr; 177 } 178 179 /** Ditto */ 180 public @property void annotations(DBusAnnotationInfo[] value) 181 { 182 GDBusAnnotationInfo*[] arr = new GDBusAnnotationInfo*[value.length+1]; 183 for ( int i = 0; i < value.length; i++ ) 184 { 185 arr[i] = value[i].getDBusAnnotationInfoStruct(); 186 } 187 arr[value.length] = null; 188 189 gDBusNodeInfo.annotations = arr.ptr; 190 } 191 192 /** */ 193 public static GType getType() 194 { 195 return g_dbus_node_info_get_type(); 196 } 197 198 /** 199 * Parses @xml_data and returns a #GDBusNodeInfo representing the data. 200 * 201 * The introspection XML must contain exactly one top-level 202 * <node> element. 203 * 204 * Note that this routine is using a 205 * [GMarkup][glib-Simple-XML-Subset-Parser.description]-based 206 * parser that only accepts a subset of valid XML documents. 207 * 208 * Params: 209 * xmlData = Valid D-Bus introspection XML. 210 * 211 * Returns: A #GDBusNodeInfo structure or %NULL if @error is set. Free 212 * with g_dbus_node_info_unref(). 213 * 214 * Since: 2.26 215 * 216 * Throws: GException on failure. 217 * Throws: ConstructionException GTK+ fails to create the object. 218 */ 219 public this(string xmlData) 220 { 221 GError* err = null; 222 223 auto p = g_dbus_node_info_new_for_xml(Str.toStringz(xmlData), &err); 224 225 if (err !is null) 226 { 227 throw new GException( new ErrorG(err) ); 228 } 229 230 if(p is null) 231 { 232 throw new ConstructionException("null returned by new_for_xml"); 233 } 234 235 this(cast(GDBusNodeInfo*) p); 236 } 237 238 /** 239 * Appends an XML representation of @info (and its children) to @string_builder. 240 * 241 * This function is typically used for generating introspection XML documents at run-time for 242 * handling the `org.freedesktop.DBus.Introspectable.Introspect` method. 243 * 244 * Params: 245 * indent = Indentation level. 246 * stringBuilder = A #GString to to append XML data to. 247 * 248 * Since: 2.26 249 */ 250 public void generateXml(uint indent, StringG stringBuilder) 251 { 252 g_dbus_node_info_generate_xml(gDBusNodeInfo, indent, (stringBuilder is null) ? null : stringBuilder.getStringGStruct()); 253 } 254 255 /** 256 * Looks up information about an interface. 257 * 258 * The cost of this function is O(n) in number of interfaces. 259 * 260 * Params: 261 * name = A D-Bus interface name. 262 * 263 * Returns: A #GDBusInterfaceInfo or %NULL if not found. Do not free, it is owned by @info. 264 * 265 * Since: 2.26 266 */ 267 public DBusInterfaceInfo lookupInterface(string name) 268 { 269 auto p = g_dbus_node_info_lookup_interface(gDBusNodeInfo, Str.toStringz(name)); 270 271 if(p is null) 272 { 273 return null; 274 } 275 276 return ObjectG.getDObject!(DBusInterfaceInfo)(cast(GDBusInterfaceInfo*) p); 277 } 278 279 /** 280 * If @info is statically allocated does nothing. Otherwise increases 281 * the reference count. 282 * 283 * Returns: The same @info. 284 * 285 * Since: 2.26 286 */ 287 public DBusNodeInfo doref() 288 { 289 auto p = g_dbus_node_info_ref(gDBusNodeInfo); 290 291 if(p is null) 292 { 293 return null; 294 } 295 296 return ObjectG.getDObject!(DBusNodeInfo)(cast(GDBusNodeInfo*) p, true); 297 } 298 299 /** 300 * If @info is statically allocated, does nothing. Otherwise decreases 301 * the reference count of @info. When its reference count drops to 0, 302 * the memory used is freed. 303 * 304 * Since: 2.26 305 */ 306 public void unref() 307 { 308 g_dbus_node_info_unref(gDBusNodeInfo); 309 } 310 }