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 {