Officially supported architectures:
-| debian-amd64 | debian-i386 | debian-armel | debian-armhf | windows-amd64 |
-|-------------------------|------------------------|-------------------------|-------------------------|---------------------------|
-| [![debian-amd64][1]][2] | [![debian-i386][3]][4] | [![debian-armel][5]][6] | [![debian-armhf][7]][8] | [![windows-amd64][9]][10] |
+| ubuntu-1404-amd64 | ubuntu-1404-i386 | debian-8-armel | debian-8-armhf | debian-8-arm64 | windows-amd64 |
+|------------------------------|-----------------------------|---------------------------|---------------------------|-----------------------------|----------------------------|
+| [![ubuntu-1404-amd64][1]][2] | [![ubuntu-1404-i386][3]][4] | [![debian-8-armel][5]][6] | [![debian-8-armhf][7]][8] | [![debian-8-arm64][9]][10] | [![windows-amd64][11]][12] |
Community supported architectures:
| centos-s390x |
|---------------------------|
-| [![centos-s390x][11]][12] |
-
-[1]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-amd64/badge/icon
-[2]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-amd64/
-[3]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-i386/badge/icon
-[4]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-i386/
-[5]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-armel/badge/icon
-[6]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-armel/
-[7]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-armhf/badge/icon
-[8]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-armhf/
-[9]: https://ci.appveyor.com/api/projects/status/1e61ebdfpbiei58v/branch/master?svg=true
-[10]: https://ci.appveyor.com/project/ajlennon/mono-817/branch/master
-[11]: https://jenkins.mono-project.com/job/z/label=centos-s390x/badge/icon
-[12]: https://jenkins.mono-project.com/job/z/label=centos-s390x
+| [![centos-s390x][13]][14] |
+
+[1]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=ubuntu-1404-amd64/badge/icon
+[2]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=ubuntu-1404-amd64
+[3]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=ubuntu-1404-i386/badge/icon
+[4]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=ubuntu-1404-i386/
+[5]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=debian-8-armel/badge/icon
+[6]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=debian-8-armel/
+[7]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=debian-8-armhf/badge/icon
+[8]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=debian-8-armhf/
+[9]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=debian-8-arm64/badge/icon
+[10]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=debian-8-arm64/
+[11]: https://ci.appveyor.com/api/projects/status/1e61ebdfpbiei58v/branch/master?svg=true
+[12]: https://ci.appveyor.com/project/ajlennon/mono-817/branch/master
+[13]: https://jenkins.mono-project.com/job/z/label=centos-s390x/badge/icon
+[14]: https://jenkins.mono-project.com/job/z/label=centos-s390x
Compilation and Installation
============================
#!/bin/sh
(cd mcs/jay; make)
+(cd msvc/scripts/; make prepare.exe; mono prepare.exe `pwd`/mcs core)
msbuild net_4_x.sln
#ifdef __GNUC__
__inline__
#endif
-LONG GC_get_max_thread_index()
+static LONG GC_get_max_thread_index()
{
LONG my_max = GC_max_thread_index;
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
$(ProjectDir)\..\..\jay\jay.exe -ct < $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Commons.Xml.Relaxng.Rnc\RncParser.jay > $(ProjectDir)\Commons.Xml.Relaxng.Rnc\RncParser.cs
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
TypeMirror t = o.Type;
- Assert.AreEqual ("MonoType", t.GetTypeObject ().Type.Name);
+ Assert.AreEqual ("RuntimeType", t.GetTypeObject ().Type.Name);
}
[Test]
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
m_primitiveTypeFlagMap[amqpType] = isReference;
}
- public void HandleOption(string opt) {
+ public bool HandleOption(string opt) {
if (opt.StartsWith("/n:")) {
m_framingSubnamespace = opt.Substring(3);
} else if (opt.StartsWith("/apiName:")) {
} else if (opt == "/c") {
m_emitComments = true;
} else {
- Console.Error.WriteLine("Unsupported command-line option: " + opt);
- Usage();
+ return false;
}
+ return true;
}
public void Usage() {
public Apigen(ArrayList args) {
while (args.Count > 0 && ((string) args[0]).StartsWith("/")) {
- HandleOption((string) args[0]);
+ if (!HandleOption((string) args[0]))
+ break;
args.RemoveAt(0);
}
if ((args.Count < 2)
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+mono RabbitMQ.Client.Apigen.exe /n:v0_9 "/apiName:AMQP_0_9" $(ProjectDir)..\..\docs\specs\amqp0-9.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-9.cs
+mono RabbitMQ.Client.Apigen.exe /n:v0_8 "/apiName:AMQP_0_8" $(ProjectDir)..\..\docs\specs\amqp0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-8.cs
+mono RabbitMQ.Client.Apigen.exe /n:v0_8qpid "/apiName:AMQP_0_8_QPID" $(ProjectDir)..\..\docs\specs\qpid-amqp.0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-qpid-0-8.cs
+
+
+
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+ RabbitMQ.Client.Apigen.exe /n:v0_9 "/apiName:AMQP_0_9" $(ProjectDir)..\..\docs\specs\amqp0-9.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-9.cs
+ RabbitMQ.Client.Apigen.exe /n:v0_8 "/apiName:AMQP_0_8" $(ProjectDir)..\..\docs\specs\amqp0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-8.cs
+ RabbitMQ.Client.Apigen.exe /n:v0_8qpid "/apiName:AMQP_0_8_QPID" $(ProjectDir)..\..\docs\specs\qpid-amqp.0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-qpid-0-8.cs
+
+
+
\r
</PostBuildEvent>\r
</PropertyGroup>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
Directory.Delete ("extract", true);
}
+
+ [Test]
+ public void ZipCreateFromEntryChangeTimestamp()
+ {
+ if (File.Exists ("foo.zip"))
+ File.Delete ("foo.zip");
+
+ var file = "foo/foo.txt";
+ using (var archive = new ZipArchive(File.Open("foo.zip", FileMode.Create),
+ ZipArchiveMode.Update))
+ {
+ archive.CreateEntryFromFile(file, file);
+ }
+
+ var date = File.GetLastWriteTimeUtc(file);
+
+ using (var archive = new ZipArchive (File.Open ("foo.zip", FileMode.Open),
+ ZipArchiveMode.Read))
+ {
+ var entry = archive.GetEntry (file);
+ Assert.IsNotNull (entry);
+ Assert.AreEqual(entry.LastWriteTime.Year, date.Year);
+ Assert.AreEqual(entry.LastWriteTime.Month, date.Month);
+ Assert.AreEqual(entry.LastWriteTime.Day, date.Day);
+ }
+ }
}
}
FileAccess.Read, FileShare.Read))
{
var zipArchiveEntry = destination.CreateEntry (entryName, compressionLevel);
+ zipArchiveEntry.LastWriteTime = File.GetLastWriteTimeUtc(sourceFileName);
using (Stream entryStream = zipArchiveEntry.Open ())
stream.CopyTo (entryStream);
{
private readonly string path;
private readonly long size;
- private readonly DateTime? lastModified;
private readonly bool closeStream;
private readonly Stream stream;
private bool isDisposed;
this.stream = stream;
this.path = path;
this.size = size;
- this.lastModified = lastModified;
+ this.LastModifiedTime = lastModified;
this.closeStream = closeStream;
}
get { return size; }
}
- public override DateTime? LastModifiedTime
- {
- get { return lastModified; }
- }
-
public override DateTime? CreatedTime
{
get { return null; }
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
File.Delete ("create.zip");
}
+ [Test]
+ public void ZipEnumerateEntriesModifiedTime()
+ {
+ File.Copy("archive.zip", "test.zip", overwrite: true);
+ var date = DateTimeOffset.Now;
+ using (var archive = new ZipArchive(File.Open("test.zip", FileMode.Open),
+ ZipArchiveMode.Update))
+ {
+ var entry = archive.GetEntry("foo.txt");
+ entry.LastWriteTime = date;
+ }
+
+ using (var archive = new ZipArchive(File.Open("test.zip", FileMode.Open),
+ ZipArchiveMode.Read))
+ {
+ var entry = archive.GetEntry("foo.txt");
+ Assert.AreEqual(entry.LastWriteTime.Year, date.Year);
+ Assert.AreEqual(entry.LastWriteTime.Month, date.Month);
+ Assert.AreEqual(entry.LastWriteTime.Day, date.Day);
+
+ }
+
+ File.Delete ("test.zip");
+ }
+
[Test]
public void ZipEnumerateEntriesReadMode()
{
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<Compile Include="System.Transactions\TransactionOptions.cs" />\r
<Compile Include="System.Transactions\TransactionPromotionException.cs" />\r
<Compile Include="System.Transactions\TransactionScope.cs" />\r
+ <Compile Include="System.Transactions\TransactionScopeAsyncFlowOption.cs" />\r
<Compile Include="System.Transactions\TransactionScopeOption.cs" />\r
<Compile Include="System.Transactions\TransactionStatus.cs" />\r </ItemGroup>\r
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
System.Transactions/TransactionOptions.cs
System.Transactions/TransactionPromotionException.cs
System.Transactions/TransactionScope.cs
+System.Transactions/TransactionScopeAsyncFlowOption.cs
System.Transactions/TransactionScopeOption.cs
System.Transactions/TransactionStatus.cs
System.Transactions/Configuration/DefaultSettingsSection.cs
bool completed;
bool isRoot;
+ bool asyncFlowEnabled;
+
public TransactionScope ()
: this (TransactionScopeOption.Required,
TransactionManager.DefaultTimeout)
{
}
+ public TransactionScope(TransactionScopeAsyncFlowOption asyncFlow)
+ : this(TransactionScopeOption.Required,
+ TransactionManager.DefaultTimeout, asyncFlow)
+ {
+ }
+
public TransactionScope (Transaction transaction)
: this (transaction, TransactionManager.DefaultTimeout)
{
TimeSpan timeout, DTCOption opt)
{
Initialize (TransactionScopeOption.Required,
- transaction, defaultOptions, opt, timeout);
+ transaction, defaultOptions, opt, timeout, TransactionScopeAsyncFlowOption.Suppress);
}
public TransactionScope (TransactionScopeOption option)
}
public TransactionScope (TransactionScopeOption option,
- TimeSpan timeout)
+ TimeSpan timeout)
+ : this (option, timeout, TransactionScopeAsyncFlowOption.Suppress)
+ {
+ }
+
+ public TransactionScope(TransactionScopeOption option, TransactionScopeAsyncFlowOption asyncFlow)
+ : this(option, TransactionManager.DefaultTimeout, asyncFlow)
+ {
+ }
+
+ public TransactionScope (TransactionScopeOption option,
+ TimeSpan timeout, TransactionScopeAsyncFlowOption asyncFlow)
{
Initialize (option, null, defaultOptions,
- DTCOption.None, timeout);
+ DTCOption.None, timeout, asyncFlow);
}
public TransactionScope (TransactionScopeOption scopeOption,
DTCOption opt)
{
Initialize (scopeOption, null, options, opt,
- TransactionManager.DefaultTimeout);
+ TransactionManager.DefaultTimeout, TransactionScopeAsyncFlowOption.Suppress);
}
void Initialize (TransactionScopeOption scopeOption,
Transaction tx, TransactionOptions options,
- DTCOption interop, TimeSpan timeout)
+ DTCOption interop, TimeSpan timeout, TransactionScopeAsyncFlowOption asyncFlow)
{
completed = false;
isRoot = false;
nested = 0;
+ asyncFlowEnabled = asyncFlow == TransactionScopeAsyncFlowOption.Enabled;
if (timeout < TimeSpan.Zero)
throw new ArgumentOutOfRangeException ("timeout");
throw new InvalidOperationException ("TransactionScope nested incorrectly");
}
- if (Transaction.CurrentInternal != transaction) {
+ if (Transaction.CurrentInternal != transaction && !asyncFlowEnabled) {
if (transaction != null)
transaction.Rollback ();
if (Transaction.CurrentInternal != null)
Transaction.CurrentInternal.Rollback ();
throw new InvalidOperationException ("Transaction.Current has changed inside of the TransactionScope");
- }
+ }
- if (Transaction.CurrentInternal == oldTransaction && oldTransaction != null)
- oldTransaction.Scope = parentScope;
+ if (asyncFlowEnabled) {
+ if (oldTransaction != null)
+ oldTransaction.Scope = parentScope;
- Transaction.CurrentInternal = oldTransaction;
+ var variedTransaction = Transaction.CurrentInternal;
- if (transaction == null)
- /* scope was not in a transaction, (Suppress) */
- return;
+ if (transaction == null && variedTransaction == null)
+ /* scope was not in a transaction, (Suppress) */
+ return;
- transaction.Scope = null;
+ variedTransaction.Scope = parentScope;
+ Transaction.CurrentInternal = oldTransaction;
- if (!IsComplete) {
- transaction.Rollback ();
- return;
- }
+ transaction.Scope = null;
- if (!isRoot)
- /* Non-root scope has completed+ended */
- return;
+ if (!IsComplete) {
+ transaction.Rollback ();
+ variedTransaction.Rollback();
+ return;
+ }
+
+ if (!isRoot)
+ /* Non-root scope has completed+ended */
+ return;
+
+ variedTransaction.CommitInternal();
+ transaction.CommitInternal();
+ } else {
+ if (Transaction.CurrentInternal == oldTransaction && oldTransaction != null)
+ oldTransaction.Scope = parentScope;
+
+ Transaction.CurrentInternal = oldTransaction;
- transaction.CommitInternal ();
+ if (transaction == null)
+ /* scope was not in a transaction, (Suppress) */
+ return;
+
+ transaction.Scope = null;
+
+ if (!IsComplete)
+ {
+ transaction.Rollback();
+ return;
+ }
+
+ if (!isRoot)
+ /* Non-root scope has completed+ended */
+ return;
+
+ transaction.CommitInternal();
+
+ }
}
--- /dev/null
+
+namespace System.Transactions
+{
+ public enum TransactionScopeAsyncFlowOption
+ {
+ Suppress,
+ Enabled
+ }
+}
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
namespace System
{
+ // Contains information about the type which is expensive to compute
+ [StructLayout (LayoutKind.Sequential)]
+ internal class MonoTypeInfo {
+ // this is the displayed form: special characters
+ // ,+*&*[]\ in the identifier portions of the names
+ // have been escaped with a leading backslash (\)
+ public string full_name;
+ public MonoCMethod default_ctor;
+ }
+
+ [StructLayout (LayoutKind.Sequential)]
partial class RuntimeType
{
+ [NonSerialized]
+ MonoTypeInfo type_info;
+
internal Object GenericCache;
- internal virtual MonoCMethod GetDefaultConstructor ()
+ internal RuntimeType (Object obj)
+ {
+ throw new NotImplementedException ();
+ }
+
+ internal MonoCMethod GetDefaultConstructor ()
+ {
+ MonoCMethod ctor = null;
+
+ if (type_info == null)
+ type_info = new MonoTypeInfo ();
+ else
+ ctor = type_info.default_ctor;
+
+ if (ctor == null) {
+ var ctors = GetConstructors (BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
+
+ for (int i = 0; i < ctors.Length; ++i) {
+ if (ctors [i].GetParametersCount () == 0) {
+ type_info.default_ctor = ctor = (MonoCMethod) ctors [i];
+ break;
+ }
+ }
+ }
+
+ return ctor;
+ }
+
+ [MethodImplAttribute(MethodImplOptions.InternalCall)]
+ extern MethodInfo GetCorrespondingInflatedMethod (MethodInfo generic);
+
+ [MethodImplAttribute(MethodImplOptions.InternalCall)]
+ extern ConstructorInfo GetCorrespondingInflatedConstructor (ConstructorInfo generic);
+
+ internal override MethodInfo GetMethod (MethodInfo fromNoninstanciated)
+ {
+ if (fromNoninstanciated == null)
+ throw new ArgumentNullException ("fromNoninstanciated");
+ return GetCorrespondingInflatedMethod (fromNoninstanciated);
+ }
+
+ internal override ConstructorInfo GetConstructor (ConstructorInfo fromNoninstanciated)
{
- // TODO: Requires MonoType
- throw new NotSupportedException ();
+ if (fromNoninstanciated == null)
+ throw new ArgumentNullException ("fromNoninstanciated");
+ return GetCorrespondingInflatedConstructor (fromNoninstanciated);
+ }
+
+ internal override FieldInfo GetField (FieldInfo fromNoninstanciated)
+ {
+ /* create sensible flags from given FieldInfo */
+ BindingFlags flags = fromNoninstanciated.IsStatic ? BindingFlags.Static : BindingFlags.Instance;
+ flags |= fromNoninstanciated.IsPublic ? BindingFlags.Public : BindingFlags.NonPublic;
+ return GetField (fromNoninstanciated.Name, flags);
}
string GetDefaultMemberName ()
get;
}
- public override string FullName {
- get {
- throw new NotImplementedException ();
- }
- }
-
public extern override string Name {
[MethodImplAttribute(MethodImplOptions.InternalCall)]
get;
get { return get_core_clr_security_level () == 1; }
}
#endif
+
+ public override int GetHashCode()
+ {
+ Type t = UnderlyingSystemType;
+ if (t != null && t != this)
+ return t.GetHashCode ();
+ return (int)_impl.Value;
+ }
+
+ public override string FullName {
+ get {
+ string fullName;
+ // This doesn't need locking
+ if (type_info == null)
+ type_info = new MonoTypeInfo ();
+ if ((fullName = type_info.full_name) == null)
+ fullName = type_info.full_name = getFullName (true, false);
+
+ return fullName;
+ }
+ }
+
+ internal override bool IsUserType {
+ get {
+ return false;
+ }
+ }
}
}
foreach (Type type in methodInstantiation) {
if (type == null)
throw new ArgumentNullException ();
- if (!(type is MonoType))
+ if (!(type is RuntimeType))
hasUserType = true;
}
+++ /dev/null
-//
-// System.Runtime.InteropServices.ArrayWithOffset.cs
-//
-// Author:
-// Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Novell, Inc. http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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;
-
-namespace System.Runtime.InteropServices {
-
- [Serializable]
- [ComVisible (true)]
- public struct ArrayWithOffset {
- object array;
- int offset;
-
- public ArrayWithOffset (object array, int offset)
- {
- this.array = array;
- this.offset = offset;
- }
-
- public override bool Equals (object obj)
- {
- if (obj == null)
- return false;
- if (!(obj is ArrayWithOffset))
- return false;
- ArrayWithOffset other = (ArrayWithOffset) obj;
-
- return (other.array == array && other.offset == offset);
- }
-
- public bool Equals (ArrayWithOffset obj)
- {
- return obj.array == array && obj.offset == offset;
- }
-
- public static bool operator == (ArrayWithOffset a, ArrayWithOffset b)
- {
- return a.Equals (b);
- }
-
- public static bool operator != (ArrayWithOffset a, ArrayWithOffset b)
- {
- return !a.Equals (b);
- }
-
- public override int GetHashCode ()
- {
- return offset;
- }
-
- public object GetArray ()
- {
- return array;
- }
-
- public int GetOffset ()
- {
- return offset;
- }
- }
-}
+++ /dev/null
-//
-// System.Runtime.InteropServices.AssemblyRegistrationFlags.cs
-//
-// Author:
-// Kevin Winchester (kwin@ns.sympatico.ca)
-//
-// (C) 2002 Kevin Winchester
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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.
-//
-
-namespace System.Runtime.InteropServices
-{
- [Flags]
- [ComVisible(true)]
- public enum AssemblyRegistrationFlags {
- None = 0,
- SetCodeBase,
- }
-}
+++ /dev/null
-//
-// System.Runtime.InteropServices.BStrWrapper
-//
-// Author:
-// Kazuki Oikawa (kazuki@panicode.com)
-//
-
-using System;
-
-namespace System.Runtime.InteropServices
-{
- [Serializable]
- [ComVisible (true)]
- public sealed class BStrWrapper
- {
- string _value;
-
- public BStrWrapper (string value)
- {
- _value = value;
- }
-
- public BStrWrapper (object value)
- {
- _value = (string)value;
- }
-
- public string WrappedObject { get { return _value; } }
- }
-}
+++ /dev/null
-//
-// COMException.cs - COM Exception
-//
-// Author:
-// Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004, 2008 Novell, Inc (http://www.novell.com)
-//
-// 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.Runtime.Serialization;
-
-namespace System.Runtime.InteropServices {
-
-[Serializable]
-[ComVisible (true)]
-public class COMException : ExternalException {
-
- public COMException ()
- : base () {}
-
- public COMException (string message)
- : base (message) {}
-
- public COMException (string message, Exception inner)
- : base (message, inner) {}
-
- public COMException (string message, int errorCode)
- : base (message, errorCode) {}
-
- protected COMException (SerializationInfo info, StreamingContext context)
- : base (info, context) {}
-
- public override string ToString ()
- {
- return String.Format (
- "{0} (0x{1:x}): {2} {3}{4}{5}",
- GetType (), HResult, Message, InnerException == null ? String.Empty : InnerException.ToString (),
- Environment.NewLine, StackTrace != null ? StackTrace : String.Empty);
- }
-}
-
-}
+++ /dev/null
-// CallingConvention.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Fri, 7 Sep 2001 16:33:29 UTC
-// Source file: AllTypes.xml
-// URL: http://msdn.microsoft.com/net/ecma/AllTypes.xml
-//
-// (C) 2001 Ximian, Inc. http://www.ximian.com
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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;
-
-namespace System.Runtime.InteropServices {
-
- [Serializable]
- [ComVisible (true)]
- public enum CallingConvention {
- Winapi = 1,
- Cdecl = 2,
- StdCall = 3,
- ThisCall = 4,
- FastCall = 5,
- }
-
-} // System.Runtime.InteropServices
+++ /dev/null
-// CharSet.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Fri, 7 Sep 2001 16:33:35 UTC
-// Source file: AllTypes.xml
-// URL: http://msdn.microsoft.com/net/ecma/AllTypes.xml
-//
-// (C) 2001 Ximian, Inc. http://www.ximian.com
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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;
-
-namespace System.Runtime.InteropServices {
-
- [Serializable]
- [ComVisible (true)]
- public enum CharSet {
- None = 1,
- Ansi = 2,
- Unicode = 3,
- Auto = 4,
- }
-
-} // System.Runtime.InteropServices
+++ /dev/null
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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.
-//
-
-// System.Runtime.InteropServices/ComMemberType.cs
-//
-// Paolo Molaro (lupus@ximian.com)
-//
-// (C) 2002 Ximian, Inc.
-
-using System;
-
-namespace System.Runtime.InteropServices
-{
- [Serializable]
- [ComVisible (true)]
- public enum ComMemberType {
- Method = 0,
- PropGet = 1,
- PropSet = 2
- }
-}
-
+++ /dev/null
-//
-// System.Runtime.InteropServices.CriticalHandle
-//
-// Author:
-// Kazuki Oikawa (kazuki@panicode.com)
-//
-
-
-using System;
-using System.Runtime.ConstrainedExecution;
-using System.Runtime.Serialization;
-
-namespace System.Runtime.InteropServices
-{
- public abstract class CriticalHandle : CriticalFinalizerObject, IDisposable
- {
- protected IntPtr handle;
- bool _disposed = false;
-
- [ReliabilityContract (Consistency.WillNotCorruptState, Cer.MayFail)]
- protected CriticalHandle (IntPtr invalidHandleValue)
- {
- handle = invalidHandleValue;
- }
-
- [ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
- ~CriticalHandle ()
- {
- Dispose (false);
- }
-
- [ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
- public void Close ()
- {
- Dispose (true);
- }
-
- [ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
- public void Dispose ()
- {
- Dispose (true);
- }
-
- [ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
- protected virtual void Dispose (bool disposing)
- {
- if (_disposed)
- return;
-
- if (!IsInvalid){
- if (!_disposed && !ReleaseHandle ()) {
- GC.SuppressFinalize (this);
- } else {
- // Failed in release...
- }
- }
- _disposed = true;
- }
-
- [ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
- protected abstract bool ReleaseHandle ();
-
- [ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
- protected void SetHandle (IntPtr handle)
- {
- this.handle = handle;
- }
-
- [ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
- public void SetHandleAsInvalid()
- {
- _disposed = true;
- }
-
- public bool IsClosed {
- [ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
- get { return _disposed; }
- }
-
- public abstract bool IsInvalid {
- [ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
- get;
- }
- }
-}
+++ /dev/null
-//
-// System.Runtime.InteropServices.CurrencyWrapper.cs
-//
-// Author:
-// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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;
-
-namespace System.Runtime.InteropServices
-{
- [Serializable]
- [ComVisible (true)]
- public sealed class CurrencyWrapper
- {
- Decimal currency;
-
- public CurrencyWrapper (decimal obj)
- {
- currency = obj;
- }
-
- public CurrencyWrapper (object obj)
- {
- if (obj.GetType() != typeof(Decimal))
- throw new ArgumentException ("obj has to be a Decimal type");
- currency = (Decimal)obj;
- }
-
- public decimal WrappedObject {
- get { return currency; }
- }
- }
-}
+++ /dev/null
-//
-// System.Runtime.InteropServices.DispatchWrapper.cs
-//
-// Author:
-// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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 !FULL_AOT_RUNTIME
-using System;
-
-namespace System.Runtime.InteropServices
-{
- [Serializable]
- [ComVisible (true)]
- public sealed class DispatchWrapper
- {
- object wrappedObject;
-
- public DispatchWrapper (object obj)
- {
- Marshal.GetIDispatchForObject (obj);
- wrappedObject = obj;
- }
-
- public object WrappedObject {
- get { return wrappedObject; }
- }
- }
-}
-#endif
+++ /dev/null
-//
-// System.Runtime.InteropServices.ErrorWrapper.cs
-//
-// Author:
-// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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 !FULL_AOT_RUNTIME
-using System;
-
-namespace System.Runtime.InteropServices
-{
- [Serializable]
- [ComVisible (true)]
- public sealed class ErrorWrapper
- {
- int errorCode;
-
- public ErrorWrapper (Exception e)
- {
- this.errorCode = Marshal.GetHRForException (e);
- }
-
- public ErrorWrapper (int errorCode)
- {
- this.errorCode = errorCode;
- }
-
- public ErrorWrapper (object errorCode)
- {
- if (errorCode.GetType() != typeof(int))
- throw new ArgumentException ("errorCode has to be an int type");
- this.errorCode = (int)errorCode;
- }
-
- public int ErrorCode {
- get { return errorCode; }
- }
- }
-}
-#endif
+++ /dev/null
-//
-// System.Runtime.InteropServices.ExternalException.cs
-//
-// Author:
-// Miguel De Icaza (miguel@ximian.com)
-//
-// (C) 2001 Ximian, Inc. http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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.Runtime.Serialization;
-using System.Globalization;
-
-namespace System.Runtime.InteropServices
-{
- [Serializable]
- [ComVisible (true)]
- public class ExternalException : SystemException
- {
- public ExternalException ()
- : base (Locale.GetText ("External exception"))
- {
- HResult = -2147467259;
- }
-
- public ExternalException (string message)
- : base (message)
- {
- HResult = -2147467259;
- }
-
- protected ExternalException(SerializationInfo info, StreamingContext context)
- : base (info, context) {
- }
-
- public ExternalException (string message, Exception inner)
- : base (message, inner)
- {
- HResult = -2147467259;
- }
-
- public ExternalException (string message, int errorCode)
- : base (message)
- {
- HResult = errorCode;
- }
-
- public virtual int ErrorCode {
- get {
- return HResult;
- }
- }
- }
-}
+++ /dev/null
-//
-// System.Runtime.InteropServices.HandleRef
-//
-// Author:
-// Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) 2003 Tim Coleman
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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;
-
-namespace System.Runtime.InteropServices {
- [ComVisible (true)]
- public struct HandleRef {
-
- #region Fields
-
- object wrapper;
- IntPtr handle;
-
- #endregion // Fields
-
- #region Constructors
-
- public HandleRef (object wrapper, IntPtr handle)
- {
- this.wrapper = wrapper;
- this.handle = handle;
- }
-
- #endregion // Constructors
-
- #region Properties
-
- public IntPtr Handle {
- get { return handle; }
- }
-
- public object Wrapper {
- get { return wrapper; }
- }
-
- #endregion // Properties
-
- #region Type Conversions
-
- public static explicit operator IntPtr (HandleRef value)
- {
- return value.Handle;
- }
-
- #endregion // Type Conversions
- public static IntPtr ToIntPtr(HandleRef value)
- {
- return value.Handle;
- // Why did MS add a function for this?
- }
- }
-}
+++ /dev/null
-//
-// System.Runtime.InteropServices.ICustomAdapter.cs
-//
-// Author:
-// Kevin Winchester (kwin@ns.sympatico.ca)
-//
-// (C) 2002 Kevin Winchester
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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.
-//
-
-namespace System.Runtime.InteropServices {
-
- [ComVisible (true)]
- public interface ICustomAdapter {
- [return: MarshalAs (UnmanagedType.IUnknown)]
- object GetUnderlyingObject ();
- }
-}
+++ /dev/null
-//
-// System.Runtime.InteropServices.ICustomFactory.cs
-//
-// Author:
-// Kevin Winchester (kwin@ns.sympatico.ca)
-//
-// (C) 2002 Kevin Winchester
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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.
-//
-
-namespace System.Runtime.InteropServices {
-
- [ComVisible (true)]
- public interface ICustomFactory {
- MarshalByRefObject CreateInstance (Type serverType);
- }
-}
+++ /dev/null
-//
-// System.Runtime.InteropServices.ICustomMarshaler.cs
-//
-// Author:
-// Kevin Winchester (kwin@ns.sympatico.ca)
-//
-// (C) 2002 Kevin Winchester
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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.
-//
-
-namespace System.Runtime.InteropServices {
-
- [ComVisible (true)]
- public interface ICustomMarshaler {
- void CleanUpManagedData (object ManagedObj);
- void CleanUpNativeData (IntPtr pNativeData);
- int GetNativeDataSize ();
- IntPtr MarshalManagedToNative (object ManagedObj);
- object MarshalNativeToManaged (IntPtr pNativeData);
- }
-}
+++ /dev/null
-//
-// System.Runtime.InteropServices.IRegistrationServices.cs
-//
-// Author:
-// Kevin Winchester (kwin@ns.sympatico.ca)
-//
-// (C) 2002 Kevin Winchester
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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.Reflection;
-using System.Security.Permissions;
-namespace System.Runtime.InteropServices {
-
- [ComVisible(true)]
- [Guid("CCBD682C-73A5-4568-B8B0-C7007E11ABA2")]
- public interface IRegistrationServices {
- Guid GetManagedCategoryGuid ();
- [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)]
- string GetProgIdForType (Type type);
-
- [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)]
- Type[] GetRegistrableTypesInAssembly (Assembly assembly);
-
- [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)]
- bool RegisterAssembly (Assembly assembly, AssemblyRegistrationFlags flags);
-
- [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)]
- void RegisterTypeForComClients (Type type, ref Guid g);
-
- bool TypeRepresentsComType (Type type);
-
- [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)]
- bool TypeRequiresRegistration (Type type);
-
- [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)]
- bool UnregisterAssembly (Assembly assembly);
- }
-}
+++ /dev/null
-//
-// System.Runtime.InteropServices.InvalidComObjectException.cs
-//
-// Author:
-// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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.Runtime.Serialization;
-
-namespace System.Runtime.InteropServices
-{
- [ComVisible(true)]
- [Serializable]
- public class InvalidComObjectException : SystemException
- {
- private const int ErrorCode = -2146233049; // = 0x80131527
-
- public InvalidComObjectException ()
- : base (Locale.GetText ("Invalid COM object is used"))
- {
- this.HResult = ErrorCode;
- }
-
- public InvalidComObjectException (string message)
- : base (message)
- {
- this.HResult = ErrorCode;
- }
-
- public InvalidComObjectException (string message, Exception inner)
- : base (message, inner)
- {
- this.HResult = ErrorCode;
- }
-
- protected InvalidComObjectException (SerializationInfo info, StreamingContext context)
- : base (info, context)
- {
- }
- }
-}
+++ /dev/null
-//
-// System.Runtime.InteropServices.InvalidOleVariantTypeException.cs
-//
-// Author:
-// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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.Runtime.Serialization;
-
-namespace System.Runtime.InteropServices
-{
- [ComVisible(true)]
- [Serializable]
- public class InvalidOleVariantTypeException : SystemException
- {
- private const int ErrorCode = -2146233039; // = 0x80131531
-
- public InvalidOleVariantTypeException ()
- : base (Locale.GetText ("Found native variant type cannot be marshalled to managed code"))
- {
- this.HResult = ErrorCode;
- }
-
- public InvalidOleVariantTypeException (string message)
- : base (message)
- {
- this.HResult = ErrorCode;
- }
-
- public InvalidOleVariantTypeException (string message, Exception inner)
- : base (message, inner)
- {
- this.HResult = ErrorCode;
- }
-
- protected InvalidOleVariantTypeException (SerializationInfo info, StreamingContext context)
- : base (info, context)
- {
- }
- }
-}
+++ /dev/null
-// LayoutKind.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Fri, 7 Sep 2001 16:33:48 UTC
-// Source file: AllTypes.xml
-// URL: http://msdn.microsoft.com/net/ecma/AllTypes.xml
-//
-// (C) 2001 Ximian, Inc. http://www.ximian.com
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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.
-//
-
-
-namespace System.Runtime.InteropServices {
-
- [ComVisible(true)]
- [Serializable]
- public enum LayoutKind {
- Sequential = 0,
- Explicit = 2,
- Auto = 3
- }
-
-}
return GetFunctionPointerForDelegateInternal ((Delegate)(object)d);
}
+
+ internal static void SetLastWin32Error (int error)
+ {
+ }
}
}
+++ /dev/null
-//
-// System.Runtime.InteropServices.MarshalDirectiveException.cs
-//
-// Author:
-// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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.Runtime.Serialization;
-
-namespace System.Runtime.InteropServices
-{
- [ComVisible(true)]
- [Serializable]
- public class MarshalDirectiveException : SystemException
- {
- private const int ErrorCode = -2146233035; // = 0x80131535
-
- public MarshalDirectiveException ()
- : base (Locale.GetText ("Unsupported MarshalAsAttribute found"))
- {
- this.HResult = ErrorCode;
- }
-
- public MarshalDirectiveException (string message)
- : base (message)
- {
- this.HResult = ErrorCode;
- }
-
- public MarshalDirectiveException (string message, Exception inner)
- : base (message, inner)
- {
- this.HResult = ErrorCode;
- }
-
- protected MarshalDirectiveException (SerializationInfo info, StreamingContext context)
- : base (info, context)
- {
- }
- }
-}
+++ /dev/null
-//
-// System.Runtime.InteropServices.ObjectCreationDelegate.cs
-//
-// Author:
-// Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Novell, Inc. http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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;
-
-namespace System.Runtime.InteropServices {
-
- [ComVisible(true)]
- public delegate IntPtr ObjectCreationDelegate (IntPtr aggregator);
-}
+++ /dev/null
-//
-// System.Runtime.InteropServices.SEHException.cs
-//
-// Authors:
-// Gonzalo Paniagua Javier <gonzalo@ximian.com>
-//
-// (c) 2003 Ximian, Inc. http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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.Runtime.Serialization;
-
-namespace System.Runtime.InteropServices
-{
- [ComVisible(true)]
- [Serializable]
- public class SEHException : ExternalException
- {
- public SEHException ()
- {
- }
-
- public SEHException (string message)
- : base (message)
- {
- }
-
- public SEHException (string message, Exception inner)
- : base (message, inner)
- {
- }
-
- protected SEHException (SerializationInfo info, StreamingContext context)
- : base (info, context)
- {
- }
-
- public virtual bool CanResume ()
- {
- return false;
- }
- }
-}
-
+++ /dev/null
-//
-// System.Runtime.InteropServices.SafeArrayRankMismatchException.cs
-//
-// Author:
-// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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.Runtime.Serialization;
-
-namespace System.Runtime.InteropServices
-{
- [ComVisible(true)]
- [Serializable]
- public class SafeArrayRankMismatchException : SystemException
- {
- private const int ErrorCode = -2146233032; // = 0x80131538
-
- public SafeArrayRankMismatchException ()
- : base (Locale.GetText ("The incoming SAVEARRAY does not match the rank of the expected managed signature"))
- {
- this.HResult = ErrorCode;
- }
-
- public SafeArrayRankMismatchException (string message)
- : base (message)
- {
- this.HResult = ErrorCode;
- }
-
- public SafeArrayRankMismatchException (string message, Exception inner)
- : base (message, inner)
- {
- this.HResult = ErrorCode;
- }
-
- protected SafeArrayRankMismatchException (SerializationInfo info, StreamingContext context)
- : base (info, context)
- {
- }
- }
-}
+++ /dev/null
-//
-// System.Runtime.InteropServices.SafeArrayTypeMismatchException.cs
-//
-// Author:
-// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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.Runtime.Serialization;
-
-namespace System.Runtime.InteropServices
-{
- [ComVisible(true)]
- [Serializable]
- public class SafeArrayTypeMismatchException : SystemException
- {
- private const int ErrorCode = -2146233037; // = 0x80131533
-
- public SafeArrayTypeMismatchException ()
- : base (Locale.GetText ("The incoming SAVEARRAY does not match the expected managed signature"))
- {
- this.HResult = ErrorCode;
- }
-
- public SafeArrayTypeMismatchException (string message)
- : base (message)
- {
- this.HResult = ErrorCode;
- }
-
- public SafeArrayTypeMismatchException (string message, Exception inner)
- : base (message, inner)
- {
- this.HResult = ErrorCode;
- }
-
- protected SafeArrayTypeMismatchException (SerializationInfo info, StreamingContext context)
- : base (info, context)
- {
- }
- }
-}
ReleaseHandle ();
}
}
-
- /*
- * Implement this abstract method in your derived class to specify how to
- * free the handle. Be careful not write any code that's subject to faults
- * in this method (the runtime will prepare the infrastructure for you so
- * that no jit allocations etc. will occur, but don't allocate memory unless
- * you can deal with the failure and still free the handle).
- * The boolean returned should be true for success and false if the runtime
- * should fire a SafeHandleCriticalFailure MDA (CustomerDebugProbe) if that
- * MDA is enabled.
- */
- [ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
- protected abstract bool ReleaseHandle ();
}
}
+++ /dev/null
-//
-// System.Runtime.InteropServices.UnknownWrapper.cs
-//
-// Author:
-// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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.
-//
-
-namespace System.Runtime.InteropServices
-{
- [Serializable, ComVisible(true)]
- public sealed class UnknownWrapper
- {
- private object InternalObject;
-
- public UnknownWrapper (object obj)
- {
- InternalObject = obj;
- }
-
- public object WrappedObject {
- get { return InternalObject; }
- }
- }
-}
+++ /dev/null
-//
-// System.Runtime.InteropServices.VariantWrapper.cs
-//
-// Author:
-// Gert Driesen (drieseng@users.sourceforge.net)
-//
-// (C) Novell, Inc. http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// 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;
-
-namespace System.Runtime.InteropServices
-{
- [Serializable]
- public sealed class VariantWrapper
- {
- private object _wrappedObject;
-
- public VariantWrapper (object obj)
- {
- _wrappedObject = obj;
- }
-
- public object WrappedObject
- {
- get
- {
- return _wrappedObject;
- }
- }
- }
-}
public static bool IsMethodOverloaded(IMethodMessage msg)
{
const BindingFlags bfinst = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance;
- MonoType type = (MonoType) msg.MethodBase.DeclaringType;
+ RuntimeType type = (RuntimeType) msg.MethodBase.DeclaringType;
return type.GetMethodsByName (msg.MethodName, bfinst, false, type).Length > 1;
}
* of icalls, do not require an increment.
*/
#pragma warning disable 169
- private const int mono_corlib_version = 147;
+ private const int mono_corlib_version = 148;
#pragma warning restore 169
[ComVisible (true)]
[ThreadStatic]
static Dictionary<Type, AttributeUsageAttribute> usage_cache;
- /* Treat as user types all corlib types extending System.Type that are not MonoType and TypeBuilder */
+ /* Treat as user types all corlib types extending System.Type that are not RuntimeType and TypeBuilder */
static bool IsUserCattrProvider (object obj)
{
Type type = obj as Type;
#if !FULL_AOT_RUNTIME
- if ((type is MonoType) || (type is TypeBuilder))
+ if ((type is RuntimeType) || (type is TypeBuilder))
#else
- if (type is MonoType)
+ if (type is RuntimeType)
#endif
return false;
if ((obj is Type))
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-using System.Collections.Generic;
-using System.Globalization;
-using System.Reflection;
-using System.Runtime.InteropServices;
-using System.Runtime.CompilerServices;
-using System.Runtime.Serialization;
-using System.Security;
-using System.Diagnostics.Contracts;
-using System.Threading;
-using System.Diagnostics;
-using System.Security.Permissions;
-using System.Runtime.Remoting.Activation;
-using System.Runtime;
-
namespace System
{
- // Contains information about the type which is expensive to compute
- [StructLayout (LayoutKind.Sequential)]
- internal class MonoTypeInfo {
- // this is the displayed form: special characters
- // ,+*&*[]\ in the identifier portions of the names
- // have been escaped with a leading backslash (\)
- public string full_name;
- public MonoCMethod default_ctor;
- }
-
- [Serializable]
- [StructLayout (LayoutKind.Sequential)]
- class MonoType : RuntimeType, ISerializable
+ // Dummy type kept because lots of external code uses
+ // this to check whenever it is running on mono.
+ sealed class MonoType : RuntimeType
{
- [NonSerialized]
- MonoTypeInfo type_info;
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)]
- private static extern void type_from_obj (MonoType type, Object obj);
-
- internal MonoType (Object obj)
- {
- // this should not be used - lupus
- type_from_obj (this, obj);
-
- throw new NotImplementedException ();
- }
-
- internal override MonoCMethod GetDefaultConstructor ()
+ private MonoType ()
{
- MonoCMethod ctor = null;
-
- if (type_info == null)
- type_info = new MonoTypeInfo ();
- else
- ctor = type_info.default_ctor;
-
- if (ctor == null) {
- var ctors = GetConstructors (BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
-
- for (int i = 0; i < ctors.Length; ++i) {
- if (ctors [i].GetParametersCount () == 0) {
- type_info.default_ctor = ctor = (MonoCMethod) ctors [i];
- break;
- }
- }
- }
-
- return ctor;
- }
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)]
- extern MethodInfo GetCorrespondingInflatedMethod (MethodInfo generic);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)]
- extern ConstructorInfo GetCorrespondingInflatedConstructor (ConstructorInfo generic);
-
- internal override MethodInfo GetMethod (MethodInfo fromNoninstanciated)
- {
- if (fromNoninstanciated == null)
- throw new ArgumentNullException ("fromNoninstanciated");
- return GetCorrespondingInflatedMethod (fromNoninstanciated);
- }
-
- internal override ConstructorInfo GetConstructor (ConstructorInfo fromNoninstanciated)
- {
- if (fromNoninstanciated == null)
- throw new ArgumentNullException ("fromNoninstanciated");
- return GetCorrespondingInflatedConstructor (fromNoninstanciated);
- }
-
- internal override FieldInfo GetField (FieldInfo fromNoninstanciated)
- {
- /* create sensible flags from given FieldInfo */
- BindingFlags flags = fromNoninstanciated.IsStatic ? BindingFlags.Static : BindingFlags.Instance;
- flags |= fromNoninstanciated.IsPublic ? BindingFlags.Public : BindingFlags.NonPublic;
- return GetField (fromNoninstanciated.Name, flags);
- }
-
- public override int GetHashCode()
- {
- Type t = UnderlyingSystemType;
- if (t != null && t != this)
- return t.GetHashCode ();
- return (int)_impl.Value;
- }
-
- public override string FullName {
- get {
- string fullName;
- // This doesn't need locking
- if (type_info == null)
- type_info = new MonoTypeInfo ();
- if ((fullName = type_info.full_name) == null)
- fullName = type_info.full_name = getFullName (true, false);
-
- return fullName;
- }
- }
-
- internal override bool IsUserType {
- get {
- return false;
- }
}
}
}
if (info == null)
throw new ArgumentNullException ("info");
- MonoType mt = ((MonoType) info.GetValue ("TypeObj", typeof (MonoType)));
+ RuntimeType mt = ((RuntimeType) info.GetValue ("TypeObj", typeof (RuntimeType)));
value = mt.TypeHandle.Value;
if (value == IntPtr.Zero)
throw new SerializationException (Locale.GetText ("Insufficient state."));
if (value == IntPtr.Zero)
throw new SerializationException ("Object fields may not be properly initialized");
- info.AddValue ("TypeObj", Type.GetTypeHandle (this), typeof (MonoType));
+ info.AddValue ("TypeObj", Type.GetTypeHandle (this), typeof (RuntimeType));
}
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
}
// check a class in mscorlib to determine if we're running on Mono
- if (Type.GetType ("System.MonoType", false) != null)
+ if (Type.GetType ("Mono.Runtime", false) != null)
is_mono = true;
}
<Compile Include="..\referencesource\mscorlib\system\runtime\exceptionservices\corruptingexceptioncommon.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\exceptionservices\exceptionnotification.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\exceptionservices\exceptionservicescommon.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\arraywithoffset.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\attributes.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\bstrwrapper.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\callingconvention.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\charset.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\comexception.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\commembertype.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\ComTypes\ibindctx.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\ComTypes\iconnectionpoint.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\ComTypes\iconnectionpointcontainer.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\ComTypes\itypeinfo2.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\ComTypes\itypelib.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\ComTypes\itypelib2.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\criticalhandle.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\currencywrapper.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\dispatchwrapper.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\errorwrapper.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\expando\iexpando.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\externalexception.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\handleref.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\icustomadapter.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\icustomfactory.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\icustommarshaler.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\icustomqueryinterface.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\invalidcomobjectexception.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\invalidolevarianttypeexception.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\iregistrationservices.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\layoutkind.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\marshaldirectiveexception.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\objectcreationdelegate.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\runtimeenvironment.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\safearrayrankmismatchexception.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\safearraytypemismatchexception.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\safehandle.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\sehexception.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\ucomienumconnections.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\unknownwrapper.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\variantWrapper.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\NgenServicingAttributes.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\remoting\callcontext.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\serialization\deserializationeventhandler.cs" />\r
<Compile Include="System.Runtime.InteropServices\_Thread.cs" />\r
<Compile Include="System.Runtime.InteropServices\_Type.cs" />\r
<Compile Include="System.Runtime.InteropServices\_TypeBuilder.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ArrayWithOffset.cs" />\r
- <Compile Include="System.Runtime.InteropServices\AssemblyRegistrationFlags.cs" />\r
<Compile Include="System.Runtime.InteropServices\BIND_OPTS.cs" />\r
<Compile Include="System.Runtime.InteropServices\BINDPTR.cs" />\r
- <Compile Include="System.Runtime.InteropServices\BStrWrapper.cs" />\r
<Compile Include="System.Runtime.InteropServices\CALLCONV.cs" />\r
- <Compile Include="System.Runtime.InteropServices\CallingConvention.cs" />\r
- <Compile Include="System.Runtime.InteropServices\CharSet.cs" />\r
- <Compile Include="System.Runtime.InteropServices\COMException.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ComMemberType.cs" />\r
- <Compile Include="System.Runtime.InteropServices\CriticalHandle.cs" />\r
- <Compile Include="System.Runtime.InteropServices\CurrencyWrapper.cs" />\r
<Compile Include="System.Runtime.InteropServices\DESCKIND.cs" />\r
- <Compile Include="System.Runtime.InteropServices\DispatchWrapper.cs" />\r
<Compile Include="System.Runtime.InteropServices\DISPPARAMS.cs" />\r
<Compile Include="System.Runtime.InteropServices\ELEMDESC.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ErrorWrapper.cs" />\r
<Compile Include="System.Runtime.InteropServices\EXCEPINFO.cs" />\r
<Compile Include="System.Runtime.InteropServices\ExporterEventKind.cs" />\r
<Compile Include="System.Runtime.InteropServices\ExtensibleClassFactory.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ExternalException.cs" />\r
<Compile Include="System.Runtime.InteropServices\FILETIME.cs" />\r
<Compile Include="System.Runtime.InteropServices\FUNCDESC.cs" />\r
<Compile Include="System.Runtime.InteropServices\FUNCFLAGS.cs" />\r
<Compile Include="System.Runtime.InteropServices\FUNCKIND.cs" />\r
<Compile Include="System.Runtime.InteropServices\GCHandle.cs" />\r
<Compile Include="System.Runtime.InteropServices\GCHandleType.cs" />\r
- <Compile Include="System.Runtime.InteropServices\HandleRef.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ICustomAdapter.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ICustomFactory.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ICustomMarshaler.cs" />\r
<Compile Include="System.Runtime.InteropServices\IDLDESC.cs" />\r
<Compile Include="System.Runtime.InteropServices\IDLFLAG.cs" />\r
<Compile Include="System.Runtime.InteropServices\IErrorInfo.cs" />\r
<Compile Include="System.Runtime.InteropServices\IMPLTYPEFLAGS.cs" />\r
<Compile Include="System.Runtime.InteropServices\ImporterEventKind.cs" />\r
- <Compile Include="System.Runtime.InteropServices\InvalidComObjectException.cs" />\r
- <Compile Include="System.Runtime.InteropServices\InvalidOleVariantTypeException.cs" />\r
<Compile Include="System.Runtime.InteropServices\INVOKEKIND.cs" />\r
- <Compile Include="System.Runtime.InteropServices\IRegistrationServices.cs" />\r
<Compile Include="System.Runtime.InteropServices\ITypeLibConverter.cs" />\r
<Compile Include="System.Runtime.InteropServices\ITypeLibExporterNameProvider.cs" />\r
<Compile Include="System.Runtime.InteropServices\ITypeLibExporterNotifySink.cs" />\r
<Compile Include="System.Runtime.InteropServices\ITypeLibImporterNotifySink.cs" />\r
- <Compile Include="System.Runtime.InteropServices\LayoutKind.cs" />\r
<Compile Include="System.Runtime.InteropServices\LIBFLAGS.cs" />\r
<Compile Include="System.Runtime.InteropServices\ManagedErrorInfo.cs" />\r
<Compile Include="System.Runtime.InteropServices\Marshal.cs" />\r
<Compile Include="System.Runtime.InteropServices\MarshalAsAttribute.cs" />\r
- <Compile Include="System.Runtime.InteropServices\MarshalDirectiveException.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ObjectCreationDelegate.cs" />\r
<Compile Include="System.Runtime.InteropServices\PARAMDESC.cs" />\r
<Compile Include="System.Runtime.InteropServices\PARAMFLAG.cs" />\r
<Compile Include="System.Runtime.InteropServices\RegistrationClassContext.cs" />\r
<Compile Include="System.Runtime.InteropServices\RegistrationConnectionType.cs" />\r
<Compile Include="System.Runtime.InteropServices\RegistrationServices.cs" />\r
- <Compile Include="System.Runtime.InteropServices\SafeArrayRankMismatchException.cs" />\r
- <Compile Include="System.Runtime.InteropServices\SafeArrayTypeMismatchException.cs" />\r
<Compile Include="System.Runtime.InteropServices\SafeBuffer.cs" />\r
<Compile Include="System.Runtime.InteropServices\SafeHandle.cs" />\r
- <Compile Include="System.Runtime.InteropServices\SEHException.cs" />\r
<Compile Include="System.Runtime.InteropServices\STATSTG.cs" />\r
<Compile Include="System.Runtime.InteropServices\SYSKIND.cs" />\r
<Compile Include="System.Runtime.InteropServices\TYPEATTR.cs" />\r
<Compile Include="System.Runtime.InteropServices\UCOMITypeComp.cs" />\r
<Compile Include="System.Runtime.InteropServices\UCOMITypeInfo.cs" />\r
<Compile Include="System.Runtime.InteropServices\UCOMITypeLib.cs" />\r
- <Compile Include="System.Runtime.InteropServices\UnknownWrapper.cs" />\r
<Compile Include="System.Runtime.InteropServices\VARDESC.cs" />\r
<Compile Include="System.Runtime.InteropServices\VARFLAGS.cs" />\r
- <Compile Include="System.Runtime.InteropServices\VariantWrapper.cs" />\r
<Compile Include="System.Runtime.Remoting.Activation\ActivationServices.cs" />\r
<Compile Include="System.Runtime.Remoting.Activation\ActivatorLevel.cs" />\r
<Compile Include="System.Runtime.Remoting.Activation\AppDomainLevelActivator.cs" />\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
System.Runtime.InteropServices/_Thread.cs
System.Runtime.InteropServices/_Type.cs
System.Runtime.InteropServices/_TypeBuilder.cs
-System.Runtime.InteropServices/ArrayWithOffset.cs
-System.Runtime.InteropServices/AssemblyRegistrationFlags.cs
System.Runtime.InteropServices/BIND_OPTS.cs
System.Runtime.InteropServices/BINDPTR.cs
-System.Runtime.InteropServices/BStrWrapper.cs
System.Runtime.InteropServices/CALLCONV.cs
-System.Runtime.InteropServices/CallingConvention.cs
-System.Runtime.InteropServices/CharSet.cs
-System.Runtime.InteropServices/COMException.cs
-System.Runtime.InteropServices/ComMemberType.cs
-System.Runtime.InteropServices/CriticalHandle.cs
-System.Runtime.InteropServices/CurrencyWrapper.cs
System.Runtime.InteropServices/DESCKIND.cs
-System.Runtime.InteropServices/DispatchWrapper.cs
System.Runtime.InteropServices/DISPPARAMS.cs
System.Runtime.InteropServices/ELEMDESC.cs
-System.Runtime.InteropServices/ErrorWrapper.cs
System.Runtime.InteropServices/EXCEPINFO.cs
System.Runtime.InteropServices/ExporterEventKind.cs
System.Runtime.InteropServices/ExtensibleClassFactory.cs
-System.Runtime.InteropServices/ExternalException.cs
System.Runtime.InteropServices/FILETIME.cs
System.Runtime.InteropServices/FUNCDESC.cs
System.Runtime.InteropServices/FUNCFLAGS.cs
System.Runtime.InteropServices/FUNCKIND.cs
System.Runtime.InteropServices/GCHandle.cs
System.Runtime.InteropServices/GCHandleType.cs
-System.Runtime.InteropServices/HandleRef.cs
-System.Runtime.InteropServices/ICustomAdapter.cs
-System.Runtime.InteropServices/ICustomFactory.cs
-System.Runtime.InteropServices/ICustomMarshaler.cs
System.Runtime.InteropServices/IDLDESC.cs
System.Runtime.InteropServices/IDLFLAG.cs
System.Runtime.InteropServices/IErrorInfo.cs
System.Runtime.InteropServices/IMPLTYPEFLAGS.cs
System.Runtime.InteropServices/INVOKEKIND.cs
-System.Runtime.InteropServices/IRegistrationServices.cs
System.Runtime.InteropServices/ITypeLibConverter.cs
System.Runtime.InteropServices/ITypeLibExporterNameProvider.cs
System.Runtime.InteropServices/ITypeLibExporterNotifySink.cs
System.Runtime.InteropServices/ITypeLibImporterNotifySink.cs
System.Runtime.InteropServices/ImporterEventKind.cs
-System.Runtime.InteropServices/InvalidComObjectException.cs
-System.Runtime.InteropServices/InvalidOleVariantTypeException.cs
System.Runtime.InteropServices/LIBFLAGS.cs
-System.Runtime.InteropServices/LayoutKind.cs
System.Runtime.InteropServices/ManagedErrorInfo.cs
System.Runtime.InteropServices/Marshal.cs
System.Runtime.InteropServices/MarshalAsAttribute.cs
-System.Runtime.InteropServices/MarshalDirectiveException.cs
-System.Runtime.InteropServices/ObjectCreationDelegate.cs
System.Runtime.InteropServices/PARAMDESC.cs
System.Runtime.InteropServices/PARAMFLAG.cs
System.Runtime.InteropServices/RegistrationClassContext.cs
System.Runtime.InteropServices/RegistrationConnectionType.cs
-System.Runtime.InteropServices/SEHException.cs
System.Runtime.InteropServices/STATSTG.cs
System.Runtime.InteropServices/RegistrationServices.cs
-System.Runtime.InteropServices/SafeArrayRankMismatchException.cs
-System.Runtime.InteropServices/SafeArrayTypeMismatchException.cs
System.Runtime.InteropServices/SafeBuffer.cs
System.Runtime.InteropServices/SafeHandle.cs
System.Runtime.InteropServices/SYSKIND.cs
System.Runtime.InteropServices/UCOMITypeComp.cs
System.Runtime.InteropServices/UCOMITypeInfo.cs
System.Runtime.InteropServices/UCOMITypeLib.cs
-System.Runtime.InteropServices/UnknownWrapper.cs
System.Runtime.InteropServices/VARDESC.cs
System.Runtime.InteropServices/VARFLAGS.cs
-System.Runtime.InteropServices/VariantWrapper.cs
System.Runtime.InteropServices.WindowsRuntime/DefaultInterfaceAttribute.cs
System.Runtime.InteropServices.WindowsRuntime/DesignerNamespaceResolveEventArgs.cs
../referencesource/mscorlib/system/runtime/exceptionservices/exceptionnotification.cs
../referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs
+../referencesource/mscorlib/system/runtime/interopservices/arraywithoffset.cs
../referencesource/mscorlib/system/runtime/interopservices/attributes.cs
+../referencesource/mscorlib/system/runtime/interopservices/bstrwrapper.cs
+../referencesource/mscorlib/system/runtime/interopservices/callingconvention.cs
+../referencesource/mscorlib/system/runtime/interopservices/charset.cs
+../referencesource/mscorlib/system/runtime/interopservices/comexception.cs
+../referencesource/mscorlib/system/runtime/interopservices/commembertype.cs
+../referencesource/mscorlib/system/runtime/interopservices/criticalhandle.cs
+../referencesource/mscorlib/system/runtime/interopservices/currencywrapper.cs
+../referencesource/mscorlib/system/runtime/interopservices/dispatchwrapper.cs
+../referencesource/mscorlib/system/runtime/interopservices/errorwrapper.cs
+../referencesource/mscorlib/system/runtime/interopservices/externalexception.cs
+../referencesource/mscorlib/system/runtime/interopservices/handleref.cs
+../referencesource/mscorlib/system/runtime/interopservices/icustomadapter.cs
+../referencesource/mscorlib/system/runtime/interopservices/icustomfactory.cs
+../referencesource/mscorlib/system/runtime/interopservices/icustommarshaler.cs
+../referencesource/mscorlib/system/runtime/interopservices/icustomqueryinterface.cs
+../referencesource/mscorlib/system/runtime/interopservices/invalidcomobjectexception.cs
+../referencesource/mscorlib/system/runtime/interopservices/invalidolevarianttypeexception.cs
+../referencesource/mscorlib/system/runtime/interopservices/iregistrationservices.cs
+../referencesource/mscorlib/system/runtime/interopservices/layoutkind.cs
+../referencesource/mscorlib/system/runtime/interopservices/marshaldirectiveexception.cs
+../referencesource/mscorlib/system/runtime/interopservices/objectcreationdelegate.cs
../referencesource/mscorlib/system/runtime/interopservices/runtimeenvironment.cs
+../referencesource/mscorlib/system/runtime/interopservices/safearrayrankmismatchexception.cs
+../referencesource/mscorlib/system/runtime/interopservices/safearraytypemismatchexception.cs
../referencesource/mscorlib/system/runtime/interopservices/safehandle.cs
+../referencesource/mscorlib/system/runtime/interopservices/sehexception.cs
../referencesource/mscorlib/system/runtime/interopservices/ucomienumconnections.cs
+../referencesource/mscorlib/system/runtime/interopservices/unknownwrapper.cs
+../referencesource/mscorlib/system/runtime/interopservices/variantWrapper.cs
../referencesource/mscorlib/system/runtime/interopservices/ComTypes/ibindctx.cs
../referencesource/mscorlib/system/runtime/interopservices/ComTypes/iconnectionpoint.cs
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
return obj == (object)this;
}
+#if !MONO
public override int GetHashCode()
{
return RuntimeHelpers.GetHashCode(this);
}
+#endif
#if !FEATURE_CORECLR
public static bool operator ==(RuntimeType left, RuntimeType right)
return !(a == b);
}
+#if MONO
+ int CalculateCount()
+ {
+ Array a = m_array as Array;
+ if (a == null)
+ throw new ArgumentException ();
+
+ var total = a.Rank * a.Length;
+ return total - m_offset;
+ }
+#else
[System.Security.SecurityCritical] // auto-generated
[ResourceExposure(ResourceScope.None)]
[MethodImplAttribute(MethodImplOptions.InternalCall)]
private extern int CalculateCount();
+#endif
private Object m_array;
private int m_offset;
GC.SuppressFinalize(this);
}
+#if MONO
+ static void FireCustomerDebugProbe()
+ {
+ }
+#else
[ResourceExposure(ResourceScope.None)]
[MethodImplAttribute(MethodImplOptions.InternalCall)]
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
private extern void FireCustomerDebugProbe();
+#endif
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
protected void SetHandle(IntPtr handle) {
**
**
=============================================================================*/
-
+#if !FULL_AOT_RUNTIME
namespace System.Runtime.InteropServices {
using System;
private Object m_WrappedObject;
}
}
+#endif
\ No newline at end of file
**
**
=============================================================================*/
-
+#if !FULL_AOT_RUNTIME
namespace System.Runtime.InteropServices {
using System;
private int m_ErrorCode;
}
}
+#endif
\ No newline at end of file
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern void SetHandleAsInvalid();
-
+#endif
// Implement this abstract method in your derived class to specify how to
// free the handle. Be careful not write any code that's subject to faults
// in this method (the runtime will prepare the infrastructure for you so
// MDA is enabled.
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
protected abstract bool ReleaseHandle();
-
+#if !MONO
// Add a reason why this handle should not be relinquished (i.e. have
// ReleaseHandle called on it). This method has dangerous in the name since
// it must always be used carefully (e.g. called within a CER) to avoid
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
$(ProjectDir)\..\jay\jay.exe -ct < $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\cs-parser.jay > $(ProjectDir)\cs-parser.cs\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
* Changes which are already detected at runtime, like the addition
* of icalls, do not require an increment.
*/
-#define MONO_CORLIB_VERSION 147
+#define MONO_CORLIB_VERSION 148
typedef struct
{
MonoObject *
ves_icall_System_AppDomain_GetData (MonoAppDomain *ad, MonoString *name)
{
+ MonoError error;
MonoDomain *add;
MonoObject *o;
char *str;
add = ad->data;
g_assert (add);
- str = mono_string_to_utf8 (name);
+ str = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
mono_domain_lock (add);
#else
char *fname;
- fname = mono_string_to_utf8 (friendly_name);
+ fname = mono_string_to_utf8_checked (friendly_name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
ad = mono_domain_create_appdomain_internal (fname, setup, &error);
g_free (fname);
return NULL;
}
- name = filename = mono_string_to_utf8 (fname);
+ name = filename = mono_string_to_utf8_checked (fname, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
ass = mono_assembly_open_full (filename, &status, refOnly);
g_assert (assRef);
- name = mono_string_to_utf8 (assRef);
+ name = mono_string_to_utf8_checked (assRef, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
parsed = mono_assembly_name_parse (name, &aname);
g_free (name);
static MonoAssemblyName*
mono_assembly_apply_binding (MonoAssemblyName *aname, MonoAssemblyName *dest_name)
{
+ MonoError error;
MonoAssemblyBindingInfo *info, *info2;
MonoImage *ppimage;
MonoDomain *domain;
if (domain && domain->setup && domain->setup->configuration_file) {
mono_domain_lock (domain);
if (!domain->assembly_bindings_parsed) {
- gchar *domain_config_file_name = mono_string_to_utf8 (domain->setup->configuration_file);
+ gchar *domain_config_file_name = mono_string_to_utf8_checked (domain->setup->configuration_file, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
+
gchar *domain_config_file_path = mono_portability_find_file (domain_config_file_name, TRUE);
if (!domain_config_file_path)
MonoClass *fieldhandle_class;
MonoClass *methodhandle_class;
MonoClass *systemtype_class;
- MonoClass *monotype_class;
MonoClass *runtimetype_class;
MonoClass *exception_class;
MonoClass *threadabortexception_class;
if (setup_finished)
return TRUE;
- keypad_xmit_str = keypad != NULL ? mono_string_to_utf8 (keypad) : NULL;
+ keypad_xmit_str = NULL;
+ if (keypad != NULL) {
+ keypad_xmit_str = mono_string_to_utf8_checked (keypad, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
+ }
console_set_signal_handlers ();
setup_finished = TRUE;
if (!atexit_called) {
- if (teardown != NULL)
- teardown_str = mono_string_to_utf8 (teardown);
+ if (teardown != NULL) {
+ teardown_str = mono_string_to_utf8_checked (teardown, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
+ }
mono_atexit (tty_teardown);
}
void
mono_object_describe (MonoObject *obj)
{
+ MonoError error;
MonoClass* klass;
const char* sep;
if (!obj) {
}
klass = mono_object_class (obj);
if (klass == mono_defaults.string_class) {
- char *utf8 = mono_string_to_utf8 ((MonoString*)obj);
+ char *utf8 = mono_string_to_utf8_checked ((MonoString*)obj, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
if (strlen (utf8) > 60) {
utf8 [57] = '.';
utf8 [58] = '.';
mono_defaults.systemtype_class = mono_class_load_from_name (
mono_defaults.corlib, "System", "Type");
- mono_defaults.monotype_class = mono_class_load_from_name (
- mono_defaults.corlib, "System", "MonoType");
-
mono_defaults.runtimetype_class = mono_class_load_from_name (
mono_defaults.corlib, "System", "RuntimeType");
{
MonoObject *type = (MonoObject *)vtable->type;
- if (type->vtable->klass != mono_defaults.monotype_class)
+ if (type->vtable->klass != mono_defaults.runtimetype_class)
MONO_GC_UNREGISTER_ROOT_IF_MOVING (vtable->type);
}
MonoString *
ves_icall_System_IO_MonoIO_FindFirst (MonoString *path,
MonoString *path_with_pattern,
- gint32 *result_attr, gint32 *error,
+ gint32 *result_attr, gint32 *ioerror,
gpointer *handle)
{
+ MonoError error;
WIN32_FIND_DATA data;
HANDLE find_handle;
IncrementalFind *ifh;
MonoString *result;
- *error = ERROR_SUCCESS;
+ *ioerror = ERROR_SUCCESS;
find_handle = FindFirstFile (mono_string_chars (path_with_pattern), &data);
if (find_error == ERROR_FILE_NOT_FOUND)
return NULL;
- *error = find_error;
+ *ioerror = find_error;
return NULL;
}
ifh = g_new (IncrementalFind, 1);
ifh->find_handle = find_handle;
- ifh->utf8_path = mono_string_to_utf8 (path);
+ ifh->utf8_path = mono_string_to_utf8_checked (path, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
ifh->domain = mono_domain_get ();
*handle = ifh;
if (FindNextFile (find_handle, &data) == FALSE){
int e = GetLastError ();
if (e != ERROR_NO_MORE_FILES)
- *error = e;
+ *ioerror = e;
return NULL;
}
}
gint64
mono_filesize_from_path (MonoString *string)
{
+ MonoError error;
struct stat buf;
gint64 res;
- char *path = mono_string_to_utf8 (string);
+ char *path = mono_string_to_utf8_checked (string, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
MONO_ENTER_GC_SAFE;
if (stat (path, &buf) == -1)
XXX implement options
*/
static void*
-open_file_map (MonoString *path, int input_fd, int mode, gint64 *capacity, int access, int options, int *error)
+open_file_map (MonoString *path, int input_fd, int mode, gint64 *capacity, int access, int options, int *ioerror)
{
+ MonoError error;
struct stat buf;
- char *c_path = path ? mono_string_to_utf8 (path) : NULL;
+ char *c_path = NULL;
MmapHandle *handle = NULL;
int result, fd;
+ if (path) {
+ c_path = mono_string_to_utf8_checked (path, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
+ }
+
if (path)
result = stat (c_path, &buf);
else
if (mode == FILE_MODE_TRUNCATE || mode == FILE_MODE_APPEND || mode == FILE_MODE_OPEN) {
if (result == -1) { //XXX translate errno?
- *error = FILE_NOT_FOUND;
+ *ioerror = FILE_NOT_FOUND;
goto done;
}
}
if (mode == FILE_MODE_CREATE_NEW && result == 0) {
- *error = FILE_ALREADY_EXISTS;
+ *ioerror = FILE_ALREADY_EXISTS;
goto done;
}
* also makes little sense, so don't do the check if th file is one of these.
*/
if (buf.st_size == 0 && !is_special_zero_size_file (&buf)) {
- *error = CAPACITY_SMALLER_THAN_FILE_SIZE;
+ *ioerror = CAPACITY_SMALLER_THAN_FILE_SIZE;
goto done;
}
*capacity = buf.st_size;
} else if (*capacity < buf.st_size) {
- *error = CAPACITY_SMALLER_THAN_FILE_SIZE;
+ *ioerror = CAPACITY_SMALLER_THAN_FILE_SIZE;
goto done;
}
} else {
if (mode == FILE_MODE_CREATE_NEW && *capacity == 0) {
- *error = CAPACITY_SMALLER_THAN_FILE_SIZE;
+ *ioerror = CAPACITY_SMALLER_THAN_FILE_SIZE;
goto done;
}
}
fd = dup (input_fd);
if (fd == -1) { //XXX translate errno?
- *error = COULD_NOT_OPEN;
+ *ioerror = COULD_NOT_OPEN;
goto done;
}
#define MONO_ANON_FILE_TEMPLATE "/mono.anonmap.XXXXXXXXX"
static void*
-open_memory_map (MonoString *mapName, int mode, gint64 *capacity, int access, int options, int *error)
+open_memory_map (MonoString *mapName, int mode, gint64 *capacity, int access, int options, int *ioerror)
{
+ MonoError error;
char *c_mapName;
MmapHandle *handle;
if (*capacity <= 1) {
- *error = CAPACITY_MUST_BE_POSITIVE;
+ *ioerror = CAPACITY_MUST_BE_POSITIVE;
return NULL;
}
if (!(mode == FILE_MODE_CREATE_NEW || mode == FILE_MODE_OPEN_OR_CREATE || mode == FILE_MODE_OPEN)) {
- *error = INVALID_FILE_MODE;
+ *ioerror = INVALID_FILE_MODE;
return NULL;
}
- c_mapName = mono_string_to_utf8 (mapName);
+ c_mapName = mono_string_to_utf8_checked (mapName, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
named_regions_lock ();
handle = (MmapHandle*)g_hash_table_lookup (named_regions, c_mapName);
if (handle) {
if (mode == FILE_MODE_CREATE_NEW) {
- *error = FILE_ALREADY_EXISTS;
+ *ioerror = FILE_ALREADY_EXISTS;
goto done;
}
int unused G_GNUC_UNUSED, alloc_size;
if (mode == FILE_MODE_OPEN) {
- *error = FILE_NOT_FOUND;
+ *ioerror = FILE_NOT_FOUND;
goto done;
}
*capacity = align_up_to_page_size (*capacity);
tmp_dir = g_get_tmp_dir ();
alloc_size = strlen (tmp_dir) + strlen (MONO_ANON_FILE_TEMPLATE) + 1;
if (alloc_size > 1024) {//rather fail that stack overflow
- *error = COULD_NOT_MAP_MEMORY;
+ *ioerror = COULD_NOT_MAP_MEMORY;
goto done;
}
file_name = (char *)alloca (alloc_size);
fd = mkstemp (file_name);
if (fd == -1) {
- *error = COULD_NOT_MAP_MEMORY;
+ *ioerror = COULD_NOT_MAP_MEMORY;
goto done;
}
void *
-mono_mmap_open_file (MonoString *path, int mode, MonoString *mapName, gint64 *capacity, int access, int options, int *error)
+mono_mmap_open_file (MonoString *path, int mode, MonoString *mapName, gint64 *capacity, int access, int options, int *ioerror)
{
+ MonoError error;
g_assert (path || mapName);
if (!mapName)
- return open_file_map (path, -1, mode, capacity, access, options, error);
+ return open_file_map (path, -1, mode, capacity, access, options, ioerror);
if (path) {
MmapHandle *handle;
- char *c_mapName = mono_string_to_utf8 (mapName);
+ char *c_mapName = mono_string_to_utf8_checked (mapName, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
named_regions_lock ();
handle = (MmapHandle*)g_hash_table_lookup (named_regions, c_mapName);
if (handle) {
- *error = FILE_ALREADY_EXISTS;
+ *ioerror = FILE_ALREADY_EXISTS;
handle = NULL;
} else {
- handle = (MmapHandle *)open_file_map (path, -1, mode, capacity, access, options, error);
+ handle = (MmapHandle *)open_file_map (path, -1, mode, capacity, access, options, ioerror);
if (handle) {
handle->name = g_strdup (c_mapName);
g_hash_table_insert (named_regions, handle->name, handle);
return handle;
}
- return open_memory_map (mapName, mode, capacity, access, options, error);
+ return open_memory_map (mapName, mode, capacity, access, options, ioerror);
}
void *
-mono_mmap_open_handle (void *input_fd, MonoString *mapName, gint64 *capacity, int access, int options, int *error)
+mono_mmap_open_handle (void *input_fd, MonoString *mapName, gint64 *capacity, int access, int options, int *ioerror)
{
+ MonoError error;
MmapHandle *handle;
if (!mapName) {
- handle = (MmapHandle *)open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, error);
+ handle = (MmapHandle *)open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, ioerror);
} else {
- char *c_mapName = mono_string_to_utf8 (mapName);
+ char *c_mapName = mono_string_to_utf8_checked (mapName, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
named_regions_lock ();
handle = (MmapHandle*)g_hash_table_lookup (named_regions, c_mapName);
if (handle) {
- *error = FILE_ALREADY_EXISTS;
+ *ioerror = FILE_ALREADY_EXISTS;
handle = NULL;
} else {
//XXX we're exploiting wapi HANDLE == FD equivalence. THIS IS FRAGILE, create a _wapi_handle_to_fd call
- handle = (MmapHandle *)open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, error);
+ handle = (MmapHandle *)open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, ioerror);
handle->name = g_strdup (c_mapName);
g_hash_table_insert (named_regions, handle->name, handle);
}
int
ves_icall_System_IO_InotifyWatcher_AddWatch (int fd, MonoString *name, gint32 mask)
{
+ MonoError error;
char *str, *path;
int retval;
if (name == NULL)
return -1;
- str = mono_string_to_utf8 (name);
+ str = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return -1;
path = mono_portability_find_file (str, TRUE);
if (!path)
path = str;
ICALL(MCATTR_2, "GetCustomAttributesInternal", custom_attrs_get_by_type)
ICALL(MCATTR_3, "IsDefinedInternal", custom_attrs_defined_internal)
-ICALL_TYPE(MTYPE, "System.MonoType", MTYPE_1)
-ICALL(MTYPE_1, "GetCorrespondingInflatedConstructor", ves_icall_MonoType_GetCorrespondingInflatedMethod)
-ICALL(MTYPE_2, "GetCorrespondingInflatedMethod", ves_icall_MonoType_GetCorrespondingInflatedMethod)
-ICALL(MTYPE_3, "type_from_obj", ves_icall_MonoType_type_from_obj)
-
#ifndef DISABLE_SOCKETS
ICALL_TYPE(NDNS, "System.Net.Dns", NDNS_1)
ICALL(NDNS_1, "GetHostByAddr_internal(string,string&,string[]&,string[]&)", ves_icall_System_Net_Dns_GetHostByAddr_internal)
ICALL_TYPE(RT, "System.RuntimeType", RT_1)
ICALL(RT_1, "CreateInstanceInternal", ves_icall_System_Activator_CreateInstanceInternal)
-ICALL(RT_2, "GetConstructors_internal", ves_icall_Type_GetConstructors_internal)
-ICALL(RT_3, "GetEvents_internal", ves_icall_Type_GetEvents_internal)
-ICALL(RT_5, "GetFields_internal", ves_icall_Type_GetFields_internal)
-ICALL(RT_6, "GetGenericArgumentsInternal", ves_icall_MonoType_GetGenericArguments)
-ICALL(RT_7, "GetGenericParameterAttributes", ves_icall_Type_GetGenericParameterAttributes)
-ICALL(RT_8, "GetGenericParameterConstraints_impl", ves_icall_Type_GetGenericParameterConstraints)
-ICALL(RT_9, "GetGenericParameterPosition", ves_icall_Type_GetGenericParameterPosition)
-ICALL(RT_10, "GetInterfaceMapData", ves_icall_Type_GetInterfaceMapData)
-ICALL(RT_11, "GetInterfaces", ves_icall_Type_GetInterfaces)
-ICALL(RT_12, "GetMethodsByName", ves_icall_Type_GetMethodsByName)
-ICALL(RT_13, "GetNestedTypes_internal", ves_icall_Type_GetNestedTypes)
-ICALL(RT_14, "GetPacking", ves_icall_Type_GetPacking)
-ICALL(RT_15, "GetPropertiesByName", ves_icall_Type_GetPropertiesByName)
+ICALL(RT_2, "GetConstructors_internal", ves_icall_RuntimeType_GetConstructors_internal)
+ICALL(RT_30, "GetCorrespondingInflatedConstructor", ves_icall_RuntimeType_GetCorrespondingInflatedMethod)
+ICALL(RT_31, "GetCorrespondingInflatedMethod", ves_icall_RuntimeType_GetCorrespondingInflatedMethod)
+ICALL(RT_3, "GetEvents_internal", ves_icall_RuntimeType_GetEvents_internal)
+ICALL(RT_5, "GetFields_internal", ves_icall_RuntimeType_GetFields_internal)
+ICALL(RT_6, "GetGenericArgumentsInternal", ves_icall_RuntimeType_GetGenericArguments)
+ICALL(RT_7, "GetGenericParameterAttributes", ves_icall_RuntimeType_GetGenericParameterAttributes)
+ICALL(RT_8, "GetGenericParameterConstraints_impl", ves_icall_RuntimeType_GetGenericParameterConstraints)
+ICALL(RT_9, "GetGenericParameterPosition", ves_icall_RuntimeType_GetGenericParameterPosition)
+ICALL(RT_10, "GetInterfaceMapData", ves_icall_RuntimeType_GetInterfaceMapData)
+ICALL(RT_11, "GetInterfaces", ves_icall_RuntimeType_GetInterfaces)
+ICALL(RT_12, "GetMethodsByName", ves_icall_RuntimeType_GetMethodsByName)
+ICALL(RT_13, "GetNestedTypes_internal", ves_icall_RuntimeType_GetNestedTypes)
+ICALL(RT_14, "GetPacking", ves_icall_RuntimeType_GetPacking)
+ICALL(RT_15, "GetPropertiesByName", ves_icall_RuntimeType_GetPropertiesByName)
ICALL(RT_16, "GetTypeCodeImplInternal", ves_icall_type_GetTypeCodeInternal)
ICALL(RT_28, "IsTypeExportedToWindowsRuntime", ves_icall_System_RuntimeType_IsTypeExportedToWindowsRuntime)
ICALL(RT_29, "IsWindowsRuntimeObjectType", ves_icall_System_RuntimeType_IsWindowsRuntimeObjectType)
-ICALL(RT_17, "MakeGenericType", ves_icall_Type_MakeGenericType)
-ICALL(RT_18, "MakePointerType", ves_icall_Type_MakePointerType)
+ICALL(RT_17, "MakeGenericType", ves_icall_RuntimeType_MakeGenericType)
+ICALL(RT_18, "MakePointerType", ves_icall_RuntimeType_MakePointerType)
ICALL(RT_19, "getFullName", ves_icall_System_MonoType_getFullName)
-ICALL(RT_21, "get_DeclaringMethod", ves_icall_MonoType_get_DeclaringMethod)
-ICALL(RT_22, "get_DeclaringType", ves_icall_MonoType_get_DeclaringType)
-ICALL(RT_23, "get_Name", ves_icall_MonoType_get_Name)
-ICALL(RT_24, "get_Namespace", ves_icall_MonoType_get_Namespace)
-ICALL(RT_25, "get_core_clr_security_level", vell_icall_MonoType_get_core_clr_security_level)
-ICALL(RT_26, "make_array_type", ves_icall_Type_make_array_type)
-ICALL(RT_27, "make_byref_type", ves_icall_Type_make_byref_type)
+ICALL(RT_21, "get_DeclaringMethod", ves_icall_RuntimeType_get_DeclaringMethod)
+ICALL(RT_22, "get_DeclaringType", ves_icall_RuntimeType_get_DeclaringType)
+ICALL(RT_23, "get_Name", ves_icall_RuntimeType_get_Name)
+ICALL(RT_24, "get_Namespace", ves_icall_RuntimeType_get_Namespace)
+ICALL(RT_25, "get_core_clr_security_level", vell_icall_RuntimeType_get_core_clr_security_level)
+ICALL(RT_26, "make_array_type", ves_icall_RuntimeType_make_array_type)
+ICALL(RT_27, "make_byref_type", ves_icall_RuntimeType_make_byref_type)
ICALL_TYPE(RTH, "System.RuntimeTypeHandle", RTH_1)
ICALL(RTH_1, "GetArrayRank", ves_icall_RuntimeTypeHandle_GetArrayRank)
return ret;
}
-ICALL_EXPORT void
-ves_icall_MonoType_type_from_obj (MonoReflectionType *mtype, MonoObject *obj)
-{
- mtype->type = &obj->vtable->klass->byval_arg;
- g_assert (mtype->type->type);
-}
-
ICALL_EXPORT gint32
ves_icall_ModuleBuilder_getToken (MonoReflectionModuleBuilder *mb, MonoObject *obj, gboolean create_open_instance)
{
MonoBoolean ignoreCase)
{
MonoError error;
- char *str = mono_string_to_utf8 (name);
MonoTypeNameParse info;
- MonoReflectionType *type;
+ MonoReflectionType *type = NULL;
gboolean parsedOk;
+ char *str = mono_string_to_utf8_checked (name, &error);
+ if (!is_ok (&error))
+ goto leave;
+
parsedOk = mono_reflection_parse_type (str, &info);
/* mono_reflection_parse_type() mangles the string */
if (!parsedOk) {
mono_reflection_free_type_info (&info);
- if (throwOnError) {
- mono_error_init (&error);
+ if (throwOnError)
mono_error_set_argument (&error, "typeName", "failed parse: %s", str);
- mono_error_set_pending_exception (&error);
- }
- g_free (str);
- return NULL;
+ goto leave;
}
type = type_from_parsed_name (&info, ignoreCase, &error);
mono_reflection_free_type_info (&info);
- g_free (str);
- if (!mono_error_ok (&error)) {
+ if (!is_ok (&error))
+ goto leave;
+
+ if (type == NULL){
+ if (throwOnError) {
+ mono_error_set_type_load_name (&error, g_strdup (str), NULL, "");
+ goto leave;
+ }
+ }
+
+leave:
+ g_free (str);
+ if (!is_ok (&error)) {
if (throwOnError)
mono_error_set_pending_exception (&error);
else
return NULL;
}
- if (type == NULL){
- MonoException *e = NULL;
-
- if (throwOnError)
- e = mono_get_exception_type_load (name, NULL);
-
- if (e) {
- mono_set_pending_exception (e);
- return NULL;
- }
- }
-
return type;
}
}
ICALL_EXPORT MonoArray*
-ves_icall_Type_GetInterfaces (MonoReflectionType* type)
+ves_icall_RuntimeType_GetInterfaces (MonoReflectionType* type)
{
MonoError error;
MonoClass *klass = mono_class_from_mono_type (type->type);
if (len == 0) {
g_hash_table_destroy (iface_hash);
if (!data.domain->empty_types) {
- data.domain->empty_types = mono_array_new_cached (data.domain, mono_defaults.monotype_class, 0, &error);
+ data.domain->empty_types = mono_array_new_cached (data.domain, mono_defaults.runtimetype_class, 0, &error);
if (!is_ok (&error))
goto fail;
}
return data.domain->empty_types;
}
- data.iface_array = mono_array_new_cached (data.domain, mono_defaults.monotype_class, len, &error);
+ data.iface_array = mono_array_new_cached (data.domain, mono_defaults.runtimetype_class, len, &error);
if (!is_ok (&error))
goto fail;
g_hash_table_foreach (iface_hash, fill_iface_array, &data);
}
ICALL_EXPORT void
-ves_icall_Type_GetInterfaceMapData (MonoReflectionType *type, MonoReflectionType *iface, MonoArray **targets, MonoArray **methods)
+ves_icall_RuntimeType_GetInterfaceMapData (MonoReflectionType *type, MonoReflectionType *iface, MonoArray **targets, MonoArray **methods)
{
gboolean variance_used;
MonoClass *klass = mono_class_from_mono_type (type->type);
}
ICALL_EXPORT void
-ves_icall_Type_GetPacking (MonoReflectionType *type, guint32 *packing, guint32 *size)
+ves_icall_RuntimeType_GetPacking (MonoReflectionType *type, guint32 *packing, guint32 *size)
{
MonoError error;
MonoClass *klass = mono_class_from_mono_type (type->type);
}
ICALL_EXPORT MonoReflectionType*
-ves_icall_MonoType_get_DeclaringType (MonoReflectionType *type)
+ves_icall_RuntimeType_get_DeclaringType (MonoReflectionType *type)
{
MonoError error;
MonoReflectionType *ret;
}
ICALL_EXPORT MonoString*
-ves_icall_MonoType_get_Name (MonoReflectionType *type)
+ves_icall_RuntimeType_get_Name (MonoReflectionType *type)
{
MonoDomain *domain = mono_domain_get ();
MonoClass *klass = mono_class_from_mono_type (type->type);
}
ICALL_EXPORT MonoString*
-ves_icall_MonoType_get_Namespace (MonoReflectionType *type)
+ves_icall_RuntimeType_get_Namespace (MonoReflectionType *type)
{
MonoDomain *domain = mono_domain_get ();
MonoClass *klass = mono_class_from_mono_type (type->type);
}
ICALL_EXPORT MonoArray*
-ves_icall_MonoType_GetGenericArguments (MonoReflectionType *type, MonoBoolean runtimeTypeArray)
+ves_icall_RuntimeType_GetGenericArguments (MonoReflectionType *type, MonoBoolean runtimeTypeArray)
{
MonoError error;
MonoReflectionType *rt;
}
ICALL_EXPORT MonoReflectionType*
-ves_icall_Type_MakeGenericType (MonoReflectionType *type, MonoArray *type_array)
+ves_icall_RuntimeType_MakeGenericType (MonoReflectionType *type, MonoArray *type_array)
{
MonoError error;
MonoReflectionType *ret;
}
ICALL_EXPORT gint32
-ves_icall_Type_GetGenericParameterPosition (MonoReflectionType *type)
+ves_icall_RuntimeType_GetGenericParameterPosition (MonoReflectionType *type)
{
if (!IS_MONOTYPE (type))
return -1;
}
ICALL_EXPORT GenericParameterAttributes
-ves_icall_Type_GetGenericParameterAttributes (MonoReflectionType *type)
+ves_icall_RuntimeType_GetGenericParameterAttributes (MonoReflectionType *type)
{
g_assert (IS_MONOTYPE (type));
g_assert (is_generic_parameter (type->type));
}
ICALL_EXPORT MonoArray *
-ves_icall_Type_GetGenericParameterConstraints (MonoReflectionType *type)
+ves_icall_RuntimeType_GetGenericParameterConstraints (MonoReflectionType *type)
{
MonoError error;
MonoReflectionType *rt;
for (count = 0, ptr = param_info->constraints; ptr && *ptr; ptr++, count++)
;
- res = mono_array_new_checked (domain, mono_defaults.monotype_class, count, &error);
+ res = mono_array_new_checked (domain, mono_defaults.runtimetype_class, count, &error);
if (mono_error_set_pending_exception (&error))
return NULL;
for (i = 0; i < count; i++) {
}
ICALL_EXPORT MonoReflectionMethod*
-ves_icall_MonoType_GetCorrespondingInflatedMethod (MonoReflectionType *type,
+ves_icall_RuntimeType_GetCorrespondingInflatedMethod (MonoReflectionType *type,
MonoReflectionMethod* generic)
{
MonoDomain *domain;
}
ICALL_EXPORT MonoReflectionMethod *
-ves_icall_MonoType_get_DeclaringMethod (MonoReflectionType *ref_type)
+ves_icall_RuntimeType_get_DeclaringMethod (MonoReflectionType *ref_type)
{
MonoMethod *method;
MonoType *type = ref_type->type;
}
name = mono_array_get (params, MonoString *, 1);
- str = mono_string_to_utf8 (name);
+ str = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
do {
MonoClassField* field = mono_class_get_field_from_name (k, str);
}
name = mono_array_get (params, MonoString *, 1);
- str = mono_string_to_utf8 (name);
+ str = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
do {
MonoClassField* field = mono_class_get_field_from_name (k, str);
};
ICALL_EXPORT MonoArray*
-ves_icall_Type_GetFields_internal (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoReflectionType *reftype)
+ves_icall_RuntimeType_GetFields_internal (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoReflectionType *reftype)
{
MonoError error;
MonoDomain *domain;
if (name != NULL) {
if (utf8_name == NULL) {
- utf8_name = mono_string_to_utf8 (name);
+ utf8_name = mono_string_to_utf8_checked (name, &error);
+ if (!is_ok (&error))
+ goto fail;
compare_func = (bflags & BFLAGS_IgnoreCase) ? mono_utf8_strcasecmp : strcmp;
}
}
ICALL_EXPORT MonoArray*
-ves_icall_Type_GetMethodsByName (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoBoolean ignore_case, MonoReflectionType *reftype)
+ves_icall_RuntimeType_GetMethodsByName (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoBoolean ignore_case, MonoReflectionType *reftype)
{
static MonoClass *MethodInfo_array;
MonoError error;
return res;
}
- if (name)
- mname = mono_string_to_utf8 (name);
+ if (name) {
+ mname = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
+ }
method_array = mono_class_get_methods_by_name (klass, mname, bflags, ignore_case, FALSE, &ex);
g_free ((char*)mname);
}
ICALL_EXPORT MonoArray*
-ves_icall_Type_GetConstructors_internal (MonoReflectionType *type, guint32 bflags, MonoReflectionType *reftype)
+ves_icall_RuntimeType_GetConstructors_internal (MonoReflectionType *type, guint32 bflags, MonoReflectionType *reftype)
{
MonoDomain *domain;
MonoClass *startklass, *klass, *refklass;
}
ICALL_EXPORT MonoArray*
-ves_icall_Type_GetPropertiesByName (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoBoolean ignore_case, MonoReflectionType *reftype)
+ves_icall_RuntimeType_GetPropertiesByName (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoBoolean ignore_case, MonoReflectionType *reftype)
{
MonoError error;
MonoDomain *domain;
klass = startklass = mono_class_from_mono_type (type->type);
if (name != NULL) {
- propname = mono_string_to_utf8 (name);
+ propname = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
compare_func = (ignore_case) ? mono_utf8_strcasecmp : strcmp;
}
}
ICALL_EXPORT MonoArray*
-ves_icall_Type_GetEvents_internal (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoReflectionType *reftype)
+ves_icall_RuntimeType_GetEvents_internal (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoReflectionType *reftype)
{
MonoError error;
MonoDomain *domain;
if (name != NULL) {
if (utf8_name == NULL) {
- utf8_name = mono_string_to_utf8 (name);
+ utf8_name = mono_string_to_utf8_checked (name, &error);
+ if (!is_ok (&error))
+ goto failure;
compare_func = (bflags & BFLAGS_IgnoreCase) ? mono_utf8_strcasecmp : strcmp;
}
}
ICALL_EXPORT MonoArray*
-ves_icall_Type_GetNestedTypes (MonoReflectionType *type, MonoString *name, guint32 bflags)
+ves_icall_RuntimeType_GetNestedTypes (MonoReflectionType *type, MonoString *name, guint32 bflags)
{
MonoError error;
MonoReflectionType *rt;
domain = ((MonoObject *)type)->vtable->domain;
if (type->type->byref) {
- MonoArray *result = mono_array_new_cached (domain, mono_defaults.monotype_class, 0, &error);
+ MonoArray *result = mono_array_new_cached (domain, mono_defaults.runtimetype_class, 0, &error);
mono_error_set_pending_exception (&error);
return result;
}
if (name != NULL) {
if (str == NULL) {
- str = mono_string_to_utf8 (name);
+ str = mono_string_to_utf8_checked (name, &error);
+ if (!is_ok (&error))
+ goto leave;
mono_identifier_unescape_type_name_chars (str);
}
mono_ptr_array_append (tmp_array, (MonoObject*) rt);
}
- res = mono_array_new_cached (domain, mono_defaults.monotype_class, mono_ptr_array_size (tmp_array), &error);
+ res = mono_array_new_cached (domain, mono_defaults.runtimetype_class, mono_ptr_array_size (tmp_array), &error);
if (!is_ok (&error))
goto leave;
/* On MS.NET, this does not fire a TypeResolve event */
type_resolve = TRUE;
- str = mono_string_to_utf8 (name);
+ str = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
/*g_print ("requested type %s in %s\n", str, assembly->assembly->aname.name);*/
if (!mono_reflection_parse_type (str, &info)) {
g_free (str);
MonoImageOpenStatus status;
MonoReflectionAssembly* result = NULL;
- name = mono_string_to_utf8 (mname);
+ name = mono_string_to_utf8_checked (mname, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
res = mono_assembly_load_with_partial_name (name, &status);
g_free (name);
ves_icall_System_Reflection_Assembly_GetManifestResourceInternal (MonoReflectionAssembly *assembly, MonoString *name, gint32 *size, MonoReflectionModule **ref_module)
{
MonoError error;
- char *n = mono_string_to_utf8 (name);
MonoTableInfo *table = &assembly->assembly->image->tables [MONO_TABLE_MANIFESTRESOURCE];
guint32 i;
guint32 cols [MONO_MANIFEST_SIZE];
const char *val;
MonoImage *module;
+ char *n = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
+
for (i = 0; i < table->rows; ++i) {
mono_metadata_decode_row (table, i, cols, MONO_MANIFEST_SIZE);
val = mono_metadata_string_heap (assembly->assembly->image, cols [MONO_MANIFEST_NAME]);
const char *val;
char *n;
- n = mono_string_to_utf8 (name);
+ n = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
for (i = 0; i < table->rows; ++i) {
mono_metadata_decode_row (table, i, cols, MONO_MANIFEST_SIZE);
val = mono_metadata_string_heap (assembly->assembly->image, cols [MONO_MANIFEST_NAME]);
/* check hash if needed */
if (name) {
- n = mono_string_to_utf8 (name);
+ n = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
+
for (i = 0; i < table->rows; ++i) {
val = mono_metadata_string_heap (assembly->assembly->image, mono_metadata_decode_row_col (table, i, MONO_FILE_NAME));
if (strcmp (val, n) == 0) {
}
ICALL_EXPORT int
-vell_icall_MonoType_get_core_clr_security_level (MonoReflectionType *rfield)
+vell_icall_RuntimeType_get_core_clr_security_level (MonoReflectionType *rfield)
{
MonoError error;
MonoClass *klass = mono_class_from_mono_type (rfield->type);
MonoAssemblyName name;
char *dirname;
- filename = mono_string_to_utf8 (fname);
+ filename = mono_string_to_utf8_checked (fname, &error);
+ if (mono_error_set_pending_exception (&error))
+ return;
dirname = g_path_get_dirname (filename);
replace_shadow_path (mono_domain_get (), dirname, &filename);
} else {
count = tdef->rows - 1;
}
- res = mono_array_new_checked (domain, mono_defaults.monotype_class, count, error);
+ res = mono_array_new_checked (domain, mono_defaults.runtimetype_class, count, error);
return_val_if_nok (error, NULL);
*exceptions = mono_array_new_checked (domain, mono_defaults.exception_class, count, error);
return_val_if_nok (error, NULL);
len1 = mono_array_length (res);
len2 = mono_array_length (res2);
- res3 = mono_array_new_checked (domain, mono_defaults.monotype_class, len1 + len2, &error);
+ res3 = mono_array_new_checked (domain, mono_defaults.runtimetype_class, len1 + len2, &error);
if (mono_error_set_pending_exception (&error))
return NULL;
mono_array_memcpy_refs (res3, 0, res, 0, len1);
mono_array_memcpy_refs (res3, len1, res2, 0, len2);
res = res3;
- ex3 = mono_array_new_checked (domain, mono_defaults.monotype_class, len1 + len2, &error);
+ ex3 = mono_array_new_checked (domain, mono_defaults.runtimetype_class, len1 + len2, &error);
if (mono_error_set_pending_exception (&error))
return NULL;
mono_array_memcpy_refs (ex3, 0, exceptions, 0, len1);
gboolean is_token_defined;
aname.public_key = NULL;
- val = mono_string_to_utf8 (assname);
+ val = mono_string_to_utf8_checked (assname, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
+
if (!mono_assembly_name_parse_full (val, &aname, TRUE, &is_version_defined, &is_token_defined)) {
g_free ((guint8*) aname.public_key);
g_free (val);
int i;
if (!module->image) {
- MonoArray *arr = mono_array_new_checked (mono_object_domain (module), mono_defaults.monotype_class, 0, &error);
+ MonoArray *arr = mono_array_new_checked (mono_object_domain (module), mono_defaults.runtimetype_class, 0, &error);
mono_error_set_pending_exception (&error);
return arr;
} else {
MonoReflectionType *ret;
MonoClass *klass;
int isbyref = 0, rank;
- char *str = mono_string_to_utf8 (smodifiers);
char *p;
+ char *str = mono_string_to_utf8_checked (smodifiers, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
klass = mono_class_from_mono_type (tb->type.type);
p = str;
}
ICALL_EXPORT MonoReflectionType *
-ves_icall_Type_make_array_type (MonoReflectionType *type, int rank)
+ves_icall_RuntimeType_make_array_type (MonoReflectionType *type, int rank)
{
MonoError error;
MonoReflectionType *ret;
}
ICALL_EXPORT MonoReflectionType *
-ves_icall_Type_make_byref_type (MonoReflectionType *type)
+ves_icall_RuntimeType_make_byref_type (MonoReflectionType *type)
{
MonoError error;
MonoReflectionType *ret;
}
ICALL_EXPORT MonoReflectionType *
-ves_icall_Type_MakePointerType (MonoReflectionType *type)
+ves_icall_RuntimeType_MakePointerType (MonoReflectionType *type)
{
MonoError error;
MonoReflectionType *ret;
ICALL_EXPORT MonoString *
ves_icall_System_Environment_GetEnvironmentVariable (MonoString *name)
{
+ MonoError error;
const gchar *value;
gchar *utf8_name;
if (name == NULL)
return NULL;
- utf8_name = mono_string_to_utf8 (name); /* FIXME: this should be ascii */
+ utf8_name = mono_string_to_utf8_checked (name, &error); /* FIXME: this should be ascii */
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
value = g_getenv (utf8_name);
g_free (utf8_name);
g_free (utf16_name);
g_free (utf16_value);
#else
- utf8_name = mono_string_to_utf8 (name); /* FIXME: this should be ascii */
+ utf8_name = mono_string_to_utf8_checked (name, &error); /* FIXME: this should be ascii */
+ if (mono_error_set_pending_exception (&error))
+ return;
if ((value == NULL) || (mono_string_length (value) == 0) || (mono_string_chars (value)[0] == 0)) {
g_unsetenv (utf8_name);
static MonoString *
get_bundled_app_config (void)
{
+ MonoError error;
const gchar *app_config;
MonoDomain *domain;
MonoString *file;
return NULL;
// Retrieve config file and remove the extension
- config_file_name = mono_string_to_utf8 (file);
+ config_file_name = mono_string_to_utf8_checked (file, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
config_file_path = mono_portability_find_file (config_file_name, TRUE);
if (!config_file_path)
config_file_path = config_file_name;
const CultureInfoEntry *ci;
char *n;
- n = mono_string_to_utf8 (name);
+ n = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
ne = (const CultureInfoNameEntry *)mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES,
sizeof (CultureInfoNameEntry), culture_name_locator);
g_free (n);
const CultureInfoNameEntry *ne;
char *n;
- n = mono_string_to_utf8 (name);
+ n = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
ne = (const CultureInfoNameEntry *)mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES,
sizeof (CultureInfoNameEntry), culture_name_locator);
ves_icall_System_Globalization_RegionInfo_construct_internal_region_from_name (MonoRegionInfo *this_obj,
MonoString *name)
{
+ MonoError error;
const RegionInfoNameEntry *ne;
char *n;
- n = mono_string_to_utf8 (name);
+ n = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
ne = (const RegionInfoNameEntry *)mono_binary_search (n, region_name_entries, NUM_REGION_ENTRIES,
sizeof (RegionInfoNameEntry), region_name_locator);
return result;
}
+static char*
+ves_icall_mono_string_to_utf8 (MonoString *str)
+{
+ MonoError error;
+ char *result = mono_string_to_utf8_checked (str, &error);
+ mono_error_set_pending_exception (&error);
+ return result;
+}
+
void
mono_marshal_init (void)
{
register_icall (mono_string_from_byvalwstr, "mono_string_from_byvalwstr", "obj ptr int", FALSE);
register_icall (mono_string_new_wrapper, "mono_string_new_wrapper", "obj ptr", FALSE);
register_icall (mono_string_new_len_wrapper, "mono_string_new_len_wrapper", "obj ptr int", FALSE);
- register_icall (mono_string_to_utf8, "mono_string_to_utf8", "ptr obj", FALSE);
+ register_icall (ves_icall_mono_string_to_utf8, "ves_icall_mono_string_to_utf8", "ptr obj", FALSE);
register_icall (mono_string_to_lpstr, "mono_string_to_lpstr", "ptr obj", FALSE);
register_icall (mono_string_to_ansibstr, "mono_string_to_ansibstr", "ptr object", FALSE);
register_icall (mono_string_builder_to_utf8, "mono_string_builder_to_utf8", "ptr object", FALSE);
return as;
}
#else
- return mono_string_to_utf8 (s);
+ MonoError error;
+ char *result = mono_string_to_utf8_checked (s, &error);
+ mono_error_set_pending_exception (&error);
+ return result;
#endif
}
void
mono_string_to_byvalstr (gpointer dst, MonoString *src, int size)
{
+ MonoError error;
char *s;
int len;
if (!src)
return;
- s = mono_string_to_utf8 (src);
+ s = mono_string_to_utf8_checked (src, &error);
+ if (mono_error_set_pending_exception (&error))
+ return;
len = MIN (size, strlen (s));
if (len >= size)
len--;
if (exc) {
if (((MonoException*)exc)->stack_trace) {
- char *strace = mono_string_to_utf8 (((MonoException*)exc)->stack_trace);
- char *tmp;
- tmp = g_strdup_printf ("%s\nException Rethrown at:\n", strace);
- g_free (strace);
- MONO_OBJECT_SETREF (((MonoException*)exc), stack_trace, mono_string_new (domain, tmp));
- g_free (tmp);
+ MonoError inner_error;
+ char *strace = mono_string_to_utf8_checked (((MonoException*)exc)->stack_trace, &inner_error);
+ if (is_ok (&inner_error)) {
+ char *tmp;
+ tmp = g_strdup_printf ("%s\nException Rethrown at:\n", strace);
+ g_free (strace);
+ MONO_OBJECT_SETREF (((MonoException*)exc), stack_trace, mono_string_new (domain, tmp));
+ g_free (tmp);
+ } else
+ mono_error_cleanup (&inner_error); /* no stack trace, but at least throw the original exception */
}
mono_set_pending_exception ((MonoException*)exc);
}
int
ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf (MonoReflectionType *type, MonoString *field_name)
{
+ MonoError error;
MonoMarshalType *info;
MonoClass *klass;
char *fname;
MONO_CHECK_ARG_NULL (type, 0);
MONO_CHECK_ARG_NULL (field_name, 0);
- fname = mono_string_to_utf8 (field_name);
+ fname = mono_string_to_utf8_checked (field_name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return 0;
klass = mono_class_from_mono_type (type->type);
if (!mono_class_init (klass)) {
mono_set_pending_exception (mono_class_get_exception_for_failure (klass));
gpointer
ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi (MonoString *string)
{
+ MonoError error;
#ifdef HOST_WIN32
char* tres, *ret;
size_t len;
- tres = mono_string_to_utf8 (string);
+ tres = mono_string_to_utf8_checked (string, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
if (!tres)
return tres;
return ret;
#else
- return mono_string_to_utf8 (string);
+ char *ret = mono_string_to_utf8_checked (string, &error);
+ mono_error_set_pending_exception (&error);
+ return ret;
#endif
}
static int
id_from_string (MonoString *instance, gboolean is_process)
{
+ MonoError error;
int id = -1;
if (mono_string_length (instance)) {
- char *id_str = mono_string_to_utf8 (instance);
+ char *id_str = mono_string_to_utf8_checked (instance, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
char *end;
id = strtol (id_str, &end, 0);
if (end == id_str && !is_process)
static void*
network_get_impl (MonoString* counter, MonoString* instance, int *type, MonoBoolean *custom)
{
+ MonoError error;
const CounterDesc *cdesc;
NetworkVtableArg *narg;
ImplVtable *vtable;
*custom = FALSE;
if ((cdesc = get_counter_in_category (&predef_categories [CATEGORY_NETWORK], counter))) {
- instance_name = mono_string_to_utf8 (instance);
+ instance_name = mono_string_to_utf8_checked (instance, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
narg = g_new0 (NetworkVtableArg, 1);
narg->id = cdesc->id;
narg->name = instance_name;
static ImplVtable*
predef_vtable (void *arg, MonoString *instance)
{
+ MonoError error;
MonoSharedArea *area;
PredefVtable *vtable;
- char *pids = mono_string_to_utf8 (instance);
+ char *pids = mono_string_to_utf8_checked (instance, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
int pid;
pid = atoi (pids);
static void*
custom_get_impl (SharedCategory *cat, MonoString* counter, MonoString* instance, int *type)
{
+ MonoError error;
SharedCounter *scounter;
SharedInstance* inst;
char *name;
if (!scounter)
return NULL;
*type = simple_type_to_type [scounter->type];
- name = mono_string_to_utf8 (counter);
+ name = mono_string_to_utf8_checked (counter, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
inst = custom_get_instance (cat, scounter, name);
g_free (name);
if (!inst)
SharedCategory *cat;
/* FIXME: ensure there isn't a category created already */
- mono_error_init (&error);
name = mono_string_to_utf8_checked (category, &error);
if (!mono_error_ok (&error))
goto failure;
int
mono_perfcounter_instance_exists (MonoString *instance, MonoString *category, MonoString *machine)
{
+ MonoError error;
const CategoryDesc *cdesc;
SharedInstance *sinst;
char *name;
scat = find_custom_category (category);
if (!scat)
return FALSE;
- name = mono_string_to_utf8 (instance);
+ name = mono_string_to_utf8_checked (instance, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
sinst = find_custom_instance (scat, name);
g_free (name);
if (sinst)
extern MonoBoolean ves_icall_System_Net_NetworkInformation_MacOsIPInterfaceProperties_ParseRouteInfo_internal(MonoString *iface, MonoArray **gw_addr_list)
{
+ MonoError error;
size_t needed;
in_addr_t in;
int mib[6];
MonoDomain *domain = mono_domain_get ();
- ifacename = mono_string_to_utf8(iface);
+ ifacename = mono_string_to_utf8_checked(iface, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
+
if ((ifindex = if_nametoindex(ifacename)) == 0)
return FALSE;
g_free(ifacename);
MonoType *type;
};
+/* This corresponds to System.RuntimeType */
typedef struct {
MonoReflectionType type;
MonoObject *type_info;
MonoException *exc_to_store = mono_error_convert_to_exception (error);
/* What we really want to do here is clone the error object and store one copy in the
* domain's exception hash and use the other one to error out here. */
+ mono_error_init (error);
mono_error_set_exception_instance (error, exc_to_store);
/*
* Store the exception object so it could be thrown on subsequent
* re-acquire them and check if another thread has created the vtable in the meantime.
*/
/* Special case System.MonoType to avoid infinite recursion */
- if (klass != mono_defaults.monotype_class) {
+ if (klass != mono_defaults.runtimetype_class) {
vt->type = mono_type_get_object_checked (domain, &klass->byval_arg, error);
if (!is_ok (error)) {
mono_domain_unlock (domain);
return NULL;
}
- if (mono_object_get_class ((MonoObject *)vt->type) != mono_defaults.monotype_class)
+ if (mono_object_get_class ((MonoObject *)vt->type) != mono_defaults.runtimetype_class)
/* This is unregistered in
unregister_vtable_reflection_type() in
domain.c. */
klass->runtime_info = runtime_info;
}
- if (klass == mono_defaults.monotype_class) {
+ if (klass == mono_defaults.runtimetype_class) {
vt->type = mono_type_get_object_checked (domain, &klass->byval_arg, error);
if (!is_ok (error)) {
mono_domain_unlock (domain);
return NULL;
}
- if (mono_object_get_class ((MonoObject *)vt->type) != mono_defaults.monotype_class)
+ if (mono_object_get_class ((MonoObject *)vt->type) != mono_defaults.runtimetype_class)
/* This is unregistered in
unregister_vtable_reflection_type() in
domain.c. */
MonoError error;
char *result = mono_string_to_utf8_checked (s, &error);
- if (!mono_error_ok (&error))
- mono_error_raise_exception (&error);
+ if (!is_ok (&error)) {
+ mono_error_cleanup (&error);
+ return NULL;
+ }
return result;
}
MONO_API MonoString*
mono_string_new_utf32 (MonoDomain *domain, const mono_unichar4 *text, int32_t len);
+MONO_RT_EXTERNAL_ONLY
MONO_API char *
mono_string_to_utf8 (MonoString *string_obj);
MonoBoolean
ves_icall_System_Diagnostics_Process_CreateProcess_internal (MonoProcessStartInfo *proc_start_info, HANDLE stdin_handle, HANDLE stdout_handle, HANDLE stderr_handle, MonoProcInfo *process_info)
{
+ MonoError error G_GNUC_UNUSED;
gboolean ret;
gunichar2 *dir;
STARTUPINFO startinfo={0};
free_shell_path = FALSE;
if (cmd) {
gchar *newcmd, *tmp;
- tmp = mono_string_to_utf8 (cmd);
+ tmp = mono_string_to_utf8_checked (cmd, &error);
+ if (mono_error_set_pending_exception (&error)) {
+ g_free (spath);
+ return NULL;
+ }
newcmd = g_strdup_printf ("%s %s", spath, tmp);
cmd = mono_string_new_wrapper (newcmd);
g_free (tmp);
{
MONO_REQ_GC_UNSAFE_MODE;
- char *name = mono_string_to_utf8 (str);
+ MonoError error;
+ char *name = mono_string_to_utf8_checked (str, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
guint32 idx;
idx = string_heap_insert (sh, name);
g_free (name);
} else {
code = mb->code;
if (code == NULL){
- char *name = mono_string_to_utf8 (mb->name);
+ MonoError inner_error;
+ char *name = mono_string_to_utf8_checked (mb->name, &inner_error);
+ if (!is_ok (&inner_error)) {
+ name = g_strdup ("");
+ mono_error_cleanup (&inner_error);
+ }
char *str = g_strdup_printf ("Method %s does not have any IL associated", name);
mono_error_set_argument (error, NULL, "a method does not have any IL associated");
g_free (str);
break;
case MONO_NATIVE_CUSTOM:
if (minfo->guid) {
- str = mono_string_to_utf8 (minfo->guid);
+ str = mono_string_to_utf8_checked (minfo->guid, error);
+ if (!is_ok (error)) {
+ sigbuffer_free (&buf);
+ return 0;
+ }
len = strlen (str);
sigbuffer_add_value (&buf, len);
sigbuffer_add_mem (&buf, str, len);
return 0;
}
str = type_get_fully_qualified_name (marshaltype);
- } else
- str = mono_string_to_utf8 (minfo->marshaltype);
+ } else {
+ str = mono_string_to_utf8_checked (minfo->marshaltype, error);
+ if (!is_ok (error)) {
+ sigbuffer_free (&buf);
+ return 0;
+ }
+ }
len = strlen (str);
sigbuffer_add_value (&buf, len);
sigbuffer_add_mem (&buf, str, len);
sigbuffer_add_value (&buf, 0);
}
if (minfo->mcookie) {
- str = mono_string_to_utf8 (minfo->mcookie);
+ str = mono_string_to_utf8_checked (minfo->mcookie, error);
+ if (!is_ok (error)) {
+ sigbuffer_free (&buf);
+ return 0;
+ }
len = strlen (str);
sigbuffer_add_value (&buf, len);
sigbuffer_add_mem (&buf, str, len);
parent = mono_image_typedef_or_ref (assembly, t);
}
- char *name = mono_string_to_utf8 (method->name);
+ char *name = mono_string_to_utf8_checked (method->name, error);
+ return_val_if_nok (error, 0);
token = mono_image_add_memberef_row (assembly, parent, name, sig);
g_free (name);
parent = mono_image_typedef_or_ref (assembly, type);
}
- name = mono_string_to_utf8 (rmb.name);
+ name = mono_string_to_utf8_checked (rmb.name, error);
+ return_val_if_nok (error, 0);
sig = method_builder_encode_signature (assembly, &rmb, error);
return_val_if_nok (error, 0);
guint32 sig_token = field_encode_signature (assembly, fb, error);
return_val_if_nok (error, 0);
- name = mono_string_to_utf8 (fb->name);
+ name = mono_string_to_utf8_checked (fb->name, error);
+ return_val_if_nok (error, 0);
token = mono_image_get_memberref_token (assembly, &klass->byval_arg, name, sig_token);
g_free (name);
} else if (is_sr_mono_field (mono_object_class (f->fb))) {
sig = method_builder_encode_signature (assembly, &rmb, error);
return_val_if_nok (error, 0);
- name = mono_string_to_utf8 (rmb.name);
+ name = mono_string_to_utf8_checked (rmb.name, error);
+ return_val_if_nok (error, 0);
token = mono_image_get_memberref_token (assembly, &klass->byval_arg, name, sig);
g_free (name);
sig = method_builder_encode_signature (assembly, &rmb, error);
return_val_if_nok (error, 0);
- name = mono_string_to_utf8 (rmb.name);
+ name = mono_string_to_utf8_checked (rmb.name, error);
+ return_val_if_nok (error, 0);
token = mono_image_get_memberref_token (assembly, &klass->byval_arg, name, sig);
g_free (name);
table = &assembly->tables [MONO_TABLE_MEMBERREF];
- name = mono_string_to_utf8 (fb->name);
+ name = mono_string_to_utf8_checked (fb->name, error);
+ return_val_if_nok (error, 0);
if (assembly->save) {
alloc_table (table, table->rows + 1);
goto fail;
}
- name = mono_string_to_utf8 (m->name);
+ name = mono_string_to_utf8_checked (m->name, error);
+ if (!is_ok (error))
+ goto fail;
for (tmp = assembly->array_methods; tmp; tmp = tmp->next) {
am = (ArrayMethod *)tmp->data;
if (strcmp (name, am->name) == 0 &&
table = &assembly->tables [MONO_TABLE_TYPEDEF];
values = table->values + tb->table_idx * MONO_TYPEDEF_SIZE;
values [MONO_TYPEDEF_FLAGS] = tb->attrs;
- n = mono_string_to_utf8 (tb->name);
+ n = mono_string_to_utf8_checked (tb->name, error);
+ return_val_if_nok (error, FALSE);
if (strcmp (n, "Object") == 0)
is_object++;
values [MONO_TYPEDEF_NAME] = string_heap_insert (&assembly->sheap, n);
g_free (n);
- n = mono_string_to_utf8 (tb->nspace);
+ n = mono_string_to_utf8_checked (tb->nspace, error);
+ return_val_if_nok (error, FALSE);
if (strcmp (n, "System") == 0)
is_system++;
values [MONO_TYPEDEF_NAMESPACE] = string_heap_insert (&assembly->sheap, n);
static void
mono_image_fill_file_table (MonoDomain *domain, MonoReflectionModule *module, MonoDynamicImage *assembly)
{
+ MonoError error;
MonoDynamicTable *table;
guint32 *values;
char blob_size [6];
values [MONO_FILE_NAME] = string_heap_insert (&assembly->sheap, module->image->module_name);
if (image_is_dynamic (module->image)) {
/* This depends on the fact that the main module is emitted last */
- dir = mono_string_to_utf8 (((MonoReflectionModuleBuilder*)module)->assemblyb->dir);
+ dir = mono_string_to_utf8_checked (((MonoReflectionModuleBuilder*)module)->assemblyb->dir, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
path = g_strdup_printf ("%s%c%s", dir, G_DIR_SEPARATOR, module->image->module_name);
} else {
dir = NULL;
static void
assembly_add_resource (MonoReflectionModuleBuilder *mb, MonoDynamicImage *assembly, MonoReflectionResource *rsrc)
{
+ MonoError error;
MonoDynamicTable *table;
guint32 *values;
char blob_size [6];
guint32 idx, offset;
if (rsrc->filename) {
- name = mono_string_to_utf8 (rsrc->filename);
+ name = mono_string_to_utf8_checked (rsrc->filename, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
sname = g_path_get_basename (name);
table = &assembly->tables [MONO_TABLE_FILE];
static void
set_version_from_string (MonoString *version, guint32 *values)
{
+ MonoError error;
gchar *ver, *p, *str;
guint32 i;
values [MONO_ASSEMBLY_BUILD_NUMBER] = 0;
if (!version)
return;
- ver = str = mono_string_to_utf8 (version);
+ ver = str = mono_string_to_utf8_checked (version, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
for (i = 0; i < 4; ++i) {
values [MONO_ASSEMBLY_MAJOR_VERSION + i] = strtol (ver, &p, 10);
switch (*p) {
parent = mono_metadata_token_index (parent) << MONO_MEMBERREF_PARENT_BITS;
parent |= MONO_MEMBERREF_PARENT_METHODDEF;
- char *name = mono_string_to_utf8 (rmb.name);
+ char *name = mono_string_to_utf8_checked (rmb.name, error);
+ if (!is_ok (error)) goto fail;
token = mono_image_get_varargs_method_token (
assembly, parent, name, sig_token);
g_free (name);
return_val_if_nok (error, 0);
token = mono_metadata_token_from_dor (mono_image_typedef_or_ref (assembly, type));
}
- } else if (strcmp (klass->name, "MonoType") == 0) {
+ } else if (strcmp (klass->name, "RuntimeType") == 0) {
MonoType *type = mono_reflection_type_get_handle ((MonoReflectionType *)obj, error);
return_val_if_nok (error, 0);
MonoClass *mc = mono_class_from_mono_type (type);
void
mono_image_basic_init (MonoReflectionAssemblyBuilder *assemblyb)
{
+ MonoError error;
MonoDynamicAssembly *assembly;
MonoDynamicImage *image;
MonoDomain *domain = mono_object_domain (assemblyb);
assembly->assembly.dynamic = TRUE;
assembly->assembly.corlib_internal = assemblyb->corlib_internal;
assemblyb->assembly.assembly = (MonoAssembly*)assembly;
- assembly->assembly.basedir = mono_string_to_utf8 (assemblyb->dir);
- if (assemblyb->culture)
- assembly->assembly.aname.culture = mono_string_to_utf8 (assemblyb->culture);
- else
+ assembly->assembly.basedir = mono_string_to_utf8_checked (assemblyb->dir, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
+ if (assemblyb->culture) {
+ assembly->assembly.aname.culture = mono_string_to_utf8_checked (assemblyb->culture, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
+ } else
assembly->assembly.aname.culture = g_strdup ("");
if (assemblyb->version) {
- char *vstr = mono_string_to_utf8 (assemblyb->version);
+ char *vstr = mono_string_to_utf8_checked (assemblyb->version, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
char **version = g_strsplit (vstr, ".", 4);
char **parts = version;
assembly->assembly.aname.major = atoi (*parts++);
assembly->save = assemblyb->access != 1;
assembly->domain = domain;
- image = create_dynamic_mono_image (assembly, mono_string_to_utf8 (assemblyb->name), g_strdup ("RefEmit_YouForgotToDefineAModule"));
+ char *assembly_name = mono_string_to_utf8_checked (assemblyb->name, &error);
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
+ image = create_dynamic_mono_image (assembly, assembly_name, g_strdup ("RefEmit_YouForgotToDefineAModule"));
image->initial_image = TRUE;
assembly->assembly.aname.name = image->image.name;
assembly->assembly.image = &image->image;
mono_error_init (error);
- name = mono_string_to_utf8 (fileName);
+ name = mono_string_to_utf8_checked (fileName, error);
+ return_val_if_nok (error, NULL);
image = mono_image_open (name, &status);
if (!image) {
* determined at assembly save time.
*/
/*image = (MonoDynamicImage*)ab->dynamic_assembly->assembly.image; */
- name = mono_string_to_utf8 (ab->name);
+ name = mono_string_to_utf8_checked (ab->name, error);
+ return_val_if_nok (error, FALSE);
fqname = mono_string_to_utf8_checked (moduleb->module.fqname, error);
if (!is_ok (error)) {
g_free (name);
}
}
/* This is stored in vtables/JITted code so it has to be pinned */
- res = (MonoReflectionType *)mono_object_new_pinned (domain, mono_defaults.monotype_class, error);
+ res = (MonoReflectionType *)mono_object_new_pinned (domain, mono_defaults.runtimetype_class, error);
if (!mono_error_ok (error))
return NULL;
type = mono_reflection_get_type_with_rootimage (rootimage, image, info, ignorecase, &type_resolve, error);
if (type == NULL && !info->assembly.name && image != mono_defaults.corlib) {
+ /* ignore the error and try again */
mono_error_cleanup (error);
+ mono_error_init (error);
image = mono_defaults.corlib;
type = mono_reflection_get_type_with_rootimage (rootimage, image, info, ignorecase, &type_resolve, error);
}
} else if (strcmp (klass->name, "TypeBuilder") == 0) {
MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)obj;
token = tb->table_idx | MONO_TOKEN_TYPE_DEF;
- } else if (strcmp (klass->name, "MonoType") == 0) {
+ } else if (strcmp (klass->name, "RuntimeType") == 0) {
MonoType *type = mono_reflection_type_get_handle ((MonoReflectionType*)obj, error);
return_val_if_nok (error, 0);
MonoClass *mc = mono_class_from_mono_type (type);
return token;
}
+/*
+ * Load the type with name @n on behalf of image @image. On failure sets @error and returns NULL.
+ * The @is_enum flag only affects the error message that's displayed on failure.
+ */
+static MonoType*
+cattr_type_from_name (char *n, MonoImage *image, gboolean is_enum, MonoError *error)
+{
+ MonoError inner_error;
+ MonoType *t = mono_reflection_type_from_name_checked (n, image, &inner_error);
+ if (!t) {
+ mono_error_set_type_load_name (error, g_strdup(n), NULL,
+ "Could not load %s %s while decoding custom attribute: %s",
+ is_enum ? "enum type": "type",
+ n,
+ mono_error_get_message (&inner_error));
+ mono_error_cleanup (&inner_error);
+ return NULL;
+ }
+ return t;
+}
+
static MonoClass*
load_cattr_enum_type (MonoImage *image, const char *p, const char **end, MonoError *error)
{
n = (char *)g_memdup (p, slen + 1);
n [slen] = 0;
- t = mono_reflection_type_from_name_checked (n, image, error);
- if (!t) {
- char *msg = g_strdup (mono_error_get_message (error));
- mono_error_cleanup (error);
- /* We don't free n, it's consumed by mono_error */
- mono_error_set_type_load_name (error, n, NULL, "Could not load enum type %s while decoding custom attribute: %s", n, msg);
- g_free (msg);
- return NULL;
- }
+ t = cattr_type_from_name (n, image, TRUE, error);
g_free (n);
+ return_val_if_nok (error, NULL);
p += slen;
*end = p;
return mono_class_from_mono_type (t);
slen = mono_metadata_decode_value (p, &p);
n = (char *)g_memdup (p, slen + 1);
n [slen] = 0;
- t = mono_reflection_type_from_name_checked (n, image, error);
- if (!t) {
- char *msg = g_strdup (mono_error_get_message (error));
- mono_error_cleanup (error);
- /* We don't free n, it's consumed by mono_error */
- mono_error_set_type_load_name (error, n, NULL, "Could not load type %s while decoding custom attribute: %msg", n, msg);
- g_free (msg);
- return NULL;
- }
+ t = cattr_type_from_name (n, image, FALSE, error);
g_free (n);
+ return_val_if_nok (error, NULL);
*end = p + slen;
rt = mono_type_get_object_checked (mono_domain_get (), t, error);
slen = mono_metadata_decode_value (p, &p);
n = (char *)g_memdup (p, slen + 1);
n [slen] = 0;
- t = mono_reflection_type_from_name_checked (n, image, error);
- if (!t) {
- char *msg = g_strdup (mono_error_get_message (error));
- mono_error_cleanup (error);
- /* We don't free n, it's consumed by mono_error */
- mono_error_set_type_load_name (error, n, NULL, "Could not load type %s while decoding custom attribute: %s", n, msg);
- g_free (msg);
- return NULL;
- }
+ t = cattr_type_from_name (n, image, FALSE, error);
g_free (n);
+ return_val_if_nok (error, NULL);
p += slen;
subc = mono_class_from_mono_type (t);
} else if (subt >= MONO_TYPE_BOOLEAN && subt <= MONO_TYPE_R8) {
mono_error_init (error);
klass = obj->vtable->klass;
- if (klass == mono_defaults.monotype_class) {
+ if (klass == mono_defaults.runtimetype_class) {
MonoType *type = mono_reflection_type_get_handle ((MonoReflectionType *)obj, error);
return_val_if_nok (error, NULL);
klass = mono_class_from_mono_type (type);
MonoClass *klass = mono_object_class (prop);
if (strcmp (klass->name, "PropertyBuilder") == 0) {
MonoReflectionPropertyBuilder *pb = (MonoReflectionPropertyBuilder *)prop;
- *name = mono_string_to_utf8 (pb->name);
+ *name = mono_string_to_utf8_checked (pb->name, error);
+ return_if_nok (error);
*type = mono_reflection_type_get_handle ((MonoReflectionType*)pb->type, error);
} else {
MonoReflectionProperty *p = (MonoReflectionProperty *)prop;
MonoClass *klass = mono_object_class (field);
if (strcmp (klass->name, "FieldBuilder") == 0) {
MonoReflectionFieldBuilder *fb = (MonoReflectionFieldBuilder *)field;
- *name = mono_string_to_utf8 (fb->name);
+ *name = mono_string_to_utf8_checked (fb->name, error);
+ return_if_nok (error);
*type = mono_reflection_type_get_handle ((MonoReflectionType*)fb->type, error);
} else {
MonoReflectionField *f = (MonoReflectionField *)field;
*p++ = 0xFF;
break;
}
- str = mono_string_to_utf8 ((MonoString*)arg);
+ str = mono_string_to_utf8_checked ((MonoString*)arg, error);
+ return_if_nok (error);
slen = strlen (str);
if ((p-buffer) + 10 + slen >= *buflen) {
char *newbuf;
res->data.custom_data.custom_name =
type_get_fully_qualified_name (marshaltyperef);
}
- if (minfo->mcookie)
- res->data.custom_data.cookie = mono_string_to_utf8 (minfo->mcookie);
+ if (minfo->mcookie) {
+ res->data.custom_data.cookie = mono_string_to_utf8_checked (minfo->mcookie, error);
+ if (!is_ok (error)) {
+ image_g_free (image, res);
+ return NULL;
+ }
+ }
break;
default:
event->parent = klass;
event->attrs = eb->attrs;
- event->name = mono_string_to_utf8 (eb->name);
+ event->name = mono_string_to_utf8_checked (eb->name, error);
+ if (!is_ok (error)) {
+ g_free (event);
+ return NULL;
+ }
if (eb->add_method)
event->add = eb->add_method->mhandle;
if (eb->remove_method)
return_val_if_nok (error, NULL);
*handle_class = mono_defaults.string_class;
g_assert (result);
- } else if (strcmp (obj->vtable->klass->name, "MonoType") == 0) {
+ } else if (strcmp (obj->vtable->klass->name, "RuntimeType") == 0) {
MonoType *type = mono_reflection_type_get_handle ((MonoReflectionType*)obj, error);
return_val_if_nok (error, NULL);
MonoClass *mc = mono_class_from_mono_type (type);
/* Find the method */
- name = mono_string_to_utf8 (m->name);
+ name = mono_string_to_utf8_checked (m->name, error);
+ return_val_if_nok (error, NULL);
iter = NULL;
while ((method = mono_class_get_methods (klass, &iter))) {
if (!strcmp (method->name, name))
params [0] = mono_type_get_object_checked (mono_domain_get (), &oklass->byval_arg, error);
return_val_if_nok (error, FALSE);
- res = mono_runtime_try_invoke (method, (MonoObject*)(mono_class_get_ref_info (klass)), params, &exc, error);
+ MonoError inner_error;
+ res = mono_runtime_try_invoke (method, (MonoObject*)(mono_class_get_ref_info (klass)), params, &exc, &inner_error);
- if (exc || !mono_error_ok (error)) {
- mono_error_cleanup (error);
+ if (exc || !is_ok (&inner_error)) {
+ mono_error_cleanup (&inner_error);
return FALSE;
} else
return *(MonoBoolean*)mono_object_unbox (res);
/* unlike most Invoke* cases InvokeMember is not inside System.Reflection[.Emit] but is SecuritySafeCritical */
if (((*kname == 'T') && (strcmp (kname, "Type") == 0)) ||
- ((*kname == 'M') && (strcmp (kname, "MonoType")) == 0)) {
+ ((*kname == 'R') && (strcmp (kname, "RuntimeType")) == 0)) {
/* if calling InvokeMember then we can't stop the stackwalk here and need to look at the caller */
if (strcmp (m->name, "InvokeMember") == 0)
sgen_object_layout_dump (stdout);
}
- sgen_restart_world (0, NULL);
+ sgen_restart_world (0);
binary_protocol_domain_unload_end (domain);
binary_protocol_flush_buffers (FALSE);
}
}
-void
-sgen_client_log_timing (GGTimingInfo *info, mword promoted_size, mword major_used_size)
-{
- SgenMajorCollector *major_collector = sgen_get_major_collector ();
- mword num_major_sections = major_collector->get_num_major_sections ();
- char full_timing_buff [1024];
- full_timing_buff [0] = '\0';
-
- if (!info->is_overflow)
- sprintf (full_timing_buff, "total %.2fms", info->stw_time / 10000.0f);
- if (info->generation == GENERATION_OLD)
- mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MAJOR%s: (%s) pause %.2fms, %s los size: %dK in use: %dK",
- info->is_overflow ? "_OVERFLOW" : "",
- info->reason ? info->reason : "",
- (int)info->total_time / 10000.0f,
- full_timing_buff,
- los_memory_usage_total / 1024,
- los_memory_usage / 1024);
- else
- mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MINOR%s: (%s) pause %.2fms, %s promoted %dK major size: %dK in use: %dK los size: %dK in use: %dK",
- info->is_overflow ? "_OVERFLOW" : "",
- info->reason ? info->reason : "",
- (int)info->total_time / 10000.0f,
- full_timing_buff,
- (int)promoted_size / 1024,
- major_collector->section_size * num_major_sections / 1024,
- major_used_size / 1024,
- los_memory_usage_total / 1024,
- los_memory_usage / 1024);
-}
-
/*
* Debugging
*/
/* LOCKING: assumes the GC lock is held */
void
-sgen_client_restart_world (int generation, GGTimingInfo *timing)
+sgen_client_restart_world (int generation, gint64 *stw_time)
{
TV_DECLARE (end_sw);
TV_DECLARE (start_handshake);
*/
release_gc_locks ();
- if (timing) {
- timing [0].stw_time = usec;
- }
+ *stw_time = usec;
}
void
MonoBoolean
ves_icall_System_Net_Dns_GetHostByName_internal (MonoString *host, MonoString **h_name, MonoArray **h_aliases, MonoArray **h_addr_list)
{
+ MonoError error;
gboolean add_local_ips = FALSE, add_info_ok = TRUE;
gchar this_hostname [256];
MonoAddressInfo *info = NULL;
- char *hostname = mono_string_to_utf8 (host);
- MonoError error;
int hint;
+ char *hostname = mono_string_to_utf8_checked (host, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
+
hint = get_addrinfo_family_hint (&error);
if (!mono_error_ok (&error)) {
mono_error_set_pending_exception (&error);
gchar hostname [NI_MAXHOST] = { 0 };
gboolean ret;
- address = mono_string_to_utf8 (addr);
+ address = mono_string_to_utf8_checked (addr, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
if (inet_pton (AF_INET, address, &saddr.sin_addr ) == 1) {
family = AF_INET;
{
ThreadPoolCounter counter;
MonoInternalThread *thread;
+ gint64 current_ticks;
gint32 now;
mono_coop_mutex_lock (&threadpool->worker_creation_lock);
mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker", mono_native_thread_id_get ());
-
- if ((now = mono_100ns_ticks () / 10 / 1000 / 1000) == 0) {
+ current_ticks = mono_100ns_ticks ();
+ now = current_ticks / (10 * 1000 * 1000);
+ if (0 == current_ticks) {
g_warning ("failed to get 100ns ticks");
} else {
if (threadpool->worker_creation_current_second != now) {
UNLOCK_THREAD (this_obj);
if (this_obj->name && this_obj->tid) {
- char *tname = mono_string_to_utf8 (name);
+ char *tname = mono_string_to_utf8_checked (name, error);
+ return_if_nok (error);
mono_profiler_thread_name (this_obj->tid, tname);
mono_native_thread_set_name (thread_get_tid (this_obj), tname);
mono_free (tname);
if test -d $(top_srcdir)/.git; then \
(cd $(top_srcdir); \
LANG=C; export LANG; \
- branch=`git branch | grep '^\*' | sed 's/(detached from .*/explicit/' | cut -d ' ' -f 2`; \
+ if test -z "$$ghprbPullId"; then \
+ branch=`git branch | grep '^\*' | sed 's/(detached from .*/explicit/' | cut -d ' ' -f 2`; \
+ else \
+ branch="pull-request-$$ghprbPullId"; \
+ fi; \
version=`git log --no-color --first-parent -n1 --pretty=format:%h`; \
echo "#define FULL_VERSION \"$$branch/$$version\""; \
); \
MonoAotFileFlags flags;
MonoDynamicStream blob;
gboolean blob_closed;
- MonoClass **typespec_classes;
+ GHashTable *typespec_classes;
GString *llc_args;
GString *as_args;
char *assembly_name_sym;
/* FIXME: Search referenced images as well */
if (!acfg->typespec_classes) {
- acfg->typespec_classes = (MonoClass **)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoClass*) * len);
- for (i = 0; i < len; ++i) {
+ acfg->typespec_classes = g_hash_table_new (NULL, NULL);
+ for (i = 0; i < len; i++) {
MonoError error;
- acfg->typespec_classes [i] = mono_class_get_and_inflate_typespec_checked (acfg->image, MONO_TOKEN_TYPE_SPEC | (i + 1), NULL, &error);
+ int typespec = MONO_TOKEN_TYPE_SPEC | (i + 1);
+ MonoClass *klass_key = mono_class_get_and_inflate_typespec_checked (acfg->image, typespec, NULL, &error);
g_assert (mono_error_ok (&error)); /* FIXME error handling */
+ g_hash_table_insert (acfg->typespec_classes, klass_key, GINT_TO_POINTER (typespec));
}
}
- for (i = 0; i < len; ++i) {
- if (acfg->typespec_classes [i] == klass)
- break;
- }
-
- if (i < len)
- return MONO_TOKEN_TYPE_SPEC | (i + 1);
- else
- return 0;
+ return GPOINTER_TO_INT (g_hash_table_lookup (acfg->typespec_classes, klass));
}
static void
g_hash_table_destroy (acfg->image_hash);
g_hash_table_destroy (acfg->unwind_info_offsets);
g_hash_table_destroy (acfg->method_label_hash);
+ if (!acfg->typespec_classes)
+ g_hash_table_destroy (acfg->typespec_classes);
g_hash_table_destroy (acfg->export_names);
g_hash_table_destroy (acfg->plt_entry_debug_sym_cache);
g_hash_table_destroy (acfg->klass_blob_hash);
gboolean err;
MethodRef ref;
gboolean res;
+ gpointer addr;
+ MonoError inner_error;
mono_error_init (error);
return NULL;
for (i = 0; i < slot; ++i) {
- decode_method_ref (amodule, &ref, p, &p, error);
- mono_error_cleanup (error); /* FIXME don't swallow the error */
+ decode_method_ref (amodule, &ref, p, &p, &inner_error);
+ mono_error_cleanup (&inner_error); /* FIXME don't swallow the error */
}
- res = decode_method_ref (amodule, &ref, p, &p, error);
- mono_error_cleanup (error); /* FIXME don't swallow the error */
+ res = decode_method_ref (amodule, &ref, p, &p, &inner_error);
+ mono_error_cleanup (&inner_error); /* FIXME don't swallow the error */
if (!res)
return NULL;
if (ref.no_aot_trampoline)
if (mono_metadata_token_index (ref.token) == 0 || mono_metadata_token_table (ref.token) != MONO_TABLE_METHOD)
return NULL;
- return mono_aot_get_method_from_token (domain, ref.image, ref.token, error);
+ addr = mono_aot_get_method_from_token (domain, ref.image, ref.token, error);
+ return addr;
}
gboolean
MonoError error;
res = init_method (amodule, method_index, method, init_class, context, &error);
- /* Its okay to raise in llvmonly mode */
if (!is_ok (&error)) {
MonoException *ex = mono_error_convert_to_exception (&error);
+ /* Its okay to raise in llvmonly mode */
if (ex)
mono_llvm_throw_exception ((MonoObject*)ex);
}
MonoAotModule *amodule = (MonoAotModule *)klass->image->aot_module;
guint8 *code;
gboolean cache_result = FALSE;
+ MonoError inner_error;
mono_error_init (error);
if (method_index == 0xffffff && method->wrapper_type == MONO_WRAPPER_MANAGED_TO_MANAGED && method->klass->rank && strstr (method->name, "System.Collections.Generic")) {
MonoMethod *m = mono_aot_get_array_helper_from_wrapper (method);
- code = (guint8 *)mono_aot_get_method_checked (domain, m, error);
+ code = (guint8 *)mono_aot_get_method_checked (domain, m, &inner_error);
+ mono_error_cleanup (&inner_error);
if (code)
return code;
- if (!is_ok (error))
- return NULL;
}
/*
* Get the code for the <object> instantiation which should be emitted into
* the mscorlib aot image by the AOT compiler.
*/
- code = (guint8 *)mono_aot_get_method_checked (domain, m, error);
+ code = (guint8 *)mono_aot_get_method_checked (domain, m, &inner_error);
+ mono_error_cleanup (&inner_error);
if (code)
return code;
- if (!is_ok (error))
- return NULL;
}
/* Same for CompareExchange<T> and Exchange<T> */
* Get the code for the <object> instantiation which should be emitted into
* the mscorlib aot image by the AOT compiler.
*/
- code = (guint8 *)mono_aot_get_method_checked (domain, m, error);
+ code = (guint8 *)mono_aot_get_method_checked (domain, m, &inner_error);
+ mono_error_cleanup (&inner_error);
if (code)
return code;
- if (!is_ok (error))
- return NULL;
}
/* For ARRAY_ACCESSOR wrappers with reference types, use the <object> instantiation saved in corlib */
m = mono_marshal_get_array_accessor_wrapper (m);
if (m != method) {
- code = (guint8 *)mono_aot_get_method_checked (domain, m, error);
+ code = (guint8 *)mono_aot_get_method_checked (domain, m, &inner_error);
+ mono_error_cleanup (&inner_error);
if (code)
return code;
- if (!is_ok (error))
- return NULL;
}
}
}
MonoError error;
gpointer res = mono_aot_get_method_checked (domain, method, &error);
- /* This is a public api function so it can raise exceptions */
+ /* This is external only, so its ok to raise here */
mono_error_raise_exception (&error);
return res;
}
}
gpointer
-mono_aot_get_method_checked (MonoDomain *domain, MonoMethod *method, MonoError *error)
+mono_aot_get_method_checked (MonoDomain *domain,
+ MonoMethod *method, MonoError *error);
{
+ mono_error_init (error);
return NULL;
}
gpointer
mono_aot_get_method_from_token (MonoDomain *domain, MonoImage *image, guint32 token, MonoError *error)
{
+ mono_error_init (error);
return NULL;
}
gpointer
mono_aot_get_method_from_vt_slot (MonoDomain *domain, MonoVTable *vtable, int slot, MonoError *error)
{
+ mono_error_init (error);
+
return NULL;
}
int hash = 0;
if (obj == NULL)
- return 0;
+ return NULL;
if (suspend_count) {
/*
static inline int
get_objid (MonoObject *obj)
{
- return get_objref (obj)->id;
+ if (!obj)
+ return 0;
+ else
+ return get_objref (obj)->id;
}
/*
ecount ++;
- if (!thread)
- thread = mono_thread_current ();
+ if (event == EVENT_KIND_VM_DEATH) {
+ thread = NULL;
+ } else {
+ if (!thread)
+ thread = mono_thread_current ();
- if (event == EVENT_KIND_VM_START && arg != NULL)
- thread = (MonoThread *)arg;
+ if (event == EVENT_KIND_VM_START && arg != NULL)
+ thread = (MonoThread *)arg;
+ }
buffer_add_objid (&buf, (MonoObject*)thread); // thread
static void
runtime_shutdown (MonoProfiler *prof)
{
- process_profiler_event (EVENT_KIND_VM_DEATH, mono_thread_current ());
+ process_profiler_event (EVENT_KIND_VM_DEATH, NULL);
mono_debugger_agent_cleanup ();
}
code = mono_jit_find_compiled_method_with_jit_info (domain, method, &ji);
if (!code) {
- MonoError error;
+ MonoError oerror;
/* Might be AOTed code */
- code = mono_aot_get_method_checked (domain, method, &error);
+ code = mono_aot_get_method_checked (domain, method, &oerror);
g_assert (code);
+ mono_error_assert_ok (&oerror);
ji = mono_jit_info_table_find (domain, (char *)code);
g_assert (ji);
}
void
mono_debugger_agent_debug_log (int level, MonoString *category, MonoString *message)
{
+ MonoError error;
int suspend_policy;
GSList *events;
EventInfo ei;
mono_loader_unlock ();
ei.level = level;
- ei.category = category ? mono_string_to_utf8 (category) : NULL;
- ei.message = message ? mono_string_to_utf8 (message) : NULL;
+ ei.category = NULL;
+ if (category) {
+ ei.category = mono_string_to_utf8_checked (category, &error);
+ mono_error_cleanup (&error);
+ }
+ ei.message = NULL;
+ if (message) {
+ ei.message = mono_string_to_utf8_checked (message, &error);
+ mono_error_cleanup (&error);
+ }
process_event (EVENT_KIND_USER_LOG, &ei, 0, NULL, events, suspend_policy);
static void
buffer_add_cattr_arg (Buffer *buf, MonoType *t, MonoDomain *domain, MonoObject *val)
{
- if (val && val->vtable->klass == mono_defaults.monotype_class) {
+ if (val && val->vtable->klass == mono_defaults.runtimetype_class) {
/* Special case these so the client doesn't have to handle Type objects */
buffer_add_byte (buf, VALUE_TYPE_ID_TYPE);
s = mono_ldstr_checked (domain, method->klass->image, mono_metadata_token_index (token), &error);
mono_error_assert_ok (&error); /* FIXME don't swallow the error */
- s2 = mono_string_to_utf8 (s);
+ s2 = mono_string_to_utf8_checked (s, &error);
+ mono_error_assert_ok (&error);
buffer_add_byte (buf, TOKEN_TYPE_STRING);
buffer_add_string (buf, s2);
break;
}
default: {
+ MonoError error;
gpointer val;
MonoClass *handle_class;
break;
}
} else {
- MonoError error;
val = mono_ldtoken_checked (method->klass->image, token, &handle_class, NULL, &error);
if (!val)
g_error ("Could not load token due to %s", mono_error_get_message (&error));
} else if (handle_class == mono_defaults.string_class) {
char *s;
- s = mono_string_to_utf8 ((MonoString *)val);
+ s = mono_string_to_utf8_checked ((MonoString *)val, &error);
+ mono_error_assert_ok (&error);
buffer_add_byte (buf, TOKEN_TYPE_STRING);
buffer_add_string (buf, s);
g_free (s);
buffer_add_int (buf, mono_string_length (str) * 2);
buffer_add_data (buf, (guint8*)mono_string_chars (str), mono_string_length (str) * 2);
} else {
- s = mono_string_to_utf8 (str);
+ MonoError error;
+ s = mono_string_to_utf8_checked (str, &error);
+ mono_error_assert_ok (&error);
buffer_add_string (buf, s);
g_free (s);
}
if (verbose >= 2)
g_print ("Running '%s' ...\n", method->name);
#ifdef MONO_USE_AOT_COMPILER
- if ((func = (TestMethod)mono_aot_get_method_checked (mono_get_root_domain (), method, &error)))
- ;
- else
-#endif
+ MonoError error;
+ func = (TestMethod)mono_aot_get_method_checked (mono_get_root_domain (), method, &error);
+ mono_error_cleanup (&error);
+ if (!func)
func = (TestMethod)(gpointer)cfg->native_code;
+#else
+ func = (TestMethod)(gpointer)cfg->native_code;
+#endif
func = (TestMethod)mono_create_ftnptr (mono_get_root_domain (), func);
result = func ();
if (result != expected) {
#define NEW_LDSTRLITCONST(cfg,dest,val) NEW_AOTCONST ((cfg), (dest), MONO_PATCH_INFO_LDSTR_LIT, (val))
-#define NEW_TYPE_FROM_HANDLE_CONST(cfg,dest,image,token,generic_context) NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_TYPE_FROM_HANDLE, (image), (token), (generic_context), STACK_OBJ, mono_defaults.monotype_class)
+#define NEW_TYPE_FROM_HANDLE_CONST(cfg,dest,image,token,generic_context) NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_TYPE_FROM_HANDLE, (image), (token), (generic_context), STACK_OBJ, mono_defaults.runtimetype_class)
#define NEW_LDTOKENCONST(cfg,dest,image,token,generic_context) NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), (generic_context), STACK_PTR, NULL)
#define EMIT_NEW_LDSTRLITCONST(cfg,dest,val) do { NEW_AOTCONST ((cfg), (dest), MONO_PATCH_INFO_LDSTR_LIT, (val)); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
-#define EMIT_NEW_TYPE_FROM_HANDLE_CONST(cfg,dest,image,token,generic_context) do { NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_TYPE_FROM_HANDLE, (image), (token), (generic_context), STACK_OBJ, mono_defaults.monotype_class); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
+#define EMIT_NEW_TYPE_FROM_HANDLE_CONST(cfg,dest,image,token,generic_context) do { NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_TYPE_FROM_HANDLE, (image), (token), (generic_context), STACK_OBJ, mono_defaults.runtimetype_class); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
#define EMIT_NEW_LDTOKENCONST(cfg,dest,image,token,generic_context) do { NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), (generic_context), STACK_PTR, NULL); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
/* Avoid loading metadata or creating a generic vtable if possible */
addr = mono_aot_get_method_from_vt_slot (mono_domain_get (), vt, slot, &error);
- mono_error_assert_ok (&error); /* FIXME don't swallow the error */
+ mono_error_raise_exception (&error); // FIXME: Don't raise here
if (addr && !vt->klass->valuetype)
return mono_create_ftnptr (mono_domain_get (), addr);
if (ex)
mono_raise_exception (ex);
}
+
+void
+mono_throw_method_access (MonoMethod *callee, MonoMethod *caller)
+{
+ char *callee_name = mono_method_full_name (callee, 1);
+ char *caller_name = mono_method_full_name (caller, 1);
+ MonoError error;
+
+ mono_error_init (&error);
+ mono_error_set_generic_error (&error, "System", "MethodAccessException", "Method `%s' is inaccessible from method `%s'\n", callee_name, caller_name);
+ mono_error_set_pending_exception (&error);
+ g_free (callee_name);
+ g_free (caller_name);
+}
double mono_ckfinite (double d);
+void mono_throw_method_access (MonoMethod *callee, MonoMethod *caller);
+
#endif /* __MONO_JIT_ICALLS_H__ */
MONO_API MonoJitInfo *
mono_get_jit_info_from_method (MonoDomain *domain, MonoMethod *method);
-MONO_RT_EXTERNAL_ONLY MONO_API void *
+MONO_API MONO_RT_EXTERNAL_ONLY void *
mono_aot_get_method (MonoDomain *domain, MonoMethod *method);
MONO_END_DECLS
ins->inst_destbasereg = def->sreg1;
ins->inst_offset += def->inst_imm;
}
+
+ if (!MONO_IS_STORE_MEMBASE (ins) && !vreg_is_volatile (cfg, ins->dreg)) {
+ defs [ins->dreg] = ins;
+ def_index [ins->dreg] = ins_index;
+ }
}
- if ((spec [MONO_INST_DEST] != ' ') && !MONO_IS_STORE_MEMBASE (ins) && !vreg_is_volatile (cfg, ins->dreg)) {
- defs [ins->dreg] = ins;
- def_index [ins->dreg] = ins_index;
- }
-
if (MONO_IS_CALL (ins))
last_call_index = ins_index;
if (cfg->exception_type != MONO_EXCEPTION_NONE) \
goto exception_exit; \
} while (0)
-#define METHOD_ACCESS_FAILURE(method, cmethod) do { \
- method_access_failure ((cfg), (method), (cmethod)); \
- goto exception_exit; \
- } while (0)
#define FIELD_ACCESS_FAILURE(method, field) do { \
field_access_failure ((cfg), (method), (field)); \
goto exception_exit; \
G_BREAKPOINT ();
}
-static MONO_NEVER_INLINE void
-method_access_failure (MonoCompile *cfg, MonoMethod *method, MonoMethod *cil_method)
-{
- char *method_fname = mono_method_full_name (method, TRUE);
- char *cil_method_fname = mono_method_full_name (cil_method, TRUE);
- mono_cfg_set_exception (cfg, MONO_EXCEPTION_MONO_ERROR);
- mono_error_set_generic_error (&cfg->error, "System", "MethodAccessException", "Method `%s' is inaccessible from method `%s'\n", cil_method_fname, method_fname);
- g_free (method_fname);
- g_free (cil_method_fname);
-}
-
static MONO_NEVER_INLINE void
field_access_failure (MonoCompile *cfg, MonoMethod *method, MonoClassField *field)
{
return ins;
}
+
+static void
+emit_method_access_failure (MonoCompile *cfg, MonoMethod *method, MonoMethod *cil_method)
+{
+ MonoInst *args [16];
+
+ args [0] = emit_get_rgctx_method (cfg, mono_method_check_context_used (method), method, MONO_RGCTX_INFO_METHOD);
+ args [1] = emit_get_rgctx_method (cfg, mono_method_check_context_used (cil_method), cil_method, MONO_RGCTX_INFO_METHOD);
+
+ mono_emit_jit_icall (cfg, mono_throw_method_access, args);
+}
+
static MonoMethod*
get_memcpy_method (void)
{
MONO_INST_NEW (cfg, ins, OP_OBJC_GET_SELECTOR);
ins->dreg = mono_alloc_ireg (cfg);
// FIXME: Leaks
- ins->inst_p0 = mono_string_to_utf8 (s);
+ ins->inst_p0 = mono_string_to_utf8_checked (s, &cfg->error);
+ return_val_if_nok (&cfg->error, NULL);
MONO_ADD_INS (cfg->cbb, ins);
return ins;
}
}
if (!mono_method_can_access_method (method_definition, target_method) &&
!mono_method_can_access_method (method, cil_method))
- METHOD_ACCESS_FAILURE (method, cil_method);
+ emit_method_access_failure (cfg, method, cil_method);
}
if (mono_security_core_clr_enabled ())
cil_method = cmethod;
if (!dont_verify && !cfg->skip_visibility && !mono_method_can_access_method (method, cmethod))
- METHOD_ACCESS_FAILURE (method, cil_method);
+ emit_method_access_failure (cfg, method, cil_method);
if (mono_security_core_clr_enabled ())
ensure_method_is_allowed_to_call_method (cfg, method, cmethod);
}
}
+ MonoError isinst_error;
+ mono_error_init (&isinst_error);
if (ei->flags == MONO_EXCEPTION_CLAUSE_NONE && mono_object_isinst_checked (ex_obj, catch_class, &error)) {
setup_stack_trace (mono_ex, dynamic_methods, initial_trace_ips, &trace_ips);
g_slist_free (dynamic_methods);
MONO_CONTEXT_SET_IP (ctx, ei->handler_start);
return TRUE;
}
- mono_error_cleanup (&error);
+ mono_error_cleanup (&isinst_error);
}
}
mono_error_assert_ok (&error);
}
if (msg == NULL) {
- msg = message ? mono_string_to_utf8 ((MonoString *) message) : g_strdup ("(System.Exception.Message property not available)");
+ if (message) {
+ msg = mono_string_to_utf8_checked ((MonoString *) message, &error);
+ if (!is_ok (&error)) {
+ mono_error_cleanup (&error);
+ msg = g_strdup ("(error while display System.Exception.Message property)");
+ }
+ } else {
+ msg = g_strdup ("(System.Exception.Message property not available)");
+ }
}
g_print ("[%p:] EXCEPTION handling: %s.%s: %s\n", (void*)mono_native_thread_id_get (), mono_object_class (obj)->name_space, mono_object_class (obj)->name, msg);
g_free (msg);
MonoString *str = mono_object_to_string (exc, &other);
char *msg = NULL;
- if (str)
- msg = mono_string_to_utf8 (str);
+ if (str) {
+ MonoError inner_error;
+ msg = mono_string_to_utf8_checked (str, &inner_error);
+ if (!is_ok (&inner_error)) {
+ msg = g_strdup_printf ("Nested exception while formatting original exception");
+ mono_error_cleanup (&inner_error);
+ }
+ }
else if (other) {
char *original_backtrace = mono_exception_get_managed_backtrace ((MonoException*)exc);
char *nested_backtrace = mono_exception_get_managed_backtrace ((MonoException*)other);
int i;
if (!MONO_TYPE_ISSTRUCT (t))
- return &mono_defaults.int_class->byval_arg;
+ return get_wrapper_shared_type (&mono_defaults.object_class->byval_arg);
klass = mono_class_from_mono_type (t);
orig_ctx = &klass->generic_class->context;
MINI_OP(OP_IL_SEQ_POINT, "il_seq_point", NONE, NONE, NONE)
MINI_OP(OP_IMPLICIT_EXCEPTION, "implicit_exception", NONE, NONE, NONE)
+/* CALL opcodes need to stay together, see MONO_IS_CALL macro */
MINI_OP(OP_VOIDCALL, "voidcall", NONE, NONE, NONE)
MINI_OP(OP_VOIDCALL_REG, "voidcall_reg", NONE, IREG, NONE)
MINI_OP(OP_VOIDCALL_MEMBASE, "voidcall_membase", NONE, IREG, NONE)
register_icall (mono_llvmonly_init_delegate_virtual, "mono_llvmonly_init_delegate_virtual", "void object object ptr", TRUE);
register_icall (mono_get_assembly_object, "mono_get_assembly_object", "object ptr", TRUE);
register_icall (mono_get_method_object, "mono_get_method_object", "object ptr", TRUE);
+ register_icall (mono_throw_method_access, "mono_throw_method_access", "void ptr ptr", FALSE);
register_icall_with_wrapper (mono_monitor_enter, "mono_monitor_enter", "void obj");
register_icall_with_wrapper (mono_monitor_enter_v4, "mono_monitor_enter_v4", "void obj ptr");
#include <mono/metadata/appdomain.h>
#include <mono/metadata/debug-helpers.h>
#include <mono/metadata/profiler-private.h>
+#include <mono/utils/mono-error.h>
+#include <mono/utils/mono-error-internals.h>
#include <mono/utils/mono-math.h>
#include <mono/utils/mono-mmap.h>
#include <mono/utils/mono-hwcap-s390x.h>
/* */
/*------------------------------------------------------------------*/
+static void
+decodeParmString (MonoString *s)
+{
+ MonoError error;
+ char *str = mono_string_to_utf8_checked(s, &error);
+ if (is_ok (&error)) {
+ printf("[STRING:%p:%s], ", s, str);
+ g_free (str);
+ } else {
+ mono_error_cleanup (&error);
+ printf("[STRING:%p:], ", s);
+ }
+}
+
static void
decodeParm(MonoType *type, void *curParm, int size)
{
MonoString *s = *((MonoString **) curParm);
if (s) {
g_assert (((MonoObject *) s)->vtable->klass == mono_defaults.string_class);
- printf("[STRING:%p:%s], ", s, mono_string_to_utf8(s));
+ decodeParmString (s);
} else {
printf("[STRING:null], ");
}
klass = obj->vtable->klass;
printf("%p [%p] ",obj,curParm);
if (klass == mono_defaults.string_class) {
- printf("[STRING:%p:%s]",
- obj, mono_string_to_utf8 ((MonoString *) obj));
+ decodeParmString ((MonoString *)obj);
} else if (klass == mono_defaults.int32_class) {
printf("[INT32:%p:%d]",
obj, *(gint32 *)((char *)obj + sizeof (MonoObject)));
if (obj->vtable) {
klass = obj->vtable->klass;
if (klass == mono_defaults.string_class) {
- printf ("this:[STRING:%p:%s], ",
- obj, mono_string_to_utf8 ((MonoString *)obj));
+ printf ("this:");
+ decodeParmString((MonoString *)obj);
} else {
printf ("this:%p[%s.%s], ",
obj, klass->name_space, klass->name);
;
if (s) {
g_assert (((MonoObject *)s)->vtable->klass == mono_defaults.string_class);
- printf ("[STRING:%p:%s]", s, mono_string_to_utf8 (s));
+ decodeParmString (s);
} else
printf ("[STRING:null], ");
break;
g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
} else {
MonoError error;
+
/* Avoid loading metadata or creating a generic vtable if possible */
if (lookup_aot && !vt->klass->valuetype) {
aot_addr = (guint8 *)mono_aot_get_method_from_vt_slot (mono_domain_get (), vt, interface_offset + mono_method_get_vtable_slot (imt_method), &error);
- g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
+ mono_error_raise_exception (&error); // FIXME: Don't raise here
} else {
aot_addr = NULL;
}
/* Avoid loading metadata or creating a generic vtable if possible */
addr = mono_aot_get_method_from_vt_slot (mono_domain_get (), vt, slot, &error);
- if (!is_ok (&error)) {
- mono_error_set_pending_exception (&error);
- return NULL;
- }
+ mono_error_raise_exception (&error); /* FIXME don't raise here */
if (addr && !vt->klass->valuetype) {
if (mono_domain_owns_vtable_slot (mono_domain_get (), vtable_slot))
*vtable_slot = addr;
token = *(guint32*)(gpointer)token_info;
addr = mono_aot_get_method_from_token (mono_domain_get (), image, token, &error);
+ if (!is_ok (&error))
+ mono_error_cleanup (&error);
if (!addr) {
- if (!is_ok (&error))
- g_error ("Could not load AOT method due to %s", mono_error_get_message (&error));
method = mono_get_method_checked (image, token, NULL, NULL, &error);
if (!method)
- g_error ("Could not load AOT method due to %s", mono_error_get_message (&error));
+ g_error ("Could not load AOT trampoline due to %s", mono_error_get_message (&error));
/* Use the generic code */
return mono_magic_trampoline (regs, code, method, tramp);
#define MONO_IS_STORE_MEMBASE(ins) (((ins)->opcode >= OP_STORE_MEMBASE_REG && (ins)->opcode <= OP_STOREV_MEMBASE) || ((ins)->opcode >= OP_ATOMIC_STORE_I1 && (ins)->opcode <= OP_ATOMIC_STORE_R8))
#define MONO_IS_STORE_MEMINDEX(ins) (((ins)->opcode >= OP_STORE_MEMINDEX) && ((ins)->opcode <= OP_STORER8_MEMINDEX))
-#define MONO_IS_CALL(ins) (((ins->opcode >= OP_VOIDCALL) && (ins->opcode <= OP_VOIDCALL_MEMBASE)) || ((ins->opcode >= OP_FCALL) && (ins->opcode <= OP_FCALL_MEMBASE)) || ((ins->opcode >= OP_LCALL) && (ins->opcode <= OP_LCALL_MEMBASE)) || ((ins->opcode >= OP_VCALL) && (ins->opcode <= OP_VCALL_MEMBASE)) || ((ins->opcode >= OP_CALL) && (ins->opcode <= OP_CALL_MEMBASE)) || ((ins->opcode >= OP_VCALL2) && (ins->opcode <= OP_VCALL2_MEMBASE)) || (ins->opcode == OP_TAILCALL) || ((ins->opcode >= OP_RCALL) && (ins->opcode <= OP_RCALL_MEMBASE)))
+// OP_DYN_CALL is not a MonoCallInst
+#define MONO_IS_CALL(ins) (((ins->opcode >= OP_VOIDCALL) && (ins->opcode <= OP_VCALL2_MEMBASE)) || (ins->opcode == OP_TAILCALL))
#define MONO_IS_JUMP_TABLE(ins) (((ins)->opcode == OP_JUMP_TABLE) ? TRUE : ((((ins)->opcode == OP_AOTCONST) && (ins->inst_i1 == (gpointer)MONO_PATCH_INFO_SWITCH)) ? TRUE : ((ins)->opcode == OP_SWITCH) ? TRUE : ((((ins)->opcode == OP_GOT_ENTRY) && ((ins)->inst_right->inst_i1 == (gpointer)MONO_PATCH_INFO_SWITCH)) ? TRUE : FALSE)))
g_free (as);
} else if (klass == mono_defaults.int32_class) {
printf ("[INT32:%p:%d], ", o, *(gint32 *)((char *)o + sizeof (MonoObject)));
- } else if (klass == mono_defaults.monotype_class) {
+ } else if (klass == mono_defaults.runtimetype_class) {
printf ("[TYPE:%s], ", mono_type_full_name (((MonoReflectionType*)o)->type));
} else
printf ("[%s.%s:%p], ", klass->name_space, klass->name, o);
prop = mono_class_get_property_from_name (klass, "StackTrace");
str = (MonoString*)mono_property_get_value_checked (prop, NULL, NULL, &error);
mono_error_assert_ok (&error);
- stack_trace = mono_string_to_utf8 (str);
+ stack_trace = mono_string_to_utf8_checked (str, &error);
+ mono_error_assert_ok (&error);
fprintf (stdout, "-= Stack Trace =-\n%s\n\n", stack_trace);
g_free (stack_trace);
static gboolean saved_strings_find_func (gpointer key, gpointer value, gpointer user_data)
{
+ MonoError error;
SavedStringFindInfo *info = (SavedStringFindInfo*)user_data;
SavedString *saved = (SavedString*)value;
gchar *utf_str;
if (!info || !saved || mono_string_length (saved->string) != info->len)
return FALSE;
- utf_str = mono_string_to_utf8 (saved->string);
+ utf_str = mono_string_to_utf8_checked (saved->string, &error);
+ mono_error_assert_ok (&error);
hash = do_calc_string_hash (0, utf_str);
g_free (utf_str);
* single-threaded programs this is a nop.
*/
void sgen_client_stop_world (int generation);
-void sgen_client_restart_world (int generation, GGTimingInfo *timing);
+void sgen_client_restart_world (int generation, gint64 *stw_time);
/*
* Must return FALSE. The bridge is not supported outside of Mono.
void sgen_client_mark_togglerefs (char *start, char *end, ScanCopyContext ctx);
void sgen_client_clear_togglerefs (char *start, char *end, ScanCopyContext ctx);
-/*
- * Called after collections, reporting the amount of time they took. No action is
- * necessary.
- */
-void sgen_client_log_timing (GGTimingInfo *info, mword promoted_size, mword major_used_size);
-
/*
* Called to handle `MONO_GC_PARAMS` and `MONO_GC_DEBUG` options. The `handle` functions
* must return TRUE if they have recognized and processed the option, FALSE otherwise.
break;
}
- if (ref->vtable->klass == mono_defaults.string_class)
- str = mono_string_to_utf8 ((MonoString*)ref);
- else
+ if (ref->vtable->klass == mono_defaults.string_class) {
+ MonoError error;
+ str = mono_string_to_utf8_checked ((MonoString*)ref, &error);
+ mono_error_cleanup (&error);
+ } else
str = NULL;
g_print ("xdomain reference in %p (%s.%s) at offset %d (%s) to %p (%s.%s) (%s) - pointed to by:\n",
obj, obj->vtable->klass->name_space, obj->vtable->klass->name,
* Return whether any objects were late-pinned due to being out of memory.
*/
static gboolean
-collect_nursery (SgenGrayQueue *unpin_queue, gboolean finish_up_concurrent_mark)
+collect_nursery (const char *reason, gboolean is_overflow, SgenGrayQueue *unpin_queue, gboolean finish_up_concurrent_mark)
{
gboolean needs_major;
size_t max_garbage_amount;
binary_protocol_flush_buffers (FALSE);
- sgen_memgov_minor_collection_end ();
+ sgen_memgov_minor_collection_end (reason, is_overflow);
/*objects are late pinned because of lack of memory, so a major is a good call*/
needs_major = objects_pinned > 0;
}
static void
-major_start_collection (gboolean concurrent, size_t *old_next_pin_slot)
+major_start_collection (const char *reason, gboolean concurrent, size_t *old_next_pin_slot)
{
SgenObjectOperations *object_ops;
reset_pinned_from_failed_allocation ();
- sgen_memgov_major_collection_start ();
+ sgen_memgov_major_collection_start (concurrent, reason);
//count_ref_nonref_objs ();
//consistency_check ();
}
static void
-major_finish_collection (const char *reason, size_t old_next_pin_slot, gboolean forced)
+major_finish_collection (const char *reason, gboolean is_overflow, size_t old_next_pin_slot, gboolean forced)
{
ScannedObjectCounts counts;
SgenObjectOperations *object_ops;
g_assert (sgen_gray_object_queue_is_empty (&gray_queue));
- sgen_memgov_major_collection_end (forced);
+ sgen_memgov_major_collection_end (forced, concurrent_collection_in_progress, reason, is_overflow);
current_collection_generation = -1;
memset (&counts, 0, sizeof (ScannedObjectCounts));
}
static gboolean
-major_do_collection (const char *reason, gboolean forced)
+major_do_collection (const char *reason, gboolean is_overflow, gboolean forced)
{
TV_DECLARE (time_start);
TV_DECLARE (time_end);
/* world must be stopped already */
TV_GETTIME (time_start);
- major_start_collection (FALSE, &old_next_pin_slot);
- major_finish_collection (reason, old_next_pin_slot, forced);
+ major_start_collection (reason, FALSE, &old_next_pin_slot);
+ major_finish_collection (reason, is_overflow, old_next_pin_slot, forced);
TV_GETTIME (time_end);
gc_stats.major_gc_time += TV_ELAPSED (time_start, time_end);
binary_protocol_concurrent_start ();
// FIXME: store reason and pass it when finishing
- major_start_collection (TRUE, NULL);
+ major_start_collection (reason, TRUE, NULL);
gray_queue_redirect (&gray_queue);
current_collection_generation = GENERATION_OLD;
sgen_cement_reset ();
- major_finish_collection ("finishing", -1, forced);
+ major_finish_collection ("finishing", FALSE, -1, forced);
if (whole_heap_check_before_collection)
sgen_check_whole_heap (FALSE);
void
sgen_perform_collection (size_t requested_size, int generation_to_collect, const char *reason, gboolean wait_to_finish)
{
- TV_DECLARE (gc_start);
- TV_DECLARE (gc_end);
TV_DECLARE (gc_total_start);
TV_DECLARE (gc_total_end);
- GGTimingInfo infos [2];
int overflow_generation_to_collect = -1;
int oldest_generation_collected = generation_to_collect;
const char *overflow_reason = NULL;
SGEN_ASSERT (0, generation_to_collect == GENERATION_NURSERY || generation_to_collect == GENERATION_OLD, "What generation is this?");
- TV_GETTIME (gc_start);
-
sgen_stop_world (generation_to_collect);
TV_GETTIME (gc_total_start);
if (concurrent_collection_in_progress)
major_update_concurrent_collection ();
- if (collect_nursery (NULL, FALSE) && !concurrent_collection_in_progress) {
+ if (collect_nursery (reason, FALSE, NULL, FALSE) && !concurrent_collection_in_progress) {
overflow_generation_to_collect = GENERATION_OLD;
overflow_reason = "Minor overflow";
}
} else {
SGEN_ASSERT (0, generation_to_collect == GENERATION_OLD, "We should have handled nursery collections above");
if (major_collector.is_concurrent && !wait_to_finish) {
- collect_nursery (NULL, FALSE);
+ collect_nursery ("Concurrent start", FALSE, NULL, FALSE);
major_start_concurrent_collection (reason);
oldest_generation_collected = GENERATION_NURSERY;
- } else if (major_do_collection (reason, wait_to_finish)) {
+ } else if (major_do_collection (reason, FALSE, wait_to_finish)) {
overflow_generation_to_collect = GENERATION_NURSERY;
overflow_reason = "Excessive pinning";
}
}
- TV_GETTIME (gc_end);
-
- memset (infos, 0, sizeof (infos));
- infos [0].generation = oldest_generation_collected;
- infos [0].reason = reason;
- infos [0].is_overflow = FALSE;
- infos [1].generation = -1;
- infos [0].total_time = SGEN_TV_ELAPSED (gc_start, gc_end);
-
if (overflow_generation_to_collect != -1) {
SGEN_ASSERT (0, !concurrent_collection_in_progress, "We don't yet support overflow collections with the concurrent collector");
* or the nursery is fully pinned.
*/
- infos [1].generation = overflow_generation_to_collect;
- infos [1].reason = overflow_reason;
- infos [1].is_overflow = TRUE;
- gc_start = gc_end;
-
if (overflow_generation_to_collect == GENERATION_NURSERY)
- collect_nursery (NULL, FALSE);
+ collect_nursery (overflow_reason, TRUE, NULL, FALSE);
else
- major_do_collection (overflow_reason, wait_to_finish);
-
- TV_GETTIME (gc_end);
- infos [1].total_time = SGEN_TV_ELAPSED (gc_start, gc_end);
+ major_do_collection (overflow_reason, TRUE, wait_to_finish);
oldest_generation_collected = MAX (oldest_generation_collected, overflow_generation_to_collect);
}
TV_GETTIME (gc_total_end);
time_max = MAX (time_max, TV_ELAPSED (gc_total_start, gc_total_end));
- sgen_restart_world (oldest_generation_collected, infos);
+ sgen_restart_world (oldest_generation_collected);
}
/*
/* LOCKING: assumes the GC lock is held */
void
-sgen_restart_world (int generation, GGTimingInfo *timing)
+sgen_restart_world (int generation)
{
long long major_total = -1, major_marked = -1, los_total = -1, los_marked = -1;
+ gint64 stw_time;
SGEN_ASSERT (0, world_is_stopped, "Why are we restarting a running world?");
world_is_stopped = FALSE;
- sgen_client_restart_world (generation, timing);
+ sgen_client_restart_world (generation, &stw_time);
binary_protocol_world_restarted (generation, sgen_timestamp ());
if (sgen_client_bridge_need_processing ())
sgen_client_bridge_processing_finish (generation);
- sgen_memgov_collection_end (generation, timing, timing ? 2 : 0);
+ sgen_memgov_collection_end (generation, stw_time);
}
gboolean
sgen_stop_world (0);
sgen_clear_nursery_fragments ();
sgen_check_whole_heap (FALSE);
- sgen_restart_world (0, NULL);
+ sgen_restart_world (0);
}
gint64
INTERNAL_MEM_CARDTABLE_MOD_UNION,
INTERNAL_MEM_BINARY_PROTOCOL,
INTERNAL_MEM_TEMPORARY,
+ INTERNAL_MEM_LOG_ENTRY,
INTERNAL_MEM_FIRST_CLIENT
};
/* STW */
-typedef struct {
- int generation;
- const char *reason;
- gboolean is_overflow;
- gint64 total_time;
- gint64 stw_time;
-} GGTimingInfo;
-
void sgen_stop_world (int generation);
-void sgen_restart_world (int generation, GGTimingInfo *timing);
+void sgen_restart_world (int generation);
gboolean sgen_is_world_stopped (void);
gboolean sgen_set_allow_synchronous_major (gboolean flag);
#define MIN_MINOR_COLLECTION_ALLOWANCE ((mword)(DEFAULT_NURSERY_SIZE * default_allowance_nursery_size_ratio))
+static SgenPointerQueue log_entries = SGEN_POINTER_QUEUE_INIT (INTERNAL_MEM_TEMPORARY);
+static MonoCoopMutex log_entries_mutex;
+
mword total_promoted_size = 0;
mword total_allocated_major = 0;
static mword total_promoted_size_start;
static mword total_alloc = 0;
static mword total_alloc_max = 0;
+static SGEN_TV_DECLARE(last_minor_start);
+static SGEN_TV_DECLARE(last_major_start);
+
/* GC triggers. */
static gboolean debug_print_allowance = FALSE;
sgen_memgov_minor_collection_start (void)
{
total_promoted_size_start = total_promoted_size;
+ SGEN_TV_GETTIME (last_minor_start);
+}
+
+static void
+sgen_add_log_entry (SgenLogEntry *log_entry)
+{
+ mono_coop_mutex_lock (&log_entries_mutex);
+ sgen_pointer_queue_add (&log_entries, log_entry);
+ mono_coop_mutex_unlock (&log_entries_mutex);
}
void
-sgen_memgov_minor_collection_end (void)
+sgen_memgov_minor_collection_end (const char *reason, gboolean is_overflow)
{
+ if (mono_trace_is_traced (G_LOG_LEVEL_INFO, MONO_TRACE_GC)) {
+ SgenLogEntry *log_entry = (SgenLogEntry*)sgen_alloc_internal (INTERNAL_MEM_LOG_ENTRY);
+ SGEN_TV_DECLARE (current_time);
+ SGEN_TV_GETTIME (current_time);
+
+ log_entry->type = SGEN_LOG_NURSERY;
+ log_entry->reason = reason;
+ log_entry->is_overflow = is_overflow;
+ log_entry->time = SGEN_TV_ELAPSED (last_minor_start, current_time);
+ log_entry->promoted_size = total_promoted_size - total_promoted_size_start;
+ log_entry->major_size = major_collector.get_num_major_sections () * major_collector.section_size;
+ log_entry->major_size_in_use = last_used_slots_size + total_allocated_major - total_allocated_major_end;
+ log_entry->los_size = los_memory_usage_total;
+ log_entry->los_size_in_use = los_memory_usage;
+
+ sgen_add_log_entry (log_entry);
+ }
}
void
void
sgen_memgov_major_post_sweep (mword used_slots_size)
{
- mword num_major_sections = major_collector.get_num_major_sections ();
+ if (mono_trace_is_traced (G_LOG_LEVEL_INFO, MONO_TRACE_GC)) {
+ SgenLogEntry *log_entry = (SgenLogEntry*)sgen_alloc_internal (INTERNAL_MEM_LOG_ENTRY);
+
+ log_entry->type = SGEN_LOG_MAJOR_SWEEP_FINISH;
+ log_entry->major_size = major_collector.get_num_major_sections () * major_collector.section_size;
+ log_entry->major_size_in_use = used_slots_size + total_allocated_major - total_allocated_major_end;
- mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MAJOR_SWEEP: major size: %dK in use: %dK",
- num_major_sections * major_collector.section_size / 1024,
- (used_slots_size + total_allocated_major - total_allocated_major_end) / 1024);
+ sgen_add_log_entry (log_entry);
+ }
last_used_slots_size = used_slots_size;
}
void
-sgen_memgov_major_collection_start (void)
+sgen_memgov_major_collection_start (gboolean concurrent, const char *reason)
{
need_calculate_minor_collection_allowance = TRUE;
major_start_heap_size = get_heap_size ();
if (debug_print_allowance) {
SGEN_LOG (0, "Starting collection with heap size %ld bytes", (long)major_start_heap_size);
}
+ if (concurrent && mono_trace_is_traced (G_LOG_LEVEL_INFO, MONO_TRACE_GC)) {
+ SgenLogEntry *log_entry = (SgenLogEntry*)sgen_alloc_internal (INTERNAL_MEM_LOG_ENTRY);
+
+ log_entry->type = SGEN_LOG_MAJOR_CONC_START;
+ log_entry->reason = reason;
+
+ sgen_add_log_entry (log_entry);
+ }
+ SGEN_TV_GETTIME (last_major_start);
}
void
-sgen_memgov_major_collection_end (gboolean forced)
+sgen_memgov_major_collection_end (gboolean forced, gboolean concurrent, const char *reason, gboolean is_overflow)
{
- last_collection_los_memory_usage = los_memory_usage;
+ if (mono_trace_is_traced (G_LOG_LEVEL_INFO, MONO_TRACE_GC)) {
+ SgenLogEntry *log_entry = (SgenLogEntry*)sgen_alloc_internal (INTERNAL_MEM_LOG_ENTRY);
+ SGEN_TV_DECLARE (current_time);
+ SGEN_TV_GETTIME (current_time);
+
+ if (concurrent) {
+ log_entry->type = SGEN_LOG_MAJOR_CONC_FINISH;
+ } else {
+ log_entry->type = SGEN_LOG_MAJOR_SERIAL;
+ }
+ log_entry->time = SGEN_TV_ELAPSED (last_major_start, current_time);
+ log_entry->reason = reason;
+ log_entry->is_overflow = is_overflow;
+ log_entry->los_size = los_memory_usage_total;
+ log_entry->los_size_in_use = los_memory_usage;
+
+ sgen_add_log_entry (log_entry);
+ }
+ last_collection_los_memory_usage = los_memory_usage;
total_allocated_major_end = total_allocated_major;
if (forced) {
sgen_get_major_collector ()->finish_sweeping ();
{
}
+static void
+sgen_output_log_entry (SgenLogEntry *entry, gint64 stw_time, int generation)
+{
+ char full_timing_buff [1024];
+ full_timing_buff [0] = '\0';
+
+ if (!entry->is_overflow)
+ sprintf (full_timing_buff, "stw %.2fms", stw_time / 10000.0f);
+
+ switch (entry->type) {
+ case SGEN_LOG_NURSERY:
+ mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MINOR%s: (%s) time %.2fms, %s promoted %dK major size: %dK in use: %dK los size: %dK in use: %dK",
+ entry->is_overflow ? "_OVERFLOW" : "",
+ entry->reason ? entry->reason : "",
+ entry->time / 10000.0f,
+ (generation == GENERATION_NURSERY) ? full_timing_buff : "",
+ entry->promoted_size / 1024,
+ entry->major_size / 1024,
+ entry->major_size_in_use / 1024,
+ entry->los_size / 1024,
+ entry->los_size_in_use / 1024);
+ break;
+ case SGEN_LOG_MAJOR_SERIAL:
+ mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MAJOR%s: (%s) time %.2fms, %s los size: %dK in use: %dK",
+ entry->is_overflow ? "_OVERFLOW" : "",
+ entry->reason ? entry->reason : "",
+ (int)entry->time / 10000.0f,
+ full_timing_buff,
+ entry->los_size / 1024,
+ entry->los_size_in_use / 1024);
+ break;
+ case SGEN_LOG_MAJOR_CONC_START:
+ mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MAJOR_CONCURRENT_START: (%s)", entry->reason ? entry->reason : "");
+ break;
+ case SGEN_LOG_MAJOR_CONC_FINISH:
+ mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MAJOR_CONCURRENT_FINISH: (%s) time %.2fms, %s los size: %dK in use: %dK",
+ entry->reason ? entry->reason : "",
+ entry->time / 10000.0f,
+ full_timing_buff,
+ entry->los_size / 1024,
+ entry->los_size_in_use / 1024);
+ break;
+ case SGEN_LOG_MAJOR_SWEEP_FINISH:
+ mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MAJOR_SWEEP: major size: %dK in use: %dK",
+ entry->major_size / 1024,
+ entry->major_size_in_use / 1024);
+ break;
+ default:
+ SGEN_ASSERT (0, FALSE, "Invalid log entry type");
+ break;
+ }
+}
+
void
-sgen_memgov_collection_end (int generation, GGTimingInfo* info, int info_count)
+sgen_memgov_collection_end (int generation, gint64 stw_time)
{
- int i;
- for (i = 0; i < info_count; ++i) {
- if (info[i].generation != -1)
- sgen_client_log_timing (&info [i], total_promoted_size - total_promoted_size_start, last_used_slots_size + total_allocated_major - total_allocated_major_end);
+ /*
+ * At this moment the world has been restarted which means we can log all pending entries
+ * without risking deadlocks.
+ */
+ if (mono_trace_is_traced (G_LOG_LEVEL_INFO, MONO_TRACE_GC)) {
+ size_t i;
+ SGEN_ASSERT (0, !sgen_is_world_stopped (), "We can't log if the world is stopped");
+ mono_coop_mutex_lock (&log_entries_mutex);
+ for (i = 0; i < log_entries.next_slot; i++) {
+ sgen_output_log_entry (log_entries.data [i], stw_time, generation);
+ sgen_free_internal (log_entries.data [i], INTERNAL_MEM_LOG_ENTRY);
+ }
+ sgen_pointer_queue_clear (&log_entries);
+ mono_coop_mutex_unlock (&log_entries_mutex);
}
}
mono_counters_register ("Memgov alloc", MONO_COUNTER_GC | MONO_COUNTER_WORD | MONO_COUNTER_BYTES | MONO_COUNTER_VARIABLE, &total_alloc);
mono_counters_register ("Memgov max alloc", MONO_COUNTER_GC | MONO_COUNTER_WORD | MONO_COUNTER_BYTES | MONO_COUNTER_MONOTONIC, &total_alloc_max);
+ mono_coop_mutex_init (&log_entries_mutex);
+
+ sgen_register_fixed_internal_mem_type (INTERNAL_MEM_LOG_ENTRY, sizeof (SgenLogEntry));
+
if (max_heap == 0)
return;
/* GC trigger heuristics */
void sgen_memgov_minor_collection_start (void);
-void sgen_memgov_minor_collection_end (void);
+void sgen_memgov_minor_collection_end (const char *reason, gboolean is_overflow);
void sgen_memgov_major_pre_sweep (void);
void sgen_memgov_major_post_sweep (mword used_slots_size);
-void sgen_memgov_major_collection_start (void);
-void sgen_memgov_major_collection_end (gboolean forced);
+void sgen_memgov_major_collection_start (gboolean concurrent, const char *reason);
+void sgen_memgov_major_collection_end (gboolean forced, gboolean concurrent, const char *reason, gboolean is_overflow);
void sgen_memgov_collection_start (int generation);
-void sgen_memgov_collection_end (int generation, GGTimingInfo* info, int info_count);
+void sgen_memgov_collection_end (int generation, gint64 stw);
gboolean sgen_need_major_collection (mword space_needed);
SGEN_ALLOC_ACTIVATE = 2
} SgenAllocFlags;
+typedef enum {
+ SGEN_LOG_NURSERY,
+ SGEN_LOG_MAJOR_SERIAL,
+ SGEN_LOG_MAJOR_CONC_START,
+ SGEN_LOG_MAJOR_CONC_FINISH,
+ SGEN_LOG_MAJOR_SWEEP_FINISH
+} SgenLogType;
+
+typedef struct {
+ SgenLogType type;
+ const char *reason;
+ gboolean is_overflow;
+ gint64 time;
+ mword promoted_size;
+ mword major_size;
+ mword major_size_in_use;
+ mword los_size;
+ mword los_size_in_use;
+} SgenLogEntry;
+
/* OS memory allocation */
void* sgen_alloc_os_memory (size_t size, SgenAllocFlags flags, const char *assert_description);
void* sgen_alloc_os_memory_aligned (size_t size, mword alignment, SgenAllocFlags flags, const char *assert_description);
static void
mono_error_prepare (MonoErrorInternal *error)
{
+ /* mono_error_set_* after a mono_error_cleanup without an intervening init */
+ g_assert (error->error_code != MONO_ERROR_CLEANUP_CALLED_SENTINEL);
if (error->error_code != MONO_ERROR_NONE)
return;
mono_error_cleanup (MonoError *oerror)
{
MonoErrorInternal *error = (MonoErrorInternal*)oerror;
- if (error->error_code == MONO_ERROR_NONE)
+ short int orig_error_code = error->error_code;
+ gboolean free_strings = error->flags & MONO_ERROR_FREE_STRINGS;
+ gboolean has_instance_handle = is_managed_exception (error);
+
+ /* Two cleanups in a row without an intervening init. */
+ g_assert (orig_error_code != MONO_ERROR_CLEANUP_CALLED_SENTINEL);
+
+ /* Mark it as cleaned up. */
+ error->error_code = MONO_ERROR_CLEANUP_CALLED_SENTINEL;
+ error->flags = 0;
+
+ if (orig_error_code == MONO_ERROR_NONE)
return;
- if (is_managed_exception (error))
+
+ if (has_instance_handle)
mono_gchandle_free (error->exn.instance_handle);
+
g_free ((char*)error->full_message);
g_free ((char*)error->full_message_with_fields);
- if (!(error->flags & MONO_ERROR_FREE_STRINGS)) //no memory was allocated
+ error->full_message = NULL;
+ error->full_message_with_fields = NULL;
+ if (!free_strings) //no memory was allocated
return;
g_free ((char*)error->type_name);
g_free ((char*)error->exception_name_space);
g_free ((char*)error->exception_name);
g_free ((char*)error->first_argument);
+ error->type_name = error->assembly_name = error->member_name = error->exception_name_space = error->exception_name = error->first_argument = NULL;
+ error->exn.klass = NULL;
+
}
gboolean
exception = (MonoException*) mono_gchandle_get_target (error->exn.instance_handle);
break;
+ case MONO_ERROR_CLEANUP_CALLED_SENTINEL:
+ mono_error_set_execution_engine (error_out, "MonoError reused after mono_error_cleanup");
+ break;
default:
mono_error_set_execution_engine (error_out, "Invalid error-code %d", error->error_code);
}
*/
MONO_ERROR_GENERIC = 9,
/* This one encapsulates a managed exception instance */
- MONO_ERROR_EXCEPTION_INSTANCE = 10
+ MONO_ERROR_EXCEPTION_INSTANCE = 10,
+
+ /* Not a valid error code - indicates that the error was cleaned up and reused */
+ MONO_ERROR_CLEANUP_CALLED_SENTINEL = 0xffff
};
/*Keep in sync with MonoErrorInternal*/
--- /dev/null
+@MONO@ RabbitMQ.Client.Apigen.exe /n:v0_9 "/apiName:AMQP_0_9" $(ProjectDir)..\..\docs\specs\amqp0-9.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-9.cs
+@MONO@ RabbitMQ.Client.Apigen.exe /n:v0_8 "/apiName:AMQP_0_8" $(ProjectDir)..\..\docs\specs\amqp0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-8.cs
+@MONO@ RabbitMQ.Client.Apigen.exe /n:v0_8qpid "/apiName:AMQP_0_8_QPID" $(ProjectDir)..\..\docs\specs\qpid-amqp.0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-qpid-0-8.cs
+
+
+
// Prebuild code, might be in inputs, check:
// inputs/LIBRARY.pre
//
- string prebuild = Load (library + ".pre");
- string prebuild_windows, prebuild_unix;
-
- int q = library.IndexOf ("-");
- if (q != -1)
- prebuild = prebuild + Load (library.Substring (0, q) + ".pre");
-
- if (prebuild.IndexOf ("@MONO@") != -1){
- prebuild_unix = prebuild.Replace ("@MONO@", "mono").Replace ("@CAT@", "cat");
- prebuild_windows = prebuild.Replace ("@MONO@", "").Replace ("@CAT@", "type");
- } else {
- prebuild_unix = prebuild.Replace ("jay.exe", "jay");
- prebuild_windows = prebuild;
- }
- const string condition_unix = "Condition=\" '$(OS)' != 'Windows_NT' \"";
- const string condition_windows = "Condition=\" '$(OS)' == 'Windows_NT' \"";
- prebuild =
- " <PreBuildEvent " + condition_unix + ">\n" + prebuild_unix + "\n </PreBuildEvent>" + NewLine +
- " <PreBuildEvent " + condition_windows + ">" + NewLine + prebuild_windows + NewLine + " </PreBuildEvent>" + NewLine;
+ string prebuild = GenerateStep (library, ".pre", "PreBuildEvent");
+ string postbuild = GenerateStep (library, ".post", "PostBuildEvent");
var all_args = new Queue<string []> ();
all_args.Enqueue (flags.Split ());
var source = dk.Key;
if (source.EndsWith (".resources"))
source = source.Replace (".resources", ".resx");
- Console.WriteLine ("Got {0} -> {1}", dk.Key, source);
resources.AppendFormat (" <EmbeddedResource Include=\"{0}\">" + NewLine, source);
resources.AppendFormat (" <LogicalName>{0}</LogicalName>" + NewLine, dk.Value);
resources.AppendFormat (" </EmbeddedResource>" + NewLine);
build_output_dir = Path.GetDirectoryName (LibraryOutput);
else
build_output_dir = "bin\\Debug\\" + library;
-
-
- string postbuild_unix = string.Empty;
- string postbuild_windows = string.Empty;
-
- var postbuild =
- " <PostBuildEvent " + condition_unix + ">" + NewLine + postbuild_unix + NewLine + " </PostBuildEvent>" + NewLine +
- " <PostBuildEvent " + condition_windows + ">" + NewLine + postbuild_windows + NewLine + " </PostBuildEvent>";
-
bool basic_or_build = (library.Contains ("-basic") || library.Contains ("-build"));
Replace ("@DEBUGTYPE@", want_debugging_support ? "full" : "pdbonly").
Replace ("@REFERENCES@", refs.ToString ()).
Replace ("@PREBUILD@", prebuild).
- Replace ("@STARTUPOBJECT@", main == null ? "" : $"<StartupObject>{main}</StartupObject>").
Replace ("@POSTBUILD@", postbuild).
+ Replace ("@STARTUPOBJECT@", main == null ? "" : $"<StartupObject>{main}</StartupObject>").
//Replace ("@ADDITIONALLIBPATHS@", String.Format ("<AdditionalLibPaths>{0}</AdditionalLibPaths>", string.Join (",", libs.ToArray ()))).
Replace ("@ADDITIONALLIBPATHS@", String.Empty).
Replace ("@RESOURCES@", resources.ToString ()).
return Csproj;
}
+ string GenerateStep (string library, string suffix, string eventKey)
+ {
+ string target = Load (library + suffix);
+ string target_windows, target_unix;
+
+ int q = library.IndexOf ("-");
+ if (q != -1)
+ target = target + Load (library.Substring (0, q) + suffix);
+
+ if (target.IndexOf ("@MONO@") != -1){
+ target_unix = target.Replace ("@MONO@", "mono").Replace ("@CAT@", "cat");
+ target_windows = target.Replace ("@MONO@", "").Replace ("@CAT@", "type");
+ } else {
+ target_unix = target.Replace ("jay.exe", "jay");
+ target_windows = target;
+ }
+ const string condition_unix = "Condition=\" '$(OS)' != 'Windows_NT' \"";
+ const string condition_windows = "Condition=\" '$(OS)' == 'Windows_NT' \"";
+ var result =
+ $" <{eventKey} {condition_unix}>\n{target_unix}\n </{eventKey}>{NewLine}" +
+ $" <{eventKey} {condition_windows}>{NewLine}{target_windows}{NewLine} </{eventKey}>";
+ return result;
+ }
+
void AddProjectReference (StringBuilder refs, VsCsproj result, MsbuildGenerator match, string r, string alias)
{
refs.AppendFormat (" <ProjectReference Include=\"{0}\">{1}", GetRelativePath (result.csProjFilename, match.CsprojFilename), NewLine);
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-net_4_x", "mcs/class/System.Core/System.Core-net_4_x.csproj", "{359142A1-D80F-401E-AA64-7167C9317649}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_4_x", "mcs/class/Mono.Posix/Mono.Posix-net_4_x.csproj", "{66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CompilerServices.SymbolWriter-net_4_x", "mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_4_x.csproj", "{88177C4B-894F-485D-B95A-44199C06BE9F}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_4_x", "mcs/class/Mono.Posix/Mono.Posix-net_4_x.csproj", "{66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}"
+EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-plaincore-net_4_x", "mcs/class/System.Core/System.Core-plaincore-net_4_x.csproj", "{1EC0EBC0-0B35-454C-89AE-3F8F0FDD9705}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "resgen-net_4_x", "mcs/tools/resgen/resgen-net_4_x.csproj", "{647DC12E-A4EE-424A-9EC7-CE6643EE2EF7}"
{359142A1-D80F-401E-AA64-7167C9317649}.Debug|Any CPU.Build.0 = Debug|Any CPU
{359142A1-D80F-401E-AA64-7167C9317649}.Release|Any CPU.ActiveCfg = Release|Any CPU
{359142A1-D80F-401E-AA64-7167C9317649}.Release|Any CPU.Build.0 = Release|Any CPU
- {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Release|Any CPU.Build.0 = Release|Any CPU
{88177C4B-894F-485D-B95A-44199C06BE9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{88177C4B-894F-485D-B95A-44199C06BE9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{88177C4B-894F-485D-B95A-44199C06BE9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{88177C4B-894F-485D-B95A-44199C06BE9F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Release|Any CPU.Build.0 = Release|Any CPU
{1EC0EBC0-0B35-454C-89AE-3F8F0FDD9705}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1EC0EBC0-0B35-454C-89AE-3F8F0FDD9705}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1EC0EBC0-0B35-454C-89AE-3F8F0FDD9705}.Release|Any CPU.ActiveCfg = Release|Any CPU
.stamp-clone:
@if [ ! -d $(CPPSHARP_DIR) ]; then \
- git clone git@github.com:xamarin/CppSharpBinaries.git $(CPPSHARP_DIR) && touch $@; \
+ git clone git://github.com/xamarin/CppSharpBinaries.git $(CPPSHARP_DIR) && touch $@; \
fi
MonoAotOffsetsDumper.exe: .stamp-clone MonoAotOffsetsDumper.cs $(MONO_OPTIONS_SRC)