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
- MetadataItemEmitter.cs
- XamlWriter.cs
- ToolStripProgressBar.cs
- MatrixTransform.cs
- DesignerActionVerbList.cs
- CertificateManager.cs
- MatrixStack.cs
- _TransmitFileOverlappedAsyncResult.cs
- CustomPeerResolverService.cs
- MaskDescriptors.cs
- DecoderFallbackWithFailureFlag.cs
- SqlParameter.cs
- TrimSurroundingWhitespaceAttribute.cs
- TextElementEnumerator.cs
- BrowserTree.cs
- SqlDataSourceConfigureSelectPanel.cs
- NumberFunctions.cs
- StsCommunicationException.cs
- HtmlCommandAdapter.cs
- AsymmetricKeyExchangeDeformatter.cs
- Transform.cs
- RedistVersionInfo.cs
- PointCollection.cs
- XmlArrayItemAttributes.cs
- AppDomainProtocolHandler.cs
- DataGridViewColumnCollection.cs
- HTMLTextWriter.cs
- _LoggingObject.cs
- BamlBinaryReader.cs
- TextBox.cs
- SetStoryboardSpeedRatio.cs
- CharacterHit.cs
- BuildResult.cs
- ToolStripContextMenu.cs
- XmlSiteMapProvider.cs
- Pipe.cs
- SecurityUtils.cs
- StreamSecurityUpgradeAcceptorBase.cs
- sortedlist.cs
- DiscardableAttribute.cs
- CorrelationManager.cs
- DataTableCollection.cs
- base64Transforms.cs
- SqlDataSourceAdvancedOptionsForm.cs
- QuarticEase.cs
- EventLogPermissionEntry.cs
- StylusPointPropertyUnit.cs
- GlyphRunDrawing.cs
- ColorConvertedBitmap.cs
- BindingNavigatorDesigner.cs
- PriorityChain.cs
- SecurityTokenTypes.cs
- HitTestParameters3D.cs
- BufferBuilder.cs
- ListViewItem.cs
- _RequestLifetimeSetter.cs
- StylusTip.cs
- Rijndael.cs
- PageAdapter.cs
- WmlImageAdapter.cs
- Camera.cs
- DataServiceQueryException.cs
- SessionState.cs
- StreamGeometryContext.cs
- SQLSingle.cs
- GACMembershipCondition.cs
- CryptoStream.cs
- StateDesigner.Helpers.cs
- IndexOutOfRangeException.cs
- DataServiceExpressionVisitor.cs
- BrushMappingModeValidation.cs
- RegexGroup.cs
- DataGridViewColumnCollection.cs
- CatchBlock.cs
- CmsInterop.cs
- DataViewManager.cs
- WebScriptEndpoint.cs
- BinaryObjectWriter.cs
- WindowsListViewScroll.cs
- XpsTokenContext.cs
- RsaKeyIdentifierClause.cs
- ObjectQueryExecutionPlan.cs
- RadioButtonFlatAdapter.cs
- MemberBinding.cs
- ConvertEvent.cs
- PagedDataSource.cs
- GeneralTransform3DGroup.cs
- CursorInteropHelper.cs
- WebConfigurationManager.cs
- Deserializer.cs
- Point3DConverter.cs
- XmlObjectSerializerContext.cs
- CreateRefExpr.cs
- RegexRunner.cs
- RootBrowserWindowAutomationPeer.cs
- XmlNamespaceMapping.cs
- RowToParametersTransformer.cs
- TransactionProtocol.cs
- ManageRequest.cs
- XmlSchemaSimpleContentExtension.cs