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)); }
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)); }
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); }
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); }