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
- GiveFeedbackEvent.cs
- ColorContext.cs
- LayoutEditorPart.cs
- IPipelineRuntime.cs
- LocatorManager.cs
- TransactionChannelFaultConverter.cs
- WindowsGraphicsWrapper.cs
- ObjectDataSourceMethodEventArgs.cs
- SelfIssuedAuthRSACryptoProvider.cs
- AnnotationObservableCollection.cs
- Monitor.cs
- RightsManagementInformation.cs
- DirtyTextRange.cs
- CompilationRelaxations.cs
- NetStream.cs
- OdbcDataAdapter.cs
- DetailsViewRow.cs
- URL.cs
- TypeToArgumentTypeConverter.cs
- PackageController.cs
- OleDbStruct.cs
- DTCTransactionManager.cs
- CharacterBuffer.cs
- RoutingService.cs
- StylusTip.cs
- FormsAuthenticationModule.cs
- StyleReferenceConverter.cs
- AsyncMethodInvoker.cs
- XmlChoiceIdentifierAttribute.cs
- TransformDescriptor.cs
- MetadataArtifactLoaderFile.cs
- TreeNodeStyleCollection.cs
- TraceContextRecord.cs
- WindowsMenu.cs
- ImmComposition.cs
- ManagementNamedValueCollection.cs
- SaveFileDialogDesigner.cs
- StatementContext.cs
- MulticastIPAddressInformationCollection.cs
- StateDesigner.CommentLayoutGlyph.cs
- ScaleTransform3D.cs
- TogglePatternIdentifiers.cs
- DataGridViewColumnCollectionEditor.cs
- Formatter.cs
- AuthenticationManager.cs
- OrderedEnumerableRowCollection.cs
- SqlDataSource.cs
- EvidenceBase.cs
- NullableConverter.cs
- FileEnumerator.cs
- BooleanProjectedSlot.cs
- SoapObjectReader.cs
- DESCryptoServiceProvider.cs
- BaseTemplateCodeDomTreeGenerator.cs
- Polyline.cs
- GifBitmapEncoder.cs
- DataRow.cs
- XsltLoader.cs
- SelectorAutomationPeer.cs
- DataColumnPropertyDescriptor.cs
- ToolStrip.cs
- ThrowHelper.cs
- MsmqBindingFilter.cs
- RangeValidator.cs
- WasEndpointConfigContainer.cs
- FormViewPagerRow.cs
- CalendarKeyboardHelper.cs
- IImplicitResourceProvider.cs
- ReliableChannelBinder.cs
- XmlSchemaInferenceException.cs
- TextHidden.cs
- SynchronousSendBindingElement.cs
- TypeForwardedToAttribute.cs
- SessionStateItemCollection.cs
- AtlasWeb.Designer.cs
- DefaultMemberAttribute.cs
- IDReferencePropertyAttribute.cs
- WindowsUpDown.cs
- TextEditorSpelling.cs
- ApplicationContext.cs
- WindowsSolidBrush.cs
- HostedHttpContext.cs
- AsyncCompletedEventArgs.cs
- MatcherBuilder.cs
- XPathNodeInfoAtom.cs
- StrongNameKeyPair.cs
- InnerItemCollectionView.cs
- PageEventArgs.cs
- TimerElapsedEvenArgs.cs
- SecurityHelper.cs
- PointAnimationUsingPath.cs
- Point3DConverter.cs
- RuleInfoComparer.cs
- DBProviderConfigurationHandler.cs
- OutputScopeManager.cs
- Rect3DValueSerializer.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- CommandConverter.cs
- PointCollection.cs
- RawStylusInputCustomData.cs