diff --git a/CodeContracts.sln b/CodeContracts.sln index 52498202..cfa3f0ec 100644 --- a/CodeContracts.sln +++ b/CodeContracts.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 -VisualStudioVersion = 12.0.30723.0 +VisualStudioVersion = 12.0.31101.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CodeProviders", "CodeProviders", "{76F9B10B-70B6-40FF-B5A7-3562734BF8E4}" EndProject @@ -317,6 +317,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ParseStats", "Microsoft.Res EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RevisedSimplexMethod", "Microsoft.Research\RevisedSimplexMethod\RevisedSimplexMethod\RevisedSimplexMethod.csproj", "{52B1843A-04C6-48A8-A8F7-C11392C44E7F}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SystemRequiresVerificationTests", "Microsoft.Research\Contracts\SystemRequiresVerificationTests\SystemRequiresVerificationTests.csproj", "{34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -2333,6 +2335,30 @@ Global {52B1843A-04C6-48A8-A8F7-C11392C44E7F}.Release|Mixed Platforms.Build.0 = Devlab64|Any CPU {52B1843A-04C6-48A8-A8F7-C11392C44E7F}.Release|Win32.ActiveCfg = Devlab64|Any CPU {52B1843A-04C6-48A8-A8F7-C11392C44E7F}.Release|x86.ActiveCfg = Devlab64|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Debug|Win32.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Debug|x86.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Devlab9|Any CPU.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Devlab9|Any CPU.Build.0 = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Devlab9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Devlab9|Mixed Platforms.Build.0 = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Devlab9|Win32.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Devlab9|x86.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Internal9|Any CPU.ActiveCfg = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Internal9|Any CPU.Build.0 = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Internal9|Mixed Platforms.ActiveCfg = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Internal9|Mixed Platforms.Build.0 = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Internal9|Win32.ActiveCfg = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Internal9|x86.ActiveCfg = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Release|Any CPU.Build.0 = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Release|Win32.ActiveCfg = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -2434,6 +2460,7 @@ Global {4CDCA734-7AA6-4283-B915-F9EB13A23D7F} = {8C9BFE1D-90BD-4F88-B58E-89FF1DA325B8} {9A6A7CB1-138C-4342-B630-93C04FF48317} = {8C9BFE1D-90BD-4F88-B58E-89FF1DA325B8} {52B1843A-04C6-48A8-A8F7-C11392C44E7F} = {C6F8F507-B843-4D08-8E4B-FF4AF23FC864} + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} EndGlobalSection GlobalSection(TestCaseManagementSettings) = postSolution CategoryFile = CodeContracts10.vsmdi diff --git a/ContractsOnly.sln b/ContractsOnly.sln new file mode 100644 index 00000000..3307a715 --- /dev/null +++ b/ContractsOnly.sln @@ -0,0 +1,963 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.31101.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Contracts", "Contracts", "{5C718DA9-A4F2-4F73-B095-B2E180033C15}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Executables", "Executables", "{7CD8B829-346E-4FA0-ADDD-87152DDC5DDE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Contracts10", "Foxtrot\Contracts\Microsoft.Contracts10.csproj", "{29E1DFE9-D0A9-4AAB-B876-10BBF747C293}" + ProjectSection(ProjectDependencies) = postProject + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2} = {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MsCorlib.Contracts10", "Microsoft.Research\Contracts\MsCorlib\MsCorlib.Contracts10.csproj", "{D45E4F81-3252-4000-9818-F8D018895B5B}" + ProjectSection(ProjectDependencies) = postProject + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2} = {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Contracts10", "Microsoft.Research\Contracts\System\System.Contracts10.csproj", "{2C10FDB2-966D-4A14-B18D-385FDFA1746A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CRASanitizer", "Microsoft.Research\Contracts\CRASanitizer\CRASanitizer.csproj", "{9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration10", "Microsoft.Research\Contracts\System.Configuration\System.Configuration10.csproj", "{4695B865-1F0F-45DD-96CF-FDF999A813BD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core.Contracts10", "Microsoft.Research\Contracts\System.Core.Contracts\System.Core.Contracts10.csproj", "{04811420-E4EC-4E3D-A974-8A43FAF724C8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data10", "Microsoft.Research\Contracts\System.Data\System.Data10.csproj", "{8A669480-0FD3-453A-823A-E82CFAE7558C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing10", "Microsoft.Research\Contracts\System.Drawing\System.Drawing10.csproj", "{0E7A10F3-10E2-40CB-A47B-234615C4719B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security10", "Microsoft.Research\Contracts\System.Security\System.Security10.csproj", "{202E0819-A63F-4BE1-9314-13306C4C9C96}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web10", "Microsoft.Research\Contracts\System.Web\System.Web10.csproj", "{9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows10", "Microsoft.Research\Contracts\System.Windows\System.Windows10.csproj", "{560BAEE6-D01B-4714-92EF-798EEBCCF2DB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Browser10", "Microsoft.Research\Contracts\System.Windows.Browser\System.Windows.Browser10.csproj", "{A09A280B-E5CE-4F5B-8081-163944392804}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms10", "Microsoft.Research\Contracts\System.Windows.Forms\System.Windows.Forms10.csproj", "{C719D602-0573-4E5A-AAFB-6DFF2106EEE6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml10", "Microsoft.Research\Contracts\System.Xml\System.Xml10.csproj", "{87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.Linq10", "Microsoft.Research\Contracts\System.Xml.Linq\System.Xml.Linq10.csproj", "{EF8C241A-7A60-4AA4-9E4B-2752472A96EF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsBase10", "Microsoft.Research\Contracts\WindowsBase\WindowsBase10.csproj", "{650CD908-450D-4B70-9A68-590C7A2AC32B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration.Install10", "Microsoft.Research\Contracts\System.Configuration.Install\System.Configuration.Install10.csproj", "{EB432A52-712F-478D-9A5B-81FF99DE6CBE}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Microsoft.VisualBasic.Compatibility10", "Microsoft.Research\Contracts\Microsoft.VisualBasic.Compatibility\Microsoft.VisualBasic.Compatibility10.vbproj", "{1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Microsoft.VisualBasic10", "Microsoft.Research\Contracts\Microsoft.VisualBasic.Contracts\Microsoft.VisualBasic10.vbproj", "{83E81339-DFB4-46A7-B0BF-21098B862AEF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Numerics", "Microsoft.Research\Contracts\System.Numerics\System.Numerics.csproj", "{C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PostContractBuildDummy", "Microsoft.Research\Contracts\PostContractBuildDummy\PostContractBuildDummy.csproj", "{DDCFABF7-69E9-4B33-9F0E-A5661F960111}" + ProjectSection(ProjectDependencies) = postProject + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6} = {C719D602-0573-4E5A-AAFB-6DFF2106EEE6} + {650CD908-450D-4B70-9A68-590C7A2AC32B} = {650CD908-450D-4B70-9A68-590C7A2AC32B} + {A09A280B-E5CE-4F5B-8081-163944392804} = {A09A280B-E5CE-4F5B-8081-163944392804} + {0C2F5C12-CFB2-485A-900E-14547F93CE9E} = {0C2F5C12-CFB2-485A-900E-14547F93CE9E} + {202E0819-A63F-4BE1-9314-13306C4C9C96} = {202E0819-A63F-4BE1-9314-13306C4C9C96} + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF} = {EF8C241A-7A60-4AA4-9E4B-2752472A96EF} + {04811420-E4EC-4E3D-A974-8A43FAF724C8} = {04811420-E4EC-4E3D-A974-8A43FAF724C8} + {23B4C62D-6128-4619-92CB-C0CDE3271541} = {23B4C62D-6128-4619-92CB-C0CDE3271541} + {83E81339-DFB4-46A7-B0BF-21098B862AEF} = {83E81339-DFB4-46A7-B0BF-21098B862AEF} + {EB432A52-712F-478D-9A5B-81FF99DE6CBE} = {EB432A52-712F-478D-9A5B-81FF99DE6CBE} + {34F25C64-A624-46E6-9832-4F59C5FDDB07} = {34F25C64-A624-46E6-9832-4F59C5FDDB07} + {4695B865-1F0F-45DD-96CF-FDF999A813BD} = {4695B865-1F0F-45DD-96CF-FDF999A813BD} + {1926417C-C3E4-4137-B06A-90192A3AB682} = {1926417C-C3E4-4137-B06A-90192A3AB682} + {8A669480-0FD3-453A-823A-E82CFAE7558C} = {8A669480-0FD3-453A-823A-E82CFAE7558C} + {D45E4F81-3252-4000-9818-F8D018895B5B} = {D45E4F81-3252-4000-9818-F8D018895B5B} + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12} = {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12} + {2C10FDB2-966D-4A14-B18D-385FDFA1746A} = {2C10FDB2-966D-4A14-B18D-385FDFA1746A} + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB} = {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB} + {846689C9-C6E5-4576-BC63-F4A8762C0322} = {846689C9-C6E5-4576-BC63-F4A8762C0322} + {20C549CD-6524-4FB5-AD58-AAA939C75CEF} = {20C549CD-6524-4FB5-AD58-AAA939C75CEF} + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65} = {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65} + {76F807DC-76BC-413E-95FD-A7E661DB1B33} = {76F807DC-76BC-413E-95FD-A7E661DB1B33} + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB} = {560BAEE6-D01B-4714-92EF-798EEBCCF2DB} + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} = {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} + {44D764EF-D471-4981-B774-B8B532EDB690} = {44D764EF-D471-4981-B774-B8B532EDB690} + {0E7A10F3-10E2-40CB-A47B-234615C4719B} = {0E7A10F3-10E2-40CB-A47B-234615C4719B} + {29106CFE-A683-4012-91E2-310552BE6258} = {29106CFE-A683-4012-91E2-310552BE6258} + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A} = {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PresentationCore", "Microsoft.Research\Contracts\PresentationCore\PresentationCore.csproj", "{1926417C-C3E4-4137-B06A-90192A3AB682}" + ProjectSection(ProjectDependencies) = postProject + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} = {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PresentationFramework", "Microsoft.Research\Contracts\PresentationFramework\PresentationFramework.csproj", "{29106CFE-A683-4012-91E2-310552BE6258}" + ProjectSection(ProjectDependencies) = postProject + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} = {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.Composition", "Microsoft.Research\Contracts\System.ComponentModel.Composition\System.ComponentModel.Composition.csproj", "{23B4C62D-6128-4619-92CB-C0CDE3271541}" + ProjectSection(ProjectDependencies) = postProject + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} = {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Services", "Microsoft.Research\Contracts\System.Data.Services\System.Data.Services.csproj", "{34F25C64-A624-46E6-9832-4F59C5FDDB07}" + ProjectSection(ProjectDependencies) = postProject + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} = {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.DirectoryServices", "Microsoft.Research\Contracts\System.DirectoryServices\System.DirectoryServices.csproj", "{44D764EF-D471-4981-B774-B8B532EDB690}" + ProjectSection(ProjectDependencies) = postProject + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} = {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Caching", "Microsoft.Research\Contracts\System.Runtime.Caching\System.Runtime.Caching.csproj", "{76F807DC-76BC-413E-95FD-A7E661DB1B33}" + ProjectSection(ProjectDependencies) = postProject + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} = {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel", "Microsoft.Research\Contracts\System.ServiceModel\System.ServiceModel.csproj", "{0C2F5C12-CFB2-485A-900E-14547F93CE9E}" + ProjectSection(ProjectDependencies) = postProject + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} = {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceProcess", "Microsoft.Research\Contracts\System.ServiceProcess\System.ServiceProcess.csproj", "{846689C9-C6E5-4576-BC63-F4A8762C0322}" + ProjectSection(ProjectDependencies) = postProject + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} = {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.ApplicationServices", "Microsoft.Research\Contracts\System.Web.ApplicationServices\System.Web.ApplicationServices.csproj", "{20C549CD-6524-4FB5-AD58-AAA939C75CEF}" + ProjectSection(ProjectDependencies) = postProject + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} = {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PreContractsBuildDummy", "Microsoft.Research\Contracts\PreContractsBuildDummy\PreContractsBuildDummy.csproj", "{4C272996-FE22-4700-BA18-0A2F482FB857}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SystemRequiresVerificationTests", "Microsoft.Research\Contracts\SystemRequiresVerificationTests\SystemRequiresVerificationTests.csproj", "{34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|Win32 = Debug|Win32 + Debug|x86 = Debug|x86 + Devlab9|Any CPU = Devlab9|Any CPU + Devlab9|Mixed Platforms = Devlab9|Mixed Platforms + Devlab9|Win32 = Devlab9|Win32 + Devlab9|x86 = Devlab9|x86 + Internal9|Any CPU = Internal9|Any CPU + Internal9|Mixed Platforms = Internal9|Mixed Platforms + Internal9|Win32 = Internal9|Win32 + Internal9|x86 = Internal9|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|Win32 = Release|Win32 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Debug|Any CPU.Build.0 = Debug|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Debug|Win32.ActiveCfg = Debug|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Debug|x86.ActiveCfg = Debug|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Release|Any CPU.ActiveCfg = Devlab9ro|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Release|Any CPU.Build.0 = Devlab9ro|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Release|Mixed Platforms.ActiveCfg = Devlab9ro|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Release|Mixed Platforms.Build.0 = Devlab9ro|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Release|Win32.ActiveCfg = Devlab9ro|Any CPU + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293}.Release|x86.ActiveCfg = Devlab9ro|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Debug|Win32.ActiveCfg = Debug|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Debug|x86.ActiveCfg = Debug|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Release|Any CPU.ActiveCfg = Devlab9ro|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Release|Any CPU.Build.0 = Devlab9ro|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Release|Mixed Platforms.ActiveCfg = Devlab9ro|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Release|Mixed Platforms.Build.0 = Devlab9ro|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Release|Win32.ActiveCfg = Devlab9ro|Any CPU + {D45E4F81-3252-4000-9818-F8D018895B5B}.Release|x86.ActiveCfg = Devlab9ro|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Debug|Win32.ActiveCfg = Debug|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Debug|x86.ActiveCfg = Debug|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Release|Any CPU.ActiveCfg = Devlab9ro|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Release|Any CPU.Build.0 = Devlab9ro|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Release|Mixed Platforms.ActiveCfg = Devlab9ro|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Release|Mixed Platforms.Build.0 = Devlab9ro|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Release|Win32.ActiveCfg = Devlab9ro|Any CPU + {2C10FDB2-966D-4A14-B18D-385FDFA1746A}.Release|x86.ActiveCfg = Devlab9ro|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Debug|Win32.ActiveCfg = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Debug|x86.ActiveCfg = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Devlab9|Any CPU.ActiveCfg = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Devlab9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Devlab9|Win32.ActiveCfg = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Devlab9|x86.ActiveCfg = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Internal9|Any CPU.ActiveCfg = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Internal9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Internal9|Mixed Platforms.Build.0 = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Internal9|Win32.ActiveCfg = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Internal9|x86.ActiveCfg = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Release|Any CPU.Build.0 = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Release|Mixed Platforms.Build.0 = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Release|Win32.ActiveCfg = Debug|Any CPU + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2}.Release|x86.ActiveCfg = Debug|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Debug|Win32.ActiveCfg = Debug|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Debug|x86.ActiveCfg = Debug|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Release|Any CPU.ActiveCfg = Devlab9ro|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Release|Any CPU.Build.0 = Devlab9ro|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Release|Mixed Platforms.ActiveCfg = Devlab9ro|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Release|Mixed Platforms.Build.0 = Devlab9ro|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Release|Win32.ActiveCfg = Devlab9ro|Any CPU + {4695B865-1F0F-45DD-96CF-FDF999A813BD}.Release|x86.ActiveCfg = Devlab9ro|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Debug|Win32.ActiveCfg = Debug|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Debug|x86.ActiveCfg = Debug|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Release|Any CPU.ActiveCfg = Devlab9ro|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Release|Any CPU.Build.0 = Devlab9ro|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Release|Mixed Platforms.ActiveCfg = Devlab9ro|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Release|Mixed Platforms.Build.0 = Devlab9ro|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Release|Win32.ActiveCfg = Devlab9ro|Any CPU + {04811420-E4EC-4E3D-A974-8A43FAF724C8}.Release|x86.ActiveCfg = Devlab9ro|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Debug|Win32.ActiveCfg = Debug|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Debug|x86.ActiveCfg = Debug|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Release|Any CPU.ActiveCfg = Internal9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Release|Any CPU.Build.0 = Internal9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Release|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Release|Mixed Platforms.Build.0 = Internal9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Release|Win32.ActiveCfg = Internal9|Any CPU + {8A669480-0FD3-453A-823A-E82CFAE7558C}.Release|x86.ActiveCfg = Internal9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Debug|Win32.ActiveCfg = Debug|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Debug|x86.ActiveCfg = Debug|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Release|Any CPU.ActiveCfg = Internal9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Release|Any CPU.Build.0 = Internal9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Release|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Release|Mixed Platforms.Build.0 = Internal9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Release|Win32.ActiveCfg = Internal9|Any CPU + {0E7A10F3-10E2-40CB-A47B-234615C4719B}.Release|x86.ActiveCfg = Internal9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Debug|Any CPU.Build.0 = Debug|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Debug|Win32.ActiveCfg = Debug|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Debug|x86.ActiveCfg = Debug|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Release|Any CPU.ActiveCfg = Internal9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Release|Any CPU.Build.0 = Internal9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Release|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Release|Mixed Platforms.Build.0 = Internal9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Release|Win32.ActiveCfg = Internal9|Any CPU + {202E0819-A63F-4BE1-9314-13306C4C9C96}.Release|x86.ActiveCfg = Internal9|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Debug|Win32.ActiveCfg = Debug|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Debug|x86.ActiveCfg = Debug|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Release|Any CPU.ActiveCfg = Devlab9ro|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Release|Any CPU.Build.0 = Devlab9ro|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Release|Mixed Platforms.ActiveCfg = Devlab9ro|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Release|Mixed Platforms.Build.0 = Devlab9ro|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Release|Win32.ActiveCfg = Devlab9ro|Any CPU + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB}.Release|x86.ActiveCfg = Devlab9ro|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Debug|Win32.ActiveCfg = Debug|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Debug|x86.ActiveCfg = Debug|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Release|Any CPU.ActiveCfg = Devlab9ro|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Release|Any CPU.Build.0 = Devlab9ro|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Release|Mixed Platforms.ActiveCfg = Devlab9ro|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Release|Mixed Platforms.Build.0 = Devlab9ro|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Release|Win32.ActiveCfg = Devlab9ro|Any CPU + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB}.Release|x86.ActiveCfg = Devlab9ro|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Debug|Win32.ActiveCfg = Debug|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Debug|x86.ActiveCfg = Debug|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Release|Any CPU.ActiveCfg = Devlab9ro|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Release|Any CPU.Build.0 = Devlab9ro|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Release|Mixed Platforms.ActiveCfg = Devlab9ro|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Release|Mixed Platforms.Build.0 = Devlab9ro|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Release|Win32.ActiveCfg = Devlab9ro|Any CPU + {A09A280B-E5CE-4F5B-8081-163944392804}.Release|x86.ActiveCfg = Devlab9ro|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Debug|Win32.ActiveCfg = Debug|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Debug|x86.ActiveCfg = Debug|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Release|Any CPU.ActiveCfg = Internal9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Release|Any CPU.Build.0 = Internal9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Release|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Release|Mixed Platforms.Build.0 = Internal9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Release|Win32.ActiveCfg = Internal9|Any CPU + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6}.Release|x86.ActiveCfg = Internal9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Debug|Any CPU.Build.0 = Debug|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Debug|Win32.ActiveCfg = Debug|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Debug|x86.ActiveCfg = Debug|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Release|Any CPU.ActiveCfg = Internal9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Release|Any CPU.Build.0 = Internal9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Release|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Release|Mixed Platforms.Build.0 = Internal9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Release|Win32.ActiveCfg = Internal9|Any CPU + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65}.Release|x86.ActiveCfg = Internal9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Debug|Win32.ActiveCfg = Debug|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Debug|x86.ActiveCfg = Debug|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Release|Any CPU.ActiveCfg = Internal9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Release|Any CPU.Build.0 = Internal9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Release|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Release|Mixed Platforms.Build.0 = Internal9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Release|Win32.ActiveCfg = Internal9|Any CPU + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF}.Release|x86.ActiveCfg = Internal9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Debug|Win32.ActiveCfg = Debug|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Debug|x86.ActiveCfg = Debug|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Release|Any CPU.ActiveCfg = Internal9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Release|Any CPU.Build.0 = Internal9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Release|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Release|Mixed Platforms.Build.0 = Internal9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Release|Win32.ActiveCfg = Internal9|Any CPU + {650CD908-450D-4B70-9A68-590C7A2AC32B}.Release|x86.ActiveCfg = Internal9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Debug|Win32.ActiveCfg = Debug|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Debug|x86.ActiveCfg = Debug|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Release|Any CPU.ActiveCfg = Internal9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Release|Any CPU.Build.0 = Internal9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Release|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Release|Mixed Platforms.Build.0 = Internal9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Release|Win32.ActiveCfg = Internal9|Any CPU + {EB432A52-712F-478D-9A5B-81FF99DE6CBE}.Release|x86.ActiveCfg = Internal9|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Debug|Win32.ActiveCfg = Debug|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Debug|x86.ActiveCfg = Debug|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Release|Any CPU.Build.0 = Release|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Release|Win32.ActiveCfg = Release|Any CPU + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A}.Release|x86.ActiveCfg = Release|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Debug|Win32.ActiveCfg = Debug|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Debug|x86.ActiveCfg = Debug|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Devlab9|Mixed Platforms.ActiveCfg = Devlab9|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Devlab9|Mixed Platforms.Build.0 = Devlab9|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Devlab9|Win32.ActiveCfg = Devlab9|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Devlab9|x86.ActiveCfg = Devlab9|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Internal9|Win32.ActiveCfg = Internal9|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Internal9|x86.ActiveCfg = Internal9|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Release|Any CPU.Build.0 = Release|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Release|Win32.ActiveCfg = Release|Any CPU + {83E81339-DFB4-46A7-B0BF-21098B862AEF}.Release|x86.ActiveCfg = Release|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Debug|Win32.ActiveCfg = Debug|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Debug|x86.ActiveCfg = Debug|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Devlab9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Devlab9|Mixed Platforms.Build.0 = Debug|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Devlab9|Win32.ActiveCfg = Debug|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Devlab9|x86.ActiveCfg = Debug|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Internal9|Win32.ActiveCfg = Release|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Internal9|x86.ActiveCfg = Release|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Release|Any CPU.Build.0 = Release|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Release|Win32.ActiveCfg = Release|Any CPU + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12}.Release|x86.ActiveCfg = Release|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Debug|Win32.ActiveCfg = Debug|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Debug|x86.ActiveCfg = Debug|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Devlab9|Any CPU.ActiveCfg = Release|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Devlab9|Any CPU.Build.0 = Release|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Devlab9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Devlab9|Mixed Platforms.Build.0 = Debug|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Devlab9|Win32.ActiveCfg = Debug|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Devlab9|x86.ActiveCfg = Debug|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Internal9|Any CPU.ActiveCfg = Release|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Internal9|Any CPU.Build.0 = Release|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Internal9|Mixed Platforms.ActiveCfg = Release|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Internal9|Mixed Platforms.Build.0 = Release|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Internal9|Win32.ActiveCfg = Release|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Internal9|x86.ActiveCfg = Release|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Release|Any CPU.Build.0 = Release|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Release|Win32.ActiveCfg = Release|Any CPU + {DDCFABF7-69E9-4B33-9F0E-A5661F960111}.Release|x86.ActiveCfg = Release|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Debug|Win32.ActiveCfg = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Debug|x86.ActiveCfg = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Devlab9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Devlab9|Mixed Platforms.Build.0 = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Devlab9|Win32.ActiveCfg = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Devlab9|x86.ActiveCfg = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Internal9|Win32.ActiveCfg = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Internal9|x86.ActiveCfg = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Release|Any CPU.Build.0 = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Release|Mixed Platforms.Build.0 = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Release|Win32.ActiveCfg = Debug|Any CPU + {1926417C-C3E4-4137-B06A-90192A3AB682}.Release|x86.ActiveCfg = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Debug|Any CPU.Build.0 = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Debug|Win32.ActiveCfg = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Debug|x86.ActiveCfg = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Devlab9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Devlab9|Mixed Platforms.Build.0 = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Devlab9|Win32.ActiveCfg = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Devlab9|x86.ActiveCfg = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Internal9|Win32.ActiveCfg = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Internal9|x86.ActiveCfg = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Release|Any CPU.Build.0 = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Release|Mixed Platforms.Build.0 = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Release|Win32.ActiveCfg = Debug|Any CPU + {29106CFE-A683-4012-91E2-310552BE6258}.Release|x86.ActiveCfg = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Debug|Any CPU.Build.0 = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Debug|Win32.ActiveCfg = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Debug|x86.ActiveCfg = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Devlab9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Devlab9|Mixed Platforms.Build.0 = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Devlab9|Win32.ActiveCfg = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Devlab9|x86.ActiveCfg = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Internal9|Win32.ActiveCfg = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Internal9|x86.ActiveCfg = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Release|Any CPU.Build.0 = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Release|Mixed Platforms.Build.0 = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Release|Win32.ActiveCfg = Debug|Any CPU + {23B4C62D-6128-4619-92CB-C0CDE3271541}.Release|x86.ActiveCfg = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Debug|Any CPU.Build.0 = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Debug|Win32.ActiveCfg = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Debug|x86.ActiveCfg = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Devlab9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Devlab9|Mixed Platforms.Build.0 = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Devlab9|Win32.ActiveCfg = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Devlab9|x86.ActiveCfg = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Internal9|Win32.ActiveCfg = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Internal9|x86.ActiveCfg = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Release|Any CPU.Build.0 = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Release|Mixed Platforms.Build.0 = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Release|Win32.ActiveCfg = Debug|Any CPU + {34F25C64-A624-46E6-9832-4F59C5FDDB07}.Release|x86.ActiveCfg = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Debug|Any CPU.Build.0 = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Debug|Win32.ActiveCfg = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Debug|x86.ActiveCfg = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Devlab9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Devlab9|Mixed Platforms.Build.0 = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Devlab9|Win32.ActiveCfg = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Devlab9|x86.ActiveCfg = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Internal9|Win32.ActiveCfg = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Internal9|x86.ActiveCfg = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Release|Any CPU.Build.0 = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Release|Mixed Platforms.Build.0 = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Release|Win32.ActiveCfg = Debug|Any CPU + {44D764EF-D471-4981-B774-B8B532EDB690}.Release|x86.ActiveCfg = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Debug|Any CPU.Build.0 = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Debug|Win32.ActiveCfg = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Debug|x86.ActiveCfg = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Devlab9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Devlab9|Mixed Platforms.Build.0 = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Devlab9|Win32.ActiveCfg = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Devlab9|x86.ActiveCfg = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Internal9|Win32.ActiveCfg = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Internal9|x86.ActiveCfg = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Release|Any CPU.Build.0 = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Release|Mixed Platforms.Build.0 = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Release|Win32.ActiveCfg = Debug|Any CPU + {76F807DC-76BC-413E-95FD-A7E661DB1B33}.Release|x86.ActiveCfg = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Debug|Win32.ActiveCfg = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Debug|x86.ActiveCfg = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Devlab9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Devlab9|Mixed Platforms.Build.0 = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Devlab9|Win32.ActiveCfg = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Devlab9|x86.ActiveCfg = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Internal9|Win32.ActiveCfg = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Internal9|x86.ActiveCfg = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Release|Any CPU.Build.0 = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Release|Mixed Platforms.Build.0 = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Release|Win32.ActiveCfg = Debug|Any CPU + {0C2F5C12-CFB2-485A-900E-14547F93CE9E}.Release|x86.ActiveCfg = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Debug|Any CPU.Build.0 = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Debug|Win32.ActiveCfg = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Debug|x86.ActiveCfg = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Devlab9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Devlab9|Mixed Platforms.Build.0 = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Devlab9|Win32.ActiveCfg = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Devlab9|x86.ActiveCfg = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Internal9|Win32.ActiveCfg = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Internal9|x86.ActiveCfg = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Release|Any CPU.Build.0 = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Release|Mixed Platforms.Build.0 = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Release|Win32.ActiveCfg = Debug|Any CPU + {846689C9-C6E5-4576-BC63-F4A8762C0322}.Release|x86.ActiveCfg = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Debug|Win32.ActiveCfg = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Debug|x86.ActiveCfg = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Devlab9|Any CPU.ActiveCfg = Devlab9|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Devlab9|Any CPU.Build.0 = Devlab9|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Devlab9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Devlab9|Mixed Platforms.Build.0 = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Devlab9|Win32.ActiveCfg = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Devlab9|x86.ActiveCfg = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Internal9|Any CPU.ActiveCfg = Internal9|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Internal9|Any CPU.Build.0 = Internal9|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Internal9|Mixed Platforms.ActiveCfg = Internal9|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Internal9|Mixed Platforms.Build.0 = Internal9|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Internal9|Win32.ActiveCfg = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Internal9|x86.ActiveCfg = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Release|Any CPU.Build.0 = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Release|Mixed Platforms.Build.0 = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Release|Win32.ActiveCfg = Debug|Any CPU + {20C549CD-6524-4FB5-AD58-AAA939C75CEF}.Release|x86.ActiveCfg = Debug|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Debug|Win32.ActiveCfg = Debug|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Debug|x86.ActiveCfg = Debug|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Devlab9|Any CPU.ActiveCfg = Release|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Devlab9|Any CPU.Build.0 = Release|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Devlab9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Devlab9|Mixed Platforms.Build.0 = Debug|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Devlab9|Win32.ActiveCfg = Debug|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Devlab9|x86.ActiveCfg = Debug|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Internal9|Any CPU.ActiveCfg = Release|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Internal9|Any CPU.Build.0 = Release|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Internal9|Mixed Platforms.ActiveCfg = Release|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Internal9|Mixed Platforms.Build.0 = Release|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Internal9|Win32.ActiveCfg = Release|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Internal9|x86.ActiveCfg = Release|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Release|Any CPU.Build.0 = Release|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Release|Win32.ActiveCfg = Release|Any CPU + {4C272996-FE22-4700-BA18-0A2F482FB857}.Release|x86.ActiveCfg = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Debug|Win32.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Debug|x86.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Devlab9|Any CPU.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Devlab9|Any CPU.Build.0 = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Devlab9|Mixed Platforms.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Devlab9|Mixed Platforms.Build.0 = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Devlab9|Win32.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Devlab9|x86.ActiveCfg = Debug|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Internal9|Any CPU.ActiveCfg = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Internal9|Any CPU.Build.0 = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Internal9|Mixed Platforms.ActiveCfg = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Internal9|Mixed Platforms.Build.0 = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Internal9|Win32.ActiveCfg = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Internal9|x86.ActiveCfg = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Release|Any CPU.Build.0 = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Release|Win32.ActiveCfg = Release|Any CPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC}.Release|x86.ActiveCfg = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {29E1DFE9-D0A9-4AAB-B876-10BBF747C293} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {D45E4F81-3252-4000-9818-F8D018895B5B} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {2C10FDB2-966D-4A14-B18D-385FDFA1746A} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {9D404D0C-0921-4ADD-BC22-A14AAE2CA7E2} = {7CD8B829-346E-4FA0-ADDD-87152DDC5DDE} + {4695B865-1F0F-45DD-96CF-FDF999A813BD} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {04811420-E4EC-4E3D-A974-8A43FAF724C8} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {8A669480-0FD3-453A-823A-E82CFAE7558C} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {0E7A10F3-10E2-40CB-A47B-234615C4719B} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {202E0819-A63F-4BE1-9314-13306C4C9C96} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {9FA6D0C7-6B7B-4090-818E-29DEA3C295AB} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {560BAEE6-D01B-4714-92EF-798EEBCCF2DB} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {A09A280B-E5CE-4F5B-8081-163944392804} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {C719D602-0573-4E5A-AAFB-6DFF2106EEE6} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {87CFEEDB-BF05-455C-A14D-51DCB3FE9C65} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {EF8C241A-7A60-4AA4-9E4B-2752472A96EF} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {650CD908-450D-4B70-9A68-590C7A2AC32B} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {EB432A52-712F-478D-9A5B-81FF99DE6CBE} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {1A4FF4FF-5CF0-4DF0-8581-80A4DDBBCB5A} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {83E81339-DFB4-46A7-B0BF-21098B862AEF} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {C5A99A99-96B4-42D2-ABD0-1AB546CF4E12} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {DDCFABF7-69E9-4B33-9F0E-A5661F960111} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {1926417C-C3E4-4137-B06A-90192A3AB682} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {29106CFE-A683-4012-91E2-310552BE6258} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {23B4C62D-6128-4619-92CB-C0CDE3271541} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {34F25C64-A624-46E6-9832-4F59C5FDDB07} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {44D764EF-D471-4981-B774-B8B532EDB690} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {76F807DC-76BC-413E-95FD-A7E661DB1B33} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {0C2F5C12-CFB2-485A-900E-14547F93CE9E} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {846689C9-C6E5-4576-BC63-F4A8762C0322} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {20C549CD-6524-4FB5-AD58-AAA939C75CEF} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {4C272996-FE22-4700-BA18-0A2F482FB857} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC} = {5C718DA9-A4F2-4F73-B095-B2E180033C15} + EndGlobalSection + GlobalSection(TestCaseManagementSettings) = postSolution + CategoryFile = CodeContracts10.vsmdi + EndGlobalSection +EndGlobal diff --git a/Microsoft.Research/Clousot.Cache/Clousot.Cache.csproj b/Microsoft.Research/Clousot.Cache/Clousot.Cache.csproj index 86cd2c65..4a5251a4 100644 --- a/Microsoft.Research/Clousot.Cache/Clousot.Cache.csproj +++ b/Microsoft.Research/Clousot.Cache/Clousot.Cache.csproj @@ -116,6 +116,7 @@ + diff --git a/Microsoft.Research/Clousot.Cache/SQLCacheModel.cs b/Microsoft.Research/Clousot.Cache/SQLCacheModel.cs index fe51eb17..1724f85c 100644 --- a/Microsoft.Research/Clousot.Cache/SQLCacheModel.cs +++ b/Microsoft.Research/Clousot.Cache/SQLCacheModel.cs @@ -16,6 +16,9 @@ using System; using System.Collections.Generic; +using System.Data.Common; +using System.Data.Linq; +using System.Globalization; using System.Linq; using System.Text; using Microsoft.Research.CodeAnalysis.Caching.Models; @@ -28,7 +31,7 @@ using System.Data.Entity.Migrations; using System.Data.Entity.Infrastructure; // Entityframework v5: -#if EF5 +#if EF5 using System.Data.Objects; #else // Entity Framework v6 @@ -92,7 +95,7 @@ private void ObjectInvariant() Contract.Invariant(cachename != null); } - + private bool isFresh; private int nbWaitingChanges = 0; const int MaxWaitingChanges = 500; @@ -173,7 +176,7 @@ public Method MethodByHash(byte[] hash) try { var query = base.Methods.Where(m => m.Hash.Equals(hash)); - + return query.FirstOrDefault(); } catch (Exception e) @@ -338,7 +341,8 @@ public bool IsValid { get { - try { + try + { return base.Database != null && base.Database.Connection != null && base.Database.Connection.State != System.Data.ConnectionState.Broken; @@ -411,7 +415,7 @@ private void FixupPendingChanges() RemoveDuplicateAdds(objContext, method => this.MethodByHash(method.Hash)); } - private void RemoveDuplicateAdds(ObjectContext objContext, Func getStored) where T:class + private void RemoveDuplicateAdds(ObjectContext objContext, Func getStored) where T : class { Contract.Requires(objContext != null); Contract.Requires(getStored != null); @@ -425,7 +429,8 @@ private void RemoveDuplicateAdds(ObjectContext objContext, Func getStore foreach (var p in pendingAssemblyInfo) { Contract.Assume(p != null); - if (getStored(p.Entity) != null) { + if (getStored(p.Entity) != null) + { objContext.Detach(p.Entity); } } @@ -476,7 +481,7 @@ private bool ValidMethodModel(Method methodModel, bool warn = false) public void AddOrUpdate(Method methodModel) { - if (!ValidMethodModel(methodModel, warn:true)) return; + if (!ValidMethodModel(methodModel, warn: true)) return; try { // don't use Migrations.AddOrUpdate method. It is really slow. Assume we can update (no cache hit) @@ -510,23 +515,23 @@ public void AddOrUpdate(IdHashTimeToMethod idhash) public void AddOrUpdate(Method method, AssemblyInfo assemblyInfo) { - if (!ValidMethodModel(method)) return; - try + if (!ValidMethodModel(method)) return; + try + { + if (!method.Assemblies.AssumeNotNull() + .Where(a => a.AssemblyId == assemblyInfo.AssemblyId).AssumeNotNull() + .Any()) { - if (!method.Assemblies.AssumeNotNull() - .Where(a => a.AssemblyId == assemblyInfo.AssemblyId).AssumeNotNull() - .Any()) - { - method.Assemblies.Add(assemblyInfo); - } + method.Assemblies.Add(assemblyInfo); } - catch (Exception e) + } + catch (Exception e) + { + if (this.trace) { - if (this.trace) - { - Console.WriteLine("[cache] SqlCacheModel: AddOrUpdate method assembly binding failed: {0}", e.Message); - } + Console.WriteLine("[cache] SqlCacheModel: AddOrUpdate method assembly binding failed: {0}", e.Message); } + } } public void AddOrUpdate(BaselineMethod baseline) @@ -550,14 +555,41 @@ public void AddOrUpdate(BaselineMethod baseline) Console.WriteLine("[cache] SqlCacheModel: AddOrUpdate baseline binding failed: {0}", e.Message); } } - - } + } public string CacheName { get { return this.cachename; } } + + protected static void DetachDeletedDb(string connection) + { + // If anyone has manually deleted the cache file, it might be still registered with LocalDB. + // If this is the case, we can't create a new database and the user is stuck unless he knows the tricky internals of LocalDB and how to get rid of the registration. + // => If we use LocalDB and the file does not exist, we try to detach it. + try + { + var connectionString = new DbConnectionStringBuilder { ConnectionString = connection }; + var fileName = (string)connectionString["AttachDbFileName"]; + if (File.Exists(fileName)) + return; + + var catalog = (string)connectionString["Initial Catalog"]; + var dataSource = (string)connectionString["Data Source"]; + + using (var master = new DataContext(string.Format(CultureInfo.InvariantCulture, @"Data Source={0};Initial Catalog=master;Integrated Security=True", dataSource))) + { + master.ExecuteCommand(@"exec sp_detach_db {0}", catalog); + } + } + catch + { + // Ignore any errors here, could be + // - not using LocalDB at all (any of the connection string parameters did not exist) + // - file was never registered (first time used) or already detached. + } + } } public class SqlCacheModelNoCreate : SQLCacheModel @@ -567,8 +599,10 @@ static SqlCacheModelNoCreate() Database.SetInitializer(null); } - public SqlCacheModelNoCreate(string connection, string cacheName, bool trace) : base(connection, cacheName, trace) { - Contract.Requires(cacheName != null); + public SqlCacheModelNoCreate(string connection, string cacheName, bool trace) + : base(connection, cacheName, trace) + { + Contract.Requires(cacheName != null); } } @@ -583,7 +617,8 @@ protected override void Seed(SqlCacheModelUseExisting context) } } - static SqlCacheModelUseExisting() { + static SqlCacheModelUseExisting() + { Database.SetInitializer(new Policy()); } @@ -614,6 +649,8 @@ public SqlCacheModelClearExisting(string connection, string cachename, bool trac : base(connection, cachename, trace) { Contract.Requires(cachename != null); + + DetachDeletedDb(connection); } } @@ -637,6 +674,8 @@ public SqlCacheModelDropOnModelChange(string connection, string cachename, bool : base(connection, cachename, trace) { Contract.Requires(cachename != null); + + DetachDeletedDb(connection); } } diff --git a/Microsoft.Research/Contracts/Microsoft.VisualBasic.Contracts/Microsoft.VisualBasic10.vbproj b/Microsoft.Research/Contracts/Microsoft.VisualBasic.Contracts/Microsoft.VisualBasic10.vbproj index 8bf150ab..bb6e20d1 100644 --- a/Microsoft.Research/Contracts/Microsoft.VisualBasic.Contracts/Microsoft.VisualBasic10.vbproj +++ b/Microsoft.Research/Contracts/Microsoft.VisualBasic.Contracts/Microsoft.VisualBasic10.vbproj @@ -14,7 +14,7 @@ Microsoft.VisualBasic 512 Build - Windows + Empty v4.0 diff --git a/Microsoft.Research/Contracts/MsCorlib/MsCorlib.Contracts10.csproj b/Microsoft.Research/Contracts/MsCorlib/MsCorlib.Contracts10.csproj index 047c523c..8518d5d8 100644 --- a/Microsoft.Research/Contracts/MsCorlib/MsCorlib.Contracts10.csproj +++ b/Microsoft.Research/Contracts/MsCorlib/MsCorlib.Contracts10.csproj @@ -328,8 +328,11 @@ + + + @@ -848,6 +851,7 @@ Include="System.Security.Principal.WindowsPrincipal.cs" /> --> + diff --git a/Microsoft.Research/Contracts/MsCorlib/System.Collections.Generic.ICollection.cs b/Microsoft.Research/Contracts/MsCorlib/System.Collections.Generic.ICollection.cs index d327538a..8d58b42b 100644 --- a/Microsoft.Research/Contracts/MsCorlib/System.Collections.Generic.ICollection.cs +++ b/Microsoft.Research/Contracts/MsCorlib/System.Collections.Generic.ICollection.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System; @@ -126,58 +126,61 @@ abstract class ICollectionContract : ICollection public int Count { - get { + get + { Contract.Ensures(Contract.Result() >= 0); - throw new global::System.NotImplementedException(); + throw new NotImplementedException(); } } bool ICollection.IsReadOnly { - get { throw new global::System.NotImplementedException(); } + get { throw new NotImplementedException(); } } public void Add(T item) { //Contract.Requires(!@this.IsReadOnly); // The Ensures below is tricky for wrappers. Needs quantified invariant in wrapper to prove wrapper correct - // Forall(value => !m_backing.Contains(value) || this.Contains(value) ) - //Contract.Ensures(this.Contains(item)); - Contract.Ensures(this.Count >= Contract.OldValue(this.Count)); - throw new global::System.NotImplementedException(); + // Forall(value => !m_backing.Contains(value) || this.Contains(value) ) + //Contract.Ensures(this.Contains(item)); + Contract.Ensures(Count >= Contract.OldValue(Count)); + + throw new NotImplementedException(); } public void Clear() { //Contract.Requires(!@this.IsReadOnly); - Contract.Ensures(this.Count == 0); + Contract.Ensures(Count == 0); - throw new global::System.NotImplementedException(); + throw new NotImplementedException(); } public bool Contains(T item) { - Contract.Ensures(!Contract.Result() || this.Count > 0); + Contract.Ensures(!Contract.Result() || Count > 0); - throw new global::System.NotImplementedException(); + throw new NotImplementedException(); } public void CopyTo(T[] array, int arrayIndex) { Contract.Requires(array != null); Contract.Requires(arrayIndex >= 0); - Contract.Requires(arrayIndex <= array.Length - this.Count); + Contract.Requires(arrayIndex <= array.Length - Count); - throw new global::System.NotImplementedException(); + throw new NotImplementedException(); } public bool Remove(T item) { //Contract.Requires(!@this.IsReadOnly); - Contract.Ensures(this.Count <= Contract.OldValue(this.Count)); - Contract.Ensures(!Contract.Result() || this.Count >= Contract.OldValue(this.Count - 1)); - throw new global::System.NotImplementedException(); + Contract.Ensures(Count <= Contract.OldValue(Count)); + Contract.Ensures(!Contract.Result() || Count >= Contract.OldValue(Count - 1)); + + throw new NotImplementedException(); } #endregion @@ -186,7 +189,7 @@ public bool Remove(T item) IEnumerator IEnumerable.GetEnumerator() { - throw new global::System.NotImplementedException(); + throw new NotImplementedException(); } #endregion @@ -195,7 +198,7 @@ IEnumerator IEnumerable.GetEnumerator() IEnumerator IEnumerable.GetEnumerator() { - throw new global::System.NotImplementedException(); + throw new NotImplementedException(); } #endregion diff --git a/Microsoft.Research/Contracts/MsCorlib/System.Collections.Generic.IDictionary.cs b/Microsoft.Research/Contracts/MsCorlib/System.Collections.Generic.IDictionary.cs index 5516e182..f2abbf8f 100644 --- a/Microsoft.Research/Contracts/MsCorlib/System.Collections.Generic.IDictionary.cs +++ b/Microsoft.Research/Contracts/MsCorlib/System.Collections.Generic.IDictionary.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System.Diagnostics.Contracts; @@ -144,12 +144,12 @@ TValue this[TKey key] [ContractClassFor(typeof(IDictionary<,>))] abstract class IDictionaryContract : IDictionary { - #region IDictionary Members ICollection IDictionary.Keys { - get { + get + { Contract.Ensures(Contract.Result>() != null); throw new NotImplementedException(); } @@ -157,7 +157,8 @@ ICollection IDictionary.Keys ICollection IDictionary.Values { - get { + get + { Contract.Ensures(Contract.Result>() != null); throw new NotImplementedException(); } @@ -167,12 +168,14 @@ TValue IDictionary.this[TKey key] { get { - // Contract.Requires(ContainsKey(key)); + Contract.Requires(!ReferenceEquals(key, null)); + // Contract.Requires(ContainsKey(key)); ==> can't require, it's impossible to get rid of "requires unproven: ContainsKey(key)" throw new NotImplementedException(); } set { - // Contract.Ensures(ContainsKey(key)); + Contract.Requires(!ReferenceEquals(key, null)); + //Contract.Ensures(ContainsKey(key)); //Contract.Ensures(old(ContainsKey(key)) ==> Count == old(Count)); //Contract.Ensures(!old(ContainsKey(key)) ==> Count == old(Count) + 1); throw new NotImplementedException(); @@ -181,29 +184,32 @@ TValue IDictionary.this[TKey key] void IDictionary.Add(TKey key, TValue value) { + Contract.Requires(!ReferenceEquals(key, null)); + // - correct, but probably too anoying to proof always. If you can't assume that key does not exist, you would call "this[key] = value". // Contract.Requires(!ContainsKey(key)); //modifies this.*; - //Contract.Ensures(ContainsKey(key)); + // Contract.Ensures(ContainsKey(key)); ==> is of no use, CC would not use this. } - bool IDictionary.ContainsKey(TKey key) + public bool ContainsKey(TKey key) { - var @this = (IDictionary)this; - Contract.Ensures(!Contract.Result() || @this.Count > 0); + Contract.Requires(!ReferenceEquals(key, null)); + Contract.Ensures(!Contract.Result() || (Count > 0)); throw new NotImplementedException(); } bool IDictionary.Remove(TKey key) { - // Contract.Ensures(!Contract.Result() || Contract.OldValue(ContainsKey(key)) && !ContainsKey(key)); + Contract.Requires(!ReferenceEquals(key, null)); + // Contract.Ensures(!Contract.Result() || Contract.OldValue(ContainsKey(key)) && !ContainsKey(key)); ==> is of no use, CC would not use this. throw new NotImplementedException(); } bool IDictionary.TryGetValue(TKey key, out TValue value) { - var @this = (IDictionary)this; - Contract.Ensures(Contract.Result() == @this.ContainsKey(key)); + Contract.Requires(!ReferenceEquals(key, null)); + Contract.Ensures(Contract.Result() == ContainsKey(key)); throw new NotImplementedException(); } @@ -211,7 +217,7 @@ bool IDictionary.TryGetValue(TKey key, out TValue value) #region ICollection> Members - int ICollection>.Count + public int Count { get { throw new NotImplementedException(); } } diff --git a/Microsoft.Research/Contracts/MsCorlib/System.Collections.ObjectModel.Collection.cs b/Microsoft.Research/Contracts/MsCorlib/System.Collections.ObjectModel.Collection.cs new file mode 100644 index 00000000..09acfb6f --- /dev/null +++ b/Microsoft.Research/Contracts/MsCorlib/System.Collections.ObjectModel.Collection.cs @@ -0,0 +1,394 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Diagnostics.Contracts; +using System.Reflection; +using System.Runtime; +using System.Runtime.InteropServices; + +namespace System.Collections.ObjectModel +{ + // Summary: + // Provides the base class for a generic collection. + // + // Type parameters: + // T: + // The type of elements in the collection. + public class Collection : IList, ICollection, IEnumerable, IList, ICollection, IEnumerable + { + // Summary: + // Initializes a new instance of the System.Collections.ObjectModel.Collection + // class that is empty. + public Collection() + { + } + + // + // Summary: + // Initializes a new instance of the System.Collections.ObjectModel.Collection + // class as a wrapper for the specified list. + // + // Parameters: + // list: + // The list that is wrapped by the new collection. + // + // Exceptions: + // System.ArgumentNullException: + // list is null. + public Collection(IList list) + { + Contract.Requires(list != null); + } + + // Summary: + // Gets the number of elements actually contained in the System.Collections.ObjectModel.Collection. + // + // Returns: + // The number of elements actually contained in the System.Collections.ObjectModel.Collection. + public int Count + { + get + { + return 0; + } + } + + bool ICollection.IsSynchronized + { + get + { + throw new NotImplementedException(); + } + } + + object ICollection.SyncRoot + { + get + { + throw new NotImplementedException(); + } + } + + void ICollection.CopyTo(Array array, int index) + { + throw new NotImplementedException(); + } + + bool IList.IsFixedSize + { + get + { + throw new NotImplementedException(); + } + } + + bool IList.IsReadOnly + { + get + { + throw new NotImplementedException(); + } + } + + object IList.this[int index] + { + get + { + throw new NotImplementedException(); + } + set + { + throw new NotImplementedException(); + } + } + + bool ICollection.IsReadOnly + { + get + { + throw new NotImplementedException(); + } + } + + // + // Summary: + // Gets a System.Collections.Generic.IList wrapper around the System.Collections.ObjectModel.Collection. + // + // Returns: + // A System.Collections.Generic.IList wrapper around the System.Collections.ObjectModel.Collection. + protected IList Items + { + get + { + Contract.Ensures(Contract.Result>() != null); + return null; + } + } + + // Summary: + // Gets or sets the element at the specified index. + // + // Parameters: + // index: + // The zero-based index of the element to get or set. + // + // Returns: + // The element at the specified index. + // + // Exceptions: + // System.ArgumentOutOfRangeException: + // index is less than zero.-or-index is equal to or greater than System.Collections.ObjectModel.Collection.Count. + public T this[int index] { + get + { + return default(T); + } + set + { + } + } + + // Summary: + // Adds an object to the end of the System.Collections.ObjectModel.Collection. + // + // Parameters: + // item: + // The object to be added to the end of the System.Collections.ObjectModel.Collection. + // The value can be null for reference types. + public void Add(T item) + { + + } + // + // Summary: + // Removes all elements from the System.Collections.ObjectModel.Collection. + + int IList.Add(object value) + { + throw new NotImplementedException(); + } + + public void Clear() + { + + } + + bool IList.Contains(object value) + { + throw new NotImplementedException(); + } + + int IList.IndexOf(object value) + { + throw new NotImplementedException(); + } + + void IList.Insert(int index, object value) + { + throw new NotImplementedException(); + } + + void IList.Remove(object value) + { + throw new NotImplementedException(); + } + + // + // Summary: + // Removes all elements from the System.Collections.ObjectModel.Collection. + protected virtual void ClearItems() + { + + } + // + // Summary: + // Determines whether an element is in the System.Collections.ObjectModel.Collection. + // + // Parameters: + // item: + // The object to locate in the System.Collections.ObjectModel.Collection. + // The value can be null for reference types. + // + // Returns: + // true if item is found in the System.Collections.ObjectModel.Collection; + // otherwise, false. + public bool Contains(T item) + { + return false; + } + // + // Summary: + // Copies the entire System.Collections.ObjectModel.Collection to a compatible + // one-dimensional System.Array, starting at the specified index of the target + // array. + // + // Parameters: + // array: + // The one-dimensional System.Array that is the destination of the elements + // copied from System.Collections.ObjectModel.Collection. The System.Array + // must have zero-based indexing. + // + // index: + // The zero-based index in array at which copying begins. + // + // Exceptions: + // System.ArgumentNullException: + // array is null. + // + // System.ArgumentOutOfRangeException: + // index is less than zero. + // + // System.ArgumentException: + // The number of elements in the source System.Collections.ObjectModel.Collection + // is greater than the available space from index to the end of the destination + // array. + public void CopyTo(T[] array, int index) + { + + } + // + // Summary: + // Returns an enumerator that iterates through the System.Collections.ObjectModel.Collection. + // + // Returns: + // An System.Collections.Generic.IEnumerator for the System.Collections.ObjectModel.Collection. + public IEnumerator GetEnumerator() + { + return null; + } + + [ContractModel] + public object[] Model + { + [ContractRuntimeIgnored] + get + { + throw new NotImplementedException(); + } + } + + // + // Summary: + // Searches for the specified object and returns the zero-based index of the + // first occurrence within the entire System.Collections.ObjectModel.Collection. + // + // Parameters: + // item: + // The object to locate in the System.Collections.Generic.List. The value + // can be null for reference types. + // + // Returns: + // The zero-based index of the first occurrence of item within the entire System.Collections.ObjectModel.Collection, + // if found; otherwise, -1. + public int IndexOf(T item) + { + return 0; + } + // + // Summary: + // Inserts an element into the System.Collections.ObjectModel.Collection + // at the specified index. + // + // Parameters: + // index: + // The zero-based index at which item should be inserted. + // + // item: + // The object to insert. The value can be null for reference types. + // + // Exceptions: + // System.ArgumentOutOfRangeException: + // index is less than zero.-or-index is greater than System.Collections.ObjectModel.Collection.Count. + public void Insert(int index, T item) + { + + } + // + // Summary: + // Inserts an element into the System.Collections.ObjectModel.Collection + // at the specified index. + // + // Parameters: + // index: + // The zero-based index at which item should be inserted. + // + // item: + // The object to insert. The value can be null for reference types. + // + // Exceptions: + // System.ArgumentOutOfRangeException: + // index is less than zero.-or-index is greater than System.Collections.ObjectModel.Collection.Count. + protected virtual void InsertItem(int index, T item) + { + + } + // + // Summary: + // Removes the first occurrence of a specific object from the System.Collections.ObjectModel.Collection. + // + // Parameters: + // item: + // The object to remove from the System.Collections.ObjectModel.Collection. + // The value can be null for reference types. + // + // Returns: + // true if item is successfully removed; otherwise, false. This method also + // returns false if item was not found in the original System.Collections.ObjectModel.Collection. + public bool Remove(T item) + { + return false; + } + // + // Summary: + // Removes the element at the specified index of the System.Collections.ObjectModel.Collection. + // + // Parameters: + // index: + // The zero-based index of the element to remove. + // + // Exceptions: + // System.ArgumentOutOfRangeException: + // index is less than zero.-or-index is equal to or greater than System.Collections.ObjectModel.Collection.Count. + public void RemoveAt(int index) { } + // + // Summary: + // Removes the element at the specified index of the System.Collections.ObjectModel.Collection. + // + // Parameters: + // index: + // The zero-based index of the element to remove. + // + // Exceptions: + // System.ArgumentOutOfRangeException: + // index is less than zero.-or-index is equal to or greater than System.Collections.ObjectModel.Collection.Count. + protected virtual void RemoveItem(int index) + { + + } + // + // Summary: + // Replaces the element at the specified index. + // + // Parameters: + // index: + // The zero-based index of the element to replace. + // + // item: + // The new value for the element at the specified index. The value can be null + // for reference types. + // + // Exceptions: + // System.ArgumentOutOfRangeException: + // index is less than zero.-or-index is greater than System.Collections.ObjectModel.Collection.Count. + protected virtual void SetItem(int index, T item) + { + + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } +} diff --git a/Microsoft.Research/Contracts/MsCorlib/System.Globalization.CalendarWeekRule.cs b/Microsoft.Research/Contracts/MsCorlib/System.Globalization.CalendarWeekRule.cs index debbe40b..a4dc9f5b 100644 --- a/Microsoft.Research/Contracts/MsCorlib/System.Globalization.CalendarWeekRule.cs +++ b/Microsoft.Research/Contracts/MsCorlib/System.Globalization.CalendarWeekRule.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System; @@ -22,8 +22,6 @@ namespace System.Globalization { // Summary: // Defines different rules for determining the first week of the year. - [Serializable] - [ComVisible(true)] public enum CalendarWeekRule { // Summary: // Indicates that the first week of the year starts on the first day of the diff --git a/Microsoft.Research/Contracts/MsCorlib/System.Globalization.CultureInfo.cs b/Microsoft.Research/Contracts/MsCorlib/System.Globalization.CultureInfo.cs index 80994c22..0c96658e 100644 --- a/Microsoft.Research/Contracts/MsCorlib/System.Globalization.CultureInfo.cs +++ b/Microsoft.Research/Contracts/MsCorlib/System.Globalization.CultureInfo.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System; @@ -18,7 +18,20 @@ namespace System.Globalization { - +#if !SILVERLIGHT + public enum CultureTypes + { + NeutralCultures = 1, + SpecificCultures = 2, + InstalledWin32Cultures = 4, + AllCultures = InstalledWin32Cultures | SpecificCultures | NeutralCultures, + UserCustomCulture = 8, + ReplacementCultures = 16, + WindowsOnlyCultures = 32, + FrameworkCultures = 64, + } +#endif + public abstract class CultureInfo { @@ -168,26 +181,27 @@ public static CultureInfo InstalledUICulture } #endif -#if false - public DateTimeFormatInfo DateTimeFormat + public virtual DateTimeFormatInfo DateTimeFormat { get { Contract.Ensures(Contract.Result() != null); + return null; } set { Contract.Requires(value != null); } } -#endif -#if false - public CultureInfo Parent + public virtual CultureInfo Parent { - get; + get + { + Contract.Ensures(Contract.Result() != null); + return null; + } } -#endif public virtual string EnglishName { @@ -225,14 +239,14 @@ public static CultureInfo ReadOnly(CultureInfo ci) public abstract object GetFormat(Type formatType); -#if false +#if !SILVERLIGHT + public static CultureInfo[] GetCultures(CultureTypes types) { + Contract.Ensures(Contract.Result() != null); return default(CultureInfo[]); } -#endif -#if !SILVERLIGHT public static CultureInfo CreateSpecificCulture(string name) { Contract.Ensures(Contract.Result() != null); diff --git a/Microsoft.Research/Contracts/MsCorlib/System.Globalization.DateTimeFormatInfo.cs b/Microsoft.Research/Contracts/MsCorlib/System.Globalization.DateTimeFormatInfo.cs index bee1786b..24638043 100644 --- a/Microsoft.Research/Contracts/MsCorlib/System.Globalization.DateTimeFormatInfo.cs +++ b/Microsoft.Research/Contracts/MsCorlib/System.Globalization.DateTimeFormatInfo.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System.Diagnostics.Contracts; @@ -170,6 +170,7 @@ public String[] AbbreviatedDayNames } } +#if !SILVERLIGHT public string DateSeparator { get @@ -183,6 +184,7 @@ public string DateSeparator Contract.Requires(value != null); } } +#endif public string FullDateTimePattern { @@ -198,6 +200,7 @@ public string FullDateTimePattern } } +#if !SILVERLIGHT public string TimeSeparator { get @@ -211,13 +214,13 @@ public string TimeSeparator Contract.Requires(value != null); } } - +#endif public Calendar Calendar { get { Contract.Ensures(Contract.Result() != null); - return default(string); + return default(Calendar); } set @@ -334,16 +337,20 @@ public string GetDayName(DayOfWeek dayofweek) return default(string); } + +#if !SILVERLIGHT public String[] GetAllDateTimePatterns(Char format) { - + Contract.Ensures(Contract.Result() != null); return default(String[]); } public String[] GetAllDateTimePatterns() { - + Contract.Ensures(Contract.Result() != null); return default(String[]); } +#endif + public string GetAbbreviatedDayName(DayOfWeek dayofweek) { Contract.Requires((int)dayofweek >= 0); @@ -369,24 +376,20 @@ public int GetEra(string eraName) return default(int); } - public object Clone() + public virtual object Clone() { return default(object); } - public object GetFormat(Type formatType) + public virtual object GetFormat(Type formatType) { return default(object); } public static DateTimeFormatInfo GetInstance(IFormatProvider provider) { - - return default(DateTimeFormatInfo); - } - public DateTimeFormatInfo() - { - return default(DateTimeFormatInfo); + Contract.Ensures(Contract.Result() != null); + return default(DateTimeFormatInfo); } } } diff --git a/Microsoft.Research/Contracts/MsCorlib/System.Math.cs b/Microsoft.Research/Contracts/MsCorlib/System.Math.cs index 8102b948..b67c3aa4 100644 --- a/Microsoft.Research/Contracts/MsCorlib/System.Math.cs +++ b/Microsoft.Research/Contracts/MsCorlib/System.Math.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // File System.Math.cs @@ -93,29 +93,40 @@ public static Decimal Abs(Decimal value) [Pure] public static float Abs(float value) { + Contract.Ensures((Contract.Result() >= 0.0) || float.IsNaN(Contract.Result()) || float.IsPositiveInfinity(Contract.Result())); + + // 2015-03-26: tom-englert + // Disabled, since this was too complex for the checker to understand. + // e.g. new Rect(0, 0, Math.Abs(a), Math.Abs(b)) raised a warning that with and height are unproven to be positive values. + // !NaN ==> >= 0 - Contract.Ensures(float.IsNaN(value) || Contract.Result() >= 0.0); + // Contract.Ensures(float.IsNaN(value) || Contract.Result() >= 0.0); // NaN ==> NaN - Contract.Ensures(!float.IsNaN(value) || float.IsNaN(Contract.Result())); + // Contract.Ensures(!float.IsNaN(value) || float.IsNaN(Contract.Result())); // Infty ==> +Infty - Contract.Ensures(!float.IsInfinity(value) || float.IsPositiveInfinity(Contract.Result())); + // Contract.Ensures(!float.IsInfinity(value) || float.IsPositiveInfinity(Contract.Result())); return default(float); } [Pure] public static double Abs(double value) - { + { + Contract.Ensures((Contract.Result() >= 0.0) || double.IsNaN(Contract.Result()) || double.IsPositiveInfinity(Contract.Result())); + + // 2015-03-26: tom-englert + // Disabled, since this was too complex for the checker to understand. + // e.g. new Rect(0, 0, Math.Abs(a), Math.Abs(b)) raised a warning that with and height are unproven to be positive values. + // !NaN ==> >= 0 - Contract.Ensures(double.IsNaN(value) || Contract.Result() >= 0.0); + // Contract.Ensures(double.IsNaN(value) || Contract.Result() >= 0.0); // NaN ==> NaN - Contract.Ensures(!double.IsNaN(value) || double.IsNaN(Contract.Result())); - + // Contract.Ensures(!double.IsNaN(value) || double.IsNaN(Contract.Result())); // Infty ==> +Infty - Contract.Ensures(!double.IsInfinity(value) || double.IsPositiveInfinity(Contract.Result())); + // Contract.Ensures(!double.IsInfinity(value) || double.IsPositiveInfinity(Contract.Result())); return default(double); } @@ -129,7 +140,7 @@ public static double Acos(double d) // d < -1 || d > 1 ==> NaN Contract.Ensures(!(d < -1 || d > 1) || Double.IsNaN(Contract.Result())); - + // d == NaN ==> NaN Contract.Ensures(!Double.IsNaN(d) || Double.IsNaN(Contract.Result())); @@ -310,7 +321,7 @@ public static double Log(double d) // 0 < d < 1 ==> < 0 Contract.Ensures(!(0.0 < d && d < 1.0) || Contract.Result() < 0); - + // d == 1 ==> 1 Contract.Ensures(d != 1.0 || Contract.Result() == 0.0); @@ -526,7 +537,7 @@ public static double Pow(double x, double y) { // x == NaN or y == NaN ==> NaN Contract.Ensures(!(Double.IsNaN(x) || Double.IsNaN(y)) || Double.IsNaN(Contract.Result())); - + // y == 0 ==> 1 Contract.Ensures(!(!Double.IsNaN(x) && y == 0) || Contract.Result() == 1.0); @@ -584,7 +595,7 @@ public static double Round(double a) return default(double); } - + [Pure] public static Decimal Round(Decimal d) { diff --git a/Microsoft.Research/Contracts/MsCorlib/System.String.cs b/Microsoft.Research/Contracts/MsCorlib/System.String.cs index 112e3b5a..20a36a75 100644 --- a/Microsoft.Research/Contracts/MsCorlib/System.String.cs +++ b/Microsoft.Research/Contracts/MsCorlib/System.String.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System; @@ -162,6 +162,28 @@ public static String Concat(object arg0) Contract.Ensures(Contract.Result() != null); return default(String); } + +#if NETFRAMEWORK_4_0 || NETFRAMEWORK_4_5 + + [Pure] + [Reads(ReadsAttribute.Reads.Nothing)] + public static String Concat(IEnumerable args) + { + + Contract.Ensures(Contract.Result() != null); + return default(String); + } + [Pure] + [Reads(ReadsAttribute.Reads.Nothing)] + public static String Concat(IEnumerable args) + { + + Contract.Ensures(Contract.Result() != null); + return default(String); + } +#endif + + [Pure] [Reads(ReadsAttribute.Reads.Nothing)] public static String Copy(String str) @@ -189,7 +211,7 @@ public static String Format(String format, object[] args) Contract.Ensures(Contract.Result() != null); return default(String); } - + [Pure] [Reads(ReadsAttribute.Reads.Nothing)] public static String Format(String format, object arg0, object arg1, object arg2) @@ -199,7 +221,7 @@ public static String Format(String format, object arg0, object arg1, object arg2 Contract.Ensures(Contract.Result() != null); return default(String); } - + [Pure] [Reads(ReadsAttribute.Reads.Nothing)] public static String Format(String format, object arg0, object arg1) @@ -209,7 +231,7 @@ public static String Format(String format, object arg0, object arg1) Contract.Ensures(Contract.Result() != null); return default(String); } - + [Pure] [Reads(ReadsAttribute.Reads.Nothing)] public static String Format(String format, object arg0) @@ -245,7 +267,7 @@ public String Remove(int index, int count) return default(String); } - + [Pure] [Reads(ReadsAttribute.Reads.Owned)] public String Replace(String oldValue, String newValue) @@ -262,7 +284,7 @@ public String Replace(String oldValue, String newValue) public String Replace(char oldChar, char newChar) { Contract.Ensures(Contract.Result() != null); - + return default(String); } @@ -294,7 +316,7 @@ public String Trim() [Reads(ReadsAttribute.Reads.Owned)] public String ToUpper(System.Globalization.CultureInfo culture) { Contract.Requires(culture != null); - + Contract.Ensures(Contract.Result() != null); Contract.Ensures(Contract.Result().Length == this.Length, "Are there languages for which this isn't true?!?"); @@ -392,7 +414,7 @@ public String PadRight(int totalWidth) Contract.Ensures(Contract.Result().Length == totalWidth); Contract.Ensures(Contract.Result() != null); - + return default(String); } @@ -413,7 +435,7 @@ public String PadRight(int totalWidth, char paddingChar) public String PadLeft(int totalWidth, char paddingChar) { Contract.Requires(totalWidth >= 0); - + Contract.Ensures(Contract.Result().Length == totalWidth); Contract.Ensures(Contract.Result() != null); @@ -428,7 +450,7 @@ public String PadLeft(int totalWidth) Contract.Ensures(Contract.Result().Length == totalWidth); Contract.Ensures(Contract.Result() != null); - + return default(String); } @@ -460,7 +482,7 @@ public int LastIndexOf(char value, int startIndex) { Contract.Requires(this == Empty || startIndex >= 0); Contract.Requires(this == Empty || startIndex < this.Length); - + Contract.Ensures(-1 <= Contract.Result()); Contract.Ensures(Contract.Result() < this.Length); @@ -635,7 +657,7 @@ public int IndexOf(char value, int startIndex) Contract.Requires(startIndex <= Length); Contract.Ensures(-1 <= Contract.Result()); - Contract.Ensures(Contract.Result() == -1 || Contract.Result() >= startIndex); + Contract.Ensures(Contract.Result() == -1 || Contract.Result() >= startIndex); Contract.Ensures(Contract.Result() < this.Length); @@ -696,7 +718,7 @@ public int IndexOf(String value, int startIndex, int count) Contract.Ensures(-1 <= Contract.Result()); Contract.Ensures(value == String.Empty || Contract.Result() < startIndex + count); - + Contract.Ensures(Contract.Result() == -1 || Contract.Result() >= startIndex); Contract.Ensures(value != String.Empty || Contract.Result() == startIndex); @@ -757,10 +779,10 @@ public int IndexOfAny(char[] anyOf) public int IndexOfAny(char[] anyOf, int startIndex) { Contract.Requires(anyOf != null); - + Contract.Requires(startIndex >= 0); Contract.Requires(startIndex < Length); - + Contract.Ensures(-1 <= Contract.Result()); Contract.Ensures(Contract.Result() < this.Length); @@ -772,10 +794,10 @@ public int IndexOfAny(char[] anyOf, int startIndex) public int IndexOfAny(char[] anyOf, int startIndex, int count) { Contract.Requires(anyOf != null); - + Contract.Requires(startIndex >= 0); Contract.Requires(count >= 0); - + Contract.Requires(startIndex + count < Length); Contract.Ensures(-1 <= Contract.Result()); @@ -783,7 +805,7 @@ public int IndexOfAny(char[] anyOf, int startIndex, int count) return default(int); } - + public static readonly string/*!*/ Empty; @@ -879,7 +901,7 @@ public static int Compare(string strA, string strB, StringComparison comparisonT return default(int); } [Pure] - public static int Compare(string strA, int indexA, string strB, int indexB, int length, StringComparison comparisonType) + public static int Compare(string strA, int indexA, string strB, int indexB, int length, StringComparison comparisonType) { Contract.Requires(indexA >= 0); Contract.Requires(indexB >= 0); @@ -888,7 +910,7 @@ public static int Compare(string strA, int indexA, string strB, int indexB, int Contract.Requires(indexB <= strB.Length); Contract.Requires((strA != null && strB != null) || length == 0); Contract.Requires(Enum.IsDefined(typeof(StringComparison), comparisonType)); - + return default(int); } @@ -1072,7 +1094,7 @@ public string[] Split(string[] separator, StringSplitOptions options) { Contract.Ensures(Contract.Result() != null); Contract.Ensures(Contract.ForAll(0, Contract.Result().Length, i => Contract.Result()[i] != null)); - + return default(string[]); } #if !SILVERLIGHT @@ -1198,6 +1220,17 @@ public static String Join(String separator, String[] value) } #if NETFRAMEWORK_4_0 || NETFRAMEWORK_4_5 + + [Pure] + [Reads(ReadsAttribute.Reads.Nothing)] + public static String Join(String separator, Object[] value) + { + Contract.Requires(value != null); + Contract.Ensures(Contract.Result() != null); + + return default(String); + } + [Pure] public static string Join(string separator, IEnumerable values) { diff --git a/Microsoft.Research/Contracts/PresentationCore/Sources/System.Windows.Media.Transform.cs b/Microsoft.Research/Contracts/PresentationCore/Sources/System.Windows.Media.Transform.cs index f0310e0e..cfc191e3 100644 --- a/Microsoft.Research/Contracts/PresentationCore/Sources/System.Windows.Media.Transform.cs +++ b/Microsoft.Research/Contracts/PresentationCore/Sources/System.Windows.Media.Transform.cs @@ -83,6 +83,7 @@ public static System.Windows.Media.Transform Identity { get { + Contract.Ensures(Contract.Result() != null); return default(System.Windows.Media.Transform); } } diff --git a/Microsoft.Research/Contracts/PresentationCore/Sources/System.Windows.Media.Visual.cs b/Microsoft.Research/Contracts/PresentationCore/Sources/System.Windows.Media.Visual.cs index cd4caf0a..7af3b45f 100644 --- a/Microsoft.Research/Contracts/PresentationCore/Sources/System.Windows.Media.Visual.cs +++ b/Microsoft.Research/Contracts/PresentationCore/Sources/System.Windows.Media.Visual.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // File System.Windows.Media.Visual.cs @@ -38,6 +38,8 @@ namespace System.Windows.Media { + using System.Windows.Media.Media3D; + abstract public partial class Visual : System.Windows.DependencyObject, System.Windows.Media.Composition.DUCE.IResource { #region Methods and constructors @@ -104,22 +106,26 @@ int System.Windows.Media.Composition.DUCE.IResource.GetChannelCount() public GeneralTransform TransformToAncestor(System.Windows.Media.Visual ancestor) { - return default(GeneralTransform); + Contract.Ensures(Contract.Result() != null); + return default(GeneralTransform); } public System.Windows.Media.Media3D.GeneralTransform2DTo3D TransformToAncestor(System.Windows.Media.Media3D.Visual3D ancestor) { - return default(System.Windows.Media.Media3D.GeneralTransform2DTo3D); + Contract.Ensures(Contract.Result() != null); + return default(System.Windows.Media.Media3D.GeneralTransform2DTo3D); } public GeneralTransform TransformToDescendant(System.Windows.Media.Visual descendant) { - return default(GeneralTransform); + Contract.Ensures(Contract.Result() != null); + return default(GeneralTransform); } public GeneralTransform TransformToVisual(System.Windows.Media.Visual visual) { - return default(GeneralTransform); + Contract.Ensures(Contract.Result() != null); + return default(GeneralTransform); } protected Visual() diff --git a/Microsoft.Research/Contracts/PresentationCore/Sources/System.Windows.UIElement.cs b/Microsoft.Research/Contracts/PresentationCore/Sources/System.Windows.UIElement.cs index 708e66ac..1396c2b2 100644 --- a/Microsoft.Research/Contracts/PresentationCore/Sources/System.Windows.UIElement.cs +++ b/Microsoft.Research/Contracts/PresentationCore/Sources/System.Windows.UIElement.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // File System.Windows.UIElement.cs @@ -21,6 +21,8 @@ using System; // Disable the "this variable is not used" warning as every field would imply it. +using System.Windows.Input; + #pragma warning disable 0414 // Disable the "this variable is never assigned to". #pragma warning disable 0067 @@ -767,7 +769,8 @@ public System.Windows.Input.CommandBindingCollection CommandBindings { get { - return default(System.Windows.Input.CommandBindingCollection); + Contract.Ensures(Contract.Result() != null); + return default(System.Windows.Input.CommandBindingCollection); } } @@ -775,6 +778,7 @@ public Size DesiredSize { get { + Contract.Ensures(!Contract.Result().IsEmpty); return default(Size); } } @@ -813,7 +817,8 @@ public System.Windows.Input.InputBindingCollection InputBindings { get { - return default(System.Windows.Input.InputBindingCollection); + Contract.Ensures(Contract.Result() != null); + return default(System.Windows.Input.InputBindingCollection); } } diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Application.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Application.cs index 8289e0ba..55859e30 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Application.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Application.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // File System.Windows.Application.cs @@ -174,8 +174,7 @@ public static System.Windows.Application Current { get { - Contract.Ensures(Contract.Result() != null); - + // May return null if called from non-WPF application (e.g. WinForms app with embedded WPF controls). return default(System.Windows.Application); } } diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.Control.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.Control.cs index b6372b36..3d3556ae 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.Control.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.Control.cs @@ -57,10 +57,12 @@ protected override System.Windows.Size MeasureOverride(System.Windows.Size const protected virtual new void OnMouseDoubleClick(System.Windows.Input.MouseButtonEventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnPreviewMouseDoubleClick(System.Windows.Input.MouseButtonEventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnTemplateChanged(ControlTemplate oldTemplate, ControlTemplate newTemplate) diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.Panel.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.Panel.cs index 75b500dd..41545010 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.Panel.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.Panel.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // File System.Windows.Controls.Panel.cs @@ -43,10 +43,11 @@ abstract public partial class Panel : System.Windows.FrameworkElement, System.Wi #region Methods and constructors protected virtual new UIElementCollection CreateUIElementCollection(System.Windows.FrameworkElement logicalParent) { - return default(UIElementCollection); + Contract.Ensures(Contract.Result() != null); + return default(UIElementCollection); } - protected override System.Windows.Media.Visual GetVisualChild(int index) + protected override System.Windows.Media.Visual GetVisualChild(int index) { return default(System.Windows.Media.Visual); } @@ -106,10 +107,21 @@ public UIElementCollection Children { get { - return default(UIElementCollection); + Contract.Ensures(Contract.Result() != null); + return default(UIElementCollection); } } + protected internal UIElementCollection InternalChildren + { + get + { + Contract.Ensures(Contract.Result() != null); + return default(UIElementCollection); + } + } + + internal protected virtual new bool HasLogicalOrientation { get diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.TextBox.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.TextBox.cs index cb8d8377..5b75e86c 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.TextBox.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.TextBox.cs @@ -282,6 +282,8 @@ public string Text { get { + // => TextBox.CoerceText will ensure value is never null. + Contract.Ensures(Contract.Result() != null); return default(string); } set diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.ToolTip.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.ToolTip.cs index 9d7b47fa..c0ff969b 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.ToolTip.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.ToolTip.cs @@ -43,6 +43,7 @@ public partial class ToolTip : ContentControl #region Methods and constructors protected virtual new void OnClosed(System.Windows.RoutedEventArgs e) { + Contract.Requires(e != null); } protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer() @@ -52,6 +53,7 @@ protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutoma protected virtual new void OnOpened(System.Windows.RoutedEventArgs e) { + Contract.Requires(e != null); } protected override void OnVisualParentChanged(System.Windows.DependencyObject oldParent) diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.TreeViewItem.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.TreeViewItem.cs index 2880468e..09a647b7 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.TreeViewItem.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.TreeViewItem.cs @@ -52,19 +52,23 @@ protected override System.Windows.DependencyObject GetContainerForItemOverride() protected virtual new void OnCollapsed(System.Windows.RoutedEventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnExpanded(System.Windows.RoutedEventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnSelected(System.Windows.RoutedEventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnUnselected(System.Windows.RoutedEventArgs e) { + Contract.Requires(e != null); } diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.VirtualizingPanel.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.VirtualizingPanel.cs index ba693ca8..7bc47e52 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.VirtualizingPanel.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.VirtualizingPanel.cs @@ -59,6 +59,7 @@ protected void InsertInternalChild(int index, System.Windows.UIElement child) protected virtual new void OnItemsChanged(Object sender, System.Windows.Controls.Primitives.ItemsChangedEventArgs args) { + Contract.Requires(args != null); } protected void RemoveInternalChildRange(int index, int range) diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.VirtualizingStackPanel.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.VirtualizingStackPanel.cs index 60fedb00..4b6fd444 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.VirtualizingStackPanel.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Controls.VirtualizingStackPanel.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // File System.Windows.Controls.VirtualizingStackPanel.cs @@ -124,6 +124,7 @@ protected override System.Windows.Size MeasureOverride(System.Windows.Size const protected virtual new void OnCleanUpVirtualizedItem(CleanUpVirtualizedItemEventArgs e) { + Contract.Requires(e != null); } protected override void OnClearChildren() diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionContainer.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionContainer.cs index 92a55be2..072a3691 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionContainer.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionContainer.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // File System.Windows.Data.CollectionContainer.cs @@ -47,10 +47,12 @@ public CollectionContainer() protected virtual new void OnContainedCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs args) { + Contract.Requires(args != null); } protected virtual new bool ReceiveWeakEvent(Type managerType, Object sender, EventArgs e) { + Contract.Requires(e != null); return default(bool); } diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionView.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionView.cs index f9684fc7..16f486aa 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionView.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionView.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // File System.Windows.Data.CollectionView.cs @@ -112,10 +112,12 @@ protected bool OKToChangeCurrent() protected virtual new void OnBeginChangeLogging(System.Collections.Specialized.NotifyCollectionChangedEventArgs args) { + Contract.Requires(args != null); } protected virtual new void OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs args) { + Contract.Requires(args != null); } protected void OnCollectionChanged(Object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs args) @@ -128,6 +130,7 @@ protected void OnCollectionChanged(Object sender, System.Collections.Specialized protected virtual new void OnCurrentChanging(System.ComponentModel.CurrentChangingEventArgs args) { + Contract.Requires(args != null); } protected void OnCurrentChanging() @@ -136,6 +139,7 @@ protected void OnCurrentChanging() protected virtual new void OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs e) { + Contract.Requires(e != null); } public virtual new bool PassesFilter(Object item) diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionViewGroup.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionViewGroup.cs index 1f015f95..970f71c0 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionViewGroup.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionViewGroup.cs @@ -47,6 +47,7 @@ protected CollectionViewGroup(Object name) protected virtual new void OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs e) { + Contract.Requires(e != null); } #endregion diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionViewSource.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionViewSource.cs index 064c9217..23950778 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionViewSource.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CollectionViewSource.cs @@ -1,20 +1,22 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // File System.Windows.Data.CollectionViewSource.cs // Automatically generated contract file. using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; using System.IO; using System.Text; using System.Diagnostics.Contracts; @@ -72,6 +74,7 @@ public static bool IsDefaultView(System.ComponentModel.ICollectionView view) protected virtual new bool ReceiveWeakEvent(Type managerType, Object sender, EventArgs e) { + Contract.Requires(e != null); return default(bool); } @@ -116,7 +119,8 @@ public System.Collections.ObjectModel.ObservableCollection); + Contract.Ensures(Contract.Result>() != null); + return default(System.Collections.ObjectModel.ObservableCollection); } } @@ -124,7 +128,8 @@ public System.ComponentModel.SortDescriptionCollection SortDescriptions { get { - return default(System.ComponentModel.SortDescriptionCollection); + Contract.Ensures(Contract.Result() != null); + return default(System.ComponentModel.SortDescriptionCollection); } } diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CompositeCollection.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CompositeCollection.cs index 49bf6a45..09d51444 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CompositeCollection.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Data.CompositeCollection.cs @@ -79,6 +79,7 @@ public void Insert(int insertIndex, Object insertItem) protected virtual new bool ReceiveWeakEvent(Type managerType, Object sender, EventArgs e) { + Contract.Requires(e != null); return default(bool); } diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.FrameworkContentElement.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.FrameworkContentElement.cs index 465a8f21..9f5ae788 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.FrameworkContentElement.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.FrameworkContentElement.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // File System.Windows.FrameworkContentElement.cs @@ -102,10 +102,12 @@ public sealed override bool MoveFocus(System.Windows.Input.TraversalRequest requ protected virtual new void OnContextMenuClosing(System.Windows.Controls.ContextMenuEventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnContextMenuOpening(System.Windows.Controls.ContextMenuEventArgs e) { + Contract.Requires(e != null); } protected override void OnGotFocus(RoutedEventArgs e) @@ -114,6 +116,7 @@ protected override void OnGotFocus(RoutedEventArgs e) protected virtual new void OnInitialized(EventArgs e) { + Contract.Requires(e != null); } protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e) @@ -126,10 +129,12 @@ protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e) protected virtual new void OnToolTipClosing(System.Windows.Controls.ToolTipEventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnToolTipOpening(System.Windows.Controls.ToolTipEventArgs e) { + Contract.Requires(e != null); } public sealed override DependencyObject PredictFocus(System.Windows.Input.FocusNavigationDirection direction) diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.FrameworkElement.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.FrameworkElement.cs index 9bff7a1d..f54b97b1 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.FrameworkElement.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.FrameworkElement.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // File System.Windows.FrameworkElement.cs @@ -54,8 +54,32 @@ protected sealed override void ArrangeCore(Rect finalRect) { } - protected virtual new Size ArrangeOverride(Size finalSize) - { + /// + /// ArrangeOverride allows for the customization of the positioning of children. + /// + /// The final size that element should use to arrange itself and its children. + /// The size that element actually is going to use for rendering. If this size is not the same as finalSize + /// input parameter, the AlignmentX/AlignmentY properties will position the ink rect of the element + /// appropriately. + protected virtual Size ArrangeOverride(Size finalSize) + { + // Only a positive number is allowed here for width and height, since this will be used as the size of a physical Rect. + // See also comments or implementation of UIElement.Arrange() + Contract.Requires(!finalSize.IsEmpty + && !double.IsNaN(finalSize.Width) && !double.IsNaN(finalSize.Height) + && !double.IsPositiveInfinity(finalSize.Width) && !double.IsPositiveInfinity(finalSize.Height)); + + /* The function must return a physical size, i.e. positive numbers for Width and Height, so this would be the correct result contract: + * + * Contract.Ensures(!Contract.Result().IsEmpty + * && !double.IsNaN(Contract.Result().Width) && !double.IsNaN(Contract.Result().Height) + * && !double.IsInfinity(Contract.Result().Width) && !double.IsInfinity(Contract.Result().Height)); + * + * However in practice this is unusable; the analyzer can't infer all double operations in the method, + * because there are usually complex calculations, and we would end up with always the same huge Contract.Assume at the end, just + * to make the analyzer happy. + */ + return default(Size); } @@ -138,8 +162,29 @@ protected sealed override Size MeasureCore(Size availableSize) return default(Size); } - protected virtual new Size MeasureOverride(Size availableSize) - { + /// + /// Measurement override. Implement your size-to-content logic here. + /// + /// Available size that parent can give to the child. May be infinity (when parent wants to + /// measure to content). This is soft constraint. Child can return bigger size to indicate that it wants bigger space and hope + /// that parent can throw in scrolling... + /// Desired Size of the control, given available size passed as parameter. + protected virtual Size MeasureOverride(Size availableSize) + { + // Only positive number or positive infinity is allowed here for width and height, see also comments on UIElement.Measure. + Contract.Requires(!availableSize.IsEmpty && !double.IsNaN(availableSize.Width) && !double.IsNaN(availableSize.Height)); + + /* The function must return a physical size, i.e. positive numbers for Width and Height, so this would be the correct result contract: + * + * Contract.Ensures(!Contract.Result().IsEmpty + * && !double.IsNaN(Contract.Result().Width) && !double.IsNaN(Contract.Result().Height) + * && !double.IsInfinity(Contract.Result().Width) && !double.IsInfinity(Contract.Result().Height)); + * + * However in practice this is unusable; the analyzer can't infer all double operations in the method, + * because there are usually complex calculations, and we would end up with always the same huge Contract.Assume at the end, just + * to make the analyzer happy. + */ + return default(Size); } @@ -154,10 +199,12 @@ public sealed override bool MoveFocus(System.Windows.Input.TraversalRequest requ protected virtual new void OnContextMenuClosing(System.Windows.Controls.ContextMenuEventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnContextMenuOpening(System.Windows.Controls.ContextMenuEventArgs e) { + Contract.Requires(e != null); } protected override void OnGotFocus(RoutedEventArgs e) @@ -166,6 +213,7 @@ protected override void OnGotFocus(RoutedEventArgs e) protected virtual new void OnInitialized(EventArgs e) { + Contract.Requires(e != null); } protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e) @@ -182,10 +230,12 @@ protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo) protected virtual new void OnToolTipClosing(System.Windows.Controls.ToolTipEventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnToolTipOpening(System.Windows.Controls.ToolTipEventArgs e) { + Contract.Requires(e != null); } protected override void OnVisualParentChanged(DependencyObject oldParent) @@ -264,7 +314,7 @@ public double ActualHeight { get { - Contract.Ensures(Contract.Result() == this.RenderSize.Height); + Contract.Ensures(Contract.Result() >= 0.0); return default(double); } @@ -274,7 +324,7 @@ public double ActualWidth { get { - Contract.Ensures(Contract.Result() == this.RenderSize.Width); + Contract.Ensures(Contract.Result() >= 0.0); return default(double); } diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Interop.HwndHost.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Interop.HwndHost.cs index 5896a2da..67970767 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Interop.HwndHost.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Interop.HwndHost.cs @@ -74,10 +74,12 @@ protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutoma protected override void OnKeyDown(System.Windows.Input.KeyEventArgs e) { + Contract.Requires(e != null); } protected override void OnKeyUp(System.Windows.Input.KeyEventArgs e) { + Contract.Requires(e != null); } protected virtual new bool OnMnemonicCore(ref MSG msg, System.Windows.Input.ModifierKeys modifiers) diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Markup.Localizer.BamlLocalizer.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Markup.Localizer.BamlLocalizer.cs index a7fa2740..aff420a0 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Markup.Localizer.BamlLocalizer.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Markup.Localizer.BamlLocalizer.cs @@ -62,6 +62,7 @@ public BamlLocalizationDictionary ExtractResources() protected virtual new void OnErrorNotify(BamlLocalizerErrorNotifyEventArgs e) { + Contract.Requires(e != null); } public void UpdateBaml(Stream target, BamlLocalizationDictionary updates) diff --git a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Window.cs b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Window.cs index 36983adf..aace634b 100644 --- a/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Window.cs +++ b/Microsoft.Research/Contracts/PresentationFramework/Sources/System.Windows.Window.cs @@ -75,14 +75,17 @@ protected override Size MeasureOverride(Size availableSize) protected virtual new void OnActivated(EventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnClosed(EventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnClosing(System.ComponentModel.CancelEventArgs e) { + Contract.Requires(e != null); } protected override void OnContentChanged(Object oldContent, Object newContent) @@ -91,6 +94,7 @@ protected override void OnContentChanged(Object oldContent, Object newContent) protected virtual new void OnContentRendered(EventArgs e) { + Contract.Requires(e != null); } protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer() @@ -100,10 +104,12 @@ protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutoma protected virtual new void OnDeactivated(EventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnLocationChanged(EventArgs e) { + Contract.Requires(e != null); } protected override void OnManipulationBoundaryFeedback(System.Windows.Input.ManipulationBoundaryFeedbackEventArgs e) @@ -112,10 +118,12 @@ protected override void OnManipulationBoundaryFeedback(System.Windows.Input.Mani protected virtual new void OnSourceInitialized(EventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnStateChanged(EventArgs e) { + Contract.Requires(e != null); } protected sealed override void OnVisualParentChanged(DependencyObject oldParent) diff --git a/Microsoft.Research/Contracts/System.ComponentModel.Composition/Sources/System.ComponentModel.Composition.Hosting.AggregateCatalog.cs b/Microsoft.Research/Contracts/System.ComponentModel.Composition/Sources/System.ComponentModel.Composition.Hosting.AggregateCatalog.cs index 9878989d..2ce8be6c 100644 --- a/Microsoft.Research/Contracts/System.ComponentModel.Composition/Sources/System.ComponentModel.Composition.Hosting.AggregateCatalog.cs +++ b/Microsoft.Research/Contracts/System.ComponentModel.Composition/Sources/System.ComponentModel.Composition.Hosting.AggregateCatalog.cs @@ -64,10 +64,12 @@ protected override void Dispose(bool disposing) protected virtual new void OnChanged(ComposablePartCatalogChangeEventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnChanging(ComposablePartCatalogChangeEventArgs e) { + Contract.Requires(e != null); } #endregion diff --git a/Microsoft.Research/Contracts/System.ComponentModel.Composition/Sources/System.ComponentModel.Composition.Hosting.DirectoryCatalog.cs b/Microsoft.Research/Contracts/System.ComponentModel.Composition/Sources/System.ComponentModel.Composition.Hosting.DirectoryCatalog.cs index 9923782d..b0bb2701 100644 --- a/Microsoft.Research/Contracts/System.ComponentModel.Composition/Sources/System.ComponentModel.Composition.Hosting.DirectoryCatalog.cs +++ b/Microsoft.Research/Contracts/System.ComponentModel.Composition/Sources/System.ComponentModel.Composition.Hosting.DirectoryCatalog.cs @@ -63,10 +63,12 @@ protected override void Dispose(bool disposing) protected virtual new void OnChanged(ComposablePartCatalogChangeEventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnChanging(ComposablePartCatalogChangeEventArgs e) { + Contract.Requires(e != null); } public void Refresh() diff --git a/Microsoft.Research/Contracts/System.ComponentModel.Composition/Sources/System.ComponentModel.Composition.Hosting.ExportProvider.cs b/Microsoft.Research/Contracts/System.ComponentModel.Composition/Sources/System.ComponentModel.Composition.Hosting.ExportProvider.cs index 873dda40..cc1a3ad0 100644 --- a/Microsoft.Research/Contracts/System.ComponentModel.Composition/Sources/System.ComponentModel.Composition.Hosting.ExportProvider.cs +++ b/Microsoft.Research/Contracts/System.ComponentModel.Composition/Sources/System.ComponentModel.Composition.Hosting.ExportProvider.cs @@ -67,12 +67,16 @@ public Lazy GetExport(string contractName) public T GetExportedValue(string contractName) { + Contract.Ensures(Contract.Result() != null); + // because of ImportCardinality.ExactlyOne => + // return this.GetExportedValueCore(contractName, ImportCardinality.ExactlyOne); return default(T); } public T GetExportedValue() { - return default(T); + Contract.Ensures(Contract.Result() != null); + return this.GetExportedValue((string)null); } public T GetExportedValueOrDefault() @@ -148,10 +152,12 @@ public IEnumerable> GetExports(Type type, Type metadataView protected virtual new void OnExportsChanged(ExportsChangeEventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnExportsChanging(ExportsChangeEventArgs e) { + Contract.Requires(e != null); } public bool TryGetExports(System.ComponentModel.Composition.Primitives.ImportDefinition definition, AtomicComposition atomicComposition, out IEnumerable exports) diff --git a/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.Enumerable.cs b/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.Enumerable.cs index 044786bd..8f49d511 100644 --- a/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.Enumerable.cs +++ b/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.Enumerable.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System; @@ -159,7 +159,7 @@ public static bool Contains(this IEnumerable source, TSource v [Pure] public static bool Contains(this IEnumerable source, TSource value, IEqualityComparer comparer) { - Contract.Requires(source != null); + Contract.Requires(source != null); return default(bool); } // @@ -252,6 +252,7 @@ public static IEnumerable DefaultIfEmpty(this IEnumerable>() != null); + Contract.Ensures(Contract.Result>().Any()); return default(IEnumerable); } @@ -279,6 +280,7 @@ public static IEnumerable DefaultIfEmpty(this IEnumerable>() != null); + Contract.Ensures(Contract.Result>().Any()); return default(IEnumerable); } // @@ -587,7 +589,7 @@ public static TSource First(this IEnumerable source, Func(this IEnumerable source) { Contract.Requires(source != null); - + return default(TSource); } @@ -1272,7 +1274,7 @@ public static IEnumerable Join(this IEnu public static TSource Last(this IEnumerable source) { Contract.Requires(source != null); Contract.Requires(Count(source) > 0); - + return default(TSource); } // @@ -1332,7 +1334,7 @@ public static TSource Last(this IEnumerable source, Func(this IEnumerable source) { Contract.Requires(source != null); - + return default(TSource); } // @@ -1561,7 +1563,7 @@ public static double Max(this IEnumerable source) { // System.InvalidOperationException: // source contains no elements. [Pure] - public static float Max(this IEnumerable source) + public static float Max(this IEnumerable source) { Contract.Requires(source != null); @@ -1585,7 +1587,7 @@ public static float Max(this IEnumerable source) // System.ArgumentNullException: // source is null. [Pure] - public static int? Max(this IEnumerable source) + public static int? Max(this IEnumerable source) { Contract.Requires(source != null); @@ -1660,7 +1662,7 @@ public static long Max(this IEnumerable source) { Contract.Requires(source != null); - return default(long); + return default(long); } // // Summary: @@ -1685,7 +1687,7 @@ public static TSource Max(this IEnumerable source) { Contract.Requires(source != null); - return default(TSource); + return default(TSource); } // // Summary: @@ -1901,7 +1903,7 @@ public static float Max(this IEnumerable source, Func(this IEnumerable source, Func(this IEnumerable source, Func(this IEnumerable source, Func(this IEnumerable source, Fu { Contract.Requires(source != null); Contract.Requires(selector != null); - - return default(TResult); + + return default(TResult); } // // Summary: @@ -2054,8 +2056,8 @@ public static TResult Max(this IEnumerable source, Fu public static decimal? Min(this IEnumerable source) { Contract.Requires(source != null); - - return null; + + return null; } // // Summary: @@ -2348,10 +2350,10 @@ public static TSource Min(this IEnumerable source) // source contains no elements. [Pure] public static decimal Min(this IEnumerable source, Func selector) - { + { Contract.Requires(source != null); Contract.Requires(selector != null); - return default(decimal); + return default(decimal); } // // Summary: @@ -4099,7 +4101,7 @@ public static TSource[] ToArray(this IEnumerable source) Contract.Requires(source != null); Contract.Ensures(Contract.Result() != null); Contract.Ensures(Contract.Result().Length == source.Count()); - + return default(TSource[]); } // diff --git a/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.Expressions.Expression.cs b/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.Expressions.Expression.cs index 8f57f1b9..72541c4f 100644 --- a/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.Expressions.Expression.cs +++ b/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.Expressions.Expression.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System; @@ -3203,7 +3203,7 @@ public static ListInitExpression ListInit(NewExpression newExpression, IEnumerab Contract.Requires(newExpression != null); Contract.Requires(initializers != null); Contract.Ensures(Contract.Result() != null); - return default(ListInitExpression); + return default(ListInitExpression); } // // Summary: @@ -5566,8 +5566,14 @@ public sealed class Expression { private Expression() { } - // public TDelegate Compile(); +#if !SILVERLIGHT + public TDelegate Compile() + { + Contract.Ensures(!ReferenceEquals(Contract.Result(), null)); + return default(TDelegate); } +#endif + } } diff --git a/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.ParallelEnumerable.cs b/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.ParallelEnumerable.cs index e5df2348..021bdfa8 100644 --- a/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.ParallelEnumerable.cs +++ b/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.ParallelEnumerable.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // File System.Linq.ParallelEnumerable.cs @@ -44,9 +44,9 @@ static public partial class ParallelEnumerable #region Methods and constructors [Pure] public static TResult Aggregate( - ParallelQuery source, - TAccumulate seed, - Func func, + ParallelQuery source, + TAccumulate seed, + Func func, Func resultSelector) { Contract.Requires(source != null); @@ -57,10 +57,10 @@ public static TResult Aggregate( [Pure] public static TResult Aggregate( - ParallelQuery source, - TAccumulate seed, - Func updateAccumulatorFunc, - Func combineAccumulatorsFunc, + ParallelQuery source, + TAccumulate seed, + Func updateAccumulatorFunc, + Func combineAccumulatorsFunc, Func resultSelector) { Contract.Requires(source != null); @@ -71,10 +71,10 @@ public static TResult Aggregate( [Pure] public static TResult Aggregate( - ParallelQuery source, - Func seedFactory, - Func updateAccumulatorFunc, - Func combineAccumulatorsFunc, + ParallelQuery source, + Func seedFactory, + Func updateAccumulatorFunc, + Func combineAccumulatorsFunc, Func resultSelector) { Contract.Requires(source != null); @@ -95,8 +95,8 @@ public static TSource Aggregate(ParallelQuery source, Func( - ParallelQuery source, - TAccumulate seed, + ParallelQuery source, + TAccumulate seed, Func func) { Contract.Requires(source != null); @@ -284,7 +284,7 @@ public static double Average(ParallelQuery source, Func Average( - ParallelQuery source, + ParallelQuery source, Func> selector) { Contract.Requires(source != null); @@ -294,7 +294,7 @@ public static Nullable Average( [Pure] public static Decimal Average( - ParallelQuery source, + ParallelQuery source, Func selector) { Contract.Requires(source != null); @@ -303,7 +303,7 @@ public static Decimal Average( [Pure] public static Nullable Average( - ParallelQuery source, + ParallelQuery source, Func> selector) { Contract.Requires(source != null); @@ -313,7 +313,7 @@ public static Nullable Average( [Pure] public static double Average( - ParallelQuery source, + ParallelQuery source, Func selector) { Contract.Requires(source != null); @@ -323,7 +323,7 @@ public static double Average( [Pure] public static Nullable Average( - ParallelQuery source, + ParallelQuery source, Func> selector) { Contract.Requires(source != null); @@ -406,6 +406,7 @@ public static ParallelQuery DefaultIfEmpty(ParallelQuery>() != null); + Contract.Ensures(Contract.Result>().Any()); return default(ParallelQuery); } @@ -415,6 +416,7 @@ public static ParallelQuery DefaultIfEmpty(ParallelQuery>() != null); + Contract.Ensures(Contract.Result>().Any()); return default(ParallelQuery); } @@ -534,10 +536,10 @@ public static void ForAll(ParallelQuery source, Action GroupBy( - ParallelQuery source, - Func keySelector, - Func elementSelector, - Func, TResult> resultSelector, + ParallelQuery source, + Func keySelector, + Func elementSelector, + Func, TResult> resultSelector, IEqualityComparer comparer) { Contract.Requires(source != null); @@ -551,7 +553,7 @@ public static ParallelQuery GroupBy( [Pure] public static ParallelQuery> GroupBy( - ParallelQuery source, + ParallelQuery source, Func keySelector) { Contract.Requires(source != null); @@ -563,8 +565,8 @@ public static ParallelQuery> GroupBy( [Pure] public static ParallelQuery> GroupBy( - ParallelQuery source, - Func keySelector, + ParallelQuery source, + Func keySelector, IEqualityComparer comparer) { Contract.Requires(source != null); @@ -576,8 +578,8 @@ public static ParallelQuery> GroupBy( [Pure] public static ParallelQuery> GroupBy( - ParallelQuery source, - Func keySelector, + ParallelQuery source, + Func keySelector, Func elementSelector) { Contract.Requires(source != null); @@ -590,8 +592,8 @@ public static ParallelQuery> GroupBy GroupBy( - ParallelQuery source, - Func keySelector, + ParallelQuery source, + Func keySelector, Func, TResult> resultSelector) { Contract.Requires(source != null); @@ -604,9 +606,9 @@ public static ParallelQuery GroupBy( [Pure] public static ParallelQuery GroupBy( - ParallelQuery source, - Func keySelector, - Func elementSelector, + ParallelQuery source, + Func keySelector, + Func elementSelector, Func, TResult> resultSelector) { Contract.Requires(source != null); @@ -620,9 +622,9 @@ public static ParallelQuery GroupBy( [Pure] public static ParallelQuery> GroupBy( - ParallelQuery source, - Func keySelector, - Func elementSelector, + ParallelQuery source, + Func keySelector, + Func elementSelector, IEqualityComparer comparer) { Contract.Requires(source != null); @@ -635,9 +637,9 @@ public static ParallelQuery> GroupBy GroupBy( - ParallelQuery source, - Func keySelector, - Func, TResult> resultSelector, + ParallelQuery source, + Func keySelector, + Func, TResult> resultSelector, IEqualityComparer comparer) { Contract.Requires(source != null); @@ -650,10 +652,10 @@ public static ParallelQuery GroupBy( [Pure] public static ParallelQuery GroupJoin( - ParallelQuery outer, - ParallelQuery inner, - Func outerKeySelector, - Func innerKeySelector, + ParallelQuery outer, + ParallelQuery inner, + Func outerKeySelector, + Func innerKeySelector, Func, TResult> resultSelector) { Contract.Requires(outer != null); @@ -668,10 +670,10 @@ public static ParallelQuery GroupJoin( [Pure] public static ParallelQuery GroupJoin( - ParallelQuery outer, - IEnumerable inner, - Func outerKeySelector, - Func innerKeySelector, + ParallelQuery outer, + IEnumerable inner, + Func outerKeySelector, + Func innerKeySelector, Func, TResult> resultSelector) { Contract.Ensures(false); @@ -681,11 +683,11 @@ public static ParallelQuery GroupJoin( [Pure] public static ParallelQuery GroupJoin( - ParallelQuery outer, - ParallelQuery inner, - Func outerKeySelector, - Func innerKeySelector, - Func, TResult> resultSelector, + ParallelQuery outer, + ParallelQuery inner, + Func outerKeySelector, + Func innerKeySelector, + Func, TResult> resultSelector, IEqualityComparer comparer) { Contract.Requires(outer != null); @@ -700,11 +702,11 @@ public static ParallelQuery GroupJoin( [Pure] public static ParallelQuery GroupJoin( - ParallelQuery outer, - IEnumerable inner, - Func outerKeySelector, - Func innerKeySelector, - Func, TResult> resultSelector, + ParallelQuery outer, + IEnumerable inner, + Func outerKeySelector, + Func innerKeySelector, + Func, TResult> resultSelector, IEqualityComparer comparer) { Contract.Ensures(false); @@ -714,7 +716,7 @@ public static ParallelQuery GroupJoin( [Pure] public static ParallelQuery Intersect( - ParallelQuery first, + ParallelQuery first, ParallelQuery second) { Contract.Requires(first != null); @@ -726,7 +728,7 @@ public static ParallelQuery Intersect( [Pure] public static ParallelQuery Intersect( - ParallelQuery first, + ParallelQuery first, IEnumerable second) { Contract.Requires(first != null); @@ -738,8 +740,8 @@ public static ParallelQuery Intersect( [Pure] public static ParallelQuery Intersect( - ParallelQuery first, - IEnumerable second, + ParallelQuery first, + IEnumerable second, IEqualityComparer comparer) { Contract.Requires(first != null); @@ -751,8 +753,8 @@ public static ParallelQuery Intersect( [Pure] public static ParallelQuery Intersect( - ParallelQuery first, - ParallelQuery second, + ParallelQuery first, + ParallelQuery second, IEqualityComparer comparer) { Contract.Requires(first != null); @@ -764,11 +766,11 @@ public static ParallelQuery Intersect( [Pure] public static ParallelQuery Join( - ParallelQuery outer, - ParallelQuery inner, - Func outerKeySelector, - Func innerKeySelector, - Func resultSelector, + ParallelQuery outer, + ParallelQuery inner, + Func outerKeySelector, + Func innerKeySelector, + Func resultSelector, IEqualityComparer comparer) { Contract.Requires(outer != null); @@ -782,8 +784,8 @@ public static ParallelQuery Join( } public static ParallelQuery Join( - ParallelQuery outer, - IEnumerable inner, + ParallelQuery outer, + IEnumerable inner, Func outerKeySelector, Func innerKeySelector, Func resultSelector, IEqualityComparer comparer) { Contract.Ensures(false); @@ -800,10 +802,10 @@ public static ParallelQuery Join(Paralle [Pure] public static ParallelQuery Join( - ParallelQuery outer, - ParallelQuery inner, - Func outerKeySelector, - Func innerKeySelector, + ParallelQuery outer, + ParallelQuery inner, + Func outerKeySelector, + Func innerKeySelector, Func resultSelector) { Contract.Requires(outer != null); @@ -1204,8 +1206,8 @@ public static ParallelQuery OfType(ParallelQuery source) [Pure] public static OrderedParallelQuery OrderBy( - ParallelQuery source, - Func keySelector, + ParallelQuery source, + Func keySelector, IComparer comparer) { Contract.Requires(source != null); @@ -1217,7 +1219,7 @@ public static OrderedParallelQuery OrderBy( [Pure] public static OrderedParallelQuery OrderBy( - ParallelQuery source, + ParallelQuery source, Func keySelector) { Contract.Requires(source != null); @@ -1229,8 +1231,8 @@ public static OrderedParallelQuery OrderBy( [Pure] public static OrderedParallelQuery OrderByDescending( - ParallelQuery source, - Func keySelector, + ParallelQuery source, + Func keySelector, IComparer comparer) { Contract.Requires(source != null); @@ -1242,7 +1244,7 @@ public static OrderedParallelQuery OrderByDescending( [Pure] public static OrderedParallelQuery OrderByDescending( - ParallelQuery source, + ParallelQuery source, Func keySelector) { Contract.Requires(source != null); @@ -1281,7 +1283,7 @@ public static ParallelQuery Reverse(ParallelQuery sou [Pure] public static ParallelQuery Select( - ParallelQuery source, + ParallelQuery source, Func selector) { Contract.Requires(source != null); @@ -1293,7 +1295,7 @@ public static ParallelQuery Select( [Pure] public static ParallelQuery Select( - ParallelQuery source, + ParallelQuery source, Func selector) { Contract.Requires(source != null); @@ -1305,7 +1307,7 @@ public static ParallelQuery Select( [Pure] public static ParallelQuery SelectMany( - ParallelQuery source, + ParallelQuery source, Func> selector) { Contract.Requires(source != null); @@ -1317,8 +1319,8 @@ public static ParallelQuery SelectMany( [Pure] public static ParallelQuery SelectMany( - ParallelQuery source, - Func> collectionSelector, + ParallelQuery source, + Func> collectionSelector, Func resultSelector) { Contract.Requires(source != null); @@ -1331,7 +1333,7 @@ public static ParallelQuery SelectMany( [Pure] public static ParallelQuery SelectMany( - ParallelQuery source, + ParallelQuery source, Func> selector) { Contract.Requires(source != null); @@ -1343,8 +1345,8 @@ public static ParallelQuery SelectMany( [Pure] public static ParallelQuery SelectMany( - ParallelQuery source, - Func> collectionSelector, + ParallelQuery source, + Func> collectionSelector, Func resultSelector) { Contract.Requires(source != null); @@ -1365,8 +1367,8 @@ public static bool SequenceEqual(ParallelQuery first, Parallel [Pure] public static bool SequenceEqual( - ParallelQuery first, - IEnumerable second, + ParallelQuery first, + IEnumerable second, IEqualityComparer comparer) { Contract.Ensures(false); @@ -1623,7 +1625,7 @@ public static ParallelQuery TakeWhile(ParallelQuery s [Pure] public static OrderedParallelQuery ThenBy( - OrderedParallelQuery source, + OrderedParallelQuery source, Func keySelector, IComparer comparer) { Contract.Requires(source != null); @@ -1635,7 +1637,7 @@ public static OrderedParallelQuery ThenBy( [Pure] public static OrderedParallelQuery ThenBy( - OrderedParallelQuery source, + OrderedParallelQuery source, Func keySelector) { Contract.Requires(source != null); @@ -1647,7 +1649,7 @@ public static OrderedParallelQuery ThenBy( [Pure] public static OrderedParallelQuery ThenByDescending( - OrderedParallelQuery source, + OrderedParallelQuery source, Func keySelector, IComparer comparer) { Contract.Requires(source != null); @@ -1677,7 +1679,7 @@ public static TSource[] ToArray(ParallelQuery source) [Pure] public static Dictionary ToDictionary( - ParallelQuery source, + ParallelQuery source, Func keySelector) { Contract.Requires(source != null); @@ -1689,8 +1691,8 @@ public static Dictionary ToDictionary( [Pure] public static Dictionary ToDictionary( - ParallelQuery source, - Func keySelector, + ParallelQuery source, + Func keySelector, IEqualityComparer comparer) { Contract.Requires(source != null); @@ -1702,8 +1704,8 @@ public static Dictionary ToDictionary( [Pure] public static Dictionary ToDictionary( - ParallelQuery source, - Func keySelector, + ParallelQuery source, + Func keySelector, Func elementSelector) { Contract.Requires(source != null); @@ -1716,9 +1718,9 @@ public static Dictionary ToDictionary( [Pure] public static Dictionary ToDictionary( - ParallelQuery source, - Func keySelector, - Func elementSelector, + ParallelQuery source, + Func keySelector, + Func elementSelector, IEqualityComparer comparer) { Contract.Requires(source != null); @@ -1740,9 +1742,9 @@ public static List ToList(ParallelQuery source) [Pure] public static ILookup ToLookup( - ParallelQuery source, - Func keySelector, - Func elementSelector, + ParallelQuery source, + Func keySelector, + Func elementSelector, IEqualityComparer comparer) { Contract.Requires(source != null); @@ -1755,8 +1757,8 @@ public static ILookup ToLookup( [Pure] public static ILookup ToLookup( - ParallelQuery source, - Func keySelector, + ParallelQuery source, + Func keySelector, Func elementSelector) { Contract.Requires(source != null); @@ -1769,8 +1771,8 @@ public static ILookup ToLookup( [Pure] public static ILookup ToLookup( - ParallelQuery source, - Func keySelector, + ParallelQuery source, + Func keySelector, IEqualityComparer comparer) { Contract.Requires(source != null); @@ -1782,7 +1784,7 @@ public static ILookup ToLookup( [Pure] public static ILookup ToLookup( - ParallelQuery source, + ParallelQuery source, Func keySelector) { Contract.Requires(source != null); diff --git a/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.Queryable.cs b/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.Queryable.cs index 99cd1e3d..a4c1e237 100644 --- a/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.Queryable.cs +++ b/Microsoft.Research/Contracts/System.Core.Contracts/System.Linq.Queryable.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #if !SILVERLIGHT_4_0_WP @@ -926,6 +926,7 @@ public static IQueryable DefaultIfEmpty(this IQueryable>() != null); + Contract.Ensures(Contract.Result>().Any()); return default(IQueryable); } // @@ -956,6 +957,7 @@ public static IQueryable DefaultIfEmpty(this IQueryable>() != null); + Contract.Ensures(Contract.Result>().Any()); return default(IQueryable); } // diff --git a/Microsoft.Research/Contracts/System.Data/System.Data.Common.DbConnectionStringBuilder.cs b/Microsoft.Research/Contracts/System.Data/System.Data.Common.DbConnectionStringBuilder.cs index 16dc74ee..95cbcd34 100644 --- a/Microsoft.Research/Contracts/System.Data/System.Data.Common.DbConnectionStringBuilder.cs +++ b/Microsoft.Research/Contracts/System.Data/System.Data.Common.DbConnectionStringBuilder.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System; @@ -28,7 +28,7 @@ public DbConnectionStringBuilder() { } public DbConnectionStringBuilder(bool useOdbcRules) { } extern public bool BrowsableConnectionString { get; set; } - public string ConnectionString { + public string ConnectionString { get { Contract.Ensures(Contract.Result() != null); @@ -45,7 +45,14 @@ public string ConnectionString { extern public virtual bool IsFixedSize { get; } extern public virtual bool IsReadOnly { get; } - // Exceptions: + + // Property Value + // The value associated with the specified key. If the specified key is not found, + // trying to get it returns a null reference (Nothing in Visual Basic), and trying to set it creates a new element using the specified key. + // Passing a null (Nothing in Visual Basic) key throws an ArgumentNullException. + // Assigning a null value removes the key/value pair. + // + // Exceptions: // System.ArgumentNullException: // keyword is a null reference (Nothing in Visual Basic). // @@ -57,13 +64,11 @@ public virtual object this[string keyword] { get { - Contract.Ensures(Contract.Result() != null); return null; } - set { - Contract.Requires(value != null); + Contract.Requires(keyword != null); } } @@ -86,22 +91,22 @@ public virtual object this[string keyword] // has a fixed size. public void Add(string keyword, object value) { - Contract.Requires(keyword!= null); + Contract.Requires(keyword != null); Contract.Requires(!this.IsReadOnly); Contract.Requires(!this.IsFixedSize); } - + public static void AppendKeyValuePair(StringBuilder builder, string keyword, string value) { } - + public static void AppendKeyValuePair(StringBuilder builder, string keyword, string value, bool useOdbcRules) { } - + public virtual void Clear() { } // // Summary: // Clears the collection of System.ComponentModel.PropertyDescriptor objects // on the associated System.Data.Common.DbConnectionStringBuilder. protected internal void ClearPropertyDescriptors() { } - + // public virtual bool ContainsKey(string keyword); [Pure] @@ -110,11 +115,18 @@ protected internal void ClearPropertyDescriptors() { } [Pure] protected virtual void GetProperties(Hashtable propertyDescriptors) { } - [Pure] - public virtual bool Remove(string keyword) { return false; } + public virtual bool Remove(string keyword) + { + Contract.Requires(keyword != null); + return false; + } [Pure] - public virtual bool ShouldSerialize(string keyword) { return false; } + public virtual bool ShouldSerialize(string keyword) + { + Contract.Requires(keyword != null); + return false; + } [Pure] public virtual bool TryGetValue(string keyword, out object value) diff --git a/Microsoft.Research/Contracts/System.Data/System.Data.DataRelation.cs b/Microsoft.Research/Contracts/System.Data/System.Data.DataRelation.cs index 867e073d..903604aa 100644 --- a/Microsoft.Research/Contracts/System.Data/System.Data.DataRelation.cs +++ b/Microsoft.Research/Contracts/System.Data/System.Data.DataRelation.cs @@ -13,6 +13,7 @@ // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System; +using System.Diagnostics.Contracts; namespace System.Data @@ -203,8 +204,16 @@ public class DataRelation // An array of System.Data.DataColumn objects. //[ResCategory("DataCategory_Data")] //[ResDescription("DataRelationChildColumnsDescr")] - //public virtual DataColumn[] ChildColumns { get; } - // + public virtual DataColumn[] ChildColumns + { + get + { + Contract.Ensures(Contract.Result() != null); + return null; + } + } + + // // Summary: // Gets the System.Data.ForeignKeyConstraint for the relation. // diff --git a/Microsoft.Research/Contracts/System.Data/System.Data.DataRow.cs b/Microsoft.Research/Contracts/System.Data/System.Data.DataRow.cs index 54fb3bc4..0ecd5b28 100644 --- a/Microsoft.Research/Contracts/System.Data/System.Data.DataRow.cs +++ b/Microsoft.Research/Contracts/System.Data/System.Data.DataRow.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System; @@ -77,6 +77,7 @@ public object[] ItemArray Contract.Requires(value != null); } } + // // Summary: // Gets or sets the custom error description for a row. @@ -84,6 +85,7 @@ public object[] ItemArray // Returns: // The text describing an error. //public string RowError { get; set; } + // // Summary: // Gets the current state of the row with regard to its relationship to the @@ -92,13 +94,21 @@ public object[] ItemArray // Returns: // One of the System.Data.DataRowState values. //public DataRowState RowState { get; } + // // Summary: // Gets the System.Data.DataTable for which this row has a schema. // // Returns: // The System.Data.DataTable to which this row belongs. - //public DataTable Table { get; } + public DataTable Table + { + get + { + Contract.Ensures(Contract.Result() != null); + return null; + } + } // Summary: // Gets or sets the data stored in the specified System.Data.DataColumn. @@ -123,6 +133,7 @@ public object[] ItemArray // System.InvalidCastException: // The data types of the value and the column do not match. //public object this//[DataColumn column] { get; set; } + // // Summary: // Gets or sets the data stored in the column specified by index. @@ -146,6 +157,7 @@ public object[] ItemArray // System.Data.DataColumn.DataType. //public object this//[int columnIndex] { get; set; } // + // Summary: // Gets or sets the data stored in the column specified by name. // @@ -166,6 +178,7 @@ public object[] ItemArray // System.InvalidCastException: // Occurs when you set a value and its System.Type does not match System.Data.DataColumn.DataType. //public object this//[string columnName] { get; set; } + // // Summary: // Gets the specified version of data stored in the specified System.Data.DataColumn. @@ -191,6 +204,7 @@ public object[] ItemArray // System.Data.VersionNotFoundException: // The row does not have this version of data. //public object this//[DataColumn column, DataRowVersion version] { get; } + // // Summary: // Gets the data stored in the column, specified by index and version of the @@ -446,7 +460,7 @@ public DataRow[] GetChildRows(string relationName, DataRowVersion version) // Returns: // The text of the error description. public string GetColumnError(DataColumn column) - { + { Contract.Ensures(Contract.Result() != null); return default(string); @@ -466,7 +480,7 @@ public string GetColumnError(DataColumn column) // System.IndexOutOfRangeException: // The columnIndex argument is out of range. public string GetColumnError(int columnIndex) - { + { Contract.Ensures(Contract.Result() != null); return default(string); @@ -482,7 +496,7 @@ public string GetColumnError(int columnIndex) // Returns: // The text of the error description. public string GetColumnError(string columnName) - { + { Contract.Ensures(Contract.Result() != null); return default(string); @@ -494,7 +508,7 @@ public string GetColumnError(string columnName) // Returns: // An array of System.Data.DataColumn objects that contain errors. public DataColumn[] GetColumnsInError() - { + { Contract.Ensures(Contract.Result() != null); return default(DataColumn[]); diff --git a/Microsoft.Research/Contracts/System.Data/System.Data.DataRowCollection.cs b/Microsoft.Research/Contracts/System.Data/System.Data.DataRowCollection.cs new file mode 100644 index 00000000..77eb2728 --- /dev/null +++ b/Microsoft.Research/Contracts/System.Data/System.Data.DataRowCollection.cs @@ -0,0 +1,220 @@ +// CodeContracts +// +// Copyright (c) Microsoft Corporation +// +// All rights reserved. +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +using System; +using System.Collections; + +namespace System.Data +{ + using System.Diagnostics.Contracts; + + /// + /// Represents a collection of rows for a . + /// + /// 1 + public sealed class DataRowCollection // : InternalDataCollectionBase + { + /// + /// Gets the total number of objects in this collection. + /// + /// + /// + /// The total number of objects in this collection. + /// + //public override int Count + //{ + // get + // { + // return 0; + // } + //} + + /// + /// Gets the row at the specified index. + /// + /// + /// + /// The specified . + /// + /// The zero-based index of the row to return. The index value is greater than the number of items in the collection. 1 + public DataRow this[int index] + { + get + { + Contract.Ensures(Contract.Result() != null); + return null; + } + } + + /// + /// Adds the specified to the object. + /// + /// The to add. The row is null. The row either belongs to another table or already belongs to this table. The addition invalidates a constraint. The addition tries to put a null in a where is false 1 + public void Add(DataRow row) + { + Contract.Requires(row != null); + } + + /// + /// Inserts a new row into the collection at the specified location. + /// + /// The to add. The (zero-based) location in the collection where you want to add the DataRow. 1 + public void InsertAt(DataRow row, int pos) + { + Contract.Requires(row != null); + } + + /// + /// Gets the index of the specified object. + /// + /// + /// + /// The zero-based index of the row, or -1 if the row is not found in the collection. + /// + /// The DataRow to search for.1 + public int IndexOf(DataRow row) + { + Contract.Requires(row != null); + Contract.Ensures(Contract.Result() >= -1); + return 0; + } + + /// + /// Creates a row using specified values and adds it to the . + /// + /// + /// + /// None. + /// + /// The array of values that are used to create the new row. The array is larger than the number of columns in the table. A value does not match its respective column type. Adding the row invalidates a constraint. Trying to put a null in a column where is false. 1 + public DataRow Add(params object[] values) + { + Contract.Requires(values != null); + Contract.Ensures(Contract.Result() != null); + return null; + } + + /// + /// Gets the row specified by the primary key value. + /// + /// + /// + /// A that contains the primary key value specified; otherwise a null value if the primary key value does not exist in the . + /// + /// The primary key value of the to find. + /// The table does not have a primary key. + public DataRow Find(object key) + { + Contract.Requires(key != null); + return null; + } + + /// + /// Gets the row that contains the specified primary key values. + /// + /// + /// + /// A object that contains the primary key values specified; otherwise a null value if the primary key value does not exist in the . + /// + /// An array of primary key values to find. The type of the array is Object. + /// No row corresponds to that index value. + /// The table does not have a primary key. + public DataRow Find(object[] keys) + { + Contract.Requires(keys != null); + return null; + } + + /// + /// Clears the collection of all rows. + /// + /// A is enforced on the . 1 + public void Clear() + { + } + + /// + /// Gets a value that indicates whether the primary key of any row in the collection contains the specified value. + /// + /// + /// + /// true if the collection contains a with the specified primary key value; otherwise, false. + /// + /// The value of the primary key to test for. The table does not have a primary key. 1 + public bool Contains(object key) + { + Contract.Requires(key != null); + return false; + } + + /// + /// Gets a value that indicates whether the primary key columns of any row in the collection contain the values specified in the object array. + /// + /// + /// + /// true if the contains a with the specified key values; otherwise, false. + /// + /// An array of primary key values to test for. The table does not have a primary key. 1 + public bool Contains(object[] keys) + { + Contract.Requires(keys != null); + return false; + } + + /// + /// Copies all the objects from the collection into the given array, starting at the given destination array index. + /// + /// The one-dimensional array that is the destination of the elements copied from the DataRowCollection. The array must have zero-based indexing.The zero-based index in the array at which copying begins. + //public override void CopyTo(Array ar, int index) + //{ + //} + + /// + /// Copies all the objects from the collection into the given array, starting at the given destination array index. + /// + /// The one-dimensional array that is the destination of the elements copied from the DataRowCollection. The array must have zero-based indexing.The zero-based index in the array at which copying begins.2 + public void CopyTo(DataRow[] array, int index) + { + Contract.Requires(array != null); + } + + /// + /// Gets an for this collection. + /// + /// + /// + /// An for this collection. + /// + //public override IEnumerator GetEnumerator() + //{ + //} + + /// + /// Removes the specified from the collection. + /// + /// The to remove. 1 + public void Remove(DataRow row) + { + Contract.Requires(row != null); + } + + /// + /// Removes the row at the specified index from the collection. + /// + /// The index of the row to remove. 1 + public void RemoveAt(int index) + { + } + } +} diff --git a/Microsoft.Research/Contracts/System.Data/System.Data.DataTable.cs b/Microsoft.Research/Contracts/System.Data/System.Data.DataTable.cs index 3b576561..468370ca 100644 --- a/Microsoft.Research/Contracts/System.Data/System.Data.DataTable.cs +++ b/Microsoft.Research/Contracts/System.Data/System.Data.DataTable.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System.Diagnostics.Contracts; @@ -329,7 +329,20 @@ public DataColumn[] PrimaryKey // otherwise a null value if no System.Data.DataRow objects exist. //[Browsable(false)] //[ResDescription("DataTableRowsDescr")] - //public DataRowCollection Rows { get; } + public DataRowCollection Rows + { + get + { + // Here the documentation is definitely wrong! + // + // internal readonly DataRowCollection rowCollection; + // + // return this.rowCollection; + + Contract.Ensures(Contract.Result() != null); + return null; + } + } // // Summary: // Gets or sets an System.ComponentModel.ISite for the System.Data.DataTable. diff --git a/Microsoft.Research/Contracts/System.Data/System.Data10.csproj b/Microsoft.Research/Contracts/System.Data/System.Data10.csproj index d035ae32..d1d05454 100644 --- a/Microsoft.Research/Contracts/System.Data/System.Data10.csproj +++ b/Microsoft.Research/Contracts/System.Data/System.Data10.csproj @@ -1,4 +1,4 @@ - + Debug @@ -285,6 +285,9 @@ PreContractsBuildDummy + + + ..\$(OutputPath) @@ -296,4 +299,4 @@ --> - + \ No newline at end of file diff --git a/Microsoft.Research/Contracts/System.Web.ApplicationServices/Sources/System.Web.Security.MembershipProvider.cs b/Microsoft.Research/Contracts/System.Web.ApplicationServices/Sources/System.Web.Security.MembershipProvider.cs index 5b6b0f90..10701d28 100644 --- a/Microsoft.Research/Contracts/System.Web.ApplicationServices/Sources/System.Web.Security.MembershipProvider.cs +++ b/Microsoft.Research/Contracts/System.Web.ApplicationServices/Sources/System.Web.Security.MembershipProvider.cs @@ -86,6 +86,7 @@ protected MembershipProvider() protected virtual new void OnValidatingPassword(ValidatePasswordEventArgs e) { + Contract.Requires(e != null); } public abstract string ResetPassword(string username, string answer); diff --git a/Microsoft.Research/Contracts/System.Web/System.Web.UI.WebControls.BaseDataBoundControl.cs b/Microsoft.Research/Contracts/System.Web/System.Web.UI.WebControls.BaseDataBoundControl.cs index 8f2cc852..2c93c146 100644 --- a/Microsoft.Research/Contracts/System.Web/System.Web.UI.WebControls.BaseDataBoundControl.cs +++ b/Microsoft.Research/Contracts/System.Web/System.Web.UI.WebControls.BaseDataBoundControl.cs @@ -57,6 +57,7 @@ public override void DataBind () protected virtual new void OnDataBound (EventArgs e) { + Contract.Requires(e != null); } protected virtual new void OnDataPropertyChanged () @@ -69,6 +70,7 @@ protected internal override void OnInit (EventArgs e) protected virtual new void OnPagePreLoad (Object sender, EventArgs e) { + Contract.Requires(e != null); } protected internal override void OnPreRender (EventArgs e) diff --git a/Microsoft.Research/Contracts/System.Xml.Linq/System.Xml.Linq.XProcessingInstruction.cs b/Microsoft.Research/Contracts/System.Xml.Linq/System.Xml.Linq.XProcessingInstruction.cs new file mode 100644 index 00000000..7ab3d768 --- /dev/null +++ b/Microsoft.Research/Contracts/System.Xml.Linq/System.Xml.Linq.XProcessingInstruction.cs @@ -0,0 +1,75 @@ +// CodeContracts +// +// Copyright (c) Microsoft Corporation +// +// All rights reserved. +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace System.Xml.Linq +{ + using System.Diagnostics.Contracts; + + public class XProcessingInstruction : XNode + { + public string Data + { + get + { + Contract.Ensures(Contract.Result() != null); + return null; + } + set + { + Contract.Requires(value != null); + } + } + + public override XmlNodeType NodeType + { + get + { + return XmlNodeType.ProcessingInstruction; + } + } + + public string Target + { + get + { + Contract.Ensures(!string.IsNullOrEmpty(Contract.Result())); + return null; + } + set + { + Contract.Requires(!string.IsNullOrEmpty(value)); + } + } + + public XProcessingInstruction(string target, string data) + { + Contract.Requires(!string.IsNullOrEmpty(target)); + Contract.Requires(data != null); + } + + public XProcessingInstruction(XProcessingInstruction other) + { + Contract.Requires(other != null); + } + + public override void WriteTo(XmlWriter writer) + { + } + } +} diff --git a/Microsoft.Research/Contracts/System.Xml.Linq/System.Xml.Linq10.csproj b/Microsoft.Research/Contracts/System.Xml.Linq/System.Xml.Linq10.csproj index 366433ca..b90408d6 100644 --- a/Microsoft.Research/Contracts/System.Xml.Linq/System.Xml.Linq10.csproj +++ b/Microsoft.Research/Contracts/System.Xml.Linq/System.Xml.Linq10.csproj @@ -1,4 +1,4 @@ - + Debug @@ -202,6 +202,7 @@ + @@ -254,4 +255,4 @@ --> - + \ No newline at end of file diff --git a/Microsoft.Research/Contracts/System/System.Collections.ObjectModel.ObservableCollection.cs b/Microsoft.Research/Contracts/System/System.Collections.ObjectModel.ObservableCollection.cs new file mode 100644 index 00000000..7ddca66a --- /dev/null +++ b/Microsoft.Research/Contracts/System/System.Collections.ObjectModel.ObservableCollection.cs @@ -0,0 +1,193 @@ +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.ComponentModel; +using System.Diagnostics.Contracts; +using System.Runtime; +using System.Runtime.CompilerServices; + +namespace System.Collections.ObjectModel +{ +#if !SILVERLIGHT && !NETFRAMEWORK_3_5 // => types defined in WindowsBase! + // Summary: + // Represents a dynamic data collection that provides notifications when items + // get added, removed, or when the whole list is refreshed. + // + // Type parameters: + // T: + // The type of elements in the collection. + public class ObservableCollection : Collection, INotifyCollectionChanged, INotifyPropertyChanged + { + // Summary: + // Initializes a new instance of the System.Collections.ObjectModel.ObservableCollection + // class. + public ObservableCollection() { } + // + // Summary: + // Initializes a new instance of the System.Collections.ObjectModel.ObservableCollection + // class that contains elements copied from the specified collection. + // + // Parameters: + // collection: + // The collection from which the elements are copied. + // + // Exceptions: + // System.ArgumentNullException: + // The collection parameter cannot be null. + public ObservableCollection(IEnumerable collection) + { + Contract.Requires(collection != null); + } + + // + // Summary: + // Initializes a new instance of the System.Collections.ObjectModel.ObservableCollection + // class that contains elements copied from the specified list. + // + // Parameters: + // list: + // The list from which the elements are copied. + // + // Exceptions: + // System.ArgumentNullException: + // The list parameter cannot be null. + public ObservableCollection(List list) + { + Contract.Requires(list != null); + } + + public virtual event NotifyCollectionChangedEventHandler CollectionChanged + { + add + { + } + remove + { + } + } + + // + // Summary: + // Occurs when a property value changes. + //protected virtual event PropertyChangedEventHandler PropertyChanged; + + // Summary: + // Disallows reentrant attempts to change this collection. + // + // Returns: + // An System.IDisposable object that can be used to dispose of the object. + //protected IDisposable BlockReentrancy(); + // + // Summary: + // Checks for reentrant attempts to change this collection. + // + // Exceptions: + // System.InvalidOperationException: + // If there was a call to System.Collections.ObjectModel.ObservableCollection.BlockReentrancy() + // of which the System.IDisposable return value has not yet been disposed of. + // Typically, this means when there are additional attempts to change this collection + // during a System.Collections.ObjectModel.ObservableCollection.CollectionChanged + // event. However, it depends on when derived classes choose to call System.Collections.ObjectModel.ObservableCollection.BlockReentrancy(). + //protected void CheckReentrancy(); + // + // Summary: + // Removes all items from the collection. + protected override void ClearItems() + { + } + + // + // Summary: + // Inserts an item into the collection at the specified index. + // + // Parameters: + // index: + // The zero-based index at which item should be inserted. + // + // item: + // The object to insert. + protected override void InsertItem(int index, T item) + { + } + // + // Summary: + // Moves the item at the specified index to a new location in the collection. + // + // Parameters: + // oldIndex: + // The zero-based index specifying the location of the item to be moved. + // + // newIndex: + // The zero-based index specifying the new location of the item. + public void Move(int oldIndex, int newIndex) + { + Contract.Requires(oldIndex < Count); + Contract.Requires(newIndex < Count); + } + // + // Summary: + // Moves the item at the specified index to a new location in the collection. + // + // Parameters: + // oldIndex: + // The zero-based index specifying the location of the item to be moved. + // + // newIndex: + // The zero-based index specifying the new location of the item. + protected virtual void MoveItem(int oldIndex, int newIndex) + { + Contract.Requires(oldIndex < Count); + Contract.Requires(newIndex < Count); + } + // + // Summary: + // Raises the System.Collections.ObjectModel.ObservableCollection.CollectionChanged + // event with the provided arguments. + // + // Parameters: + // e: + // Arguments of the event being raised. + protected virtual void OnCollectionChanged(NotifyCollectionChangedEventArgs e) + { + Contract.Requires(e != null); + } + // + // Summary: + // Raises the System.Collections.ObjectModel.ObservableCollection.PropertyChanged + // event with the provided arguments. + // + // Parameters: + // e: + // Arguments of the event being raised. + protected virtual void OnPropertyChanged(PropertyChangedEventArgs e) + { + Contract.Requires(e != null); + } + // + // Summary: + // Removes the item at the specified index of the collection. + // + // Parameters: + // index: + // The zero-based index of the element to remove. + protected override void RemoveItem(int index) { } + // + // Summary: + // Replaces the element at the specified index. + // + // Parameters: + // index: + // The zero-based index of the element to replace. + // + // item: + // The new value for the element at the specified index. + protected override void SetItem(int index, T item) { } + + event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged + { + add { throw new NotImplementedException(); } + remove { throw new NotImplementedException(); } + } + } +#endif +} diff --git a/Microsoft.Research/Contracts/System/System.Collections.Specialized.INotifyCollectionChanged.cs b/Microsoft.Research/Contracts/System/System.Collections.Specialized.INotifyCollectionChanged.cs new file mode 100644 index 00000000..96ac03e3 --- /dev/null +++ b/Microsoft.Research/Contracts/System/System.Collections.Specialized.INotifyCollectionChanged.cs @@ -0,0 +1,359 @@ +using System.Runtime.CompilerServices; + +namespace System.Collections.Specialized +{ +#if !SILVERLIGHT && !NETFRAMEWORK_3_5 // => types defined in WindowsBase! + // Summary: + // Describes the action that caused a System.Collections.Specialized.INotifyCollectionChanged.CollectionChanged + // event. + public enum NotifyCollectionChangedAction + { + // Summary: + // One or more items were added to the collection. + Add = 0, + // + // Summary: + // One or more items were removed from the collection. + Remove = 1, + // + // Summary: + // One or more items were replaced in the collection. + Replace = 2, + // + // Summary: + // One or more items were moved within the collection. + Move = 3, + // + // Summary: + // The content of the collection changed dramatically. + Reset = 4, + } + + + // Summary: + // Provides data for the System.Collections.Specialized.INotifyCollectionChanged.CollectionChanged + // event. + public class NotifyCollectionChangedEventArgs : EventArgs + { + // Summary: + // Initializes a new instance of the System.Collections.Specialized.NotifyCollectionChangedEventArgs + // class that describes a System.Collections.Specialized.NotifyCollectionChangedAction.Reset + // change. + // + // Parameters: + // action: + // The action that caused the event. This must be set to System.Collections.Specialized.NotifyCollectionChangedAction.Reset. + public NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction action) { } + // + // Summary: + // Initializes a new instance of the System.Collections.Specialized.NotifyCollectionChangedEventArgs + // class that describes a multi-item change. + // + // Parameters: + // action: + // The action that caused the event. This can be set to System.Collections.Specialized.NotifyCollectionChangedAction.Reset, + // System.Collections.Specialized.NotifyCollectionChangedAction.Add, or System.Collections.Specialized.NotifyCollectionChangedAction.Remove. + // + // changedItems: + // The items that are affected by the change. + public NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction action, IList changedItems) { } + // + // Summary: + // Initializes a new instance of the System.Collections.Specialized.NotifyCollectionChangedEventArgs + // class that describes a one-item change. + // + // Parameters: + // action: + // The action that caused the event. This can be set to System.Collections.Specialized.NotifyCollectionChangedAction.Reset, + // System.Collections.Specialized.NotifyCollectionChangedAction.Add, or System.Collections.Specialized.NotifyCollectionChangedAction.Remove. + // + // changedItem: + // The item that is affected by the change. + // + // Exceptions: + // System.ArgumentException: + // If action is not Reset, Add, or Remove, or if action is Reset and changedItem + // is not null. + public NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction action, object changedItem) { } + // + // Summary: + // Initializes a new instance of the System.Collections.Specialized.NotifyCollectionChangedEventArgs + // class that describes a multi-item System.Collections.Specialized.NotifyCollectionChangedAction.Replace + // change. + // + // Parameters: + // action: + // The action that caused the event. This can only be set to System.Collections.Specialized.NotifyCollectionChangedAction.Replace. + // + // newItems: + // The new items that are replacing the original items. + // + // oldItems: + // The original items that are replaced. + // + // Exceptions: + // System.ArgumentException: + // If action is not Replace. + // + // System.ArgumentNullException: + // If oldItems or newItems is null. + public NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction action, IList newItems, IList oldItems) { } + // + // Summary: + // Initializes a new instance of the System.Collections.Specialized.NotifyCollectionChangedEventArgs + // class that describes a multi-item change or a System.Collections.Specialized.NotifyCollectionChangedAction.Reset + // change. + // + // Parameters: + // action: + // The action that caused the event. This can be set to System.Collections.Specialized.NotifyCollectionChangedAction.Reset, + // System.Collections.Specialized.NotifyCollectionChangedAction.Add, or System.Collections.Specialized.NotifyCollectionChangedAction.Remove. + // + // changedItems: + // The items affected by the change. + // + // startingIndex: + // The index where the change occurred. + // + // Exceptions: + // System.ArgumentException: + // If action is not Reset, Add, or Remove, if action is Reset and either changedItems + // is not null or startingIndex is not -1, or if action is Add or Remove and + // startingIndex is less than -1. + // + // System.ArgumentNullException: + // If action is Add or Remove and changedItems is null. + public NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction action, IList changedItems, int startingIndex) { } + // + // Summary: + // Initializes a new instance of the System.Collections.Specialized.NotifyCollectionChangedEventArgs + // class that describes a one-item change. + // + // Parameters: + // action: + // The action that caused the event. This can be set to System.Collections.Specialized.NotifyCollectionChangedAction.Reset, + // System.Collections.Specialized.NotifyCollectionChangedAction.Add, or System.Collections.Specialized.NotifyCollectionChangedAction.Remove. + // + // changedItem: + // The item that is affected by the change. + // + // index: + // The index where the change occurred. + // + // Exceptions: + // System.ArgumentException: + // If action is not Reset, Add, or Remove, or if action is Reset and either + // changedItems is not null or index is not -1. + public NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction action, object changedItem, int index) { } + // + // Summary: + // Initializes a new instance of the System.Collections.Specialized.NotifyCollectionChangedEventArgs + // class that describes a one-item System.Collections.Specialized.NotifyCollectionChangedAction.Replace + // change. + // + // Parameters: + // action: + // The action that caused the event. This can only be set to System.Collections.Specialized.NotifyCollectionChangedAction.Replace. + // + // newItem: + // The new item that is replacing the original item. + // + // oldItem: + // The original item that is replaced. + // + // Exceptions: + // System.ArgumentException: + // If action is not Replace. + public NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction action, object newItem, object oldItem) { } + // + // Summary: + // Initializes a new instance of the System.Collections.Specialized.NotifyCollectionChangedEventArgs + // class that describes a multi-item System.Collections.Specialized.NotifyCollectionChangedAction.Replace + // change. + // + // Parameters: + // action: + // The action that caused the event. This can only be set to System.Collections.Specialized.NotifyCollectionChangedAction.Replace. + // + // newItems: + // The new items that are replacing the original items. + // + // oldItems: + // The original items that are replaced. + // + // startingIndex: + // The index of the first item of the items that are being replaced. + // + // Exceptions: + // System.ArgumentException: + // If action is not Replace. + // + // System.ArgumentNullException: + // If oldItems or newItems is null. + public NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction action, IList newItems, IList oldItems, int startingIndex) { } + // + // Summary: + // Initializes a new instance of the System.Collections.Specialized.NotifyCollectionChangedEventArgs + // class that describes a multi-item System.Collections.Specialized.NotifyCollectionChangedAction.Move + // change. + // + // Parameters: + // action: + // The action that caused the event. This can only be set to System.Collections.Specialized.NotifyCollectionChangedAction.Move. + // + // changedItems: + // The items affected by the change. + // + // index: + // The new index for the changed items. + // + // oldIndex: + // The old index for the changed items. + // + // Exceptions: + // System.ArgumentException: + // If action is not Move or index is less than 0. + public NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction action, IList changedItems, int index, int oldIndex) { } + // + // Summary: + // Initializes a new instance of the System.Collections.Specialized.NotifyCollectionChangedEventArgs + // class that describes a one-item System.Collections.Specialized.NotifyCollectionChangedAction.Move + // change. + // + // Parameters: + // action: + // The action that caused the event. This can only be set to System.Collections.Specialized.NotifyCollectionChangedAction.Move. + // + // changedItem: + // The item affected by the change. + // + // index: + // The new index for the changed item. + // + // oldIndex: + // The old index for the changed item. + // + // Exceptions: + // System.ArgumentException: + // If action is not Move or index is less than 0. + public NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction action, object changedItem, int index, int oldIndex) { } + // + // Summary: + // Initializes a new instance of the System.Collections.Specialized.NotifyCollectionChangedEventArgs + // class that describes a one-item System.Collections.Specialized.NotifyCollectionChangedAction.Replace + // change. + // + // Parameters: + // action: + // The action that caused the event. This can be set to System.Collections.Specialized.NotifyCollectionChangedAction.Replace. + // + // newItem: + // The new item that is replacing the original item. + // + // oldItem: + // The original item that is replaced. + // + // index: + // The index of the item being replaced. + // + // Exceptions: + // System.ArgumentException: + // If action is not Replace. + public NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction action, object newItem, object oldItem, int index) { } + + // Summary: + // Gets the action that caused the event. + // + // Returns: + // A System.Collections.Specialized.NotifyCollectionChangedAction value that + // describes the action that caused the event. + public NotifyCollectionChangedAction Action + { + get + { + return default(NotifyCollectionChangedAction); + } + } + // + // Summary: + // Gets the list of new items involved in the change. + // + // Returns: + // The list of new items involved in the change. + public IList NewItems + { + get + { + return null; + } + } + + // + // Summary: + // Gets the index at which the change occurred. + // + // Returns: + // The zero-based index at which the change occurred. + public int NewStartingIndex + { + get + { + return 0; + } + + } + // + // Summary: + // Gets the list of items affected by a System.Collections.Specialized.NotifyCollectionChangedAction.Replace, + // Remove, or Move action. + // + // Returns: + // The list of items affected by a System.Collections.Specialized.NotifyCollectionChangedAction.Replace, + // Remove, or Move action. + public IList OldItems + { + get + { + return null; + } + } + // + // Summary: + // Gets the index at which a System.Collections.Specialized.NotifyCollectionChangedAction.Move, + // Remove, or Replace action occurred. + // + // Returns: + // The zero-based index at which a System.Collections.Specialized.NotifyCollectionChangedAction.Move, + // Remove, or Replace action occurred. + public int OldStartingIndex + { + get + { + return 0; + } + } + } + + // Summary: + // Represents the method that handles the System.Collections.Specialized.INotifyCollectionChanged.CollectionChanged + // event. + // + // Parameters: + // sender: + // The object that raised the event. + // + // e: + // Information about the event. + public delegate void NotifyCollectionChangedEventHandler(object sender, NotifyCollectionChangedEventArgs e); + + // Summary: + // Notifies listeners of dynamic changes, such as when items get added and removed + // or the whole list is refreshed. + public interface INotifyCollectionChanged + { + // Summary: + // Occurs when the collection changes. + event NotifyCollectionChangedEventHandler CollectionChanged; + } +#endif +} diff --git a/Microsoft.Research/Contracts/System/System.ComponentModel.INotifyPropertyChanged.cs b/Microsoft.Research/Contracts/System/System.ComponentModel.INotifyPropertyChanged.cs new file mode 100644 index 00000000..cb891301 --- /dev/null +++ b/Microsoft.Research/Contracts/System/System.ComponentModel.INotifyPropertyChanged.cs @@ -0,0 +1,11 @@ +namespace System.ComponentModel +{ + // Summary: + // Notifies clients that a property value has changed. + public interface INotifyPropertyChanged + { + // Summary: + // Occurs when a property value changes. + event PropertyChangedEventHandler PropertyChanged; + } +} diff --git a/Microsoft.Research/Contracts/System/System.ComponentModel.PropertyChangedEventArgs.cs b/Microsoft.Research/Contracts/System/System.ComponentModel.PropertyChangedEventArgs.cs new file mode 100644 index 00000000..2776ed0c --- /dev/null +++ b/Microsoft.Research/Contracts/System/System.ComponentModel.PropertyChangedEventArgs.cs @@ -0,0 +1,28 @@ +namespace System.ComponentModel +{ + using System; + using System.Diagnostics.Contracts; + + public class PropertyChangedEventArgs : EventArgs + { + public PropertyChangedEventArgs(string propertyName) + { + Contract.Requires(!string.IsNullOrEmpty(Contract.Result())); + Contract.Ensures(this.PropertyName == propertyName); + } + +#if SILVERLIGHT + public string PropertyName +#else + public virtual string PropertyName +#endif + { + get + { + Contract.Ensures(!string.IsNullOrEmpty(Contract.Result())); + + return default(string); + } + } + } +} diff --git a/Microsoft.Research/Contracts/System/System.ComponentModel.PropertyChangedEventHandler.cs b/Microsoft.Research/Contracts/System/System.ComponentModel.PropertyChangedEventHandler.cs new file mode 100644 index 00000000..38d0c148 --- /dev/null +++ b/Microsoft.Research/Contracts/System/System.ComponentModel.PropertyChangedEventHandler.cs @@ -0,0 +1,4 @@ +namespace System.ComponentModel +{ + public delegate void PropertyChangedEventHandler(Object sender, PropertyChangedEventArgs e); +} diff --git a/Microsoft.Research/Contracts/System/System.ComponentModel.PropertyDescriptor.cs b/Microsoft.Research/Contracts/System/System.ComponentModel.PropertyDescriptor.cs index bd042ad5..1f2577a0 100644 --- a/Microsoft.Research/Contracts/System/System.ComponentModel.PropertyDescriptor.cs +++ b/Microsoft.Research/Contracts/System/System.ComponentModel.PropertyDescriptor.cs @@ -182,7 +182,6 @@ protected object CreateInstance(Type type) return default(object); } -#endif // // Summary: // Compares this to another object to see if they are equivalent. @@ -333,9 +332,11 @@ protected object CreateInstance(Type type) // // e: // An System.EventArgs that contains the event data. - //protected virtual void OnValueChanged(object component, EventArgs e); + protected virtual void OnValueChanged(object component, EventArgs e) + { + Contract.Requires(e != null); + } -#if !SILVERLIGHT // // Summary: // Enables other objects to be notified when this property changes. diff --git a/Microsoft.Research/Contracts/System/System.ComponentModel.TypeDescriptor.cs b/Microsoft.Research/Contracts/System/System.ComponentModel.TypeDescriptor.cs index 138cde24..33265da4 100644 --- a/Microsoft.Research/Contracts/System/System.ComponentModel.TypeDescriptor.cs +++ b/Microsoft.Research/Contracts/System/System.ComponentModel.TypeDescriptor.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #if !SILVERLIGHT @@ -589,6 +589,7 @@ public static string GetComponentName(object component, bool noCustomTypeDesc) public static TypeConverter GetConverter(object component) { Contract.Requires(component != null); + Contract.Ensures(Contract.Result() != null); return default(TypeConverter); } @@ -609,6 +610,7 @@ public static TypeConverter GetConverter(object component) public static TypeConverter GetConverter(Type type) { Contract.Requires(type != null); + Contract.Ensures(Contract.Result() != null); return default(TypeConverter); } @@ -638,6 +640,7 @@ public static TypeConverter GetConverter(Type type) public static TypeConverter GetConverter(object component, bool noCustomTypeDesc) { Contract.Requires(component != null); + Contract.Ensures(Contract.Result() != null); return default(TypeConverter); } diff --git a/Microsoft.Research/Contracts/System/System.Contracts10.csproj b/Microsoft.Research/Contracts/System/System.Contracts10.csproj index 10e44f0c..596dd440 100644 --- a/Microsoft.Research/Contracts/System/System.Contracts10.csproj +++ b/Microsoft.Research/Contracts/System/System.Contracts10.csproj @@ -561,6 +561,11 @@ AssemblyInfo.cs + + + + + @@ -706,6 +711,9 @@ PreContractsBuildDummy + + + ..\$(OutputPath) diff --git a/Microsoft.Research/Contracts/System/System.Diagnostics.FileVersionInfo.cs b/Microsoft.Research/Contracts/System/System.Diagnostics.FileVersionInfo.cs new file mode 100644 index 00000000..4282accb --- /dev/null +++ b/Microsoft.Research/Contracts/System/System.Diagnostics.FileVersionInfo.cs @@ -0,0 +1,36 @@ + + +// CodeContracts +// +// Copyright (c) Microsoft Corporation +// +// All rights reserved. +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +using System.Diagnostics.Contracts; +using System; + +namespace System.Diagnostics +{ +#if !SILVERLIGHT + public sealed class FileVersionInfo + { + private FileVersionInfo() + { + } + + public static FileVersionInfo GetVersionInfo(string fileName) + { + Contract.Ensures(Contract.Result() != null); + return null; + } + } +#endif +} diff --git a/Microsoft.Research/Contracts/System/System.Diagnostics.TraceListener.cs b/Microsoft.Research/Contracts/System/System.Diagnostics.TraceListener.cs index 5926f274..112466f1 100644 --- a/Microsoft.Research/Contracts/System/System.Diagnostics.TraceListener.cs +++ b/Microsoft.Research/Contracts/System/System.Diagnostics.TraceListener.cs @@ -1,19 +1,19 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #if !SILVERLIGHT - +using System.Collections.Specialized; using System.Diagnostics.Contracts; using System; @@ -48,6 +48,15 @@ public int IndentSize } } + public StringDictionary Attributes + { + get + { + Contract.Ensures(Contract.Result() != null); + return null; + } + } + #if false public void WriteLine (object o, string category) { diff --git a/Microsoft.Research/Contracts/System/System.Diagnostics.TraceSource.cs b/Microsoft.Research/Contracts/System/System.Diagnostics.TraceSource.cs index a27e45c9..4bc2f700 100644 --- a/Microsoft.Research/Contracts/System/System.Diagnostics.TraceSource.cs +++ b/Microsoft.Research/Contracts/System/System.Diagnostics.TraceSource.cs @@ -1,21 +1,22 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #if !SILVERLIGHT using System; using System.Runtime; using System.Diagnostics.Contracts; +using System.Collections.Specialized; namespace System.Diagnostics { @@ -35,7 +36,7 @@ public TraceSource(string name, SourceLevels defaultLevel) } - /* + public StringDictionary Attributes { get @@ -45,7 +46,7 @@ public StringDictionary Attributes return null; } } - + public TraceListenerCollection Listeners { get @@ -55,10 +56,10 @@ public TraceListenerCollection Listeners return null; } } - */ + public string Name { get { Contract.Ensures(Contract.Result() != null); return null; } } - + public SourceSwitch Switch { get @@ -80,14 +81,14 @@ protected internal virtual string[] GetSupportedAttributes() } // public void TraceData(TraceEventType eventType, int id, object data); - + //public void TraceData(TraceEventType eventType, int id, params object[] data); - + // public void TraceEvent(TraceEventType eventType, int id); // public void TraceEvent(TraceEventType eventType, int id, string message); // public void TraceEvent(TraceEventType eventType, int id, string format, params object[] args); - + // public void TraceInformation(string message); // public void TraceInformation(string format, params object[] args) diff --git a/Microsoft.Research/Contracts/System/System.Net.Sockets.Socket.cs b/Microsoft.Research/Contracts/System/System.Net.Sockets.Socket.cs index 6bc3ef4c..8fa85f34 100644 --- a/Microsoft.Research/Contracts/System/System.Net.Sockets.Socket.cs +++ b/Microsoft.Research/Contracts/System/System.Net.Sockets.Socket.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #if !SILVERLIGHT @@ -202,7 +202,7 @@ public Socket EndAccept(IAsyncResult asyncResult) return default(Socket); } - + public IAsyncResult BeginAccept(AsyncCallback callback, object state) { return default(IAsyncResult); @@ -246,7 +246,7 @@ public int EndSendTo(IAsyncResult asyncResult) return default(int); } - public IAsyncResult BeginSendTo(Byte[] buffer, int offset, int size, SocketFlags socketFlags, + public IAsyncResult BeginSendTo(Byte[] buffer, int offset, int size, SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback callback, object state) { Contract.Requires(buffer != null); @@ -285,7 +285,7 @@ public IAsyncResult BeginConnect(System.Net.EndPoint remoteEP, AsyncCallback cal return default(IAsyncResult); } - public static void Select(System.Collections.IList checkRead, System.Collections.IList checkWrite, + public static void Select(System.Collections.IList checkRead, System.Collections.IList checkWrite, System.Collections.IList checkError, int microSeconds) { Contract.Requires(checkError != null); @@ -313,9 +313,6 @@ public object GetSocketOption(SocketOptionLevel optionLevel, SocketOptionName op public void SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, object optionValue) { Contract.Requires(optionValue != null); - Contract.Requires((int)optionLevel == 41); - Contract.Requires((int)optionName == 12 || (int)optionName == 13); - } public void SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Byte[] optionValue) { diff --git a/Microsoft.Research/Contracts/System/System.Net.WebRequest.cs b/Microsoft.Research/Contracts/System/System.Net.WebRequest.cs index 0da7eb6d..bba4d4e5 100644 --- a/Microsoft.Research/Contracts/System/System.Net.WebRequest.cs +++ b/Microsoft.Research/Contracts/System/System.Net.WebRequest.cs @@ -22,491 +22,559 @@ namespace System.Net { - // Summary: - // Makes a request to a Uniform Resource Identifier (URI). This is an abstract - // class. - public abstract class WebRequest //: MarshalByRefObject, ISerializable - { // Summary: - // Initializes a new instance of the System.Net.WebRequest class. - protected WebRequest() { } - // - // Summary: - // Initializes a new instance of the System.Net.WebRequest class from the specified - // instances of the System.Runtime.Serialization.SerializationInfo and System.Runtime.Serialization.StreamingContext - // classes. - // - // Parameters: - // serializationInfo: - // A System.Runtime.Serialization.SerializationInfo that contains the information - // required to serialize the new System.Net.WebRequest instance. - // - // streamingContext: - // A System.Runtime.Serialization.StreamingContext that indicates the source - // of the serialized stream associated with the new System.Net.WebRequest instance. - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to access the constructor, when the constructor is not - // overridden in a descendant class. - //[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")] - //protected WebRequest(SerializationInfo serializationInfo, StreamingContext streamingContext) { } - - // Summary: - // Gets or sets values indicating the level of authentication and impersonation - // used for this request. - // - // Returns: - // A bitwise combination of the System.Net.Security.AuthenticationLevel values. - // The default value is System.Net.Security.AuthenticationLevel.MutualAuthRequested.In - // mutual authentication, both the client and server present credentials to - // establish their identity. The System.Net.Security.AuthenticationLevel.MutualAuthRequired - // and System.Net.Security.AuthenticationLevel.MutualAuthRequested values are - // relevant for Kerberos authentication. Kerberos authentication can be supported - // directly, or can be used if the Negotiate security protocol is used to select - // the actual security protocol. For more information about authentication protocols, - // see Internet Authentication.To determine whether mutual authentication occurred, - // check the System.Net.WebResponse.IsMutuallyAuthenticated property. If you - // specify the System.Net.Security.AuthenticationLevel.MutualAuthRequired authentication - // flag value and mutual authentication does not occur, your application will - // receive an System.IO.IOException with a System.Net.ProtocolViolationException - // inner exception indicating that mutual authentication failed. - //public AuthenticationLevel AuthenticationLevel { get; set; } - // - // Summary: - // Gets or sets the cache policy for this request. - // - // Returns: - // A System.Net.Cache.RequestCachePolicy object that defines a cache policy. - //public virtual RequestCachePolicy CachePolicy { get; set; } - // - // Summary: - // When overridden in a descendant class, gets or sets the name of the connection - // group for the request. - // - // Returns: - // The name of the connection group for the request. - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to get or set the property, when the property is not - // overridden in a descendant class. - //public virtual string ConnectionGroupName { get; set; } - // - // Summary: - // When overridden in a descendant class, gets or sets the content length of - // the request data being sent. - // - // Returns: - // The number of bytes of request data being sent. - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to get or set the property, when the property is not - // overridden in a descendant class. - //public virtual long ContentLength { get; set; } - // - // Summary: - // When overridden in a descendant class, gets or sets the content type of the - // request data being sent. - // - // Returns: - // The content type of the request data. - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to get or set the property, when the property is not - // overridden in a descendant class. - //public virtual string ContentType { get; set; } - // - // Summary: - // When overridden in a descendant class, gets or sets the network credentials - // used for authenticating the request with the Internet resource. - // - // Returns: - // An System.Net.ICredentials containing the authentication credentials associated - // with the request. The default is null. - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to get or set the property, when the property is not - // overridden in a descendant class. - //public virtual ICredentials Credentials { get; set; } - // - // Summary: - // Gets or sets the default cache policy for this request. - // - // Returns: - // A System.Net.Cache.HttpRequestCachePolicy that specifies the cache policy - // in effect for this request when no other policy is applicable. - //public static RequestCachePolicy DefaultCachePolicy { get; set; } - // - // Summary: - // Gets or sets the global HTTP proxy. - // - // Returns: - // An System.Net.IWebProxy used by every call to instances of System.Net.WebRequest. - public static IWebProxy DefaultWebProxy + // Makes a request to a Uniform Resource Identifier (URI). This is an abstract + // class. + public abstract class WebRequest //: MarshalByRefObject, ISerializable { - get - { - return default(IWebProxy); - } - set - { - } - } - // - // Summary: - // When overridden in a descendant class, gets or sets the collection of header - // name/value pairs associated with the request. - // - // Returns: - // A System.Net.WebHeaderCollection containing the header name/value pairs associated - // with this request. - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to get or set the property, when the property is not - // overridden in a descendant class. - // public virtual WebHeaderCollection Headers { get; set; } + // Summary: + // Initializes a new instance of the System.Net.WebRequest class. + protected WebRequest() { } + // + // Summary: + // Initializes a new instance of the System.Net.WebRequest class from the specified + // instances of the System.Runtime.Serialization.SerializationInfo and System.Runtime.Serialization.StreamingContext + // classes. + // + // Parameters: + // serializationInfo: + // A System.Runtime.Serialization.SerializationInfo that contains the information + // required to serialize the new System.Net.WebRequest instance. + // + // streamingContext: + // A System.Runtime.Serialization.StreamingContext that indicates the source + // of the serialized stream associated with the new System.Net.WebRequest instance. + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to access the constructor, when the constructor is not + // overridden in a descendant class. + //[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")] + //protected WebRequest(SerializationInfo serializationInfo, StreamingContext streamingContext) { } - // - // Summary: - // Gets or sets the impersonation level for the current request. - // - // Returns: - // A System.Security.Principal.TokenImpersonationLevel value. - //extern public TokenImpersonationLevel ImpersonationLevel { get; set; } - // - // Summary: - // When overridden in a descendant class, gets or sets the protocol method to - // use in this request. - // - // Returns: - // The protocol method to use in this request. - // - // Exceptions: - // System.NotImplementedException: - // If the property is not overridden in a descendant class, any attempt is made - // to get or set the property. - extern public virtual string Method { get; set; } - // - // Summary: - // When overridden in a descendant class, indicates whether to pre-authenticate - // the request. - // - // Returns: - // true to pre-authenticate; otherwise, false. - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to get or set the property, when the property is not - // overridden in a descendant class. - extern public virtual bool PreAuthenticate { get; set; } - // - // Summary: - // When overridden in a descendant class, gets or sets the network proxy to - // use to access this Internet resource. - // - // Returns: - // The System.Net.IWebProxy to use to access the Internet resource. - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to get or set the property, when the property is not - // overridden in a descendant class. - public virtual IWebProxy Proxy - { - get - { - Contract.Ensures(Contract.Result() != null); - return default(IWebProxy); - } - set - { - } - } - // - // Summary: - // When overridden in a descendant class, gets the URI of the Internet resource - // associated with the request. - // - // Returns: - // A System.Uri representing the resource associated with the request - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to get or set the property, when the property is not - // overridden in a descendant class. - //public virtual Uri RequestUri { get; } - // - // Summary: - // Gets or sets the length of time, in milliseconds, before the request times - // out. - // - // Returns: - // The length of time, in milliseconds, until the request times out, or the - // value System.Threading.Timeout.Infinite to indicate that the request does - // not time out. The default value is defined by the descendant class. - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to get or set the property, when the property is not - // overridden in a descendant class. - //public virtual int Timeout { get; set; } - // - // Summary: - // When overridden in a descendant class, gets or sets a System.Boolean value - // that controls whether System.Net.CredentialCache.DefaultCredentials are sent - // with requests. - // - // Returns: - // true if the default credentials are used; otherwise false. The default value - // is false. - // - // Exceptions: - // System.InvalidOperationException: - // You attempted to set this property after the request was sent. - //public virtual bool UseDefaultCredentials { get; set; } + // Summary: + // Gets or sets values indicating the level of authentication and impersonation + // used for this request. + // + // Returns: + // A bitwise combination of the System.Net.Security.AuthenticationLevel values. + // The default value is System.Net.Security.AuthenticationLevel.MutualAuthRequested.In + // mutual authentication, both the client and server present credentials to + // establish their identity. The System.Net.Security.AuthenticationLevel.MutualAuthRequired + // and System.Net.Security.AuthenticationLevel.MutualAuthRequested values are + // relevant for Kerberos authentication. Kerberos authentication can be supported + // directly, or can be used if the Negotiate security protocol is used to select + // the actual security protocol. For more information about authentication protocols, + // see Internet Authentication.To determine whether mutual authentication occurred, + // check the System.Net.WebResponse.IsMutuallyAuthenticated property. If you + // specify the System.Net.Security.AuthenticationLevel.MutualAuthRequired authentication + // flag value and mutual authentication does not occur, your application will + // receive an System.IO.IOException with a System.Net.ProtocolViolationException + // inner exception indicating that mutual authentication failed. + //public AuthenticationLevel AuthenticationLevel { get; set; } + // + // Summary: + // Gets or sets the cache policy for this request. + // + // Returns: + // A System.Net.Cache.RequestCachePolicy object that defines a cache policy. + //public virtual RequestCachePolicy CachePolicy { get; set; } - // Summary: - // Aborts the Request - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to access the method, when the method is not overridden - // in a descendant class. - //public virtual void Abort(); - // - // Summary: - // When overridden in a descendant class, provides an asynchronous version of - // the System.Net.WebRequest.GetRequestStream() method. - // - // Parameters: - // callback: - // The System.AsyncCallback delegate. - // - // state: - // An object containing state information for this asynchronous request. - // - // Returns: - // An System.IAsyncResult that references the asynchronous request. - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to access the method, when the method is not overridden - // in a descendant class. - //public virtual IAsyncResult BeginGetRequestStream(AsyncCallback callback, object state); - // - // Summary: - // When overridden in a descendant class, begins an asynchronous request for - // an Internet resource. - // - // Parameters: - // callback: - // The System.AsyncCallback delegate. - // - // state: - // An object containing state information for this asynchronous request. - // - // Returns: - // An System.IAsyncResult that references the asynchronous request. - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to access the method, when the method is not overridden - // in a descendant class. - //public virtual IAsyncResult BeginGetResponse(AsyncCallback callback, object state); - // - // Summary: - // Initializes a new System.Net.WebRequest instance for the specified URI scheme. - // - // Parameters: - // requestUriString: - // The URI that identifies the Internet resource. - // - // Returns: - // A System.Net.WebRequest descendant for the specific URI scheme. - // - // Exceptions: - // System.NotSupportedException: - // The request scheme specified in requestUriString has not been registered. - // - // System.ArgumentNullException: - // requestUriString is null. - // - // System.Security.SecurityException: - // The caller does not have permission to connect to the requested URI or a - // URI that the request is redirected to. - // - // System.UriFormatException: - // The URI specified in requestUriString is not a valid URI. - public static WebRequest Create(string requestUriString) - { - Contract.Requires(requestUriString != null); + // + // Summary: + // When overridden in a descendant class, gets or sets the name of the connection + // group for the request. + // + // Returns: + // The name of the connection group for the request. + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to get or set the property, when the property is not + // overridden in a descendant class. + //public virtual string ConnectionGroupName { get; set; } + // + // Summary: + // When overridden in a descendant class, gets or sets the content length of + // the request data being sent. + // + // Returns: + // The number of bytes of request data being sent. + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to get or set the property, when the property is not + // overridden in a descendant class. + //public virtual long ContentLength { get; set; } - return default(WebRequest); - } - // - // Summary: - // Initializes a new System.Net.WebRequest instance for the specified URI scheme. - // - // Parameters: - // requestUri: - // A System.Uri containing the URI of the requested resource. - // - // Returns: - // A System.Net.WebRequest descendant for the specified URI scheme. - // - // Exceptions: - // System.NotSupportedException: - // The request scheme specified in requestUri is not registered. - // - // System.ArgumentNullException: - // requestUri is null. - // - // System.Security.SecurityException: - // The caller does not have permission to connect to the requested URI or a - // URI that the request is redirected to. - public static WebRequest Create(Uri requestUri) - { - Contract.Requires(requestUri != null); + // + // Summary: + // When overridden in a descendant class, gets or sets the content type of the + // request data being sent. + // + // Returns: + // The content type of the request data. + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to get or set the property, when the property is not + // overridden in a descendant class. + //public virtual string ContentType { get; set; } - return default(WebRequest); - } - // - // Summary: - // Initializes a new System.Net.WebRequest instance for the specified URI scheme. - // - // Parameters: - // requestUri: - // A System.Uri containing the URI of the requested resource. - // - // Returns: - // A System.Net.WebRequest descendant for the specified URI scheme. - // - // Exceptions: - // System.NotSupportedException: - // The request scheme specified in requestUri is not registered. - // - // System.ArgumentNullException: - // requestUri is null. - // - // System.Security.SecurityException: - // The caller does not have permission to connect to the requested URI or a - // URI that the request is redirected to. - public static WebRequest CreateDefault(Uri requestUri) - { - Contract.Requires(requestUri != null); + // + // Summary: + // When overridden in a descendant class, gets or sets the network credentials + // used for authenticating the request with the Internet resource. + // + // Returns: + // An System.Net.ICredentials containing the authentication credentials associated + // with the request. The default is null. + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to get or set the property, when the property is not + // overridden in a descendant class. + //public virtual ICredentials Credentials { get; set; } - return default(WebRequest); - } - // - // Summary: - // When overridden in a descendant class, returns a System.IO.Stream for writing - // data to the Internet resource. - // - // Parameters: - // asyncResult: - // An System.IAsyncResult that references a pending request for a stream. - // - // Returns: - // A System.IO.Stream to write data to. - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to access the method, when the method is not overridden - // in a descendant class. - //public virtual Stream EndGetRequestStream(IAsyncResult asyncResult); - // - // Summary: - // When overridden in a descendant class, returns a System.Net.WebResponse. - // - // Parameters: - // asyncResult: - // An System.IAsyncResult that references a pending request for a response. - // - // Returns: - // A System.Net.WebResponse that contains a response to the Internet request. - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to access the method, when the method is not overridden - // in a descendant class. - //public virtual WebResponse EndGetResponse(IAsyncResult asyncResult); - // - // Summary: - // Populates a System.Runtime.Serialization.SerializationInfo with the data - // needed to serialize the target object. - // - // Parameters: - // serializationInfo: - // The System.Runtime.Serialization.SerializationInfo to populate with data. - // - // streamingContext: - // A System.Runtime.Serialization.StreamingContext that specifies the destination - // for this serialization. - //protected virtual void GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext); - // - // Summary: - // When overridden in a descendant class, returns a System.IO.Stream for writing - // data to the Internet resource. - // - // Returns: - // A System.IO.Stream for writing data to the Internet resource. - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to access the method, when the method is not overridden - // in a descendant class. - //public virtual Stream GetRequestStream(); - // - // Summary: - // When overridden in a descendant class, returns a response to an Internet - // request. - // - // Returns: - // A System.Net.WebResponse containing the response to the Internet request. - // - // Exceptions: - // System.NotImplementedException: - // Any attempt is made to access the method, when the method is not overridden - // in a descendant class. - //public virtual WebResponse GetResponse(); - // - // Summary: - // Returns a proxy configured with the Internet Explorer settings of the currently - // impersonated user. - // - // Returns: - // An System.Net.IWebProxy used by every call to instances of System.Net.WebRequest. - public static IWebProxy GetSystemWebProxy() - { - Contract.Ensures(Contract.Result() != null); + // + // Summary: + // Gets or sets the default cache policy for this request. + // + // Returns: + // A System.Net.Cache.HttpRequestCachePolicy that specifies the cache policy + // in effect for this request when no other policy is applicable. + //public static RequestCachePolicy DefaultCachePolicy { get; set; } + + // + // Summary: + // Gets or sets the global HTTP proxy. + // + // Returns: + // An System.Net.IWebProxy used by every call to instances of System.Net.WebRequest. + public static IWebProxy DefaultWebProxy + { + get + { + return default(IWebProxy); + } + set + { + } + } + + // + // Summary: + // When overridden in a descendant class, gets or sets the collection of header + // name/value pairs associated with the request. + // + // Returns: + // A System.Net.WebHeaderCollection containing the header name/value pairs associated + // with this request. + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to get or set the property, when the property is not + // overridden in a descendant class. + public virtual WebHeaderCollection Headers + { + get + { + Contract.Ensures(Contract.Result() != null); + return null; + } + set { } + } + + // + // Summary: + // Gets or sets the impersonation level for the current request. + // + // Returns: + // A System.Security.Principal.TokenImpersonationLevel value. + //extern public TokenImpersonationLevel ImpersonationLevel { get; set; } + + // + // Summary: + // When overridden in a descendant class, gets or sets the protocol method to + // use in this request. + // + // Returns: + // The protocol method to use in this request. + // + // Exceptions: + // System.NotImplementedException: + // If the property is not overridden in a descendant class, any attempt is made + // to get or set the property. + public virtual string Method + { + get + { + Contract.Ensures(!String.IsNullOrEmpty(Contract.Result())); + return null; + } + set + { + Contract.Requires(!String.IsNullOrEmpty(value)); + } + } + + // + // Summary: + // When overridden in a descendant class, indicates whether to pre-authenticate + // the request. + // + // Returns: + // true to pre-authenticate; otherwise, false. + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to get or set the property, when the property is not + // overridden in a descendant class. + extern public virtual bool PreAuthenticate { get; set; } + + // + // Summary: + // When overridden in a descendant class, gets or sets the network proxy to + // use to access this Internet resource. + // + // Returns: + // The System.Net.IWebProxy to use to access the Internet resource. + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to get or set the property, when the property is not + // overridden in a descendant class. + public virtual IWebProxy Proxy + { + get + { + // default is not null, but it's possible to set proxy to null. + return default(IWebProxy); + } + set + { + } + } + + // + // Summary: + // When overridden in a descendant class, gets the URI of the Internet resource + // associated with the request. + // + // Returns: + // A System.Uri representing the resource associated with the request + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to get or set the property, when the property is not + // overridden in a descendant class. + //public virtual Uri RequestUri { get; } + // + // Summary: + // Gets or sets the length of time, in milliseconds, before the request times + // out. + // + // Returns: + // The length of time, in milliseconds, until the request times out, or the + // value System.Threading.Timeout.Infinite to indicate that the request does + // not time out. The default value is defined by the descendant class. + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to get or set the property, when the property is not + // overridden in a descendant class. + //public virtual int Timeout { get; set; } - return default(IWebProxy); + // + // Summary: + // When overridden in a descendant class, gets or sets a System.Boolean value + // that controls whether System.Net.CredentialCache.DefaultCredentials are sent + // with requests. + // + // Returns: + // true if the default credentials are used; otherwise false. The default value + // is false. + // + // Exceptions: + // System.InvalidOperationException: + // You attempted to set this property after the request was sent. + //public virtual bool UseDefaultCredentials { get; set; } + + // Summary: + // Aborts the Request + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to access the method, when the method is not overridden + // in a descendant class. + //public virtual void Abort(); + + // + // Summary: + // When overridden in a descendant class, provides an asynchronous version of + // the System.Net.WebRequest.GetRequestStream() method. + // + // Parameters: + // callback: + // The System.AsyncCallback delegate. + // + // state: + // An object containing state information for this asynchronous request. + // + // Returns: + // An System.IAsyncResult that references the asynchronous request. + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to access the method, when the method is not overridden + // in a descendant class. + public virtual IAsyncResult BeginGetRequestStream(AsyncCallback callback, object state) + { + Contract.Ensures(Contract.Result() != null); + return null; + } + + // + // Summary: + // When overridden in a descendant class, begins an asynchronous request for + // an Internet resource. + // + // Parameters: + // callback: + // The System.AsyncCallback delegate. + // + // state: + // An object containing state information for this asynchronous request. + // + // Returns: + // An System.IAsyncResult that references the asynchronous request. + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to access the method, when the method is not overridden + // in a descendant class. + public virtual IAsyncResult BeginGetResponse(AsyncCallback callback, object state) + { + Contract.Ensures(Contract.Result() != null); + return null; + } + + // + // Summary: + // Initializes a new System.Net.WebRequest instance for the specified URI scheme. + // + // Parameters: + // requestUriString: + // The URI that identifies the Internet resource. + // + // Returns: + // A System.Net.WebRequest descendant for the specific URI scheme. + // + // Exceptions: + // System.NotSupportedException: + // The request scheme specified in requestUriString has not been registered. + // + // System.ArgumentNullException: + // requestUriString is null. + // + // System.Security.SecurityException: + // The caller does not have permission to connect to the requested URI or a + // URI that the request is redirected to. + // + // System.UriFormatException: + // The URI specified in requestUriString is not a valid URI. + public static WebRequest Create(string requestUriString) + { + Contract.Requires(requestUriString != null); + Contract.Ensures(Contract.Result() != null); + + return default(WebRequest); + } + + // + // Summary: + // Initializes a new System.Net.WebRequest instance for the specified URI scheme. + // + // Parameters: + // requestUri: + // A System.Uri containing the URI of the requested resource. + // + // Returns: + // A System.Net.WebRequest descendant for the specified URI scheme. + // + // Exceptions: + // System.NotSupportedException: + // The request scheme specified in requestUri is not registered. + // + // System.ArgumentNullException: + // requestUri is null. + // + // System.Security.SecurityException: + // The caller does not have permission to connect to the requested URI or a + // URI that the request is redirected to. + public static WebRequest Create(Uri requestUri) + { + Contract.Requires(requestUri != null); + Contract.Ensures(Contract.Result() != null); + + return default(WebRequest); + } + // + // Summary: + // Initializes a new System.Net.WebRequest instance for the specified URI scheme. + // + // Parameters: + // requestUri: + // A System.Uri containing the URI of the requested resource. + // + // Returns: + // A System.Net.WebRequest descendant for the specified URI scheme. + // + // Exceptions: + // System.NotSupportedException: + // The request scheme specified in requestUri is not registered. + // + // System.ArgumentNullException: + // requestUri is null. + // + // System.Security.SecurityException: + // The caller does not have permission to connect to the requested URI or a + // URI that the request is redirected to. + public static WebRequest CreateDefault(Uri requestUri) + { + Contract.Requires(requestUri != null); + Contract.Ensures(Contract.Result() != null); + + return default(WebRequest); + } + // + // Summary: + // When overridden in a descendant class, returns a System.IO.Stream for writing + // data to the Internet resource. + // + // Parameters: + // asyncResult: + // An System.IAsyncResult that references a pending request for a stream. + // + // Returns: + // A System.IO.Stream to write data to. + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to access the method, when the method is not overridden + // in a descendant class. + public virtual Stream EndGetRequestStream(IAsyncResult asyncResult) + { + Contract.Requires(asyncResult != null); + Contract.Ensures(Contract.Result() != null); + return null; + } + + // + // Summary: + // When overridden in a descendant class, returns a System.Net.WebResponse. + // + // Parameters: + // asyncResult: + // An System.IAsyncResult that references a pending request for a response. + // + // Returns: + // A System.Net.WebResponse that contains a response to the Internet request. + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to access the method, when the method is not overridden + // in a descendant class. + public virtual WebResponse EndGetResponse(IAsyncResult asyncResult) + { + Contract.Requires(asyncResult != null); + Contract.Ensures(Contract.Result() != null); + return null; + } + + // + // Summary: + // Populates a System.Runtime.Serialization.SerializationInfo with the data + // needed to serialize the target object. + // + // Parameters: + // serializationInfo: + // The System.Runtime.Serialization.SerializationInfo to populate with data. + // + // streamingContext: + // A System.Runtime.Serialization.StreamingContext that specifies the destination + // for this serialization. + //protected virtual void GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext); + // + // Summary: + // When overridden in a descendant class, returns a System.IO.Stream for writing + // data to the Internet resource. + // + // Returns: + // A System.IO.Stream for writing data to the Internet resource. + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to access the method, when the method is not overridden + // in a descendant class. + public virtual Stream GetRequestStream() + { + Contract.Ensures(Contract.Result() != null); + return null; + } + + // + // Summary: + // When overridden in a descendant class, returns a response to an Internet + // request. + // + // Returns: + // A System.Net.WebResponse containing the response to the Internet request. + // + // Exceptions: + // System.NotImplementedException: + // Any attempt is made to access the method, when the method is not overridden + // in a descendant class. + public virtual WebResponse GetResponse() + { + Contract.Ensures(Contract.Result() != null); + return null; + } + + // + // Summary: + // Returns a proxy configured with the Internet Explorer settings of the currently + // impersonated user. + // + // Returns: + // An System.Net.IWebProxy used by every call to instances of System.Net.WebRequest. + public static IWebProxy GetSystemWebProxy() + { + Contract.Ensures(Contract.Result() != null); + + return default(IWebProxy); + } + + // + // Summary: + // Registers a System.Net.WebRequest descendant for the specified URI. + // + // Parameters: + // prefix: + // The complete URI or URI prefix that the System.Net.WebRequest descendant + // services. + // + // creator: + // The create method that the System.Net.WebRequest calls to create the System.Net.WebRequest + // descendant. + // + // Returns: + // true if registration is successful; otherwise, false. + // + // Exceptions: + // System.ArgumentNullException: + // prefix is null-or- creator is null. + //public static bool RegisterPrefix(string prefix, IWebRequestCreate creator); } - // - // Summary: - // Registers a System.Net.WebRequest descendant for the specified URI. - // - // Parameters: - // prefix: - // The complete URI or URI prefix that the System.Net.WebRequest descendant - // services. - // - // creator: - // The create method that the System.Net.WebRequest calls to create the System.Net.WebRequest - // descendant. - // - // Returns: - // true if registration is successful; otherwise, false. - // - // Exceptions: - // System.ArgumentNullException: - // prefix is null-or- creator is null. - //public static bool RegisterPrefix(string prefix, IWebRequestCreate creator); - } } #endif \ No newline at end of file diff --git a/Microsoft.Research/Contracts/SystemRequiresVerificationTests/SystemRequiresTest.cs b/Microsoft.Research/Contracts/SystemRequiresVerificationTests/SystemRequiresTest.cs new file mode 100644 index 00000000..ada9d6e0 --- /dev/null +++ b/Microsoft.Research/Contracts/SystemRequiresVerificationTests/SystemRequiresTest.cs @@ -0,0 +1,107 @@ +namespace SystemRequiresVerificationTests +{ + using System; + using System.Windows; + + using Microsoft.VisualStudio.TestTools.UnitTesting; + + [TestClass] + public class SystemRequiresTest + { + [TestMethod] + public void Rect_ConstructorAcceptsNaN_Test() + { + var r1 = new Rect(0, 0, double.NaN, double.NaN); + Assert.AreEqual(double.NaN, r1.Width); + } + + [TestMethod] + public void Rect_ConstructorAcceptsPositiveInfinity_Test() + { + var r1 = new Rect(0, 0, double.PositiveInfinity, double.PositiveInfinity); + Assert.AreEqual(double.PositiveInfinity, r1.Width); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void Rect_ConstructorFailsNegativeInfinity_Test() + { + var r1 = new Rect(0, 0, double.NegativeInfinity, double.NegativeInfinity); + } + + [TestMethod] + public void Rect_AssignmentAcceptsNaN_Test() + { + var r1 = new Rect(); + + r1.Width = double.NaN; + Assert.AreEqual(double.NaN, r1.Width); + } + + [TestMethod] + public void Rect_AssignmentAcceptsPositiveInfinity_Test() + { + var r1 = new Rect(); + + r1.Width = double.PositiveInfinity; + Assert.AreEqual(double.PositiveInfinity, r1.Width); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void Rect_AssignmentFailsNegativeInfinity_Test() + { + var r1 = new Rect(); + + r1.Width = double.NegativeInfinity; + } + + [TestMethod] + public void Size_ConstructorAcceptsNaN_Test() + { + var r1 = new Size(double.NaN, double.NaN); + Assert.AreEqual(double.NaN, r1.Width); + } + + [TestMethod] + public void Size_ConstructorAcceptsPositiveInfinity_Test() + { + var r1 = new Size(double.PositiveInfinity, double.PositiveInfinity); + Assert.AreEqual(double.PositiveInfinity, r1.Width); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void Size_ConstructorFailsNegativeInfinity_Test() + { + var r1 = new Size(double.NegativeInfinity, double.NegativeInfinity); + } + + [TestMethod] + public void Size_AssignmentAcceptsNaN_Test() + { + var r1 = new Size(); + + r1.Width = double.NaN; + Assert.AreEqual(double.NaN, r1.Width); + } + + [TestMethod] + public void Size_AssignmentAcceptsPositiveInfinity_Test() + { + var r1 = new Size(); + + r1.Width = double.PositiveInfinity; + Assert.AreEqual(double.PositiveInfinity, r1.Width); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void Size_AssignmentFailsNegativeInfinity_Test() + { + var r1 = new Size(); + + r1.Width = double.NegativeInfinity; + } + } +} diff --git a/Microsoft.Research/Contracts/SystemRequiresVerificationTests/SystemRequiresVerificationTests.csproj b/Microsoft.Research/Contracts/SystemRequiresVerificationTests/SystemRequiresVerificationTests.csproj new file mode 100644 index 00000000..d6b17885 --- /dev/null +++ b/Microsoft.Research/Contracts/SystemRequiresVerificationTests/SystemRequiresVerificationTests.csproj @@ -0,0 +1,89 @@ + + + + Debug + AnyCPU + {34BEDC68-AC8A-44F9-BF92-01ECAE6A28CC} + Library + Properties + SystemRequiresVerificationTests + SystemRequiresVerificationTests + v4.0 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages + False + UnitTest + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + 3.5 + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + False + + + False + + + False + + + + + + + + \ No newline at end of file diff --git a/Microsoft.Research/Contracts/WindowsBase/System.ComponentModel.GroupDescription.cs b/Microsoft.Research/Contracts/WindowsBase/System.ComponentModel.GroupDescription.cs new file mode 100644 index 00000000..bafd89cf --- /dev/null +++ b/Microsoft.Research/Contracts/WindowsBase/System.ComponentModel.GroupDescription.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections.ObjectModel; +using System.Diagnostics.Contracts; +using System.Globalization; + +namespace System.ComponentModel +{ +#if !SILVERLIGHT && !NETFRAMEWORK_3_5 // => types defined in System.Windows! + // Summary: + // Provides an abstract base class for types that describe how to divide the + // items in a collection into groups. + public abstract class GroupDescription : INotifyPropertyChanged + { + // Summary: + // Initializes a new instance of the System.ComponentModel.GroupDescription + // class. + // protected GroupDescription(); + + // Summary: + // Gets the collection of names that are used to initialize a group with a set + // of subgroups with the given names. + // + // Returns: + // The collection of names that are used to initialize a group with a set of + // subgroups with the given names. + public ObservableCollection GroupNames + { + get + { + Contract.Ensures(Contract.Result>() != null); + return null; + } + } + + // Summary: + // Occurs when a property value changes. + // protected virtual event PropertyChangedEventHandler PropertyChanged; + + // Summary: + // Returns the group name(s) for the given item. + // + // Parameters: + // item: + // The item to return group names for. + // + // level: + // The level of grouping. + // + // culture: + // The System.Globalization.CultureInfo to supply to the converter. + // + // Returns: + // The group name(s) for the given item. + public abstract object GroupNameFromItem(object item, int level, CultureInfo culture); + // + // Summary: + // Returns a value that indicates whether the group name and the item name match + // such that the item belongs to the group. + // + // Parameters: + // groupName: + // The name of the group to check. + // + // itemName: + // The name of the item to check. + // + // Returns: + // true if the names match and the item belongs to the group; otherwise, false. + public virtual bool NamesMatch(object groupName, object itemName) + { + return false; + } + // + // Summary: + // Raises the System.ComponentModel.GroupDescription.PropertyChanged event. + // + // Parameters: + // e: + // Arguments of the event being raised. + //protected virtual void OnPropertyChanged(PropertyChangedEventArgs e); + + // + // Summary: + // Returns whether serialization processes should serialize the effective value + // of the System.ComponentModel.GroupDescription.GroupNames property on instances + // of this class. + // + // Returns: + // Returns true if the System.ComponentModel.GroupDescription.GroupNames property + // value should be serialized; otherwise, false. + // public bool ShouldSerializeGroupNames(); + + event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged + { + add { throw new NotImplementedException(); } + remove { throw new NotImplementedException(); } + } + } +#endif +} diff --git a/Microsoft.Research/Contracts/WindowsBase/System.ComponentModel.ICollectionView.cs b/Microsoft.Research/Contracts/WindowsBase/System.ComponentModel.ICollectionView.cs new file mode 100644 index 00000000..0dc1e9a5 --- /dev/null +++ b/Microsoft.Research/Contracts/WindowsBase/System.ComponentModel.ICollectionView.cs @@ -0,0 +1,504 @@ +using System; +using System.Collections; +using System.Collections.ObjectModel; +using System.Collections.Specialized; +using System.Diagnostics.Contracts; +using System.Globalization; + +namespace System.ComponentModel +{ +#if !SILVERLIGHT && !NETFRAMEWORK_3_5 // => types defined in System.Windows! + + // Summary: + // Provides information for the System.ComponentModel.ICollectionView.CurrentChanging + // event. + public class CurrentChangingEventArgs : EventArgs + { + // Summary: + // Initializes a new instance of the System.ComponentModel.CurrentChangingEventArgs + // class. + public CurrentChangingEventArgs() { } + // + // Summary: + // Initializes a new instance of the System.ComponentModel.CurrentChangingEventArgs + // class with the specified isCancelable value. + // + // Parameters: + // isCancelable: + // A value that indicates whether the event is cancelable. + public CurrentChangingEventArgs(bool isCancelable) { } + + // Summary: + // Gets or sets a value that indicates whether to cancel the event. + // + // Returns: + // true if the event is to be canceled; otherwise, false. The default value + // is false. + // + // Exceptions: + // System.InvalidOperationException: + // If the value of System.ComponentModel.CurrentChangingEventArgs.IsCancelable + // is false. + public bool Cancel + { + get + { + return false; + } + set + { + + } + } + // + // Summary: + // Gets a value that indicates whether the event is cancelable. + // + // Returns: + // true if the event is cancelable, otherwise, false. The default value is true. + public bool IsCancelable + { + get + { + return false; + } + } + } + + // Summary: + // Represents the method that handles the System.Windows.Data.CollectionView.CurrentChanging + // event. + // + // Parameters: + // sender: + // The object that raised the event. + // + // e: + // Information about the event. + public delegate void CurrentChangingEventHandler(object sender, CurrentChangingEventArgs e); + + // Summary: + // Enables collections to have the functionalities of current record management, + // custom sorting, filtering, and grouping. + [ContractClass(typeof (ICollectionViewContract))] + public interface ICollectionView : IEnumerable, INotifyCollectionChanged + { + // Summary: + // Gets a value that indicates whether this view supports filtering via the + // System.ComponentModel.ICollectionView.Filter property. + // + // Returns: + // true if this view support filtering; otherwise, false. + bool CanFilter { get; } + // + // Summary: + // Gets a value that indicates whether this view supports grouping via the System.ComponentModel.ICollectionView.GroupDescriptions + // property. + // + // Returns: + // true if this view supports grouping; otherwise, false. + bool CanGroup { get; } + // + // Summary: + // Gets a value that indicates whether this view supports sorting via the System.ComponentModel.ICollectionView.SortDescriptions + // property. + // + // Returns: + // true if this view supports sorting; otherwise, false. + bool CanSort { get; } + // + // Summary: + // Gets or sets the cultural info for any operations of the view that may differ + // by culture, such as sorting. + // + // Returns: + // The culture to use during sorting. + CultureInfo Culture { get; set; } + // + // Summary: + // Gets the current item in the view. + // + // Returns: + // The current item of the view or null if there is no current item. + object CurrentItem { get; } + // + // Summary: + // Gets the ordinal position of the System.ComponentModel.ICollectionView.CurrentItem + // within the view. + // + // Returns: + // The ordinal position of the System.ComponentModel.ICollectionView.CurrentItem + // within the view. + int CurrentPosition { get; } + // + // Summary: + // Gets or sets a callback used to determine if an item is suitable for inclusion + // in the view. + // + // Returns: + // A method used to determine if an item is suitable for inclusion in the view. + Predicate Filter { get; set; } + // + // Summary: + // Gets a collection of System.ComponentModel.GroupDescription objects that + // describe how the items in the collection are grouped in the view. + // + // Returns: + // A collection of System.ComponentModel.GroupDescription objects that describe + // how the items in the collection are grouped in the view. + ObservableCollection GroupDescriptions { get; } + // + // Summary: + // Gets the top-level groups. + // + // Returns: + // A read-only collection of the top-level groups or null if there are no groups. + ReadOnlyObservableCollection Groups { get; } + // + // Summary: + // Gets a value that indicates whether the System.ComponentModel.ICollectionView.CurrentItem + // of the view is beyond the end of the collection. + // + // Returns: + // Returns true if the System.ComponentModel.ICollectionView.CurrentItem of + // the view is beyond the end of the collection; otherwise, false. + bool IsCurrentAfterLast { get; } + // + // Summary: + // Gets a value that indicates whether the System.ComponentModel.ICollectionView.CurrentItem + // of the view is beyond the beginning of the collection. + // + // Returns: + // Returns true if the System.ComponentModel.ICollectionView.CurrentItem of + // the view is beyond the beginning of the collection; otherwise, false. + bool IsCurrentBeforeFirst { get; } + // + // Summary: + // Returns a value that indicates whether the resulting view is empty. + // + // Returns: + // true if the resulting view is empty; otherwise, false. + bool IsEmpty { get; } + // + // Summary: + // Gets a collection of System.ComponentModel.SortDescription objects that describe + // how the items in the collection are sorted in the view. + // + // Returns: + // A collection of System.ComponentModel.SortDescription objects that describe + // how the items in the collection are sorted in the view. + SortDescriptionCollection SortDescriptions { get; } + // + // Summary: + // Returns the underlying collection. + // + // Returns: + // An System.Collections.IEnumerable object that is the underlying collection. + IEnumerable SourceCollection { get; } + + // Summary: + // When implementing this interface, raise this event after the current item + // has been changed. + event EventHandler CurrentChanged; + // + // Summary: + // When implementing this interface, raise this event before changing the current + // item. Event handler can cancel this event. + event CurrentChangingEventHandler CurrentChanging; + + // Summary: + // Returns a value that indicates whether a given item belongs to this collection + // view. + // + // Parameters: + // item: + // The object to check. + // + // Returns: + // true if the item belongs to this collection view; otherwise, false. + bool Contains(object item); + // + // Summary: + // Enters a defer cycle that you can use to merge changes to the view and delay + // automatic refresh. + // + // Returns: + // An System.IDisposable object that you can use to dispose of the calling object. + IDisposable DeferRefresh(); + // + // Summary: + // Sets the specified item to be the System.ComponentModel.ICollectionView.CurrentItem + // in the view. + // + // Parameters: + // item: + // The item to set as the System.ComponentModel.ICollectionView.CurrentItem. + // + // Returns: + // true if the resulting System.ComponentModel.ICollectionView.CurrentItem is + // within the view; otherwise, false. + bool MoveCurrentTo(object item); + // + // Summary: + // Sets the first item in the view as the System.ComponentModel.ICollectionView.CurrentItem. + // + // Returns: + // true if the resulting System.ComponentModel.ICollectionView.CurrentItem is + // an item within the view; otherwise, false. + bool MoveCurrentToFirst(); + // + // Summary: + // Sets the last item in the view as the System.ComponentModel.ICollectionView.CurrentItem. + // + // Returns: + // true if the resulting System.ComponentModel.ICollectionView.CurrentItem is + // an item within the view; otherwise, false. + bool MoveCurrentToLast(); + // + // Summary: + // Sets the item after the System.ComponentModel.ICollectionView.CurrentItem + // in the view as the System.ComponentModel.ICollectionView.CurrentItem. + // + // Returns: + // true if the resulting System.ComponentModel.ICollectionView.CurrentItem is + // an item within the view; otherwise, false. + bool MoveCurrentToNext(); + // + // Summary: + // Sets the item at the specified index to be the System.ComponentModel.ICollectionView.CurrentItem + // in the view. + // + // Parameters: + // position: + // The index to set the System.ComponentModel.ICollectionView.CurrentItem to. + // + // Returns: + // true if the resulting System.ComponentModel.ICollectionView.CurrentItem is + // an item within the view; otherwise, false. + bool MoveCurrentToPosition(int position); + // + // Summary: + // Sets the item before the System.ComponentModel.ICollectionView.CurrentItem + // in the view as the System.ComponentModel.ICollectionView.CurrentItem. + // + // Returns: + // true if the resulting System.ComponentModel.ICollectionView.CurrentItem is + // an item within the view; otherwise, false. + bool MoveCurrentToPrevious(); + // + // Summary: + // Recreates the view. + void Refresh(); + } + + [ContractClassFor(typeof (ICollectionView))] + abstract class ICollectionViewContract : ICollectionView + { + event NotifyCollectionChangedEventHandler INotifyCollectionChanged.CollectionChanged + { + add + { + } + remove + { + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + throw new NotImplementedException(); + } + + bool ICollectionView.CanFilter + { + get + { + throw new NotImplementedException(); + } + } + + bool ICollectionView.CanGroup + { + get + { + throw new NotImplementedException(); + } + } + + bool ICollectionView.CanSort + { + get + { + throw new NotImplementedException(); + } + } + + CultureInfo ICollectionView.Culture + { + get + { + throw new NotImplementedException(); + } + set + { + throw new NotImplementedException(); + } + } + + object ICollectionView.CurrentItem + { + get + { + throw new NotImplementedException(); + } + } + + int ICollectionView.CurrentPosition + { + get + { + throw new NotImplementedException(); + } + } + + Predicate ICollectionView.Filter + { + get + { + throw new NotImplementedException(); + } + set + { + throw new NotImplementedException(); + } + } + + ObservableCollection ICollectionView.GroupDescriptions + { + get + { + Contract.Ensures(Contract.Result>() != null); + throw new NotImplementedException(); + } + } + + ReadOnlyObservableCollection ICollectionView.Groups + { + get + { + throw new NotImplementedException(); + } + } + + bool ICollectionView.IsCurrentAfterLast + { + get + { + throw new NotImplementedException(); + } + } + + bool ICollectionView.IsCurrentBeforeFirst + { + get + { + throw new NotImplementedException(); + } + } + + bool ICollectionView.IsEmpty + { + get + { + throw new NotImplementedException(); + } + } + + SortDescriptionCollection ICollectionView.SortDescriptions + { + get + { + Contract.Ensures(Contract.Result() != null); + throw new NotImplementedException(); + } + } + + IEnumerable ICollectionView.SourceCollection + { + get + { + throw new NotImplementedException(); + } + } + + event EventHandler ICollectionView.CurrentChanged + { + add + { + throw new NotImplementedException(); + } + remove + { + throw new NotImplementedException(); + } + } + + event CurrentChangingEventHandler ICollectionView.CurrentChanging + { + add + { + throw new NotImplementedException(); + } + remove + { + throw new NotImplementedException(); + } + } + + bool ICollectionView.Contains(object item) + { + throw new NotImplementedException(); + } + + IDisposable ICollectionView.DeferRefresh() + { + throw new NotImplementedException(); + } + + bool ICollectionView.MoveCurrentTo(object item) + { + throw new NotImplementedException(); + } + + bool ICollectionView.MoveCurrentToFirst() + { + throw new NotImplementedException(); + } + + bool ICollectionView.MoveCurrentToLast() + { + throw new NotImplementedException(); + } + + bool ICollectionView.MoveCurrentToNext() + { + throw new NotImplementedException(); + } + + bool ICollectionView.MoveCurrentToPosition(int position) + { + throw new NotImplementedException(); + } + + bool ICollectionView.MoveCurrentToPrevious() + { + throw new NotImplementedException(); + } + + void ICollectionView.Refresh() + { + throw new NotImplementedException(); + } + } +#endif +} diff --git a/Microsoft.Research/Contracts/WindowsBase/System.ComponentModel.SortDescriptionCollection.cs b/Microsoft.Research/Contracts/WindowsBase/System.ComponentModel.SortDescriptionCollection.cs new file mode 100644 index 00000000..25a5c250 --- /dev/null +++ b/Microsoft.Research/Contracts/WindowsBase/System.ComponentModel.SortDescriptionCollection.cs @@ -0,0 +1,177 @@ +using System; +using System.Collections.ObjectModel; +using System.Collections.Specialized; +using System.Diagnostics.Contracts; +using System.Runtime; + +namespace System.ComponentModel +{ +#if !SILVERLIGHT && !NETFRAMEWORK_3_5 // => types defined in System.Windows! + + // Summary: + // Defines the direction and the property name to be used as the criteria for + // sorting a collection. + public struct SortDescription + { + // + // Summary: + // Initializes a new instance of the System.ComponentModel.SortDescription structure. + // + // Parameters: + // propertyName: + // The name of the property to sort the list by. + // + // direction: + // The sort order. + // + // Exceptions: + // System.ArgumentNullException: + // The propertyName parameter cannot be null. + // + // System.ArgumentException: + // The propertyName parameter cannot be empty + // + // System.ComponentModel.InvalidEnumArgumentException: + // The direction parameter does not specify a valid value. + public SortDescription(string propertyName, ListSortDirection direction) + { + Contract.Requires(!String.IsNullOrEmpty(propertyName)); + } + + // Summary: + // Compares two System.ComponentModel.SortDescription objects for value inequality. + // + // Parameters: + // sd1: + // The first instance to compare. + // + // sd2: + // The second instance to compare. + // + // Returns: + // true if the values are not equal; otherwise, false. + //public static bool operator !=(SortDescription sd1, SortDescription sd2); + // + // Summary: + // Compares two System.ComponentModel.SortDescription objects for value equality. + // + // Parameters: + // sd1: + // The first instance to compare. + // + // sd2: + // The second instance to compare. + // + // Returns: + // true if the two objects are equal; otherwise, false. + //public static bool operator ==(SortDescription sd1, SortDescription sd2); + + // Summary: + // Gets or sets a value that indicates whether to sort in ascending or descending + // order. + // + // Returns: + // A System.ComponentModel.ListSortDirection value to indicate whether to sort + // in ascending or descending order. + //public ListSortDirection Direction { get; set; } + // + // Summary: + // Gets a value that indicates whether this object is in an immutable state. + // + // Returns: + // true if this object is in use; otherwise, false. + //public bool IsSealed { get; } + + // + // Summary: + // Gets or sets the property name being used as the sorting criteria. + // + // Returns: + // The default value is null. + //public string PropertyName { get; set; } + + // Summary: + // Compares the specified instance and the current instance of System.ComponentModel.SortDescription + // for value equality. + // + // Parameters: + // obj: + // The System.ComponentModel.SortDescription instance to compare. + // + // Returns: + // true if obj and this instance of System.ComponentModel.SortDescription have + // the same values. + //public override bool Equals(object obj); + // + // Summary: + // Returns the hash code for this instance of System.ComponentModel.SortDescription. + // + // Returns: + // The hash code for this instance of System.ComponentModel.SortDescription. + //public override int GetHashCode(); + } + + + // Summary: + // Represents a collection of System.ComponentModel.SortDescription objects. + public class SortDescriptionCollection : Collection, INotifyCollectionChanged + { + // Summary: + // Gets an empty and non-modifiable instance of System.ComponentModel.SortDescriptionCollection. + public static readonly SortDescriptionCollection Empty; + + // Summary: + // Initializes a new instance of the System.ComponentModel.SortDescriptionCollection + // class. + public SortDescriptionCollection() { } + + // Summary: + // Occurs when an item is added or removed. + // protected event NotifyCollectionChangedEventHandler CollectionChanged; + + event NotifyCollectionChangedEventHandler INotifyCollectionChanged.CollectionChanged + { + add + { + } + remove + { + } + } + + // Summary: + // Removes all items from the collection. + //protected override void ClearItems(); + // + // Summary: + // Inserts an item into the collection at the specified index. + // + // Parameters: + // index: + // The zero-based index where the item is inserted. + // + // item: + // The object to insert. + //protected override void InsertItem(int index, SortDescription item); + // + // Summary: + // Removes the item at the specified index in the collection. + // + // Parameters: + // index: + // The zero-based index of the element to remove. + //protected override void RemoveItem(int index); + // + // Summary: + // Replaces the element at the specified index. + // + // Parameters: + // index: + // The zero-based index of the element to replace. + // + // item: + // The new value for the element at the specified index. + //protected override void SetItem(int index, SortDescription item); + } +#endif +} diff --git a/Microsoft.Research/Contracts/WindowsBase/System.Windows.DependencyObject.cs b/Microsoft.Research/Contracts/WindowsBase/System.Windows.DependencyObject.cs index d21046dd..a9b4e8d1 100644 --- a/Microsoft.Research/Contracts/WindowsBase/System.Windows.DependencyObject.cs +++ b/Microsoft.Research/Contracts/WindowsBase/System.Windows.DependencyObject.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System; @@ -109,7 +109,7 @@ public void CoerceValue(DependencyProperty dp) public object GetValue(DependencyProperty dp) { Contract.Requires(dp != null); - Contract.Ensures(Contract.Result() != null); + // May return null if property type is not a value type! return null; } diff --git a/Microsoft.Research/Contracts/WindowsBase/System.Windows.DependencyProperty.cs b/Microsoft.Research/Contracts/WindowsBase/System.Windows.DependencyProperty.cs index fd16fe25..577685c2 100644 --- a/Microsoft.Research/Contracts/WindowsBase/System.Windows.DependencyProperty.cs +++ b/Microsoft.Research/Contracts/WindowsBase/System.Windows.DependencyProperty.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #region Assembly WindowsBase.dll, v4.0.0.0 @@ -70,14 +70,28 @@ private DependencyProperty() { } // Returns: // The type of the object that registered the property or added itself as owner // of the property. - extern public Type OwnerType { get; } + public Type OwnerType + { + get + { + Contract.Ensures(Contract.Result() != null); + return null; + } + } // // Summary: // Gets the type that the dependency property uses for its value. // // Returns: // The System.Type of the property value. - extern public Type PropertyType { get; } + public Type PropertyType + { + get + { + Contract.Ensures(Contract.Result() != null); + return null; + } + } // // Summary: // Gets a value that indicates whether the dependency property identified by diff --git a/Microsoft.Research/Contracts/WindowsBase/System.Windows.Rect.cs b/Microsoft.Research/Contracts/WindowsBase/System.Windows.Rect.cs index 8d1b6a2c..a30c3a01 100644 --- a/Microsoft.Research/Contracts/WindowsBase/System.Windows.Rect.cs +++ b/Microsoft.Research/Contracts/WindowsBase/System.Windows.Rect.cs @@ -1,21 +1,34 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System; using System.ComponentModel; using System.Diagnostics.Contracts; + +// 2015-03-36: tom-englert +// Temporarily disabled checks for Contract.Requires(!this.IsEmpty); +// => This requirement is true, but it's impossible to proof with acceptable effort. +// Even simple code like +// +// var r = new Rect(); +// r.Widht = 10.0; +// +// will create a warning "CodeContracts: requires unproven: !this.IsEmpty. Are you making some assumption on get_Width that the static checker is unaware of?" +// As soon as the checker can infer the proper constraints, this can be enabled again. + + namespace System.Windows { // Summary: @@ -93,8 +106,8 @@ public struct Rect // : IFormattable // The height of the rectangle. public Rect(double x, double y, double width, double height) { - Contract.Requires(width >= 0.0); - Contract.Requires(height >= 0.0); + Contract.Requires((width >= 0.0) || double.IsNaN(width) || double.IsPositiveInfinity(width)); + Contract.Requires((height >= 0.0) || double.IsNaN(height) || double.IsPositiveInfinity(height)); Contract.Ensures(Contract.ValueAtReturn(out this).X == x); Contract.Ensures(Contract.ValueAtReturn(out this).Y == y); @@ -185,7 +198,7 @@ public double Bottom // The empty rectangle, which has System.Windows.Rect.X and System.Windows.Rect.Y // property values of System.Double.PositiveInfinity, and has System.Windows.Rect.Width // and System.Windows.Rect.Height property values of System.Double.NegativeInfinity. - public static Rect Empty + public static Rect Empty { get { @@ -197,7 +210,8 @@ public static Rect Empty return default(Rect); } } - // + + // // Summary: // Gets or sets the height of the rectangle. // @@ -208,19 +222,19 @@ public double Height { get { - Contract.Ensures(this.IsEmpty || Contract.Result() >= 0.0 || Double.IsNaN(Contract.Result())); + Contract.Ensures(this.IsEmpty || Contract.Result() >= 0.0 || Double.IsNaN(Contract.Result()) || Double.IsPositiveInfinity(Contract.Result())); return default(double); } set { - Contract.Requires(!this.IsEmpty); - Contract.Requires(value >= 0.0 || Double.IsNaN(value)); + // Contract.Requires(!this.IsEmpty); => Is true, but impossible to proof with acceptable effort. + Contract.Requires((value >= 0.0) || Double.IsNaN(value) || Double.IsPositiveInfinity(value)); - Contract.Ensures(this.Height == value || Double.IsNaN(value)); + Contract.Ensures(this.Height == value); } } - + // // Summary: // Gets a value that indicates whether the rectangle is the System.Windows.Rect.Empty @@ -229,7 +243,7 @@ public double Height // Returns: // true if the rectangle is the System.Windows.Rect.Empty rectangle; otherwise, // false. - public bool IsEmpty + public bool IsEmpty { get { @@ -333,16 +347,16 @@ public double Width { get { - Contract.Ensures(this.IsEmpty || Contract.Result() >= 0.0 || Double.IsNaN(Contract.Result())); + Contract.Ensures(this.IsEmpty || Contract.Result() >= 0.0 || Double.IsNaN(Contract.Result()) || Double.IsPositiveInfinity(Contract.Result())); return default(double); } set { - Contract.Requires(!this.IsEmpty); - Contract.Requires(value >= 0.0 || Double.IsNaN(value)); + // Contract.Requires(!this.IsEmpty); => Is true, but impossible to proof with acceptable effort. + Contract.Requires(value >= 0.0 || Double.IsNaN(value) || Double.IsPositiveInfinity(value)); - Contract.Ensures(this.Width == value || Double.IsNaN(value)); + Contract.Ensures(this.Width == value); } } // @@ -361,9 +375,9 @@ public double X } set { - Contract.Requires(!this.IsEmpty); + // Contract.Requires(!this.IsEmpty); => Is true, but impossible to proof with acceptable effort. - Contract.Ensures(this.X == value || Double.IsNaN(value)); + Contract.Ensures(this.X == value); } } // @@ -382,9 +396,9 @@ public double Y } set { - Contract.Requires(!this.IsEmpty); + // Contract.Requires(!this.IsEmpty); => Is true, but impossible to proof with acceptable effort. - Contract.Ensures(this.Y == value || Double.IsNaN(value)); + Contract.Ensures(this.Y == value); } } // Summary: @@ -484,9 +498,9 @@ public double Y // the rectangle's System.Windows.Rect.Top and System.Windows.Rect.Bottom properties. public void Inflate(Size size) { - Contract.Requires(!this.IsEmpty); - + // Contract.Requires(!this.IsEmpty); => Is true, but impossible to proof with acceptable effort.Contract.Requires(!this.IsEmpty); } + // // Summary: // Expands or shrinks the rectangle by using the specified width and height @@ -500,9 +514,9 @@ public void Inflate(Size size) // The amount by which to expand or shrink the top and bottom sides of the rectangle. public void Inflate(double width, double height) { - Contract.Requires(!this.IsEmpty); - + // Contract.Requires(!this.IsEmpty); => Is true, but impossible to proof with acceptable effort. } + // // Summary: // Returns the rectangle that results from expanding the specified rectangle @@ -523,10 +537,11 @@ public void Inflate(double width, double height) // The resulting rectangle. public static Rect Inflate(Rect rect, Size size) { - Contract.Requires(!rect.IsEmpty); + // Contract.Requires(!this.IsEmpty); => Is true, but impossible to proof with acceptable effort. return default(Rect); } + // // Summary: // Creates a rectangle that results from expanding or shrinking the specified @@ -546,10 +561,11 @@ public static Rect Inflate(Rect rect, Size size) // The resulting rectangle. public static Rect Inflate(Rect rect, double width, double height) { - Contract.Requires(!rect.IsEmpty); + // Contract.Requires(!this.IsEmpty); => Is true, but impossible to proof with acceptable effort. return default(Rect); } + // // Summary: // Finds the intersection of the current rectangle and the specified rectangle, @@ -599,9 +615,9 @@ public static Rect Inflate(Rect rect, double width, double height) // This method is called on the System.Windows.Rect.Empty rectangle. public void Offset(Vector offsetVector) { - Contract.Requires(!this.IsEmpty); - + // Contract.Requires(!this.IsEmpty); => Is true, but impossible to proof with acceptable effort. } + // // Summary: // Moves the rectangle by the specified horizontal and vertical amounts. @@ -618,9 +634,9 @@ public void Offset(Vector offsetVector) // This method is called on the System.Windows.Rect.Empty rectangle. public void Offset(double offsetX, double offsetY) { - Contract.Requires(!this.IsEmpty); - + // Contract.Requires(!this.IsEmpty); => Is true, but impossible to proof with acceptable effort. } + // // Summary: // Returns a rectangle that is offset from the specified rectangle by using @@ -641,10 +657,11 @@ public void Offset(double offsetX, double offsetY) // rect is System.Windows.Rect.Empty. public static Rect Offset(Rect rect, Vector offsetVector) { - Contract.Requires(!rect.IsEmpty); + // Contract.Requires(!this.IsEmpty); => Is true, but impossible to proof with acceptable effort. return default(Rect); } + // // Summary: // Returns a rectangle that is offset from the specified rectangle by using @@ -668,10 +685,11 @@ public static Rect Offset(Rect rect, Vector offsetVector) // rect is System.Windows.Rect.Empty. public static Rect Offset(Rect rect, double offsetX, double offsetY) { - Contract.Requires(!rect.IsEmpty); + // Contract.Requires(!this.IsEmpty); => Is true, but impossible to proof with acceptable effort. return default(Rect); } + // // Summary: // Creates a new rectangle from the specified string representation. diff --git a/Microsoft.Research/Contracts/WindowsBase/System.Windows.Size.cs b/Microsoft.Research/Contracts/WindowsBase/System.Windows.Size.cs index 601250a8..6dcd8ea1 100644 --- a/Microsoft.Research/Contracts/WindowsBase/System.Windows.Size.cs +++ b/Microsoft.Research/Contracts/WindowsBase/System.Windows.Size.cs @@ -39,8 +39,8 @@ public struct Size // : IFormattable // The initial height of the instance of System.Windows.Size. public Size(double width, double height) { - Contract.Requires(width >= 0.0); - Contract.Requires(height >= 0.0); + Contract.Requires((width >= 0.0) || double.IsNaN(width) || double.IsPositiveInfinity(width)); + Contract.Requires((height >= 0.0) || double.IsNaN(height) || double.IsPositiveInfinity(height)); Contract.Ensures(Contract.ValueAtReturn(out this).Width == width); Contract.Ensures(Contract.ValueAtReturn(out this).Height == height); @@ -140,7 +140,7 @@ public double Height } set { - Contract.Requires(!this.IsEmpty); + // Contract.Requires(!this.IsEmpty); => see comment in Rect Contract.Requires(value >= 0.0 || Double.IsNaN(value)); Contract.Ensures(this.Height == value || Double.IsNaN(value)); @@ -179,7 +179,7 @@ public double Width } set { - Contract.Requires(!this.IsEmpty); + // Contract.Requires(!this.IsEmpty); => see comment in Rect Contract.Requires(value >= 0.0 || Double.IsNaN(value)); Contract.Ensures(this.Width == value || Double.IsNaN(value)); diff --git a/Microsoft.Research/Contracts/WindowsBase/System.Windows.Threading.Dispatcher.cs b/Microsoft.Research/Contracts/WindowsBase/System.Windows.Threading.Dispatcher.cs index 9e435acd..3d4ab455 100644 --- a/Microsoft.Research/Contracts/WindowsBase/System.Windows.Threading.Dispatcher.cs +++ b/Microsoft.Research/Contracts/WindowsBase/System.Windows.Threading.Dispatcher.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System; @@ -21,6 +21,17 @@ namespace System.Windows.Threading { + // Summary: + // Represents an operation that has been posted to the System.Windows.Threading.Dispatcher + // queue. + public sealed class DispatcherOperation + { + } + + public enum DispatcherPriority + { + } + public sealed class Dispatcher { private Dispatcher() { } @@ -41,11 +52,36 @@ private Dispatcher() { } //extern public event DispatcherUnhandledExceptionFilterEventHandler UnhandledExceptionFilter; - // public DispatcherOperation BeginInvoke(Delegate method, params object[] args); - //public DispatcherOperation BeginInvoke(DispatcherPriority priority, Delegate method); - // public DispatcherOperation BeginInvoke(Delegate method, DispatcherPriority priority, params object[] args); - // public DispatcherOperation BeginInvoke(DispatcherPriority priority, Delegate method, object arg); - // public DispatcherOperation BeginInvoke(DispatcherPriority priority, Delegate method, object arg, params object[] args); + public DispatcherOperation BeginInvoke(Delegate method, params object[] args) + { + Contract.Ensures(Contract.Result() != null); + return null; + } + + public DispatcherOperation BeginInvoke(DispatcherPriority priority, Delegate method) + { + Contract.Ensures(Contract.Result() != null); + return null; + } + + public DispatcherOperation BeginInvoke(Delegate method, DispatcherPriority priority, params object[] args) + { + Contract.Ensures(Contract.Result() != null); + return null; + } + + public DispatcherOperation BeginInvoke(DispatcherPriority priority, Delegate method, object arg) + { + Contract.Ensures(Contract.Result() != null); + return null; + } + + public DispatcherOperation BeginInvoke(DispatcherPriority priority, Delegate method, object arg, params object[] args) + { + Contract.Ensures(Contract.Result() != null); + return null; + } + // public void BeginInvokeShutdown(DispatcherPriority priority); //extern public bool CheckAccess(); @@ -55,7 +91,7 @@ private Dispatcher() { } public static Dispatcher FromThread(Thread thread) { - Contract.Ensures(Contract.Result() != null); + // May return null! return null; } diff --git a/Microsoft.Research/Contracts/WindowsBase/System.Windows.Threading.DispatcherObject.cs b/Microsoft.Research/Contracts/WindowsBase/System.Windows.Threading.DispatcherObject.cs index dad89d37..bc250270 100644 --- a/Microsoft.Research/Contracts/WindowsBase/System.Windows.Threading.DispatcherObject.cs +++ b/Microsoft.Research/Contracts/WindowsBase/System.Windows.Threading.DispatcherObject.cs @@ -1,15 +1,15 @@ // CodeContracts -// +// // Copyright (c) Microsoft Corporation -// -// All rights reserved. -// +// +// All rights reserved. +// // MIT License -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using System; @@ -22,7 +22,26 @@ public abstract class DispatcherObject { protected DispatcherObject() { } - public Dispatcher Dispatcher { get { Contract.Ensures(Contract.Result() != null); return null; } } + // DetachFromDispatcher is e.g. called by Freezable.Freeze() + // + // This method allows certain derived classes to break the dispatcher affinity + // of our objects. + // [FriendAccessAllowed] // Built into Base, also used by Framework. + internal void DetachFromDispatcher() + { + // _dispatcher = null; + } + + public Dispatcher Dispatcher + { + get + { + // Note: a DispatcherObject that is not associated with a + // dispatcher is considered to be free-threaded. + // => maybe null! + return null; + } + } extern public bool CheckAccess(); diff --git a/Microsoft.Research/Contracts/WindowsBase/WindowsBase10.csproj b/Microsoft.Research/Contracts/WindowsBase/WindowsBase10.csproj index 0e4df119..a5974bca 100644 --- a/Microsoft.Research/Contracts/WindowsBase/WindowsBase10.csproj +++ b/Microsoft.Research/Contracts/WindowsBase/WindowsBase10.csproj @@ -189,6 +189,9 @@ false + + + diff --git a/System.Compiler/System.Compiler.xml b/System.Compiler/System.Compiler.xml index 4c4ef283..fe8ef53b 100644 --- a/System.Compiler/System.Compiler.xml +++ b/System.Compiler/System.Compiler.xml @@ -399,16 +399,16 @@ A node in an Abstract Syntax Tree. - + - Makes a shallow copy of the node. + The region in the source code that contains the concrete syntax corresponding to this node in the Abstract Syntax Tree. - A shallow copy of the node - + - The region in the source code that contains the concrete syntax corresponding to this node in the Abstract Syntax Tree. + Makes a shallow copy of the node. + A shallow copy of the node