Patch from Samuel Cormier-Iijima <sciyoshi@gmail.com>:
[cascardo/gnio.git] / gnio / ginetaddress.c
index 782c707..ed02fc3 100644 (file)
 
 G_DEFINE_ABSTRACT_TYPE (GInetAddress, g_inet_address, G_TYPE_OBJECT);
 
+enum
+{
+  PROP_0,
+  PROP_IS_ANY,
+  PROP_IS_LINKLOCAL,
+  PROP_IS_LOOPBACK,
+  PROP_IS_SITELOCAL,
+  PROP_IS_MULTICAST,
+  PROP_IS_MC_GLOBAL,
+  PROP_IS_MC_LINKLOCAL,
+  PROP_IS_MC_NODELOCAL,
+  PROP_IS_MC_ORGLOCAL,
+  PROP_IS_MC_SITELOCAL,
+};
 
+static void
+g_inet_address_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+  GInetAddress *address = G_INET_ADDRESS (object);
 
+  switch (prop_id)
+    {
+      case PROP_IS_ANY:
+        g_value_set_boolean (value, G_INET_ADDRESS_GET_CLASS (address)->is_any (address));
+        break;
 
+      case PROP_IS_LINKLOCAL:
+        g_value_set_boolean (value, G_INET_ADDRESS_GET_CLASS (address)->is_linklocal (address));
+        break;
 
-static void
-g_inet_address_class_init (GInetAddressClass *klass)
-{
-  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+      case PROP_IS_LOOPBACK:
+        g_value_set_boolean (value, G_INET_ADDRESS_GET_CLASS (address)->is_loopback (address));
+        break;
 
+      default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
 }
 
 static void
-g_inet_address_init (GInetAddress *address)
+g_inet_address_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
 {
+  GInetAddress *address G_GNUC_UNUSED = G_INET_ADDRESS (object);
 
+  switch (prop_id)
+    {
+      default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
 }
 
-/* ************************************************************************* */
-/* Public Functions */
-
-GInetAddress  *
-g_inet_address_resolve (const char    *host,
-                        GCancellable  *cancellable,
-                        GError       **error)
+static void
+g_inet_address_class_init (GInetAddressClass *klass)
 {
-  return NULL;
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  gobject_class->get_property = g_inet_address_get_property;
+  gobject_class->set_property = g_inet_address_set_property;
+
+  g_object_class_install_property (gobject_class, PROP_IS_ANY,
+                                   g_param_spec_boolean ("is-any",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_LINKLOCAL,
+                                   g_param_spec_boolean ("is-link-local",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_LOOPBACK,
+                                   g_param_spec_boolean ("is-loopback",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_SITELOCAL,
+                                   g_param_spec_boolean ("is-site-local",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_MULTICAST,
+                                   g_param_spec_boolean ("is-multicast",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_MC_GLOBAL,
+                                   g_param_spec_boolean ("is-mc-global",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_MC_LINKLOCAL,
+                                   g_param_spec_boolean ("is-mc-link-local",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_MC_NODELOCAL,
+                                   g_param_spec_boolean ("is-mc-node-local",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_MC_ORGLOCAL,
+                                   g_param_spec_boolean ("is-mc-org-local",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
+
+  g_object_class_install_property (gobject_class, PROP_IS_MC_SITELOCAL,
+                                   g_param_spec_boolean ("is-mc-site-local",
+                                                         "",
+                                                         "",
+                                                         FALSE,
+                                                         G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME));
 }
 
-void
-g_inet_address_resolve_async (const char *host,
-                              GCancellable *cancellable,
-                              GAsyncReadyCallback callback,
-                              gpointer user_data)
+static void
+g_inet_address_init (GInetAddress *address)
 {
 
 }
 
-GInetAddress *
-g_inet_address_resolve_finish (GInetAddress *address,
-                               GAsyncResult *result,
-                               GError **error)
-{
-  return NULL;
-}
+/* ******************************************* */
+/* Getters for properties */
 
-char *
-g_inet_address_lookup_reverse (GInetAddress *address,
-                               GCancellable  *cancellable,
-                               GError       **error)
+static gboolean
+get_boolean_property (GInetAddress *address, const gchar *property)
 {
-  return NULL;
-}
+  gboolean value;
 
-void
-g_inet_address_lookup_reverse_async  (GInetAddress *address,
-                                      GCancellable *cancellable,
-                                      GAsyncReadyCallback callback,
-                                      gpointer user_data)
-{
+  g_return_val_if_fail (G_IS_INET_ADDRESS (address), FALSE);
 
-}
+  g_object_get (address, property, &value, NULL);
 
-char *
-g_inet_address_lookup_reverse_finish (GInetAddress *address,
-                                      GAsyncResult *result,
-                                      GError **error)
-{
-  return NULL;
+  return value;
 }
 
-/* ******************************************* */
-/* Getteres for properties*/
-
 gboolean
-g_inet_address_is_any_local (GInetAddress *address)
+g_inet_address_is_any (GInetAddress *address)
 {
-    return FALSE;
+  return get_boolean_property (address, "is-any");
 }
 
 gboolean
-g_inet_address_is_link_local (GInetAddress *address)
+g_inet_address_is_linklocal (GInetAddress *address)
 {
-    return FALSE;
+  return get_boolean_property (address, "is-link-local");
 }
 
 gboolean
 g_inet_address_is_loopback (GInetAddress *address)
 {
-    return FALSE;
+  return get_boolean_property (address, "is-loopback");
 }
 
 gboolean
 g_inet_address_is_sitelocal (GInetAddress *address)
 {
-    return FALSE;
+  return get_boolean_property (address, "is-site-local");
 }
 
 gboolean
 g_inet_address_is_multicast (GInetAddress *address)
 {
-    return FALSE;
+  return get_boolean_property (address, "is-multicast");
 }
 
 gboolean
 g_inet_address_is_mc_global (GInetAddress *address)
 {
-    return FALSE;
+  return get_boolean_property (address, "is-mc-global");
 }
 
 gboolean
 g_inet_address_is_mc_linklocal (GInetAddress *address)
 {
-    return FALSE;
+  return get_boolean_property (address, "is-mc-link-local");
 }
 
 gboolean
 g_inet_address_is_mc_nodelocal (GInetAddress *address)
 {
-  return FALSE;
+  return get_boolean_property (address, "is-mc-node-local");
 }
 
 gboolean
 g_inet_address_is_mc_orglocal  (GInetAddress *address)
 {
-  return FALSE;
+  return get_boolean_property (address, "is-mc-org-local");
 }
 
 gboolean
 g_inet_address_is_mc_sitelocal (GInetAddress *address)
 {
-  return FALSE;
+  return get_boolean_property (address, "is-mc-site-local");
 }