source: trunk/CrypPlugins/BoolComparator/BoolComparator.cs @ 2214

Last change on this file since 2214 was 1259, checked in by Matthäus Wander, 12 years ago

shortened license text to boilerplate notice in all source files

File size: 6.2 KB
Line 
1/*
2   Copyright 2008 Sebastian Przybylski, University of Siegen
3
4   Licensed under the Apache License, Version 2.0 (the "License");
5   you may not use this file except in compliance with the License.
6   You may obtain a copy of the License at
7
8       http://www.apache.org/licenses/LICENSE-2.0
9
10   Unless required by applicable law or agreed to in writing, software
11   distributed under the License is distributed on an "AS IS" BASIS,
12   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   See the License for the specific language governing permissions and
14   limitations under the License.
15*/
16
17using System;
18using System.Collections.Generic;
19using System.Linq;
20using System.Text;
21using Cryptool.PluginBase;
22using Cryptool.PluginBase.Cryptography;
23
24using System.IO;
25using System.ComponentModel;
26using Cryptool.PluginBase.IO;
27using System.Windows.Controls;
28// for [MethodImpl(MethodImplOptions.Synchronized)]
29using System.Runtime.CompilerServices;
30
31namespace Cryptool.BoolComparator
32{
33    [Author("Soeren Rinne", "soeren.rinne@cryptool.de", "Ruhr-Universitaet Bochum, Chair for System Security", "http://www.trust.rub.de/")]
34    [PluginInfo(false, "BoolComparator", "Simple Binary AND", "BoolComparator/DetailedDescription/Description.xaml", "BoolComparator/Images/icon.png", "BoolComparator/Images/icon.png", "BoolComparator/Images/icon.png")]
35    public class BoolComparator : IThroughput
36    {
37
38        #region Private variables
39
40        private BoolComparatorSettings settings;
41        private bool inputOne;
42        private bool inputTwo;
43        private bool output;
44
45        #endregion
46
47        #region Public variables
48        public int inputOneFlag;
49        public int inputTwoFlag;
50        #endregion
51
52        #region Public interface
53
54        /// <summary>
55        /// Contructor
56        /// </summary>
57        public BoolComparator()
58        {
59            this.settings = new BoolComparatorSettings();
60            ((BoolComparatorSettings)(this.settings)).LogMessage += Xor_LogMessage;
61        }
62
63        /// <summary>
64        /// Get or set all settings for this algorithm
65        /// </summary>
66        public ISettings Settings
67        {
68            get { return (ISettings)this.settings;
69            }
70            set { this.settings = (BoolComparatorSettings)value;
71            }
72        }
73
74        [PropertyInfo(Direction.InputData, "Input One", "Input a boolean value to be compared", "", true, true, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
75        public bool InputOne
76        {
77            [MethodImpl(MethodImplOptions.Synchronized)]
78            get { return this.inputOne; }
79            [MethodImpl(MethodImplOptions.Synchronized)]
80            set
81            {
82                this.inputOne = value;
83                OnPropertyChanged("InputOne");
84                // clean inputOne
85                inputOneFlag = 1;
86            }
87        }
88
89        [PropertyInfo(Direction.InputData, "Input Two", "Input a boolean value to be compared", "", false, true, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
90        public bool InputTwo
91        {
92            [MethodImpl(MethodImplOptions.Synchronized)]
93            get { return this.inputTwo; }
94            [MethodImpl(MethodImplOptions.Synchronized)]
95            set
96            {
97                this.inputTwo = value;
98                OnPropertyChanged("InputTwo");
99                // clean inputTwo
100                inputTwoFlag = 1;
101            }
102        }
103
104        [PropertyInfo(Direction.OutputData, "Output", "Output after comparing input one and two. Only fires up, if both inputs are fresh.", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
105        public bool Output
106        {
107            [MethodImpl(MethodImplOptions.Synchronized)]
108            get
109            {
110                return output;
111            }
112            set
113            {   // is readonly
114            }
115        }
116
117        #endregion
118
119        #region IPlugin members
120
121        public void Initialize()
122        {
123        }
124
125        public void Dispose()
126        {
127        }
128
129        public UserControl Presentation
130        {
131            get { return null; }
132        }
133
134        public UserControl QuickWatchPresentation
135        {
136            get { return null; }
137        }
138
139        public void Stop()
140        {
141        }
142
143        public void PostExecution()
144        {
145        }
146
147        public void PreExecution()
148        {
149            // set input flags according to settings
150            if (settings.FlagInputOne) inputOneFlag = 1;
151            else inputOneFlag = -1;
152            if (settings.FlagInputTwo) inputTwoFlag = 1;
153            else inputTwoFlag = -1;
154        }
155
156        #endregion
157
158        #region INotifyPropertyChanged Members
159
160        public event PropertyChangedEventHandler PropertyChanged;
161
162        public void OnPropertyChanged(string name)
163        {
164            if (PropertyChanged != null)
165            {
166                PropertyChanged(this, new PropertyChangedEventArgs(name));
167            }
168        }
169
170        #endregion
171
172        #region Private methods
173
174        private void Xor_LogMessage(string msg, NotificationLevel logLevel)
175        {
176            /*if (OnGuiLogNotificationOccured != null)
177            {
178                OnGuiLogNotificationOccured(this, new GuiLogEventArgs(msg, this, logLevel));
179            }*/
180        }
181
182        #endregion
183
184        #region IPlugin Members
185
186#pragma warning disable 67
187        public event StatusChangedEventHandler OnPluginStatusChanged;
188        public event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
189        public event PluginProgressChangedEventHandler OnPluginProgressChanged;
190#pragma warning restore
191
192        public void Execute()
193        {
194            if (inputOneFlag == 1 && inputTwoFlag == 1)
195            {
196                // flag all inputs as dirty
197                inputOneFlag = -1;
198                inputTwoFlag = -1;
199
200                if (inputOne == inputTwo) output = true; else output = false;
201                OnPropertyChanged("Output");
202            }
203        }
204
205        public void Pause()
206        {
207        }
208
209        #endregion
210    }
211}
Note: See TracBrowser for help on using the repository browser.