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
- QuaternionAnimation.cs
- CultureTableRecord.cs
- SynchronizedReadOnlyCollection.cs
- FilterInvalidBodyAccessException.cs
- MetabaseSettingsIis7.cs
- Util.cs
- CustomExpressionEventArgs.cs
- MonthCalendar.cs
- DescendantOverDescendantQuery.cs
- ValidationPropertyAttribute.cs
- Viewport3DAutomationPeer.cs
- MapPathBasedVirtualPathProvider.cs
- RpcCryptoRequest.cs
- Rights.cs
- DocumentPaginator.cs
- ObjectStateManager.cs
- Connector.cs
- DataProtection.cs
- HttpWrapper.cs
- ResXFileRef.cs
- IntPtr.cs
- DbConnectionPoolGroupProviderInfo.cs
- tooltip.cs
- MimeXmlReflector.cs
- BoolExpression.cs
- Sql8ConformanceChecker.cs
- SchemaEntity.cs
- VoiceObjectToken.cs
- SiteMap.cs
- CompatibleIComparer.cs
- ContainerParaClient.cs
- RenderOptions.cs
- DeferredSelectedIndexReference.cs
- ValidatedControlConverter.cs
- RemotingException.cs
- UnsafeNetInfoNativeMethods.cs
- X509RawDataKeyIdentifierClause.cs
- StreamAsIStream.cs
- PointCollection.cs
- BevelBitmapEffect.cs
- WebPartMinimizeVerb.cs
- StatusBarPanel.cs
- CachedTypeface.cs
- DeploymentExceptionMapper.cs
- ObjectNotFoundException.cs
- SelectionPattern.cs
- QuadraticBezierSegment.cs
- InfoCardTraceRecord.cs
- XMLUtil.cs
- SchemaImporterExtensionsSection.cs
- ApplicationSecurityInfo.cs
- Vector3DValueSerializer.cs
- MatchingStyle.cs
- CompressEmulationStream.cs
- ToolTip.cs
- EncoderExceptionFallback.cs
- TemplateContentLoader.cs
- UIPropertyMetadata.cs
- PreservationFileWriter.cs
- SqlTriggerAttribute.cs
- ApplyTemplatesAction.cs
- UserValidatedEventArgs.cs
- ToggleProviderWrapper.cs
- SrgsElement.cs
- VisualBrush.cs
- RoutedEventConverter.cs
- ViewBox.cs
- MD5CryptoServiceProvider.cs
- SecurityElement.cs
- ProviderUtil.cs
- SlotInfo.cs
- DataServiceRequest.cs
- LayoutManager.cs
- TrackingLocation.cs
- AssociationSetEnd.cs
- ReadOnlyDataSourceView.cs
- ListBindingHelper.cs
- Merger.cs
- SR.cs
- TextTreeRootTextBlock.cs
- SymbolPair.cs
- RuleInfoComparer.cs
- Triangle.cs
- NavigationCommands.cs
- versioninfo.cs
- ExceptionList.cs
- EntityClassGenerator.cs
- designeractionlistschangedeventargs.cs
- Int32AnimationUsingKeyFrames.cs
- AmbientLight.cs
- EmptyStringExpandableObjectConverter.cs
- EntityContainerAssociationSetEnd.cs
- EventProviderWriter.cs
- RelatedCurrencyManager.cs
- ExpressionTextBox.xaml.cs
- ThemeInfoAttribute.cs
- HtmlInputRadioButton.cs
- QueryBranchOp.cs
- CodeComment.cs
- CompatibleComparer.cs