Пример #1
0
        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());
        }
Пример #2
0
        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());
        }
Пример #3
0
        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());
        }
Пример #4
0
        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());
        }
Пример #5
0
 public void AddMember(StructureMemberModel parameter)
 {
     members.Add(parameter);
 }
Пример #6
0
 public MarshalBehavior ResolveBehavior(StructureMemberModel model)
 {
     return ResolveBehavior(model.Type);
 }
Пример #7
0
 public MarshalBehavior ResolveBehavior(StructureMemberModel model)
 {
     return(ResolveBehavior(model.Type));
 }
Пример #8
0
 public void AddMember(StructureMemberModel parameter)
 {
     members.Add(parameter);
 }