-//\r
-// System.Collections.DebuggableAttribute.cs\r
-//\r
-// Author:\r
-// Nick Drochak II (ndrochak@gol.com)\r
-//\r
-// (C) 2001 Nick Drochak II\r
-//\r
+//
+// System.Collections.DebuggableAttribute.cs
+//
+// Author:
+// Nick Drochak II (ndrochak@gol.com)
+// Ben S. Stahlhood II (bstahlhood@gmail.com)
+//
+// (C) 2001 Nick Drochak II
+//
//
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-\r
-namespace System.Diagnostics {\r
- \r
- [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Module)]\r
- public sealed class DebuggableAttribute : System.Attribute {\r
-\r
- private bool JITTrackingEnabledFlag;\r
- private bool JITOptimizerDisabledFlag;\r
-\r
- // Public Instance Constructors\r
- public DebuggableAttribute(bool isJITTrackingEnabled, bool isJITOptimizerDisabled) {\r
- JITTrackingEnabledFlag = isJITTrackingEnabled;\r
- JITOptimizerDisabledFlag = isJITOptimizerDisabled;\r
- }\r
- \r
- // Public Instance Properties\r
- public bool IsJITTrackingEnabled { get { return JITTrackingEnabledFlag; } }\r
- \r
- public bool IsJITOptimizerDisabled { get { return JITOptimizerDisabledFlag; } }\r
- }\r
-}\r
+
+namespace System.Diagnostics {
+
+ [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Module)]
+ public sealed class DebuggableAttribute : System.Attribute {
+
+ private bool JITTrackingEnabledFlag;
+ private bool JITOptimizerDisabledFlag;
+#if NET_2_0
+ [Flags]
+ public enum DebuggingModes {
+ // Fields
+ None = 0,
+ Default = 1,
+ IgnoreSymbolStoreSequencePoints = 2,
+ EnableEditAndContinue = 4,
+ DisableOptimizations = 256
+ }
+
+ private DebuggingModes debuggingModes = DebuggingModes.None;
+#endif
+
+ // Public Instance Constructors
+ public DebuggableAttribute(bool isJITTrackingEnabled, bool isJITOptimizerDisabled)
+ {
+ JITTrackingEnabledFlag = isJITTrackingEnabled;
+ JITOptimizerDisabledFlag = isJITOptimizerDisabled;
+
+#if NET_2_0
+ if (isJITTrackingEnabled)
+ debuggingModes |= DebuggingModes.Default;
+
+ if (isJITOptimizerDisabled)
+ debuggingModes |= DebuggingModes.DisableOptimizations;
+#endif
+ }
+
+#if NET_2_0
+ public DebuggableAttribute(DebuggingModes modes)
+ {
+ debuggingModes = modes;
+ JITTrackingEnabledFlag = (debuggingModes & DebuggingModes.Default) != 0;
+ JITOptimizerDisabledFlag = (debuggingModes & DebuggingModes.DisableOptimizations) != 0;
+ }
+#endif
+
+
+ // Public Instance Properties
+ public bool IsJITTrackingEnabled { get { return JITTrackingEnabledFlag; } }
+
+ public bool IsJITOptimizerDisabled { get { return JITOptimizerDisabledFlag; } }
+ }
+}