Ejemplo n.º 1
0
        public void Dispose()
        {
            // Load the class
            ClassHolder instance;

            // Protected
            lock (this)
            {
                // Load
                instance = m_Class;

                // Forget
                m_Class = null;
            }

            // Wipe out
            if (null != instance)
            {
                // Try to stop
                try
                {
                    // Shut down
                    _EnableDataDMA(instance.ClassPointer, false);
                }
                catch
                {
                    // Ignore any error
                }

                // Discard
                instance.Dispose();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// On first call simply forwards to <see cref="ClassHolder.Dispose"/> on the
        /// <see cref="m_Class"/>.
        /// </summary>
        public void Dispose()
        {
            // Cleanup
            using (m_Class)
                m_Class = null;

            // No need to finalize - we are down
            GC.SuppressFinalize(this);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Simply use the <see cref="ClassHolder"/> default constructor to create
        /// the C++ instance.
        /// </summary>
        public DVBFrontend()
        {
            // Create holder
            m_Class = new ClassHolder(LegacySize.CDVBFrontend);

            // Construct it
            CDVBFrontend_Construct(m_Class.ClassPointer);

            // Prepare for destruction
            m_Class.Destructor = new ClassHolder.DestructHandler(CDVBFrontend_Destruct);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Creates a new C++ instance using the standard <see cref="ClassHolder"/> constructor.
        /// </summary>
        public DVBAVControl()
        {
            // Create helper
            m_Class = new ClassHolder( LegacySize.CDVBAVControl );

            // Initialize
            CDVBAVControl_Construct( m_Class.ClassPointer );

            // Prepare destory
            m_Class.Destructor = new ClassHolder.DestructHandler( CDVBAVControl_Destruct );
        }
Ejemplo n.º 5
0
        public CommonInterface()
        {
            // Create the MFC wrapper
            m_Class = new ClassHolder(TTBudget.LegacySize.CDVBComnIF);

            // Construct C++ instance
            _Construct(m_Class.ClassPointer);

            // Attach destructor
            m_Class.Destructor = new ClassHolder.DestructHandler(_Destruct);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Creates the C++ instance using the default <see cref="ClassHolder"/> constructor.
        /// </summary>
        public DVBBoardControl()
        {
            // Create helper
            m_Class = new ClassHolder(LegacySize.CDVBBoardControl);

            // Construct
            CDVBBoardControl_Construct(m_Class.ClassPointer);

            // Attach destructor
            m_Class.Destructor = new ClassHolder.DestructHandler(CDVBBoardControl_Destruct);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Creates a new C++ instance using the standard <see cref="ClassHolder"/> constructor.
        /// </summary>
        public DVBAVControl()
        {
            // Create helper
            m_Class = new ClassHolder(LegacySize.CDVBAVControl);

            // Initialize
            CDVBAVControl_Construct(m_Class.ClassPointer);

            // Prepare destory
            m_Class.Destructor = new ClassHolder.DestructHandler(CDVBAVControl_Destruct);
        }
        /// <summary>
        /// Simply use the <see cref="ClassHolder"/> default constructor to create
        /// the C++ instance.
        /// </summary>
        public DVBCommonInterface()
        {
            // Create holder
            m_Class = new ClassHolder(LegacySize.CDVBComnIF);

            // Construct it
            CDVBComnIF_Construct(m_Class.ClassPointer);

            // Prepare for destruction
            m_Class.Destructor = new ClassHolder.DestructHandler(CDVBComnIF_Destruct);
        }
Ejemplo n.º 9
0
        public BoardControl()
        {
            // Create the MFC wrapper
            m_Class = new ClassHolder(TTBudget.LegacySize.CDVBBoardControl);

            // Construct C++ instance
            _Construct(m_Class.ClassPointer);

            // Attach destructor
            m_Class.Destructor = new ClassHolder.DestructHandler(_Destruct);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Creates the C++ instance using the default <see cref="ClassHolder"/> constructor.
        /// </summary>
        public DVBBoardControl()
        {
            // Create helper
            m_Class = new ClassHolder( LegacySize.CDVBBoardControl );

            // Construct 
            CDVBBoardControl_Construct( m_Class.ClassPointer );

            // Attach destructor
            m_Class.Destructor = new ClassHolder.DestructHandler( CDVBBoardControl_Destruct );
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Simply use the <see cref="ClassHolder"/> default constructor to create
        /// the C++ instance.
        /// </summary>
        public DVBCommonInterface()
        {
            // Create holder
            m_Class = new ClassHolder( LegacySize.CDVBComnIF );

            // Construct it
            CDVBComnIF_Construct( m_Class.ClassPointer );

            // Prepare for destruction
            m_Class.Destructor = new ClassHolder.DestructHandler( CDVBComnIF_Destruct );
        }
Ejemplo n.º 12
0
        public void DerivedClassInBaseClassArrayInClassHolderSerializing()
        {
            var config = new SerializerConfig();

            config.Match <DerivedClass>();

            var serializer = config.Create();

            var input = new ClassHolder
            {
                BaseClasses = new BaseClass[]
                {
                    new BaseClass
                    {
                        Name = "Base",
                        Age  = 11
                    },
                    new DerivedClass
                    {
                        Name  = "Derived",
                        Age   = 22,
                        House = 33
                    }
                }
            };

            using (var stream = CreateStream())
            {
                serializer.Serialize(stream, input);
                stream.Seek(0);
                var result = serializer.Deserialize <ClassHolder>(stream);

                Assert.NotNull(result.BaseClasses);
                Assert.Equal(2, result.BaseClasses.Length);

                var baseClass = result.BaseClasses[0];
                Assert.Equal("Base", baseClass.Name);
                Assert.Equal(11, baseClass.Age);

                var derivedClass = result.BaseClasses[1] as DerivedClass;
                Assert.NotNull(derivedClass);

                Assert.Equal("Derived", derivedClass.Name);
                Assert.Equal(22, derivedClass.Age);
                Assert.Equal(33, derivedClass.House);
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Simply forward to <see cref="ClassHolder.Dispose"/> on <see cref="m_Class"/>
        /// when called for the first time.
        /// <see cref="StopFilters"/>
        /// </summary>
        public void Dispose()
        {
            // Time to stop all filters
            StopFilters();

            // Forward
            if (null != m_Class)
            {
                m_Class.Dispose();
            }

            // Once
            m_Class = null;

            // No need to finalize
            GC.SuppressFinalize(this);
        }
Ejemplo n.º 14
0
        public FilterToCode(ushort pid, Action <byte[]> callback)
            : base(pid)
        {
            // Remember
            m_FilterQueue = new FilterQueue(callback);

            // Create the MFC wrapper
            m_Class = new ClassHolder(TTBudget.LegacySize.CDVBTSFilter);

            // Construct C++ instance
            _Construct(m_Class.ClassPointer);

            // Attach destructor
            m_Class.Destructor = new ClassHolder.DestructHandler(_Destruct);

            // Overload virtual function
            m_Class[1] = new InternalDataArrivalHandler(OnDataArrival);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// On first call the call is forwarded to <see cref="ClassHolder.Dispose"/> of
        /// <see cref="m_Class"/>.
        /// </summary>
        /// <remarks>
        /// Prior to the destruction of the C++ instance <see cref="DataDMA"/>
        /// is used to disable DMA access. Any <see cref="Exception"/> from this
        /// call is ignored.
        /// </remarks>
        public void Dispose()
        {
            // Shutdown class
            if (null != m_Class)
            {
                // Reset DMA
                try { DataDMA = false; }
                catch (Exception) { }

                // Done
                m_Class.Dispose();
            }

            // Once
            m_Class = null;

            // No need to finalize
            GC.SuppressFinalize(this);
        }
Ejemplo n.º 16
0
        public FilterToFile(ushort pid, string filePath)
            : base(pid)
        {
            // Create the MFC wrapper
            m_Class = new ClassHolder(TTBudget.LegacySize.CDVBFilterToFile);

            // Construct C++ instance
            _Construct(m_Class.ClassPointer);

            // Attach destructor
            m_Class.Destructor = new ClassHolder.DestructHandler(_Destruct);

            // Create MFC string
            using (MFCString path = new MFCString(filePath))
            {
                // Configure file - flags are Create and Write
                _SetFileParams(m_Class.ClassPointer, path.ClassPointer, 0x1001);
            }
        }
        /// <summary>
        /// Simply forward to <see cref="ClassHolder.Dispose"/> on <see cref="m_Class"/>
        /// when called for the first time.
        /// </summary>
        public void Dispose()
        {
            // Go down
            if (m_Open)
            {
                Close();
            }

            // Forward
            if (null != m_Class)
            {
                m_Class.Dispose();
            }

            // Once
            m_Class = null;

            // No need to finalize
            GC.SuppressFinalize(this);
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Legt das Ziel des Datenempfangs fest.
        /// </summary>
        /// <param name="dataSink">Die Methode zur Bearbeitung aller Daten.</param>
        public void SetTarget(Action <byte[]> dataSink)
        {
            // Stop all current processings
            InternalStop(false);

            // Create helper
            m_Class = new ClassHolder(LegacySize.CDVBTSFilter);

            // Construct
            CDVBTSFilter_Construct(m_Class.ClassPointer);

            // Attach destructor
            m_Class.Destructor = new ClassHolder.DestructHandler(CDVBTSFilter_Destruct);

            // Overload virtual function
            m_Class[1] = new InternalDataArrivalHandler(OnDataArrival);

            // Remember
            m_DataHandler = dataSink;
        }
Ejemplo n.º 19
0
        public void Dispose()
        {
            // Load the class
            ClassHolder instance;

            // Protected
            lock (this)
            {
                // Load
                instance = m_Class;

                // Forget
                m_Class = null;
            }

            // Wipe out
            if (null != instance)
            {
                instance.Dispose();
            }
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Beendet den Empfang.
        /// </summary>
        /// <param name="remove">Gesetzt, wenn auch eine Abmeldung bei dem zugehörige Gerät erwünscht ist.</param>
        private void InternalStop(bool remove)
        {
            // Remove from frontend
            if (remove)
            {
                if (m_Frontend != null)
                {
                    // Remove
                    m_Frontend.RemoveFilter(m_streamIdentifier);

                    // Forget
                    m_Frontend = null;
                }
            }

            // Discard registered handler
            m_DataHandler = null;

            // Nothing to do
            if (m_Class == null)
            {
                return;
            }

            // With cleanup
            try
            {
                // Terminate
                Suspend();
            }
            finally
            {
                // Remove C++ instance
                m_Class.Dispose();

                // Detach from object
                m_Class = null;
            }
        }
Ejemplo n.º 21
0
        public virtual void Dispose()
        {
            // Make sure that filter is deactivated
            Stop();

            // Load the class
            ClassHolder instance;

            // Protected
            lock (this)
            {
                // Load
                instance = m_Class;

                // Forget
                m_Class = null;
            }

            // Wipe out
            if (null != instance)
            {
                instance.Dispose();
            }
        }
    private void OnGUI()
    {
        // Make sure list isn't null
        if (_list == null)
            _list = new List<ClassA>();

        // Init if not done yet
        if (window == null)
            Init();

        // Buttons
        GUILayout.BeginArea(new Rect(10, 10, window.position.width - 20, 75));
        {
            GUILayout.BeginHorizontal();
            {
                // Add A
                if (GUILayout.Button("Add Class A", GUILayout.ExpandHeight(true)))
                    _list.Add(new ClassA());

                // Add B
                if (GUILayout.Button("Add Class B", GUILayout.ExpandHeight(true)))
                    _list.Add(new ClassB());

                if (GUILayout.Button("Clear", GUILayout.ExpandHeight(true)))
                    _list.Clear();

                // Save to file
                if (GUILayout.Button("Save", GUILayout.ExpandHeight(true)))
                {
                    // Create instance of holder
                    ClassHolder asset = new ClassHolder(_list);  //scriptable object

                    // Assign a COPY of the list. Not the list itself, or it would
                    // keep updating
                    _list = new List<ClassA>(_list);

                    // Save
                    AssetDatabase.CreateAsset(asset, "Assets/classes.asset");
                    AssetDatabase.SaveAssets();
                }

                // Load from file
                if (GUILayout.Button("Load", GUILayout.ExpandHeight(true)))
                {
                    // Load
                    Object o = AssetDatabase.LoadAssetAtPath("Assets/classes.asset", typeof(ClassHolder));

                    // Cast into class holder
                    ClassHolder classHolder = (ClassHolder)o;

                    // Copy the list
                    if (classHolder != null)
                        _list = _list = new List<ClassA>(classHolder.list);
                }
            }
            GUILayout.EndHorizontal();
        }
        GUILayout.EndArea();

        // Display the list
        GUILayout.BeginArea(new Rect(10, 110, 200, window.position.height - 80));
        {
            GUILayout.Space(20);
            GUILayout.Label("Childcount : " + _list.Count);
            GUILayout.Space(20);

            foreach (ClassA a in _list)
                if (a != null)
                    a.Draw();
        }
        GUILayout.EndArea();
    }
    private void OnGUI()
    {
        // Make sure list isn't null
        if (_list == null)
        {
            _list = new List <ClassA>();
        }

        // Init if not done yet
        if (window == null)
        {
            Init();
        }

        // Buttons
        GUILayout.BeginArea(new Rect(10, 10, window.position.width - 20, 75));
        {
            GUILayout.BeginHorizontal();
            {
                // Add A
                if (GUILayout.Button("Add Class A", GUILayout.ExpandHeight(true)))
                {
                    _list.Add(new ClassA());
                }

                // Add B
                if (GUILayout.Button("Add Class B", GUILayout.ExpandHeight(true)))
                {
                    _list.Add(new ClassB());
                }

                if (GUILayout.Button("Clear", GUILayout.ExpandHeight(true)))
                {
                    _list.Clear();
                }

                // Save to file
                if (GUILayout.Button("Save", GUILayout.ExpandHeight(true)))
                {
                    // Create instance of holder
                    ClassHolder asset = new ClassHolder(_list);  //scriptable object

                    // Assign a COPY of the list. Not the list itself, or it would
                    // keep updating
                    _list = new List <ClassA>(_list);

                    // Save
                    AssetDatabase.CreateAsset(asset, "Assets/classes.asset");
                    AssetDatabase.SaveAssets();
                }

                // Load from file
                if (GUILayout.Button("Load", GUILayout.ExpandHeight(true)))
                {
                    // Load
                    Object o = AssetDatabase.LoadAssetAtPath("Assets/classes.asset", typeof(ClassHolder));

                    // Cast into class holder
                    ClassHolder classHolder = (ClassHolder)o;

                    // Copy the list
                    if (classHolder != null)
                    {
                        _list = _list = new List <ClassA>(classHolder.list);
                    }
                }
            }
            GUILayout.EndHorizontal();
        }
        GUILayout.EndArea();

        // Display the list
        GUILayout.BeginArea(new Rect(10, 110, 200, window.position.height - 80));
        {
            GUILayout.Space(20);
            GUILayout.Label("Childcount : " + _list.Count);
            GUILayout.Space(20);

            foreach (ClassA a in _list)
            {
                if (a != null)
                {
                    a.Draw();
                }
            }
        }
        GUILayout.EndArea();
    }
Ejemplo n.º 24
0
        /// <summary>
        /// On first call the call is forwarded to <see cref="ClassHolder.Dispose"/> of
        /// <see cref="m_Class"/>. 
        /// </summary>
        /// <remarks>
        /// Prior to the destruction of the C++ instance <see cref="DataDMA"/>
        /// is used to disable DMA access. Any <see cref="Exception"/> from this
        /// call is ignored.
        /// </remarks>
        public void Dispose()
        {
            // Shutdown class
            if (null != m_Class)
            {
                // Reset DMA
                try { DataDMA = false; }
                catch (Exception) { }

                // Done
                m_Class.Dispose();
            }

            // Once
            m_Class = null;

            // No need to finalize
            GC.SuppressFinalize( this );
        }
Ejemplo n.º 25
0
        /// <summary>
        /// Simply forward to <see cref="ClassHolder.Dispose"/> on <see cref="m_Class"/>
        /// when called for the first time.
        /// </summary>
        public void Dispose()
        {
            // Go down
            if (m_Open) Close();

            // Forward
            if (null != m_Class) m_Class.Dispose();

            // Once
            m_Class = null;

            // No need to finalize
            GC.SuppressFinalize( this );
        }
Ejemplo n.º 26
0
        /// <summary>
        /// Legt das Ziel des Datenempfangs fest.
        /// </summary>
        /// <param name="dataSink">Die Methode zur Bearbeitung aller Daten.</param>
        public void SetTarget( Action<byte[]> dataSink )
        {
            // Stop all current processings
            InternalStop( false );

            // Create helper
            m_Class = new ClassHolder( LegacySize.CDVBTSFilter );

            // Construct 
            CDVBTSFilter_Construct( m_Class.ClassPointer );

            // Attach destructor
            m_Class.Destructor = new ClassHolder.DestructHandler( CDVBTSFilter_Destruct );

            // Overload virtual function
            m_Class[1] = new InternalDataArrivalHandler( OnDataArrival );

            // Remember
            m_DataHandler = dataSink;
        }
Ejemplo n.º 27
0
        /// <summary>
        /// Simply forward to <see cref="ClassHolder.Dispose"/> on <see cref="m_Class"/>
        /// when called for the first time.
        /// <see cref="StopFilters"/>
        /// </summary>
        public void Dispose()
        {
            // Time to stop all filters
            StopFilters();

            // Forward
            if (null != m_Class) m_Class.Dispose();

            // Once
            m_Class = null;

            // No need to finalize
            GC.SuppressFinalize( this );
        }
Ejemplo n.º 28
0
        /// <summary>
        /// On first call simply forwards to <see cref="ClassHolder.Dispose"/> on the
        /// <see cref="m_Class"/>.
        /// </summary>
        public void Dispose()
        {
            // Cleanup
            using (m_Class)
                m_Class = null;

            // No need to finalize - we are down
            GC.SuppressFinalize( this );
        }
Ejemplo n.º 29
0
        /// <summary>
        /// Beendet den Empfang.
        /// </summary>
        /// <param name="remove">Gesetzt, wenn auch eine Abmeldung bei dem zugehörige Gerät erwünscht ist.</param>
        private void InternalStop( bool remove )
        {
            // Remove from frontend
            if (remove)
                if (m_Frontend != null)
                {
                    // Remove
                    m_Frontend.RemoveFilter( m_streamIdentifier );

                    // Forget
                    m_Frontend = null;
                }

            // Discard registered handler
            m_DataHandler = null;

            // Nothing to do
            if (m_Class == null)
                return;

            // With cleanup
            try
            {
                // Terminate
                Suspend();
            }
            finally
            {
                // Remove C++ instance
                m_Class.Dispose();

                // Detach from object
                m_Class = null;
            }
        }
Ejemplo n.º 30
0
        /// <summary>
        /// Simply use the <see cref="ClassHolder"/> default constructor to create
        /// the C++ instance.
        /// </summary>
        public DVBFrontend()
        {
            // Create holder
            m_Class = new ClassHolder( LegacySize.CDVBFrontend );

            // Construct it
            CDVBFrontend_Construct( m_Class.ClassPointer );

            // Prepare for destruction
            m_Class.Destructor = new ClassHolder.DestructHandler( CDVBFrontend_Destruct );
        }