Пример #1
0
        private static ParameterDefinition OutVariant(ParameterDefinition pd)
        {
            TypeSpec typeSpec = new TypeSpec(pd.Type.Name, pd.Type.PointerIndirection - 1);

            return(new ParameterDefinition(pd.Name, typeSpec, ParameterModifier.Out, pd.IsOptional));
        }
Пример #2
0
        private static ParameterDefinition ArrayVariant(ParameterDefinition pd, int dimensions)
        {
            TypeSpec typeSpec = new TypeSpec(pd.Type.Name, pd.Type.PointerIndirection - 1, dimensions);

            return(new ParameterDefinition(pd.Name, typeSpec, ParameterModifier.None, pd.IsOptional));
        }
Пример #3
0
        private static ParameterDefinition StringVariant(ParameterDefinition pd)
        {
            TypeSpec typeSpec = new TypeSpec("string");

            return(new ParameterDefinition(pd.Name, typeSpec, ParameterModifier.None, pd.IsOptional));
        }
Пример #4
0
        private static IEnumerable <ParameterDefinition> GenerateVariantParameters(CommandDefinition cd, ParameterDefinition pd)
        {
            if (CanHaveVariant(pd))
            {
                if ((cd.Name.StartsWith("vkCreate") || cd.Name.StartsWith("vkAllocate") || cd.Name.StartsWith("vkGet")) && pd == cd.Parameters.Last())
                {
                    yield return(OutVariant(pd));
                }
                else if (pd.Type.Name == "char" && pd.Type.PointerIndirection == 1)
                {
                    yield return(StringVariant(pd));
                }
                else
                {
                    yield return(RefVariant(pd));

                    yield return(IntPtrVariant(pd));

                    if (pd.Name.EndsWith("Infos"))
                    {
                        yield return(ArrayVariant(pd, 1));
                    }
                }
            }
        }
Пример #5
0
 private static bool CanHaveVariant(ParameterDefinition pd)
 {
     return(pd.Type.PointerIndirection > 0 && pd.Type.Name != "void");
 }
Пример #6
0
        private static ParameterDefinition IntPtrVariant(ParameterDefinition pd)
        {
            TypeSpec typeSpec = new TypeSpec(nameof(IntPtr));

            return(new ParameterDefinition(pd.Name, typeSpec, ParameterModifier.None, pd.IsOptional));
        }