public void SetState(Cdn.Node node, string st, GLib.SList events_added, GLib.SList events_removed) { IntPtr native_st = GLib.Marshaller.StringToPtrGStrdup(st); cdn_integrator_state_set_state(Handle, node == null ? IntPtr.Zero : node.Handle, native_st, events_added == null ? IntPtr.Zero : events_added.Handle, events_removed == null ? IntPtr.Zero : events_removed.Handle); GLib.Marshaller.Free(native_st); }
private EventState EventStateContainerAdd(EventStateContainer states, Cdn.Node cont, string state) { if (String.IsNullOrEmpty(state)) { return(null); } if (!states.States.Contains(state)) { states.States.Add(state); var evs = new EventState { Node = cont, Name = state, ActiveActions = new List <Cdn.EdgeAction>(), Index = d_eventStates.Count, }; d_eventStates.Add(evs); d_eventStateIdMap[EventStateId(evs.Node, evs.Name)] = evs; return(evs); } else { return(d_eventStateIdMap[EventStateId(cont, state)]); } }
public string GetRelativeIdForDisplay(Cdn.Node parent) { IntPtr raw_ret = cdn_object_get_relative_id_for_display(Handle, parent == null ? IntPtr.Zero : parent.Handle); string ret = GLib.Marshaller.PtrToStringGFree(raw_ret); return(ret); }
public Edge(string id, Cdn.Node input, Cdn.Node output) : base(IntPtr.Zero) { if (GetType() != typeof(Edge)) { ArrayList vals = new ArrayList(); ArrayList names = new ArrayList(); names.Add("id"); vals.Add(new GLib.Value(id)); if (input != null) { names.Add("input"); vals.Add(new GLib.Value(input)); } if (output != null) { names.Add("output"); vals.Add(new GLib.Value(output)); } CreateNativeObject((string[])names.ToArray(typeof(string)), (GLib.Value[])vals.ToArray(typeof(GLib.Value))); return; } IntPtr native_id = GLib.Marshaller.StringToPtrGStrdup(id); Raw = cdn_edge_new(native_id, input == null ? IntPtr.Zero : input.Handle, output == null ? IntPtr.Zero : output.Handle); GLib.Marshaller.Free(native_id); }
private void Scan(Cdn.Object obj) { Cdn.Function f = obj as Cdn.Function; if (f != null) { foreach (var v in obj.Variables) { if ((v.Flags & Cdn.VariableFlags.FunctionArgument) == 0) { d_functionHelperVariables.Add(v); } } return; } else { d_variables.AddRange(obj.Variables); } Cdn.Node grp = obj as Cdn.Node; if (grp != null && grp.InitialState != null) { var states = AddEventStateContainer(grp); EventStateContainerAdd(states, grp, grp.InitialState); } ScanEvent(obj as Cdn.Event); foreach (Cdn.Variable prop in obj.Variables) { if (prop.Actions.Length != 0) { d_actionedVariables[prop] = prop.Actions; } AddFlaggedVariable(prop); } if (grp == null) { return; } if (grp.HasSelfEdge) { Scan((Cdn.Object)grp.SelfEdge); } foreach (Cdn.Object child in grp.Children) { Scan(child); } }
public unsafe bool Load(Cdn.Network network, Cdn.Node parent) { IntPtr error = IntPtr.Zero; bool raw_ret = cdn_import_load(Handle, network == null ? IntPtr.Zero : network.Handle, parent == null ? IntPtr.Zero : parent.Handle, out error); bool ret = raw_ret; if (error != IntPtr.Zero) { throw new GLib.GException(error); } return(ret); }
private EventStateContainer AddEventStateContainer(Cdn.Node node) { EventStateContainer states; if (!d_eventStatesMap.TryGetValue(node, out states)) { states = new EventStateContainer { States = new List <string>(), Index = d_eventStatesMap.Count, }; d_eventStatesMap[node] = states; } return(states); }
public VariableInterface(Cdn.Node node) : base(IntPtr.Zero) { if (GetType() != typeof(VariableInterface)) { ArrayList vals = new ArrayList(); ArrayList names = new ArrayList(); if (node != null) { names.Add("node"); vals.Add(new GLib.Value(node)); } CreateNativeObject((string[])names.ToArray(typeof(string)), (GLib.Value[])vals.ToArray(typeof(GLib.Value))); return; } Raw = cdn_variable_interface_new(node == null ? IntPtr.Zero : node.Handle); }
public unsafe Import(Cdn.Network network, Cdn.Node parent, string id, string path) : base(IntPtr.Zero) { if (GetType() != typeof(Import)) { throw new InvalidOperationException("Can't override this constructor."); } IntPtr native_id = GLib.Marshaller.StringToPtrGStrdup(id); IntPtr native_path = GLib.Marshaller.StringToPtrGStrdup(path); IntPtr error = IntPtr.Zero; Raw = cdn_import_new_from_path(network == null ? IntPtr.Zero : network.Handle, parent == null ? IntPtr.Zero : parent.Handle, native_id, native_path, out error); GLib.Marshaller.Free(native_id); GLib.Marshaller.Free(native_path); if (error != IntPtr.Zero) { throw new GLib.GException(error); } }
public Cdn.Node FindStateNode(Cdn.Node parent) { while (true) { if (d_eventStatesMap.ContainsKey(parent)) { return(parent); } var next = parent.Parent; if (next == null) { return(parent); } parent = next; } }
public NetworkSerializer(Cdn.Network network, Cdn.Node root) : base(IntPtr.Zero) { if (GetType() != typeof(NetworkSerializer)) { ArrayList vals = new ArrayList(); ArrayList names = new ArrayList(); if (network != null) { names.Add("network"); vals.Add(new GLib.Value(network)); } if (root != null) { names.Add("root"); vals.Add(new GLib.Value(root)); } CreateNativeObject((string[])names.ToArray(typeof(string)), (GLib.Value[])vals.ToArray(typeof(GLib.Value))); return; } Raw = cdn_network_serializer_new(network == null ? IntPtr.Zero : network.Handle, root == null ? IntPtr.Zero : root.Handle); }
private void AddAll(GLib.Object obj, Dictionary <GLib.Object, bool> ret) { ret[obj] = true; Cdn.Object o = obj as Cdn.Object; Cdn.Node grp = obj as Cdn.Node; if (grp != null) { foreach (Cdn.Object child in grp.Children) { AddAll(child, ret); } foreach (string name in grp.VariableInterface.Names) { d_selected[grp.Variable(name)] = true; } } if (o != null) { foreach (Cdn.Variable prop in o.Variables) { d_selected[prop] = true; } } Cdn.Edge link = obj as Cdn.Edge; if (link != null) { foreach (Cdn.EdgeAction action in link.Actions) { d_selected[action] = true; } } }
public bool TryGetEventState(Cdn.Node parent, string state, out EventState ret) { return(d_eventStateIdMap.TryGetValue(EventStateId(parent, state), out ret)); }
public bool TryEventStateGroupLookup(Cdn.Node node, string state, out EventStateGroup grp) { var key = EventStateId(node, state); return(d_eventStateGroups.TryGetValue(key, out grp)); }
public void Attach(Cdn.Node input, Cdn.Node output) { cdn_edge_attach(Handle, input == null ? IntPtr.Zero : input.Handle, output == null ? IntPtr.Zero : output.Handle); }