Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / Microsoft / Scripting / Utils / ContractUtils.cs / 1305376 / ContractUtils.cs
/* **************************************************************************** * * Copyright (c) Microsoft Corporation. * * This source code is subject to terms and conditions of the Microsoft Public License. A * copy of the license can be found in the License.html file at the root of this distribution. If * you cannot locate the Microsoft Public License, please send an email to * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound * by the terms of the Microsoft Public License. * * You must not remove this notice, or any other, from this software. * * * ***************************************************************************/ using System.Collections.Generic; using System.Diagnostics; using System.Linq.Expressions; #if SILVERLIGHT using System.Core; #endif namespace System.Dynamic.Utils { // Will be replaced with CLRv4 managed contracts internal static class ContractUtils { internal static Exception Unreachable { get { Debug.Assert(false, "Unreachable"); return new InvalidOperationException("Code supposed to be unreachable"); } } internal static void Requires(bool precondition) { if (!precondition) { throw new ArgumentException(Strings.MethodPreconditionViolated); } } internal static void Requires(bool precondition, string paramName) { Debug.Assert(!string.IsNullOrEmpty(paramName)); if (!precondition) { throw new ArgumentException(Strings.InvalidArgumentValue, paramName); } } internal static void RequiresNotNull(object value, string paramName) { Debug.Assert(!string.IsNullOrEmpty(paramName)); if (value == null) { throw new ArgumentNullException(paramName); } } internal static void RequiresNotEmpty(ICollection collection, string paramName) { RequiresNotNull(collection, paramName); if (collection.Count == 0) { throw new ArgumentException(Strings.NonEmptyCollectionRequired, paramName); } } /// /// Requires the range [offset, offset + count] to be a subset of [0, array.Count]. /// ///Array is ///null .Offset or count are out of range. internal static void RequiresArrayRange(IList array, int offset, int count, string offsetName, string countName) { Debug.Assert(!string.IsNullOrEmpty(offsetName)); Debug.Assert(!string.IsNullOrEmpty(countName)); Debug.Assert(array != null); if (count < 0) throw new ArgumentOutOfRangeException(countName); if (offset < 0 || array.Count - offset < count) throw new ArgumentOutOfRangeException(offsetName); } /// /// Requires the array and all its items to be non-null. /// internal static void RequiresNotNullItems(IList array, string arrayName) { Debug.Assert(arrayName != null); RequiresNotNull(array, arrayName); for (int i = 0; i < array.Count; i++) { if (array[i] == null) { throw new ArgumentNullException(string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0}[{1}]", arrayName, i)); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. /* **************************************************************************** * * Copyright (c) Microsoft Corporation. * * This source code is subject to terms and conditions of the Microsoft Public License. A * copy of the license can be found in the License.html file at the root of this distribution. If * you cannot locate the Microsoft Public License, please send an email to * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound * by the terms of the Microsoft Public License. * * You must not remove this notice, or any other, from this software. * * * ***************************************************************************/ using System.Collections.Generic; using System.Diagnostics; using System.Linq.Expressions; #if SILVERLIGHT using System.Core; #endif namespace System.Dynamic.Utils { // Will be replaced with CLRv4 managed contracts internal static class ContractUtils { internal static Exception Unreachable { get { Debug.Assert(false, "Unreachable"); return new InvalidOperationException("Code supposed to be unreachable"); } } internal static void Requires(bool precondition) { if (!precondition) { throw new ArgumentException(Strings.MethodPreconditionViolated); } } internal static void Requires(bool precondition, string paramName) { Debug.Assert(!string.IsNullOrEmpty(paramName)); if (!precondition) { throw new ArgumentException(Strings.InvalidArgumentValue, paramName); } } internal static void RequiresNotNull(object value, string paramName) { Debug.Assert(!string.IsNullOrEmpty(paramName)); if (value == null) { throw new ArgumentNullException(paramName); } } internal static void RequiresNotEmpty (ICollection collection, string paramName) { RequiresNotNull(collection, paramName); if (collection.Count == 0) { throw new ArgumentException(Strings.NonEmptyCollectionRequired, paramName); } } /// /// Requires the range [offset, offset + count] to be a subset of [0, array.Count]. /// ///Array is ///null .Offset or count are out of range. internal static void RequiresArrayRange(IList array, int offset, int count, string offsetName, string countName) { Debug.Assert(!string.IsNullOrEmpty(offsetName)); Debug.Assert(!string.IsNullOrEmpty(countName)); Debug.Assert(array != null); if (count < 0) throw new ArgumentOutOfRangeException(countName); if (offset < 0 || array.Count - offset < count) throw new ArgumentOutOfRangeException(offsetName); } /// /// Requires the array and all its items to be non-null. /// internal static void RequiresNotNullItems(IList array, string arrayName) { Debug.Assert(arrayName != null); RequiresNotNull(array, arrayName); for (int i = 0; i < array.Count; i++) { if (array[i] == null) { throw new ArgumentNullException(string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0}[{1}]", arrayName, i)); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Column.cs
- Vector.cs
- ComponentChangedEvent.cs
- HashCodeCombiner.cs
- AppDomain.cs
- DurationConverter.cs
- Publisher.cs
- RequestUriProcessor.cs
- ReferencedType.cs
- SimplePropertyEntry.cs
- Int64AnimationUsingKeyFrames.cs
- XmlSerializerFormatAttribute.cs
- SchemaElement.cs
- XmlImplementation.cs
- BindStream.cs
- SchemaImporter.cs
- CodeExporter.cs
- Compiler.cs
- Misc.cs
- IODescriptionAttribute.cs
- EdmError.cs
- ExtendedPropertyCollection.cs
- FormatterServices.cs
- MobileControlPersister.cs
- HttpHeaderCollection.cs
- ErrorFormatterPage.cs
- CodeSnippetExpression.cs
- Message.cs
- Double.cs
- xsdvalidator.cs
- StickyNoteContentControl.cs
- CodeTypeMember.cs
- ProtectedUri.cs
- NameTable.cs
- Effect.cs
- BindStream.cs
- ConstructorArgumentAttribute.cs
- SelectionRangeConverter.cs
- TraceContext.cs
- CachedFontFamily.cs
- DataGridViewTopLeftHeaderCell.cs
- TableSectionStyle.cs
- DataConnectionHelper.cs
- WriteFileContext.cs
- KnownTypes.cs
- LinkButton.cs
- XmlSchemaObject.cs
- DecoderFallback.cs
- DiscardableAttribute.cs
- AppDomainCompilerProxy.cs
- RNGCryptoServiceProvider.cs
- XmlTextAttribute.cs
- DataPagerField.cs
- ReflectionUtil.cs
- MetadataItemEmitter.cs
- XmlStringTable.cs
- RecommendedAsConfigurableAttribute.cs
- SystemSounds.cs
- BackEase.cs
- PropertyNames.cs
- Monitor.cs
- ResetableIterator.cs
- LongValidatorAttribute.cs
- WebMessageFormatHelper.cs
- CircleHotSpot.cs
- SerializationAttributes.cs
- PopupRootAutomationPeer.cs
- DataStreams.cs
- EncryptedReference.cs
- SR.cs
- ActivityInstanceReference.cs
- HtmlUtf8RawTextWriter.cs
- ContentElementCollection.cs
- KeyedCollection.cs
- SEHException.cs
- ObjectDataSourceMethodEventArgs.cs
- ScaleTransform.cs
- DataIdProcessor.cs
- HttpDictionary.cs
- HtmlButton.cs
- XNodeValidator.cs
- PriorityBindingExpression.cs
- LogExtentCollection.cs
- PropertiesTab.cs
- XamlPointCollectionSerializer.cs
- Enum.cs
- ToolboxItemCollection.cs
- PrintDialog.cs
- DesignTimeTemplateParser.cs
- DescendantQuery.cs
- WebRequestModuleElement.cs
- DateTimeOffset.cs
- OdbcErrorCollection.cs
- FrameworkElement.cs
- SaveFileDialog.cs
- WindowsRegion.cs
- KeyedHashAlgorithm.cs
- Effect.cs
- ToolStripContainer.cs
- XmlArrayItemAttribute.cs