Mercurial > projects > ddmd
comparison dmd/TypeArray.d @ 84:be2ab491772e
Expressions -> Vector!Expression
author | Eldar Insafutdinov <e.insafutdinov@gmail.com> |
---|---|
date | Mon, 30 Aug 2010 16:12:19 +0100 |
parents | 2e2a5c3f943a |
children | e28b18c23469 |
comparison
equal
deleted
inserted
replaced
83:ee670dd808a8 | 84:be2ab491772e |
---|---|
47 nm = name[n.ty == Twchar]; | 47 nm = name[n.ty == Twchar]; |
48 fd = FuncDeclaration.genCfunc(Type.tindex, nm); | 48 fd = FuncDeclaration.genCfunc(Type.tindex, nm); |
49 ec = new VarExp(Loc(0), fd); | 49 ec = new VarExp(Loc(0), fd); |
50 e = e.castTo(sc, n.arrayOf()); // convert to dynamic array | 50 e = e.castTo(sc, n.arrayOf()); // convert to dynamic array |
51 arguments = new Expressions(); | 51 arguments = new Expressions(); |
52 arguments.push(cast(void*)e); | 52 arguments.push(e); |
53 e = new CallExp(e.loc, ec, arguments); | 53 e = new CallExp(e.loc, ec, arguments); |
54 e.type = next.arrayOf(); | 54 e.type = next.arrayOf(); |
55 } | 55 } |
56 else if (ident == Id.sort && (n.ty == Tchar || n.ty == Twchar)) | 56 else if (ident == Id.sort && (n.ty == Tchar || n.ty == Twchar)) |
57 { | 57 { |
64 nm = name2[n.ty == Twchar]; | 64 nm = name2[n.ty == Twchar]; |
65 fd = FuncDeclaration.genCfunc(Type.tindex, nm); | 65 fd = FuncDeclaration.genCfunc(Type.tindex, nm); |
66 ec = new VarExp(Loc(0), fd); | 66 ec = new VarExp(Loc(0), fd); |
67 e = e.castTo(sc, n.arrayOf()); // convert to dynamic array | 67 e = e.castTo(sc, n.arrayOf()); // convert to dynamic array |
68 arguments = new Expressions(); | 68 arguments = new Expressions(); |
69 arguments.push(cast(void*)e); | 69 arguments.push(e); |
70 e = new CallExp(e.loc, ec, arguments); | 70 e = new CallExp(e.loc, ec, arguments); |
71 e.type = next.arrayOf(); | 71 e.type = next.arrayOf(); |
72 } | 72 } |
73 else if (ident == Id.reverse || ident == Id.dup || ident == Id.idup) | 73 else if (ident == Id.reverse || ident == Id.dup || ident == Id.idup) |
74 { | 74 { |
83 fd = FuncDeclaration.genCfunc(Type.tindex, dup ? Id.adDup : Id.adReverse); | 83 fd = FuncDeclaration.genCfunc(Type.tindex, dup ? Id.adDup : Id.adReverse); |
84 ec = new VarExp(Loc(0), fd); | 84 ec = new VarExp(Loc(0), fd); |
85 e = e.castTo(sc, n.arrayOf()); // convert to dynamic array | 85 e = e.castTo(sc, n.arrayOf()); // convert to dynamic array |
86 arguments = new Expressions(); | 86 arguments = new Expressions(); |
87 if (dup) | 87 if (dup) |
88 arguments.push(cast(void*)getTypeInfo(sc)); | 88 arguments.push(getTypeInfo(sc)); |
89 arguments.push(cast(void*)e); | 89 arguments.push(e); |
90 if (!dup) | 90 if (!dup) |
91 arguments.push(cast(void*)new IntegerExp(Loc(0), size, Type.tsize_t)); | 91 arguments.push(new IntegerExp(Loc(0), size, Type.tsize_t)); |
92 e = new CallExp(e.loc, ec, arguments); | 92 e = new CallExp(e.loc, ec, arguments); |
93 if (ident == Id.idup) | 93 if (ident == Id.idup) |
94 { | 94 { |
95 Type einv = next.invariantOf(); | 95 Type einv = next.invariantOf(); |
96 if (next.implicitConvTo(einv) < MATCHconst) | 96 if (next.implicitConvTo(einv) < MATCHconst) |
108 | 108 |
109 fd = FuncDeclaration.genCfunc(tint32.arrayOf(), "_adSort"); | 109 fd = FuncDeclaration.genCfunc(tint32.arrayOf(), "_adSort"); |
110 ec = new VarExp(Loc(0), fd); | 110 ec = new VarExp(Loc(0), fd); |
111 e = e.castTo(sc, n.arrayOf()); // convert to dynamic array | 111 e = e.castTo(sc, n.arrayOf()); // convert to dynamic array |
112 arguments = new Expressions(); | 112 arguments = new Expressions(); |
113 arguments.push(cast(void*)e); | 113 arguments.push(e); |
114 arguments.push(n.ty == Tsarray | 114 arguments.push(n.ty == Tsarray |
115 ? cast(void*)n.getTypeInfo(sc) // don't convert to dynamic array | 115 ? n.getTypeInfo(sc) // don't convert to dynamic array |
116 : cast(void*)n.getInternalTypeInfo(sc)); | 116 : n.getInternalTypeInfo(sc)); |
117 e = new CallExp(e.loc, ec, arguments); | 117 e = new CallExp(e.loc, ec, arguments); |
118 e.type = next.arrayOf(); | 118 e.type = next.arrayOf(); |
119 } | 119 } |
120 else | 120 else |
121 { | 121 { |