Exemple #1
0
        private void DoFindNamespaces(string prefix, string parent, CsNamespace ns, List<string> names)
        {
            string name = null;
            if (ns.Name != "<globals>")
                name = parent != null ? (parent + "." + ns.Name) : ns.Name;

            if (name != null)
                if (prefix.Length > 0 && name.StartsWith(prefix))
                    names.AddIfMissing(name.Substring(prefix.Length));
                else if (prefix.Length == 0)
                    names.AddIfMissing(name);

            foreach (CsNamespace child in ns.Namespaces)
            {
                DoFindNamespaces(prefix, name, child, names);
            }
        }
Exemple #2
0
        // Find the last m_member offset intersects.
        private CsMember DoFindMember(CsNamespace ns)
        {
            CsMember member = null;

            for (int i = 0; i < ns.Namespaces.Length && member == null; ++i)
            {
                member = DoFindMember(ns.Namespaces[i]);
            }

            var types = new List<CsType>();
            types.AddRange(ns.Types);

            int j = 0;
            while (j < types.Count && member == null)
            {
                CsType type = types[j++];

                for (int k = 0; k < type.Members.Length && member == null; ++k)
                {
                    CsMember candidate = type.Members[k];
                    if (candidate.Offset <= m_offset && m_offset < candidate.Offset + candidate.Length)
                    {
                        member = candidate;
                    }
                }

                types.AddRange(type.Types);
            }

            return member;
        }
        public AddUsing(CsNamespace ns, string name)
        {
            Contract.Requires(ns != null, "ns is null");
            Contract.Requires(!string.IsNullOrEmpty(name), "name is null or empty");

            m_namespace = ns;
            m_name = name;
        }
 public void QueueAddUsing(CsNamespace ns, string name)
 {
     m_refactor.Queue(new AddUsing(ns, name));
 }
		private void DoWriteUsing(StringBuilder builder, CsNamespace ns, string indent)
		{
			if (ns.Uses.Length > 0)
			{
				foreach (CsUsingDirective u in ns.Uses)
				{
					builder.WriteLine("{0}using {1};", indent, u.Namespace);
				}
				builder.WriteLine();
			}
		}
 private object DoTypeMatches(CsNamespace ns, string type, string name)
 {
     return DoMatchType(ns, type, name);
 }
 private object DoAddUsing(CsNamespace ns, string name)
 {
     return new AddUsing(ns, name);
 }
 private object DoGetUses(CsNamespace ns)
 {
     return ns.Uses;
 }
        private bool DoMatchType(CsNamespace ns, string type, string name)
        {
            bool matches = false;

            if (type == name)
            {
                matches = true;
            }

            if (!matches)
            {
                foreach (CsUsingDirective used in ns.Uses)
                {
                    if (used.Namespace + "." + type == name)
                    {
                        matches = true;
                        break;
                    }
                }
            }

            if (!matches)
            {
                foreach (CsUsingAlias alias in ns.Aliases)
                {
                    string t = type.Replace(alias.Alias + ".", alias.Value + ".");
                    if (t == name)
                    {
                        matches = true;
                        break;
                    }
                }
            }

            if (!matches)
            {
                foreach (CsUsingAlias alias in ns.Aliases)
                {
                    if (alias.Alias == type && DoMatchType(ns, alias.Value, name))
                    {
                        matches = true;
                        break;
                    }
                }
            }

            if (!matches && ns.Namespace != null)
                matches = DoMatchType(ns.Namespace, type, name);

            return matches;
        }
Exemple #10
0
 private object DoGetNamespaces(CsNamespace ns)
 {
     return ns.Namespaces;
 }
Exemple #11
0
 private object DoGetExterns(CsNamespace ns)
 {
     return ns.Externs;
 }
Exemple #12
0
 private object DoGetAliases(CsNamespace ns)
 {
     return ns.Aliases;
 }
        public CsNamespace(CsBody body, string name, CsExternAlias[] externs, CsUsingAlias[] aliases, CsUsingDirective[] uses, CsNamespace[] namespaces, CsType[] types, int offset, int length, int line)
            : base(body, types, offset, length, line)
        {
            Contract.Requires(!string.IsNullOrEmpty(name), "name is null or empty");
            Contract.Requires(externs != null, "externs is null");
            Contract.Requires(aliases != null, "aliases is null");
            Contract.Requires(uses != null, "uses is null");
            Contract.Requires(namespaces != null, "namespaces is null");

            Name = name;
            Externs = externs;
            Aliases = aliases;
            Uses = uses;
            Namespaces = namespaces;

            var decs = new List<CsDeclaration>();
            decs.AddRange(namespaces);
            SetDeclarations(decs);

            foreach (CsNamespace n in Namespaces)
                n.Namespace = this;
            foreach (CsType t in Types)
                t.Namespace = this;
        }
        public CsGlobalNamespace(CsPreprocess[] preprocess, CsBody body, CsAttribute[] attrs, CsExternAlias[] externs, CsUsingAlias[] aliases, CsUsingDirective[] uses, CsNamespace[] namespaces, CsType[] types, int length)
            : base(body, "<globals>", externs, aliases, uses, namespaces, types, 0, length, 1)
        {
            Contract.Requires(attrs != null, "attrs is null");
            Contract.Requires(preprocess != null, "preprocess is null");

            Attributes = attrs;
            Preprocess = preprocess;
        }