mono/ElementNode.cs
author hallski <hallski>
Sun, 10 Sep 2006 22:09:45 +0000
changeset 175 5e665ffe3e9c
parent 84 7ae7b690aa89
permissions -rw-r--r--
2006-09-11 Mikael Hallendal <micke@imendio.com> * Release 1.0.5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
84
7ae7b690aa89 2004-05-28 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 48
diff changeset
     1
using System;
7ae7b690aa89 2004-05-28 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 48
diff changeset
     2
using System.Runtime.InteropServices;
7ae7b690aa89 2004-05-28 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 48
diff changeset
     3
48
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     4
namespace Loudmouth {
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     5
    
84
7ae7b690aa89 2004-05-28 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 48
diff changeset
     6
    public class ElementNode {
7ae7b690aa89 2004-05-28 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 48
diff changeset
     7
	private IntPtr _obj;
7ae7b690aa89 2004-05-28 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 48
diff changeset
     8
48
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     9
	public string Value {
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    10
	    get {
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    11
		return lm_message_node_get_value (this._obj);
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    12
	    } 
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    13
	    set {
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    14
		lm_message_node_set_value (this._obj, value);
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    15
	    }
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    16
	}
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    17
84
7ae7b690aa89 2004-05-28 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 48
diff changeset
    18
	[DllImport ("libloudmouth-1.so")]
48
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    19
	    private static extern string lm_message_node_get_value (IntPtr obj);
84
7ae7b690aa89 2004-05-28 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 48
diff changeset
    20
	[DllImport ("libloudmouth-1.so")]
48
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    21
	    private static extern void lm_message_node_set_value (IntPtr obj, string value);
84
7ae7b690aa89 2004-05-28 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 48
diff changeset
    22
	[DllImport ("libloudmouth-1.so")]
48
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    23
	    private static extern IntPtr lm_message_node_add_child (IntPtr obj, string name, string value);
84
7ae7b690aa89 2004-05-28 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 48
diff changeset
    24
	[DllImport ("libloudmouth-1.so")]
48
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    25
	    private static extern void lm_message_node_set_attribute (IntPtr obj, string name, string value);
84
7ae7b690aa89 2004-05-28 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 48
diff changeset
    26
	[DllImport ("libloudmouth-1.so")]
48
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    27
	    private static extern string lm_message_node_get_attribute (IntPtr obj, string name);
84
7ae7b690aa89 2004-05-28 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 48
diff changeset
    28
	[DllImport ("libloudmouth-1.so")]
48
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    29
	    private static extern IntPtr lm_message_node_get_child (IntPtr obj, string name);
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    30
	
84
7ae7b690aa89 2004-05-28 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 48
diff changeset
    31
	[DllImport ("libloudmouth-1.so")]
48
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    32
	    private static extern IntPtr lm_message_node_find_child (IntPtr obj, string name);
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    33
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    34
	public ElementNode (IntPtr obj) {
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    35
	    this._obj = obj;
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    36
	}
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    37
	
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    38
	public ElementNode AddChild (string name, string value) {
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    39
	    return new ElementNode(lm_message_node_add_child(this._obj, name, value));
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    40
	}
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    41
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    42
	public ElementNode GetChild (string name) {
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    43
	    IntPtr cChild = lm_message_node_get_child(this._obj, name);
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    44
	    if (cChild.ToInt32() == 0) {
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    45
		return null;
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    46
	    }
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    47
	    return new ElementNode(cChild);
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    48
	}
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    49
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    50
	public ElementNode FindChild (string name) {
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    51
	    IntPtr cChild = lm_message_node_find_child(this._obj, name);
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    52
	    if (cChild.ToInt32() == 0) {
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    53
		return null;
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    54
	    }
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    55
	    return new ElementNode(cChild);
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    56
	}
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    57
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    58
	public string this[string data] {
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    59
	    get {
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    60
		return lm_message_node_get_attribute(this._obj, data);
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    61
	    }
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    62
	    set {
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    63
		Console.WriteLine("Setting {0} = {1}: {2}", data, value, this._obj);
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    64
		lm_message_node_set_attribute (this._obj, data, value);
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    65
	    }
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    66
	}
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    67
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    68
	public override string ToString () {
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    69
	    return "Loudmouth.ElementNode";
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    70
	}
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    71
    }
d913b0d5c7b6 2003-10-13 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    72
}