Example #1
0
 public static string ToNameIgnoreEnum(IType type, IEmitter emitter, ToNameTypeEnum kind = ToNameTypeEnum.None)
 {
     if (type.Kind == TypeKind.Enum)
     {
         return("System.Int");
     }
     return(ToJsName(type, emitter, false, false, kind));
 }
Example #2
0
        public static string ToNameIgnoreEnum(AstType astType, IEmitter emitter, ToNameTypeEnum kind = ToNameTypeEnum.None)
        {
            var simpleType = astType as SimpleType;

            if (simpleType != null && simpleType.Identifier == "dynamic")
            {
                return("System.Object");
            }

            var resolveResult = emitter.Resolver.ResolveNode(astType, emitter);

            return(BridgeTypes.ToNameIgnoreEnum(resolveResult.Type, emitter, kind));
        }
Example #3
0
        public static string ToJsName(AstType astType, IEmitter emitter, ToNameTypeEnum kind = ToNameTypeEnum.None)
        {
            var primitive = astType as PrimitiveType;

            if (primitive != null && primitive.KnownTypeCode == KnownTypeCode.Void)
            {
                throw new System.NotSupportedException();
            }

            var simpleType = astType as SimpleType;

            if (simpleType != null && simpleType.Identifier == "dynamic")
            {
                return("System.Object");
            }

            var resolveResult = emitter.Resolver.ResolveNode(astType, emitter);

            return(BridgeTypes.ToJsName(resolveResult.Type, emitter, false, false, kind));
        }
Example #4
0
        public static string ToNameIgnoreEnum(AstType astType, IEmitter emitter, ToNameTypeEnum kind = ToNameTypeEnum.None) {
            var simpleType = astType as SimpleType;
            if(simpleType != null && simpleType.Identifier == "dynamic") {
                return "System.Object";
            }

            var resolveResult = emitter.Resolver.ResolveNode(astType, emitter);
            if(resolveResult.Type.Kind == TypeKind.Enum) {
                return "System.Int";
            }

            return BridgeTypes.ToJsName(resolveResult.Type, emitter, false, false, kind);
        }
Example #5
0
        public static string ToJsName(AstType astType, IEmitter emitter, ToNameTypeEnum kind = ToNameTypeEnum.None)
        {
            var primitive = astType as PrimitiveType;
            if (primitive != null && primitive.KnownTypeCode == KnownTypeCode.Void)
            {
                throw new System.NotSupportedException();
            }

            var simpleType = astType as SimpleType;
            if (simpleType != null && simpleType.Identifier == "dynamic")
            {
                return "System.Object";
            }

            var resolveResult = emitter.Resolver.ResolveNode(astType, emitter);
            return BridgeTypes.ToJsName(resolveResult.Type, emitter, false, false, kind);
        }
Example #6
0
        public static string ToJsName(IType type, IEmitter emitter, bool asDefinition = false, bool excludens = false, ToNameTypeEnum kind = ToNameTypeEnum.None)
        {
            if (NullableType.IsNullable(type))
            {
                return BridgeTypes.ToJsName(NullableType.GetUnderlyingType(type), emitter);
            }

            BridgeType bridgeType = emitter.BridgeTypes.Get(type, true);
            var name = excludens ? "" : type.Namespace;

            var hasTypeDef = bridgeType != null && bridgeType.TypeDefinition != null;
            if (hasTypeDef)
            {
                var typeDef = bridgeType.TypeDefinition;
                if (typeDef.IsNested && !excludens)
                {
                    name = (string.IsNullOrEmpty(name) ? "" : (name + ".")) + BridgeTypes.GetParentNames(typeDef);
                }

                name = (string.IsNullOrEmpty(name) ? "" : (name + ".")) + BridgeTypes.ConvertName(typeDef.Name);
            }
            else
            {
                if (type.DeclaringType != null && !excludens)
                {
                    name = (string.IsNullOrEmpty(name) ? "" : (name + ".")) + BridgeTypes.GetParentNames(type);

                    if (type.DeclaringType.TypeArguments.Count > 0)
                    {
                        name += "_" + type.TypeArguments.Count;
                    }
                }

                name = (string.IsNullOrEmpty(name) ? "" : (name + ".")) + BridgeTypes.ConvertName(type.Name);
            }
            

            bool isCustomName = false;
            if (bridgeType != null)
            {
                name = BridgeTypes.AddModule(name, bridgeType, out isCustomName);
            }

            if(kind == ToNameTypeEnum.None)
            {
                int pos = name.LastIndexOf('.');
                if(pos != -1) {
                    string prefix = name.Substring(0, pos);
                    if(prefix != "System") {
                        TransformCtx.CurUsingNamespaces.Add(prefix);
                        string newPrefix = prefix.Replace(".", "");
                        if(newPrefix == prefix) {
                            newPrefix = '_' + newPrefix;
                        }
                        name = newPrefix + name.Substring(pos);
                    }
                }
            }

            if (!hasTypeDef && !isCustomName && type.TypeArguments.Count > 0)
            {
                name += "_" + type.TypeArguments.Count;
            }

            if (!asDefinition && type.TypeArguments.Count > 0 && !Helpers.IsIgnoreGeneric(type, emitter))
            {
                StringBuilder sb = new StringBuilder(name);
                bool needComma = false;
                sb.Append("(");
                foreach (var typeArg in type.TypeArguments)
                {
                    if (needComma)
                    {
                        sb.Append(", ");
                    }

                    needComma = true;
                    sb.Append(BridgeTypes.ToNameIgnoreEnum(typeArg, emitter, kind));
                }

                sb.Append(")");
                name = sb.ToString();
            }
            else if(type.Kind == TypeKind.Array) {
                name += "(" + BridgeTypes.ToNameIgnoreEnum(((ICSharpCode.NRefactory.TypeSystem.ArrayType)type).ElementType, emitter) + ")";
            }

            return name;
        }
Example #7
0
 public static string ToNameIgnoreEnum(IType type, IEmitter emitter, ToNameTypeEnum kind = ToNameTypeEnum.None) {
     if(type.Kind == TypeKind.Enum) {
         return "System.Int";
     }
     return ToJsName(type, emitter, false, false, kind);
 }
Example #8
0
        public static string ToJsName(IType type, IEmitter emitter, bool asDefinition = false, bool excludens = false, ToNameTypeEnum kind = ToNameTypeEnum.None)
        {
            if (NullableType.IsNullable(type))
            {
                return(BridgeTypes.ToJsName(NullableType.GetUnderlyingType(type), emitter));
            }

            if (type.Kind == TypeKind.Delegate)
            {
                return("System.Delegate");
            }

            BridgeType bridgeType = emitter.BridgeTypes.Get(type, true);
            var        name       = excludens ? "" : XmlMetaMaker.GetNamespace(bridgeType != null ? bridgeType.Type.Namespace : type.Namespace);

            var hasTypeDef = bridgeType != null && bridgeType.TypeDefinition != null;

            if (hasTypeDef)
            {
                var typeDef = bridgeType.TypeDefinition;
                if (typeDef.IsNested && !excludens)
                {
                    name = (string.IsNullOrEmpty(name) ? "" : (name + ".")) + BridgeTypes.GetParentNames(typeDef);
                }

                name = (string.IsNullOrEmpty(name) ? "" : (name + ".")) + BridgeTypes.ConvertName(typeDef.Name);
            }
            else
            {
                if (type.DeclaringType != null && !excludens)
                {
                    name = (string.IsNullOrEmpty(name) ? "" : (name + ".")) + BridgeTypes.GetParentNames(type);

                    if (type.DeclaringType.TypeArguments.Count > 0)
                    {
                        name += "_" + type.TypeArguments.Count;
                    }
                }

                name = (string.IsNullOrEmpty(name) ? "" : (name + ".")) + BridgeTypes.ConvertName(type.Name);
            }


            bool isCustomName = false;

            if (bridgeType != null)
            {
                name = BridgeTypes.AddModule(name, bridgeType, out isCustomName);
            }

            if (kind == ToNameTypeEnum.None)
            {
                int pos = name.LastIndexOf('.');
                if (pos != -1)
                {
                    string prefix = name.Substring(0, pos);
                    if (prefix != "System")
                    {
                        TransformCtx.CurUsingNamespaces.Add(prefix);
                        string newPrefix = prefix.Replace(".", "");
                        if (newPrefix == prefix)
                        {
                            newPrefix = '_' + newPrefix;
                        }
                        name = newPrefix + name.Substring(pos);
                    }
                }
            }

            if (!hasTypeDef && !isCustomName && type.TypeArguments.Count > 0)
            {
                name += "_" + type.TypeArguments.Count;
            }

            if (!asDefinition && type.TypeArguments.Count > 0 && !Helpers.IsIgnoreGeneric(type, emitter))
            {
                StringBuilder sb        = new StringBuilder(name);
                bool          needComma = false;
                sb.Append("(");
                foreach (var typeArg in type.TypeArguments)
                {
                    if (needComma)
                    {
                        sb.Append(", ");
                    }

                    needComma = true;
                    sb.Append(BridgeTypes.ToNameIgnoreEnum(typeArg, emitter, kind));
                }

                sb.Append(")");
                name = sb.ToString();
            }
            else if (type.Kind == TypeKind.Array)
            {
                name += "(" + BridgeTypes.ToNameIgnoreEnum(((ICSharpCode.NRefactory.TypeSystem.ArrayType)type).ElementType, emitter) + ")";
            }

            return(name);
        }
Example #9
0
 public static string ToNameIgnoreEnum(IType type, IEmitter emitter, ToNameTypeEnum kind = ToNameTypeEnum.None)
 {
     return(ToJsName(type, emitter, false, false, kind));
 }