Example #1
0
        public Name MakeTypeName(TypeDefinition def, NameUsage usage = NameUsage.Default)
        {
            if (def.Tag == TypeTag.Group)
            {
                return(new Name(SyntaxHelpers.MakeAllLower(def.Name)));
            }
            else
            {
                string name;

                switch (usage)
                {
                case NameUsage.Default:
                    if (def.Tag == TypeTag.Interface)
                    {
                        goto case NameUsage.Interface;
                    }

                    switch (def.SpecialName)
                    {
                    case SpecialName.NothingSpecial:
                        name = def.Name;
                        break;

                    case SpecialName.MethodParamsStruct:
                        name = MakeParamsStructName(def.UsingMethod);
                        break;

                    case SpecialName.MethodResultStruct:
                        name = MakeResultStructName(def.UsingMethod);
                        break;

                    default:
                        throw new NotImplementedException();
                    }
                    break;

                case NameUsage.Namespace:
                    name = def.Name;
                    break;

                case NameUsage.Interface:
                    name = "I" + def.Name;
                    break;

                case NameUsage.Proxy:
                    name = string.Format(ProxyClassFormat, def.Name);
                    break;

                case NameUsage.Skeleton:
                    name = string.Format(SkeletonClassFormat, def.Name);
                    break;

                default:
                    throw new NotImplementedException();
                }

                return(new Name(name));
            }
        }