Exemplo n.º 1
0
            /// <summary>
            /// Dump Invokation Tree
            /// </summary>
            /// <param name="behavior">Behavior</param>
            /// <param name="depth">Depth</param>
            private void DumpInvokationTree(BehaviorInfo behavior, int depth = 1)
            {
                foreach (var invokation in behavior.Invokations)
                {
                    var indent = new string(' ', depth * 2);

                    var indent2 = new string(' ', (depth + 1) * 2);

                    this.SendMessage($"{indent}{invokation.Definition} @ {invokation.Location}");

                    if (behavior.ID == invokation.ID)
                    {
                        this.SendMessage($"{indent2} <Recursive Call...>");
                    }
                    else
                    {
                        if (this.BehaviorDefinitionMap.ContainsKey(invokation.ID))
                        {
                            var child_behavior = this.BehaviorDefinitionMap[invokation.ID];

                            this.DumpInvokationTree(child_behavior, depth + 1);
                        }
                        else
                        {
                            this.SendMessage($"{indent2} <Behavior Definition Not Found...>");
                        }
                    }
                }
            }
Exemplo n.º 2
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="info">Behavior Info</param>
        public BehaviorCrossReferenceInfo(BehaviorInfo info)
        {
            this.ID = info.ID;

            this.Type = info.Type;

            this.Definition = info.Definition;

            this.Location = info.Location;
        }
Exemplo n.º 3
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="cursor">Clang Cursor</param>
        public InvokationInfo(ClangCursor cursor) : base(cursor)
        {
            this.Name = cursor.Spelling;

            if (cursor.Referenced != null)
            {
                this.Declaration = BehaviorInfoFactory.Create(cursor.Referenced);

                this.ID = this.Declaration.ID;

                this.Definition = this.Declaration.Definition;
            }
            else
            {
                throw new FieldAccessException($"Behavior Declaration Not Found : {this.Name}");
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// Add Behavior Info
 /// </summary>
 /// <param name="behavior">Behavior Info</param>
 public void AddBehavior(BehaviorInfo behavior)
 {
     this.BehaviorMap.Add(behavior);
 }