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