Пример #1
0
        public string GenerateStruct(string aIndent, string aStructName, StructCType aStructType)
        {
            var fieldStrings = aStructType.Fields.Select(x =>
            {
                var csharpType = GetCSharpMarshalType(x.CType, x.Name, false);
                var attribute  = csharpType.CreateFieldAttribute();
                if (attribute != "")
                {
                    attribute = aIndent + SingleIndent + attribute + "\n";
                }
                return(String.Format(
                           StructFieldTemplate,
                           aIndent + SingleIndent,
                           csharpType.CreateFieldDeclaration(x.Name),
                           attribute));
            });
            var joinedFieldStrings = String.Join("", fieldStrings);
            ApiStructConfiguration config;

            if (!iStructConfigurations.TryGetValue(aStructName, out config))
            {
                config = new ApiStructConfiguration {
                    ManagedName = ManagedNameForNativeType(aStructName),
                    NativeName  = aStructName,
                    ForcePublic = false
                };
            }
            string visibility = config.ForcePublic ? "public" : "internal";

            return(String.Format(StructTemplate, aIndent, config.ManagedName, joinedFieldStrings, visibility).Replace("\n", Environment.NewLine));
        }
Пример #2
0
        public string GenerateCSharpClass(string aIndent, string aHandleName, IEnumerable <KeyValuePair <string, FunctionCType> > aFunctions)
        {
            ApiStructConfiguration config;

            if (!iStructConfigurations.TryGetValue(aHandleName, out config))
            {
                config = new ApiStructConfiguration {
                    ManagedName = ManagedNameForNativeType(aHandleName),
                    NativeName  = aHandleName
                };
            }

            StringBuilder methodBuilder = new StringBuilder();

            methodBuilder.AppendFormat("{0}public partial class {1}\n", aIndent, config.ManagedName);
            methodBuilder.AppendFormat("{0}{{\n", aIndent);
            methodBuilder.AppendFormat("{0}    internal IntPtr _handle;\n", aIndent);
            methodBuilder.AppendFormat("{0}    internal {1}(IntPtr handle)\n", aIndent, config.ManagedName);
            methodBuilder.AppendFormat("{0}    {{\n", aIndent);
            methodBuilder.AppendFormat("{0}        this._handle = handle;\n", aIndent);
            methodBuilder.AppendFormat("{0}    }}\n", aIndent);
            methodBuilder.AppendFormat("\n");
            HashSet <string> suppressedFunctions = new HashSet <string>(config.SuppressFunctions);

            foreach (var kvpFunction in aFunctions)
            {
                if (suppressedFunctions.Contains(kvpFunction.Key))
                {
                    methodBuilder.Append(aIndent + String.Format("    // Suppressed function '{0}'.\n", kvpFunction.Key));
                    continue;
                }
                methodBuilder.Append(GenerateCSharpWrappingMethod(aIndent + "    ", kvpFunction.Key, aHandleName, kvpFunction.Value));
            }
            methodBuilder.Append(aIndent + "}\n");
            return(methodBuilder.ToString().Replace("\n", Environment.NewLine));
        }
Пример #3
0
        public string GenerateCSharpClass(string aIndent, string aHandleName, IEnumerable<KeyValuePair<string, FunctionCType>> aFunctions)
        {
            ApiStructConfiguration config;

            if (!iStructConfigurations.TryGetValue(aHandleName, out config))
            {
                config = new ApiStructConfiguration{
                    ManagedName = ManagedNameForNativeType(aHandleName),
                    NativeName = aHandleName
                };
            }

            StringBuilder methodBuilder = new StringBuilder();

            methodBuilder.AppendFormat("{0}public partial class {1}\n", aIndent, config.ManagedName);
            methodBuilder.AppendFormat("{0}{{\n", aIndent);
            methodBuilder.AppendFormat("{0}    internal IntPtr _handle;\n", aIndent);
            methodBuilder.AppendFormat("{0}    internal {1}(IntPtr handle)\n", aIndent, config.ManagedName);
            methodBuilder.AppendFormat("{0}    {{\n", aIndent);
            methodBuilder.AppendFormat("{0}        this._handle = handle;\n", aIndent);
            methodBuilder.AppendFormat("{0}    }}\n", aIndent);
            methodBuilder.AppendFormat("\n");
            HashSet<string> suppressedFunctions = new HashSet<string>(config.SuppressFunctions);
            foreach (var kvpFunction in aFunctions)
            {
                if (suppressedFunctions.Contains(kvpFunction.Key))
                {
                    methodBuilder.Append(aIndent + String.Format("    // Suppressed function '{0}'.\n", kvpFunction.Key));
                    continue;
                }
                methodBuilder.Append(GenerateCSharpWrappingMethod(aIndent+"    ", kvpFunction.Key, aHandleName, kvpFunction.Value));
            }
            methodBuilder.Append(aIndent + "}\n");
            return methodBuilder.ToString().Replace("\n", Environment.NewLine);
        }
Пример #4
0
 public string GenerateStruct(string aIndent, string aStructName, StructCType aStructType)
 {
     var fieldStrings = aStructType.Fields.Select(x =>
         {
             var csharpType = GetCSharpMarshalType(x.CType, x.Name, false);
             var attribute = csharpType.CreateFieldAttribute();
             if (attribute != "")
                 attribute = aIndent + SingleIndent + attribute + "\n";
             return String.Format(
                 StructFieldTemplate,
                 aIndent + SingleIndent,
                 csharpType.CreateFieldDeclaration(x.Name),
                 attribute);
         });
     var joinedFieldStrings = String.Join("", fieldStrings);
     ApiStructConfiguration config;
     if (!iStructConfigurations.TryGetValue(aStructName, out config))
     {
         config = new ApiStructConfiguration{
             ManagedName = ManagedNameForNativeType(aStructName),
             NativeName = aStructName,
             ForcePublic = false
         };
     }
     string visibility = config.ForcePublic ? "public" : "internal";
     return String.Format(StructTemplate, aIndent, config.ManagedName, joinedFieldStrings, visibility).Replace("\n", Environment.NewLine);
 }