Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ FastCreate< T0 >()

Definition at line 265 of file CallInstruction.cs.

266 {
268 if (type == null)
269 {
270 if (target.ReturnType == typeof(void))
271 {
272 return new ActionCallInstruction<T0>(target);
273 }
274 return new FuncCallInstruction<T0>(target);
275 }
276 if (type.IsEnum)
277 {
278 return SlowCreate(target, pi);
279 }
280 switch (type.GetTypeCode())
281 {
282 case TypeCode.Object:
283 if (!(type != typeof(object)) || (!IndexIsNotReturnType(1, target, pi) && !type.IsValueType))
284 {
285 return FastCreate<T0, object>(target, pi);
286 }
287 break;
288 case TypeCode.Int16:
289 return FastCreate<T0, short>(target, pi);
290 case TypeCode.Int32:
291 return FastCreate<T0, int>(target, pi);
292 case TypeCode.Int64:
293 return FastCreate<T0, long>(target, pi);
294 case TypeCode.Boolean:
295 return FastCreate<T0, bool>(target, pi);
296 case TypeCode.Char:
297 return FastCreate<T0, char>(target, pi);
298 case TypeCode.Byte:
299 return FastCreate<T0, byte>(target, pi);
300 case TypeCode.Decimal:
301 return FastCreate<T0, decimal>(target, pi);
302 case TypeCode.DateTime:
303 return FastCreate<T0, DateTime>(target, pi);
304 case TypeCode.Double:
305 return FastCreate<T0, double>(target, pi);
306 case TypeCode.Single:
307 return FastCreate<T0, float>(target, pi);
308 case TypeCode.UInt16:
309 return FastCreate<T0, ushort>(target, pi);
310 case TypeCode.UInt32:
311 return FastCreate<T0, uint>(target, pi);
312 case TypeCode.UInt64:
313 return FastCreate<T0, ulong>(target, pi);
314 case TypeCode.String:
315 return FastCreate<T0, string>(target, pi);
316 case TypeCode.SByte:
317 return FastCreate<T0, sbyte>(target, pi);
318 }
319 return SlowCreate(target, pi);
320 }
static CallInstruction SlowCreate(MethodInfo info, ParameterInfo[] pis)
static Type TryGetParameterOrReturnType(MethodInfo target, ParameterInfo[] pi, int index)
static bool IndexIsNotReturnType(int index, MethodInfo target, ParameterInfo[] pi)

References System.Linq.Expressions.Interpreter.CallInstruction.IndexIsNotReturnType(), System.Reflection.MethodInfo.ReturnType, System.Linq.Expressions.Interpreter.CallInstruction.SlowCreate(), System.Linq.Expressions.Interpreter.CallInstruction.TryGetParameterOrReturnType(), and System.type.