public static string StructureMemberMarshallerReleaseStatement(TemplateEngine engine, object source) { StructureMemberModel member = (StructureMemberModel)source; var builder = new StringBuilder(); switch (marshaller.ResolveBehavior(member)) { case MarshalBehavior.String: builder.AppendFormat("System.Runtime.InteropServices.Marshal.FreeHGlobal({0});", member.Name); break; case MarshalBehavior.Structure: builder.AppendFormat("{0}.Release();", member.Name); break; default: break; } return(builder.ToString()); }
public static string MemberToMarshallerAssignment(TemplateEngine engine, object source) { StructureMemberModel member = (StructureMemberModel)source; var builder = new StringBuilder(); switch (marshaller.ResolveBehavior(member)) { case MarshalBehavior.String: builder.AppendFormat("result.{0} = source.{0} != null ? System.Runtime.InteropServices.Marshal.StringToHGlobalAnsi(source.{0}) : System.IntPtr.Zero;", member.Name); break; case MarshalBehavior.Structure: builder.AppendFormat("result.{0} = {1}.ToMarshaller(source.{0});", member.Name, GetQualifiedName(engine, member.Type)); break; default: builder.AppendFormat("result.{0} = source.{0};", member.Name); break; } return(builder.ToString()); }
public static string MemberFromMarshallerAssignment(TemplateEngine engine, object source) { StructureMemberModel member = (StructureMemberModel)source; var builder = new StringBuilder(); switch (marshaller.ResolveBehavior(member)) { case MarshalBehavior.String: builder.AppendFormat("result.{0} = new string((sbyte*)source.{0});", member.Name); break; case MarshalBehavior.Structure: builder.AppendFormat("result.{0} = {1}.FromMarshaller(source.{0});", member.Name, GetQualifiedName(engine, member.Type)); break; default: builder.AppendFormat("result.{0} = source.{0};", member.Name); break; } return(builder.ToString()); }
public static string StructureMemberMarshallerDeclaration(TemplateEngine engine, object source) { StructureMemberModel member = (StructureMemberModel)source; var builder = new StringBuilder(); switch (marshaller.ResolveBehavior(member)) { case MarshalBehavior.String: builder.AppendFormat("public System.IntPtr {0};", member.Name); break; case MarshalBehavior.Structure: builder.AppendFormat("public {0}Marshaller {1};", GetQualifiedName(engine, member.Type), member.Name); break; default: builder.AppendFormat("public {0} {1};", GetQualifiedName(engine, member.Type), member.Name); break; } return(builder.ToString()); }
public void AddMember(StructureMemberModel parameter) { members.Add(parameter); }
public MarshalBehavior ResolveBehavior(StructureMemberModel model) { return ResolveBehavior(model.Type); }
public MarshalBehavior ResolveBehavior(StructureMemberModel model) { return(ResolveBehavior(model.Type)); }
public void AddMember(StructureMemberModel parameter) { members.Add(parameter); }