private SmallType Copy() { var st = new SmallType(Namespace, Name, IsValueType) { _fields = _fields, GenericTypeArgs = GenericTypeArgs, GenericTypeParameters = GenericTypeParameters, _elementType = _elementType, _systemType = _systemType, Exported = Exported }; return(st); }
public static SmallType RegisterType(string pNamespace, string pName, bool pIsValueType, IList <string> pTypeHints) { List <SmallType> types = new List <SmallType>(); foreach (var t in pTypeHints) { types.Add(CreateGenericParameter(t)); } var st = new SmallType(pNamespace, pName, pIsValueType) { GenericTypeParameters = types }; _types.AddType(st); return(st); }
public static SmallType FromSystemType(Type pType) { if (pType.IsByRef) { pType = pType.GetElementType(); } var t = _types.FromSystemType(pType); if (t != null) { return(t); } if (pType.IsArray) { t = FromSystemType(pType.GetElementType()); t = t.MakeArrayType(); return(t); } else if (pType.IsConstructedGenericType) { var ts = pType.GetGenericArguments(); SmallType[] types = new SmallType[ts.Length]; for (int i = 0; i < ts.Length; i++) { types[i] = FromSystemType(ts[i]); } return(CreateTupleOf(types)); } if (pType.IsGenericParameter) { return(CreateGenericParameter(pType.Name)); } return(null); }
public static string CastFunction(SmallType pType1, SmallType pType2) { return(pType1.ToString() + "___" + pType2.ToString()); }
public static MethodDefinition AddImportedCast(string pNamespace, SmallType pType1, string pParameterName, SmallType pType2) { var name = CastFunction(pType1, pType2); var md = AddImportedMethod(pNamespace, name, new MethodDefinition.Parameter[] { new MethodDefinition.Parameter(pType1, pParameterName, false) }, new SmallType[] { pType2 }, new List <SmallType>()); //TODO? _casts.Add(name); return(md); }
public static LocalDefinition DefineField(Syntax.IdentifierSyntax pNode, SmallType pType, SmallType pStructType) { return(LocalDefinition.CreateAsField(pNode, pNode.Value, pType, pStructType)); }
public static LocalDefinition CreateAsField(SyntaxNode pNode, string pValue, SmallType pType, SmallType pStructType) { return(new LocalDefinition(false, false, true, pValue, pType, pStructType)); }
public static LocalDefinition CreateAsParameter(SyntaxNode pNode, bool pIsAddress, string pValue, SmallType pType) { return(new LocalDefinition(true, pIsAddress, false, pValue, pType, null)); }
public static LocalDefinition Create(SyntaxNode pNode, string pValue, SmallType pType) { return(new LocalDefinition(false, false, false, pValue, pType, null)); }
private LocalDefinition(bool pParm, bool pIsAddress, bool pField, string pValue, SmallType pType, SmallType pStructType) { Parameter = pParm; IsAddress = pIsAddress; Field = pField; Value = pValue; Type = pType; _structType = pStructType; }
public void SetSystemType(SmallType pType, Type pSystemType) { var key = GetKey(pType.Namespace, pType.Name); _types[key] = Tuple.Create(pType, pSystemType); }
public Parameter(SmallType pType, string pName, bool pIsRef) { Type = pType; Name = pName; IsRef = pIsRef; }
public FieldDefinition(string pName, SmallType pType) { Name = pName; Type = pType; }