コード例 #1
0
        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);
        }
コード例 #2
0
        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)]);
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
ファイル: Edge.cs プロジェクト: codyn-net/codyn-sharp
        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);
        }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
ファイル: Import.cs プロジェクト: codyn-net/codyn-sharp
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
 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);
 }
コード例 #9
0
ファイル: Import.cs プロジェクト: codyn-net/codyn-sharp
        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);
            }
        }
コード例 #10
0
        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;
            }
        }
コード例 #11
0
 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);
 }
コード例 #12
0
ファイル: WrappersTree.cs プロジェクト: codyn-net/studio
        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;
                }
            }
        }
コード例 #13
0
 public bool TryGetEventState(Cdn.Node parent, string state, out EventState ret)
 {
     return(d_eventStateIdMap.TryGetValue(EventStateId(parent, state), out ret));
 }
コード例 #14
0
        public bool TryEventStateGroupLookup(Cdn.Node node, string state, out EventStateGroup grp)
        {
            var key = EventStateId(node, state);

            return(d_eventStateGroups.TryGetValue(key, out grp));
        }
コード例 #15
0
ファイル: Edge.cs プロジェクト: codyn-net/codyn-sharp
 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);
 }