Ejemplo n.º 1
0
        private void ProcessStructMembers(CodeTypeDeclaration ctd, TransformKindFlags kind)
        {
            if (TransformKindFlags.StructMembers != (Kind & TransformKindFlags.StructMembers))
            {
                return;
            }

            foreach (TransformPlugin plugin in _list)
            {
                if (0 != (plugin.TransformKind & kind))
                {
                    plugin.ProcessStructMembers(ctd);
                }
            }
        }
Ejemplo n.º 2
0
        public MarshalTransform(LanguageType lang, NativeSymbolBag bag, TransformKindFlags kind)
        {
            _trans = new CodeTransform(lang, bag);
            Kind   = kind;

            // Method Parameters
            _list.Add(new BooleanTypesTransformPlugin());

            // Process BSTR types before any other string.  BSTR can techinally be used as other String types
            // such as LPWSTR and the other string matching code will flag them as such.  Therefore we will
            // process them first since the reverse is not true
            _list.Add(new BstrTransformPlugin());
            _list.Add(new MutableStringBufferTransformPlugin());
            _list.Add(new ConstantStringTransformPlugin());
            _list.Add(new ArrayParameterTransformPlugin(_trans));
            _list.Add(new BetterManagedTypesTransformPlugin());
            _list.Add(new PointerToKnownTypeTransformPlugin(_trans));
            _list.Add(new SystemIntTransformPlugin());
            _list.Add(new RawStringTransformPlugin());

            // Very low on the list as it's a last ditch effort
            _list.Add(new DoublePointerOutTransformPlugin());
            _list.Add(new PointerPointerTransformPlugin());
            _list.Add(new DirectionalModifiersTransformPlugin());

            // Struct Member
            _list.Add(new StringBufferStructMemberTransformPlugin());
            _list.Add(new StringPointerStructMemberTransformPlugin());
            _list.Add(new BoolStructMemberTransformPlugin());

            // Union Members
            _list.Add(new BoolUnionMemberTransformPlugin());

            // Mainly wrapper generators
            _list.Add(new OneWayStringBufferTransformPlugin());
            _list.Add(new TwoWayStringBufferTransformPlugin());
            _list.Add(new TwoWayViaReturnStringBufferTransformPlugin());
            _list.Add(new PInvokePointerTransformPlugin());

            foreach (TransformPlugin cur in _list)
            {
                cur.LanguageType = lang;
            }
        }