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
- ClientScriptManagerWrapper.cs
- NativeMethods.cs
- FormatterServices.cs
- WriteableBitmap.cs
- MissingMethodException.cs
- ToolStripGripRenderEventArgs.cs
- CompilationSection.cs
- PingReply.cs
- ReachSerializerAsync.cs
- AttachmentCollection.cs
- ConfigurationStrings.cs
- StrokeCollectionConverter.cs
- DataIdProcessor.cs
- Visitor.cs
- TextDpi.cs
- RNGCryptoServiceProvider.cs
- StorageAssociationSetMapping.cs
- JsonObjectDataContract.cs
- XmlSchemaDocumentation.cs
- LayoutEvent.cs
- PersonalizationProvider.cs
- UntrustedRecipientException.cs
- SByteStorage.cs
- SchemaNames.cs
- XmlElementAttributes.cs
- DocumentGridContextMenu.cs
- EnterpriseServicesHelper.cs
- RepeaterItemEventArgs.cs
- PropertyEmitter.cs
- DataSourceXmlSubItemAttribute.cs
- TiffBitmapDecoder.cs
- PaintEvent.cs
- ProcessModuleCollection.cs
- Regex.cs
- PipelineModuleStepContainer.cs
- LayoutEditorPart.cs
- SecurityContextKeyIdentifierClause.cs
- FontEditor.cs
- XmlSchemaSimpleTypeList.cs
- ToolStripPanelRow.cs
- EntityContainerEmitter.cs
- ClosableStream.cs
- RenderDataDrawingContext.cs
- XmlSchemaElement.cs
- WindowsProgressbar.cs
- StringPropertyBuilder.cs
- FunctionImportElement.cs
- SystemIPGlobalProperties.cs
- XPathBinder.cs
- wgx_render.cs
- ObfuscateAssemblyAttribute.cs
- RenderData.cs
- ConfigurationValues.cs
- ILGenerator.cs
- CallTemplateAction.cs
- PropertyPushdownHelper.cs
- HwndSubclass.cs
- UniqueSet.cs
- backend.cs
- AutomationTextAttribute.cs
- BlockUIContainer.cs
- CookieProtection.cs
- HttpPostedFile.cs
- ConstNode.cs
- sortedlist.cs
- IList.cs
- WindowsSysHeader.cs
- BadImageFormatException.cs
- CompiledQuery.cs
- CssClassPropertyAttribute.cs
- TextSelectionHelper.cs
- ToolstripProfessionalRenderer.cs
- BitConverter.cs
- FlatButtonAppearance.cs
- Separator.cs
- Model3DCollection.cs
- AnimationClock.cs
- ComboBox.cs
- GridSplitter.cs
- StoreAnnotationsMap.cs
- SqlConnectionPoolGroupProviderInfo.cs
- TraversalRequest.cs
- WebControl.cs
- MaskPropertyEditor.cs
- ServiceReflector.cs
- ResourceFallbackManager.cs
- ObjectResult.cs
- ToolstripProfessionalRenderer.cs
- ClientBuildManager.cs
- XPathDocument.cs
- TextFindEngine.cs
- GridViewItemAutomationPeer.cs
- basecomparevalidator.cs
- ClientData.cs
- LicFileLicenseProvider.cs
- VersionPair.cs
- CachedBitmap.cs
- ChannelSinkStacks.cs
- Emitter.cs
- DbProviderFactoriesConfigurationHandler.cs