Bind.FuncProcessor.WrapVoidPointers C# (CSharp) Méthode

WrapVoidPointers() static private méthode

static private WrapVoidPointers ( Function func, EnumCollection enums ) : IEnumerable
func Function
enums EnumCollection
Résultat IEnumerable
        static IEnumerable<Function> WrapVoidPointers(Function func, EnumCollection enums)
        {
            if (index >= 0 && index < func.Parameters.Count)
            {
                if (func.Parameters[index].WrapperType == WrapperTypes.GenericParameter)
                {
                    // Recurse to the last parameter
                    ++index;
                    foreach (var w in WrapVoidPointers(func, enums))
                        yield return w;
                    --index;

                    // On stack rewind, create generic wrappers
                    func.Parameters[index].Reference = true;
                    func.Parameters[index].Array = 0;
                    func.Parameters[index].Pointer = 0;
                    func.Parameters[index].Generic = true;
                    func.Parameters[index].CurrentType = "T" + index.ToString();
                    func.Parameters[index].Flow = FlowDirection.Undefined;
                    func.Parameters.Rebuild = true;
                    CreateBody(func, false, enums);
                    yield return new Function(func);

                    func.Parameters[index].Reference = false;
                    func.Parameters[index].Array = 1;
                    func.Parameters[index].Pointer = 0;
                    func.Parameters[index].Generic = true;
                    func.Parameters[index].CurrentType = "T" + index.ToString();
                    func.Parameters[index].Flow = FlowDirection.Undefined;
                    func.Parameters.Rebuild = true;
                    CreateBody(func, false, enums);
                    yield return new Function(func);

                    func.Parameters[index].Reference = false;
                    func.Parameters[index].Array = 2;
                    func.Parameters[index].Pointer = 0;
                    func.Parameters[index].Generic = true;
                    func.Parameters[index].CurrentType = "T" + index.ToString();
                    func.Parameters[index].Flow = FlowDirection.Undefined;
                    func.Parameters.Rebuild = true;
                    CreateBody(func, false, enums);
                    yield return new Function(func);

                    func.Parameters[index].Reference = false;
                    func.Parameters[index].Array = 3;
                    func.Parameters[index].Pointer = 0;
                    func.Parameters[index].Generic = true;
                    func.Parameters[index].CurrentType = "T" + index.ToString();
                    func.Parameters[index].Flow = FlowDirection.Undefined;
                    func.Parameters.Rebuild = true;
                    CreateBody(func, false, enums);
                    yield return new Function(func);
                }
                else
                {
                    // Recurse to the last parameter
                    ++index;
                    foreach (var w in WrapVoidPointers(func, enums))
                        yield return w;
                    --index;
                }
            }
        }