Bind.FuncProcessor.CreateCLSCompliantWrappers C# (CSharp) Method

CreateCLSCompliantWrappers() static private method

static private CreateCLSCompliantWrappers ( FunctionCollection functions, EnumCollection enums ) : FunctionCollection
functions FunctionCollection
enums EnumCollection
return FunctionCollection
        static FunctionCollection CreateCLSCompliantWrappers(FunctionCollection functions, EnumCollection enums)
        {
            // If the function is not CLS-compliant (e.g. it contains unsigned parameters)
            // we need to create a CLS-Compliant overload. However, we should only do this
            // iff the opengl function does not contain unsigned/signed overloads itself
            // to avoid redefinitions.
            var wrappers = new FunctionCollection();
            foreach (var list in functions.Values)
            {
                foreach (var f in list)
                {
                    wrappers.AddChecked(f);

                    if (!f.CLSCompliant)
                    {
                        Function cls = new Function(f);

                        cls.Body.Clear();
                        CreateBody(cls, true, enums);

                        bool modified = false;
                        for (int i = 0; i < f.Parameters.Count; i++)
                        {
                            cls.Parameters[i].CurrentType = cls.Parameters[i].GetCLSCompliantType();
                            if (cls.Parameters[i].CurrentType != f.Parameters[i].CurrentType)
                                modified = true;
                        }

                        if (modified)
                            wrappers.AddChecked(cls);
                    }
                }
            }
            return wrappers;
        }