[Pkg-cli-apps-commits] [SCM] pinta branch, master, updated. debian/0.7-1-21-gd3e08c4
Iain Lane
laney at ubuntu.com
Thu Apr 28 23:23:54 UTC 2011
The following commit has been merged in the master branch:
commit 840923f98602d996ada4bb4aeaeab14f5e064994
Author: Iain Lane <laney at ubuntu.com>
Date: Thu Apr 28 22:41:48 2011 +0100
Imported Upstream version 1.0
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 85332aa..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,15 +0,0 @@
-*.pidb
-*.suo
-*.userprefs
-Makefile
-Makefile.in
-aclocal.m4
-autom4te.cache
-bin
-config.log
-config.status
-configure
-install-sh
-missing
-obj
-pinta
diff --git a/Makefile.am b/Makefile.am
index 6065ed0..3725330 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5,9 +5,8 @@ BINFILES = \
$(BINDIR)/Pinta.Core.dll \
$(BINDIR)/Pinta.Gui.Widgets.dll \
$(BINDIR)/Pinta.Resources.dll \
- $(BINDIR)/System.ComponentModel.Composition.dll \
- $(BINDIR)/Extensions/Pinta.Effects.dll \
- $(BINDIR)/Extensions/Pinta.Tools.dll
+ $(BINDIR)/Pinta.Effects.dll \
+ $(BINDIR)/Pinta.Tools.dll
RELEASE_FILE = $(PACKAGE)-$(VERSION)
@@ -88,7 +87,7 @@ releasetar: $(BINFILES)
releasezip: $(BINFILES)
cd $(BINDIR) && zip -r ../$(RELEASE_FILE).zip * -x "*.mdb"
-EXTRA_DIST = Pinta Pinta.Core Pinta.Effects Pinta.Gui.Widgets Pinta.Resources Pinta.Tools po Tarball System.ComponentModel.Composition xdg \
+EXTRA_DIST = Pinta Pinta.Core Pinta.Effects Pinta.Gui.Widgets Pinta.Resources Pinta.Tools po Tarball xdg \
license-mit.txt license-pdn.txt readme.txt todo.txt Pinta.sln Pinta.Install.proj
.PHONY: install uninstall cleanall cleanbin cleanobj release releasetar releasezip
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..0c4ef11
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,537 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = .
+DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/pinta.in \
+ $(top_srcdir)/configure install-sh missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES = pinta
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d "$(distdir)" \
+ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr "$(distdir)"; }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+GLIB_SHARP_20_CFLAGS = @GLIB_SHARP_20_CFLAGS@
+GLIB_SHARP_20_LIBS = @GLIB_SHARP_20_LIBS@
+GTK_SHARP_20_CFLAGS = @GTK_SHARP_20_CFLAGS@
+GTK_SHARP_20_LIBS = @GTK_SHARP_20_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MONO = @MONO@
+MONO_CAIRO_CFLAGS = @MONO_CAIRO_CFLAGS@
+MONO_CAIRO_LIBS = @MONO_CAIRO_LIBS@
+MONO_CFLAGS = @MONO_CFLAGS@
+MONO_LIBS = @MONO_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XBUILD = @XBUILD@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+BINDIR = $(srcdir)/bin
+BINFILES = \
+ $(BINDIR)/Pinta.exe \
+ $(BINDIR)/Pinta.Core.dll \
+ $(BINDIR)/Pinta.Gui.Widgets.dll \
+ $(BINDIR)/Pinta.Resources.dll \
+ $(BINDIR)/Pinta.Effects.dll \
+ $(BINDIR)/Pinta.Tools.dll
+
+RELEASE_FILE = $(PACKAGE)-$(VERSION)
+EXTRA_DIST = Pinta Pinta.Core Pinta.Effects Pinta.Gui.Widgets Pinta.Resources Pinta.Tools po Tarball xdg \
+ license-mit.txt license-pdn.txt readme.txt todo.txt Pinta.sln Pinta.Install.proj
+
+all: all-am
+
+.SUFFIXES:
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+pinta: $(top_builddir)/config.status $(srcdir)/pinta.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-lzma: distdir
+ tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+ $(am__remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lzma*) \
+ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @$(am__cd) '$(distuninstallcheck_dir)' \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install-exec: install-exec-am
+install-data: install-data-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean-am: clean-generic mostlyclean-am
+
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am am--refresh check check-am clean clean-generic dist \
+ dist-all dist-bzip2 dist-gzip dist-lzma dist-shar dist-tarZ \
+ dist-xz dist-zip distcheck distclean distclean-generic \
+ distcleancheck distdir distuninstallcheck dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am uninstall uninstall-am
+
+
+# target: all - Default target: build
+all: build
+
+# target: run - Launch the uninstalled copy
+run:
+ $(MONO) bin/Pinta.exe
+
+# target: help - Display callable targets.
+help:
+ egrep "^# target:" Makefile | sed 's/^# target:/make/'
+
+# target: build - Build Pinta.
+build: Pinta.sln
+ cd $(srcdir) && $(XBUILD) Pinta.sln
+ cd $(srcdir) && $(XBUILD) Pinta.Install.proj /target:CompileTranslations
+
+# target: list - List source files.
+list:
+ if ! git status > /dev/null 2> /dev/null ;\
+ then \
+ find . -type f -name *.cs | sed 's|./||' ;\
+ else \
+ git ls-files | grep '\.cs' ;\
+ fi
+
+#target: updatepot - update the messages.pot file
+updatepot: build
+ find . -type f -name *.cs | sed 's|./||' > files.list
+ grep -v System.ComponentModel.Composition files.list > files2.list
+ xgettext --from-code=UTF-8 -f files2.list -o po/messages.pot
+ cat po/messages.in >> po/messages.pot
+ rm files.list
+ rm files2.list
+
+# target: clean - Default clean command: cleanobj and cleanbin
+clean: cleanobj cleanbin
+
+# target: distclean - Removes configure files.
+distclean: clean
+ rm -f Makefile pinta config.status config.cache config.log configure.lineno config.status.lineno
+
+# target: cleanall - Removes build files.
+cleanall: distclean
+ rm -rf autom4te.cache
+ rm -f configure aclocal.m4 missing install-sh Makefile.in
+
+# target: cleanbin - Removes built files.
+cleanbin:
+ rm -rvf $(BINDIR)/*
+
+# target: cleanobj - Removes temporary build files.
+cleanobj:
+ find $(srcdir)/ -type d -name obj | xargs rm -rvf
+
+# target: install - Installs Pinta.
+install: pinta $(BINFILES)
+ cd $(srcdir) && $(XBUILD) /target:Install /property:InstallPrefix=$(DESTDIR)$(prefix) \
+ /property:BinDir=$(DESTDIR)$(bindir) /property:LibDir=$(DESTDIR)$(libdir) \
+ /property:DataRootDir=$(DESTDIR)$(datarootdir) /property:ManDir=$(DESTDIR)$(mandir) \
+ /property:LocaleDir=$(DESTDIR)$(localedir) Pinta.Install.proj
+ $(INSTALL_SCRIPT) pinta $(DESTDIR)$(bindir)/$(PACKAGE)
+
+# target: uninstall - Uninstalls Pinta.
+uninstall:
+ $(XBUILD) /target:Uninstall /property:InstallPrefix=$(DESTDIR)$(prefix) Pinta.Install.proj
+
+# target: release - Default release type: releasetar
+release: releasetar
+
+# target: releasetar - Make a release tarball.
+releasetar: $(BINFILES)
+ cd $(BINDIR) && tar -czf ../$(RELEASE_FILE).tgz --exclude=*mdb *
+
+# target: releasezip - Make a release zip file.
+releasezip: $(BINFILES)
+ cd $(BINDIR) && zip -r ../$(RELEASE_FILE).zip * -x "*.mdb"
+
+.PHONY: install uninstall cleanall cleanbin cleanobj release releasetar releasezip
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Pinta.Core/Actions/LayerActions.cs b/Pinta.Core/Actions/LayerActions.cs
index d4da7f9..305ee67 100644
--- a/Pinta.Core/Actions/LayerActions.cs
+++ b/Pinta.Core/Actions/LayerActions.cs
@@ -28,6 +28,7 @@ using System;
using Gdk;
using Gtk;
using Mono.Unix;
+using System.IO;
namespace Pinta.Core
{
@@ -165,14 +166,12 @@ namespace Pinta.Core
// Open the image and add it to the layers
Layer layer = doc.AddNewLayer (System.IO.Path.GetFileName (file));
- Pixbuf bg = new Pixbuf (file, doc.ImageSize.Width, doc.ImageSize.Height, true);
-
- using (Cairo.Context g = new Cairo.Context (layer.Surface)) {
- CairoHelper.SetSourcePixbuf (g, bg, 0, 0);
- g.Paint ();
- }
-
- bg.Dispose ();
+ using (var fs = new FileStream (file, FileMode.Open))
+ using (Pixbuf bg = new Pixbuf (fs))
+ using (Cairo.Context g = new Cairo.Context (layer.Surface)) {
+ CairoHelper.SetSourcePixbuf (g, bg, 0, 0);
+ g.Paint ();
+ }
doc.SetCurrentLayer (layer);
diff --git a/Pinta.Core/AssemblyInfo.cs b/Pinta.Core/AssemblyInfo.cs
index 495199f..db84e73 100644
--- a/Pinta.Core/AssemblyInfo.cs
+++ b/Pinta.Core/AssemblyInfo.cs
@@ -17,7 +17,7 @@ using System.Runtime.CompilerServices;
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-[assembly: AssemblyVersion("0.7.0.0")]
+[assembly: AssemblyVersion("1.0.0.0")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
diff --git a/Pinta.Core/Effects/Utility.cs b/Pinta.Core/Effects/Utility.cs
index 3feb37d..f4acdf2 100644
--- a/Pinta.Core/Effects/Utility.cs
+++ b/Pinta.Core/Effects/Utility.cs
@@ -19,10 +19,10 @@ namespace Pinta.Core
if (p1.Y <= p2.Y) {
y = p1.Y;
- h = p2.Y - y;
+ h = p2.Y - y + 1;
} else {
y = p2.Y;
- h = p1.Y - y;
+ h = p1.Y - y + 1;
}
if (p1.X <= p2.X) {
@@ -31,7 +31,7 @@ namespace Pinta.Core
if (constrain)
w = h;
else
- w = p2.X - x;
+ w = p2.X - x + 1;
} else {
x = p2.X;
@@ -39,7 +39,7 @@ namespace Pinta.Core
w = h;
x = p1.X - w;
} else
- w = p1.X - x;
+ w = p1.X - x + 1;
}
return new Cairo.Rectangle (x, y, w, h);
diff --git a/Pinta.Core/Extensions/CairoExtensions.cs b/Pinta.Core/Extensions/CairoExtensions.cs
index 5eb5154..62a5522 100644
--- a/Pinta.Core/Extensions/CairoExtensions.cs
+++ b/Pinta.Core/Extensions/CairoExtensions.cs
@@ -863,7 +863,12 @@ namespace Pinta.Core
rect = g.StrokeExtents ();
}
- return new Gdk.Rectangle ((int)rect.X, (int)rect.Y, (int)rect.Width - (int)rect.X, (int)rect.Height - (int)rect.Y);
+ int x = (int)Math.Round (rect.X);
+ int y = (int)Math.Round (rect.Y);
+ int w = (int)Math.Round (rect.Width);
+ int h = (int)Math.Round (rect.Height);
+
+ return new Gdk.Rectangle (x, y, w - x, h - y);
}
public static Gdk.Color ToGdkColor (this Cairo.Color color)
diff --git a/Pinta.Core/Extensions/GdkExtensions.cs b/Pinta.Core/Extensions/GdkExtensions.cs
index 0d58ca0..e6841b0 100644
--- a/Pinta.Core/Extensions/GdkExtensions.cs
+++ b/Pinta.Core/Extensions/GdkExtensions.cs
@@ -97,5 +97,10 @@ namespace Pinta.Core
{
return (ev.State & ModifierType.ControlMask) == ModifierType.ControlMask;
}
+
+ public static Cairo.PointD GetPoint (this EventButton ev)
+ {
+ return new Cairo.PointD (ev.X, ev.Y);
+ }
}
}
diff --git a/Pinta.Core/ImageFormats/GdkPixbufFormat.cs b/Pinta.Core/ImageFormats/GdkPixbufFormat.cs
index f3ce7ea..096677a 100644
--- a/Pinta.Core/ImageFormats/GdkPixbufFormat.cs
+++ b/Pinta.Core/ImageFormats/GdkPixbufFormat.cs
@@ -42,8 +42,12 @@ namespace Pinta.Core
public void Import (string fileName)
{
+ Pixbuf bg;
+
// Handle any EXIF orientation flags
- Pixbuf bg = new Pixbuf (fileName);
+ using (var fs = new FileStream (fileName, FileMode.Open))
+ bg = new Pixbuf (fs);
+
bg = bg.ApplyEmbeddedOrientation ();
Size imagesize = new Size (bg.Width, bg.Height);
diff --git a/Pinta.Core/ImageFormats/OraFormat.cs b/Pinta.Core/ImageFormats/OraFormat.cs
index 704eac8..93439a2 100644
--- a/Pinta.Core/ImageFormats/OraFormat.cs
+++ b/Pinta.Core/ImageFormats/OraFormat.cs
@@ -94,13 +94,14 @@ namespace Pinta.Core
doc.Insert (layer, 0);
layer.Opacity = double.Parse (GetAttribute (layerElement, "opacity", "1"), GetFormat ());
-
- using (Pixbuf pb = new Pixbuf (tmp_file)) {
- using (Context g = new Context (layer.Surface)) {
- CairoHelper.SetSourcePixbuf (g, pb, x, y);
- g.Paint ();
+
+ using (var fs = new FileStream (tmp_file, FileMode.Open))
+ using (Pixbuf pb = new Pixbuf (fs)) {
+ using (Context g = new Context (layer.Surface)) {
+ CairoHelper.SetSourcePixbuf (g, pb, x, y);
+ g.Paint ();
+ }
}
- }
try {
File.Delete (tmp_file);
diff --git a/Pinta.Core/Managers/ResourceManager.cs b/Pinta.Core/Managers/ResourceManager.cs
index d9674fe..6a22456 100644
--- a/Pinta.Core/Managers/ResourceManager.cs
+++ b/Pinta.Core/Managers/ResourceManager.cs
@@ -33,7 +33,12 @@ namespace Pinta
{
public Gdk.Pixbuf GetIcon (string name)
{
- return ResourceLoader.GetIcon (name);
+ return GetIcon (name, 16);
+ }
+
+ public Gdk.Pixbuf GetIcon (string name, int size)
+ {
+ return ResourceLoader.GetIcon (name, size);
}
}
}
diff --git a/Pinta.Core/Managers/SettingsManager.cs b/Pinta.Core/Managers/SettingsManager.cs
index 751be07..be55923 100644
--- a/Pinta.Core/Managers/SettingsManager.cs
+++ b/Pinta.Core/Managers/SettingsManager.cs
@@ -45,7 +45,14 @@ namespace Pinta.Core
public string GetUserSettingsDirectory ()
{
- return Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData), "Pinta");
+ var settings_dir = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData), "Pinta");
+
+ // If someone is getting this, they probably are going to need
+ // the directory created, so just handle that here.
+ if (!Directory.Exists (settings_dir))
+ Directory.CreateDirectory (settings_dir);
+
+ return settings_dir;
}
public T GetSetting<T> (string key, T defaultValue)
diff --git a/Pinta.Core/Pinta.Core.csproj b/Pinta.Core/Pinta.Core.csproj
index 9b7de4c..035dd10 100644
--- a/Pinta.Core/Pinta.Core.csproj
+++ b/Pinta.Core/Pinta.Core.csproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -54,6 +54,10 @@
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
+ <Reference Include="ICSharpCode.SharpZipLib, Version=0.84.0.0, Culture=neutral, PublicKeyToken=1b03e6acf1164f73">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\lib\ICSharpCode.SharpZipLib.dll</HintPath>
+ </Reference>
<Reference Include="System" />
<Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
</Reference>
@@ -69,7 +73,6 @@
<Reference Include="pango-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
</Reference>
<Reference Include="System.Data" />
- <Reference Include="ICSharpCode.SharpZipLib" />
<Reference Include="System.Xml" />
<Reference Include="Mono.Cairo" />
</ItemGroup>
@@ -213,4 +216,4 @@
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/Pinta.Effects/Adjustments/AutoLevelEffect.cs b/Pinta.Effects/Adjustments/AutoLevelEffect.cs
index 005aa22..b3b8b5d 100644
--- a/Pinta.Effects/Adjustments/AutoLevelEffect.cs
+++ b/Pinta.Effects/Adjustments/AutoLevelEffect.cs
@@ -13,7 +13,7 @@ using Pinta.Core;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class AutoLevelEffect : BaseEffect
{
UnaryPixelOps.Level op;
diff --git a/Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs b/Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs
index 93d0719..91d4deb 100644
--- a/Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs
+++ b/Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs
@@ -13,7 +13,7 @@ using Pinta.Core;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class BlackAndWhiteEffect : BaseEffect
{
UnaryPixelOp op = new UnaryPixelOps.Desaturate ();
diff --git a/Pinta.Effects/Adjustments/BrightnessContrastEffect.cs b/Pinta.Effects/Adjustments/BrightnessContrastEffect.cs
index 68af5ca..2bfc2b3 100644
--- a/Pinta.Effects/Adjustments/BrightnessContrastEffect.cs
+++ b/Pinta.Effects/Adjustments/BrightnessContrastEffect.cs
@@ -14,7 +14,7 @@ using Pinta.Core;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class BrightnessContrastEffect : BaseEffect
{
private int multiply;
diff --git a/Pinta.Effects/Adjustments/CurvesEffect.cs b/Pinta.Effects/Adjustments/CurvesEffect.cs
index c2f951d..3e84f3f 100644
--- a/Pinta.Effects/Adjustments/CurvesEffect.cs
+++ b/Pinta.Effects/Adjustments/CurvesEffect.cs
@@ -15,7 +15,7 @@ using Pinta.Core;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class CurvesEffect : BaseEffect
{
UnaryPixelOp op = null;
diff --git a/Pinta.Effects/Adjustments/HueSaturationEffect.cs b/Pinta.Effects/Adjustments/HueSaturationEffect.cs
index fb82669..f42d717 100644
--- a/Pinta.Effects/Adjustments/HueSaturationEffect.cs
+++ b/Pinta.Effects/Adjustments/HueSaturationEffect.cs
@@ -14,7 +14,7 @@ using Pinta.Core;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class HueSaturationEffect : BaseEffect
{
UnaryPixelOp op;
diff --git a/Pinta.Effects/Adjustments/InvertColorsEffect.cs b/Pinta.Effects/Adjustments/InvertColorsEffect.cs
index dc7157f..7c63a21 100644
--- a/Pinta.Effects/Adjustments/InvertColorsEffect.cs
+++ b/Pinta.Effects/Adjustments/InvertColorsEffect.cs
@@ -13,7 +13,7 @@ using Pinta.Core;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class InvertColorsEffect : BaseEffect
{
UnaryPixelOp op = new UnaryPixelOps.Invert ();
diff --git a/Pinta.Effects/Adjustments/LevelsEffect.cs b/Pinta.Effects/Adjustments/LevelsEffect.cs
index b0d31b7..668a9ab 100644
--- a/Pinta.Effects/Adjustments/LevelsEffect.cs
+++ b/Pinta.Effects/Adjustments/LevelsEffect.cs
@@ -13,7 +13,7 @@ using Pinta.Core;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class LevelsEffect : BaseEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Adjustments/PosterizeEffect.cs b/Pinta.Effects/Adjustments/PosterizeEffect.cs
index ed063c0..f71598f 100644
--- a/Pinta.Effects/Adjustments/PosterizeEffect.cs
+++ b/Pinta.Effects/Adjustments/PosterizeEffect.cs
@@ -13,7 +13,7 @@ using Pinta.Core;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class PosterizeEffect : BaseEffect
{
UnaryPixelOps.PosterizePixel op = null;
diff --git a/Pinta.Effects/Adjustments/SepiaEffect.cs b/Pinta.Effects/Adjustments/SepiaEffect.cs
index e7849fe..99f0320 100644
--- a/Pinta.Effects/Adjustments/SepiaEffect.cs
+++ b/Pinta.Effects/Adjustments/SepiaEffect.cs
@@ -13,7 +13,7 @@ using Pinta.Core;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class SepiaEffect : BaseEffect
{
UnaryPixelOp desat = new UnaryPixelOps.Desaturate ();
diff --git a/Pinta.Effects/Effects/AddNoiseEffect.cs b/Pinta.Effects/Effects/AddNoiseEffect.cs
index d644189..7afd4d0 100644
--- a/Pinta.Effects/Effects/AddNoiseEffect.cs
+++ b/Pinta.Effects/Effects/AddNoiseEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class AddNoiseEffect : BaseEffect
{
private int intensity;
diff --git a/Pinta.Effects/Effects/BulgeEffect.cs b/Pinta.Effects/Effects/BulgeEffect.cs
index 62632c3..6142ab6 100644
--- a/Pinta.Effects/Effects/BulgeEffect.cs
+++ b/Pinta.Effects/Effects/BulgeEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class BulgeEffect : BaseEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Effects/CloudsEffect.cs b/Pinta.Effects/Effects/CloudsEffect.cs
index e9271ed..eb630a2 100644
--- a/Pinta.Effects/Effects/CloudsEffect.cs
+++ b/Pinta.Effects/Effects/CloudsEffect.cs
@@ -16,7 +16,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class CloudsEffect : BaseEffect
{
// This is so that repetition of the effect with CTRL+F actually shows up differently.
diff --git a/Pinta.Effects/Effects/EdgeDetectEffect.cs b/Pinta.Effects/Effects/EdgeDetectEffect.cs
index 49f9368..3a2c16e 100644
--- a/Pinta.Effects/Effects/EdgeDetectEffect.cs
+++ b/Pinta.Effects/Effects/EdgeDetectEffect.cs
@@ -16,7 +16,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class EdgeDetectEffect : ColorDifferenceEffect
{
private double[][] weights;
diff --git a/Pinta.Effects/Effects/EmbossEffect.cs b/Pinta.Effects/Effects/EmbossEffect.cs
index 7812ec6..20d0462 100644
--- a/Pinta.Effects/Effects/EmbossEffect.cs
+++ b/Pinta.Effects/Effects/EmbossEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class EmbossEffect : BaseEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Effects/FragmentEffect.cs b/Pinta.Effects/Effects/FragmentEffect.cs
index c08a15d..88e02ac 100644
--- a/Pinta.Effects/Effects/FragmentEffect.cs
+++ b/Pinta.Effects/Effects/FragmentEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class FragmentEffect : BaseEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Effects/FrostedGlassEffect.cs b/Pinta.Effects/Effects/FrostedGlassEffect.cs
index 4acaabb..c6a0a47 100644
--- a/Pinta.Effects/Effects/FrostedGlassEffect.cs
+++ b/Pinta.Effects/Effects/FrostedGlassEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class FrostedGlassEffect : BaseEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Effects/GaussianBlurEffect.cs b/Pinta.Effects/Effects/GaussianBlurEffect.cs
index 1ece67e..5b56ae6 100644
--- a/Pinta.Effects/Effects/GaussianBlurEffect.cs
+++ b/Pinta.Effects/Effects/GaussianBlurEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class GaussianBlurEffect : BaseEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Effects/GlowEffect.cs b/Pinta.Effects/Effects/GlowEffect.cs
index dd5c377..4d4ead2 100644
--- a/Pinta.Effects/Effects/GlowEffect.cs
+++ b/Pinta.Effects/Effects/GlowEffect.cs
@@ -16,7 +16,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class GlowEffect : BaseEffect
{
private GaussianBlurEffect blurEffect;
diff --git a/Pinta.Effects/Effects/InkSketchEffect.cs b/Pinta.Effects/Effects/InkSketchEffect.cs
index b9b7cc6..771ba8c 100644
--- a/Pinta.Effects/Effects/InkSketchEffect.cs
+++ b/Pinta.Effects/Effects/InkSketchEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class InkSketchEffect : BaseEffect
{
private static readonly int[][] conv;
diff --git a/Pinta.Effects/Effects/JuliaFractalEffect.cs b/Pinta.Effects/Effects/JuliaFractalEffect.cs
index 824da60..a341bd0 100644
--- a/Pinta.Effects/Effects/JuliaFractalEffect.cs
+++ b/Pinta.Effects/Effects/JuliaFractalEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class JuliaFractalEffect : BaseEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Effects/MandelbrotFractalEffect.cs b/Pinta.Effects/Effects/MandelbrotFractalEffect.cs
index b5924c7..f05c6dd 100644
--- a/Pinta.Effects/Effects/MandelbrotFractalEffect.cs
+++ b/Pinta.Effects/Effects/MandelbrotFractalEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class MandelbrotFractalEffect : BaseEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Effects/MedianEffect.cs b/Pinta.Effects/Effects/MedianEffect.cs
index 011e592..ef67fcd 100644
--- a/Pinta.Effects/Effects/MedianEffect.cs
+++ b/Pinta.Effects/Effects/MedianEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class MedianEffect : LocalHistogramEffect
{
private int radius;
diff --git a/Pinta.Effects/Effects/MotionBlurEffect.cs b/Pinta.Effects/Effects/MotionBlurEffect.cs
index 684a54b..52ab6b2 100644
--- a/Pinta.Effects/Effects/MotionBlurEffect.cs
+++ b/Pinta.Effects/Effects/MotionBlurEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class MotionBlurEffect : BaseEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Effects/OilPaintingEffect.cs b/Pinta.Effects/Effects/OilPaintingEffect.cs
index 7d3728e..e908b6a 100644
--- a/Pinta.Effects/Effects/OilPaintingEffect.cs
+++ b/Pinta.Effects/Effects/OilPaintingEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class OilPaintingEffect : BaseEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Effects/OutlineEffect.cs b/Pinta.Effects/Effects/OutlineEffect.cs
index 04cfa37..f7b8b94 100644
--- a/Pinta.Effects/Effects/OutlineEffect.cs
+++ b/Pinta.Effects/Effects/OutlineEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class OutlineEffect : LocalHistogramEffect
{
private int thickness;
diff --git a/Pinta.Effects/Effects/PencilSketchEffect.cs b/Pinta.Effects/Effects/PencilSketchEffect.cs
index 791a726..a836709 100644
--- a/Pinta.Effects/Effects/PencilSketchEffect.cs
+++ b/Pinta.Effects/Effects/PencilSketchEffect.cs
@@ -16,7 +16,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class PencilSketchEffect : BaseEffect
{
private GaussianBlurEffect blurEffect;
diff --git a/Pinta.Effects/Effects/PixelateEffect.cs b/Pinta.Effects/Effects/PixelateEffect.cs
index fc2718e..5d24b45 100644
--- a/Pinta.Effects/Effects/PixelateEffect.cs
+++ b/Pinta.Effects/Effects/PixelateEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class PixelateEffect : BaseEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Effects/PolarInversionEffect.cs b/Pinta.Effects/Effects/PolarInversionEffect.cs
index 17ee2c0..dc6a5fc 100644
--- a/Pinta.Effects/Effects/PolarInversionEffect.cs
+++ b/Pinta.Effects/Effects/PolarInversionEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class PolarInversionEffect : WarpEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Effects/RadialBlurEffect.cs b/Pinta.Effects/Effects/RadialBlurEffect.cs
index 5a2493c..8b8202a 100644
--- a/Pinta.Effects/Effects/RadialBlurEffect.cs
+++ b/Pinta.Effects/Effects/RadialBlurEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class RadialBlurEffect : BaseEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Effects/RedEyeRemoveEffect.cs b/Pinta.Effects/Effects/RedEyeRemoveEffect.cs
index 03cb3fc..46d9598 100644
--- a/Pinta.Effects/Effects/RedEyeRemoveEffect.cs
+++ b/Pinta.Effects/Effects/RedEyeRemoveEffect.cs
@@ -16,7 +16,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class RedEyeRemoveEffect : BaseEffect
{
private UnaryPixelOp op;
diff --git a/Pinta.Effects/Effects/ReduceNoiseEffect.cs b/Pinta.Effects/Effects/ReduceNoiseEffect.cs
index 67b44cf..e6b4d15 100644
--- a/Pinta.Effects/Effects/ReduceNoiseEffect.cs
+++ b/Pinta.Effects/Effects/ReduceNoiseEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class ReduceNoiseEffect : LocalHistogramEffect
{
private int radius;
diff --git a/Pinta.Effects/Effects/ReliefEffect.cs b/Pinta.Effects/Effects/ReliefEffect.cs
index cb4dffc..8da3a25 100644
--- a/Pinta.Effects/Effects/ReliefEffect.cs
+++ b/Pinta.Effects/Effects/ReliefEffect.cs
@@ -14,7 +14,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class ReliefEffect : ColorDifferenceEffect
{
public ReliefEffect () {
diff --git a/Pinta.Effects/Effects/SharpenEffect.cs b/Pinta.Effects/Effects/SharpenEffect.cs
index a4a7d77..dee5764 100644
--- a/Pinta.Effects/Effects/SharpenEffect.cs
+++ b/Pinta.Effects/Effects/SharpenEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class SharpenEffect : LocalHistogramEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Effects/SoftenPortraitEffect.cs b/Pinta.Effects/Effects/SoftenPortraitEffect.cs
index 7cd61d0..8812a00 100644
--- a/Pinta.Effects/Effects/SoftenPortraitEffect.cs
+++ b/Pinta.Effects/Effects/SoftenPortraitEffect.cs
@@ -43,7 +43,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class SoftenPortraitEffect : BaseEffect
{
private GaussianBlurEffect blurEffect;
diff --git a/Pinta.Effects/Effects/TileEffect.cs b/Pinta.Effects/Effects/TileEffect.cs
index c9029a7..113faeb 100644
--- a/Pinta.Effects/Effects/TileEffect.cs
+++ b/Pinta.Effects/Effects/TileEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class TileEffect : BaseEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Effects/TwistEffect.cs b/Pinta.Effects/Effects/TwistEffect.cs
index 66955df..2bb67ce 100644
--- a/Pinta.Effects/Effects/TwistEffect.cs
+++ b/Pinta.Effects/Effects/TwistEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class TwistEffect : BaseEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Effects/UnfocusEffect.cs b/Pinta.Effects/Effects/UnfocusEffect.cs
index 63e8801..60fe1bc 100644
--- a/Pinta.Effects/Effects/UnfocusEffect.cs
+++ b/Pinta.Effects/Effects/UnfocusEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class UnfocusEffect : LocalHistogramEffect
{
private int radius;
diff --git a/Pinta.Effects/Effects/ZoomBlurEffect.cs b/Pinta.Effects/Effects/ZoomBlurEffect.cs
index 979f1ab..94a0f53 100644
--- a/Pinta.Effects/Effects/ZoomBlurEffect.cs
+++ b/Pinta.Effects/Effects/ZoomBlurEffect.cs
@@ -15,7 +15,7 @@ using Mono.Unix;
namespace Pinta.Effects
{
- [System.ComponentModel.Composition.Export (typeof (BaseEffect))]
+ //[System.ComponentModel.Composition (typeof (BaseEffect))]
public class ZoomBlurEffect : BaseEffect
{
public override string Icon {
diff --git a/Pinta.Effects/Pinta.Effects.csproj b/Pinta.Effects/Pinta.Effects.csproj
index 77581fd..fc96523 100644
--- a/Pinta.Effects/Pinta.Effects.csproj
+++ b/Pinta.Effects/Pinta.Effects.csproj
@@ -36,7 +36,7 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
- <OutputPath>..\bin\Extensions\</OutputPath>
+ <OutputPath>..\bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@@ -46,7 +46,7 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
- <OutputPath>..\bin\Extensions\</OutputPath>
+ <OutputPath>..\bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@@ -129,11 +129,6 @@
<Name>Pinta.Gui.Widgets</Name>
<Private>False</Private>
</ProjectReference>
- <ProjectReference Include="..\System.ComponentModel.Composition\System.ComponentModel.Composition.csproj">
- <Project>{1BBA5101-D4F0-48B8-A5D6-7B23A099DCE3}</Project>
- <Name>System.ComponentModel.Composition</Name>
- <Private>False</Private>
- </ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
diff --git a/Pinta.Effects/Properties/AssemblyInfo.cs b/Pinta.Effects/Properties/AssemblyInfo.cs
index e3f71c0..438e18f 100644
--- a/Pinta.Effects/Properties/AssemblyInfo.cs
+++ b/Pinta.Effects/Properties/AssemblyInfo.cs
@@ -8,9 +8,9 @@ using System.Runtime.InteropServices;
[assembly: AssemblyTitle ("Pinta.Effects")]
[assembly: AssemblyDescription ("")]
[assembly: AssemblyConfiguration ("")]
-[assembly: AssemblyCompany ("Microsoft")]
+[assembly: AssemblyCompany ("")]
[assembly: AssemblyProduct ("Pinta.Effects")]
-[assembly: AssemblyCopyright ("Copyright © Microsoft 2010")]
+[assembly: AssemblyCopyright ("")]
[assembly: AssemblyTrademark ("")]
[assembly: AssemblyCulture ("")]
@@ -32,5 +32,4 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion ("0.7.0.0")]
-[assembly: AssemblyFileVersion ("0.7.0.0")]
+[assembly: AssemblyVersion ("1.0.0.0")]
diff --git a/Pinta.Gui.Widgets/AssemblyInfo.cs b/Pinta.Gui.Widgets/AssemblyInfo.cs
index 1929fcc..5abef5e 100644
--- a/Pinta.Gui.Widgets/AssemblyInfo.cs
+++ b/Pinta.Gui.Widgets/AssemblyInfo.cs
@@ -42,7 +42,7 @@ using System.Runtime.CompilerServices;
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-[assembly: AssemblyVersion("0.7.0.0")]
+[assembly: AssemblyVersion("1.0.0.0")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
diff --git a/Pinta.Resources/AssemblyInfo.cs b/Pinta.Resources/AssemblyInfo.cs
index 06016c3..51941a9 100644
--- a/Pinta.Resources/AssemblyInfo.cs
+++ b/Pinta.Resources/AssemblyInfo.cs
@@ -17,7 +17,7 @@ using System.Runtime.CompilerServices;
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-[assembly: AssemblyVersion("0.7.0.0")]
+[assembly: AssemblyVersion("1.0.0.0")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
diff --git a/Pinta.Resources/Pinta.Resources.csproj b/Pinta.Resources/Pinta.Resources.csproj
index d864ff1..2ee40cc 100644
--- a/Pinta.Resources/Pinta.Resources.csproj
+++ b/Pinta.Resources/Pinta.Resources.csproj
@@ -475,6 +475,12 @@
<EmbeddedResource Include="Resources\ShapeTool.Outline.png">
<LogicalName>ShapeTool.Outline.png</LogicalName>
</EmbeddedResource>
+ <EmbeddedResource Include="Resources\Pinta-16.png">
+ <LogicalName>Pinta-16.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="Resources\Pinta-32.png">
+ <LogicalName>Pinta-32.png</LogicalName>
+ </EmbeddedResource>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
diff --git a/Pinta.Resources/ResourceManager.cs b/Pinta.Resources/ResourceManager.cs
index 5e0c2cc..5768bc7 100644
--- a/Pinta.Resources/ResourceManager.cs
+++ b/Pinta.Resources/ResourceManager.cs
@@ -31,12 +31,12 @@ namespace Pinta.Resources
{
public static class ResourceLoader
{
- public static Pixbuf GetIcon (string name)
+ public static Pixbuf GetIcon (string name, int size)
{
// First see if it's a built-in gtk icon, like gtk-new
if (Gtk.IconTheme.Default.HasIcon (name))
- return Gtk.IconTheme.Default.LoadIcon (name, 16, Gtk.IconLookupFlags.UseBuiltin);
-
+ return Gtk.IconTheme.Default.LoadIcon (name, size, Gtk.IconLookupFlags.UseBuiltin);
+
// Get it from our embedded resources
return Gdk.Pixbuf.LoadFromResource (name);
}
diff --git a/Pinta.Resources/Resources/Pinta-16.png b/Pinta.Resources/Resources/Pinta-16.png
new file mode 100644
index 0000000..4a4563c
Binary files /dev/null and b/Pinta.Resources/Resources/Pinta-16.png differ
diff --git a/Pinta.Resources/Resources/Pinta-32.png b/Pinta.Resources/Resources/Pinta-32.png
new file mode 100644
index 0000000..05a7723
Binary files /dev/null and b/Pinta.Resources/Resources/Pinta-32.png differ
diff --git a/Pinta.Tools/Brushes/CircleBrush.cs b/Pinta.Tools/Brushes/CircleBrush.cs
index eb8cb0c..39ec3f7 100644
--- a/Pinta.Tools/Brushes/CircleBrush.cs
+++ b/Pinta.Tools/Brushes/CircleBrush.cs
@@ -31,7 +31,7 @@ using Pinta.Core;
namespace Pinta.Tools.Brushes
{
- [System.ComponentModel.Composition.Export (typeof (BasePaintBrush))]
+ //[System.ComponentModel.Composition (typeof (BasePaintBrush))]
public class CircleBrush : PaintBrush
{
public override string Name {
diff --git a/Pinta.Tools/Brushes/GridBrush.cs b/Pinta.Tools/Brushes/GridBrush.cs
index 23a994d..1369a98 100644
--- a/Pinta.Tools/Brushes/GridBrush.cs
+++ b/Pinta.Tools/Brushes/GridBrush.cs
@@ -31,7 +31,7 @@ using Pinta.Core;
namespace Pinta.Tools.Brushes
{
- [System.ComponentModel.Composition.Export (typeof (BasePaintBrush))]
+ //[System.ComponentModel.Composition (typeof (BasePaintBrush))]
public class GridBrush : PaintBrush
{
public override string Name {
diff --git a/Pinta.Tools/Brushes/PlainBrush.cs b/Pinta.Tools/Brushes/PlainBrush.cs
index 8e4cc56..f46368f 100644
--- a/Pinta.Tools/Brushes/PlainBrush.cs
+++ b/Pinta.Tools/Brushes/PlainBrush.cs
@@ -31,7 +31,7 @@ using Pinta.Core;
namespace Pinta.Tools.Brushes
{
- [System.ComponentModel.Composition.Export (typeof (BasePaintBrush))]
+ //[System.ComponentModel.Composition (typeof (BasePaintBrush))]
public class PlainBrush : PaintBrush
{
public override string Name {
diff --git a/Pinta.Tools/Brushes/SplatterBrush.cs b/Pinta.Tools/Brushes/SplatterBrush.cs
index df50dd0..23f3ff6 100644
--- a/Pinta.Tools/Brushes/SplatterBrush.cs
+++ b/Pinta.Tools/Brushes/SplatterBrush.cs
@@ -31,7 +31,7 @@ using Pinta.Core;
namespace Pinta.Tools.Brushes
{
- [System.ComponentModel.Composition.Export (typeof (BasePaintBrush))]
+ //[System.ComponentModel.Composition (typeof (BasePaintBrush))]
public class SplatterBrush : PaintBrush
{
public override string Name {
diff --git a/Pinta.Tools/Brushes/SquaresBrush.cs b/Pinta.Tools/Brushes/SquaresBrush.cs
index 66fb3c8..8e6ab1e 100644
--- a/Pinta.Tools/Brushes/SquaresBrush.cs
+++ b/Pinta.Tools/Brushes/SquaresBrush.cs
@@ -31,7 +31,7 @@ using Pinta.Core;
namespace Pinta.Tools.Brushes
{
- [System.ComponentModel.Composition.Export (typeof (BasePaintBrush))]
+ //[System.ComponentModel.Composition (typeof (BasePaintBrush))]
public class SquaresBrush : PaintBrush
{
private static double theta = Math.PI / 2;
diff --git a/Pinta.Tools/CloneStampTool.cs b/Pinta.Tools/CloneStampTool.cs
index 83d1ead..203991c 100644
--- a/Pinta.Tools/CloneStampTool.cs
+++ b/Pinta.Tools/CloneStampTool.cs
@@ -31,7 +31,7 @@ using Gdk;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class CloneStampTool : BaseBrushTool
{
private bool painting;
diff --git a/Pinta.Tools/ColorPickerTool.cs b/Pinta.Tools/ColorPickerTool.cs
index 214cccf..76629be 100644
--- a/Pinta.Tools/ColorPickerTool.cs
+++ b/Pinta.Tools/ColorPickerTool.cs
@@ -31,7 +31,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class ColorPickerTool : BaseTool
{
private int button_down = 0;
diff --git a/Pinta.Tools/EllipseSelectTool.cs b/Pinta.Tools/EllipseSelectTool.cs
index abf4b0e..6a3d149 100644
--- a/Pinta.Tools/EllipseSelectTool.cs
+++ b/Pinta.Tools/EllipseSelectTool.cs
@@ -31,7 +31,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class EllipseSelectTool : SelectTool
{
public override string Name {
diff --git a/Pinta.Tools/EllipseTool.cs b/Pinta.Tools/EllipseTool.cs
index c371657..a9e6c11 100644
--- a/Pinta.Tools/EllipseTool.cs
+++ b/Pinta.Tools/EllipseTool.cs
@@ -31,7 +31,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class EllipseTool : ShapeTool
{
public override string Name {
diff --git a/Pinta.Tools/EraserTool.cs b/Pinta.Tools/EraserTool.cs
index ac308bf..cbc5eac 100644
--- a/Pinta.Tools/EraserTool.cs
+++ b/Pinta.Tools/EraserTool.cs
@@ -32,7 +32,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class EraserTool : BaseBrushTool
{
private Point last_point = point_empty;
diff --git a/Pinta.Tools/FreeformShapeTool.cs b/Pinta.Tools/FreeformShapeTool.cs
index 8f44762..f90ef44 100644
--- a/Pinta.Tools/FreeformShapeTool.cs
+++ b/Pinta.Tools/FreeformShapeTool.cs
@@ -32,7 +32,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class FreeformShapeTool : BaseBrushTool
{
private Point last_point = point_empty;
diff --git a/Pinta.Tools/GradientTool.cs b/Pinta.Tools/GradientTool.cs
index 9129aa1..0e01e85 100644
--- a/Pinta.Tools/GradientTool.cs
+++ b/Pinta.Tools/GradientTool.cs
@@ -31,7 +31,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class GradientTool : BaseTool
{
Cairo.PointD startpoint;
diff --git a/Pinta.Tools/LassoSelectTool.cs b/Pinta.Tools/LassoSelectTool.cs
index a47c38d..e6abf97 100644
--- a/Pinta.Tools/LassoSelectTool.cs
+++ b/Pinta.Tools/LassoSelectTool.cs
@@ -32,7 +32,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class LassoSelectTool : SelectTool
{
private Path path;
diff --git a/Pinta.Tools/LineCurveTool.cs b/Pinta.Tools/LineCurveTool.cs
index dc91623..4ba6901 100644
--- a/Pinta.Tools/LineCurveTool.cs
+++ b/Pinta.Tools/LineCurveTool.cs
@@ -31,7 +31,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class LineCurveTool : ShapeTool
{
public override string Name {
diff --git a/Pinta.Tools/MagicWandTool.cs b/Pinta.Tools/MagicWandTool.cs
index d201484..a7e0dcd 100644
--- a/Pinta.Tools/MagicWandTool.cs
+++ b/Pinta.Tools/MagicWandTool.cs
@@ -31,7 +31,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class MagicWandTool : FloodTool
{
private CombineMode combineMode;
diff --git a/Pinta.Tools/MoveSelectedTool.cs b/Pinta.Tools/MoveSelectedTool.cs
index 18ec733..91dcf55 100644
--- a/Pinta.Tools/MoveSelectedTool.cs
+++ b/Pinta.Tools/MoveSelectedTool.cs
@@ -31,7 +31,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class MoveSelectedTool : BaseTool
{
private PointD origin_offset;
@@ -136,7 +136,11 @@ namespace Pinta.Tools
protected override void OnCommit ()
{
- PintaCore.Workspace.ActiveDocument.FinishSelection ();
+ try {
+ PintaCore.Workspace.ActiveDocument.FinishSelection ();
+ } catch (Exception) {
+ // Ignore an error where ActiveDocument fails.
+ }
}
protected override void OnDeactivated ()
diff --git a/Pinta.Tools/MoveSelectionTool.cs b/Pinta.Tools/MoveSelectionTool.cs
index a2a6bf4..d897ab5 100644
--- a/Pinta.Tools/MoveSelectionTool.cs
+++ b/Pinta.Tools/MoveSelectionTool.cs
@@ -31,7 +31,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class MoveSelectionTool : BaseTool
{
private PointD origin_offset;
diff --git a/Pinta.Tools/PaintBrushTool.cs b/Pinta.Tools/PaintBrushTool.cs
index a1e05f0..72ebc15 100644
--- a/Pinta.Tools/PaintBrushTool.cs
+++ b/Pinta.Tools/PaintBrushTool.cs
@@ -34,7 +34,7 @@ using Pinta.Tools.Brushes;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class PaintBrushTool : BaseBrushTool
{
#region Properties
diff --git a/Pinta.Tools/PaintBucketTool.cs b/Pinta.Tools/PaintBucketTool.cs
index 007d38a..1650e06 100644
--- a/Pinta.Tools/PaintBucketTool.cs
+++ b/Pinta.Tools/PaintBucketTool.cs
@@ -31,7 +31,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class PaintBucketTool : FloodTool
{
private Color fill_color;
diff --git a/Pinta.Tools/PanTool.cs b/Pinta.Tools/PanTool.cs
index 788b00a..fa45a1d 100644
--- a/Pinta.Tools/PanTool.cs
+++ b/Pinta.Tools/PanTool.cs
@@ -31,7 +31,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class PanTool : BaseTool
{
public override string Name {
diff --git a/Pinta.Tools/PencilTool.cs b/Pinta.Tools/PencilTool.cs
index 8fc38f2..ec03a36 100644
--- a/Pinta.Tools/PencilTool.cs
+++ b/Pinta.Tools/PencilTool.cs
@@ -32,7 +32,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class PencilTool : BaseTool
{
private Point last_point = point_empty;
diff --git a/Pinta.Tools/Pinta.Tools.csproj b/Pinta.Tools/Pinta.Tools.csproj
index dd3644b..571c0f2 100644
--- a/Pinta.Tools/Pinta.Tools.csproj
+++ b/Pinta.Tools/Pinta.Tools.csproj
@@ -36,7 +36,7 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
- <OutputPath>..\bin\Extensions\</OutputPath>
+ <OutputPath>..\bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@@ -46,7 +46,7 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
- <OutputPath>..\bin\Extensions\</OutputPath>
+ <OutputPath>..\bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@@ -112,11 +112,6 @@
<Name>Pinta.Core</Name>
<Private>False</Private>
</ProjectReference>
- <ProjectReference Include="..\System.ComponentModel.Composition\System.ComponentModel.Composition.csproj">
- <Project>{1BBA5101-D4F0-48B8-A5D6-7B23A099DCE3}</Project>
- <Name>System.ComponentModel.Composition</Name>
- <Private>False</Private>
- </ProjectReference>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
diff --git a/Pinta.Tools/Properties/AssemblyInfo.cs b/Pinta.Tools/Properties/AssemblyInfo.cs
index 6a1382a..d63f310 100644
--- a/Pinta.Tools/Properties/AssemblyInfo.cs
+++ b/Pinta.Tools/Properties/AssemblyInfo.cs
@@ -8,9 +8,9 @@ using System.Runtime.InteropServices;
[assembly: AssemblyTitle ("Pinta.Tools")]
[assembly: AssemblyDescription ("")]
[assembly: AssemblyConfiguration ("")]
-[assembly: AssemblyCompany ("Microsoft")]
+[assembly: AssemblyCompany ("")]
[assembly: AssemblyProduct ("Pinta.Tools")]
-[assembly: AssemblyCopyright ("Copyright © Microsoft 2010")]
+[assembly: AssemblyCopyright ("")]
[assembly: AssemblyTrademark ("")]
[assembly: AssemblyCulture ("")]
@@ -32,5 +32,4 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion ("0.7.0.0")]
-[assembly: AssemblyFileVersion ("0.7.0.0")]
+[assembly: AssemblyVersion ("1.0.0.0")]
diff --git a/Pinta.Tools/RecolorTool.cs b/Pinta.Tools/RecolorTool.cs
index eca9dbe..3af66e5 100644
--- a/Pinta.Tools/RecolorTool.cs
+++ b/Pinta.Tools/RecolorTool.cs
@@ -41,7 +41,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class RecolorTool : BaseBrushTool
{
protected ToolBarLabel tolerance_label;
diff --git a/Pinta.Tools/RectangleSelectTool.cs b/Pinta.Tools/RectangleSelectTool.cs
index 6357897..bdee07f 100644
--- a/Pinta.Tools/RectangleSelectTool.cs
+++ b/Pinta.Tools/RectangleSelectTool.cs
@@ -31,7 +31,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class RectangleSelectTool : SelectTool
{
public override string Name {
diff --git a/Pinta.Tools/RectangleTool.cs b/Pinta.Tools/RectangleTool.cs
index 20d32e0..ae1eee1 100644
--- a/Pinta.Tools/RectangleTool.cs
+++ b/Pinta.Tools/RectangleTool.cs
@@ -31,7 +31,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class RectangleTool : ShapeTool
{
public override string Name {
diff --git a/Pinta.Tools/RoundedRectangleTool.cs b/Pinta.Tools/RoundedRectangleTool.cs
index a98c24a..1771707 100644
--- a/Pinta.Tools/RoundedRectangleTool.cs
+++ b/Pinta.Tools/RoundedRectangleTool.cs
@@ -31,7 +31,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class RoundedRectangleTool : ShapeTool
{
protected ToolBarComboBox radius;
diff --git a/Pinta.Tools/SelectTool.cs b/Pinta.Tools/SelectTool.cs
index c892c5b..b2cfd78 100644
--- a/Pinta.Tools/SelectTool.cs
+++ b/Pinta.Tools/SelectTool.cs
@@ -33,6 +33,8 @@ namespace Pinta.Tools
{
public abstract class SelectTool : ShapeTool
{
+ private PointD reset_origin;
+
protected SelectionHistoryItem hist;
public override Gdk.Key ShortcutKey { get { return Gdk.Key.S; } }
protected override bool ShowAntialiasingButton { get { return false; } }
@@ -51,7 +53,14 @@ namespace Pinta.Tools
if (is_drawing)
return;
- shape_origin = point;
+ reset_origin = args.Event.GetPoint ();
+
+ Document doc = PintaCore.Workspace.ActiveDocument;
+
+ double x = Utility.Clamp (point.X, 0, doc.ImageSize.Width - 1);
+ double y = Utility.Clamp (point.Y, 0, doc.ImageSize.Height - 1);
+
+ shape_origin = new PointD (x, y);
is_drawing = true;
hist = new SelectionHistoryItem (Icon, Name);
@@ -62,11 +71,11 @@ namespace Pinta.Tools
{
double x = point.X;
double y = point.Y;
-
+
// If the user didn't move the mouse, they want to deselect
- int tolerance = 2;
+ int tolerance = 0;
- if (Math.Abs (shape_origin.X - x) <= tolerance && Math.Abs (shape_origin.Y - y) <= tolerance) {
+ if (Math.Abs (reset_origin.X - args.Event.X) <= tolerance && Math.Abs (reset_origin.Y - args.Event.Y) <= tolerance) {
PintaCore.Actions.Edit.Deselect.Activate ();
hist.Dispose ();
hist = null;
diff --git a/Pinta.Tools/TextTool/TextTool.cs b/Pinta.Tools/TextTool/TextTool.cs
index a390a91..6273743 100644
--- a/Pinta.Tools/TextTool/TextTool.cs
+++ b/Pinta.Tools/TextTool/TextTool.cs
@@ -17,7 +17,7 @@ using Pinta.Core;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class TextTool : BaseTool
{
// Variables for dragging
@@ -192,7 +192,7 @@ namespace Pinta.Tools
"10", "11", "12", "13", "14", "15", "20", "25", "30", "35",
"40", "45", "50", "55");
- (outline_width.Child as ComboBoxEntry).Changed += HandleBoldButtonToggled;
+ (outline_width.Child as ComboBoxEntry).Changed += HandleSizeChanged;
}
tb.AppendItem (outline_width);
@@ -613,26 +613,30 @@ namespace Pinta.Tools
if (!is_editing)
return;
- Document doc = PintaCore.Workspace.ActiveDocument;
+ try {
+ Document doc = PintaCore.Workspace.ActiveDocument;
- doc.ToolLayer.Clear ();
- doc.ToolLayer.Hidden = true;
+ doc.ToolLayer.Clear ();
+ doc.ToolLayer.Hidden = true;
- if (engine.EditMode == EditingMode.Editing) {
- SimpleHistoryItem hist = new SimpleHistoryItem (Icon, Name);
- hist.TakeSnapshotOfLayer (doc.CurrentLayerIndex);
+ if (engine.EditMode == EditingMode.Editing) {
+ SimpleHistoryItem hist = new SimpleHistoryItem (Icon, Name);
+ hist.TakeSnapshotOfLayer (doc.CurrentLayerIndex);
- // Redraw the text without the cursor,
- // and on to the real layer
- RedrawText (false, false);
+ // Redraw the text without the cursor,
+ // and on to the real layer
+ RedrawText (false, false);
- doc.History.PushNewItem (hist);
- }
+ doc.History.PushNewItem (hist);
+ }
- engine.Clear ();
- doc.Workspace.Invalidate (old_bounds);
- old_bounds = Rectangle.Zero;
- is_editing = false;
+ engine.Clear ();
+ doc.Workspace.Invalidate (old_bounds);
+ old_bounds = Rectangle.Zero;
+ is_editing = false;
+ } catch (Exception) {
+ // Just ignore the error
+ }
}
#endregion
@@ -691,7 +695,7 @@ namespace Pinta.Tools
}
Rectangle r = engine.GetLayoutBounds ();
- r.Inflate (10, 10);
+ r.Inflate (10 + OutlineWidth, 10 + OutlineWidth);
PintaCore.Workspace.Invalidate (old_bounds);
PintaCore.Workspace.Invalidate (invalidate_cursor);
diff --git a/Pinta.Tools/ZoomTool.cs b/Pinta.Tools/ZoomTool.cs
index 1ad5668..94c92f6 100644
--- a/Pinta.Tools/ZoomTool.cs
+++ b/Pinta.Tools/ZoomTool.cs
@@ -31,7 +31,7 @@ using Mono.Unix;
namespace Pinta.Tools
{
- [System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ //[System.ComponentModel.Composition (typeof (BaseTool))]
public class ZoomTool : BaseTool
{
private Gdk.Cursor cursorZoomIn;
diff --git a/Pinta.sln b/Pinta.sln
index d3ad5ac..025f31b 100644
--- a/Pinta.sln
+++ b/Pinta.sln
@@ -16,8 +16,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pinta.Tools", "Pinta.Tools\
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pinta.Effects", "Pinta.Effects\Pinta.Effects.csproj", "{71A1C3E0-7343-48FE-BD9A-508929136E92}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.Composition", "System.ComponentModel.Composition\System.ComponentModel.Composition.csproj", "{1BBA5101-D4F0-48B8-A5D6-7B23A099DCE3}"
-EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -48,10 +46,6 @@ Global
{71A1C3E0-7343-48FE-BD9A-508929136E92}.Debug|Any CPU.Build.0 = Debug|Any CPU
{71A1C3E0-7343-48FE-BD9A-508929136E92}.Release|Any CPU.ActiveCfg = Release|Any CPU
{71A1C3E0-7343-48FE-BD9A-508929136E92}.Release|Any CPU.Build.0 = Release|Any CPU
- {1BBA5101-D4F0-48B8-A5D6-7B23A099DCE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1BBA5101-D4F0-48B8-A5D6-7B23A099DCE3}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1BBA5101-D4F0-48B8-A5D6-7B23A099DCE3}.Release|Any CPU.ActiveCfg = Debug|Any CPU
- {1BBA5101-D4F0-48B8-A5D6-7B23A099DCE3}.Release|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Pinta/AssemblyInfo.cs b/Pinta/AssemblyInfo.cs
index 54beec7..0fa15ca 100644
--- a/Pinta/AssemblyInfo.cs
+++ b/Pinta/AssemblyInfo.cs
@@ -17,7 +17,7 @@ using System.Runtime.CompilerServices;
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-[assembly: AssemblyVersion ("0.7.0.0")]
+[assembly: AssemblyVersion ("1.0.0.0")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
diff --git a/Pinta/DialogHandlers.cs b/Pinta/DialogHandlers.cs
index 31b5812..63c1abd 100644
--- a/Pinta/DialogHandlers.cs
+++ b/Pinta/DialogHandlers.cs
@@ -430,16 +430,18 @@ namespace Pinta
fcd.AlternativeButtonOrder = new int[] { (int)ResponseType.Ok, (int)ResponseType.Cancel };
fcd.SetCurrentFolder (lastDialogDir);
+ fcd.SelectMultiple = true;
int response = fcd.Run ();
if (response == (int)Gtk.ResponseType.Ok) {
lastDialogDir = fcd.CurrentFolder;
- if (PintaCore.Workspace.OpenFile (fcd.Filename)) {
- RecentManager.Default.AddFull (fcd.Uri, recentData);
- PintaCore.Workspace.ActiveDocument.HasFile = true;
- }
+ foreach (var file in fcd.Filenames)
+ if (PintaCore.Workspace.OpenFile (file)) {
+ RecentManager.Default.AddFull (fcd.Uri, recentData);
+ PintaCore.Workspace.ActiveDocument.HasFile = true;
+ }
}
fcd.Destroy ();
@@ -548,9 +550,15 @@ namespace Pinta
if (hasFile)
format_desc = PintaCore.System.ImageFormats.GetFormatByFile (document.Filename);
- if (format_desc == null)
+ if (format_desc == null) {
format_desc = PintaCore.System.ImageFormats.GetDefaultSaveFormat ();
+ // Gtk doesn't like it if we set the file name to an extension that we don't have
+ // a filter for, so we change the extension to our default extension.
+ if (hasFile)
+ fcd.SetFilename (Path.ChangeExtension (document.PathAndFileName, format_desc.Extensions[0]));
+ }
+
fcd.Filter = format_desc.Filter;
// Replace GTK's ConfirmOverwrite with our own, for UI consistency
diff --git a/Pinta/Dialogs/AboutDialog.cs b/Pinta/Dialogs/AboutDialog.cs
index 77aeeba..b19bd7f 100644
--- a/Pinta/Dialogs/AboutDialog.cs
+++ b/Pinta/Dialogs/AboutDialog.cs
@@ -60,6 +60,7 @@ namespace Pinta
string[] authors = new string[] {
"Jonathan Pobst",
+ "Olivier Dufour",
};
string[] oldAuthors = new string[] {
diff --git a/Pinta/Dialogs/AboutPintaTabPage.cs b/Pinta/Dialogs/AboutPintaTabPage.cs
index 7478a95..f1e35c9 100644
--- a/Pinta/Dialogs/AboutPintaTabPage.cs
+++ b/Pinta/Dialogs/AboutPintaTabPage.cs
@@ -39,7 +39,7 @@ namespace Pinta
label.Markup = String.Format (
"<b>{0}</b>\n {1}",
Catalog.GetString ("Version"),
- "0.7");
+ "1.0");
HBox hBoxVersion = new HBox ();
hBoxVersion.PackStart (label, false, false, 5);
diff --git a/Pinta/DockLibrary/DockBarItem.cs b/Pinta/DockLibrary/DockBarItem.cs
index b7354ad..fb1519b 100644
--- a/Pinta/DockLibrary/DockBarItem.cs
+++ b/Pinta/DockLibrary/DockBarItem.cs
@@ -46,6 +46,7 @@ namespace MonoDevelop.Components.Docking
uint autoShowTimeout = uint.MaxValue;
uint autoHideTimeout = uint.MaxValue;
int size;
+ Gdk.Size lastFrameSize;
public DockBarItem (DockBar bar, DockItem it, int size)
{
@@ -55,8 +56,26 @@ namespace MonoDevelop.Components.Docking
this.it = it;
VisibleWindow = false;
UpdateTab ();
+ lastFrameSize = bar.Frame.Allocation.Size;
+ bar.Frame.SizeAllocated += HandleBarFrameSizeAllocated;
+ }
+
+ void HandleBarFrameSizeAllocated (object o, SizeAllocatedArgs args)
+ {
+ if (!lastFrameSize.Equals (args.Allocation.Size)) {
+ lastFrameSize = args.Allocation.Size;
+ if (autoShowFrame != null)
+ bar.Frame.UpdateSize (bar, autoShowFrame);
+ }
}
+ protected override void OnDestroyed ()
+ {
+ base.OnDestroyed ();
+ bar.Frame.SizeAllocated -= HandleBarFrameSizeAllocated;
+ }
+
+
public void Close ()
{
UnscheduleAutoShow ();
@@ -267,7 +286,12 @@ namespace MonoDevelop.Components.Docking
if (autoHideTimeout == uint.MaxValue) {
autoHideTimeout = GLib.Timeout.Add (force ? 0 : bar.Frame.AutoHideDelay, delegate {
// Don't hide the item if it has the focus. Try again later.
- if (it.Widget.FocusChild != null)
+ if (it.Widget.FocusChild != null && !force)
+ return true;
+ // Don't hide the item if the mouse pointer is still inside the window. Try again later.
+ int px, py;
+ it.Widget.GetPointer (out px, out py);
+ if (it.Widget.Visible && it.Widget.IsRealized && it.Widget.Allocation.Contains (px, py) && !force)
return true;
autoHideTimeout = uint.MaxValue;
AutoHide (true);
diff --git a/Pinta/DockLibrary/DockFrame.cs b/Pinta/DockLibrary/DockFrame.cs
index 8d66743..d838286 100644
--- a/Pinta/DockLibrary/DockFrame.cs
+++ b/Pinta/DockLibrary/DockFrame.cs
@@ -309,9 +309,6 @@ namespace MonoDevelop.Components.Docking
public void SaveLayouts (string file)
{
- if (!System.IO.Directory.Exists (System.IO.Path.GetDirectoryName (file)))
- System.IO.Directory.CreateDirectory (System.IO.Path.GetDirectoryName (file));
-
using (XmlTextWriter w = new XmlTextWriter (file, System.Text.Encoding.UTF8)) {
w.Formatting = Formatting.Indented;
SaveLayouts (w);
@@ -611,6 +608,24 @@ namespace MonoDevelop.Components.Docking
return aframe;
}
+ internal void UpdateSize (DockBar bar, AutoHideBox aframe)
+ {
+ Gdk.Size sTop = GetBarFrameSize (dockBarTop);
+ Gdk.Size sBot = GetBarFrameSize (dockBarBottom);
+ Gdk.Size sLeft = GetBarFrameSize (dockBarLeft);
+ Gdk.Size sRgt = GetBarFrameSize (dockBarRight);
+
+ if (bar == dockBarLeft || bar == dockBarRight) {
+ aframe.HeightRequest = Allocation.Height - sTop.Height - sBot.Height;
+ if (bar == dockBarRight)
+ aframe.X = Allocation.Width - aframe.Allocation.Width - sRgt.Width;
+ } else {
+ aframe.WidthRequest = Allocation.Width - sLeft.Width - sRgt.Width;
+ if (bar == dockBarBottom)
+ aframe.Y = Allocation.Height - aframe.Allocation.Height - sBot.Height;
+ }
+ }
+
Gdk.Size GetBarFrameSize (DockBar bar)
{
if (bar.OriginalBar != null)
diff --git a/Pinta/DockLibrary/DockGroup.cs b/Pinta/DockLibrary/DockGroup.cs
index abc72d3..2dfc4ef 100644
--- a/Pinta/DockLibrary/DockGroup.cs
+++ b/Pinta/DockLibrary/DockGroup.cs
@@ -314,7 +314,11 @@ namespace MonoDevelop.Components.Docking
{
base.RestoreAllocation ();
allocStatus = Size >= 0 ? AllocStatus.RestorePending : AllocStatus.NotSet;
- foreach (DockObject ob in dockObjects)
+
+ // Make a copy because RestoreAllocation can fire events such as VisibleChanged,
+ // and subscribers may do changes in the list.
+ List<DockObject> copy = new List<DockObject> (dockObjects);
+ foreach (DockObject ob in copy)
ob.RestoreAllocation ();
}
diff --git a/Pinta/DockLibrary/DockItemContainer.cs b/Pinta/DockLibrary/DockItemContainer.cs
index 916b4d0..94efa19 100644
--- a/Pinta/DockLibrary/DockItemContainer.cs
+++ b/Pinta/DockLibrary/DockItemContainer.cs
@@ -79,6 +79,7 @@ namespace MonoDevelop.Components.Docking
title.Xalign = 0;
title.Xpad = 3;
title.UseMarkup = true;
+ title.Ellipsize = Pango.EllipsizeMode.End;
btnDock = new Button (new Gtk.Image (pixAutoHide));
btnDock.Relief = ReliefStyle.None;
@@ -348,9 +349,14 @@ namespace MonoDevelop.Components.Docking
protected override void OnSizeRequested (ref Requisition requisition)
{
- requisition = child.SizeRequest ();
- requisition.Width += leftMargin + rightMargin + leftPadding + rightPadding;
- requisition.Height += topMargin + bottomMargin + topPadding + bottomPadding;
+ if (child != null) {
+ requisition = child.SizeRequest ();
+ requisition.Width += leftMargin + rightMargin + leftPadding + rightPadding;
+ requisition.Height += topMargin + bottomMargin + topPadding + bottomPadding;
+ } else {
+ requisition.Width = 0;
+ requisition.Height = 0;
+ }
}
protected override void OnSizeAllocated (Gdk.Rectangle allocation)
@@ -364,7 +370,8 @@ namespace MonoDevelop.Components.Docking
allocation.Y += topMargin + topPadding;
allocation.Height -= topMargin + bottomMargin + topPadding + bottomPadding;
}
- child.SizeAllocate (allocation);
+ if (child != null)
+ child.SizeAllocate (allocation);
}
protected override bool OnExposeEvent (Gdk.EventExpose evnt)
diff --git a/Pinta/DockLibrary/DockItemToolbar.cs b/Pinta/DockLibrary/DockItemToolbar.cs
index d0da678..d85c8c8 100644
--- a/Pinta/DockLibrary/DockItemToolbar.cs
+++ b/Pinta/DockLibrary/DockItemToolbar.cs
@@ -113,10 +113,6 @@ namespace MonoDevelop.Components.Docking
}
else if (widget is VSeparator)
((VSeparator)widget).HeightRequest = 10;
- else if (widget is ToolButton) {
- ((ToolButton)widget).HeightRequest = 26;
- ((ToolButton)widget).WidthRequest = 24;
- }
if (padding == -1)
padding = defaultPadding;
@@ -170,7 +166,6 @@ namespace MonoDevelop.Components.Docking
{
public DockToolButton (string stockId)
{
- Label = string.Empty;
Image = new Gtk.Image (stockId, IconSize.Menu);
Image.Show ();
}
diff --git a/Pinta/ExtensionPoints.cs b/Pinta/ExtensionPoints.cs
index 87b3673..e56d70c 100644
--- a/Pinta/ExtensionPoints.cs
+++ b/Pinta/ExtensionPoints.cs
@@ -26,20 +26,99 @@
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
+//using System.ComponentModel.Composition;
using Pinta.Core;
+using Pinta.Tools;
+using Pinta.Effects;
+using Pinta.Tools.Brushes;
namespace Pinta
{
class ExtensionPoints
{
- [ImportMany]
- public IEnumerable<BaseExtension> Extensions { get; set; }
- [ImportMany]
+ //[ImportMany]
public IEnumerable<BaseTool> Tools { get; set; }
- [ImportMany]
+ //[ImportMany]
public IEnumerable<BaseEffect> Effects { get; set; }
- [ImportMany]
+ //[ImportMany]
public IEnumerable<BasePaintBrush> PaintBrushes { get; set; }
+
+ public ExtensionPoints ()
+ {
+ Tools = new List<BaseTool> {
+ new RectangleSelectTool (),
+ new MoveSelectedTool (),
+ new LassoSelectTool (),
+ new MoveSelectionTool (),
+ new EllipseSelectTool (),
+ new ZoomTool (),
+ new MagicWandTool (),
+ new PanTool (),
+ new PaintBucketTool (),
+ new GradientTool (),
+ new PaintBrushTool (),
+ new EraserTool (),
+ new PencilTool (),
+ new ColorPickerTool (),
+ new CloneStampTool (),
+ new RecolorTool (),
+ new TextTool (),
+ new LineCurveTool (),
+ new RectangleTool (),
+ new RoundedRectangleTool (),
+ new EllipseTool (),
+ new FreeformShapeTool ()
+ };
+
+ Effects = new List<BaseEffect> () {
+ new AutoLevelEffect (),
+ new BlackAndWhiteEffect (),
+ new BrightnessContrastEffect (),
+ new CurvesEffect (),
+ new HueSaturationEffect (),
+ new InvertColorsEffect (),
+ new LevelsEffect (),
+ new PosterizeEffect (),
+ new SepiaEffect (),
+ new AddNoiseEffect (),
+ new BulgeEffect (),
+ new CloudsEffect (),
+ new EdgeDetectEffect (),
+ new EmbossEffect (),
+ new FragmentEffect (),
+ new FrostedGlassEffect (),
+ new GaussianBlurEffect (),
+ new GlowEffect (),
+ new InkSketchEffect (),
+ new JuliaFractalEffect (),
+ new MandelbrotFractalEffect (),
+ new MedianEffect (),
+ new MotionBlurEffect (),
+ new OilPaintingEffect (),
+ new OutlineEffect (),
+ new PencilSketchEffect (),
+ new PixelateEffect (),
+ new PolarInversionEffect (),
+ new RadialBlurEffect (),
+ new RedEyeRemoveEffect (),
+ new ReduceNoiseEffect (),
+ new ReliefEffect (),
+ new SharpenEffect (),
+ new SoftenPortraitEffect (),
+ new TileEffect (),
+ new TwistEffect (),
+ new UnfocusEffect (),
+ new ZoomBlurEffect ()
+ };
+
+ PaintBrushes = new List<BasePaintBrush> {
+ new CircleBrush (),
+ new GridBrush (),
+ new PlainBrush (),
+ new SplatterBrush (),
+ new SquaresBrush ()
+ };
+ }
+
}
}
diff --git a/Pinta/Main.cs b/Pinta/Main.cs
index 23adf27..62343d8 100644
--- a/Pinta/Main.cs
+++ b/Pinta/Main.cs
@@ -104,8 +104,9 @@ namespace Pinta
PintaCore.Workspace.ActiveDocument.HasFile = true;
}
} else {
- if (PintaCore.Workspace.OpenFile (extra[0]))
- PintaCore.Workspace.ActiveDocument.HasFile = true;
+ foreach (var file in extra)
+ if (PintaCore.Workspace.OpenFile (file))
+ PintaCore.Workspace.ActiveDocument.HasFile = true;
}
} else {
// Create a blank document
diff --git a/Pinta/MainWindow.cs b/Pinta/MainWindow.cs
index 3d06564..39f7caa 100644
--- a/Pinta/MainWindow.cs
+++ b/Pinta/MainWindow.cs
@@ -25,8 +25,8 @@
// THE SOFTWARE.
using System;
-using System.ComponentModel.Composition;
-using System.ComponentModel.Composition.Hosting;
+//using System.ComponentModel.Composition;
+//using System.ComponentModel.Composition.Hosting;
using System.Linq;
using Gtk;
using MonoDevelop.Components.Docking;
@@ -41,7 +41,7 @@ namespace Pinta
DialogHandlers dialog_handler;
ProgressDialog progress_dialog;
- ExtensionPoints extensions = new ExtensionPoints ();
+ ExtensionPoints extensions;
Toolbar main_toolbar;
Toolbar tool_toolbar;
@@ -67,6 +67,7 @@ namespace Pinta
progress_dialog = new ProgressDialog ();
PintaCore.Initialize (tool_toolbar, canvas, this, progress_dialog);
+ canvas.Realize ();
color.Initialize ();
Compose ();
@@ -333,15 +334,16 @@ namespace Pinta
#region Extension Handlers
private void Compose ()
{
- string ext_dir = System.IO.Path.Combine (System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetEntryAssembly ().Location), "Extensions");
+ extensions = new ExtensionPoints ();
+ //string ext_dir = System.IO.Path.Combine (System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetEntryAssembly ().Location), "Extensions");
- var catalog = new DirectoryCatalog (ext_dir, "*.dll");
- var container = new CompositionContainer (catalog);
+ //var catalog = new DirectoryCatalog (ext_dir, "*.dll");
+ //var container = new CompositionContainer (catalog);
- container.ComposeParts (extensions);
+ //container.ComposeParts (extensions);
- foreach (var extension in extensions.Extensions)
- extension.Initialize ();
+ //foreach (var extension in extensions.Extensions)
+ // extension.Initialize ();
}
private void LoadPaintBrushes ()
@@ -416,6 +418,13 @@ namespace Pinta
AllowShrink = true;
DefaultWidth = PintaCore.Settings.GetSetting<int> ("window-size-width", 1100);
DefaultHeight = PintaCore.Settings.GetSetting<int> ("window-size-height", 750);
+
+ // On !Windows, the icon from the exe isn't automatically used,
+ // so we declare it explicitly here.
+ var icon_16 = PintaCore.Resources.GetIcon ("Pinta-16.png");
+ var icon_32 = PintaCore.Resources.GetIcon ("Pinta-32.png", 32);
+
+ IconList = new Gdk.Pixbuf[] { icon_16, icon_32 };
if (PintaCore.Settings.GetSetting<bool> ("window-maximized", false))
Maximize ();
diff --git a/Pinta/Pinta.csproj b/Pinta/Pinta.csproj
index 4ed57e8..46b4144 100644
--- a/Pinta/Pinta.csproj
+++ b/Pinta/Pinta.csproj
@@ -171,13 +171,17 @@
<Project>{30091528-6EC1-40F8-B4BF-8EB41CBE8A8B}</Project>
<Name>Pinta.Core</Name>
</ProjectReference>
+ <ProjectReference Include="..\Pinta.Effects\Pinta.Effects.csproj">
+ <Project>{71A1C3E0-7343-48FE-BD9A-508929136E92}</Project>
+ <Name>Pinta.Effects</Name>
+ </ProjectReference>
<ProjectReference Include="..\Pinta.Gui.Widgets\Pinta.Gui.Widgets.csproj">
<Project>{83F0C0AD-D587-457C-B72A-1A184D6D76B3}</Project>
<Name>Pinta.Gui.Widgets</Name>
</ProjectReference>
- <ProjectReference Include="..\System.ComponentModel.Composition\System.ComponentModel.Composition.csproj">
- <Project>{1BBA5101-D4F0-48B8-A5D6-7B23A099DCE3}</Project>
- <Name>System.ComponentModel.Composition</Name>
+ <ProjectReference Include="..\Pinta.Tools\Pinta.Tools.csproj">
+ <Project>{526152F2-2829-4AA6-B2F2-232579858A77}</Project>
+ <Name>Pinta.Tools</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
diff --git a/System.ComponentModel.Composition/AssemblyInfo.cs b/System.ComponentModel.Composition/AssemblyInfo.cs
deleted file mode 100644
index 6bb2f4a..0000000
--- a/System.ComponentModel.Composition/AssemblyInfo.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-//------------------------------------------------------------
-[assembly: System.CLSCompliant(true)]
-[assembly: System.Reflection.AssemblyTitle("System.ComponentModel.Composition")]
-[assembly: System.Reflection.AssemblyCopyright("(c) Microsoft Corporation. All rights reserved.")]
-[assembly: System.Reflection.AssemblyVersion("2010.02.11")]
-[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("System.ComponentModel.Composition.UnitTests")]
-[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("System.ComponentModel.Composition.UnitTestFramework")]
diff --git a/System.ComponentModel.Composition/ComponentModel.csproj b/System.ComponentModel.Composition/ComponentModel.csproj
deleted file mode 100644
index eaecf91..0000000
--- a/System.ComponentModel.Composition/ComponentModel.csproj
+++ /dev/null
@@ -1,237 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
- <CodeAnalysisRuleSet>Migrated rules for ComponentModel.ruleset</CodeAnalysisRuleSet>
- <CodeAnalysisRules />
- </PropertyGroup>
- <PropertyGroup>
- <OutputPath>..\..\bin</OutputPath>
- <DefineConstants>$(DefineConstants);TRACE</DefineConstants>
- <NoWarn>1570;1572;1573;1591;1699</NoWarn>
- </PropertyGroup>
- <PropertyGroup>
- <ProductVersion>10.0.20729</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{1BBA5101-D4F0-48B8-A5D6-7B23A099DCE3}</ProjectGuid>
- <ProjectClrTypes>FULLCLR;SILVERLIGHT</ProjectClrTypes>
- <OutputType>Library</OutputType>
- <RootNamespace>Microsoft.Internal</RootNamespace>
- <AssemblyName>System.ComponentModel.Composition</AssemblyName>
- <DocumentationFile>$(OutputPath)\System.ComponentModel.Composition.xml</DocumentationFile>
- <PublishUrl>publish\</PublishUrl>
- <Install>true</Install>
- <InstallFrom>Disk</InstallFrom>
- <UpdateEnabled>false</UpdateEnabled>
- <UpdateMode>Foreground</UpdateMode>
- <UpdateInterval>7</UpdateInterval>
- <UpdateIntervalUnits>Days</UpdateIntervalUnits>
- <UpdatePeriodically>false</UpdatePeriodically>
- <UpdateRequired>false</UpdateRequired>
- <MapFileExtensions>true</MapFileExtensions>
- <ApplicationRevision>0</ApplicationRevision>
- <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
- <IsWebBootstrapper>false</IsWebBootstrapper>
- <UseApplicationTrust>false</UseApplicationTrust>
- <BootstrapperEnabled>true</BootstrapperEnabled>
- </PropertyGroup>
- <PropertyGroup>
- <SignAssembly>true</SignAssembly>
- <NoStdLib>true</NoStdLib>
- </PropertyGroup>
- <PropertyGroup Condition="'$(USE_CUSTOM_KEY)' != 'true'">
- <CreateMetaAssembly>true</CreateMetaAssembly>
- <CreateRefAssembly>true</CreateRefAssembly>
- <PublishMetaAssemblyToSDK>true</PublishMetaAssemblyToSDK>
- </PropertyGroup>
- <ItemGroup>
- <Reference Include="mscorlib" />
- <Reference Include="System" />
- <Reference Include="System.Core" />
- </ItemGroup>
- <ItemGroup>
- <Compile Include="AssemblyInfo.cs" />
- <Compile Include="Microsoft\Internal\Assumes.cs" />
- <Compile Include="Microsoft\Internal\AttributeServices.cs" />
- <Compile Include="Microsoft\Internal\Collections\CollectionServices.cs" />
- <Compile Include="Microsoft\Internal\Collections\ConditionalWeakTable.cs" />
- <Compile Include="Microsoft\Internal\Collections\CollectionServices.CollectionOfObject.cs" />
- <Compile Include="Microsoft\Internal\Collections\EnumerableCardinality.cs" />
- <Compile Include="Microsoft\Internal\Collections\ReadOnlyDictionary.cs" />
- <Compile Include="Microsoft\Internal\Collections\ReadOnlyDictionaryDebuggerProxy.cs" />
- <Compile Include="Microsoft\Internal\Collections\WeakReferenceCollection.cs" />
- <Compile Include="Microsoft\Internal\ContractServices.cs" />
- <Compile Include="Microsoft\Internal\Assumes.InternalErrorException.cs" />
- <Compile Include="Microsoft\Internal\SilverlightReflectionInvoke.cs" />
- <Compile Include="Microsoft\Internal\GenerationServices.cs" />
- <Compile Include="Microsoft\Internal\LazyServices.cs" />
- <Compile Include="Microsoft\Internal\Lock.cs" />
- <Compile Include="Microsoft\Internal\Lock.Reader.cs" />
- <Compile Include="Microsoft\Internal\Lock.Writer.cs" />
- <Compile Include="Microsoft\Internal\Requires.cs" />
- <Compile Include="Microsoft\Internal\Runtime\Serialization\SerializationServices.cs" />
- <Compile Include="Microsoft\Internal\StringComparers.cs" />
- <Compile Include="Microsoft\Internal\ReflectionServices.cs" />
- <Compile Include="Strings.Designer.cs">
- <AutoGen>True</AutoGen>
- <DesignTime>True</DesignTime>
- <DependentUpon>Strings.resx</DependentUpon>
- <CustomToolNamespace>Microsoft.Internal</CustomToolNamespace>
- </Compile>
- <Compile Include="SuppressMessages.cs" />
- <Compile Include="SuppressMessagesBaselined.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModelServices.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModel\AttributedModelDiscovery.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModel\AttributedPartCreationInfo.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModel\AttributedExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\CompositionTrace.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\CompositionTraceId.cs" />
- <Compile Include="System\ComponentModel\Composition\ConstraintServices.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionContractMismatchException.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionError.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionResultOfT.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.PartCreatorExport.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionLock.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\CompositionTraceSource.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\TraceWriter.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\TraceSourceTraceWriter.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\SilverlightTraceWriter.cs" />
- <Compile Include="System\ComponentModel\Composition\InheritedExportAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportServices.DisposableLazy.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AtomicComposition.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AtomicCompositionExtensions.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionConstants.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.CatalogChangeProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\IPartCreatorImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\PartCreatorExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\PartCreatorParameterImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\PartCreatorMemberImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\IAttributedImport.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportCardinalityMismatchException.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportManyAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ErrorBuilder.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionErrorDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\ExceptionBuilder.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportCardinalityCheckResult.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportServices.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AggregateCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AggregateExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AssemblyCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AssemblyCatalogDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.CatalogExport.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ComposablePartCatalogChangeEventArgs.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ComposablePartCatalogCollection.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ComposablePartExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionBatch.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionBatch.SingleExportComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionContainer.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionServices.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ExportProvider.GetExportOverrides.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ExportsChangeEventArgs.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.RecompositionManager.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.EngineContext.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.PartManager.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\INotifyComposablePartCatalogChanged.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\TypeCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\ICompositionError.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportingConstructorAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\IPartImportsSatisfiedNotification.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataServices.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartCatalogDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartException.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\CompositionElement.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\CompositionElementDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\CompositionElementExtensions.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ContractBasedImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\Export.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ExportedDelegate.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ICompositionElement.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ImportCardinality.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\SerializableCompositionElement.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\DisposableReflectionComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\IReflectionPartCreationInfo.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\LazyMemberInfo.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionImportDefinition.cs" />
- <Compile Include="Microsoft\Internal\ReflectionInvoke.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionItemType.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataViewProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\PartCreationPolicyAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\PartMetadataAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\PartNotDiscoverableAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionExtensions.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportingParameter.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportingItem.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ExportingMember.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportingMember.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportType.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionComposablePartDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMemberExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMemberImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionModelServices.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionParameterImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionWritableMember.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataViewGenerator.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionField.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMember.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionParameter.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionProperty.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionType.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionItem.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMethod.cs" />
- <Compile Include="System\ComponentModel\Composition\ChangeRejectedException.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionException.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionErrorId.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionResult.cs" />
- <Compile Include="System\ComponentModel\Composition\ContractNameServices.cs" />
- <Compile Include="System\ComponentModel\Composition\CreationPolicy.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportMetadataAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ICompositionService.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataAttributeAttribute.cs" />
- <Compile Include="System\Lazy.cs" />
- <Compile Include="System\LazyOfTTMetadata.cs" />
- <Compile Include="System\Tuple.cs" />
- </ItemGroup>
- <ItemGroup Condition="'$(IsSilverLight)' != 'true'">
- <Compile Include="System\ComponentModel\Composition\Hosting\DirectoryCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\DirectoryCatalog.DirectoryCatalogDebuggerProxy.cs" />
- </ItemGroup>
- <ItemGroup Condition="'$(IsSilverLight)' == 'true'">
- <Compile Include="SilverlightAdditions.cs" />
- </ItemGroup>
- <ItemGroup>
- <EmbeddedResource Include="Strings.resx">
- <SubType>Designer</SubType>
- <Generator>ResXFileCodeGenerator</Generator>
- <LastGenOutput>Strings.Designer.cs</LastGenOutput>
- <CustomToolNamespace>Microsoft.Internal</CustomToolNamespace>
- </EmbeddedResource>
- </ItemGroup>
- <ItemGroup>
- <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
- <Visible>False</Visible>
- <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
- <Install>false</Install>
- </BootstrapperPackage>
- <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
- <Visible>False</Visible>
- <ProductName>.NET Framework 3.5 SP1</ProductName>
- <Install>true</Install>
- </BootstrapperPackage>
- <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
- <Visible>False</Visible>
- <ProductName>Windows Installer 3.1</ProductName>
- <Install>true</Install>
- </BootstrapperPackage>
- </ItemGroup>
- <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
-</Project>
diff --git a/System.ComponentModel.Composition/Makefile.am b/System.ComponentModel.Composition/Makefile.am
deleted file mode 100644
index ef55508..0000000
--- a/System.ComponentModel.Composition/Makefile.am
+++ /dev/null
@@ -1,165 +0,0 @@
-include $(top_srcdir)/Makefile.include
-
-ASSEMBLY = System.Composition.ComponentModel
-TARGET = library
-
-REFERENCES = \
- -r:mscorlib \
- -r:System \
- -r:System.Core
-
-SOURCES = \
- AssemblyInfo.cs \
- Microsoft/Internal/Assumes.cs \
- Microsoft/Internal/AttributeServices.cs \
- Microsoft/Internal/Collections/CollectionServices.cs \
- Microsoft/Internal/Collections/ConditionalWeakTable.cs \
- Microsoft/Internal/Collections/CollectionServices.CollectionOfObject.cs \
- Microsoft/Internal/Collections/EnumerableCardinality.cs \
- Microsoft/Internal/Collections/ReadOnlyDictionary.cs \
- Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs \
- Microsoft/Internal/Collections/WeakReferenceCollection.cs \
- Microsoft/Internal/ContractServices.cs \
- Microsoft/Internal/Assumes.InternalErrorException.cs \
- Microsoft/Internal/SilverlightReflectionInvoke.cs \
- Microsoft/Internal/GenerationServices.cs \
- Microsoft/Internal/LazyServices.cs \
- Microsoft/Internal/Lock.cs \
- Microsoft/Internal/Lock.Reader.cs \
- Microsoft/Internal/Lock.Writer.cs \
- Microsoft/Internal/Requires.cs \
- Microsoft/Internal/Runtime/Serialization/SerializationServices.cs \
- Microsoft/Internal/StringComparers.cs \
- Microsoft/Internal/ReflectionServices.cs \
- Strings.Designer.cs \
- SuppressMessages.cs \
- SuppressMessagesBaselined.cs \
- System/ComponentModel/Composition/AttributedModelServices.cs \
- System/ComponentModel/Composition/AttributedModel/AttributedModelDiscovery.cs \
- System/ComponentModel/Composition/AttributedModel/AttributedPartCreationInfo.cs \
- System/ComponentModel/Composition/AttributedModel/AttributedExportDefinition.cs \
- System/ComponentModel/Composition/Diagnostics/CompositionTrace.cs \
- System/ComponentModel/Composition/Diagnostics/CompositionTraceId.cs \
- System/ComponentModel/Composition/ConstraintServices.cs \
- System/ComponentModel/Composition/CompositionContractMismatchException.cs \
- System/ComponentModel/Composition/CompositionError.cs \
- System/ComponentModel/Composition/CompositionResultOfT.cs \
- System/ComponentModel/Composition/Hosting/CatalogExportProvider.PartCreatorExport.cs \
- System/ComponentModel/Composition/Hosting/CompositionLock.cs \
- System/ComponentModel/Composition/Diagnostics/CompositionTraceSource.cs \
- System/ComponentModel/Composition/Diagnostics/TraceWriter.cs \
- System/ComponentModel/Composition/Diagnostics/TraceSourceTraceWriter.cs \
- System/ComponentModel/Composition/Diagnostics/SilverlightTraceWriter.cs \
- System/ComponentModel/Composition/InheritedExportAttribute.cs \
- System/ComponentModel/Composition/ExportServices.DisposableLazy.cs \
- System/ComponentModel/Composition/Hosting/AtomicComposition.cs \
- System/ComponentModel/Composition/Hosting/AtomicCompositionExtensions.cs \
- System/ComponentModel/Composition/Hosting/CompositionConstants.cs \
- System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogChangeProxy.cs \
- System/ComponentModel/Composition/Primitives/IPartCreatorImportDefinition.cs \
- System/ComponentModel/Composition/ReflectionModel/PartCreatorExportDefinition.cs \
- System/ComponentModel/Composition/ReflectionModel/PartCreatorParameterImportDefinition.cs \
- System/ComponentModel/Composition/ReflectionModel/PartCreatorMemberImportDefinition.cs \
- System/ComponentModel/Composition/IAttributedImport.cs \
- System/ComponentModel/Composition/ImportCardinalityMismatchException.cs \
- System/ComponentModel/Composition/ImportManyAttribute.cs \
- System/ComponentModel/Composition/ErrorBuilder.cs \
- System/ComponentModel/Composition/CompositionErrorDebuggerProxy.cs \
- System/ComponentModel/Composition/ExceptionBuilder.cs \
- System/ComponentModel/Composition/ExportCardinalityCheckResult.cs \
- System/ComponentModel/Composition/ExportServices.cs \
- System/ComponentModel/Composition/Hosting/AggregateCatalog.cs \
- System/ComponentModel/Composition/Hosting/AggregateExportProvider.cs \
- System/ComponentModel/Composition/Hosting/AssemblyCatalog.cs \
- System/ComponentModel/Composition/Hosting/AssemblyCatalogDebuggerProxy.cs \
- System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogExport.cs \
- System/ComponentModel/Composition/Hosting/CatalogExportProvider.cs \
- System/ComponentModel/Composition/Hosting/ComposablePartCatalogChangeEventArgs.cs \
- System/ComponentModel/Composition/Hosting/ComposablePartCatalogCollection.cs \
- System/ComponentModel/Composition/Hosting/ComposablePartExportProvider.cs \
- System/ComponentModel/Composition/Hosting/CompositionBatch.cs \
- System/ComponentModel/Composition/Hosting/CompositionBatch.SingleExportComposablePart.cs \
- System/ComponentModel/Composition/Hosting/CompositionContainer.cs \
- System/ComponentModel/Composition/Hosting/CompositionServices.cs \
- System/ComponentModel/Composition/Hosting/ExportProvider.cs \
- System/ComponentModel/Composition/Hosting/ExportProvider.GetExportOverrides.cs \
- System/ComponentModel/Composition/Hosting/ExportsChangeEventArgs.cs \
- System/ComponentModel/Composition/Hosting/ImportEngine.RecompositionManager.cs \
- System/ComponentModel/Composition/Hosting/ImportEngine.EngineContext.cs \
- System/ComponentModel/Composition/Hosting/ImportEngine.PartManager.cs \
- System/ComponentModel/Composition/Hosting/ImportEngine.cs \
- System/ComponentModel/Composition/Hosting/INotifyComposablePartCatalogChanged.cs \
- System/ComponentModel/Composition/Hosting/TypeCatalog.cs \
- System/ComponentModel/Composition/ICompositionError.cs \
- System/ComponentModel/Composition/ImportingConstructorAttribute.cs \
- System/ComponentModel/Composition/IPartImportsSatisfiedNotification.cs \
- System/ComponentModel/Composition/MetadataServices.cs \
- System/ComponentModel/Composition/Primitives/ComposablePart.cs \
- System/ComponentModel/Composition/Primitives/ComposablePartCatalog.cs \
- System/ComponentModel/Composition/Primitives/ComposablePartCatalogDebuggerProxy.cs \
- System/ComponentModel/Composition/Primitives/ComposablePartDefinition.cs \
- System/ComponentModel/Composition/Primitives/ComposablePartException.cs \
- System/ComponentModel/Composition/Primitives/CompositionElement.cs \
- System/ComponentModel/Composition/Primitives/CompositionElementDebuggerProxy.cs \
- System/ComponentModel/Composition/Primitives/CompositionElementExtensions.cs \
- System/ComponentModel/Composition/Primitives/ContractBasedImportDefinition.cs \
- System/ComponentModel/Composition/Primitives/Export.cs \
- System/ComponentModel/Composition/Primitives/ExportDefinition.cs \
- System/ComponentModel/Composition/Primitives/ExportedDelegate.cs \
- System/ComponentModel/Composition/Primitives/ICompositionElement.cs \
- System/ComponentModel/Composition/Primitives/ImportCardinality.cs \
- System/ComponentModel/Composition/Primitives/ImportDefinition.cs \
- System/ComponentModel/Composition/Primitives/SerializableCompositionElement.cs \
- System/ComponentModel/Composition/ReflectionModel/DisposableReflectionComposablePart.cs \
- System/ComponentModel/Composition/ReflectionModel/IReflectionPartCreationInfo.cs \
- System/ComponentModel/Composition/ReflectionModel/LazyMemberInfo.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionImportDefinition.cs \
- Microsoft/Internal/ReflectionInvoke.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionItemType.cs \
- System/ComponentModel/Composition/MetadataViewProvider.cs \
- System/ComponentModel/Composition/PartCreationPolicyAttribute.cs \
- System/ComponentModel/Composition/PartMetadataAttribute.cs \
- System/ComponentModel/Composition/PartNotDiscoverableAttribute.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionExtensions.cs \
- System/ComponentModel/Composition/ReflectionModel/ImportingParameter.cs \
- System/ComponentModel/Composition/ReflectionModel/ImportingItem.cs \
- System/ComponentModel/Composition/ReflectionModel/ExportingMember.cs \
- System/ComponentModel/Composition/ReflectionModel/ImportingMember.cs \
- System/ComponentModel/Composition/ReflectionModel/ImportType.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePart.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePartDefinition.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionMemberExportDefinition.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionMemberImportDefinition.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionModelServices.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionParameterImportDefinition.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionWritableMember.cs \
- System/ComponentModel/Composition/MetadataViewGenerator.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionField.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionMember.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionParameter.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionProperty.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionType.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionItem.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionMethod.cs \
- System/ComponentModel/Composition/ChangeRejectedException.cs \
- System/ComponentModel/Composition/CompositionException.cs \
- System/ComponentModel/Composition/CompositionErrorId.cs \
- System/ComponentModel/Composition/CompositionResult.cs \
- System/ComponentModel/Composition/ContractNameServices.cs \
- System/ComponentModel/Composition/CreationPolicy.cs \
- System/ComponentModel/Composition/ExportAttribute.cs \
- System/ComponentModel/Composition/ExportMetadataAttribute.cs \
- System/ComponentModel/Composition/ICompositionService.cs \
- System/ComponentModel/Composition/ImportAttribute.cs \
- System/ComponentModel/Composition/MetadataAttributeAttribute.cs \
- System/Lazy.cs \
- System/LazyOfTTMetadata.cs \
- System/Tuple.cs \
- System/ComponentModel/Composition/Hosting/DirectoryCatalog.cs \
- System/ComponentModel/Composition/Hosting/DirectoryCatalog.DirectoryCatalogDebuggerProxy.cs
-
-RESOURCES = \
- Strings.resx
-
-# ,System.ComponentModel.Composition.Strings.resources
-
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Assumes.InternalErrorException.cs b/System.ComponentModel.Composition/Microsoft/Internal/Assumes.InternalErrorException.cs
deleted file mode 100644
index 3059b63..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Assumes.InternalErrorException.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace Microsoft.Internal
-{
- partial class Assumes
- {
- // The exception that is thrown when an internal assumption failed.
- [Serializable]
- [SuppressMessage("Microsoft.Design", "CA1064:ExceptionsShouldBePublic")]
- private class InternalErrorException : Exception
- {
- public InternalErrorException(string message)
- : base(string.Format(CultureInfo.CurrentCulture, Strings.InternalExceptionMessage, message))
- {
- }
-
-#if !SILVERLIGHT
- [System.Security.SecuritySafeCritical]
- protected InternalErrorException(SerializationInfo info, StreamingContext context)
- : base(info, context)
- {
- }
-#endif
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Assumes.cs b/System.ComponentModel.Composition/Microsoft/Internal/Assumes.cs
deleted file mode 100644
index 2aa03cd..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Assumes.cs
+++ /dev/null
@@ -1,102 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace Microsoft.Internal
-{
- internal static partial class Assumes
- {
- [DebuggerStepThrough]
- internal static void NotNull<T>(T value)
- where T : class
- {
- IsTrue(value != null);
- }
-
- [DebuggerStepThrough]
- internal static void NotNull<T1, T2>(T1 value1, T2 value2)
- where T1 : class
- where T2 : class
- {
- NotNull(value1);
- NotNull(value2);
- }
-
- [DebuggerStepThrough]
- internal static void NotNull<T1, T2, T3>(T1 value1, T2 value2, T3 value3)
- where T1 : class
- where T2 : class
- where T3 : class
- {
- NotNull(value1);
- NotNull(value2);
- NotNull(value3);
- }
-
- [DebuggerStepThrough]
- internal static void NotNullOrEmpty<T>(T[] values)
- {
- Assumes.NotNull(values);
- Assumes.IsTrue(values.Length > 0);
- }
-
- [DebuggerStepThrough]
- internal static void NotNullOrEmpty(string value)
- {
- NotNull(value);
- IsTrue(value.Length > 0);
- }
-
- [DebuggerStepThrough]
- internal static void Null<T>(T value)
- where T : class
- {
- IsTrue(value == null);
- }
-
- [DebuggerStepThrough]
- internal static void IsFalse(bool condition)
- {
- if (condition)
- {
- Fail(null);
- }
- }
-
- [DebuggerStepThrough]
- internal static void IsTrue(bool condition)
- {
- if (!condition)
- {
- Fail(null);
- }
- }
-
- [DebuggerStepThrough]
- internal static void IsTrue(bool condition, [Localizable(false)]string message)
- {
- if (!condition)
- {
- Fail(message);
- }
- }
-
- [DebuggerStepThrough]
- internal static void Fail([Localizable(false)]string message)
- {
- throw new InternalErrorException(message);
- }
-
- [DebuggerStepThrough]
- internal static T NotReachable<T>()
- {
- throw new InternalErrorException("Code path should never be reached!");
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/AttributeServices.cs b/System.ComponentModel.Composition/Microsoft/Internal/AttributeServices.cs
deleted file mode 100644
index 6b9f08b..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/AttributeServices.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-
-namespace Microsoft.Internal
-{
- internal static class AttributeServices
- {
- public static T[] GetAttributes<T>(this ICustomAttributeProvider attributeProvider) where T : class
- {
- return (T[])attributeProvider.GetCustomAttributes(typeof(T), false);
- }
-
- public static T[] GetAttributes<T>(this ICustomAttributeProvider attributeProvider, bool inherit) where T : class
- {
- return (T[])attributeProvider.GetCustomAttributes(typeof(T), inherit);
- }
-
- public static T GetFirstAttribute<T>(this ICustomAttributeProvider attributeProvider) where T : class
- {
- return GetAttributes<T>(attributeProvider).FirstOrDefault();
- }
-
- public static T GetFirstAttribute<T>(this ICustomAttributeProvider attributeProvider, bool inherit) where T : class
- {
- return GetAttributes<T>(attributeProvider, inherit).FirstOrDefault();
- }
-
- public static bool IsAttributeDefined<T>(this ICustomAttributeProvider attributeProvider) where T : class
- {
- return attributeProvider.IsDefined(typeof(T), false);
- }
-
- public static bool IsAttributeDefined<T>(this ICustomAttributeProvider attributeProvider, bool inherit) where T : class
- {
- return attributeProvider.IsDefined(typeof(T), inherit);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Collections/CollectionServices.CollectionOfObject.cs b/System.ComponentModel.Composition/Microsoft/Internal/Collections/CollectionServices.CollectionOfObject.cs
deleted file mode 100644
index e0617a5..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Collections/CollectionServices.CollectionOfObject.cs
+++ /dev/null
@@ -1,145 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Reflection;
-
-namespace Microsoft.Internal.Collections
-{
- internal static partial class CollectionServices
- {
- public static ICollection<object> GetCollectionWrapper(Type itemType, object collectionObject)
- {
- Assumes.NotNull(itemType, collectionObject);
-
- if (itemType == typeof(object))
- {
- return (ICollection<object>)collectionObject;
- }
-
- // Most common .Net collections implement IList as well so for those
- // cases we can optimize the wrapping instead of using reflection to create
- // a generic type.
- if (typeof(IList).IsAssignableFrom(collectionObject.GetType()))
- {
- return new CollectionOfObjectList((IList)collectionObject);
- }
-
- Type collectionType = typeof(CollectionOfObject<>).MakeGenericType(itemType);
-
- return (ICollection<object>)Activator.CreateInstance(collectionType, collectionObject);
- }
-
- private class CollectionOfObjectList : ICollection<object>
- {
- private readonly IList _list;
-
- public CollectionOfObjectList(IList list)
- {
- this._list = list;
- }
-
- public void Add(object item)
- {
- this._list.Add(item);
- }
-
- public void Clear()
- {
- this._list.Clear();
- }
-
- public bool Contains(object item)
- {
- return Assumes.NotReachable<bool>();
- }
-
- public void CopyTo(object[] array, int arrayIndex)
- {
- Assumes.NotReachable<object>();
- }
-
- public int Count
- {
- get { return Assumes.NotReachable<int>(); }
- }
-
- public bool IsReadOnly
- {
- get { return this._list.IsReadOnly; }
- }
-
- public bool Remove(object item)
- {
- return Assumes.NotReachable<bool>();
- }
-
- public IEnumerator<object> GetEnumerator()
- {
- return Assumes.NotReachable<IEnumerator<object>>();
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return Assumes.NotReachable<IEnumerator>();
- }
- }
-
- private class CollectionOfObject<T> : ICollection<object>
- {
- private readonly ICollection<T> _collectionOfT;
-
- public CollectionOfObject(object collectionOfT)
- {
- this._collectionOfT = (ICollection<T>)collectionOfT;
- }
-
- public void Add(object item)
- {
- this._collectionOfT.Add((T) item);
- }
-
- public void Clear()
- {
- this._collectionOfT.Clear();
- }
-
- public bool Contains(object item)
- {
- return Assumes.NotReachable<bool>();
- }
-
- public void CopyTo(object[] array, int arrayIndex)
- {
- Assumes.NotReachable<object>();
- }
-
- public int Count
- {
- get { return Assumes.NotReachable<int>(); }
- }
-
- public bool IsReadOnly
- {
- get { return this._collectionOfT.IsReadOnly; }
- }
-
- public bool Remove(object item)
- {
- return Assumes.NotReachable<bool>();
- }
-
- public IEnumerator<object> GetEnumerator()
- {
- return Assumes.NotReachable<IEnumerator<object>>();
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return Assumes.NotReachable<IEnumerator>();
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Collections/CollectionServices.cs b/System.ComponentModel.Composition/Microsoft/Internal/Collections/CollectionServices.cs
deleted file mode 100644
index 714c333..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Collections/CollectionServices.cs
+++ /dev/null
@@ -1,181 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-
-namespace Microsoft.Internal.Collections
-{
- internal static partial class CollectionServices
- {
- private static readonly Type StringType = typeof(string);
- private static readonly Type IEnumerableType = typeof(IEnumerable);
- private static readonly Type IEnumerableOfTType = typeof(IEnumerable<>);
- private static readonly Type ICollectionOfTType = typeof(ICollection<>);
-
- public static bool IsEnumerableOfT(Type type)
- {
- if (type.IsGenericType)
- {
- Type genericType = type.GetGenericTypeDefinition();
-
- if (genericType == IEnumerableOfTType)
- {
- return true;
- }
- }
- return false;
- }
-
- public static Type GetEnumerableElementType(Type type)
- {
- if (type == StringType || !IEnumerableType.IsAssignableFrom(type))
- {
- return null;
- }
-
- Type closedType;
- if (ReflectionServices.TryGetGenericInterfaceType(type, IEnumerableOfTType, out closedType))
- {
- return closedType.GetGenericArguments()[0];
- }
-
- return null;
- }
-
- public static Type GetCollectionElementType(Type type)
- {
- Type closedType;
- if (ReflectionServices.TryGetGenericInterfaceType(type, ICollectionOfTType, out closedType))
- {
- return closedType.GetGenericArguments()[0];
- }
-
- return null;
- }
-
- public static ReadOnlyCollection<T> ToReadOnlyCollection<T>(this IEnumerable<T> source)
- {
- Assumes.NotNull(source);
-
- return new ReadOnlyCollection<T>(source.AsArray());
- }
-
- public static IEnumerable<T> WhereNotNull<T>(this IEnumerable<T> source) where T : class
- {
- Assumes.NotNull(source);
- return source.Where(NotNull); // Use non-generic NotNull for performance reasons
- }
-
- private static bool NotNull(object element)
- {
- return element != null;
- }
-
- public static IEnumerable<T> ConcatAllowingNull<T>(this IEnumerable<T> source, IEnumerable<T> second)
- {
- if (second == null || !second.FastAny())
- {
- return source;
- }
-
- if (source == null || !source.FastAny())
- {
- return second;
- }
-
- return source.Concat(second);
- }
-
- public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
- {
- foreach(T t in source)
- {
- action.Invoke(t);
- }
- }
-
- public static EnumerableCardinality GetCardinality<T>(this IEnumerable<T> source)
- {
- Assumes.NotNull(source);
-
- // Cast to ICollection instead of ICollection<T> for performance reasons.
- ICollection collection = source as ICollection;
- if (collection != null)
- {
- switch (collection.Count)
- {
- case 0:
- return EnumerableCardinality.Zero;
-
- case 1:
- return EnumerableCardinality.One;
-
- default:
- return EnumerableCardinality.TwoOrMore;
- }
- }
-
- using (var enumerator = source.GetEnumerator())
- {
- if (!enumerator.MoveNext())
- {
- return EnumerableCardinality.Zero;
- }
-
- if (!enumerator.MoveNext())
- {
- return EnumerableCardinality.One;
- }
-
- return EnumerableCardinality.TwoOrMore;
- }
- }
-
- public static bool FastAny<T>(this IEnumerable<T> source)
- {
- // Enumerable.Any<T> underneath doesn't cast to ICollection,
- // like it does with many of the other LINQ methods.
- // Below is significantly (4x) when mainly working with ICollection
- // sources and a little slower if working with mainly IEnumerable<T>
- // sources.
-
- // Cast to ICollection instead of ICollection<T> for performance reasons.
- ICollection collection = source as ICollection;
- if (collection != null)
- {
- return collection.Count > 0;
- }
-
- return source.Any();
- }
-
- public static Stack<T> Copy<T>(this Stack<T> stack)
- {
- Assumes.NotNull(stack);
-
- // Stack<T>.GetEnumerator walks from top to bottom
- // of the stack, whereas Stack<T>(IEnumerable<T>)
- // pushes to bottom from top, so we need to reverse
- // the stack to get them in the right order.
- return new Stack<T>(stack.Reverse());
- }
-
- public static T[] AsArray<T>(this IEnumerable<T> enumerable)
- {
- T[] array = enumerable as T[];
-
- if (array != null)
- {
- return array;
- }
-
- return enumerable.ToArray();
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Collections/ConditionalWeakTable.cs b/System.ComponentModel.Composition/Microsoft/Internal/Collections/ConditionalWeakTable.cs
deleted file mode 100644
index f383014..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Collections/ConditionalWeakTable.cs
+++ /dev/null
@@ -1,116 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if !CLR40
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace Microsoft.Internal.Collections
-{
- // This is a broken implementation of ConditionalWeakTable that allows us
- // to compile and work on versions of .Net eariler then 4.0. This class is
- // broken when there are circular dependencies between keys and values, which
- // can only be fixed by using some specific CLR 4.0 features.
- // For code samples of the broken behavior see ConditionalWeakTableTests.cs.
- internal class ConditionalWeakTable<TKey, TValue>
- where TKey : class
- where TValue : class
- {
- private readonly Dictionary<object, TValue> _table;
- private int _capacity = 4;
-
- public ConditionalWeakTable()
- {
- this._table = new Dictionary<object, TValue>();
- }
-
- public void Add(TKey key, TValue value)
- {
- CleanupDeadReferences();
- this._table.Add(CreateWeakKey(key), value);
- }
-
- public bool Remove(TKey key)
- {
- return this._table.Remove(key);
- }
-
- public bool TryGetValue(TKey key, out TValue value)
- {
- return this._table.TryGetValue(key, out value);
- }
-
- private void CleanupDeadReferences()
- {
- if (this._table.Count < _capacity)
- {
- return;
- }
-
- object[] deadKeys = this._table.Keys
- .Where(weakRef => !((EquivalentWeakReference)weakRef).IsAlive).ToArray();
-
- foreach (var deadKey in deadKeys)
- {
- this._table.Remove(deadKey);
- }
-
- if (this._table.Count >= _capacity)
- {
- _capacity *= 2;
- }
- }
-
- private static object CreateWeakKey(TKey key)
- {
- return new EquivalentWeakReference(key);
- }
-
- private class EquivalentWeakReference
- {
- private readonly WeakReference _weakReference;
- private readonly int _hashCode;
-
- public EquivalentWeakReference(object obj)
- {
- this._hashCode = obj.GetHashCode();
- this._weakReference = new WeakReference(obj);
- }
-
- public bool IsAlive
- {
- get
- {
- return this._weakReference.IsAlive;
- }
- }
-
- public override bool Equals(object obj)
- {
- EquivalentWeakReference weakRef = obj as EquivalentWeakReference;
-
- if (weakRef != null)
- {
- obj = weakRef._weakReference.Target;
- }
-
- if (obj == null)
- {
- return base.Equals(weakRef);
- }
-
- return object.Equals(this._weakReference.Target, obj);
- }
-
- public override int GetHashCode()
- {
- return this._hashCode;
- }
- }
- }
-}
-#endif
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Collections/EnumerableCardinality.cs b/System.ComponentModel.Composition/Microsoft/Internal/Collections/EnumerableCardinality.cs
deleted file mode 100644
index b3be71c..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Collections/EnumerableCardinality.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace Microsoft.Internal.Collections
-{
- internal enum EnumerableCardinality : int
- {
- Zero = 0,
- One = 1,
- TwoOrMore = 2,
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Collections/ReadOnlyDictionary.cs b/System.ComponentModel.Composition/Microsoft/Internal/Collections/ReadOnlyDictionary.cs
deleted file mode 100644
index 8682565..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Collections/ReadOnlyDictionary.cs
+++ /dev/null
@@ -1,103 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Diagnostics;
-
-namespace Microsoft.Internal.Collections
-{
- [DebuggerDisplay("Count = {Count}")]
- [DebuggerTypeProxy(typeof(ReadOnlyDictionaryDebuggerProxy<,>))]
- internal sealed partial class ReadOnlyDictionary<TKey, TValue> : IDictionary<TKey, TValue>
- {
- private readonly IDictionary<TKey, TValue> _innerDictionary;
-
- public ReadOnlyDictionary(IDictionary<TKey, TValue> dictionary)
- {
- this._innerDictionary = dictionary ?? new Dictionary<TKey, TValue>(0);
- }
-
- public int Count
- {
- get { return this._innerDictionary.Count; }
- }
-
- public bool IsReadOnly
- {
- get { return true; }
- }
-
- public ICollection<TKey> Keys
- {
- get { return this._innerDictionary.Keys; }
- }
-
- public TValue this[TKey key]
- {
- get { return this._innerDictionary[key]; }
- set { throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary); }
- }
-
- public ICollection<TValue> Values
- {
- get { return this._innerDictionary.Values; }
- }
-
- public bool Contains(KeyValuePair<TKey, TValue> item)
- {
- return this._innerDictionary.Contains(item);
- }
-
- public bool ContainsKey(TKey key)
- {
- return this._innerDictionary.ContainsKey(key);
- }
-
- public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)
- {
- this._innerDictionary.CopyTo(array, arrayIndex);
- }
-
- public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
- {
- return this._innerDictionary.GetEnumerator();
- }
-
- public bool TryGetValue(TKey key, out TValue value)
- {
- return this._innerDictionary.TryGetValue(key, out value);
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return this._innerDictionary.GetEnumerator();
- }
-
- void IDictionary<TKey, TValue>.Add(TKey key, TValue value)
- {
- throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary);
- }
-
- void ICollection<KeyValuePair<TKey, TValue>>.Add(KeyValuePair<TKey, TValue> item)
- {
- throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary);
- }
-
- void ICollection<KeyValuePair<TKey, TValue>>.Clear()
- {
- throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary);
- }
-
- bool IDictionary<TKey, TValue>.Remove(TKey key)
- {
- throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary);
- }
-
- bool ICollection<KeyValuePair<TKey, TValue>>.Remove(KeyValuePair<TKey, TValue> item)
- {
- throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs b/System.ComponentModel.Composition/Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs
deleted file mode 100644
index 60eefa1..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-
-namespace Microsoft.Internal.Collections
-{
- // NOTE: This type cannot be a nested proxy of ReadOnlyDictionary due to a bug
- // in the Visual Studio Debugger which causes it to ignore nested generic proxies.
- internal class ReadOnlyDictionaryDebuggerProxy<TKey, TValue>
- {
- private readonly ReadOnlyDictionary<TKey, TValue> _dictionary;
-
- public ReadOnlyDictionaryDebuggerProxy(ReadOnlyDictionary<TKey, TValue> dictionary)
- {
- Requires.NotNull(dictionary, "dictionary");
-
- _dictionary = dictionary;
- }
-
- [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
- public KeyValuePair<TKey, TValue>[] Items
- {
- // NOTE: This shouldn't be cached, so that on every query of
- // the current value of the underlying dictionary is respected.
- get { return this._dictionary.ToArray(); }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Collections/WeakReferenceCollection.cs b/System.ComponentModel.Composition/Microsoft/Internal/Collections/WeakReferenceCollection.cs
deleted file mode 100644
index 6895a63..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Collections/WeakReferenceCollection.cs
+++ /dev/null
@@ -1,92 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace Microsoft.Internal.Collections
-{
- internal class WeakReferenceCollection<T> where T : class
- {
- private readonly List<WeakReference> _items = new List<WeakReference>();
-
- public void Add(T item)
- {
- // Only cleanup right before we need to reallocate space.
- if (this._items.Capacity == this._items.Count)
- {
- this.CleanupDeadReferences();
- }
-
- this._items.Add(new WeakReference(item));
- }
-
- public void Remove(T item)
- {
- int index = IndexOf(item);
-
- if (index != -1)
- {
- this._items.RemoveAt(index);
- }
- }
-
- public bool Contains(T item)
- {
- return IndexOf(item) >= 0;
- }
-
- public void Clear()
- {
- this._items.Clear();
- }
-
- // Should be executed under at least a read lock.
- private int IndexOf(T item)
- {
- int count = this._items.Count;
- for (int i = 0; i < count; i++)
- {
- if (this._items[i].Target == item)
- {
- return i;
- }
- }
- return -1;
- }
-
- // Should be executed under a write lock
- private void CleanupDeadReferences()
- {
- int count = this._items.Count;
- for (int i = count - 1; i >= 0; i--)
- {
- if (this._items[i].Target == null)
- {
- this._items.RemoveAt(i);
- }
- }
- }
-
- public List<T> AliveItemsToList()
- {
- List<T> aliveItems = new List<T>();
-
- foreach (var weakItem in this._items)
- {
- T item = weakItem.Target as T;
-
- if (item != null)
- {
- aliveItems.Add(item);
- }
- }
-
- return aliveItems;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/ContractServices.cs b/System.ComponentModel.Composition/Microsoft/Internal/ContractServices.cs
deleted file mode 100644
index 7a731b4..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/ContractServices.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.ComponentModel.Composition.Primitives;
-
-namespace Microsoft.Internal
-{
- internal class ContractServices
- {
- public static T Cast<T>(object o)
- {
- return (T)o;
- }
-
- public static bool TryCast(Type contractType, object value, out object result)
- {
- if (value == null)
- {
- result = null;
- return true;
- }
- if (contractType.IsInstanceOfType(value))
- {
- result = value;
- return true;
- }
-
- // We couldn't cast see if a delegate works for us.
- if (typeof(Delegate).IsAssignableFrom(contractType))
- {
- ExportedDelegate exportedDelegate = value as ExportedDelegate;
- if (exportedDelegate != null)
- {
- result = exportedDelegate.CreateDelegate(contractType);
- return (result != null);
- }
- }
-
- result = null;
- return false;
- }
- }
-}
-
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/GenerationServices.cs b/System.ComponentModel.Composition/Microsoft/Internal/GenerationServices.cs
deleted file mode 100644
index 455b7ce..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/GenerationServices.cs
+++ /dev/null
@@ -1,333 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel.Composition;
-using System.Globalization;
-using System.Linq;
-using System.Text;
-using System.Reflection;
-using System.Reflection.Emit;
-
-namespace Microsoft.Internal
-{
- internal static class GenerationServices
- {
- // Type.GetTypeFromHandle
- private static readonly MethodInfo _typeGetTypeFromHandleMethod = typeof(Type).GetMethod("GetTypeFromHandle");
-
-
- // typeofs are pretty expensive, so we cache them statically
- private static readonly Type TypeType = typeof(System.Type);
- private static readonly Type StringType = typeof(System.String);
- private static readonly Type CharType = typeof(System.Char);
- private static readonly Type BooleanType = typeof(System.Boolean);
- private static readonly Type ByteType = typeof(System.Byte);
- private static readonly Type SByteType = typeof(System.SByte);
- private static readonly Type Int16Type = typeof(System.Int16);
- private static readonly Type UInt16Type = typeof(System.UInt16);
- private static readonly Type Int32Type = typeof(System.Int32);
- private static readonly Type UInt32Type = typeof(System.UInt32);
- private static readonly Type Int64Type = typeof(System.Int64);
- private static readonly Type UInt64Type = typeof(System.UInt64);
- private static readonly Type DoubleType = typeof(System.Double);
- private static readonly Type SingleType = typeof(System.Single);
- private static readonly Type IEnumerableTypeofT = typeof(System.Collections.Generic.IEnumerable<>);
- private static readonly Type IEnumerableType = typeof(System.Collections.IEnumerable);
-
- private static readonly MethodInfo ExceptionGetData = typeof(Exception).GetProperty("Data").GetGetMethod();
- private static readonly MethodInfo DictionaryAdd = typeof(IDictionary).GetMethod("Add");
- private static readonly ConstructorInfo ObjectCtor = typeof(object).GetConstructor(Type.EmptyTypes);
-
- public static ILGenerator CreateGeneratorForPublicConstructor(this TypeBuilder typeBuilder, Type[] ctrArgumentTypes)
- {
- ConstructorBuilder ctorBuilder = typeBuilder.DefineConstructor(
- MethodAttributes.Public,
- CallingConventions.Standard,
- ctrArgumentTypes);
-
- ILGenerator ctorIL = ctorBuilder.GetILGenerator();
- ctorIL.Emit(OpCodes.Ldarg_0);
- ctorIL.Emit(OpCodes.Call, ObjectCtor);
-
- return ctorIL;
- }
-
- /// Generates the code that loads the supplied value on the stack
- /// This is not as simple as it seems, as different instructions need to be generated depending
- /// on its type.
- /// We support:
- /// 1. All primitive types
- /// 2. Strings
- /// 3. Enums
- /// 4. typeofs
- /// 5. nulls
- /// 6. Enumerables
- /// 7. Delegates on static functions or any of the above
- /// Everything else cannot be represented as literals
- /// <param name="ilGenerator"></param>
- /// <param name="item"></param>
- /// <param name="key"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- public static void LoadValue(this ILGenerator ilGenerator, object value)
- {
- Assumes.NotNull(ilGenerator);
-
- //
- // Get nulls out of the way - they are basically typeless, so we just load null
- //
- if (value == null)
- {
- ilGenerator.LoadNull();
- return;
- }
-
- //
- // Prepare for literal loading - decide whether we should box, and handle enums properly
- //
- Type valueType = value.GetType();
- object rawValue = value;
- if (valueType.IsEnum)
- {
- // enums are special - we need to load the underlying constant on the stack
- rawValue = Convert.ChangeType(value, Enum.GetUnderlyingType(valueType), null);
- valueType = rawValue.GetType();
- }
-
- //
- // Generate IL depending on the valueType - this is messier than it should ever be, but sadly necessary
- //
- if (valueType == GenerationServices.StringType)
- {
- // we need to check for strings before enumerables, because strings are IEnumerable<char>
- ilGenerator.LoadString((string)rawValue);
- }
- else if (GenerationServices.TypeType.IsAssignableFrom(valueType))
- {
- ilGenerator.LoadTypeOf((Type)rawValue);
- }
- else if (GenerationServices.IEnumerableType.IsAssignableFrom(valueType))
- {
- // NOTE : strings and dictionaries are also enumerables, but we have already handled those
- ilGenerator.LoadEnumerable((IEnumerable) rawValue);
- }
- else if (
- (valueType == GenerationServices.CharType) ||
- (valueType == GenerationServices.BooleanType) ||
- (valueType == GenerationServices.ByteType) ||
- (valueType == GenerationServices.SByteType) ||
- (valueType == GenerationServices.Int16Type) ||
- (valueType == GenerationServices.UInt16Type) ||
- (valueType == GenerationServices.Int32Type)
- )
- {
- // NOTE : Everything that is 32 bit or less uses ldc.i4. We need to pass int32, even if the actual types is shorter - this is IL memory model
- // direct casting to (int) won't work, because the value is boxed, thus we need to use Convert.
- // Sadly, this will not work for all cases - namely large uint32 - because they can't semantically fit into 32 signed bits
- // We have a special case for that next
- ilGenerator.LoadInt((int)Convert.ChangeType(rawValue, typeof(int), CultureInfo.InvariantCulture));
- }
- else if (valueType == GenerationServices.UInt32Type)
- {
- // NOTE : This one is a bit tricky. Ldc.I4 takes an Int32 as an argument, although it really treats it as a 32bit number
- // That said, some UInt32 values are larger that Int32.MaxValue, so the Convert call above will fail, which is why
- // we need to treat this case individually and cast to uint, and then - unchecked - to int.
- ilGenerator.LoadInt(unchecked((int)((uint)rawValue)));
- }
- else if (valueType == GenerationServices.Int64Type)
- {
- ilGenerator.LoadLong((long)rawValue);
- }
- else if (valueType == GenerationServices.UInt64Type)
- {
- // NOTE : This one is a bit tricky. Ldc.I8 takes an Int64 as an argument, although it really treats it as a 64bit number
- // That said, some UInt64 values are larger that Int64.MaxValue, so the direct case we use above (or Convert, for that matter)will fail, which is why
- // we need to treat this case individually and cast to ulong, and then - unchecked - to long.
- ilGenerator.LoadLong(unchecked((long)((ulong)rawValue)));
- }
- else if (valueType == GenerationServices.SingleType)
- {
- ilGenerator.LoadFloat((float)rawValue);
- }
- else if (valueType == GenerationServices.DoubleType)
- {
- ilGenerator.LoadDouble((double)rawValue);
- }
- else
- {
- throw new InvalidOperationException(
- string.Format(CultureInfo.CurrentCulture, Strings.InvalidMetadataValue, value.GetType().FullName));
- }
- }
-
- /// Generates the code that adds an object to a dictionary stored in a local variable
- /// <param name="ilGenerator"></param>
- /// <param name="dictionary"></param>
- /// <param name="key"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- public static void AddItemToLocalDictionary(this ILGenerator ilGenerator, LocalBuilder dictionary, object key, object value)
- {
- Assumes.NotNull(ilGenerator);
- Assumes.NotNull(dictionary);
- Assumes.NotNull(key);
- Assumes.NotNull(value);
-
- ilGenerator.Emit(OpCodes.Ldloc, dictionary);
- ilGenerator.LoadValue(key);
- ilGenerator.LoadValue(value);
- ilGenerator.Emit(OpCodes.Callvirt, DictionaryAdd);
- }
-
- /// Generates the code that adds an object from a local variable to a dictionary also stored in a local
- /// <param name="ilGenerator"></param>
- /// <param name="dictionary"></param>
- /// <param name="key"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- public static void AddLocalToLocalDictionary(this ILGenerator ilGenerator, LocalBuilder dictionary, object key, LocalBuilder value)
- {
- Assumes.NotNull(ilGenerator);
- Assumes.NotNull(dictionary);
- Assumes.NotNull(key);
- Assumes.NotNull(value);
-
- ilGenerator.Emit(OpCodes.Ldloc, dictionary);
- ilGenerator.LoadValue(key);
- ilGenerator.Emit(OpCodes.Ldloc, value);
- ilGenerator.Emit(OpCodes.Callvirt, DictionaryAdd);
- }
-
- /// Generates the code to get the type of an object and store it in a local
- /// <param name="ilGenerator"></param>
- /// <param name="dictionary"></param>
- /// <param name="key"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- public static void GetExceptionDataAndStoreInLocal(this ILGenerator ilGenerator, LocalBuilder exception, LocalBuilder dataStore)
- {
- Assumes.NotNull(ilGenerator);
- Assumes.NotNull(exception);
- Assumes.NotNull(dataStore);
-
- ilGenerator.Emit(OpCodes.Ldloc, exception);
- ilGenerator.Emit(OpCodes.Callvirt, ExceptionGetData);
- ilGenerator.Emit(OpCodes.Stloc, dataStore);
- }
-
- private static void LoadEnumerable(this ILGenerator ilGenerator, IEnumerable enumerable)
- {
- Assumes.NotNull(ilGenerator);
- Assumes.NotNull(enumerable);
-
- // We load enumerable as an array - this is the most compact and efficient way of representing it
- Type elementType = null;
- Type closedType = null;
- if (ReflectionServices.TryGetGenericInterfaceType(enumerable.GetType(), GenerationServices.IEnumerableTypeofT, out closedType))
- {
- elementType = closedType.GetGenericArguments()[0];
- }
- else
- {
- elementType = typeof(object);
- }
-
- //
- // elem[] array = new elem[<enumerable.Count()>]
- //
- Type generatedArrayType = elementType.MakeArrayType();
- LocalBuilder generatedArrayLocal = ilGenerator.DeclareLocal(generatedArrayType);
-
- ilGenerator.LoadInt(enumerable.Cast<object>().Count());
- ilGenerator.Emit(OpCodes.Newarr, elementType);
- ilGenerator.Emit(OpCodes.Stloc, generatedArrayLocal);
-
- int index = 0;
- foreach (object value in enumerable)
- {
- //
- //array[<index>] = value;
- //
- ilGenerator.Emit(OpCodes.Ldloc, generatedArrayLocal);
- ilGenerator.LoadInt(index);
- ilGenerator.LoadValue(value);
- if (GenerationServices.IsBoxingRequiredForValue(value) && !elementType.IsValueType)
- {
- ilGenerator.Emit(OpCodes.Box, value.GetType());
- }
- ilGenerator.Emit(OpCodes.Stelem, elementType);
- index++;
- }
-
- ilGenerator.Emit(OpCodes.Ldloc, generatedArrayLocal);
- }
-
- private static bool IsBoxingRequiredForValue(object value)
- {
- if (value == null)
- {
- return false;
- }
- else
- {
- return value.GetType().IsValueType;
- }
- }
-
-
- private static void LoadNull(this ILGenerator ilGenerator)
- {
- ilGenerator.Emit(OpCodes.Ldnull);
- }
-
- private static void LoadString(this ILGenerator ilGenerator, string s)
- {
- Assumes.NotNull(ilGenerator);
- if (s == null)
- {
- ilGenerator.LoadNull();
- }
- else
- {
- ilGenerator.Emit(OpCodes.Ldstr, s);
- }
- }
-
-
- private static void LoadInt(this ILGenerator ilGenerator, int value)
- {
- Assumes.NotNull(ilGenerator);
- ilGenerator.Emit(OpCodes.Ldc_I4, value);
- }
-
- private static void LoadLong(this ILGenerator ilGenerator, long value)
- {
- Assumes.NotNull(ilGenerator);
- ilGenerator.Emit(OpCodes.Ldc_I8, value);
- }
-
- private static void LoadFloat(this ILGenerator ilGenerator, float value)
- {
- Assumes.NotNull(ilGenerator);
- ilGenerator.Emit(OpCodes.Ldc_R4, value);
- }
-
- private static void LoadDouble(this ILGenerator ilGenerator, double value)
- {
- Assumes.NotNull(ilGenerator);
- ilGenerator.Emit(OpCodes.Ldc_R8, value);
- }
-
- private static void LoadTypeOf(this ILGenerator ilGenerator, Type type)
- {
- Assumes.NotNull(ilGenerator);
- //typeofs() translate into ldtoken and Type::GetTypeFromHandle call
- ilGenerator.Emit(OpCodes.Ldtoken, type);
- ilGenerator.EmitCall(OpCodes.Call, GenerationServices._typeGetTypeFromHandleMethod, null);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/LazyServices.cs b/System.ComponentModel.Composition/Microsoft/Internal/LazyServices.cs
deleted file mode 100644
index baff505..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/LazyServices.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading;
-using System.Text;
-using System.Globalization;
-
-namespace Microsoft.Internal
-{
- internal static class LazyServices
- {
- public static Lazy<T> AsLazy<T>(this T t)
- where T : class
- {
- return new Lazy<T>(() => t, false);
- }
-
- public static T GetNotNullValue<T>(this Lazy<T> lazy, string argument)
- where T : class
- {
- Assumes.NotNull(lazy);
- T value = lazy.Value;
- if (value == null)
- {
- throw new InvalidOperationException(
- string.Format(CultureInfo.CurrentCulture, Strings.LazyServices_LazyResolvesToNull, typeof(T), argument));
- }
-
- return value;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Lock.Reader.cs b/System.ComponentModel.Composition/Microsoft/Internal/Lock.Reader.cs
deleted file mode 100644
index 1f62034..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Lock.Reader.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-
-namespace Microsoft.Internal
-{
- internal struct ReadLock : IDisposable
- {
- private readonly Lock _lock;
- private int _isDisposed;
-
- public ReadLock(Lock @lock)
- {
- this._isDisposed = 0;
- this._lock = @lock;
- this._lock.EnterReadLock();
- }
-
- public void Dispose()
- {
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
- {
- this._lock.ExitReadLock();
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Lock.Writer.cs b/System.ComponentModel.Composition/Microsoft/Internal/Lock.Writer.cs
deleted file mode 100644
index 1e8aef0..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Lock.Writer.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-
-namespace Microsoft.Internal
-{
- internal struct WriteLock : IDisposable
- {
- private readonly Lock _lock;
- private int _isDisposed;
-
- public WriteLock(Lock @lock)
- {
- this._isDisposed = 0;
- this._lock = @lock;
- this._lock.EnterWriteLock();
- }
-
- public void Dispose()
- {
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
- {
- this._lock.ExitWriteLock();
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Lock.cs b/System.ComponentModel.Composition/Microsoft/Internal/Lock.cs
deleted file mode 100644
index 7d2522d..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Lock.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-
-namespace Microsoft.Internal
-{
- internal sealed class Lock : IDisposable
- {
-#if (!SILVERLIGHT)
- private ReaderWriterLockSlim _thisLock = new ReaderWriterLockSlim(LockRecursionPolicy.NoRecursion);
- private int _isDisposed = 0;
- public void EnterReadLock()
- {
- this._thisLock.EnterReadLock();
- }
-
- public void EnterWriteLock()
- {
- this._thisLock.EnterWriteLock();
- }
-
- public void ExitReadLock()
- {
- this._thisLock.ExitReadLock();
- }
-
- public void ExitWriteLock()
- {
- this._thisLock.ExitWriteLock();
- }
-
- public void Dispose()
- {
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
- {
- this._thisLock.Dispose();
- }
- }
-
-#else
- // ReaderWriterLockSlim is not yet implemented on SilverLight
- // Satisfies our requirements until it is implemented
- object _thisLock = new object();
-
- public Lock()
- {
- }
-
- public void EnterReadLock()
- {
- Monitor.Enter(this._thisLock);
- }
-
- public void EnterWriteLock()
- {
- Monitor.Enter(this._thisLock);
- }
-
- public void ExitReadLock()
- {
- Monitor.Exit(this._thisLock);
- }
-
- public void ExitWriteLock()
- {
- Monitor.Exit(this._thisLock);
- }
-
- public void Dispose()
- {
- }
-#endif
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/ReflectionInvoke.cs b/System.ComponentModel.Composition/Microsoft/Internal/ReflectionInvoke.cs
deleted file mode 100644
index b6846ca..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/ReflectionInvoke.cs
+++ /dev/null
@@ -1,114 +0,0 @@
-#if !SILVERLIGHT && CLR40
-
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-namespace Microsoft.Internal
-{
- internal static class ReflectionInvoke
- {
- private static readonly ReflectionPermission _memberAccess = new ReflectionPermission(ReflectionPermissionFlag.MemberAccess);
- private static readonly ReflectionPermission _restrictedMemberAccess = new ReflectionPermission(ReflectionPermissionFlag.RestrictedMemberAccess);
-
- public static object SafeCreateInstance(this Type type, params object[] arguments)
- {
- DemandMemberAccessIfNeeded(type);
-
- return Activator.CreateInstance(type, arguments);
- }
-
- public static object SafeInvoke(this ConstructorInfo constructor, params object[] arguments)
- {
- DemandMemberAccessIfNeeded(constructor);
-
- return constructor.Invoke(arguments);
- }
-
- public static object SafeInvoke(this MethodInfo method, object instance, params object[] arguments)
- {
- DemandMemberAccessIfNeeded(method);
-
- return method.Invoke(instance, arguments);
- }
-
- public static object SafeGetValue(this FieldInfo field, object instance)
- {
- DemandMemberAccessIfNeeded(field);
-
- return field.GetValue(instance);
- }
-
- public static void SafeSetValue(this FieldInfo field, object instance, object value)
- {
- DemandMemberAccessIfNeeded(field);
-
- field.SetValue(instance, value);
- }
-
- public static void DemandMemberAccessIfNeeded(MethodInfo method)
- {
- if (!method.IsVisible())
- {
- DemandMemberAccess(method);
- }
- }
-
- private static void DemandMemberAccessIfNeeded(FieldInfo field)
- {
- if (!field.IsVisible())
- {
- DemandMemberAccess(field);
- }
- }
-
- public static void DemandMemberAccessIfNeeded(Type type)
- {
- // Consult UnderlyingSystemType this is the type that Activator.CreateInstance creates
- if (!type.UnderlyingSystemType.IsVisible)
- {
- DemandMemberAccess(type);
- }
- }
-
- private static void DemandMemberAccessIfNeeded(ConstructorInfo constructor)
- {
- if (!constructor.IsVisible())
- {
- DemandMemberAccess(constructor);
- }
- }
-
- private static void DemandMemberAccess(MemberInfo target)
- {
- try
- {
- _memberAccess.Demand();
- }
- catch (SecurityException)
- { // The caller doesn't have member access, but let's see whether they have access to
- // members of assemblies with less or equal permissions (this mimics Reflection's behavior)
-
- DemandRestrictedMemberAccess(target);
- }
- }
-
- private static void DemandRestrictedMemberAccess(MemberInfo target)
- {
- Assembly targetAssembly = target.Assembly();
-
- PermissionSet targetGrantSet = UnsafePermissionSet(targetAssembly);
- targetGrantSet.AddPermission(_restrictedMemberAccess);
- targetGrantSet.Demand();
- }
-
- [SecuritySafeCritical] // PermissionSet is [SecurityCritical]
- private static PermissionSet UnsafePermissionSet(Assembly assembly)
- {
- return assembly.PermissionSet;
- }
- }
-}
-
-#endif
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/ReflectionServices.cs b/System.ComponentModel.Composition/Microsoft/Internal/ReflectionServices.cs
deleted file mode 100644
index d34d518..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/ReflectionServices.cs
+++ /dev/null
@@ -1,122 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-namespace Microsoft.Internal
-{
- internal static class ReflectionServices
- {
- public static Assembly Assembly(this MemberInfo member)
- {
- Type type = member as Type;
- if (type != null)
- {
- return type.Assembly;
- }
-
- return member.DeclaringType.Assembly;
- }
-
- public static bool IsVisible(this ConstructorInfo constructor)
- {
- return constructor.DeclaringType.IsVisible && constructor.IsPublic;
- }
-
- public static bool IsVisible(this FieldInfo field)
- {
- return field.DeclaringType.IsVisible && field.IsPublic;
- }
-
- public static bool IsVisible(this MethodInfo method)
- {
- if (!method.DeclaringType.IsVisible)
- return false;
-
- if (!method.IsPublic)
- return false;
-
- if (method.IsGenericMethod)
- {
- // Check type arguments, for example if we're passed 'Activator.CreateInstance<SomeMefInternalType>()'
- foreach (Type typeArgument in method.GetGenericArguments())
- {
- if (!typeArgument.IsVisible)
- return false;
- }
- }
-
- return true;
- }
-
- public static string GetDisplayName(Type declaringType, string name)
- {
- Assumes.NotNull(declaringType);
-
- return declaringType.GetDisplayName() + "." + name;
- }
-
- public static string GetDisplayName(this MemberInfo member)
- {
- Assumes.NotNull(member);
-
- switch (member.MemberType)
- {
- case MemberTypes.TypeInfo:
- case MemberTypes.NestedType:
- return ((Type)member).FullName;
- }
-
- return GetDisplayName(member.DeclaringType, member.Name);
- }
-
- internal static bool TryGetGenericInterfaceType(Type instanceType, Type targetOpenInterfaceType, out Type targetClosedInterfaceType)
- {
- // The interface must be open
- Assumes.IsTrue(targetOpenInterfaceType.IsInterface);
- Assumes.IsTrue(targetOpenInterfaceType.IsGenericTypeDefinition);
- Assumes.IsTrue(!instanceType.IsGenericTypeDefinition);
-
- // if instanceType is an interface, we must first check it directly
- if (instanceType.IsInterface &&
- instanceType.IsGenericType &&
- instanceType.GetGenericTypeDefinition() == targetOpenInterfaceType)
- {
- targetClosedInterfaceType = instanceType;
- return true;
- }
-
- try
- {
- // Purposefully not using FullName here because it results in a significantly
- // more expensive implementation of GetInterface, this does mean that we're
- // takign the chance that there aren't too many types which implement multiple
- // interfaces by the same name...
- Type targetInterface = instanceType.GetInterface(targetOpenInterfaceType.Name, false);
- if (targetInterface != null &&
- targetInterface.GetGenericTypeDefinition() == targetOpenInterfaceType)
- {
- targetClosedInterfaceType = targetInterface;
- return true;
- }
- }
- catch (AmbiguousMatchException)
- {
- // If there are multiple with the same name we should not pick any
- }
-
- targetClosedInterfaceType = null;
- return false;
- }
-
- internal static IEnumerable<PropertyInfo> GetAllProperties(this Type type)
- {
- return type.GetInterfaces().Concat(new Type[] { type }).SelectMany(itf => itf.GetProperties());
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Requires.cs b/System.ComponentModel.Composition/Microsoft/Internal/Requires.cs
deleted file mode 100644
index 1f9f7e6..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Requires.cs
+++ /dev/null
@@ -1,102 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-using System.Globalization;
-using System.Reflection;
-using System.ComponentModel.Composition;
-using System.Text;
-
-namespace Microsoft.Internal
-{
- internal static class Requires
- {
- [DebuggerStepThrough]
- public static void NotNull<T>(T value, string parameterName)
- where T : class
- {
- if (value == null)
- {
- throw new ArgumentNullException(parameterName);
- }
- }
-
- [DebuggerStepThrough]
- public static void NotNullOrEmpty(string value, string parameterName)
- {
- NotNull(value, parameterName);
-
- if (value.Length == 0)
- {
- throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Strings.ArgumentException_EmptyString, parameterName), parameterName);
- }
- }
-
- [DebuggerStepThrough]
- public static void NotNullOrNullElements<T>(IEnumerable<T> values, string parameterName)
- where T : class
- {
- NotNull(values, parameterName);
- NotNullElements(values, parameterName);
- }
-
- [DebuggerStepThrough]
- public static void NullOrNotNullElements<TKey, TValue>(IEnumerable<KeyValuePair<TKey, TValue>> values, string parameterName)
- where TKey : class
- where TValue : class
- {
- if (values != null)
- {
- NotNullElements(values, parameterName);
- }
- }
-
- [DebuggerStepThrough]
- public static void NullOrNotNullElements<T>(IEnumerable<T> values, string parameterName)
- where T : class
- {
- if (values != null)
- {
- NotNullElements(values, parameterName);
- }
- }
-
- private static void NotNullElements<T>(IEnumerable<T> values, string parameterName)
- where T : class
- {
- foreach (T value in values)
- {
- if (value == null)
- {
- throw ExceptionBuilder.CreateContainsNullElement(parameterName);
- }
- }
- }
-
- private static void NotNullElements<TKey, TValue>(IEnumerable<KeyValuePair<TKey, TValue>> values, string parameterName)
- where TKey : class
- where TValue : class
- {
- foreach (KeyValuePair<TKey, TValue> value in values)
- {
- if ((value.Key == null) || (value.Value == null))
- {
- throw ExceptionBuilder.CreateContainsNullElement(parameterName);
- }
- }
- }
- [DebuggerStepThrough]
- public static void IsInMembertypeSet(MemberTypes value, string parameterName, MemberTypes enumFlagSet)
- {
- if ((value & enumFlagSet) != value || // Ensure the member is in the set
- (value & (value - 1)) != 0) // Ensure that there is only one flag in the value (i.e. value is a power of 2).
- {
- throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Strings.ArgumentOutOfRange_InvalidEnumInSet, parameterName, value, enumFlagSet.ToString()), parameterName);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Runtime/Serialization/SerializationServices.cs b/System.ComponentModel.Composition/Microsoft/Internal/Runtime/Serialization/SerializationServices.cs
deleted file mode 100644
index f2745f5..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Runtime/Serialization/SerializationServices.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if !SILVERLIGHT
-
-using System;
-using System.Runtime.Serialization;
-
-namespace Microsoft.Internal.Runtime.Serialization
-{
- internal static class SerializationServices
- {
- public static T GetValue<T>(this SerializationInfo info, string name)
- {
- Assumes.NotNull(info, name);
-
- return (T)info.GetValue(name, typeof(T));
- }
- }
-}
-
-#endif
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/SilverlightReflectionInvoke.cs b/System.ComponentModel.Composition/Microsoft/Internal/SilverlightReflectionInvoke.cs
deleted file mode 100644
index 0e2f3dc..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/SilverlightReflectionInvoke.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-#if SILVERLIGHT || !CLR40
-
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-namespace Microsoft.Internal
-{
- internal static class ReflectionInvoke
- {
- public static object SafeCreateInstance(this Type type, params object[] arguments)
- {
- return Activator.CreateInstance(type, arguments);
- }
-
- public static object SafeInvoke(this ConstructorInfo constructor, params object[] arguments)
- {
- return constructor.Invoke(arguments);
- }
-
- public static object SafeInvoke(this MethodInfo method, object instance, params object[] arguments)
- {
- return method.Invoke(instance, arguments);
- }
-
- public static object SafeGetValue(this FieldInfo field, object instance)
- {
- return field.GetValue(instance);
- }
-
- public static void SafeSetValue(this FieldInfo field, object instance, object value)
- {
- field.SetValue(instance, value);
- }
-
- public static void DemandMemberAccessIfNeeded(MethodInfo method)
- {
- }
- }
-}
-
-#endif
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/StringComparers.cs b/System.ComponentModel.Composition/Microsoft/Internal/StringComparers.cs
deleted file mode 100644
index 5cb9747..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/StringComparers.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace Microsoft.Internal
-{
- internal static class StringComparers
- {
- public static StringComparer ContractName
- {
- get { return StringComparer.Ordinal; }
- }
-
- public static StringComparer MetadataKeyNames
- {
- get { return StringComparer.Ordinal; }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Strings.Designer.cs b/System.ComponentModel.Composition/Strings.Designer.cs
deleted file mode 100644
index ba48697..0000000
--- a/System.ComponentModel.Composition/Strings.Designer.cs
+++ /dev/null
@@ -1,927 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.1
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Microsoft.Internal {
- using System;
-
-
- /// <summary>
- /// A strongly-typed resource class, for looking up localized strings, etc.
- /// </summary>
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Strings {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Strings() {
- }
-
- /// <summary>
- /// Returns the cached ResourceManager instance used by this class.
- /// </summary>
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.Internal.Strings", typeof(Strings).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- /// <summary>
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- /// </summary>
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to '{0}' is a reflection-only assembly which is not supported..
- /// </summary>
- internal static string Argument_AssemblyReflectionOnly {
- get {
- return ResourceManager.GetString("Argument_AssemblyReflectionOnly", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to '{0}' contains a reflection-only type which is not supported..
- /// </summary>
- internal static string Argument_ElementReflectionOnlyType {
- get {
- return ResourceManager.GetString("Argument_ElementReflectionOnlyType", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to 'exports' cannot be empty when ImportDefinition.ImportCardinality is ImportCardinality.ExactlyOne..
- /// </summary>
- internal static string Argument_ExportsEmpty {
- get {
- return ResourceManager.GetString("Argument_ExportsEmpty", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to 'exports' cannot contain more than one element when ImportDefinition.ImportCardinality is ImportCardinality.ZeroOrOne or ImportCardinality.ExactlyOne..
- /// </summary>
- internal static string Argument_ExportsTooMany {
- get {
- return ResourceManager.GetString("Argument_ExportsTooMany", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to '{0}' cannot contain a null (Nothing in Visual Basic) element..
- /// </summary>
- internal static string Argument_NullElement {
- get {
- return ResourceManager.GetString("Argument_NullElement", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to '{0}' cannot be an empty string ("")..
- /// </summary>
- internal static string ArgumentException_EmptyString {
- get {
- return ResourceManager.GetString("ArgumentException_EmptyString", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The value of argument '{0}' ({1}) is invalid for Enum type '{2}'..
- /// </summary>
- internal static string ArgumentOutOfRange_InvalidEnum {
- get {
- return ResourceManager.GetString("ArgumentOutOfRange_InvalidEnum", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The value of argument '{0}' ({1}) is not supported. Allowed values are : '{2}'..
- /// </summary>
- internal static string ArgumentOutOfRange_InvalidEnumInSet {
- get {
- return ResourceManager.GetString("ArgumentOutOfRange_InvalidEnumInSet", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The argument was a value type which is not supported..
- /// </summary>
- internal static string ArgumentValueType {
- get {
- return ResourceManager.GetString("ArgumentValueType", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Assembly file {0} is either not found or not a dll or exe file..
- /// </summary>
- internal static string AssemblyFileNotFoundOrWrongType {
- get {
- return ResourceManager.GetString("AssemblyFileNotFoundOrWrongType", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The atomicComposition can no longer be changed because the atomicComposition has already been completed..
- /// </summary>
- internal static string AtomicComposition_AlreadyCompleted {
- get {
- return ResourceManager.GetString("AtomicComposition_AlreadyCompleted", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The atomicComposition is already contains an inner atomicComposition and cannot contain more than one atomicComposition at a time..
- /// </summary>
- internal static string AtomicComposition_AlreadyNested {
- get {
- return ResourceManager.GetString("AtomicComposition_AlreadyNested", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The atomicComposition contains another inner atomicComposition and cannot be changed until the that inner atomicComposition has been completed..
- /// </summary>
- internal static string AtomicComposition_PartOfAnotherAtomicComposition {
- get {
- return ResourceManager.GetString("AtomicComposition_PartOfAnotherAtomicComposition", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to No valid exports were found that match the constraint '{0}', invalid exports may have been rejected..
- /// </summary>
- internal static string CardinalityMismatch_NoExports {
- get {
- return ResourceManager.GetString("CardinalityMismatch_NoExports", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to More than one export was found that matches the constraint '{0}'..
- /// </summary>
- internal static string CardinalityMismatch_TooManyExports {
- get {
- return ResourceManager.GetString("CardinalityMismatch_TooManyExports", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Unknown Origin.
- /// </summary>
- internal static string CompositionElement_UnknownOrigin {
- get {
- return ResourceManager.GetString("CompositionElement_UnknownOrigin", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The composition remains unchanged. The changes were rejected because of the following error(s): {0}.
- /// </summary>
- internal static string CompositionException_ChangesRejected {
- get {
- return ResourceManager.GetString("CompositionException_ChangesRejected", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Element: {0}.
- /// </summary>
- internal static string CompositionException_ElementPrefix {
- get {
- return ResourceManager.GetString("CompositionException_ElementPrefix", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Resulting in:.
- /// </summary>
- internal static string CompositionException_ErrorPrefix {
- get {
- return ResourceManager.GetString("CompositionException_ErrorPrefix", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Unable to create an instance of the Metadata view '{0}' because a constructor could not be selected. Ensure that the type implements a constructor which takes an argument of type IDictionary<string, object>..
- /// </summary>
- internal static string CompositionException_MetadataViewInvalidConstructor {
- get {
- return ResourceManager.GetString("CompositionException_MetadataViewInvalidConstructor", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The composition produced multiple composition errors, with {0:N0} root causes. The root causes are provided below..
- /// </summary>
- internal static string CompositionException_MultipleErrorsWithMultiplePaths {
- get {
- return ResourceManager.GetString("CompositionException_MultipleErrorsWithMultiplePaths", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to {0} {1}.
- /// </summary>
- internal static string CompositionException_OriginFormat {
- get {
- return ResourceManager.GetString("CompositionException_OriginFormat", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to --> .
- /// </summary>
- internal static string CompositionException_OriginSeparator {
- get {
- return ResourceManager.GetString("CompositionException_OriginSeparator", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to ).
- /// </summary>
- internal static string CompositionException_PathsCountSeparator {
- get {
- return ResourceManager.GetString("CompositionException_PathsCountSeparator", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Review the CompositionException.Errors property for more detailed information..
- /// </summary>
- internal static string CompositionException_ReviewErrorProperty {
- get {
- return ResourceManager.GetString("CompositionException_ReviewErrorProperty", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The composition produced a single composition error, with {0:N0} root causes. The root causes are provided below..
- /// </summary>
- internal static string CompositionException_SingleErrorWithMultiplePaths {
- get {
- return ResourceManager.GetString("CompositionException_SingleErrorWithMultiplePaths", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The composition produced a single composition error. The root cause is provided below..
- /// </summary>
- internal static string CompositionException_SingleErrorWithSinglePath {
- get {
- return ResourceManager.GetString("CompositionException_SingleErrorWithSinglePath", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The catalog '{0}' could not load assembly '{1}'. {2}.
- /// </summary>
- internal static string CompositionTrace_Discovery_AssemblyLoadFailed {
- get {
- return ResourceManager.GetString("CompositionTrace_Discovery_AssemblyLoadFailed", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The ComposablePartDefinition '{0}' was ignored because it is an open generic type..
- /// </summary>
- internal static string CompositionTrace_Discovery_DefinitionContainsGenericParameters {
- get {
- return ResourceManager.GetString("CompositionTrace_Discovery_DefinitionContainsGenericParameters", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The ComposablePartDefinition '{0}' was ignored because it contains no exports..
- /// </summary>
- internal static string CompositionTrace_Discovery_DefinitionContainsNoExports {
- get {
- return ResourceManager.GetString("CompositionTrace_Discovery_DefinitionContainsNoExports", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The ComposablePartDefinition '{0}' was ignored because it was marked with PartNotDiscoverableAttribute..
- /// </summary>
- internal static string CompositionTrace_Discovery_DefinitionMarkedWithPartNotDiscoverableAttribute {
- get {
- return ResourceManager.GetString("CompositionTrace_Discovery_DefinitionMarkedWithPartNotDiscoverableAttribute", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The member or parameter '{0}' is marked with multiple Import and ImportMany attributes. Only the first attribute encountered will be respected..
- /// </summary>
- internal static string CompositionTrace_Discovery_MemberMarkedWithMultipleImportAndImportMany {
- get {
- return ResourceManager.GetString("CompositionTrace_Discovery_MemberMarkedWithMultipleImportAndImportMany", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The ComposablePartDefinition '{0}' has been rejected. {1}.
- /// </summary>
- internal static string CompositionTrace_Rejection_DefinitionRejected {
- get {
- return ResourceManager.GetString("CompositionTrace_Rejection_DefinitionRejected", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The ComposablePartDefinition '{0}' that was previously rejected has been resurrected..
- /// </summary>
- internal static string CompositionTrace_Rejection_DefinitionResurrected {
- get {
- return ResourceManager.GetString("CompositionTrace_Rejection_DefinitionResurrected", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot cast the underlying exported value of type '{0}' to type '{1}'..
- /// </summary>
- internal static string ContractMismatch_ExportedValueCannotBeCastToT {
- get {
- return ResourceManager.GetString("ContractMismatch_ExportedValueCannotBeCastToT", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Unable to create an Instance of the Metadata view '{0}' because the exporter exported the metadata for the item '{1}' with the value '{2}' as type '{3}' but the view imports it as type '{4}'..
- /// </summary>
- internal static string ContractMismatch_InvalidCastOnMetadataField {
- get {
- return ResourceManager.GetString("ContractMismatch_InvalidCastOnMetadataField", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Unable to create an Instance of the Metadata view '{0}' because the exporter exported the metadata for the item '{1}' with a null value and null is not a valid value for type '{2}'..
- /// </summary>
- internal static string ContractMismatch_NullReferenceOnMetadataField {
- get {
- return ResourceManager.GetString("ContractMismatch_NullReferenceOnMetadataField", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Directory '{0}' could not be found..
- /// </summary>
- internal static string DirectoryNotFound {
- get {
- return ResourceManager.GetString("DirectoryNotFound", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Member or Type '{0}' contains multiple metadata entries with the name '{1}'. The metadata entries could be coming from the ExportMetadataAttribute or from a property of a custom metadata attribute. Either remove the duplicate entries or enable the metadata entry with name '{1}' to allow multiple entries via the IsMultiple property on ExportMetadataAttribute or AttributeUsage.AllowMultiple on custom metadata attributes..
- /// </summary>
- internal static string Discovery_DuplicateMetadataNameValues {
- get {
- return ResourceManager.GetString("Discovery_DuplicateMetadataNameValues", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Property '{0}' has type '{1}' which is an invalid metadata type. Metadata can only contain values with a type that is available to be embedded at compile-time into attributes. For more details of what types are valid reference section 17.1.3 in the C# specification..
- /// </summary>
- internal static string Discovery_MetadataContainsValueWithInvalidType {
- get {
- return ResourceManager.GetString("Discovery_MetadataContainsValueWithInvalidType", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Member or Type '{0}' contains a metadata entry with the name '{1}', which is a reserved metadata key name. Either remove this metadata entry or change the name associated with the entry..
- /// </summary>
- internal static string Discovery_ReservedMetadataNameUsed {
- get {
- return ResourceManager.GetString("Discovery_ReservedMetadataNameUsed", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to {0} did not originate from the ExportDefinitions property on this ComposablePart or its ComposablePartDefinition..
- /// </summary>
- internal static string ExportDefinitionNotOnThisComposablePart {
- get {
- return ResourceManager.GetString("ExportDefinitionNotOnThisComposablePart", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to {0} did not originate from the ImportDefinitions property on this ComposablePart or its ComposablePartDefinition..
- /// </summary>
- internal static string ImportDefinitionNotOnThisComposablePart {
- get {
- return ResourceManager.GetString("ImportDefinitionNotOnThisComposablePart", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The composition failed because it did not complete within '{0:N0}' iterations. This is most likely caused by a cycle in the dependency graph of a part which is marked with a non-shared creation policy..
- /// </summary>
- internal static string ImportEngine_ComposeTookTooManyIterations {
- get {
- return ResourceManager.GetString("ImportEngine_ComposeTookTooManyIterations", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The ComposablePart of type '{0}' cannot be recomposed because it is in an invalid state. It can only be recomposed if it has already been fully previewed or composed..
- /// </summary>
- internal static string ImportEngine_InvalidStateForRecomposition {
- get {
- return ResourceManager.GetString("ImportEngine_InvalidStateForRecomposition", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot activate part '{0}'..
- /// </summary>
- internal static string ImportEngine_PartCannotActivate {
- get {
- return ResourceManager.GetString("ImportEngine_PartCannotActivate", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot get export '{0}' from part '{1}'..
- /// </summary>
- internal static string ImportEngine_PartCannotGetExportedValue {
- get {
- return ResourceManager.GetString("ImportEngine_PartCannotGetExportedValue", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot set import '{0}' on part '{1}'..
- /// </summary>
- internal static string ImportEngine_PartCannotSetImport {
- get {
- return ResourceManager.GetString("ImportEngine_PartCannotSetImport", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot compose part '{0}' because a cycle exists in the dependencies between the exports being composed. To break this cycle, consider changing some imports from constructor to property injection..
- /// </summary>
- internal static string ImportEngine_PartCycle {
- get {
- return ResourceManager.GetString("ImportEngine_PartCycle", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Change in exports prevented by non-recomposable import '{0}' on part '{1}'..
- /// </summary>
- internal static string ImportEngine_PreventedByExistingImport {
- get {
- return ResourceManager.GetString("ImportEngine_PreventedByExistingImport", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Could not finishing composing object of type '{0}'. The import '{1}' was not satisfied..
- /// </summary>
- internal static string ImportNotSetOnPart {
- get {
- return ResourceManager.GetString("ImportNotSetOnPart", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Internal error occurred. Additional information: '{0}'..
- /// </summary>
- internal static string InternalExceptionMessage {
- get {
- return ResourceManager.GetString("InternalExceptionMessage", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Metadata can only contain values with a type that is available to be embedded at compile-time into attributes. For more details of what types are valid reference section 17.1.3 in the C# specification..
- /// </summary>
- internal static string InvalidMetadataValue {
- get {
- return ResourceManager.GetString("InvalidMetadataValue", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The Type '{0}' supplied is not a valid Metadata View..
- /// </summary>
- internal static string InvalidMetadataView {
- get {
- return ResourceManager.GetString("InvalidMetadataView", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to 'definition' cannot be set after Activate has been called because ImportDefinition.IsRecomposable is false..
- /// </summary>
- internal static string InvalidOperation_DefinitionCannotBeRecomposed {
- get {
- return ResourceManager.GetString("InvalidOperation_DefinitionCannotBeRecomposed", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to GetExportedValue cannot be called before prerequisite import '{0}' has been set..
- /// </summary>
- internal static string InvalidOperation_GetExportedValueBeforePrereqImportSet {
- get {
- return ResourceManager.GetString("InvalidOperation_GetExportedValueBeforePrereqImportSet", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to A call to Compose occurred during a call to Compose on the same CompositionContainer object. Use the IsComposing property on CompositionContainer to ensure a composition is not already in progress before calling Compose..
- /// </summary>
- internal static string InvalidOperationReentrantCompose {
- get {
- return ResourceManager.GetString("InvalidOperationReentrantCompose", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The MetadataView '{0}' is invalid because property '{1}' has a property set method..
- /// </summary>
- internal static string InvalidSetterOnMetadataField {
- get {
- return ResourceManager.GetString("InvalidSetterOnMetadataField", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Accessors must not be null (Nothing in Visual Basic)..
- /// </summary>
- internal static string LazyMemberInfo_AccessorsNull {
- get {
- return ResourceManager.GetString("LazyMemberInfo_AccessorsNull", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to A member of type '{0}' must have exactly a single accessor of type '{0}'.
- /// </summary>
- internal static string LazyMemberInfo_InvalidAccessorOnSimpleMember {
- get {
- return ResourceManager.GetString("LazyMemberInfo_InvalidAccessorOnSimpleMember", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to All event accessors must be methods..
- /// </summary>
- internal static string LazyMemberinfo_InvalidEventAccessors_AccessorType {
- get {
- return ResourceManager.GetString("LazyMemberinfo_InvalidEventAccessors_AccessorType", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to An event must have exactly three accessors..
- /// </summary>
- internal static string LazyMemberInfo_InvalidEventAccessors_Cardinality {
- get {
- return ResourceManager.GetString("LazyMemberInfo_InvalidEventAccessors_Cardinality", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to All property accessors must be methods..
- /// </summary>
- internal static string LazyMemberinfo_InvalidPropertyAccessors_AccessorType {
- get {
- return ResourceManager.GetString("LazyMemberinfo_InvalidPropertyAccessors_AccessorType", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to A property must have exactly two accessors..
- /// </summary>
- internal static string LazyMemberInfo_InvalidPropertyAccessors_Cardinality {
- get {
- return ResourceManager.GetString("LazyMemberInfo_InvalidPropertyAccessors_Cardinality", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to A member must have at least one accessor..
- /// </summary>
- internal static string LazyMemberInfo_NoAccessors {
- get {
- return ResourceManager.GetString("LazyMemberInfo_NoAccessors", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The lazily evaluated value of type '{0}' passed to the ReflectionModelServices API as part of the argument '{1}' must not return null (Nothing in Visual Basic)..
- /// </summary>
- internal static string LazyServices_LazyResolvesToNull {
- get {
- return ResourceManager.GetString("LazyServices_LazyResolvesToNull", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to This export does not support the metadata item '{0}'..
- /// </summary>
- internal static string MetadataItemNotSupported {
- get {
- return ResourceManager.GetString("MetadataItemNotSupported", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The {0} member must be overridden by a derived class..
- /// </summary>
- internal static string NotImplemented_NotOverriddenByDerived {
- get {
- return ResourceManager.GetString("NotImplemented_NotOverriddenByDerived", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Interface '{0}' is not a valid MetadataView; MetadataViews do not support non-public interfaces, and interfaces that contain members that are not properties..
- /// </summary>
- internal static string NotSupportedInterfaceMetadataView {
- get {
- return ResourceManager.GetString("NotSupportedInterfaceMetadataView", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The underlying dictionary is read-only..
- /// </summary>
- internal static string NotSupportedReadOnlyDictionary {
- get {
- return ResourceManager.GetString("NotSupportedReadOnlyDictionary", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to This property cannot be set after the object's public surface has been accessed..
- /// </summary>
- internal static string ObjectAlreadyInitialized {
- get {
- return ResourceManager.GetString("ObjectAlreadyInitialized", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to This object has not been initialized - the property '{0}' must be set..
- /// </summary>
- internal static string ObjectMustBeInitialized {
- get {
- return ResourceManager.GetString("ObjectMustBeInitialized", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Currently composing another batch in this ComposablePartExportProvider. Only one batch can be composed at a time..
- /// </summary>
- internal static string ReentrantCompose {
- get {
- return ResourceManager.GetString("ReentrantCompose", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot get the value of property '{0}', because the member is not readable. The property must have an accessible getter..
- /// </summary>
- internal static string ReflectionModel_ExportNotReadable {
- get {
- return ResourceManager.GetString("ReflectionModel_ExportNotReadable", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to An exception occurred while trying to get the value of property '{0}'..
- /// </summary>
- internal static string ReflectionModel_ExportThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_ExportThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot populate the collection '{0}' because an exception occurred while calling the Add method on the type '{1}'..
- /// </summary>
- internal static string ReflectionModel_ImportCollectionAddThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportCollectionAddThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot populate the collection '{0}' because an exception occurred while calling the Clear method on the type '{1}'..
- /// </summary>
- internal static string ReflectionModel_ImportCollectionClearThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportCollectionClearThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot populate the collection '{0}' because an exception occurred while calling the default constructor on the type '{1}'..
- /// </summary>
- internal static string ReflectionModel_ImportCollectionConstructionThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportCollectionConstructionThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot populate the collection '{0}' because an exception occurred while trying to access the collection value. If the collection is not IEnumerable<T> or T[] it must implement ICollection<T> and be either pre-initialized or be writable with a default constructor..
- /// </summary>
- internal static string ReflectionModel_ImportCollectionGetThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportCollectionGetThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot populate the collection '{0}' because an exception occurred while reading the IsReadOnly property on the type '{1}'..
- /// </summary>
- internal static string ReflectionModel_ImportCollectionIsReadOnlyThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportCollectionIsReadOnlyThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot populate the collection '{0}' because it does not implement ICollection<T> or is read-only. If the collection is not IEnumerable<T> or T[] it must implement ICollection<T> and be either pre-initialized or be writable with a default constructor..
- /// </summary>
- internal static string ReflectionModel_ImportCollectionNotWritable {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportCollectionNotWritable", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot populate the value of enumerable member '{0}' because it is null (Nothing in Visual Basic). If the collection is not IEnumerable<T> or T[] it must implement ICollection<T> and be either pre-initialized or be writable with a default constructor..
- /// </summary>
- internal static string ReflectionModel_ImportCollectionNull {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportCollectionNull", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The importing constructor on type '{0}' is using ImportManyAttribute on parameter '{1}' with a non-assignable type. On constructor parameters the ImportManyAttribute only supports importing into types T[] or IEnumerable<T>..
- /// </summary>
- internal static string ReflectionModel_ImportManyOnParameterCanOnlyBeAssigned {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportManyOnParameterCanOnlyBeAssigned", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The export '{0}' is not assignable to type '{1}'..
- /// </summary>
- internal static string ReflectionModel_ImportNotAssignableFromExport {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportNotAssignableFromExport", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot set the value of '{0}' because the member is not writable. If the member is a property, it must have an accessible setter; otherwise, if it is a field, it must not be read-only..
- /// </summary>
- internal static string ReflectionModel_ImportNotWritable {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportNotWritable", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to An exception occurred while trying to set the value of property '{0}'..
- /// </summary>
- internal static string ReflectionModel_ImportThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to ExportDefinition of type '{0}' cannot be used in this context. Only export definitions produced by the ReflectionModelServices.CreateExportDefinition are supported..
- /// </summary>
- internal static string ReflectionModel_InvalidExportDefinition {
- get {
- return ResourceManager.GetString("ReflectionModel_InvalidExportDefinition", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to ImportDefinition of type '{0}' cannot be used in this context. Only import definitions produced by the ReflectionModelServices.CreateImportDefinition are supported..
- /// </summary>
- internal static string ReflectionModel_InvalidImportDefinition {
- get {
- return ResourceManager.GetString("ReflectionModel_InvalidImportDefinition", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to ImportDefinition of type '{0}' cannot be used in this context. Only import definitions produced by the ReflectionModelServices.CreateImportDefinition based on members are supported. Use ReflectionModelServices.IsImportingParameter to determine whether a given import definition is based on a member or a parameter..
- /// </summary>
- internal static string ReflectionModel_InvalidMemberImportDefinition {
- get {
- return ResourceManager.GetString("ReflectionModel_InvalidMemberImportDefinition", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to ImportDefinition of type '{0}' cannot be used in this context. Only import definitions produced by the ReflectionModelServices.CreateImportDefinition based on parameters are supported. Use ReflectionModelServices.IsImportingParameter to determine whether a given import definition is based on a member or a parameter..
- /// </summary>
- internal static string ReflectionModel_InvalidParameterImportDefinition {
- get {
- return ResourceManager.GetString("ReflectionModel_InvalidParameterImportDefinition", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to ComposablePartDefinition of type '{0}' cannot be used in this context. Only part definitions produced by the ReflectionModelServices.CreatePartDefinition are supported..
- /// </summary>
- internal static string ReflectionModel_InvalidPartDefinition {
- get {
- return ResourceManager.GetString("ReflectionModel_InvalidPartDefinition", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot create an instance of type '{0}' because a constructor could not be selected for construction. Ensure that the type either has a default constructor, or a single constructor marked with the 'System.ComponentModel.Composition.ImportingConstructorAttribute'..
- /// </summary>
- internal static string ReflectionModel_PartConstructorMissing {
- get {
- return ResourceManager.GetString("ReflectionModel_PartConstructorMissing", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to An exception occurred while trying to create an instance of type '{0}'..
- /// </summary>
- internal static string ReflectionModel_PartConstructorThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_PartConstructorThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to An exception occurred while calling the 'OnImportsSatisfied' method on type '{0}'..
- /// </summary>
- internal static string ReflectionModel_PartOnImportsSatisfiedThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_PartOnImportsSatisfiedThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to {0} (Types='{1}')..
- /// </summary>
- internal static string TypeCatalog_DisplayNameFormat {
- get {
- return ResourceManager.GetString("TypeCatalog_DisplayNameFormat", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to <Empty>.
- /// </summary>
- internal static string TypeCatalog_Empty {
- get {
- return ResourceManager.GetString("TypeCatalog_Empty", resourceCulture);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Strings.resources b/System.ComponentModel.Composition/Strings.resources
deleted file mode 100644
index a4fb52e..0000000
Binary files a/System.ComponentModel.Composition/Strings.resources and /dev/null differ
diff --git a/System.ComponentModel.Composition/Strings.resx b/System.ComponentModel.Composition/Strings.resx
deleted file mode 100644
index 4031dfb..0000000
--- a/System.ComponentModel.Composition/Strings.resx
+++ /dev/null
@@ -1,408 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
- <!--
- Microsoft ResX Schema
-
- Version 2.0
-
- The primary goals of this format is to allow a simple XML format
- that is mostly human readable. The generation and parsing of the
- various data types are done through the TypeConverter classes
- associated with the data types.
-
- Example:
-
- ... ado.net/XML headers & schema ...
- <resheader name="resmimetype">text/microsoft-resx</resheader>
- <resheader name="version">2.0</resheader>
- <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
- <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
- <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
- <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
- <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
- <value>[base64 mime encoded serialized .NET Framework object]</value>
- </data>
- <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
- <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
- <comment>This is a comment</comment>
- </data>
-
- There are any number of "resheader" rows that contain simple
- name/value pairs.
-
- Each data row contains a name, and value. The row also contains a
- type or mimetype. Type corresponds to a .NET class that support
- text/value conversion through the TypeConverter architecture.
- Classes that don't support this are serialized and stored with the
- mimetype set.
-
- The mimetype is used for serialized objects, and tells the
- ResXResourceReader how to depersist the object. This is currently not
- extensible. For a given mimetype the value must be set accordingly:
-
- Note - application/x-microsoft.net.object.binary.base64 is the format
- that the ResXResourceWriter will generate, however the reader can
- read any of the formats listed below.
-
- mimetype: application/x-microsoft.net.object.binary.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.soap.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.bytearray.base64
- value : The object must be serialized into a byte array
- : using a System.ComponentModel.TypeConverter
- : and then encoded with base64 encoding.
- -->
- <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
- <xsd:element name="root" msdata:IsDataSet="true">
- <xsd:complexType>
- <xsd:choice maxOccurs="unbounded">
- <xsd:element name="metadata">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" />
- </xsd:sequence>
- <xsd:attribute name="name" use="required" type="xsd:string" />
- <xsd:attribute name="type" type="xsd:string" />
- <xsd:attribute name="mimetype" type="xsd:string" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="assembly">
- <xsd:complexType>
- <xsd:attribute name="alias" type="xsd:string" />
- <xsd:attribute name="name" type="xsd:string" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="data">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
- <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
- <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="resheader">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- </xsd:complexType>
- </xsd:element>
- </xsd:choice>
- </xsd:complexType>
- </xsd:element>
- </xsd:schema>
- <resheader name="resmimetype">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name="version">
- <value>2.0</value>
- </resheader>
- <resheader name="reader">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name="writer">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <data name="ArgumentException_EmptyString" xml:space="preserve">
- <value>'{0}' cannot be an empty string ("").</value>
- </data>
- <data name="ArgumentOutOfRange_InvalidEnum" xml:space="preserve">
- <value>The value of argument '{0}' ({1}) is invalid for Enum type '{2}'.</value>
- </data>
- <data name="ArgumentValueType" xml:space="preserve">
- <value>The argument was a value type which is not supported.</value>
- </data>
- <data name="Argument_AssemblyReflectionOnly" xml:space="preserve">
- <value>'{0}' is a reflection-only assembly which is not supported.</value>
- </data>
- <data name="Argument_NullElement" xml:space="preserve">
- <value>'{0}' cannot contain a null (Nothing in Visual Basic) element.</value>
- </data>
- <data name="AssemblyFileNotFoundOrWrongType" xml:space="preserve">
- <value>Assembly file {0} is either not found or not a dll or exe file.</value>
- </data>
- <data name="CardinalityMismatch_NoExports" xml:space="preserve">
- <value>No valid exports were found that match the constraint '{0}', invalid exports may have been rejected.</value>
- </data>
- <data name="CardinalityMismatch_TooManyExports" xml:space="preserve">
- <value>More than one export was found that matches the constraint '{0}'.</value>
- </data>
- <data name="ImportEngine_ComposeTookTooManyIterations" xml:space="preserve">
- <value>The composition failed because it did not complete within '{0:N0}' iterations. This is most likely caused by a cycle in the dependency graph of a part which is marked with a non-shared creation policy.</value>
- </data>
- <data name="ContractMismatch_ExportedValueCannotBeCastToT" xml:space="preserve">
- <value>Cannot cast the underlying exported value of type '{0}' to type '{1}'.</value>
- </data>
- <data name="DirectoryNotFound" xml:space="preserve">
- <value>Directory '{0}' could not be found.</value>
- </data>
- <data name="ReflectionModel_PartConstructorThrewException" xml:space="preserve">
- <value>An exception occurred while trying to create an instance of type '{0}'.</value>
- </data>
- <data name="ReflectionModel_ExportThrewException" xml:space="preserve">
- <value>An exception occurred while trying to get the value of property '{0}'.</value>
- </data>
- <data name="ReflectionModel_PartOnImportsSatisfiedThrewException" xml:space="preserve">
- <value>An exception occurred while calling the 'OnImportsSatisfied' method on type '{0}'.</value>
- </data>
- <data name="ReflectionModel_ImportThrewException" xml:space="preserve">
- <value>An exception occurred while trying to set the value of property '{0}'.</value>
- </data>
- <data name="ExportDefinitionNotOnThisComposablePart" xml:space="preserve">
- <value>{0} did not originate from the ExportDefinitions property on this ComposablePart or its ComposablePartDefinition.</value>
- </data>
- <data name="ReflectionModel_ImportCollectionNotWritable" xml:space="preserve">
- <value>Cannot populate the collection '{0}' because it does not implement ICollection<T> or is read-only. If the collection is not IEnumerable<T> or T[] it must implement ICollection<T> and be either pre-initialized or be writable with a default constructor.</value>
- </data>
- <data name="ReflectionModel_ImportCollectionNull" xml:space="preserve">
- <value>Cannot populate the value of enumerable member '{0}' because it is null (Nothing in Visual Basic). If the collection is not IEnumerable<T> or T[] it must implement ICollection<T> and be either pre-initialized or be writable with a default constructor.</value>
- </data>
- <data name="ImportEngine_PartCycle" xml:space="preserve">
- <value>Cannot compose part '{0}' because a cycle exists in the dependencies between the exports being composed. To break this cycle, consider changing some imports from constructor to property injection.</value>
- </data>
- <data name="ImportDefinitionNotOnThisComposablePart" xml:space="preserve">
- <value>{0} did not originate from the ImportDefinitions property on this ComposablePart or its ComposablePartDefinition.</value>
- </data>
- <data name="ImportNotSetOnPart" xml:space="preserve">
- <value>Could not finishing composing object of type '{0}'. The import '{1}' was not satisfied.</value>
- </data>
- <data name="ReflectionModel_ImportNotWritable" xml:space="preserve">
- <value>Cannot set the value of '{0}' because the member is not writable. If the member is a property, it must have an accessible setter; otherwise, if it is a field, it must not be read-only.</value>
- </data>
- <data name="InternalExceptionMessage" xml:space="preserve">
- <value>Internal error occurred. Additional information: '{0}'.</value>
- </data>
- <data name="InvalidMetadataView" xml:space="preserve">
- <value>The Type '{0}' supplied is not a valid Metadata View.</value>
- </data>
- <data name="InvalidOperationReentrantCompose" xml:space="preserve">
- <value>A call to Compose occurred during a call to Compose on the same CompositionContainer object. Use the IsComposing property on CompositionContainer to ensure a composition is not already in progress before calling Compose.</value>
- </data>
- <data name="MetadataItemNotSupported" xml:space="preserve">
- <value>This export does not support the metadata item '{0}'.</value>
- </data>
- <data name="NotSupportedInterfaceMetadataView" xml:space="preserve">
- <value>Interface '{0}' is not a valid MetadataView; MetadataViews do not support non-public interfaces, and interfaces that contain members that are not properties.</value>
- </data>
- <data name="ReflectionModel_PartConstructorMissing" xml:space="preserve">
- <value>Cannot create an instance of type '{0}' because a constructor could not be selected for construction. Ensure that the type either has a default constructor, or a single constructor marked with the 'System.ComponentModel.Composition.ImportingConstructorAttribute'.</value>
- </data>
- <data name="NotImplemented_NotOverriddenByDerived" xml:space="preserve">
- <value>The {0} member must be overridden by a derived class.</value>
- </data>
- <data name="NotSupportedReadOnlyDictionary" xml:space="preserve">
- <value>The underlying dictionary is read-only.</value>
- </data>
- <data name="ObjectAlreadyInitialized" xml:space="preserve">
- <value>This property cannot be set after the object's public surface has been accessed.</value>
- </data>
- <data name="ObjectMustBeInitialized" xml:space="preserve">
- <value>This object has not been initialized - the property '{0}' must be set.</value>
- </data>
- <data name="ReflectionModel_ImportNotAssignableFromExport" xml:space="preserve">
- <value>The export '{0}' is not assignable to type '{1}'.</value>
- </data>
- <data name="ReflectionModel_ExportNotReadable" xml:space="preserve">
- <value>Cannot get the value of property '{0}', because the member is not readable. The property must have an accessible getter.</value>
- </data>
- <data name="Argument_ElementReflectionOnlyType" xml:space="preserve">
- <value>'{0}' contains a reflection-only type which is not supported.</value>
- </data>
- <data name="InvalidOperation_DefinitionCannotBeRecomposed" xml:space="preserve">
- <value>'definition' cannot be set after Activate has been called because ImportDefinition.IsRecomposable is false.</value>
- </data>
- <data name="Argument_ExportsEmpty" xml:space="preserve">
- <value>'exports' cannot be empty when ImportDefinition.ImportCardinality is ImportCardinality.ExactlyOne.</value>
- </data>
- <data name="Argument_ExportsTooMany" xml:space="preserve">
- <value>'exports' cannot contain more than one element when ImportDefinition.ImportCardinality is ImportCardinality.ZeroOrOne or ImportCardinality.ExactlyOne.</value>
- </data>
- <data name="CompositionElement_UnknownOrigin" xml:space="preserve">
- <value>Unknown Origin</value>
- </data>
- <data name="ImportEngine_PartCannotActivate" xml:space="preserve">
- <value>Cannot activate part '{0}'.</value>
- </data>
- <data name="ImportEngine_PartCannotSetImport" xml:space="preserve">
- <value>Cannot set import '{0}' on part '{1}'.</value>
- </data>
- <data name="ImportEngine_PartCannotGetExportedValue" xml:space="preserve">
- <value>Cannot get export '{0}' from part '{1}'.</value>
- </data>
- <data name="TypeCatalog_Empty" xml:space="preserve">
- <value><Empty></value>
- </data>
- <data name="InvalidOperation_GetExportedValueBeforePrereqImportSet" xml:space="preserve">
- <value>GetExportedValue cannot be called before prerequisite import '{0}' has been set.</value>
- </data>
- <data name="CompositionException_ErrorPrefix" xml:space="preserve">
- <value>Resulting in:</value>
- </data>
- <data name="CompositionException_MultipleErrorsWithMultiplePaths" xml:space="preserve">
- <value>The composition produced multiple composition errors, with {0:N0} root causes. The root causes are provided below.</value>
- </data>
- <data name="CompositionException_ReviewErrorProperty" xml:space="preserve">
- <value>Review the CompositionException.Errors property for more detailed information.</value>
- </data>
- <data name="CompositionException_SingleErrorWithMultiplePaths" xml:space="preserve">
- <value>The composition produced a single composition error, with {0:N0} root causes. The root causes are provided below.</value>
- </data>
- <data name="CompositionException_SingleErrorWithSinglePath" xml:space="preserve">
- <value>The composition produced a single composition error. The root cause is provided below.</value>
- </data>
- <data name="ReflectionModel_ImportCollectionGetThrewException" xml:space="preserve">
- <value>Cannot populate the collection '{0}' because an exception occurred while trying to access the collection value. If the collection is not IEnumerable<T> or T[] it must implement ICollection<T> and be either pre-initialized or be writable with a default constructor.</value>
- </data>
- <data name="ReflectionModel_ImportCollectionAddThrewException" xml:space="preserve">
- <value>Cannot populate the collection '{0}' because an exception occurred while calling the Add method on the type '{1}'.</value>
- </data>
- <data name="ReflectionModel_ImportCollectionClearThrewException" xml:space="preserve">
- <value>Cannot populate the collection '{0}' because an exception occurred while calling the Clear method on the type '{1}'.</value>
- </data>
- <data name="ReflectionModel_ImportCollectionIsReadOnlyThrewException" xml:space="preserve">
- <value>Cannot populate the collection '{0}' because an exception occurred while reading the IsReadOnly property on the type '{1}'.</value>
- </data>
- <data name="ReflectionModel_ImportCollectionConstructionThrewException" xml:space="preserve">
- <value>Cannot populate the collection '{0}' because an exception occurred while calling the default constructor on the type '{1}'.</value>
- </data>
- <data name="CompositionTrace_Discovery_MemberMarkedWithMultipleImportAndImportMany" xml:space="preserve">
- <value>The member or parameter '{0}' is marked with multiple Import and ImportMany attributes. Only the first attribute encountered will be respected.</value>
- </data>
- <data name="Discovery_MetadataContainsValueWithInvalidType" xml:space="preserve">
- <value>Property '{0}' has type '{1}' which is an invalid metadata type. Metadata can only contain values with a type that is available to be embedded at compile-time into attributes. For more details of what types are valid reference section 17.1.3 in the C# specification.</value>
- </data>
- <data name="Discovery_DuplicateMetadataNameValues" xml:space="preserve">
- <value>Member or Type '{0}' contains multiple metadata entries with the name '{1}'. The metadata entries could be coming from the ExportMetadataAttribute or from a property of a custom metadata attribute. Either remove the duplicate entries or enable the metadata entry with name '{1}' to allow multiple entries via the IsMultiple property on ExportMetadataAttribute or AttributeUsage.AllowMultiple on custom metadata attributes.</value>
- </data>
- <data name="Discovery_ReservedMetadataNameUsed" xml:space="preserve">
- <value>Member or Type '{0}' contains a metadata entry with the name '{1}', which is a reserved metadata key name. Either remove this metadata entry or change the name associated with the entry.</value>
- </data>
- <data name="ReflectionModel_InvalidExportDefinition" xml:space="preserve">
- <value>ExportDefinition of type '{0}' cannot be used in this context. Only export definitions produced by the ReflectionModelServices.CreateExportDefinition are supported.</value>
- </data>
- <data name="ImportEngine_PreventedByExistingImport" xml:space="preserve">
- <value>Change in exports prevented by non-recomposable import '{0}' on part '{1}'.</value>
- </data>
- <data name="ReflectionModel_InvalidImportDefinition" xml:space="preserve">
- <value>ImportDefinition of type '{0}' cannot be used in this context. Only import definitions produced by the ReflectionModelServices.CreateImportDefinition are supported.</value>
- </data>
- <data name="ReflectionModel_InvalidPartDefinition" xml:space="preserve">
- <value>ComposablePartDefinition of type '{0}' cannot be used in this context. Only part definitions produced by the ReflectionModelServices.CreatePartDefinition are supported.</value>
- </data>
- <data name="ArgumentOutOfRange_InvalidEnumInSet" xml:space="preserve">
- <value>The value of argument '{0}' ({1}) is not supported. Allowed values are : '{2}'.</value>
- </data>
- <data name="ReflectionModel_InvalidMemberImportDefinition" xml:space="preserve">
- <value>ImportDefinition of type '{0}' cannot be used in this context. Only import definitions produced by the ReflectionModelServices.CreateImportDefinition based on members are supported. Use ReflectionModelServices.IsImportingParameter to determine whether a given import definition is based on a member or a parameter.</value>
- </data>
- <data name="ReflectionModel_InvalidParameterImportDefinition" xml:space="preserve">
- <value>ImportDefinition of type '{0}' cannot be used in this context. Only import definitions produced by the ReflectionModelServices.CreateImportDefinition based on parameters are supported. Use ReflectionModelServices.IsImportingParameter to determine whether a given import definition is based on a member or a parameter.</value>
- </data>
- <data name="LazyMemberInfo_AccessorsNull" xml:space="preserve">
- <value>Accessors must not be null (Nothing in Visual Basic).</value>
- </data>
- <data name="LazyMemberInfo_InvalidAccessorOnSimpleMember" xml:space="preserve">
- <value>A member of type '{0}' must have exactly a single accessor of type '{0}'</value>
- </data>
- <data name="LazyMemberinfo_InvalidEventAccessors_AccessorType" xml:space="preserve">
- <value>All event accessors must be methods.</value>
- </data>
- <data name="LazyMemberInfo_InvalidEventAccessors_Cardinality" xml:space="preserve">
- <value>An event must have exactly three accessors.</value>
- </data>
- <data name="LazyMemberinfo_InvalidPropertyAccessors_AccessorType" xml:space="preserve">
- <value>All property accessors must be methods.</value>
- </data>
- <data name="LazyMemberInfo_InvalidPropertyAccessors_Cardinality" xml:space="preserve">
- <value>A property must have exactly two accessors.</value>
- </data>
- <data name="LazyMemberInfo_NoAccessors" xml:space="preserve">
- <value>A member must have at least one accessor.</value>
- </data>
- <data name="LazyServices_LazyResolvesToNull" xml:space="preserve">
- <value>The lazily evaluated value of type '{0}' passed to the ReflectionModelServices API as part of the argument '{1}' must not return null (Nothing in Visual Basic).</value>
- </data>
- <data name="InvalidMetadataValue" xml:space="preserve">
- <value>Metadata can only contain values with a type that is available to be embedded at compile-time into attributes. For more details of what types are valid reference section 17.1.3 in the C# specification.</value>
- </data>
- <data name="ContractMismatch_InvalidCastOnMetadataField" xml:space="preserve">
- <value>Unable to create an Instance of the Metadata view '{0}' because the exporter exported the metadata for the item '{1}' with the value '{2}' as type '{3}' but the view imports it as type '{4}'.</value>
- </data>
- <data name="ContractMismatch_NullReferenceOnMetadataField" xml:space="preserve">
- <value>Unable to create an Instance of the Metadata view '{0}' because the exporter exported the metadata for the item '{1}' with a null value and null is not a valid value for type '{2}'.</value>
- </data>
- <data name="InvalidSetterOnMetadataField" xml:space="preserve">
- <value>The MetadataView '{0}' is invalid because property '{1}' has a property set method.</value>
- </data>
- <data name="CompositionException_ChangesRejected" xml:space="preserve">
- <value>The composition remains unchanged. The changes were rejected because of the following error(s): {0}</value>
- </data>
- <data name="ImportEngine_InvalidStateForRecomposition" xml:space="preserve">
- <value>The ComposablePart of type '{0}' cannot be recomposed because it is in an invalid state. It can only be recomposed if it has already been fully previewed or composed.</value>
- </data>
- <data name="AtomicComposition_AlreadyCompleted" xml:space="preserve">
- <value>The atomicComposition can no longer be changed because the atomicComposition has already been completed.</value>
- </data>
- <data name="AtomicComposition_PartOfAnotherAtomicComposition" xml:space="preserve">
- <value>The atomicComposition contains another inner atomicComposition and cannot be changed until the that inner atomicComposition has been completed.</value>
- </data>
- <data name="AtomicComposition_AlreadyNested" xml:space="preserve">
- <value>The atomicComposition is already contains an inner atomicComposition and cannot contain more than one atomicComposition at a time.</value>
- </data>
- <data name="ReentrantCompose" xml:space="preserve">
- <value>Currently composing another batch in this ComposablePartExportProvider. Only one batch can be composed at a time.</value>
- </data>
- <data name="ReflectionModel_ImportManyOnParameterCanOnlyBeAssigned" xml:space="preserve">
- <value>The importing constructor on type '{0}' is using ImportManyAttribute on parameter '{1}' with a non-assignable type. On constructor parameters the ImportManyAttribute only supports importing into types T[] or IEnumerable<T>.</value>
- </data>
- <data name="CompositionException_ElementPrefix" xml:space="preserve">
- <value>Element: {0}</value>
- </data>
- <data name="CompositionException_OriginSeparator" xml:space="preserve">
- <value>--> </value>
- </data>
- <data name="CompositionTrace_Rejection_DefinitionRejected" xml:space="preserve">
- <value>The ComposablePartDefinition '{0}' has been rejected. {1}</value>
- </data>
- <data name="CompositionTrace_Rejection_DefinitionResurrected" xml:space="preserve">
- <value>The ComposablePartDefinition '{0}' that was previously rejected has been resurrected.</value>
- </data>
- <data name="CompositionTrace_Discovery_AssemblyLoadFailed" xml:space="preserve">
- <value>The catalog '{0}' could not load assembly '{1}'. {2}</value>
- </data>
- <data name="CompositionTrace_Discovery_DefinitionContainsGenericParameters" xml:space="preserve">
- <value>The ComposablePartDefinition '{0}' was ignored because it is an open generic type.</value>
- </data>
- <data name="CompositionTrace_Discovery_DefinitionContainsNoExports" xml:space="preserve">
- <value>The ComposablePartDefinition '{0}' was ignored because it contains no exports.</value>
- </data>
- <data name="CompositionTrace_Discovery_DefinitionMarkedWithPartNotDiscoverableAttribute" xml:space="preserve">
- <value>The ComposablePartDefinition '{0}' was ignored because it was marked with PartNotDiscoverableAttribute.</value>
- </data>
- <data name="CompositionException_MetadataViewInvalidConstructor" xml:space="preserve">
- <value>Unable to create an instance of the Metadata view '{0}' because a constructor could not be selected. Ensure that the type implements a constructor which takes an argument of type IDictionary<string, object>.</value>
- </data>
- <data name="CompositionException_PathsCountSeparator" xml:space="preserve">
- <value>)</value>
- </data>
- <data name="CompositionException_OriginFormat" xml:space="preserve">
- <value> {0} {1}</value>
- </data>
- <data name="TypeCatalog_DisplayNameFormat" xml:space="preserve">
- <value>{0} (Types='{1}').</value>
- </data>
-</root>
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/SuppressMessages.cs b/System.ComponentModel.Composition/SuppressMessages.cs
deleted file mode 100644
index 4c57e17..0000000
--- a/System.ComponentModel.Composition/SuppressMessages.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics.CodeAnalysis;
-
-[assembly: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "System.ComponentModel.Composition.ReflectionModel")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "System")]
-[assembly: SuppressMessage("Microsoft.MSInternal", "CA905:SystemNamespacesRequireApproval", Scope = "namespace", Target = "System.ComponentModel.Composition.ReflectionModel", Justification = "Approved by Framework")]
-
diff --git a/System.ComponentModel.Composition/SuppressMessagesBaselined.cs b/System.ComponentModel.Composition/SuppressMessagesBaselined.cs
deleted file mode 100644
index 3976948..0000000
--- a/System.ComponentModel.Composition/SuppressMessagesBaselined.cs
+++ /dev/null
@@ -1,659 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics.CodeAnalysis;
-
-// The following are untriaged violations, do not add to this list unless you hit a bug in Code Analysis. Any explicitly
-// suppressed violations should either be applied against the member or type itself, or if raised against a namespace,
-// resource or assembly, placed in SuppressMessages.cs.
-
-// Code Analysis Bug: ValidateArgumentsOfPublicMethods should not fire on protected members
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#GetExportsCore(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateExportProvider.#GetExportsCore(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-
-// Code Analysis Bug: ValidateArgumentsOfPublicMethods should not fire on usage of Requires.NotNull
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#AddExportedValue`1(System.ComponentModel.Composition.Hosting.CompositionBatch,System.String,!!0)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#AddPart(System.ComponentModel.Composition.Hosting.CompositionBatch,System.Object)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#ComposeExportedValue`1(System.ComponentModel.Composition.Hosting.CompositionContainer,System.String,!!0)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#ComposeExportedValue`1(System.ComponentModel.Composition.Hosting.CompositionContainer,!!0)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#ComposeParts(System.ComponentModel.Composition.Hosting.CompositionContainer,System.Object[])")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#SatisfyImportsOnce(System.ComponentModel.Composition.ICompositionService,System.Object)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider+CatalogChangeProxy.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#SourceProvider")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartCatalog.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartException.#GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#Compose(System.ComponentModel.Composition.Hosting.CompositionBatch)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExports(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.Export>)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExports`2(System.Collections.Generic.IEnumerable`1<System.Lazy`2<!!0,!!1>>)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExports`1(System.Collections.Generic.IEnumerable`1<System.Lazy`1<!!0>>)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.CompositionError.#.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.CompositionError.#GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition.#IsConstraintSatisfiedBy(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#OnExportsChanged(System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#OnExportsChanging(System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#.ctor(System.ComponentModel.Composition.Hosting.ExportProvider,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#.ctor(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetExportingMember(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetImportingMember(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetImportingParameter(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetPartType(System.ComponentModel.Composition.Primitives.ComposablePartDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#IsDisposalRequired(System.ComponentModel.Composition.Primitives.ComposablePartDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#IsImportingParameter(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-
-// DevDiv 10: 583413 AsmMeta: No longer finds APTCA bit on assemblies
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.Lazy`2", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.AttributedModelServices", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ChangeRejectedException", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.CompositionContractMismatchException", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.CompositionError", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.CompositionException", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.CreationPolicy", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ExportAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ExportMetadataAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ImportAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ImportCardinalityMismatchException", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ImportingConstructorAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ImportManyAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.InheritedExportAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.MetadataAttributeAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.PartCreationPolicyAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.PartMetadataAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.PartNotDiscoverableAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.AdaptingExportProvider", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.AggregateCatalog", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.AggregateExportProvider", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.AssemblyCatalog", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.CompositionBatch", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.CompositionConstants", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ExportedDelegate", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.ExportProvider", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.ImportEngine", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.Export", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ExportDefinition", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ComposablePart", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ComposablePartCatalog", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ComposablePartDefinition", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ComposablePartException", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ImportCardinality", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ImportDefinition", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateCatalog.#.ctor(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartCatalog>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateCatalog.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateCatalog.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateExportProvider.#.ctor(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Hosting.ExportProvider>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateExportProvider.#.ctor(System.ComponentModel.Composition.Hosting.ExportProvider[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateExportProvider.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateExportProvider.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateExportProvider.#GetExportsCore(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AssemblyCatalog.#.ctor(System.Reflection.Assembly,System.ComponentModel.Composition.Primitives.ICompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AssemblyCatalog.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AssemblyCatalog.#GetDisplayName()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AssemblyCatalog.#InnerCatalog")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AssemblyCatalog.#LoadAssembly(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AssemblyCatalogDebuggerProxy.#.ctor(System.ComponentModel.Composition.Hosting.AssemblyCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Assumes+InternalErrorException.#.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Assumes+InternalErrorException.#.ctor(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Assumes.#NotNullOrEmpty(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#AddCompleteAction(System.Action)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#AddRevertAction(System.Action)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#.ctor(System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#ContainsInnerAtomicComposition")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#CopyComplete()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#FinalComplete()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#SetValueInternal(System.Object,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#ThrowIfCompleteed()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#ThrowIfContainsInnerAtomicComposition()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#TryGetValueInternal`1(System.Object,System.Boolean,!!0&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicCompositionExtensions.#AddCompleteActionAllowNull(System.ComponentModel.Composition.Hosting.AtomicComposition,System.Action)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicCompositionExtensions.#AddRevertActionAllowNull(System.ComponentModel.Composition.Hosting.AtomicComposition,System.Action)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedExportDefinition.#Metadata")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedModelDiscovery.#CreatePart(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedModelDiscovery.#GetImportDefinitionCreationInfo(System.ComponentModel.Composition.ReflectionModel.ReflectionItem,System.Reflection.ICustomAttributeProvider)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#AddExportedValue`1(System.ComponentModel.Composition.Hosting.CompositionBatch,System.String,!!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#AddExportedValue`1(System.ComponentModel.Composition.Hosting.CompositionBatch,!!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#ComposeParts(System.ComponentModel.Composition.Hosting.CompositionContainer,System.Object[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#.ctor(System.Type,System.ComponentModel.Composition.PartCreationPolicyAttribute,System.Boolean,System.ComponentModel.Composition.Primitives.ICompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#GetConstructor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#GetExportDefinitions()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#GetImportDefinitions()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#GetLazyPartType()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#HasExports()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#IsDisposalRequired")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#IsPartDiscoverable()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#SelectPartConstructor(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.AttributeServices.#GetAttributes`1(System.Reflection.ICustomAttributeProvider)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.AttributeServices.#GetAttributes`1(System.Reflection.ICustomAttributeProvider,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.AttributeServices.#GetFirstAttribute`1(System.Reflection.ICustomAttributeProvider)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.AttributeServices.#GetFirstAttribute`1(System.Reflection.ICustomAttributeProvider,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.AttributeServices.#IsAttributeDefined`1(System.Reflection.ICustomAttributeProvider)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.AttributeServices.#IsAttributeDefined`1(System.Reflection.ICustomAttributeProvider,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider+CatalogChangeProxy.#.ctor(System.ComponentModel.Composition.Primitives.ComposablePartCatalog,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider+CatalogChangeProxy.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider+CatalogChangeProxy.#Parts")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#.ctor(System.ComponentModel.Composition.Primitives.ComposablePartCatalog,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#DetermineRejection(System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#EnsureCanRun()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#EnsureCanSet`1(!!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#EnsureRunning()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#GetAtomicCompositionQuery(System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#GetComposablePart(System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#GetExportsCore(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#GetSharedPart(System.ComponentModel.Composition.Primitives.ComposablePartDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#IsRejected(System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#OnCatalogChanging(System.Object,System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#OnExportsChangingInternal(System.Object,System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#ReleasePart(System.Object,System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#SetConditionalReferenceForRecomposablePart(System.Object,System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#SourceProvider")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#UpdateAtomicCompositionQuery(System.ComponentModel.Composition.Hosting.AtomicComposition,System.Func`2<System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.Boolean>,System.ComponentModel.Composition.Hosting.CatalogExportProvider+AtomicCompositionQueryState)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#UpdateRejections(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ChangeRejectedException.#Message")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#AsArray`1(System.Collections.Generic.IEnumerable`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1.#Add(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1.#Clear()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1.#.ctor(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1.#IsReadOnly")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObjectList.#Add(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObjectList.#Clear()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObjectList.#.ctor(System.Collections.IList)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObjectList.#IsReadOnly")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#ConcatAllowingNull`1(System.Collections.Generic.IEnumerable`1<!!0>,System.Collections.Generic.IEnumerable`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#Copy`1(System.Collections.Generic.Stack`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#FastAny`1(System.Collections.Generic.IEnumerable`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#ForEach`1(System.Collections.Generic.IEnumerable`1<!!0>,System.Action`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#GetCardinality`1(System.Collections.Generic.IEnumerable`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#GetCollectionElementType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#GetCollectionWrapper(System.Type,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#GetEnumerableElementType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#ToReadOnlyCollection`1(System.Collections.Generic.IEnumerable`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#WhereNotNull`1(System.Collections.Generic.IEnumerable`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePart.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartCatalog.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartCatalog.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartCatalog.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs.#.ctor(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Add(System.ComponentModel.Composition.Primitives.ComposablePartCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Changed")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Changing")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Clear()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#.ctor(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartCatalog>,System.Action`1<System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs>,System.Action`1<System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Contains(System.ComponentModel.Composition.Primitives.ComposablePartCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#CopyTo(System.ComponentModel.Composition.Primitives.ComposablePartCatalog[],System.Int32)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Count")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#GetEnumerator()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#HasChanged")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#OnChanged(System.Object,System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#OnChanging(System.Object,System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#OnContainedCatalogChanged(System.Object,System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#OnContainedCatalogChanging(System.Object,System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#RaiseChangedEvent(System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>>,System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#RaiseChangingEvent(System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>>,System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>>,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Remove(System.ComponentModel.Composition.Primitives.ComposablePartCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#SubscribeToCatalogNotifications(System.ComponentModel.Composition.Primitives.ComposablePartCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#SubscribeToCatalogNotifications(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartCatalog>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#UnsubscribeFromCatalogNotifications(System.ComponentModel.Composition.Primitives.ComposablePartCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#UnsubscribeFromCatalogNotifications(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartCatalog>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartCatalogDebuggerProxy.#.ctor(System.ComponentModel.Composition.Primitives.ComposablePartCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartDefinition.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartException.#.ctor(System.ComponentModel.Composition.CompositionErrorId,System.String,System.ComponentModel.Composition.Primitives.ICompositionElement,System.Exception)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartException.#.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartException.#GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#.ctor(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#Compose(System.ComponentModel.Composition.Hosting.CompositionBatch)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#CreateExport(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#EnsureCanRun()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#EnsureCanSet`1(!!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#EnsureRunning()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#GetExportsCore(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#GetUpdatedPartsList(System.ComponentModel.Composition.Hosting.CompositionBatch)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#Recompose(System.ComponentModel.Composition.Hosting.CompositionBatch,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#SourceProvider")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#ThrowIfDisposed()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionBatch.#AddPart(System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionBatch.#.ctor(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePart>,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePart>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionBatch.#PartsToAdd")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionBatch.#PartsToRemove")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionBatch.#RemovePart(System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionBatch+SingleExportComposablePart.#ImportDefinitions")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#.ctor(System.ComponentModel.Composition.Primitives.ComposablePartCatalog,System.Boolean,System.ComponentModel.Composition.Hosting.ExportProvider[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExport(System.ComponentModel.Composition.Primitives.Export)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExport`1(System.Lazy`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExports(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.Export>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExports`2(System.Collections.Generic.IEnumerable`1<System.Lazy`2<!!0,!!1>>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExports`1(System.Collections.Generic.IEnumerable`1<System.Lazy`1<!!0>>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionContractMismatchException.#.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionContractMismatchException.#.ctor(System.String,System.Exception)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.CompositionElement.#.ctor(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.CompositionElementDebuggerProxy.#.ctor(System.ComponentModel.Composition.Primitives.CompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.CompositionElementExtensions.#GetDisplayNameCore(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionError.#.ctor(System.ComponentModel.Composition.CompositionErrorId,System.String,System.ComponentModel.Composition.Primitives.ICompositionElement,System.Exception)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionError.#.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionError.#Create(System.ComponentModel.Composition.CompositionErrorId,System.ComponentModel.Composition.Primitives.ICompositionElement,System.Exception,System.String,System.Object[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionError.#GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionErrorDebuggerProxy.#.ctor(System.ComponentModel.Composition.CompositionError)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#BuildDefaultMessage()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#CalculatePaths(System.ComponentModel.Composition.CompositionException)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#.ctor(System.String,System.Exception,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.CompositionError>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#Message")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#VisitCompositionException(System.ComponentModel.Composition.CompositionException,System.ComponentModel.Composition.CompositionException+VisitContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#VisitError(System.ComponentModel.Composition.CompositionError,System.ComponentModel.Composition.CompositionException+VisitContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#VisitException(System.Exception,System.ComponentModel.Composition.CompositionException+VisitContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#WriteElementGraph(System.Text.StringBuilder,System.ComponentModel.Composition.Primitives.ICompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#WriteError(System.Text.StringBuilder,System.ComponentModel.Composition.CompositionError)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#WriteHeader(System.Text.StringBuilder,System.Int32,System.Int32)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#WritePath(System.Text.StringBuilder,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.CompositionError>,System.Int32)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#WritePaths(System.Text.StringBuilder,System.Collections.Generic.IEnumerable`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.CompositionError>>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock.#.ctor(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock+CompositionLockHolder.#.ctor(System.ComponentModel.Composition.Hosting.CompositionLock)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock+CompositionLockHolder.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock+EmptyLockHolder.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock.#EnterCompositionLock()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock.#ExitCompositionLock()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionResult.#Errors")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionResult`1.#Errors")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetContractNameFromExport(System.Reflection.MemberInfo,System.ComponentModel.Composition.ExportAttribute)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetContractNameFromImport(System.ComponentModel.Composition.IAttributedImport,System.ComponentModel.Composition.ReflectionModel.ImportType)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetContractTypeFromImport(System.ComponentModel.Composition.IAttributedImport,System.ComponentModel.Composition.ReflectionModel.ImportType)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetDefaultTypeFromMember(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetPartMetadataForType(System.Type,System.ComponentModel.Composition.CreationPolicy)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetRequiredMetadata(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetTypeIdentityFromExport(System.Reflection.MemberInfo,System.ComponentModel.Composition.ExportAttribute)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetTypeIdentityFromImport(System.ComponentModel.Composition.IAttributedImport,System.ComponentModel.Composition.ReflectionModel.ImportType)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#IsRecomposable(System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#IsValidAttributeType(System.Type,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices+MetadataList.#Add(System.Object,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices+MetadataList.#InferArrayType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices+MetadataList.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices+MetadataList.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices+MetadataList.#ToArray()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#TryContributeMetadataValue(System.Collections.Generic.IDictionary`2<System.String,System.Object>,System.String,System.Object,System.Type,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#TryExportMetadataForMember(System.Reflection.MemberInfo,System.Collections.Generic.IDictionary`2<System.String,System.Object>&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#TryFire`1(System.EventHandler`1<!!0>,System.Object,!!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#TryInvoke(System.Action)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#TryInvoke`1(System.Func`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.CompositionTrace.#AssemblyLoadFailed(System.ComponentModel.Composition.Hosting.DirectoryCatalog,System.String,System.Exception)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.CompositionTrace.#PartDefinitionRejected(System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.ComponentModel.Composition.ChangeRejectedException)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#AndAlso`1(System.Linq.Expressions.Expression`1<System.Func`2<!!0,System.Boolean>>,System.Linq.Expressions.Expression`1<System.Func`2<!!0,System.Boolean>>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateConstraint(System.Collections.Generic.IEnumerable`1<System.Collections.Generic.KeyValuePair`2<System.String,System.Type>>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateConstraint(System.String,System.String,System.Collections.Generic.IEnumerable`1<System.Collections.Generic.KeyValuePair`2<System.String,System.Type>>,System.ComponentModel.Composition.CreationPolicy)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateContractConstraintBody(System.String,System.Linq.Expressions.ParameterExpression)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateCreationPolicyContraint(System.ComponentModel.Composition.CreationPolicy,System.Linq.Expressions.ParameterExpression)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateMetadataConstraintBody(System.Collections.Generic.IEnumerable`1<System.Collections.Generic.KeyValuePair`2<System.String,System.Type>>,System.Linq.Expressions.ParameterExpression)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateMetadataContainsKeyExpression(System.Linq.Expressions.ParameterExpression,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateMetadataOfTypeExpression(System.Linq.Expressions.ParameterExpression,System.String,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateMetadataValueEqualsExpression(System.Linq.Expressions.ParameterExpression,System.Object,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateTypeIdentityContraint(System.String,System.Linq.Expressions.ParameterExpression)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition.#.ctor(System.String,System.String,System.Collections.Generic.IEnumerable`1<System.Collections.Generic.KeyValuePair`2<System.String,System.Type>>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.Boolean,System.ComponentModel.Composition.CreationPolicy)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition.#IsConstraintSatisfiedBy(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition.#MatchRequiredMatadata(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#FindArrayElementType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#FindGenericTypeName(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#GetGenericArity(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#GetTypeIdentity(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#GetTypeIdentityFromMethod(System.Reflection.MethodInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#TypeIdentityCache")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteArrayType(System.Text.StringBuilder,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteArrayTypeDimensions(System.Text.StringBuilder,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteByRefType(System.Text.StringBuilder,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteCustomModifiers(System.Text.StringBuilder,System.String,System.Type[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteGenericType(System.Text.StringBuilder,System.Type,System.Boolean,System.Collections.Generic.Queue`1<System.Type>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteGenericTypeName(System.Text.StringBuilder,System.Type,System.Boolean,System.Collections.Generic.Queue`1<System.Type>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteNonGenericType(System.Text.StringBuilder,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WritePointerType(System.Text.StringBuilder,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteType(System.Text.StringBuilder,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteTypeArgumentsString(System.Text.StringBuilder,System.Int32,System.Boolean,System.Collections.Generic.Queue`1<System.Type>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteTypeWithNamespace(System.Text.StringBuilder,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ContractServices.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ContractServices.#TryCast(System.Type,System.Object,System.Object&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#Changed")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#Changing")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#DiffChanges(System.String[],System.String[],System.Collections.Generic.List`1<System.Tuple`2<System.String,System.ComponentModel.Composition.Hosting.AssemblyCatalog>>&,System.Collections.Generic.List`1<System.Tuple`2<System.String,System.ComponentModel.Composition.Hosting.AssemblyCatalog>>&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog+DirectoryCatalogDebuggerProxy.#Assemblies")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog+DirectoryCatalogDebuggerProxy.#.ctor(System.ComponentModel.Composition.Hosting.DirectoryCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#GetDisplayName()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#GetFiles()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#GetFullPath(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#Initialize(System.String,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#LoadedFiles")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#OnChanged(System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#OnChanging(System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#Refresh()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.DisposableReflectionComposablePart.#System.IDisposable.Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.DisposableReflectionComposablePart.#ReleaseInstanceIfNecessary(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ErrorBuilder.#CreateImportCardinalityMismatch(System.ComponentModel.Composition.ImportCardinalityMismatchException,System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExceptionBuilder.#CreateContainsNullElement(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExceptionBuilder.#CreateDiscoveryException(System.String,System.String[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExceptionBuilder.#CreateExportDefinitionNotOnThisComposablePart(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExceptionBuilder.#CreateImportDefinitionNotOnThisComposablePart(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExceptionBuilder.#CreateNotOverriddenByDerived(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExceptionBuilder.#CreateObjectDisposed(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExceptionBuilder.#Format(System.String,System.String[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.Export.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.Export.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.Export.#.ctor(System.ComponentModel.Composition.Primitives.ExportDefinition,System.Func`1<System.Object>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.Export.#GetExportedValueCore()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.Export.#Value")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportAttribute.#.ctor(System.String,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ExportDefinition.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ExportDefinition.#.ctor(System.String,System.Collections.Generic.IDictionary`2<System.String,System.Object>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ExportedDelegate.#ConvertMethodInfoToFuncOrActionType(System.Reflection.MethodInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ExportedDelegate.#CreateDelegate(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ExportedDelegate.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ExportedDelegate.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ExportedDelegate.#.ctor(System.Object,System.Reflection.MethodInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ExportingMember.#EnsureReadable()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ExportingMember.#.ctor(System.ComponentModel.Composition.Primitives.ExportDefinition,System.ComponentModel.Composition.ReflectionModel.ReflectionMember)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ExportingMember.#GetExportedValue(System.Object,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportMetadataAttribute.#.ctor(System.String,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#BuildImportDefinition(System.Type,System.Type,System.String,System.ComponentModel.Composition.Primitives.ImportCardinality)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#ExportsChanged")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#ExportsChanging")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExportCore`2(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExportCore`1(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExportedValueCore`1(System.String,System.ComponentModel.Composition.Primitives.ImportCardinality)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExportedValuesCore`1(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExports(System.Type,System.Type,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExportsCore(System.Type,System.Type,System.String,System.ComponentModel.Composition.Primitives.ImportCardinality)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExportsCore`2(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExportsCore`1(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#TryGetExportsCore(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.Export>&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs.#ChangedContractNames")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs.#.ctor(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#CreateSemiStronglyTypedExport`2(System.ComponentModel.Composition.Primitives.Export)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#CreateSemiStronglyTypedExportFactory(System.Type,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#CreateStronglyTypedExportFactory(System.Type,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#CreateStronglyTypedExportOfT`1(System.ComponentModel.Composition.Primitives.Export)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#CreateStronglyTypedExportOfTM`2(System.ComponentModel.Composition.Primitives.Export)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices+DisposableLazy`2.#System.IDisposable.Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices+DisposableLazy`1.#.ctor(System.Func`1<!0>,System.IDisposable)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices+DisposableLazy`1.#System.IDisposable.Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#GetExportedValueFromLazy`1(System.ComponentModel.Composition.Primitives.Export)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#IsDefaultMetadataViewType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#IsDictionaryConstructorViewType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#AddItemToLocalDictionary(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Object,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#AddLocalToLocalDictionary(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Object,System.Reflection.Emit.LocalBuilder)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#CreateGeneratorForPublicConstructor(System.Reflection.Emit.TypeBuilder,System.Type[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#GetExceptionDataAndStoreInLocal(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#IsBoxingRequiredForValue(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadDouble(System.Reflection.Emit.ILGenerator,System.Double)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadEnumerable(System.Reflection.Emit.ILGenerator,System.Collections.IEnumerable)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadFloat(System.Reflection.Emit.ILGenerator,System.Single)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadInt(System.Reflection.Emit.ILGenerator,System.Int32)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadLong(System.Reflection.Emit.ILGenerator,System.Int64)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadNull(System.Reflection.Emit.ILGenerator)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadString(System.Reflection.Emit.ILGenerator,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadTypeOf(System.Reflection.Emit.ILGenerator,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadValue(System.Reflection.Emit.ILGenerator,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ImportAttribute.#.ctor(System.String,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ImportCardinalityMismatchException.#.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ImportCardinalityMismatchException.#.ctor(System.String,System.Exception)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ImportDefinition.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ImportDefinition.#.ctor(System.String,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ImportDefinition.#IsConstraintSatisfiedBy(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ImportDefinition.#ToString()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+EngineContext.#AddPartManager(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+EngineContext.#Complete()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+EngineContext.#.ctor(System.ComponentModel.Composition.Hosting.ImportEngine,System.ComponentModel.Composition.Hosting.ImportEngine+EngineContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+EngineContext.#RemovePartManager(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#GetEngineContext(System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#GetPartManager(System.ComponentModel.Composition.Primitives.ComposablePart,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#.ctor(System.ComponentModel.Composition.Hosting.ExportProvider,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#InPrerequisiteLoop()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#OnExportsChanging(System.Object,System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+PartManager.#DisposeAllDependencies()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+PartManager.#GetImportedContractNames()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+PartManager.#GetSavedImport(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+PartManager.#.ctor(System.ComponentModel.Composition.Hosting.ImportEngine,System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+PartManager.#SetSavedImport(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Primitives.Export[],System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+PartManager.#State")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+PartManager.#UpdateDisposableDependencies(System.ComponentModel.Composition.Primitives.ImportDefinition,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.Export>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#PreviewImports(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#AddIndexEntries(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#GetAffectedImports(System.ComponentModel.Composition.Primitives.ComposablePart,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#GetAffectedParts(System.Collections.Generic.IEnumerable`1<System.String>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#GetPartsImporting(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#IsAffectedImport(System.ComponentModel.Composition.Primitives.ImportDefinition,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#RemoveIndexEntries(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#UpdateImportIndex()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#ReleaseImports(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#SatisfyImports(System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#SatisfyImportsOnce(System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#StopSatisfyingImports(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#TryPreviewImportsStateMachine(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#TryRecomposeImport(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.Boolean,System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#TryRecomposeImports(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#TrySatisfyImports(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.ComponentModel.Composition.Primitives.ComposablePart,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#TrySatisfyImportsStateMachine(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#TrySatisfyImportSubset(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ImportDefinition>,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ImportingConstructorAttribute.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingItem.#Cast(System.Type,System.ComponentModel.Composition.Primitives.Export)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingItem.#CastExportsToCollectionImportType(System.ComponentModel.Composition.Primitives.Export[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingItem.#.ctor(System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition,System.ComponentModel.Composition.ReflectionModel.ImportType)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingMember.#EnsureCollectionIsWritable(System.Collections.Generic.ICollection`1<System.Object>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingMember.#EnsureWritable()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingMember.#GetNormalizedCollection(System.Type,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingMember.#PopulateCollection(System.Collections.Generic.ICollection`1<System.Object>,System.Collections.IEnumerable)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingMember.#SetCollectionMemberValue(System.Object,System.Collections.IEnumerable)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingMember.#SetSingleMemberValue(System.Object,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ImportManyAttribute.#.ctor(System.String,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportType.#CreateLazyType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportType.#GetStronglyTypedExport(System.ComponentModel.Composition.Primitives.Export)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportType.#.ctor(System.Type,System.ComponentModel.Composition.Primitives.ImportCardinality)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportType.#IsTypeAssignableCollectionType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportType+SpecificLazyType.#.ctor(System.Type,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.Lazy`2.#.ctor(System.Func`1<!0>,!1)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.Lazy`2.#.ctor(System.Func`1<!0>,!1,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.Lazy`2.#.ctor(!1)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.Lazy`2.#.ctor(!1,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#AreAccessorsValid(System.Reflection.MemberTypes,System.Reflection.MemberInfo[],System.String&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#Equals(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#GetAccessors()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#GetHashCode()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#.ctor(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#.ctor(System.Reflection.MemberTypes,System.Reflection.MemberInfo[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#op_Inequality(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#op_Equality(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.LazyServices.#AsLazy`1(!!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.LazyServices.#GetNotNullValue`1(System.Lazy`1<!!0>,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Lock.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Lock.#EnterReadLock()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Lock.#EnterWriteLock()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Lock.#ExitReadLock()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Lock.#ExitWriteLock()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Lock.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataAttributeAttribute.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataServices.#GetValue`1(System.Collections.Generic.IDictionary`2<System.String,System.Object>,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewGenerator.#GenerateFieldAssignmentFromLocalValue(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.FieldBuilder)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewGenerator.#GenerateInterfaceViewProxyType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewGenerator.#GenerateLocalAssignmentFromDefaultAttribute(System.Reflection.Emit.ILGenerator,System.ComponentModel.DefaultValueAttribute[],System.Reflection.Emit.LocalBuilder)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewGenerator.#GenerateLocalAssignmentFromFlag(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewGenerator.#GenerateView(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewGenerator.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewProvider.#GetMetadataView`1(System.Collections.Generic.IDictionary`2<System.String,System.Object>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewProvider.#IsViewTypeValid(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.PartCreationPolicyAttribute.#.ctor(System.ComponentModel.Composition.CreationPolicy)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.PartMetadataAttribute.#.ctor(System.String,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.PartNotDiscoverableAttribute.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReadLock.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#Contains(System.Collections.Generic.KeyValuePair`2<!0,!1>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#ContainsKey(!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#CopyTo(System.Collections.Generic.KeyValuePair`2<!0,!1>[],System.Int32)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#Count")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#GetEnumerator()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#System.Collections.Generic.ICollection`1<System.Collections.Generic.KeyValuePair`2<!0,!1>>.Add(System.Collections.Generic.KeyValuePair`2<!0,!1>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#System.Collections.Generic.ICollection`1<System.Collections.Generic.KeyValuePair`2<!0,!1>>.Clear()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#System.Collections.Generic.ICollection`1<System.Collections.Generic.KeyValuePair`2<!0,!1>>.Remove(System.Collections.Generic.KeyValuePair`2<!0,!1>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#System.Collections.Generic.IDictionary`2<!0,!1>.Add(!0,!1)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#System.Collections.Generic.IDictionary`2<!0,!1>.Remove(!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#System.Collections.IEnumerable.GetEnumerator()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#Keys")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#.ctor(System.Collections.Generic.IDictionary`2<!0,!1>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#Item[!0]")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#TryGetValue(!0,!1&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#Values")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionaryDebuggerProxy`2.#Items")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionaryDebuggerProxy`2.#.ctor(Microsoft.Internal.Collections.ReadOnlyDictionary`2<!0,!1>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#Activate()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#CachedInstance")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#CreateInstance(System.Reflection.ConstructorInfo,System.Object[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#EnsureCardinality(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Primitives.Export[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#EnsureGettable()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#EnsureSettable(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#GetConstructorArguments()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#GetExportedValue(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#GetExportingMemberFromDefinition(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#GetImportingItemFromDefinition(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#GetInstanceActivatingIfNeeded()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#NotifyImportSatisfied()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#.ctor(System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePartDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#.ctor(System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePartDefinition,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#RequiresActivation()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#SetImport(System.ComponentModel.Composition.ReflectionModel.ImportingItem,System.ComponentModel.Composition.Primitives.Export[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#SetNonPrerequisiteImports()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#TryGetImportValue(System.ComponentModel.Composition.Primitives.ImportDefinition,System.Object&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#UseImportedValues`1(System.Collections.Generic.IEnumerable`1<!!0>,System.Action`3<System.ComponentModel.Composition.ReflectionModel.ImportingItem,!!0,System.Object>,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePartDefinition.#ExportDefinitions")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePartDefinition.#GetConstructor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePartDefinition.#ImportDefinitions")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePartDefinition.#Metadata")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePartDefinition.#.ctor(System.ComponentModel.Composition.ReflectionModel.IReflectionPartCreationInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionExtensions.#CreateReflectionProperty(System.Reflection.MethodInfo,System.Reflection.MethodInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionExtensions.#ToLazyMember(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionExtensions.#ToLazyMember(System.ComponentModel.Composition.ReflectionModel.ReflectionMember)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionExtensions.#ToReflectionProperty(System.Reflection.PropertyInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionExtensions.#ToReflectionWritableMember(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionField.#CanWrite")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionField.#GetValue(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionField.#RequiresInstance")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionField.#ReturnType")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionField.#SetValue(System.Object,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionItem.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionMember.#DeclaringType")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionMember.#Name")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionMemberExportDefinition.#GetDisplayName()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionMemberImportDefinition.#GetDisplayName()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionMethod.#RequiresInstance")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionMethod.#ReturnType")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetExportingMember(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetImportingMember(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetImportingParameter(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetPartType(System.ComponentModel.Composition.Primitives.ComposablePartDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#IsDisposalRequired(System.ComponentModel.Composition.Primitives.ComposablePartDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#IsImportingParameter(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices+LazyExportDefinition.#Metadata")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices+ReflectionPartCreationInfo.#GetConstructor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices+ReflectionPartCreationInfo.#GetMetadata()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices+ReflectionPartCreationInfo.#.ctor(System.Lazy`1<System.Type>,System.Boolean,System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ImportDefinition>>,System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>>,System.Lazy`1<System.Collections.Generic.IDictionary`2<System.String,System.Object>>,System.ComponentModel.Composition.Primitives.ICompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionParameter.#GetDisplayName()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionParameter.#Name")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionParameter.#ReturnType")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionParameterImportDefinition.#GetDisplayName()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionParameterImportDefinition.#ToImportingItem()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#CanRead")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#CanWrite")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#GetValue(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#Name")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#.ctor(System.Reflection.MethodInfo,System.Reflection.MethodInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#RequiresInstance")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#ReturnType")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#SetValue(System.Object,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#GetAllProperties(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#GetDisplayName(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#GetDisplayName(System.Type,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#TryGetGenericInterfaceType(System.Type,System.Type,System.Type&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Requires.#IsInMembertypeSet(System.Reflection.MemberTypes,System.String,System.Reflection.MemberTypes)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Requires.#NotNull`1(!!0,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Requires.#NotNullElements`1(System.Collections.Generic.IEnumerable`1<!!0>,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Requires.#NotNullElements`2(System.Collections.Generic.IEnumerable`1<System.Collections.Generic.KeyValuePair`2<!!0,!!1>>,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Requires.#NotNullOrEmpty(System.String,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.SerializableCompositionElement.#.ctor(System.String,System.ComponentModel.Composition.Primitives.ICompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Runtime.Serialization.SerializationServices.#GetValue`1(System.Runtime.Serialization.SerializationInfo,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.StringComparers.#ContractName")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.StringComparers.#MetadataKeyNames")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.TraceSourceTraceWriter.#CanWriteError")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.TraceSourceTraceWriter.#CanWriteInformation")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.TraceSourceTraceWriter.#CanWriteWarning")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.TraceSourceTraceWriter.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.TraceSourceTraceWriter.#WriteEvent(System.Diagnostics.TraceEventType,System.ComponentModel.Composition.Diagnostics.CompositionTraceId,System.String,System.Object[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.TraceWriter.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#CreateIndex()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#GetCandidateParts(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#GetDisplayName()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#GetTypesDisplay()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#PartsInternal")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#.ctor(System.Collections.Generic.IEnumerable`1<System.Type>,System.ComponentModel.Composition.Primitives.ICompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.WeakReferenceCollection`1.#Add(!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.WeakReferenceCollection`1.#AliveItemsToList()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.WeakReferenceCollection`1.#CleanupDeadReferences()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.WeakReferenceCollection`1.#Clear()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.WeakReferenceCollection`1.#IndexOf(!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.WeakReferenceCollection`1.#Remove(!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.WeakReferenceCollection`1.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.WriteLock.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition.#ValidateRequiredMetadata()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyExportDefinition.#Metadata")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#DemandMemberAccess(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#DemandMemberAccessIfNeeded(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#DemandRestrictedMemberAccess(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#SafeCreateInstance(System.Type,System.Object[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#SafeGetValue(System.Reflection.FieldInfo,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#SafeInvoke(System.Reflection.ConstructorInfo,System.Object[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#SafeInvoke(System.Reflection.MethodInfo,System.Object,System.Object[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#SafeSetValue(System.Reflection.FieldInfo,System.Object,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#UnsafePermissionSet(System.Reflection.Assembly)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionPartCreationInfo.#GetConstructor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionPartCreationInfo.#GetMetadata()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionPartCreationInfo.#.ctor(System.Lazy`1<System.Type>,System.Boolean,System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ImportDefinition>>,System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>>,System.Lazy`1<System.Collections.Generic.IDictionary`2<System.String,System.Object>>,System.ComponentModel.Composition.Primitives.ICompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#Assembly(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#IsVisible(System.Reflection.ConstructorInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#IsVisible(System.Reflection.FieldInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#IsVisible(System.Reflection.MethodInfo)")]
-[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "System.ComponentModel.Composition.ChangeRejectedException")]
-[module: SuppressMessage("Microsoft.Usage", "CA2240:ImplementISerializableCorrectly", Scope = "type", Target = "System.ComponentModel.Composition.CompositionException")]
-[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "System.ComponentModel.Composition.CompositionException")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException+CompositionExceptionData.#System.Runtime.Serialization.ISafeSerializationData.CompleteDeserialization(System.Object)")]
-
-
-
diff --git a/System.ComponentModel.Composition/System.ComponentModel.Composition.csproj b/System.ComponentModel.Composition/System.ComponentModel.Composition.csproj
deleted file mode 100644
index 89d3819..0000000
--- a/System.ComponentModel.Composition/System.ComponentModel.Composition.csproj
+++ /dev/null
@@ -1,226 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
- <PropertyGroup>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProductVersion>10.0.0</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{1BBA5101-D4F0-48B8-A5D6-7B23A099DCE3}</ProjectGuid>
- <OutputType>Library</OutputType>
- <RootNamespace>Microsoft.Internal</RootNamespace>
- <AssemblyName>System.ComponentModel.Composition</AssemblyName>
- <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
- <NoStdLib>true</NoStdLib>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>..\bin</OutputPath>
- <DefineConstants>TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
- <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
- <NoWarn>1570;1572;1573;1591;1699</NoWarn>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>none</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>..\bin</OutputPath>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
- <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
- <NoWarn>1570;1572;1573;1591;1699</NoWarn>
- </PropertyGroup>
- <ItemGroup>
- <Reference Include="mscorlib" />
- <Reference Include="System" />
- <Reference Include="System.Core">
- </Reference>
- </ItemGroup>
- <ItemGroup>
- <Compile Include="AssemblyInfo.cs" />
- <Compile Include="Microsoft\Internal\Assumes.cs" />
- <Compile Include="Microsoft\Internal\AttributeServices.cs" />
- <Compile Include="Microsoft\Internal\Collections\CollectionServices.cs" />
- <Compile Include="Microsoft\Internal\Collections\ConditionalWeakTable.cs" />
- <Compile Include="Microsoft\Internal\Collections\CollectionServices.CollectionOfObject.cs" />
- <Compile Include="Microsoft\Internal\Collections\EnumerableCardinality.cs" />
- <Compile Include="Microsoft\Internal\Collections\ReadOnlyDictionary.cs" />
- <Compile Include="Microsoft\Internal\Collections\ReadOnlyDictionaryDebuggerProxy.cs" />
- <Compile Include="Microsoft\Internal\Collections\WeakReferenceCollection.cs" />
- <Compile Include="Microsoft\Internal\ContractServices.cs" />
- <Compile Include="Microsoft\Internal\Assumes.InternalErrorException.cs" />
- <Compile Include="Microsoft\Internal\SilverlightReflectionInvoke.cs" />
- <Compile Include="Microsoft\Internal\GenerationServices.cs" />
- <Compile Include="Microsoft\Internal\LazyServices.cs" />
- <Compile Include="Microsoft\Internal\Lock.cs" />
- <Compile Include="Microsoft\Internal\Lock.Reader.cs" />
- <Compile Include="Microsoft\Internal\Lock.Writer.cs" />
- <Compile Include="Microsoft\Internal\Requires.cs" />
- <Compile Include="Microsoft\Internal\Runtime\Serialization\SerializationServices.cs" />
- <Compile Include="Microsoft\Internal\StringComparers.cs" />
- <Compile Include="Microsoft\Internal\ReflectionServices.cs" />
- <Compile Include="Strings.Designer.cs">
- <AutoGen>True</AutoGen>
- <DesignTime>True</DesignTime>
- <DependentUpon>Strings.resx</DependentUpon>
- <CustomToolNamespace>Microsoft.Internal</CustomToolNamespace>
- </Compile>
- <Compile Include="SuppressMessages.cs" />
- <Compile Include="SuppressMessagesBaselined.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModelServices.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModel\AttributedModelDiscovery.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModel\AttributedPartCreationInfo.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModel\AttributedExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\CompositionTrace.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\CompositionTraceId.cs" />
- <Compile Include="System\ComponentModel\Composition\ConstraintServices.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionContractMismatchException.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionError.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionResultOfT.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.PartCreatorExport.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionLock.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\CompositionTraceSource.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\TraceWriter.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\TraceSourceTraceWriter.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\SilverlightTraceWriter.cs" />
- <Compile Include="System\ComponentModel\Composition\InheritedExportAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportServices.DisposableLazy.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AtomicComposition.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AtomicCompositionExtensions.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionConstants.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.CatalogChangeProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\IPartCreatorImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\PartCreatorExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\PartCreatorParameterImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\PartCreatorMemberImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\IAttributedImport.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportCardinalityMismatchException.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportManyAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ErrorBuilder.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionErrorDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\ExceptionBuilder.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportCardinalityCheckResult.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportServices.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AggregateCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AggregateExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AssemblyCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AssemblyCatalogDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.CatalogExport.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ComposablePartCatalogChangeEventArgs.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ComposablePartCatalogCollection.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ComposablePartExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionBatch.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionBatch.SingleExportComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionContainer.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionServices.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ExportProvider.GetExportOverrides.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ExportsChangeEventArgs.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.RecompositionManager.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.EngineContext.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.PartManager.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\INotifyComposablePartCatalogChanged.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\TypeCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\ICompositionError.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportingConstructorAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\IPartImportsSatisfiedNotification.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataServices.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartCatalogDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartException.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\CompositionElement.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\CompositionElementDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\CompositionElementExtensions.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ContractBasedImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\Export.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ExportedDelegate.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ICompositionElement.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ImportCardinality.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\SerializableCompositionElement.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\DisposableReflectionComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\IReflectionPartCreationInfo.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\LazyMemberInfo.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionImportDefinition.cs" />
- <Compile Include="Microsoft\Internal\ReflectionInvoke.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionItemType.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataViewProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\PartCreationPolicyAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\PartMetadataAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\PartNotDiscoverableAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionExtensions.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportingParameter.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportingItem.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ExportingMember.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportingMember.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportType.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionComposablePartDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMemberExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMemberImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionModelServices.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionParameterImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionWritableMember.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataViewGenerator.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionField.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMember.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionParameter.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionProperty.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionType.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionItem.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMethod.cs" />
- <Compile Include="System\ComponentModel\Composition\ChangeRejectedException.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionException.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionErrorId.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionResult.cs" />
- <Compile Include="System\ComponentModel\Composition\ContractNameServices.cs" />
- <Compile Include="System\ComponentModel\Composition\CreationPolicy.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportMetadataAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ICompositionService.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataAttributeAttribute.cs" />
- <Compile Include="System\Lazy.cs" />
- <Compile Include="System\LazyOfTTMetadata.cs" />
- <Compile Include="System\Tuple.cs" />
- </ItemGroup>
- <ItemGroup Condition="'$(IsSilverLight)' != 'true'">
- <Compile Include="System\ComponentModel\Composition\Hosting\DirectoryCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\DirectoryCatalog.DirectoryCatalogDebuggerProxy.cs" />
- </ItemGroup>
- <ItemGroup>
- <EmbeddedResource Include="Strings.resx">
- <SubType>Designer</SubType>
- <Generator>ResXFileCodeGenerator</Generator>
- <LastGenOutput>Strings.Designer.cs</LastGenOutput>
- <CustomToolNamespace>Microsoft.Internal</CustomToolNamespace>
- </EmbeddedResource>
- </ItemGroup>
- <ItemGroup>
- <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
- <Visible>False</Visible>
- <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
- <Install>false</Install>
- </BootstrapperPackage>
- <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
- <Visible>False</Visible>
- <ProductName>.NET Framework 3.5 SP1</ProductName>
- <Install>true</Install>
- </BootstrapperPackage>
- <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
- <Visible>False</Visible>
- <ProductName>Windows Installer 3.1</ProductName>
- <Install>true</Install>
- </BootstrapperPackage>
- </ItemGroup>
- <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-</Project>
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedExportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedExportDefinition.cs
deleted file mode 100644
index 2f8d7e2..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedExportDefinition.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition;
-using System.ComponentModel.Composition.AttributedModel;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.AttributedModel
-{
- internal class AttributedExportDefinition : ExportDefinition
- {
- private readonly AttributedPartCreationInfo _partCreationInfo;
- private readonly MemberInfo _member;
- private readonly ExportAttribute _exportAttribute;
-
- private IDictionary<string, object> _metadata;
-
- public AttributedExportDefinition(AttributedPartCreationInfo partCreationInfo, MemberInfo member, ExportAttribute exportAttribute)
- : base(member.GetContractNameFromExport(exportAttribute), (IDictionary<string, object>)null)
- {
- Assumes.NotNull(partCreationInfo);
- Assumes.NotNull(member);
- Assumes.NotNull(exportAttribute);
-
- this._partCreationInfo = partCreationInfo;
- this._member = member;
- this._exportAttribute = exportAttribute;
- }
-
- public override IDictionary<string, object> Metadata
- {
- get
- {
- if (this._metadata == null)
- {
- IDictionary<string, object> metadata;
- this._member.TryExportMetadataForMember(out metadata);
-
- string typeIdentity = this._member.GetTypeIdentityFromExport(this._exportAttribute);
- metadata.Add(CompositionConstants.ExportTypeIdentityMetadataName, typeIdentity);
-
- var partMetadata = this._partCreationInfo.GetMetadata();
- if (partMetadata != null && partMetadata.ContainsKey(CompositionConstants.PartCreationPolicyMetadataName))
- {
- metadata.Add(CompositionConstants.PartCreationPolicyMetadataName, partMetadata[CompositionConstants.PartCreationPolicyMetadataName]);
- }
-
- this._metadata = metadata;
- }
- return this._metadata;
- }
- }
- }
-
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedModelDiscovery.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedModelDiscovery.cs
deleted file mode 100644
index c100257..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedModelDiscovery.cs
+++ /dev/null
@@ -1,138 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Diagnostics;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.AttributedModel
-{
- internal static class AttributedModelDiscovery
- {
- public static ComposablePartDefinition CreatePartDefinitionIfDiscoverable(Type type, ICompositionElement origin)
- {
- AttributedPartCreationInfo creationInfo = new AttributedPartCreationInfo(type, null, false, origin);
- if (!creationInfo.IsPartDiscoverable())
- {
- return null;
- }
-
- return new ReflectionComposablePartDefinition(creationInfo);
- }
-
- public static ReflectionComposablePartDefinition CreatePartDefinition(Type type, PartCreationPolicyAttribute partCreationPolicy, bool ignoreConstructorImports, ICompositionElement origin)
- {
- Assumes.NotNull(type);
-
- AttributedPartCreationInfo creationInfo = new AttributedPartCreationInfo(type, partCreationPolicy, ignoreConstructorImports, origin);
-
- return new ReflectionComposablePartDefinition(creationInfo);
- }
-
- public static ReflectionComposablePart CreatePart(object attributedPart)
- {
- Assumes.NotNull(attributedPart);
-
- // If given an instance then we want to pass the default composition options because we treat it as a shared part
- // TODO: ICompositionElement Give this def an origin indicating that it was added directly to the ComposablePartExportProvider.
-
- ReflectionComposablePartDefinition definition = AttributedModelDiscovery.CreatePartDefinition(attributedPart.GetType(), PartCreationPolicyAttribute.Shared, true, (ICompositionElement)null);
-
- return new ReflectionComposablePart(definition, attributedPart);
- }
-
- public static ReflectionParameterImportDefinition CreateParameterImportDefinition(ParameterInfo parameter, ICompositionElement origin)
- {
- Requires.NotNull(parameter, "parameter");
-
- ReflectionParameter reflectionParameter = parameter.ToReflectionParameter();
- IAttributedImport attributedImport = AttributedModelDiscovery.GetAttributedImport(reflectionParameter, parameter);
- ImportType importType = new ImportType(reflectionParameter.ReturnType, attributedImport.Cardinality);
-
- if (importType.IsPartCreator)
- {
- return new PartCreatorParameterImportDefinition(
- new Lazy<ParameterInfo>(() => parameter),
- origin,
- new ContractBasedImportDefinition(
- attributedImport.GetContractNameFromImport(importType),
- attributedImport.GetTypeIdentityFromImport(importType),
- CompositionServices.GetRequiredMetadata(importType.MetadataViewType),
- attributedImport.Cardinality,
- false,
- true,
- CreationPolicy.NonShared));
- }
- else
- {
- return new ReflectionParameterImportDefinition(
- new Lazy<ParameterInfo>(() => parameter),
- attributedImport.GetContractNameFromImport(importType),
- attributedImport.GetTypeIdentityFromImport(importType),
- CompositionServices.GetRequiredMetadata(importType.MetadataViewType),
- attributedImport.Cardinality,
- attributedImport.RequiredCreationPolicy,
- origin);
- }
- }
-
- public static ReflectionMemberImportDefinition CreateMemberImportDefinition(MemberInfo member, ICompositionElement origin)
- {
- Requires.NotNull(member, "member");
-
- ReflectionWritableMember reflectionMember = member.ToReflectionWritableMember();
- IAttributedImport attributedImport = AttributedModelDiscovery.GetAttributedImport(reflectionMember, member);
- ImportType importType = new ImportType(reflectionMember.ReturnType, attributedImport.Cardinality);
-
- if (importType.IsPartCreator)
- {
- return new PartCreatorMemberImportDefinition(
- new LazyMemberInfo(member),
- origin,
- new ContractBasedImportDefinition(
- attributedImport.GetContractNameFromImport(importType),
- attributedImport.GetTypeIdentityFromImport(importType),
- CompositionServices.GetRequiredMetadata(importType.MetadataViewType),
- attributedImport.Cardinality,
- attributedImport.AllowRecomposition,
- false,
- CreationPolicy.NonShared));
- }
- else
- {
- return new ReflectionMemberImportDefinition(
- new LazyMemberInfo(member),
- attributedImport.GetContractNameFromImport(importType),
- attributedImport.GetTypeIdentityFromImport(importType),
- CompositionServices.GetRequiredMetadata(importType.MetadataViewType),
- attributedImport.Cardinality,
- attributedImport.AllowRecomposition,
- attributedImport.RequiredCreationPolicy,
- origin);
- }
- }
-
- private static IAttributedImport GetAttributedImport(ReflectionItem item, ICustomAttributeProvider attributeProvider)
- {
- IAttributedImport[] imports = attributeProvider.GetAttributes<IAttributedImport>(false);
-
- // For constructor parameters they may not have an ImportAttribute
- if (imports.Length == 0)
- {
- return new ImportAttribute();
- }
-
- if (imports.Length > 1)
- {
- CompositionTrace.MemberMarkedWithMultipleImportAndImportMany(item);
- }
-
- // Regardless of how many imports, always return the first one
- return imports[0];
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedPartCreationInfo.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedPartCreationInfo.cs
deleted file mode 100644
index 827a709..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedPartCreationInfo.cs
+++ /dev/null
@@ -1,446 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Diagnostics;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.AttributedModel
-{
- internal class AttributedPartCreationInfo : IReflectionPartCreationInfo
- {
- private readonly Type _type;
- private readonly bool _ignoreConstructorImports = false;
- private readonly ICompositionElement _origin;
- private PartCreationPolicyAttribute _partCreationPolicy = null;
- private ConstructorInfo _constructor;
- private IEnumerable<ExportDefinition> _exports;
- private IEnumerable<ImportDefinition> _imports;
- private HashSet<string> _contractNamesOnNonInterfaces;
-
- public AttributedPartCreationInfo(Type type, PartCreationPolicyAttribute partCreationPolicy, bool ignoreConstructorImports, ICompositionElement origin)
- {
- Assumes.NotNull(type);
- this._type = type;
- this._ignoreConstructorImports = ignoreConstructorImports;
- this._partCreationPolicy = partCreationPolicy;
- this._origin = origin;
- }
-
- public Type GetPartType()
- {
- return this._type;
- }
-
- public Lazy<Type> GetLazyPartType()
- {
- return new Lazy<Type>(this.GetPartType, false);
- }
-
- public ConstructorInfo GetConstructor()
- {
- if (this._constructor == null && !this._ignoreConstructorImports)
- {
- this._constructor = SelectPartConstructor(this._type);
- }
- return this._constructor;
- }
-
- public IDictionary<string, object> GetMetadata()
- {
- return this._type.GetPartMetadataForType(this.CreationPolicy);
- }
-
- public IEnumerable<ExportDefinition> GetExports()
- {
- DiscoverExportsAndImports();
- return this._exports;
- }
-
- public IEnumerable<ImportDefinition> GetImports()
- {
- DiscoverExportsAndImports();
- return this._imports;
- }
-
- public bool IsDisposalRequired
- {
- get
- {
- return typeof(IDisposable).IsAssignableFrom(this.GetPartType());
- }
- }
-
- public bool IsPartDiscoverable()
- {
- if (this._type.IsAttributeDefined<PartNotDiscoverableAttribute>())
- {
- CompositionTrace.DefinitionMarkedWithPartNotDiscoverableAttribute(this._type);
- return false;
- }
-
- if (this._type.ContainsGenericParameters)
- {
- CompositionTrace.DefinitionContainsGenericsParameters(this._type);
- return false;
- }
-
- if (!HasExports())
- {
- CompositionTrace.DefinitionContainsNoExports(this._type);
- return false;
- }
-
- return true;
- }
-
- private bool HasExports()
- {
- return GetExportMembers(this._type).Any() ||
- GetInheritedExports(this._type).Any();
- }
-
- string ICompositionElement.DisplayName
- {
- get { return this.GetDisplayName(); }
- }
-
- ICompositionElement ICompositionElement.Origin
- {
- get { return this._origin; }
- }
-
- public override string ToString()
- {
- return GetDisplayName();
- }
-
- private string GetDisplayName()
- {
- return this.GetPartType().GetDisplayName();
- }
-
- private CreationPolicy CreationPolicy
- {
- get
- {
- if (this._partCreationPolicy == null)
- {
- this._partCreationPolicy = this._type.GetFirstAttribute<PartCreationPolicyAttribute>() ?? PartCreationPolicyAttribute.Default;
- }
- return this._partCreationPolicy.CreationPolicy;
- }
- }
-
- private static ConstructorInfo SelectPartConstructor(Type type)
- {
- Assumes.NotNull(type);
-
- if (type.IsAbstract)
- {
- return null;
- }
-
- // Only deal with non-static constructors
- BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
-
- ConstructorInfo[] constructors = type.GetConstructors(flags);
-
- // Should likely only happen for static or abstract types
- if (constructors.Length == 0)
- {
- return null;
- }
-
- // Optimize single default constructor.
- if (constructors.Length == 1 && constructors[0].GetParameters().Length == 0)
- {
- return constructors[0];
- }
-
- // Select the marked constructor if there is exactly one marked
- IEnumerable<ConstructorInfo> importingConstructors = constructors.Where(
- ctor => ctor.IsAttributeDefined<ImportingConstructorAttribute>());
-
- switch (importingConstructors.GetCardinality())
- {
- case EnumerableCardinality.One:
- {
- return importingConstructors.First();
- }
-
- case EnumerableCardinality.TwoOrMore:
- {
- // Return null, the part will error on instantiation.
- return null;
- }
- }
-
- // If there are no marked constructors then select the default constructor
- IEnumerable<ConstructorInfo> defaultConstructors = constructors.Where(
- ctor => ctor.GetParameters().Length == 0);
-
- // There should only ever be zero or one default constructors
- return defaultConstructors.SingleOrDefault();
- }
-
- private void DiscoverExportsAndImports()
- {
- // NOTE : in most cases both of these will be null or not null at the same time
- // the only situation when that is not the case is when there was a failure during the previous discovery
- // and one of them ended up not being set. In that case we will force the discovery again so that the same exception is thrown.
- if ((this._exports != null) && (this._imports != null))
- {
- return;
- }
-
- this._exports = GetExportDefinitions();
- this._imports = GetImportDefinitions();
- }
-
- private IEnumerable<ExportDefinition> GetExportDefinitions()
- {
- List<ExportDefinition> exports = new List<ExportDefinition>();
-
- this._contractNamesOnNonInterfaces = new HashSet<string>();
-
- // GetExportMembers should only contain the type itself along with the members declared on it,
- // it should not contain any base types, members on base types or interfaces on the type.
- foreach (MemberInfo member in GetExportMembers(this._type))
- {
- foreach (ExportAttribute exportAttribute in member.GetAttributes<ExportAttribute>())
- {
- var attributedExportDefinition = new AttributedExportDefinition(this, member, exportAttribute);
-
- if (exportAttribute.GetType() == CompositionServices.InheritedExportAttributeType)
- {
- // Any InheritedExports on the type itself are contributed during this pass
- // and we need to do the book keeping for those.
- if (!this._contractNamesOnNonInterfaces.Contains(attributedExportDefinition.ContractName))
- {
- exports.Add(new ReflectionMemberExportDefinition(member.ToLazyMember(), attributedExportDefinition, this));
- this._contractNamesOnNonInterfaces.Add(attributedExportDefinition.ContractName);
- }
- }
- else
- {
- exports.Add(new ReflectionMemberExportDefinition(member.ToLazyMember(), attributedExportDefinition, this));
- }
- }
- }
-
- // GetInheritedExports should only contain InheritedExports on base types or interfaces.
- // The order of types returned here is important because it is used as a
- // priority list of which InhertedExport to choose if multiple exists with
- // the same contract name. Therefore ensure that we always return the types
- // in the hiearchy from most derived to the lowest base type, followed
- // by all the interfaces that this type implements.
- foreach (Type type in GetInheritedExports(this._type))
- {
- foreach (InheritedExportAttribute exportAttribute in type.GetAttributes<InheritedExportAttribute>())
- {
- var attributedExportDefinition = new AttributedExportDefinition(this, type, exportAttribute);
-
- if (!this._contractNamesOnNonInterfaces.Contains(attributedExportDefinition.ContractName))
- {
- exports.Add(new ReflectionMemberExportDefinition(type.ToLazyMember(), attributedExportDefinition, this));
-
- if (!type.IsInterface)
- {
- this._contractNamesOnNonInterfaces.Add(attributedExportDefinition.ContractName);
- }
- }
- }
- }
-
- this._contractNamesOnNonInterfaces = null; // No need to hold this state around any longer
-
- return exports;
- }
-
- private IEnumerable<MemberInfo> GetExportMembers(Type type)
- {
- BindingFlags flags = BindingFlags.DeclaredOnly | BindingFlags.Public |
- BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;
-
- // If the type is abstract only find local static exports
- if (type.IsAbstract)
- {
- flags &= ~BindingFlags.Instance;
- }
- else if (IsExport(type))
- {
- yield return type;
- }
-
- // Walk the fields
- foreach (var member in type.GetFields(flags))
- {
- if (IsExport(member))
- {
- yield return member;
- }
- }
-
- // Walk the properties
- foreach (var member in type.GetProperties(flags))
- {
- if (IsExport(member))
- {
- yield return member;
- }
- }
-
- // Walk the methods
- foreach (var member in type.GetMethods(flags))
- {
- if (IsExport(member))
- {
- yield return member;
- }
- }
- }
-
- private IEnumerable<Type> GetInheritedExports(Type type)
- {
- // If the type is abstract we aren't interested in type level exports
- if (type.IsAbstract)
- {
- yield break;
- }
-
- // The order of types returned here is important because it is used as a
- // priority list of which InhertedExport to choose if multiple exists with
- // the same contract name. Therefore ensure that we always return the types
- // in the hiearchy from most derived to the lowest base type, followed
- // by all the interfaces that this type implements.
-
- Type currentType = type.BaseType;
-
- if (currentType == null)
- {
- yield break;
- }
-
- // Stopping at object instead of null to help with performance. It is a noticable performance
- // gain (~5%) if we don't have to try and pull the attributes we know don't exist on object.
- // We also need the null check in case we're passed a type that doesn't live in the runtime context.
- while (currentType != null && currentType != CompositionServices.ObjectType)
- {
- if (IsInheritedExport(currentType))
- {
- yield return currentType;
- }
- currentType = currentType.BaseType;
- }
-
- foreach (Type iface in type.GetInterfaces())
- {
- if (IsInheritedExport(iface))
- {
- yield return iface;
- }
- }
- }
-
- private static bool IsExport(ICustomAttributeProvider attributeProvider)
- {
- return attributeProvider.IsAttributeDefined<ExportAttribute>(false);
- }
-
- private static bool IsInheritedExport(ICustomAttributeProvider attributedProvider)
- {
- return attributedProvider.IsAttributeDefined<InheritedExportAttribute>(false);
- }
-
- private IEnumerable<ImportDefinition> GetImportDefinitions()
- {
- List<ImportDefinition> imports = new List<ImportDefinition>();
-
- foreach (MemberInfo member in GetImportMembers(this._type))
- {
- ReflectionMemberImportDefinition importDefinition = AttributedModelDiscovery.CreateMemberImportDefinition(member, this);
- imports.Add(importDefinition);
- }
-
- var constructor = this.GetConstructor();
-
- if (constructor != null)
- {
- foreach (ParameterInfo parameter in constructor.GetParameters())
- {
- ReflectionParameterImportDefinition importDefinition = AttributedModelDiscovery.CreateParameterImportDefinition(parameter, this);
- imports.Add(importDefinition);
- }
- }
-
- return imports;
- }
-
- private IEnumerable<MemberInfo> GetImportMembers(Type type)
- {
- if (type.IsAbstract)
- {
- yield break;
- }
-
- foreach (MemberInfo member in GetDeclaredOnlyImportMembers(type))
- {
- yield return member;
- }
-
- // Walk up the type chain until you hit object.
- if (type.BaseType != null)
- {
- Type baseType = type.BaseType;
-
- // Stopping at object instead of null to help with performance. It is a noticable performance
- // gain (~5%) if we don't have to try and pull the attributes we know don't exist on object.
- // We also need the null check in case we're passed a type that doesn't live in the runtime context.
- while (baseType != null && baseType != CompositionServices.ObjectType)
- {
- foreach (MemberInfo member in GetDeclaredOnlyImportMembers(baseType))
- {
- yield return member;
- }
- baseType = baseType.BaseType;
- }
- }
- }
-
- private IEnumerable<MemberInfo> GetDeclaredOnlyImportMembers(Type type)
- {
- BindingFlags flags = BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
-
- // Walk the fields
- foreach (var member in type.GetFields(flags))
- {
- if (IsImport(member))
- {
- yield return member;
- }
- }
-
- // Walk the properties
- foreach (var member in type.GetProperties(flags))
- {
- if (IsImport(member))
- {
- yield return member;
- }
- }
- }
-
- private static bool IsImport(ICustomAttributeProvider attributeProvider)
- {
- return attributeProvider.IsAttributeDefined<IAttributedImport>(false);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModelServices.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModelServices.cs
deleted file mode 100644
index 2d33502..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModelServices.cs
+++ /dev/null
@@ -1,161 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Runtime.Serialization;
-using System.ComponentModel.Composition.AttributedModel;
-using System.Reflection;
-using System.Linq;
-using Microsoft.Internal;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition
-{
- public static class AttributedModelServices
- {
- [SuppressMessage("Microsoft.Design", "CA1004")]
- public static TMetadataView GetMetadataView<TMetadataView>(IDictionary<string, object> metadata)
- {
- Requires.NotNull(metadata, "metadata");
-
- return MetadataViewProvider.GetMetadataView<TMetadataView>(metadata);
- }
-
- public static ComposablePart CreatePart(object attributedPart)
- {
- Requires.NotNull(attributedPart, "attributedPart");
- return AttributedModelDiscovery.CreatePart(attributedPart);
- }
-
- public static ComposablePartDefinition CreatePartDefinition(Type type, ICompositionElement origin)
- {
- Requires.NotNull(type, "type");
- return AttributedModelServices.CreatePartDefinition(type, origin, false);
- }
-
- public static ComposablePartDefinition CreatePartDefinition(Type type, ICompositionElement origin, bool ensureIsDiscoverable)
- {
- Requires.NotNull(type, "type");
- if (ensureIsDiscoverable)
- {
- return AttributedModelDiscovery.CreatePartDefinitionIfDiscoverable(type, origin);
- }
- else
- {
- return AttributedModelDiscovery.CreatePartDefinition(type, null, false, origin);
- }
- }
-
- public static string GetTypeIdentity(Type type)
- {
- Requires.NotNull(type, "type");
-
- return ContractNameServices.GetTypeIdentity(type);
- }
-
- public static string GetTypeIdentity(MethodInfo method)
- {
- Requires.NotNull(method, "method");
-
- return ContractNameServices.GetTypeIdentityFromMethod(method);
- }
-
- public static string GetContractName(Type type)
- {
- return AttributedModelServices.GetTypeIdentity(type);
- }
-
- public static ComposablePart AddExportedValue<T>(this CompositionBatch batch, T exportedValue)
- {
- Requires.NotNull(batch, "batch");
- string contractName = AttributedModelServices.GetContractName(typeof(T));
-
- return batch.AddExportedValue<T>(contractName, exportedValue);
- }
-
- public static void ComposeExportedValue<T>(this CompositionContainer container, T exportedValue)
- {
- Requires.NotNull(container, "container");
-
- CompositionBatch batch = new CompositionBatch();
- batch.AddExportedValue<T>(exportedValue);
- container.Compose(batch);
- }
-
- public static ComposablePart AddExportedValue<T>(this CompositionBatch batch, string contractName, T exportedValue)
- {
- Requires.NotNull(batch, "batch");
-
- string typeIdentity = AttributedModelServices.GetTypeIdentity(typeof(T));
-
- IDictionary<string, object> metadata = new Dictionary<string, object>();
- metadata.Add(CompositionConstants.ExportTypeIdentityMetadataName, typeIdentity);
-
- return batch.AddExport(new Export(contractName, metadata, () => exportedValue));
- }
-
- public static void ComposeExportedValue<T>(this CompositionContainer container, string contractName, T exportedValue)
- {
- Requires.NotNull(container, "container");
-
- CompositionBatch batch = new CompositionBatch();
- batch.AddExportedValue<T>(contractName, exportedValue);
- container.Compose(batch);
- }
-
- public static ComposablePart AddPart(this CompositionBatch batch, object attributedPart)
- {
- Requires.NotNull(batch, "batch");
- Requires.NotNull(attributedPart, "attributedPart");
-
- ComposablePart part = AttributedModelServices.CreatePart(attributedPart);
-
- batch.AddPart(part);
-
- return part;
- }
-
- public static void ComposeParts(this CompositionContainer container, params object[] attributedParts)
- {
- Requires.NotNull(container, "container");
- Requires.NotNullOrNullElements(attributedParts, "attributedParts");
-
- CompositionBatch batch = new CompositionBatch(
- attributedParts.Select(attributedPart => AttributedModelServices.CreatePart(attributedPart)).ToArray(),
- Enumerable.Empty<ComposablePart>());
-
- container.Compose(batch);
- }
-
- /// <summary>
- /// Satisfies the imports of the specified attributed object exactly once and they will not
- /// ever be recomposed.
- /// </summary>
- /// <param name="part">
- /// The attributed object to set the imports.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="attributedPart"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ICompositionService"/> has been disposed of.
- /// </exception>
- public static ComposablePart SatisfyImportsOnce(this ICompositionService compositionService, object attributedPart)
- {
- Requires.NotNull(compositionService, "compositionService");
- Requires.NotNull(attributedPart, "attributedPart");
-
- ComposablePart part = AttributedModelServices.CreatePart(attributedPart);
- compositionService.SatisfyImportsOnce(part);
-
- return part;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ChangeRejectedException.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ChangeRejectedException.cs
deleted file mode 100644
index 3f5da5c..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ChangeRejectedException.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Security.Permissions;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// The exception that is thrown when one or more recoverable errors occur during
- /// composition which results in those changes being rejected.
- /// </summary>
- [Serializable]
- public class ChangeRejectedException : CompositionException
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ChangeRejectedException"/> class.
- /// </summary>
- public ChangeRejectedException()
- : this((string)null, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ChangeRejectedException"/> class.
- /// </summary>
- public ChangeRejectedException(string message)
- : this(message, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ChangeRejectedException"/> class.
- /// </summary>
- public ChangeRejectedException(string message, Exception innerException)
- : base(message, innerException, (IEnumerable<CompositionError>)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ChangeRejectedException"/> class.
- /// </summary>
- /// <param name="errors">List of errors that occured while applying the changes.</param>
- public ChangeRejectedException(IEnumerable<CompositionError> errors)
- : base((string)null, (Exception)null, errors)
- {
- }
-
- /// <summary>
- /// Gets a message that describes the exception.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="ChangeRejectedException"/>.
- /// </value>
- public override string Message
- {
- get
- {
- return string.Format(CultureInfo.CurrentCulture,
- Strings.CompositionException_ChangesRejected,
- base.Message);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionContractMismatchException.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionContractMismatchException.cs
deleted file mode 100644
index 55a8c4d..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionContractMismatchException.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Runtime.Serialization;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// The exception that is thrown when the underlying exported value or metadata of an
- /// <see cref="Lazy{T}"/> or <see cref="Lazy{T, TMetadataView}"/> object cannot be
- /// cast to <c>T</c> or <c>TMetadataView</c>, respectively.
- /// </summary>
- [Serializable]
- public class CompositionContractMismatchException : Exception
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionContractMismatchException"/> class.
- /// </summary>
- public CompositionContractMismatchException()
- : this((string)null, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionContractMismatchException"/> class
- /// with the specified error message.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionContractMismatchException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- public CompositionContractMismatchException(string message)
- : this(message, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionContractMismatchException"/> class
- /// with the specified error message and exception that is the cause of the
- /// exception.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionContractMismatchException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- /// <param name="innerException">
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="CompositionContractMismatchException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.InnerException"/> property to <see langword="null"/>.
- /// </param>
- public CompositionContractMismatchException(string message, Exception innerException)
- : base(message, innerException)
- {
- }
-
-#if !SILVERLIGHT
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionContractMismatchException"/> class
- /// with the specified serialization data.
- /// </summary>
- /// <param name="info">
- /// The <see cref="SerializationInfo"/> that holds the serialized object data about the
- /// <see cref="CompositionContractMismatchException"/>.
- /// </param>
- /// <param name="context">
- /// The <see cref="StreamingContext"/> that contains contextual information about the
- /// source or destination.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="info"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="SerializationException">
- /// <paramref name="info"/> is missing a required value.
- /// </exception>
- /// <exception cref="InvalidCastException">
- /// <paramref name="info"/> contains a value that cannot be cast to the correct type.
- /// </exception>
- [System.Security.SecuritySafeCritical]
- protected CompositionContractMismatchException(SerializationInfo info, StreamingContext context)
- : base(info, context)
- {
- }
-
-#endif
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionError.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionError.cs
deleted file mode 100644
index a85b9f5..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionError.cs
+++ /dev/null
@@ -1,188 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Globalization;
-using System.Security.Permissions;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Represents an error that occurs during composition in a <see cref="CompositionContainer"/>.
- /// </summary>
- [Serializable]
- [DebuggerTypeProxy(typeof(CompositionErrorDebuggerProxy))]
- public class CompositionError : ICompositionError
- {
- private readonly CompositionErrorId _id;
- private readonly string _description;
- private readonly Exception _exception;
-
- private readonly ICompositionElement _element;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionError"/> class
- /// with the specified error message.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set the
- /// <see cref="Description"/> property to an empty string ("").
- /// </param>
- public CompositionError(string message)
- : this(CompositionErrorId.Unknown, message, (ICompositionElement)null, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionError"/> class
- /// with the specified error message and composition element that is the
- /// cause of the composition error.
- /// </summary>
- /// <param name="element">
- /// The <see cref="ICompositionElement"/> that is the cause of the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set
- /// the <see cref="CompositionError.Element"/> property to
- /// <see langword="null"/>.
- /// </param>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set the
- /// <see cref="Description"/> property to an empty string ("").
- /// </param>
- public CompositionError(string message, ICompositionElement element)
- : this(CompositionErrorId.Unknown, message, element, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionError"/> class
- /// with the specified error message and exception that is the cause of the
- /// composition error.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set the
- /// <see cref="Description"/> property to an empty string ("").
- /// </param>
- /// <param name="exception">
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set
- /// the <see cref="CompositionError.Exception"/> property to <see langword="null"/>.
- /// </param>
- public CompositionError(string message, Exception exception)
- : this(CompositionErrorId.Unknown, message, (ICompositionElement)null, exception)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionError"/> class
- /// with the specified error message, and composition element and exception that
- /// is the cause of the composition error.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set the
- /// <see cref="Description"/> property to an empty string ("").
- /// </param>
- /// <param name="element">
- /// The <see cref="ICompositionElement"/> that is the cause of the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set
- /// the <see cref="CompositionError.Element"/> property to
- /// <see langword="null"/>.
- /// </param>
- /// <param name="exception">
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set
- /// the <see cref="CompositionError.Exception"/> property to <see langword="null"/>.
- /// </param>
- public CompositionError(string message, ICompositionElement element, Exception exception)
- : this(CompositionErrorId.Unknown, message, element, exception)
- {
- }
-
- internal CompositionError(CompositionErrorId id, string description, ICompositionElement element, Exception exception)
- {
- _id = id;
- _description = description ?? string.Empty;
- _element = element;
- _exception = exception;
- }
-
- /// <summary>
- /// Gets the composition element that is the cause of the error.
- /// </summary>
- /// <value>
- /// The <see cref="ICompositionElement"/> that is the cause of the
- /// <see cref="CompositionError"/>. The default is <see langword="null"/>.
- /// </value>
- public ICompositionElement Element
- {
- get { return _element; }
- }
-
- /// <summary>
- /// Gets the message that describes the composition error.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionError"/>.
- /// </value>
- public string Description
- {
- get { return _description; }
- }
-
- /// <summary>
- /// Gets the exception that is the underlying cause of the composition error.
- /// </summary>
- /// <value>
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="CompositionError"/>. The default is <see langword="null"/>.
- /// </value>
- public Exception Exception
- {
- get { return _exception; }
- }
-
- CompositionErrorId ICompositionError.Id
- {
- get { return _id; }
- }
-
- Exception ICompositionError.InnerException
- {
- get { return Exception; }
- }
-
- /// <summary>
- /// Returns a string representation of the composition error.
- /// </summary>
- /// <returns>
- /// A <see cref="String"/> containing the <see cref="Description"/> property.
- /// </returns>
- public override string ToString()
- {
- return this.Description;
- }
-
- internal static CompositionError Create(CompositionErrorId id, string format, params object[] parameters)
- {
- return Create(id, (ICompositionElement)null, (Exception)null, format, parameters);
- }
-
- internal static CompositionError Create(CompositionErrorId id, ICompositionElement element, string format, params object[] parameters)
- {
- return Create(id, element, (Exception)null, format, parameters);
- }
-
- internal static CompositionError Create(CompositionErrorId id, ICompositionElement element, Exception exception, string format, params object[] parameters)
- {
- return new CompositionError(id, string.Format(CultureInfo.CurrentCulture, format, parameters), element, exception);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionErrorDebuggerProxy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionErrorDebuggerProxy.cs
deleted file mode 100644
index 9530adb..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionErrorDebuggerProxy.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition
-{
- internal class CompositionErrorDebuggerProxy
- {
- private readonly CompositionError _error;
-
- public CompositionErrorDebuggerProxy(CompositionError error)
- {
- Requires.NotNull(error, "error");
-
- this._error = error;
- }
-
- public string Description
- {
- get { return this._error.Description; }
- }
-
- public Exception Exception
- {
- get { return this._error.Exception; }
- }
-
- public ICompositionElement Element
- {
- get { return this._error.Element; }
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionErrorId.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionErrorId.cs
deleted file mode 100644
index c69dd66..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionErrorId.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition
-{
- internal enum CompositionErrorId : int
- {
- Unknown = 0,
- InvalidExportMetadata,
- RequiredMetadataNotFound,
- UnsupportedExportType,
- ImportNotSetOnPart,
- ImportEngine_ComposeTookTooManyIterations,
- ImportEngine_ImportCardinalityMismatch,
- ImportEngine_PartCycle,
- ImportEngine_PartCannotSetImport,
- ImportEngine_PartCannotGetExportedValue,
- ImportEngine_PartCannotActivate,
- ImportEngine_PreventedByExistingImport,
- ImportEngine_InvalidStateForRecomposition,
- ReflectionModel_PartConstructorMissing,
- ReflectionModel_PartConstructorThrewException,
- ReflectionModel_PartOnImportsSatisfiedThrewException,
- ReflectionModel_ExportNotReadable,
- ReflectionModel_ExportThrewException,
- ReflectionModel_ExportMethodTooManyParameters,
- ReflectionModel_ImportNotWritable,
- ReflectionModel_ImportThrewException,
- ReflectionModel_ImportNotAssignableFromExport,
- ReflectionModel_ImportCollectionNull,
- ReflectionModel_ImportCollectionNotWritable,
- ReflectionModel_ImportCollectionConstructionThrewException,
- ReflectionModel_ImportCollectionGetThrewException,
- ReflectionModel_ImportCollectionIsReadOnlyThrewException,
- ReflectionModel_ImportCollectionClearThrewException,
- ReflectionModel_ImportCollectionAddThrewException,
- ReflectionModel_ImportManyOnParameterCanOnlyBeAssigned,
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionException.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionException.cs
deleted file mode 100644
index 071db1f..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionException.cs
+++ /dev/null
@@ -1,340 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using System.Linq;
-using System.Runtime.Serialization;
-using System.Security.Permissions;
-using System.Text;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition
-{
-
- /// <summary>
- /// The exception that is thrown when one or more errors occur during composition in
- /// a <see cref="CompositionContainer"/>.
- /// </summary>
- [Serializable]
- public class CompositionException : Exception
- {
- const string ErrorsKey = "Errors";
- private ReadOnlyCollection<CompositionError> _errors;
-
-#if CLR40 && !SILVERLIGHT
- [Serializable]
- private struct CompositionExceptionData : ISafeSerializationData
- {
- public CompositionError[] _errors;
-
- void ISafeSerializationData.CompleteDeserialization(object obj)
- {
- CompositionException exception = obj as CompositionException;
-
- exception._errors = new ReadOnlyCollection<CompositionError>(this._errors);
- }
- }
-#endif
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionException"/> class.
- /// </summary>
- public CompositionException()
- : this((string)null, (Exception)null, (IEnumerable<CompositionError>)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionException"/> class
- /// with the specified error message.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- public CompositionException(string message)
- : this(message, (Exception)null, (IEnumerable<CompositionError>)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionException"/> class
- /// with the specified error message and exception that is the cause of the
- /// exception.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- /// <param name="innerException">
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.InnerException"/> property to <see langword="null"/>.
- /// </param>
- public CompositionException(string message, Exception innerException)
- : this(message, innerException, (IEnumerable<CompositionError>)null)
- {
- }
-
- internal CompositionException(CompositionError error)
- : this(new CompositionError[] { error })
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionException"/> class
- /// with the specified errors.
- /// </summary>
- /// <param name="errors">
- /// An <see cref="IEnumerable{T}"/> of <see cref="CompositionError"/> objects
- /// representing the errors that are the cause of the
- /// <see cref="CompositionException"/>; or <see langword="null"/> to set the
- /// <see cref="Errors"/> property to an empty <see cref="IEnumerable{T}"/>.
- /// </param>
- /// <exception cref="ArgumentException">
- /// <paramref name="errors"/> contains an element that is <see langword="null"/>.
- /// </exception>
- public CompositionException(IEnumerable<CompositionError> errors)
- : this((string)null, (Exception)null, errors)
- {
- }
-
- internal CompositionException(string message, Exception innerException, IEnumerable<CompositionError> errors)
- : base(message, innerException)
- {
- Requires.NullOrNotNullElements(errors, "errors");
-#if CLR40 && !SILVERLIGHT
- SerializeObjectState += delegate(object exception, SafeSerializationEventArgs eventArgs)
- {
- var data = new CompositionExceptionData();
- if(this._errors != null)
- {
- data._errors = this._errors.Select(error => new CompositionError(
- ((ICompositionError)error).Id,
- error.Description,
- error.Element.ToSerializableElement(),
- error.Exception)).ToArray();
- }
- else
- {
- data._errors = new CompositionError[0];
- }
-
- eventArgs.AddSerializedState(data);
- };
-#endif
- _errors = new ReadOnlyCollection<CompositionError>(errors == null ? new CompositionError[0] : errors.ToArray<CompositionError>());
- }
-
- /// <summary>
- /// Gets the errors that are the cause of the exception.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of <see cref="CompositionError"/> objects
- /// representing the errors that are the cause of the
- /// <see cref="CompositionException"/>.
- /// </value>
- public ReadOnlyCollection<CompositionError> Errors
- {
- get { return _errors; }
- }
-
- /// <summary>
- /// Gets a message that describes the exception.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionException"/>.
- /// </value>
- public override string Message
- {
- [System.Security.SecuritySafeCritical]
- get
- {
- if (this.Errors.Count == 0)
- { // If there are no errors, then we simply return base.Message,
- // which will either use the default Exception message, or if
- // one was specified; the user supplied message.
-
- return base.Message;
- }
-
- return BuildDefaultMessage();
- }
- }
-
- private string BuildDefaultMessage()
- {
- IEnumerable<IEnumerable<CompositionError>> paths = CalculatePaths(this);
-
- StringBuilder writer = new StringBuilder();
-
- WriteHeader(writer, this.Errors.Count, paths.Count());
- WritePaths(writer, paths);
-
- return writer.ToString();
- }
-
- private static void WriteHeader(StringBuilder writer, int errorsCount, int pathCount)
- {
- if (errorsCount > 1 && pathCount > 1)
- {
- // The composition produced multiple composition errors, with {0} root causes. The root causes are provided below.
- writer.AppendFormat(
- CultureInfo.CurrentCulture,
- Strings.CompositionException_MultipleErrorsWithMultiplePaths,
- pathCount);
- }
- else if (errorsCount == 1 && pathCount > 1)
- {
- // The composition produced a single composition error, with {0} root causes. The root causes are provided below.
- writer.AppendFormat(
- CultureInfo.CurrentCulture,
- Strings.CompositionException_SingleErrorWithMultiplePaths,
- pathCount);
- }
- else
- {
- Assumes.IsTrue(errorsCount == 1);
- Assumes.IsTrue(pathCount == 1);
-
- // The composition produced a single composition error. The root cause is provided below.
- writer.AppendFormat(
- CultureInfo.CurrentCulture,
- Strings.CompositionException_SingleErrorWithSinglePath,
- pathCount);
- }
-
- writer.Append(' ');
- writer.AppendLine(Strings.CompositionException_ReviewErrorProperty);
- }
-
- private static void WritePaths(StringBuilder writer, IEnumerable<IEnumerable<CompositionError>> paths)
- {
- int ordinal = 0;
- foreach (IEnumerable<CompositionError> path in paths)
- {
- ordinal++;
- WritePath(writer, path, ordinal);
- }
- }
-
- private static void WritePath(StringBuilder writer, IEnumerable<CompositionError> path, int ordinal)
- {
- writer.AppendLine();
- writer.Append(ordinal.ToString(CultureInfo.CurrentCulture));
- writer.Append(Strings.CompositionException_PathsCountSeparator);
- writer.Append(' ');
-
- WriteError(writer, path.First());
-
- foreach (CompositionError error in path.Skip(1))
- {
- writer.AppendLine();
- writer.Append(Strings.CompositionException_ErrorPrefix);
- writer.Append(' ');
- WriteError(writer, error);
- }
- }
-
- private static void WriteError(StringBuilder writer, CompositionError error)
- {
- writer.AppendLine(error.Description);
-
- if (error.Element != null)
- {
- WriteElementGraph(writer, error.Element);
- }
- }
-
- private static void WriteElementGraph(StringBuilder writer, ICompositionElement element)
- {
- // Writes the composition element and its origins in the format:
- // Element: Export --> Part --> PartDefinition --> Catalog
-
- writer.AppendFormat(CultureInfo.CurrentCulture, Strings.CompositionException_ElementPrefix, element.DisplayName);
-
- while ((element = element.Origin) != null)
- {
- writer.AppendFormat(CultureInfo.CurrentCulture, Strings.CompositionException_OriginFormat, Strings.CompositionException_OriginSeparator, element.DisplayName);
- }
-
- writer.AppendLine();
- }
-
- private static IEnumerable<IEnumerable<CompositionError>> CalculatePaths(CompositionException exception)
- {
- List<IEnumerable<CompositionError>> paths = new List<IEnumerable<CompositionError>>();
-
- VisitContext context = new VisitContext();
- context.Path = new Stack<CompositionError>();
- context.LeafVisitor = path =>
- {
- // Take a snapshot of the path
- paths.Add(path.Copy());
- };
-
- VisitCompositionException(exception, context);
-
- return paths;
- }
-
- private static void VisitCompositionException(CompositionException exception, VisitContext context)
- {
- foreach (CompositionError error in exception.Errors)
- {
- VisitError(error, context);
- }
-
- if (exception.InnerException != null)
- {
- VisitException(exception.InnerException, context);
- }
- }
-
- private static void VisitError(CompositionError error, VisitContext context)
- {
- context.Path.Push(error);
-
- if (error.Exception == null)
- { // This error is a root cause, so write
- // out the stack from this point
-
- context.LeafVisitor(context.Path);
- }
- else
- {
- VisitException(error.Exception, context);
- }
-
- context.Path.Pop();
- }
-
- private static void VisitException(Exception exception, VisitContext context)
- {
- CompositionException composition = exception as CompositionException;
- if (composition != null)
- {
- VisitCompositionException(composition, context);
- }
- else
- {
- VisitError(new CompositionError(exception.Message, exception.InnerException), context);
- }
- }
-
- private struct VisitContext
- {
- public Stack<CompositionError> Path;
- public Action<Stack<CompositionError>> LeafVisitor;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionResult.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionResult.cs
deleted file mode 100644
index f8c3c49..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionResult.cs
+++ /dev/null
@@ -1,86 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using Microsoft.Internal.Collections;
-using System.ComponentModel.Composition.Hosting;
-
-namespace System.ComponentModel.Composition
-{
- internal struct CompositionResult
- {
- public static readonly CompositionResult SucceededResult = new CompositionResult();
- private readonly IEnumerable<CompositionError> _errors;
-
- public CompositionResult(params CompositionError[] errors)
- : this((IEnumerable<CompositionError>)errors)
- {
- }
-
- public CompositionResult(IEnumerable<CompositionError> errors)
- {
- this._errors = errors;
- }
-
- public bool Succeeded
- {
- get { return this._errors == null || !this._errors.FastAny(); }
- }
-
- public IEnumerable<CompositionError> Errors
- {
- get { return this._errors ?? Enumerable.Empty<CompositionError>(); }
- }
-
- public CompositionResult MergeResult(CompositionResult result)
- {
- if (this.Succeeded)
- {
- return result;
- }
- if (result.Succeeded)
- {
- return this;
- }
- return MergeErrors(result._errors);
- }
-
- public CompositionResult MergeError(CompositionError error)
- {
- return MergeErrors(new CompositionError[] { error });
- }
-
- public CompositionResult MergeErrors(IEnumerable<CompositionError> errors)
- {
- return new CompositionResult(this._errors.ConcatAllowingNull(errors));
- }
-
- public CompositionResult<T> ToResult<T>(T value)
- {
- return new CompositionResult<T>(value, this._errors);
- }
-
- public void ThrowOnErrors()
- {
- ThrowOnErrors(null);
- }
-
- public void ThrowOnErrors(AtomicComposition atomicComposition)
- {
- if (!this.Succeeded)
- {
- if (atomicComposition == null)
- {
- throw new CompositionException(this._errors);
- }
- else
- {
- throw new ChangeRejectedException(this._errors);
- }
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionResultOfT.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionResultOfT.cs
deleted file mode 100644
index 65ee76d..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionResultOfT.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition
-{
- internal struct CompositionResult<T>
- {
- private readonly IEnumerable<CompositionError> _errors;
- private readonly T _value;
-
- public CompositionResult(T value)
- : this(value, (CompositionError[])null)
- {
- }
-
- public CompositionResult(params CompositionError[] errors)
- : this(default(T), (IEnumerable<CompositionError>)errors)
- {
- }
-
- public CompositionResult(IEnumerable<CompositionError> errors)
- : this(default(T), errors)
- {
- }
-
- internal CompositionResult(T value, IEnumerable<CompositionError> errors)
- {
- this._errors = errors;
- this._value = value;
- }
-
- public bool Succeeded
- {
- get { return this._errors == null || !this._errors.FastAny(); }
- }
-
- public IEnumerable<CompositionError> Errors
- {
- get { return this._errors ?? Enumerable.Empty<CompositionError>(); }
- }
-
- /// <summary>
- /// Gets the value from the result, throwing a CompositionException if there are any errors.
- /// </summary>
- public T Value
- {
- get
- {
- ThrowOnErrors();
-
- return this._value;
- }
- }
-
- internal CompositionResult<TValue> ToResult<TValue>()
- {
- return new CompositionResult<TValue>(this._errors);
- }
-
- internal CompositionResult ToResult()
- {
- return new CompositionResult(this._errors);
- }
-
- private void ThrowOnErrors()
- {
- if (!this.Succeeded)
- {
- throw new CompositionException(this._errors);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ConstraintServices.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ConstraintServices.cs
deleted file mode 100644
index 0fd6e66..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ConstraintServices.cs
+++ /dev/null
@@ -1,214 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition
-{
- internal static class ConstraintServices
- {
- // NOTE : these are here as Reflection member search is pretty expensive, and we want that to be done once.
- // Also, making these static would cause this class to fail loading if we rename members of ExportDefinition.
- private static readonly PropertyInfo _exportDefinitionContractNameProperty = typeof(ExportDefinition).GetProperty("ContractName");
- private static readonly PropertyInfo _exportDefinitionMetadataProperty = typeof(ExportDefinition).GetProperty("Metadata");
- private static readonly MethodInfo _metadataContainsKeyMethod = typeof(IDictionary<string, object>).GetMethod("ContainsKey");
- private static readonly MethodInfo _metadataItemMethod = typeof(IDictionary<string, object>).GetMethod("get_Item");
- private static readonly MethodInfo _metadataEqualsMethod = typeof(object).GetMethod("Equals", new Type[] { typeof(object) });
- private static readonly MethodInfo _typeIsInstanceOfTypeMethod = typeof(Type).GetMethod("IsInstanceOfType");
-
- public static Expression<Func<ExportDefinition, bool>> CreateConstraint(IEnumerable<KeyValuePair<string, Type>> requiredMetadata)
- {
- ParameterExpression parameter = Expression.Parameter(typeof(ExportDefinition), "exportDefinition");
- Expression metadataConstraintBody = null;
-
- if (requiredMetadata != null)
- {
- metadataConstraintBody = ConstraintServices.CreateMetadataConstraintBody(requiredMetadata, parameter);
- }
-
- if (metadataConstraintBody != null)
- {
- return Expression.Lambda<Func<ExportDefinition, bool>>(metadataConstraintBody, parameter);
- }
-
- return null;
- }
-
- public static Expression<Func<ExportDefinition, bool>> CreateConstraint(string contractName, string requiredTypeIdentity, IEnumerable<KeyValuePair<string, Type>> requiredMetadata, CreationPolicy requiredCreationPolicy)
- {
- ParameterExpression parameter = Expression.Parameter(typeof(ExportDefinition), "exportDefinition");
-
- Expression constraintBody = ConstraintServices.CreateContractConstraintBody(contractName, parameter);
-
- if (!string.IsNullOrEmpty(requiredTypeIdentity))
- {
- Expression typeIdentityConstraintBody = ConstraintServices.CreateTypeIdentityContraint(requiredTypeIdentity, parameter);
-
- constraintBody = Expression.AndAlso(constraintBody, typeIdentityConstraintBody);
- }
-
- if (requiredMetadata != null)
- {
- Expression metadataConstraintBody = ConstraintServices.CreateMetadataConstraintBody(requiredMetadata, parameter);
- if (metadataConstraintBody != null)
- {
- constraintBody = Expression.AndAlso(constraintBody, metadataConstraintBody);
- }
- }
-
- if (requiredCreationPolicy != CreationPolicy.Any)
- {
- Expression policyConstraintBody = ConstraintServices.CreateCreationPolicyContraint(requiredCreationPolicy, parameter);
-
- constraintBody = Expression.AndAlso(constraintBody, policyConstraintBody);
- }
-
- Expression<Func<ExportDefinition, bool>> constraint = Expression.Lambda<Func<ExportDefinition, bool>>(constraintBody, parameter);
- return constraint;
- }
-
- private static Expression CreateContractConstraintBody(string contractName, ParameterExpression parameter)
- {
- Assumes.NotNull(parameter);
-
- // export.ContractName=<contract>;
- return Expression.Equal(
- Expression.Property(parameter, ConstraintServices._exportDefinitionContractNameProperty),
- Expression.Constant(contractName ?? string.Empty, typeof(string)));
- }
-
- private static Expression CreateMetadataConstraintBody(IEnumerable<KeyValuePair<string, Type>> requiredMetadata, ParameterExpression parameter)
- {
- Assumes.NotNull(requiredMetadata);
- Assumes.NotNull(parameter);
-
- Expression body = null;
- foreach (KeyValuePair<string, Type> requiredMetadataItem in requiredMetadata)
- {
- // export.Metadata.ContainsKey(<metadataItem>)
- Expression metadataItemExpression = CreateMetadataContainsKeyExpression(parameter, requiredMetadataItem.Key);
-
- body = (body != null) ? Expression.AndAlso(body, metadataItemExpression) : metadataItemExpression;
- body = Expression.AndAlso(body, CreateMetadataOfTypeExpression(parameter, requiredMetadataItem.Key, requiredMetadataItem.Value));
- }
-
- return body;
- }
-
- private static Expression CreateCreationPolicyContraint(CreationPolicy policy, ParameterExpression parameter)
- {
- Assumes.IsTrue(policy != CreationPolicy.Any);
- Assumes.NotNull(parameter);
-
- // !definition.Metadata.ContainsKey(CompositionConstants.PartCreationPolicyMetadataName) ||
- // CreationPolicy.Any.Equals(definition.Metadata[CompositionConstants.PartCreationPolicyMetadataName]) ||
- // policy.Equals(definition.Metadata[CompositionConstants.PartCreationPolicyMetadataName]);
-
- return Expression.MakeBinary(ExpressionType.OrElse,
- Expression.MakeBinary(ExpressionType.OrElse,
- Expression.Not(CreateMetadataContainsKeyExpression(parameter, CompositionConstants.PartCreationPolicyMetadataName)),
- CreateMetadataValueEqualsExpression(parameter, CreationPolicy.Any, CompositionConstants.PartCreationPolicyMetadataName)),
- CreateMetadataValueEqualsExpression(parameter, policy, CompositionConstants.PartCreationPolicyMetadataName));
- }
-
- private static Expression CreateTypeIdentityContraint(string requiredTypeIdentity, ParameterExpression parameter)
- {
- Assumes.NotNull(requiredTypeIdentity);
- Assumes.NotNull(parameter);
-
- // definition.Metadata.ContainsKey(CompositionServices.ExportTypeIdentity) &&
- // requiredTypeIdentity.Equals(definition.Metadata[CompositionConstants.ExportTypeIdentityMetadataName]);
-
- return Expression.MakeBinary(ExpressionType.AndAlso,
- CreateMetadataContainsKeyExpression(parameter, CompositionConstants.ExportTypeIdentityMetadataName),
- CreateMetadataValueEqualsExpression(parameter, requiredTypeIdentity, CompositionConstants.ExportTypeIdentityMetadataName));
- }
-
- private static Expression CreateMetadataContainsKeyExpression(ParameterExpression parameter, string constantKey)
- {
- Assumes.NotNull(parameter, constantKey);
-
- // definition.Metadata.ContainsKey(constantKey)
- return Expression.Call(
- Expression.Property(parameter, ConstraintServices._exportDefinitionMetadataProperty),
- ConstraintServices._metadataContainsKeyMethod,
- Expression.Constant(constantKey));
- }
-
- private static Expression CreateMetadataOfTypeExpression(ParameterExpression parameter, string constantKey, Type constantType)
- {
- Assumes.NotNull(parameter, constantKey);
- Assumes.NotNull(parameter, constantType);
-
- // constantType.IsInstanceOfType(definition.Metadata[constantKey])
- return Expression.Call(
- Expression.Constant(constantType, typeof(Type)),
- ConstraintServices._typeIsInstanceOfTypeMethod,
- Expression.Call(
- Expression.Property(parameter, ConstraintServices._exportDefinitionMetadataProperty),
- ConstraintServices._metadataItemMethod,
- Expression.Constant(constantKey))
- );
- }
-
- private static Expression CreateMetadataValueEqualsExpression(ParameterExpression parameter, object constantValue, string metadataName)
- {
- Assumes.NotNull(parameter, constantValue);
-
- // constantValue.Equals(definition.Metadata[CompositionServices.PartCreationPolicyMetadataName])
- return Expression.Call(
- Expression.Constant(constantValue),
- ConstraintServices._metadataEqualsMethod,
- Expression.Call(
- Expression.Property(parameter, ConstraintServices._exportDefinitionMetadataProperty),
- ConstraintServices._metadataItemMethod,
- Expression.Constant(metadataName)));
- }
-
- public static Expression<Func<ExportDefinition, bool>> CreatePartCreatorConstraint(Expression<Func<ExportDefinition, bool>> baseConstraint, ImportDefinition productImportDefinition)
- {
- ParameterExpression exportDefinitionParameter = baseConstraint.Parameters[0];
-
- // exportDefinition.Metadata
- Expression metadataExpression = Expression.Property(exportDefinitionParameter, ConstraintServices._exportDefinitionMetadataProperty);
-
- // exportDefinition.Metadata.ContainsKey("ProductDefinition")
- Expression containsProductExpression = Expression.Call(
- metadataExpression,
- ConstraintServices._metadataContainsKeyMethod,
- Expression.Constant(CompositionConstants.ProductDefinitionMetadataName));
-
- // exportDefinition.Metadata["ProductDefinition"]
- Expression productExportDefinitionExpression = Expression.Call(
- metadataExpression,
- ConstraintServices._metadataItemMethod,
- Expression.Constant(CompositionConstants.ProductDefinitionMetadataName));
-
- // ProductImportDefinition.Contraint((ExportDefinition)exportDefinition.Metadata["ProductDefinition"])
- Expression productMatchExpression =
- Expression.Invoke(productImportDefinition.Constraint,
- Expression.Convert(productExportDefinitionExpression, typeof(ExportDefinition)));
-
- // baseContraint(exportDefinition) &&
- // exportDefinition.Metadata.ContainsKey("ProductDefinition") &&
- // ProductImportDefinition.Contraint((ExportDefinition)exportDefinition.Metadata["ProductDefinition"])
- Expression<Func<ExportDefinition, bool>> constraint =
- Expression.Lambda<Func<ExportDefinition, bool>>(
- Expression.AndAlso(
- baseConstraint.Body,
- Expression.AndAlso(
- containsProductExpression,
- productMatchExpression)),
- exportDefinitionParameter);
-
- return constraint;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ContractNameServices.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ContractNameServices.cs
deleted file mode 100644
index 603f6c9..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ContractNameServices.cs
+++ /dev/null
@@ -1,310 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Reflection;
-using System.Text;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition
-{
- internal static class ContractNameServices
- {
- const char NamespaceSeparator = '.';
- const char ArrayOpeningBracket = '[';
- const char ArrayClosingBracket = ']';
- const char ArraySeparator = ',';
- const char PointerSymbol = '*';
- const char ReferenceSymbol = '&';
- const char GenericArityBackQuote = '`';
- const char NestedClassSeparator = '+';
- const char ContractNameGenericOpeningBracket = '(';
- const char ContractNameGenericClosingBracket = ')';
- const char ContractNameGenericArgumentSeparator = ',';
- const char CustomModifiersSeparator = ' ';
-
- [ThreadStatic]
- private static Dictionary<Type, string> typeIdentityCache;
-
- private static Dictionary<Type, string> TypeIdentityCache
- {
- get
- {
- return typeIdentityCache = typeIdentityCache ?? new Dictionary<Type, string>();
- }
- }
-
- internal static string GetTypeIdentity(Type type)
- {
- Assumes.NotNull(type);
- string typeIdentity = null;
-
- if (!TypeIdentityCache.TryGetValue(type, out typeIdentity))
- {
- if (!type.IsAbstract && type.IsSubclassOf(typeof(Delegate)))
- {
- MethodInfo method = type.GetMethod("Invoke");
- typeIdentity = ContractNameServices.GetTypeIdentityFromMethod(method);
- }
- else
- {
- StringBuilder typeIdentityStringBuilder = new StringBuilder();
- WriteTypeWithNamespace(typeIdentityStringBuilder, type);
- typeIdentity = typeIdentityStringBuilder.ToString();
- }
-
- TypeIdentityCache.Add(type, typeIdentity);
- }
-
- return typeIdentity;
- }
-
- internal static string GetTypeIdentityFromMethod(MethodInfo method)
- {
- StringBuilder methodNameStringBuilder = new StringBuilder();
-
- WriteTypeWithNamespace(methodNameStringBuilder, method.ReturnType);
-
- methodNameStringBuilder.Append("(");
-
- ParameterInfo[] parameters = method.GetParameters();
-
- for (int i = 0; i < parameters.Length; i++)
- {
- if (i != 0)
- {
- methodNameStringBuilder.Append(",");
- }
-
- WriteTypeWithNamespace(methodNameStringBuilder, parameters[i].ParameterType);
- }
- methodNameStringBuilder.Append(")");
-
- return methodNameStringBuilder.ToString();
- }
-
- private static void WriteTypeWithNamespace(StringBuilder typeName, Type type)
- {
- // Writes type with namesapce
- if (!string.IsNullOrEmpty(type.Namespace))
- {
- typeName.Append(type.Namespace);
- typeName.Append(NamespaceSeparator);
- }
- WriteType(typeName, type);
- }
-
- private static void WriteType(StringBuilder typeName, Type type)
- {
- // Writes type name
- if (type.IsGenericType)
- {
- //
- // Reflection format stores all the generic arguments (including the ones for parent types) on the leaf type.
- // These arguments are placed in a queue and are written out based on generic arity (`X) of each type
- //
- Queue<Type> genericTypeArguments = new Queue<Type>(type.GetGenericArguments());
- WriteGenericType(typeName, type, type.IsGenericTypeDefinition, genericTypeArguments);
- Assumes.IsTrue(genericTypeArguments.Count == 0, "Expecting genericTypeArguments queue to be empty.");
- }
- else
- {
- WriteNonGenericType(typeName, type);
- }
- }
-
- private static void WriteNonGenericType(StringBuilder typeName, Type type)
- {
- //
- // Writes non-generic type
- //
- if (type.DeclaringType != null)
- {
- WriteType(typeName, type.DeclaringType);
- typeName.Append(NestedClassSeparator);
- }
- if (type.IsArray)
- {
- WriteArrayType(typeName, type);
- }
- else if (type.IsPointer)
- {
- WritePointerType(typeName, type);
- }
- else if (type.IsByRef)
- {
- WriteByRefType(typeName, type);
- }
- else
- {
- typeName.Append(type.Name);
- }
- }
-
- private static void WriteArrayType(StringBuilder typeName, Type type)
- {
- //
- // Writes array type e.g <TypeName>[]
- // Note that jagged arrays are stored in reverse order
- // e.g. C#: Int32[][,] Reflection: Int32[,][]
- // we are following C# order for arrays
- //
- Type rootElementType = FindArrayElementType(type);
- WriteType(typeName, rootElementType);
- Type elementType = type;
- do
- {
- WriteArrayTypeDimensions(typeName, elementType);
- }
- while ((elementType = elementType.GetElementType()) != null && elementType.IsArray);
- }
-
- private static void WritePointerType(StringBuilder typeName, Type type)
- {
- //
- // Writes pointer type e.g <TypeName>*
- //
- WriteType(typeName, type.GetElementType());
- typeName.Append(PointerSymbol);
- }
-
- private static void WriteByRefType(StringBuilder typeName, Type type)
- {
- //
- // Writes by ref type e.g <TypeName>&
- //
- WriteType(typeName, type.GetElementType());
- typeName.Append(ReferenceSymbol);
- }
-
- private static void WriteArrayTypeDimensions(StringBuilder typeName, Type type)
- {
- //
- // Writes array type dimensions e.g. [,,]
- //
- typeName.Append(ArrayOpeningBracket);
- int rank = type.GetArrayRank();
- for (int i = 1; i < rank; i++)
- {
- typeName.Append(ArraySeparator);
- }
- typeName.Append(ArrayClosingBracket);
- }
-
- private static void WriteGenericType(StringBuilder typeName, Type type, bool isDefinition, Queue<Type> genericTypeArguments)
- {
- //
- // Writes generic type including parent generic types
- // genericTypeArguments contains type arguments obtained from the most nested type
- // isDefinition parameter indicates if we are dealing with generic type definition
- //
- if (type.DeclaringType != null)
- {
- if (type.DeclaringType.IsGenericType)
- {
- WriteGenericType(typeName, type.DeclaringType, isDefinition, genericTypeArguments);
- }
- else
- {
- WriteNonGenericType(typeName, type.DeclaringType);
- }
- typeName.Append(NestedClassSeparator);
- }
- WriteGenericTypeName(typeName, type, isDefinition, genericTypeArguments);
- }
-
- private static void WriteGenericTypeName(StringBuilder typeName, Type type, bool isDefinition, Queue<Type> genericTypeArguments)
- {
- //
- // Writes generic type name, e.g. generic name and generic arguments
- //
- Assumes.IsTrue(type.IsGenericType, "Expecting type to be a generic type");
- int genericArity = GetGenericArity(type);
- string genericTypeName = FindGenericTypeName(type.GetGenericTypeDefinition().Name);
- typeName.Append(genericTypeName);
- WriteTypeArgumentsString(typeName, genericArity, isDefinition, genericTypeArguments);
- }
-
- private static void WriteTypeArgumentsString(StringBuilder typeName, int argumentsCount, bool isDefinition, Queue<Type> genericTypeArguments)
- {
- //
- // Writes type arguments in brackets, e.g. (<contract_name1>, <contract_name2>, ...)
- //
- if (argumentsCount == 0)
- {
- return;
- }
- typeName.Append(ContractNameGenericOpeningBracket);
- for (int i = 0; i < argumentsCount; i++)
- {
- Assumes.IsTrue(genericTypeArguments.Count > 0, "Expecting genericTypeArguments to contain at least one Type");
- Type genericTypeArgument = genericTypeArguments.Dequeue();
- if (!isDefinition)
- {
- WriteTypeWithNamespace(typeName, genericTypeArgument);
- }
- typeName.Append(ContractNameGenericArgumentSeparator);
- }
- typeName.Remove(typeName.Length - 1, 1);
- typeName.Append(ContractNameGenericClosingBracket);
- }
-
- //internal for testability
- internal static void WriteCustomModifiers(StringBuilder typeName, string customKeyword, Type[] types)
- {
- //
- // Writes custom modifiers in the format: customKeyword(<contract_name>,<contract_name>,...)
- //
- typeName.Append(CustomModifiersSeparator);
- typeName.Append(customKeyword);
- Queue<Type> typeArguments = new Queue<Type>(types);
- WriteTypeArgumentsString(typeName, types.Length, false, typeArguments);
- Assumes.IsTrue(typeArguments.Count == 0, "Expecting genericTypeArguments queue to be empty.");
- }
-
- private static Type FindArrayElementType(Type type)
- {
- //
- // Gets array element type by calling GetElementType() until the element is not an array
- //
- Type elementType = type;
- while ((elementType = elementType.GetElementType()) != null && elementType.IsArray) { }
- return elementType;
- }
-
- private static string FindGenericTypeName(string genericName)
- {
- //
- // Gets generic type name omitting the backquote and arity indicator
- // List`1 -> List
- // Arity indicator is returned as output parameter
- //
- int indexOfBackQuote = genericName.IndexOf(GenericArityBackQuote);
- if (indexOfBackQuote > -1)
- {
- genericName = genericName.Substring(0, indexOfBackQuote);
- }
- return genericName;
- }
-
- private static int GetGenericArity(Type type)
- {
- if (type.DeclaringType == null)
- {
- return type.GetGenericArguments().Length;
- }
-
- // The generic arity is equal to the difference in the number of generic arguments
- // from the type and the declaring type.
-
- int delclaringTypeGenericArguments = type.DeclaringType.GetGenericArguments().Length;
- int typeGenericArguments = type.GetGenericArguments().Length;
-
- Assumes.IsTrue(typeGenericArguments >= delclaringTypeGenericArguments);
-
- return typeGenericArguments - delclaringTypeGenericArguments;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CreationPolicy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CreationPolicy.cs
deleted file mode 100644
index 38277c4..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CreationPolicy.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Option placed on a type that controls when the <see cref="CompositionContainer"/> creates
- /// a new instance of a <see cref="ComposablePart"/>.
- /// </summary>
- public enum CreationPolicy : int
- {
- /// <summary>
- /// Let the <see cref="CompositionContainer"/> choose the most appropriate <see cref="CreationPolicy"/>
- /// for the part given the current context. This is the default <see cref="CreationPolicy"/>, with
- /// the <see cref="CompositionContainer"/> choosing <see cref="CreationPolicy.Shared"/> by default
- /// unless the <see cref="ComposablePart"/> or importer requests <see cref="CreationPolicy.NonShared"/>.
- /// </summary>
- Any = 0,
-
- /// <summary>
- /// A single shared instance of the associated <see cref="ComposablePart"/> will be created
- /// by the <see cref="CompositionContainer"/> and shared by all requestors.
- /// </summary>
- Shared = 1,
-
- /// <summary>
- /// A new non-shared instance of the associated <see cref="ComposablePart"/> will be created
- /// by the <see cref="CompositionContainer"/> for every requestor.
- /// </summary>
- NonShared = 2,
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTrace.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTrace.cs
deleted file mode 100644
index b6bdec7..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTrace.cs
+++ /dev/null
@@ -1,106 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Diagnostics
-{
- internal static class CompositionTrace
- {
- internal static void PartDefinitionResurrected(ComposablePartDefinition definition)
- {
- Assumes.NotNull(definition);
-
- if (CompositionTraceSource.CanWriteInformation)
- {
- CompositionTraceSource.WriteInformation(CompositionTraceId.Rejection_DefinitionResurrected,
- Strings.CompositionTrace_Rejection_DefinitionResurrected,
- definition.GetDisplayName());
- }
- }
-
- internal static void PartDefinitionRejected(ComposablePartDefinition definition, ChangeRejectedException exception)
- {
- Assumes.NotNull(definition, exception);
-
- if (CompositionTraceSource.CanWriteWarning)
- {
- CompositionTraceSource.WriteWarning(CompositionTraceId.Rejection_DefinitionRejected,
- Strings.CompositionTrace_Rejection_DefinitionRejected,
- definition.GetDisplayName(),
- exception.Message);
- }
- }
-
-#if !SILVERLIGHT
-
- internal static void AssemblyLoadFailed(DirectoryCatalog catalog, string fileName, Exception exception)
- {
- Assumes.NotNull(catalog, exception);
- Assumes.NotNullOrEmpty(fileName);
-
- if (CompositionTraceSource.CanWriteWarning)
- {
- CompositionTraceSource.WriteWarning(CompositionTraceId.Discovery_AssemblyLoadFailed,
- Strings.CompositionTrace_Discovery_AssemblyLoadFailed,
- catalog.GetDisplayName(),
- fileName,
- exception.Message);
- }
- }
-
-#endif
-
- internal static void DefinitionMarkedWithPartNotDiscoverableAttribute(Type type)
- {
- Assumes.NotNull(type);
-
- if (CompositionTraceSource.CanWriteInformation)
- {
- CompositionTraceSource.WriteInformation(CompositionTraceId.Discovery_DefinitionMarkedWithPartNotDiscoverableAttribute,
- Strings.CompositionTrace_Discovery_DefinitionMarkedWithPartNotDiscoverableAttribute,
- type.GetDisplayName());
- }
- }
-
- internal static void DefinitionContainsGenericsParameters(Type type)
- {
- Assumes.NotNull(type);
-
- if (CompositionTraceSource.CanWriteInformation)
- {
- CompositionTraceSource.WriteInformation(CompositionTraceId.Discovery_DefinitionContainsGenericParameters,
- Strings.CompositionTrace_Discovery_DefinitionContainsGenericParameters,
- type.GetDisplayName());
- }
- }
-
- internal static void DefinitionContainsNoExports(Type type)
- {
- Assumes.NotNull(type);
-
- if (CompositionTraceSource.CanWriteInformation)
- {
- CompositionTraceSource.WriteInformation(CompositionTraceId.Discovery_DefinitionContainsNoExports,
- Strings.CompositionTrace_Discovery_DefinitionContainsNoExports,
- type.GetDisplayName());
- }
- }
-
- internal static void MemberMarkedWithMultipleImportAndImportMany(ReflectionItem item)
- {
- Assumes.NotNull(item);
-
- if (CompositionTraceSource.CanWriteError)
- {
- CompositionTraceSource.WriteError(CompositionTraceId.Discovery_MemberMarkedWithMultipleImportAndImportMany,
- Strings.CompositionTrace_Discovery_MemberMarkedWithMultipleImportAndImportMany,
- item.GetDisplayName());
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTraceId.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTraceId.cs
deleted file mode 100644
index 53e9f85..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTraceId.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition.Diagnostics
-{
- // NOTE: Do not change the trace ids of values that have already shipped,
- // these leak out to TraceListerners which could take a dependency on them.
- // This enum is a ushort deliberately, the maximum value of a trace id is 65535.
- internal enum CompositionTraceId : ushort
- {
- // Rejection
-
- Rejection_DefinitionRejected = 1,
- Rejection_DefinitionResurrected = 2,
-
- Discovery_AssemblyLoadFailed = 3,
- Discovery_DefinitionMarkedWithPartNotDiscoverableAttribute = 4,
- Discovery_DefinitionContainsGenericParameters = 5,
- Discovery_DefinitionContainsNoExports = 6,
- Discovery_MemberMarkedWithMultipleImportAndImportMany = 7,
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTraceSource.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTraceSource.cs
deleted file mode 100644
index d728709..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTraceSource.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Diagnostics
-{
- internal static class CompositionTraceSource
- {
-#if SILVERLIGHT
- private static readonly SilverlightTraceWriter Source = new SilverlightTraceWriter();
-#else
- private static readonly TraceSourceTraceWriter Source = new TraceSourceTraceWriter();
-#endif
-
- public static bool CanWriteInformation
- {
- get { return Source.CanWriteInformation; }
- }
-
- public static bool CanWriteWarning
- {
- get { return Source.CanWriteWarning; }
- }
-
- public static bool CanWriteError
- {
- get { return Source.CanWriteError; }
- }
-
- public static void WriteInformation(CompositionTraceId traceId, string format, params object[] arguments)
- {
- EnsureEnabled(CanWriteInformation);
-
- Source.WriteInformation(traceId, format, arguments);
- }
-
- public static void WriteWarning(CompositionTraceId traceId, string format, params object[] arguments)
- {
- EnsureEnabled(CanWriteWarning);
-
- Source.WriteWarning(traceId, format, arguments);
- }
-
- public static void WriteError(CompositionTraceId traceId, string format, params object[] arguments)
- {
- EnsureEnabled(CanWriteError);
-
- Source.WriteError(traceId, format, arguments);
- }
-
- private static void EnsureEnabled(bool condition)
- {
- Assumes.IsTrue(condition, "To avoid unnecessary work when a trace level has not been enabled, check CanWriteXXX before calling this method.");
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/SilverlightTraceWriter.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/SilverlightTraceWriter.cs
deleted file mode 100644
index 68828d9..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/SilverlightTraceWriter.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if SILVERLIGHT
-
-using System;
-using System.Diagnostics;
-using System.Globalization;
-using System.Text;
-
-namespace System.ComponentModel.Composition.Diagnostics
-{
- internal sealed class SilverlightTraceWriter : TraceWriter
- {
- private static readonly string SourceName = "System.ComponentModel.Composition";
-
- public override bool CanWriteInformation
- {
- get { return false; }
- }
-
- public override bool CanWriteWarning
- {
- get { return Debugger.IsLogging(); }
- }
-
- public override bool CanWriteError
- {
- get { return Debugger.IsLogging(); }
- }
-
- public override void WriteInformation(CompositionTraceId traceId, string format, params object[] arguments)
- {
- WriteEvent(TraceEventType.Information, traceId, format, arguments);
- }
-
- public override void WriteWarning(CompositionTraceId traceId, string format, params object[] arguments)
- {
- WriteEvent(TraceEventType.Warning, traceId, format, arguments);
- }
-
- public override void WriteError(CompositionTraceId traceId, string format, params object[] arguments)
- {
- WriteEvent(TraceEventType.Error, traceId, format, arguments);
- }
-
- private static void WriteEvent(TraceEventType eventType, CompositionTraceId traceId, string format, params object[] arguments)
- {
- if (!Debugger.IsLogging())
- {
- return;
- }
-
- string logMessage = CreateLogMessage(eventType, traceId, format, arguments);
- Debugger.Log(0, null, logMessage);
- }
-
- internal static string CreateLogMessage(TraceEventType eventType, CompositionTraceId traceId, string format, params object[] arguments)
- {
- StringBuilder messageBuilder = new StringBuilder();
-
- // Format taken from TraceListener.TraceEvent in full framework
- messageBuilder.AppendFormat(CultureInfo.InvariantCulture, "{0} {1}: {2} : ",
- SourceName, eventType.ToString(), (int)traceId);
-
- if (arguments == null)
- {
- messageBuilder.Append(format);
- }
- else
- {
- messageBuilder.AppendFormat(CultureInfo.InvariantCulture, format, arguments);
- }
-
- messageBuilder.AppendLine();
-
- return messageBuilder.ToString();
- }
-
- // Copied from TraceEventType in full framework
- internal enum TraceEventType
- {
- Error = 2,
- Warning = 4,
- Information = 8,
- }
- }
-}
-
-#endif
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/TraceSourceTraceWriter.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/TraceSourceTraceWriter.cs
deleted file mode 100644
index 1282002..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/TraceSourceTraceWriter.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if !SILVERLIGHT
-
-using System;
-using System.Diagnostics;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Diagnostics
-{
- // Represents a trace writer that writes to a System.Diagnostics TraceSource
- internal sealed class TraceSourceTraceWriter : TraceWriter
- {
- internal static readonly TraceSource Source = new TraceSource("System.ComponentModel.Composition", SourceLevels.Warning);
-
- public override bool CanWriteInformation
- {
- get { return Source.Switch.ShouldTrace(TraceEventType.Information); }
- }
-
- public override bool CanWriteWarning
- {
- get { return Source.Switch.ShouldTrace(TraceEventType.Warning); }
- }
-
- public override bool CanWriteError
- {
- get { return Source.Switch.ShouldTrace(TraceEventType.Error); }
- }
-
- public override void WriteInformation(CompositionTraceId traceId, string format, params object[] arguments)
- {
- WriteEvent(TraceEventType.Information, traceId, format, arguments);
- }
-
- public override void WriteWarning(CompositionTraceId traceId, string format, params object[] arguments)
- {
- WriteEvent(TraceEventType.Warning, traceId, format, arguments);
- }
-
- public override void WriteError(CompositionTraceId traceId, string format, params object[] arguments)
- {
- WriteEvent(TraceEventType.Error, traceId, format, arguments);
- }
-
- private static void WriteEvent(TraceEventType eventType, CompositionTraceId traceId, string format, params object[] arguments)
- {
- Source.TraceEvent(eventType, (int)traceId, format, arguments);
- }
- }
-}
-
-#endif
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/TraceWriter.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/TraceWriter.cs
deleted file mode 100644
index 4be992a..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/TraceWriter.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-
-using System;
-
-namespace System.ComponentModel.Composition.Diagnostics
-{
- internal abstract class TraceWriter
- {
- public abstract bool CanWriteInformation
- {
- get;
- }
-
- public abstract bool CanWriteWarning
- {
- get;
- }
-
- public abstract bool CanWriteError
- {
- get;
- }
-
- public abstract void WriteInformation(CompositionTraceId traceId, string format, params object[] arguments);
-
- public abstract void WriteWarning(CompositionTraceId traceId, string format, params object[] arguments);
-
- public abstract void WriteError(CompositionTraceId traceId, string format, params object[] arguments);
- }
-}
-
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ErrorBuilder.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ErrorBuilder.cs
deleted file mode 100644
index 83eb9d6..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ErrorBuilder.cs
+++ /dev/null
@@ -1,102 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition
-{
- internal static class ErrorBuilder
- {
- public static CompositionError PreventedByExistingImport(ComposablePart part, ImportDefinition import)
- {
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_PreventedByExistingImport,
- Strings.ImportEngine_PreventedByExistingImport,
- import.ToElement().DisplayName,
- part.ToElement().DisplayName);
- }
-
- public static CompositionError InvalidStateForRecompposition(ComposablePart part)
- {
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_InvalidStateForRecomposition,
- Strings.ImportEngine_InvalidStateForRecomposition,
- part.ToElement().DisplayName);
- }
-
- public static CompositionError ComposeTookTooManyIterations(int maximumNumberOfCompositionIterations)
- {
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_ComposeTookTooManyIterations,
- Strings.ImportEngine_ComposeTookTooManyIterations,
- maximumNumberOfCompositionIterations);
- }
-
- public static CompositionError CreateImportCardinalityMismatch(ImportCardinalityMismatchException exception, ImportDefinition definition)
- {
- Assumes.NotNull(exception, definition);
-
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_ImportCardinalityMismatch,
- exception.Message,
- definition.ToElement(),
- (Exception)null);
- }
-
- public static CompositionError CreatePartCannotActivate(ComposablePart part, Exception innerException)
- {
- Assumes.NotNull(part, innerException);
-
- ICompositionElement element = part.ToElement();
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_PartCannotActivate,
- element,
- innerException,
- Strings.ImportEngine_PartCannotActivate,
- element.DisplayName);
- }
-
- public static CompositionError CreatePartCannotSetImport(ComposablePart part, ImportDefinition definition, Exception innerException)
- {
- Assumes.NotNull(part, definition, innerException);
-
- ICompositionElement element = definition.ToElement();
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_PartCannotSetImport,
- element,
- innerException,
- Strings.ImportEngine_PartCannotSetImport,
- element.DisplayName,
- part.ToElement().DisplayName);
- }
-
- public static CompositionError CreateCannotGetExportedValue(ComposablePart part, ExportDefinition definition, Exception innerException)
- {
- Assumes.NotNull(part, definition, innerException);
-
- ICompositionElement element = definition.ToElement();
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_PartCannotGetExportedValue,
- element,
- innerException,
- Strings.ImportEngine_PartCannotGetExportedValue,
- element.DisplayName,
- part.ToElement().DisplayName);
- }
-
- public static CompositionError CreatePartCycle(ComposablePart part)
- {
- Assumes.NotNull(part);
-
- ICompositionElement element = part.ToElement();
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_PartCycle,
- element,
- Strings.ImportEngine_PartCycle,
- element.DisplayName);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExceptionBuilder.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ExceptionBuilder.cs
deleted file mode 100644
index c790e6c..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExceptionBuilder.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition
-{
- internal static class ExceptionBuilder
- {
- public static Exception CreateDiscoveryException(string messageFormat, params string[] arguments)
- {
- // DiscoveryError (Dev10:602872): This should go through the discovery error reporting when
- // we add a way to report discovery errors properly.
- return new InvalidOperationException(Format(messageFormat, arguments));
- }
-
- public static ArgumentException CreateContainsNullElement(string parameterName)
- {
- Assumes.NotNull(parameterName);
-
- string message = Format(Strings.Argument_NullElement, parameterName);
-
- return new ArgumentException(message, parameterName);
- }
-
- public static ObjectDisposedException CreateObjectDisposed(object instance)
- {
- Assumes.NotNull(instance);
-
- return new ObjectDisposedException(instance.GetType().ToString());
- }
-
- public static NotImplementedException CreateNotOverriddenByDerived(string memberName)
- {
- Assumes.NotNullOrEmpty(memberName);
-
- string message = Format(Strings.NotImplemented_NotOverriddenByDerived, memberName);
-
- return new NotImplementedException(message);
- }
-
- public static ArgumentException CreateExportDefinitionNotOnThisComposablePart(string parameterName)
- {
- Assumes.NotNullOrEmpty(parameterName);
-
- string message = Format(Strings.ExportDefinitionNotOnThisComposablePart, parameterName);
-
- return new ArgumentException(message, parameterName);
- }
-
- public static ArgumentException CreateImportDefinitionNotOnThisComposablePart(string parameterName)
- {
- Assumes.NotNullOrEmpty(parameterName);
-
- string message = Format(Strings.ImportDefinitionNotOnThisComposablePart, parameterName);
-
- return new ArgumentException(message, parameterName);
- }
-
- public static CompositionException CreateCannotGetExportedValue(ComposablePart part, ExportDefinition definition, Exception innerException)
- {
- Assumes.NotNull(part, definition, innerException);
-
- return new CompositionException(
- ErrorBuilder.CreateCannotGetExportedValue(part, definition, innerException));
- }
-
- private static string Format(string format, params string[] arguments)
- {
- return String.Format(CultureInfo.CurrentCulture, format, arguments);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportAttribute.cs
deleted file mode 100644
index ccd8813..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportAttribute.cs
+++ /dev/null
@@ -1,144 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies that a type, property, field, or method provides a particular export.
- /// </summary>
- [SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")]
- [AttributeUsage(AttributeTargets.Class | AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Method,
- AllowMultiple = true, Inherited = false)]
- public class ExportAttribute : Attribute
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type or member marked with this attribute under the default contract name.
- /// </summary>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the type of the
- /// property or field, or the type itself, that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ExportAttribute()
- : this((string)null, (Type)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type or member marked with this attribute under a contract name derived from the
- /// specified type.
- /// </summary>
- /// <param name="contractType">
- /// A <see cref="Type"/> of which to derive the contract name to export the type or
- /// member marked with this attribute, under; or <see langword="null"/> to use the
- /// default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on
- /// <paramref name="contractType"/>.
- /// </para>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the type of the
- /// property or field, or the type itself, that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ExportAttribute(Type contractType)
- : this((string)null, contractType)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type or member marked with this attribute under the specified contract name.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name to export the type or member
- /// marked with this attribute, under; or <see langword="null"/> or an empty string
- /// ("") to use the default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the property or field
- /// type, or the type itself that this is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ExportAttribute(string contractName)
- : this(contractName, (Type)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type or member marked with this attribute under the specified contract name.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name to export the type or member
- /// marked with this attribute, under; or <see langword="null"/> or an empty string
- /// ("") to use the default contract name.
- /// </param>
- /// <param name="contractType">
- /// A <see cref="Type"/> of which to derive the contract name to export the type or
- /// member marked with this attribute, under; or <see langword="null"/> to use the
- /// default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the property or field
- /// type, or the type itself that this is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ExportAttribute(string contractName, Type contractType)
- {
- this.ContractName = contractName;
- this.ContractType = contractType;
- }
-
- /// <summary>
- /// Gets the contract name to export the type or member under.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing the contract name to export the type or member
- /// marked with this attribute, under. The default value is an empty string ("").
- /// </value>
- public string ContractName { get; private set; }
-
- /// <summary>
- /// Get the contract type that is exported by the member that this attribute is attached to.
- /// </summary>
- /// <value>
- /// A <see cref="Type"/> of the export that is be provided. The default value is
- /// <see langword="null"/> which means that the type will be obtained by looking at the type on
- /// the member that this export is attached to.
- /// </value>
- public Type ContractType { get; private set; }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportCardinalityCheckResult.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportCardinalityCheckResult.cs
deleted file mode 100644
index 566726c..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportCardinalityCheckResult.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition
-{
- internal enum ExportCardinalityCheckResult : int
- {
- Match,
- NoExports,
- TooManyExports
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportMetadataAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportMetadataAttribute.cs
deleted file mode 100644
index 1663690..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportMetadataAttribute.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies metadata for a type, property, field, or method marked with the
- /// <see cref="ExportAttribute"/>.
- /// </summary>
- [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Property | AttributeTargets.Method | AttributeTargets.Field,
- AllowMultiple = true, Inherited = false)]
- public sealed class ExportMetadataAttribute : Attribute
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportMetadataAttribute"/> with the
- /// specified name and metadata value.
- /// </summary>
- /// <param name="name">
- /// A <see cref="String"/> containing the name of the metadata value; or
- /// <see langword="null"/> to set the <see cref="Name"/> property to an empty
- /// string ("").
- /// </param>
- /// <param name="value">
- /// An <see cref="object"/> containing the metadata value. This can be
- /// <see langword="null"/>.
- /// </param>
- public ExportMetadataAttribute(string name, object value)
- {
- this.Name = name ?? string.Empty;
- this.Value = value;
- }
-
- /// <summary>
- /// Gets the name of the metadata value.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing the name of the metadata value.
- /// </value>
- public string Name
- {
- get;
- private set;
- }
-
- /// <summary>
- /// Gets the metadata value.
- /// </summary>
- /// <value>
- /// An <see cref="object"/> containing the metadata value.
- /// </value>
- public object Value
- {
- get;
- private set;
- }
-
- public bool IsMultiple
- {
- get;
- set;
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportServices.DisposableLazy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportServices.DisposableLazy.cs
deleted file mode 100644
index be89978..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportServices.DisposableLazy.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using Microsoft.Internal;
-using System.Collections.Generic;
-
-namespace System.ComponentModel.Composition
-{
- partial class ExportServices
- {
- private sealed class DisposableLazy<T, TMetadataView> : Lazy<T, TMetadataView>, IDisposable
- {
- private IDisposable _disposable;
-
- public DisposableLazy(Func<T> valueFactory, TMetadataView metadataView, IDisposable disposable)
- : base(valueFactory, metadataView)
- {
- Assumes.NotNull(disposable);
-
- this._disposable = disposable;
- }
-
- void IDisposable.Dispose()
- {
- this._disposable.Dispose();
- }
- }
-
- private sealed class DisposableLazy<T> : Lazy<T>, IDisposable
- {
- private IDisposable _disposable;
-
- public DisposableLazy(Func<T> valueFactory, IDisposable disposable)
- : base(valueFactory)
- {
- Assumes.NotNull(disposable);
-
- this._disposable = disposable;
- }
-
- void IDisposable.Dispose()
- {
- this._disposable.Dispose();
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportServices.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportServices.cs
deleted file mode 100644
index 79c86a2..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportServices.cs
+++ /dev/null
@@ -1,249 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition
-{
- // Provides helpers for creating and dealing with Exports
- internal static partial class ExportServices
- {
- private static readonly MethodInfo _createStronglyTypedLazyOfTM = typeof(ExportServices).GetMethod("CreateStronglyTypedLazyOfTM", BindingFlags.NonPublic | BindingFlags.Static);
- private static readonly MethodInfo _createStronglyTypedLazyOfT = typeof(ExportServices).GetMethod("CreateStronglyTypedLazyOfT", BindingFlags.NonPublic | BindingFlags.Static);
- private static readonly MethodInfo _createSemiStronglyTypedLazy = typeof(ExportServices).GetMethod("CreateSemiStronglyTypedLazy", BindingFlags.NonPublic | BindingFlags.Static);
- private static readonly MethodInfo _createStronglyTypedExportFactoryOfT = typeof(ExportServices).GetMethod("CreateStronglyTypedExportFactoryOfT", BindingFlags.NonPublic | BindingFlags.Static);
- private static readonly MethodInfo _createStronglyTypedExportFactoryOfTM = typeof(ExportServices).GetMethod("CreateStronglyTypedExportFactoryOfTM", BindingFlags.NonPublic | BindingFlags.Static);
-
- internal static readonly Type DefaultMetadataViewType = typeof(IDictionary<string, object>);
- internal static readonly Type DefaultExportedValueType = typeof(object);
-
- internal static bool IsDefaultMetadataViewType(Type metadataViewType)
- {
- Assumes.NotNull(metadataViewType);
-
- // Consider all types that IDictionary<string, object> derives from, such
- // as ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>
- // and IEnumerable, as default metadata view
- return metadataViewType.IsAssignableFrom(DefaultMetadataViewType);
- }
-
- internal static bool IsDictionaryConstructorViewType(Type metadataViewType)
- {
- Assumes.NotNull(metadataViewType);
-
- // Does the view type have a constructor that is a Dictionary<string, object>
- return metadataViewType.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic,
- Type.DefaultBinder,
- new Type[] { typeof(IDictionary<string, object>) },
- new ParameterModifier[0]) != null;
- }
-
- internal static Func<Export, object> CreateStronglyTypedLazyFactory(Type exportType, Type metadataViewType)
- {
- MethodInfo genericMethod = null;
- if (metadataViewType != null)
- {
- genericMethod = _createStronglyTypedLazyOfTM.MakeGenericMethod(exportType ?? ExportServices.DefaultExportedValueType, metadataViewType);
- }
- else
- {
- genericMethod = _createStronglyTypedLazyOfT.MakeGenericMethod(exportType ?? ExportServices.DefaultExportedValueType);
- }
- Assumes.NotNull(genericMethod);
- return (Func<Export, object>)Delegate.CreateDelegate(typeof(Func<Export, object>), genericMethod);
- }
-
- internal static Func<Export, Lazy<object, object>> CreateSemiStronglyTypedLazyFactory(Type exportType, Type metadataViewType)
- {
- MethodInfo genericMethod = _createSemiStronglyTypedLazy.MakeGenericMethod(
- exportType ?? ExportServices.DefaultExportedValueType,
- metadataViewType ?? ExportServices.DefaultMetadataViewType);
- Assumes.NotNull(genericMethod);
- return (Func<Export, Lazy<object, object>>)Delegate.CreateDelegate(typeof(Func<Export, Lazy<object,object>>), genericMethod);
- }
-
- [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
- internal static Lazy<T, M> CreateStronglyTypedLazyOfTM<T, M>(Export export)
- {
- IDisposable disposable = export as IDisposable;
- if (disposable != null)
- {
- return new DisposableLazy<T, M>(
- () => ExportServices.GetCastedExportedValue<T>(export),
- AttributedModelServices.GetMetadataView<M>(export.Metadata),
- disposable);
- }
- else
- {
- return new Lazy<T, M>(
- () => ExportServices.GetCastedExportedValue<T>(export),
- AttributedModelServices.GetMetadataView<M>(export.Metadata),
- false);
- }
- }
-
- [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
- internal static Lazy<T> CreateStronglyTypedLazyOfT<T>(Export export)
- {
- IDisposable disposable = export as IDisposable;
- if (disposable != null)
- {
- return new DisposableLazy<T>(
- () => ExportServices.GetCastedExportedValue<T>(export),
- disposable);
- }
- else
- {
- return new Lazy<T>(() => ExportServices.GetCastedExportedValue<T>(export), false);
-
- }
- }
-
- [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
- internal static Lazy<object, object> CreateSemiStronglyTypedLazy<T, M>(Export export)
- {
- IDisposable disposable = export as IDisposable;
- if (disposable != null)
- {
- return new DisposableLazy<object, object>(
- () => ExportServices.GetCastedExportedValue<T>(export),
- AttributedModelServices.GetMetadataView<M>(export.Metadata),
- disposable);
- }
- else
- {
- return new Lazy<object, object>(
- () => ExportServices.GetCastedExportedValue<T>(export),
- AttributedModelServices.GetMetadataView<M>(export.Metadata),
- false
- );
- }
- }
-
- internal static Func<Export, object> CreateStronglyTypedExportFactoryFactory(Type exportType, Type metadataType, ConstructorInfo constructor)
- {
- MethodInfo genericMethod = null;
- if (metadataType == null)
- {
- genericMethod = _createStronglyTypedExportFactoryOfT.MakeGenericMethod(exportType);
- }
- else
- {
- genericMethod = _createStronglyTypedExportFactoryOfTM.MakeGenericMethod(exportType, metadataType);
- }
-
- Assumes.NotNull(genericMethod);
- Func<Export, ConstructorInfo, object> exportFactoryFactory = (Func<Export, ConstructorInfo, object>)Delegate.CreateDelegate(typeof(Func<Export, ConstructorInfo, object>), genericMethod);
- return (e) => exportFactoryFactory.Invoke(e, constructor);
- }
-
- private static Tuple<T, Action> GetExportLifetimeContextFromExport<T>(Export export)
- {
- T exportedValue;
- Action disposeAction;
- IDisposable disposable = null;
-
- CatalogExportProvider.PartCreatorExport partCreatorExport = export as CatalogExportProvider.PartCreatorExport;
-
- if (partCreatorExport != null)
- {
- // PartCreatorExport is the more optimized route
- Export exportProduct = partCreatorExport.CreateExportProduct();
- exportedValue = GetCastedExportedValue<T>(exportProduct);
- disposable = exportProduct as IDisposable;
- }
- else
- {
- // If it comes from somewhere else we walk through the ComposablePartDefinition
- var factoryPartDefinition = GetCastedExportedValue<ComposablePartDefinition>(export);
- var part = factoryPartDefinition.CreatePart();
- var exportDef = factoryPartDefinition.ExportDefinitions.Single();
-
- exportedValue = CastExportedValue<T>(part.ToElement(), part.GetExportedValue(exportDef));
- disposable = part as IDisposable;
- }
-
- if (disposable != null)
- {
- disposeAction = () => disposable.Dispose();
- }
- else
- {
- disposeAction = () => { };
- }
-
- return new Tuple<T, Action>(exportedValue, disposeAction);
- }
-
- private static object CreateStronglyTypedExportFactoryOfT<T>(Export export, ConstructorInfo constructor)
- {
- Func<Tuple<T, Action>> exportLifetimeContextCreator = () => ExportServices.GetExportLifetimeContextFromExport<T>(export);
- return constructor.Invoke(new object[] { exportLifetimeContextCreator });
- }
-
- private static object CreateStronglyTypedExportFactoryOfTM<T, M>(Export export, ConstructorInfo constructor)
- {
- Func<Tuple<T, Action>> exportLifetimeContextCreator = () => ExportServices.GetExportLifetimeContextFromExport<T>(export);
- return constructor.Invoke(new object[] { exportLifetimeContextCreator, AttributedModelServices.GetMetadataView<M>(export.Metadata) });
- }
-
- internal static T GetCastedExportedValue<T>(Export export)
- {
- return CastExportedValue<T>(export.ToElement(), export.Value);
- }
-
- internal static T CastExportedValue<T>(ICompositionElement element, object exportedValue)
- {
- object typedExportedValue = null;
-
- bool succeeded = ContractServices.TryCast(typeof(T), exportedValue, out typedExportedValue);
- if (!succeeded)
- {
- throw new CompositionContractMismatchException(string.Format(CultureInfo.CurrentCulture,
- Strings.ContractMismatch_ExportedValueCannotBeCastToT,
- element.DisplayName,
- typeof(T)));
- }
-
- return (T)typedExportedValue;
- }
-
- internal static ExportCardinalityCheckResult CheckCardinality(ImportDefinition definition, IEnumerable<Export> exports)
- {
- EnumerableCardinality actualCardinality = exports.GetCardinality();
-
- switch (actualCardinality)
- {
- case EnumerableCardinality.Zero:
- if (definition.Cardinality == ImportCardinality.ExactlyOne)
- {
- return ExportCardinalityCheckResult.NoExports;
- }
- break;
-
- case EnumerableCardinality.TwoOrMore:
- if (definition.Cardinality.IsAtMostOne())
- {
- return ExportCardinalityCheckResult.TooManyExports;
- }
- break;
-
- default:
- Assumes.IsTrue(actualCardinality == EnumerableCardinality.One);
- break;
-
- }
-
- return ExportCardinalityCheckResult.Match;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AggregateCatalog.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AggregateCatalog.cs
deleted file mode 100644
index 0cbf78a..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AggregateCatalog.cs
+++ /dev/null
@@ -1,230 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Threading;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// A mutable collection of <see cref="ComposablePartCatalog"/>s.
- /// </summary>
- /// <remarks>
- /// This type is thread safe.
- /// </remarks>
- public class AggregateCatalog : ComposablePartCatalog, INotifyComposablePartCatalogChanged
- {
- private ComposablePartCatalogCollection _catalogs = null;
- private volatile int _isDisposed = 0;
- private IQueryable<ComposablePartDefinition> _partsQuery;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="AggregateCatalog"/> class.
- /// </summary>
- public AggregateCatalog()
- : this((IEnumerable<ComposablePartCatalog>)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="AggregateCatalog"/> class
- /// with the specified catalogs.
- /// </summary>
- /// <param name="catalogs">
- /// An <see cref="Array"/> of <see cref="ComposablePartCatalog"/> objects to add to the
- /// <see cref="AggregateCatalog"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="catalogs"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="catalogs"/> contains an element that is <see langword="null"/>.
- /// </exception>
- public AggregateCatalog(params ComposablePartCatalog[] catalogs)
- : this((IEnumerable<ComposablePartCatalog>)catalogs)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="AggregateCatalog"/> class
- /// with the specified catalogs.
- /// </summary>
- /// <param name="catalogs">
- /// An <see cref="IEnumerable{T}"/> of <see cref="ComposablePartCatalog"/> objects to add
- /// to the <see cref="AggregateCatalog"/>; or <see langword="null"/> to
- /// create an <see cref="AggregateCatalog"/> that is empty.
- /// </param>
- /// <exception cref="ArgumentException">
- /// <paramref name="catalogs"/> contains an element that is <see langword="null"/>.
- /// </exception>
- public AggregateCatalog(IEnumerable<ComposablePartCatalog> catalogs)
- {
- Requires.NullOrNotNullElements(catalogs, "catalogs");
-
- this._catalogs = new ComposablePartCatalogCollection(catalogs, this.OnChanged, this.OnChanging);
- this._partsQuery = this._catalogs.AsQueryable().SelectMany(catalog => catalog.Parts);
- }
-
- /// <summary>
- /// Notify when the contents of the Catalog has changed.
- /// </summary>
- public event EventHandler<ComposablePartCatalogChangeEventArgs> Changed
- {
- add
- {
- this._catalogs.Changed += value;
- }
- remove
- {
- this._catalogs.Changed -= value;
- }
- }
-
- /// <summary>
- /// Notify when the contents of the Catalog has changing.
- /// </summary>
- public event EventHandler<ComposablePartCatalogChangeEventArgs> Changing
- {
- add
- {
- this._catalogs.Changing += value;
- }
- remove
- {
- this._catalogs.Changing -= value;
- }
- }
-
- /// <summary>
- /// Gets the part definitions of the catalog.
- /// </summary>
- /// <value>
- /// A <see cref="IQueryable{T}"/> of <see cref="ComposablePartDefinition"/> objects of the
- /// <see cref="AggregateCatalog"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="AggregateCatalog"/> has been disposed of.
- /// </exception>
- public override IQueryable<ComposablePartDefinition> Parts
- {
- get
- {
- this.ThrowIfDisposed();
- return this._partsQuery;
- }
- }
-
- /// <summary>
- /// Returns the export definitions that match the constraint defined by the specified definition.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="ExportDefinition"/> objects to return.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Tuple{T1, T2}"/> containing the
- /// <see cref="ExportDefinition"/> objects and their associated
- /// <see cref="ComposablePartDefinition"/> for objects that match the constraint defined
- /// by <paramref name="definition"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="AggregateCatalog"/> has been disposed of.
- /// </exception>
- public override IEnumerable<Tuple<ComposablePartDefinition, ExportDefinition>> GetExports(ImportDefinition definition)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(definition, "definition");
-
- // delegate the query to each catalog and merge the results.
- var exports = new List<Tuple<ComposablePartDefinition, ExportDefinition>>();
- foreach (var catalog in this._catalogs)
- {
- foreach (var export in catalog.GetExports(definition))
- {
- exports.Add(export);
- }
- }
- return exports;
- }
-
- /// <summary>
- /// Gets the underlying catalogs of the catalog.
- /// </summary>
- /// <value>
- /// An <see cref="ICollection{T}"/> of underlying <see cref="ComposablePartCatalog"/> objects
- /// of the <see cref="AggregateCatalog"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="AggregateCatalog"/> has been disposed of.
- /// </exception>
- public ICollection<ComposablePartCatalog> Catalogs
- {
- get
- {
- this.ThrowIfDisposed();
- return this._catalogs;
- }
- }
-
- protected override void Dispose(bool disposing)
- {
- try
- {
- if (disposing)
- {
- // NOTE : According to http://msdn.microsoft.com/en-us/library/4bw5ewxy.aspx, the warning is bogus when used with Interlocked API.
-#pragma warning disable 420
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
-#pragma warning restore 420
- {
- this._catalogs.Dispose();
- }
- }
- }
- finally
- {
- base.Dispose(disposing);
- }
- }
-
- /// <summary>
- /// Raises the <see cref="INotifyComposablePartCatalogChanged.Changed"/> event.
- /// </summary>
- /// <param name="e">
- /// An <see cref="ComposablePartCatalogChangeEventArgs"/> containing the data for the event.
- /// </param>
- protected virtual void OnChanged(ComposablePartCatalogChangeEventArgs e)
- {
- this._catalogs.OnChanged(this, e);
- }
-
- /// <summary>
- /// Raises the <see cref="INotifyComposablePartCatalogChanged.Changing"/> event.
- /// </summary>
- /// <param name="e">
- /// An <see cref="ComposablePartCatalogChangeEventArgs"/> containing the data for the event.
- /// </param>
- protected virtual void OnChanging(ComposablePartCatalogChangeEventArgs e)
- {
- this._catalogs.OnChanging(this, e);
- }
-
- private void ThrowIfDisposed()
- {
- if (this._isDisposed == 1)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AggregateExportProvider.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AggregateExportProvider.cs
deleted file mode 100644
index b624cd5..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AggregateExportProvider.cs
+++ /dev/null
@@ -1,219 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.ComponentModel.Composition.Primitives;
-using System.Linq;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public class AggregateExportProvider : ExportProvider , IDisposable
- {
- private ReadOnlyCollection<ExportProvider> _providers;
- private volatile int _isDisposed = 0;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="AggregateExportProvider"/> class.
- /// </summary>
- /// <param name="providers">The prioritized list of export providers.</param>
- /// <remarks>
- /// <para>
- /// The <see cref="AggregateExportProvider"/> will consult the providers in the order they have been specfied when
- /// executing <see cref="ExportProvider.GetExports(ImportDefinition,AtomicComposition)"/>.
- /// </para>
- /// <para>
- /// The <see cref="AggregateExportProvider"/> does not take ownership of the specified providers.
- /// That is, it will not try to dispose of any of them when it gets disposed.
- /// </para>
- /// </remarks>
- public AggregateExportProvider(params ExportProvider[] providers)
- : this(providers.AsEnumerable())
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="AggregateExportProvider"/> class.
- /// </summary>
- /// <param name="providers">The prioritized list of export providers. The providers are consulted in order in which they are supplied.</param>
- /// <remarks>
- /// <para>
- /// The <see cref="AggregateExportProvider"/> will consult the providers in the order they have been specfied when
- /// executing <see cref="ExportProvider.GetExports(ImportDefinition,AtomicComposition)"/>.
- /// </para>
- /// <para>
- /// The <see cref="AggregateExportProvider"/> does not take ownership of the specified providers.
- /// That is, it will not try to dispose of any of them when it gets disposed.
- /// </para>
- /// </remarks>
- public AggregateExportProvider(IEnumerable<ExportProvider> providers)
- {
- List<ExportProvider> providerList = new List<ExportProvider>();
-
- if (providers != null)
- {
- // we are in the constructor, so there's no need to lock anything
- foreach (var provider in providers)
- {
- if (provider == null)
- {
- throw ExceptionBuilder.CreateContainsNullElement("providers");
- }
-
- providerList.Add(provider);
-
- provider.ExportsChanged += this.OnExportChangedInternal;
- provider.ExportsChanging += this.OnExportChangingInternal;
- }
- }
-
- // this will always fully copy the array
- this._providers = new ReadOnlyCollection<ExportProvider>(providerList);
- }
-
- /// <summary>
- /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
- /// </summary>
- public void Dispose()
- {
- this.Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources
- /// </summary>
- /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- // NOTE : According to http://msdn.microsoft.com/en-us/library/4bw5ewxy.aspx, the warning is bogus when used with Interlocked API.
-#pragma warning disable 420
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
-#pragma warning restore 420
- {
- this._providers.ForEach(provider =>
- {
- provider.ExportsChanged -= this.OnExportChangedInternal;
- provider.ExportsChanging -= this.OnExportChangingInternal;
- });
- }
- }
- }
-
- /// <summary>
- /// Gets the export providers which the aggregate export provider aggregates.
- /// </summary>
- /// <value>
- /// A <see cref="ReadOnlyCollection{T}"/> of <see cref="ExportProvider"/> objects
- /// which the <see cref="AggregateExportProvider"/> aggregates.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="AggregateExportProvider"/> has been disposed of.
- /// </exception>
- public ReadOnlyCollection<ExportProvider> Providers
- {
- get
- {
- this.ThrowIfDisposed();
-
- return this._providers;
- }
- }
-
- /// <summary>
- /// Returns all exports that match the conditions of the specified import.
- /// </summary>
- /// <param name="definition">The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> to get.</param>
- /// <returns></returns>
- /// <result>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects that match
- /// the conditions defined by <see cref="ImportDefinition"/>, if found; otherwise, an
- /// empty <see cref="IEnumerable{T}"/>.
- /// </result>
- /// <remarks>
- /// <note type="inheritinfo">
- /// The implementers should not treat the cardinality-related mismatches as errors, and are not
- /// expected to throw exceptions in those cases.
- /// For instance, if the import requests exactly one export and the provider has no matching exports or more than one,
- /// it should return an empty <see cref="IEnumerable{T}"/> of <see cref="Export"/>.
- /// </note>
- /// </remarks>
- protected override IEnumerable<Export> GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition)
- {
- this.ThrowIfDisposed();
-
- if (definition.Cardinality == ImportCardinality.ZeroOrMore)
- {
- var exports = new List<Export>();
- foreach (var provider in this._providers)
- {
- foreach (var export in provider.GetExports(definition, atomicComposition))
- {
- exports.Add(export);
- }
- }
- return exports;
- }
- else
- {
- IEnumerable<Export> allExports = Enumerable.Empty<Export>();
-
- // if asked for "one or less", the prioriry is at play - the first provider that agrees to return the value
- // which best complies with the request, wins.
- foreach (ExportProvider provider in this._providers)
- {
- IEnumerable<Export> exports;
- bool cardinalityCheckResult = provider.TryGetExports(definition, atomicComposition, out exports);
- bool anyExports = exports.FastAny();
- if (cardinalityCheckResult && anyExports)
- {
- // NOTE : if the provider returned nothing, we need to proceed, even if it indicated that the
- // cardinality is correct - when asked for "one or less", the provider might - correctly -
- // return an empty sequence, but we shouldn't be satisfied with that as providers down the list
- // might have a value we are interested in.
- return exports;
- }
- else
- {
- // TODO
- // This is a sneaky thing that we do - if in the end no provider returns the exports with the right cardinality
- // we simply return the aggregation of all exports they have restuned. This way the end result is still not waht we want
- // but no information is lost.
- // WE SHOULD fix this behavior, but this is ONLY possible if we can treat many exports as no exports for the sake of singles
- if (anyExports)
- {
- allExports = allExports.Concat(exports);
- }
- }
- }
-
- return allExports;
- }
- }
-
- private void OnExportChangedInternal(object sender, ExportsChangeEventArgs e)
- {
- this.OnExportsChanged(e);
- }
-
- private void OnExportChangingInternal(object sender, ExportsChangeEventArgs e)
- {
- this.OnExportsChanging(e);
- }
-
- private void ThrowIfDisposed()
- {
- if (this._isDisposed == 1)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AssemblyCatalog.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AssemblyCatalog.cs
deleted file mode 100644
index b2db43d..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AssemblyCatalog.cs
+++ /dev/null
@@ -1,301 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Security;
-using System.Threading;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// An immutable ComposablePartCatalog created from a managed code assembly.
- /// </summary>
- /// <remarks>
- /// This type is thread safe.
- /// </remarks>
- [DebuggerTypeProxy(typeof(AssemblyCatalogDebuggerProxy))]
- public class AssemblyCatalog : ComposablePartCatalog, ICompositionElement
- {
- private readonly object _thisLock = new object();
- private readonly ICompositionElement _definitionOrigin;
- private volatile Assembly _assembly = null;
- private volatile TypeCatalog _innerCatalog = null;
- private int _isDisposed = 0;
-
-#if !SILVERLIGHT
-
- /// <summary>
- /// Initializes a new instance of the <see cref="AssemblyCatalog"/> class
- /// with the specified code base.
- /// </summary>
- /// <param name="codeBase">
- /// A <see cref="String"/> containing the code base of the assembly containing the
- /// attributed <see cref="Type"/> objects to add to the <see cref="AssemblyCatalog"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="codeBase"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="codeBase"/> is a zero-length string, contains only white space,
- /// or contains one or more invalid characters as defined by <see cref="Path.InvalidPathChars"/>.
- /// </exception>
- /// <exception cref="PathTooLongException">
- /// The specified path, file name, or both exceed the system-defined maximum length.
- /// </exception>
- /// <exception cref="SecurityException">
- /// The caller does not have path discovery permission.
- /// </exception>
- /// <exception cref="FileNotFoundException">
- /// <paramref name="codeBase"/> is not found.
- /// </exception>
- /// <exception cref="FileLoadException ">
- /// <paramref name="codeBase"/> could not be loaded.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="codeBase"/> specified a directory.
- /// </exception>
- /// <exception cref="BadImageFormatException">
- /// <paramref name="codeBase"/> is not a valid assembly
- /// -or-
- /// Version 2.0 or later of the common language runtime is currently loaded
- /// and <paramref name="codeBase"/> was compiled with a later version.
- /// </exception>
- /// <remarks>
- /// The assembly referenced by <paramref langword="codeBase"/> is loaded into the Load context.
- /// </remarks>
- public AssemblyCatalog(string codeBase)
- : this(codeBase, (ICompositionElement)null)
- {
- }
-
- internal AssemblyCatalog(string codeBase, ICompositionElement definitionOrigin)
- : this(LoadAssembly(codeBase), definitionOrigin)
- {
- }
-
-#endif
-
- /// <summary>
- /// Initializes a new instance of the <see cref="AssemblyCatalog"/> class
- /// with the specified assembly.
- /// </summary>
- /// <param name="assembly">
- /// The <see cref="Assembly"/> containing the attributed <see cref="Type"/> objects to
- /// add to the <see cref="AssemblyCatalog"/>.
- /// </param>
- /// <exception cref="ArgumentException">
- /// <paramref name="assembly"/> is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="assembly"/> was loaded in the reflection-only context.
- /// </exception>
- public AssemblyCatalog(Assembly assembly)
- : this(assembly, (ICompositionElement)null)
- {
- }
-
- internal AssemblyCatalog(Assembly assembly, ICompositionElement definitionOrigin)
- {
- Requires.NotNull(assembly, "assembly");
-
-#if !SILVERLIGHT
- if (assembly.ReflectionOnly)
- {
- throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Strings.Argument_AssemblyReflectionOnly, "assembly"), "assembly");
- }
-#endif
- this._assembly = assembly;
- this._definitionOrigin = definitionOrigin ?? this;
- }
-
- /// <summary>
- /// Gets the part definitions of the assembly catalog.
- /// </summary>
- /// <value>
- /// A <see cref="IQueryable{T}"/> of <see cref="ComposablePartDefinition"/> objects of the
- /// <see cref="AssemblyCatalog"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="AssemblyCatalog"/> has been disposed of.
- /// </exception>
- public override IQueryable<ComposablePartDefinition> Parts
- {
- get
- {
- return this.InnerCatalog.Parts;
- }
- }
-
- /// <summary>
- /// Returns the export definitions that match the constraint defined by the specified definition.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="ExportDefinition"/> objects to return.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Tuple{T1, T2}"/> containing the
- /// <see cref="ExportDefinition"/> objects and their associated
- /// <see cref="ComposablePartDefinition"/> for objects that match the constraint defined
- /// by <paramref name="definition"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePartCatalog"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>, if no
- /// <see cref="ExportDefinition"/> match the conditions defined by
- /// <paramref name="definition"/>, return an empty <see cref="IEnumerable{T}"/>.
- /// </note>
- /// </remarks>
- public override IEnumerable<Tuple<ComposablePartDefinition, ExportDefinition>> GetExports(ImportDefinition definition)
- {
- return this.InnerCatalog.GetExports(definition);
- }
-
- private TypeCatalog InnerCatalog
- {
- get
- {
- this.ThrowIfDisposed();
-
- if (this._innerCatalog == null)
- {
- lock (this._thisLock)
- {
- if (this._innerCatalog == null)
- {
- var catalog = new TypeCatalog(this._assembly.GetTypes(), _definitionOrigin);
- this._innerCatalog = catalog;
- }
- }
- }
- return this._innerCatalog;
- }
- }
-
- /// <summary>
- /// Gets the assembly containing the attributed types contained within the assembly
- /// catalog.
- /// </summary>
- /// <value>
- /// The <see cref="Assembly"/> containing the attributed <see cref="Type"/> objects
- /// contained within the <see cref="AssemblyCatalog"/>.
- /// </value>
- public Assembly Assembly
- {
- get { return this._assembly; }
- }
-
- /// <summary>
- /// Gets the display name of the assembly catalog.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing a human-readable display name of the <see cref="AssemblyCatalog"/>.
- /// </value>
- [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
- string ICompositionElement.DisplayName
- {
- get { return this.GetDisplayName(); }
- }
-
- /// <summary>
- /// Gets the composition element from which the assembly catalog originated.
- /// </summary>
- /// <value>
- /// This property always returns <see langword="null"/>.
- /// </value>
- [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
- ICompositionElement ICompositionElement.Origin
- {
- get { return null; }
- }
-
-
- /// <summary>
- /// Returns a string representation of the assembly catalog.
- /// </summary>
- /// <returns>
- /// A <see cref="String"/> containing the string representation of the <see cref="AssemblyCatalog"/>.
- /// </returns>
- public override string ToString()
- {
- return this.GetDisplayName();
- }
-
- protected override void Dispose(bool disposing)
- {
- try
- {
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
- {
- if (disposing)
- {
- if (this._innerCatalog != null)
- {
- this._innerCatalog.Dispose();
- }
- }
- }
- }
- finally
- {
- base.Dispose(disposing);
- }
- }
-
- private void ThrowIfDisposed()
- {
- if (this._isDisposed == 1)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
-
- private string GetDisplayName()
- {
- return string.Format(CultureInfo.CurrentCulture,
- "{0} (Assembly=\"{1}\")", // NOLOC
- GetType().Name,
- this.Assembly.FullName);
- }
-
-#if !SILVERLIGHT
-
- private static Assembly LoadAssembly(string codeBase)
- {
- Requires.NotNullOrEmpty(codeBase, "codeBase");
-
- AssemblyName assemblyName;
-
- try
- {
- assemblyName = AssemblyName.GetAssemblyName(codeBase);
- }
- catch (ArgumentException)
- {
- assemblyName = new AssemblyName();
- assemblyName.CodeBase = codeBase;
- }
-
- return Assembly.Load(assemblyName);
- }
-#endif
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AssemblyCatalogDebuggerProxy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AssemblyCatalogDebuggerProxy.cs
deleted file mode 100644
index e8f5198..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AssemblyCatalogDebuggerProxy.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.ObjectModel;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- internal class AssemblyCatalogDebuggerProxy
- {
- private readonly AssemblyCatalog _catalog;
-
- public AssemblyCatalogDebuggerProxy(AssemblyCatalog catalog)
- {
- Requires.NotNull(catalog, "catalog");
-
- this._catalog = catalog;
- }
-
- public Assembly Assembly
- {
- get { return this._catalog.Assembly; }
- }
-
- public ReadOnlyCollection<ComposablePartDefinition> Parts
- {
- // NOTE: This shouldn't be cached, so that on every query of
- // the current value of the underlying catalog is respected.
- // We use ReadOnlyCollection as arrays do not have the
- // appropriate debugger display attributes applied to them.
- get { return this._catalog.Parts.ToReadOnlyCollection(); }
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AtomicComposition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AtomicComposition.cs
deleted file mode 100644
index 488e1cc..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AtomicComposition.cs
+++ /dev/null
@@ -1,305 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Collections.Generic;
-using Microsoft.Internal;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// AtomicComposition provides lightweight atomicCompositional semantics to enable temporary
- /// state to be managed for a series of nested atomicCompositions. Each atomicComposition maintains
- /// queryable state along with a sequence of actions necessary to complete the state when
- /// the atomicComposition is no longer in danger of being rolled back. State is completed or
- /// rolled back when the atomicComposition is disposed, depending on the state of the
- /// CompleteOnDipose property which defaults to false. The using(...) pattern in C# is a
- /// convenient mechanism for defining atomicComposition scopes.
- ///
- /// The least obvious aspects of AtomicComposition deal with nesting.
- ///
- /// Firstly, no complete actions are actually performed until the outermost atomicComposition is
- /// completed. Completeting or rolling back nested atomicCompositions serves only to change which
- /// actions would be completed the outer atomicComposition.
- ///
- /// Secondly, state is added in the form of queries associated with an object key. The
- /// key represents a unique object the state is being held on behalf of. The quieries are
- /// accessed throught the Query methods which provide automatic chaining to execute queries
- /// across the target atomicComposition and its inner atomicComposition as appropriate.
- ///
- /// Lastly, when a nested atomicComposition is created for a given outer the outer atomicComposition is locked.
- /// It remains locked until the inner atomicComposition is disposed or completeed preventing the addition of
- /// state, actions or other inner atomicCompositions.
- /// </summary>
- public class AtomicComposition : IDisposable
- {
- private readonly AtomicComposition _outerAtomicComposition;
- private KeyValuePair<object, object>[] _values;
- private int _valueCount = 0;
- private List<Action> _completeActionList;
- private List<Action> _revertActionList;
- private bool _isDisposed = false;
- private bool _isCompleted = false;
- private bool _containsInnerAtomicComposition = false;
-
- public AtomicComposition()
- : this(null)
- {
- }
-
- public AtomicComposition(AtomicComposition outerAtomicComposition)
- {
- // Lock the inner atomicComposition so that we can assume nothing changes except on
- // the innermost scope, and thereby optimize the query path
- if (outerAtomicComposition != null)
- {
- this._outerAtomicComposition = outerAtomicComposition;
- this._outerAtomicComposition.ContainsInnerAtomicComposition = true;
- }
- }
-
- public void SetValue(object key, object value)
- {
- ThrowIfDisposed();
- ThrowIfCompleteed();
- ThrowIfContainsInnerAtomicComposition();
-
- Requires.NotNull(key, "key");
-
- SetValueInternal(key, value);
- }
-
- public bool TryGetValue<T>(object key, out T value)
- {
- return TryGetValue(key, false, out value);
- }
-
- [SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters")]
- public bool TryGetValue<T>(object key, bool localAtomicCompositionOnly, out T value)
- {
- ThrowIfDisposed();
- ThrowIfCompleteed();
-
- Requires.NotNull(key, "key");
-
- return TryGetValueInternal(key, localAtomicCompositionOnly, out value);
- }
-
- public void AddCompleteAction(Action completeAction)
- {
- ThrowIfDisposed();
- ThrowIfCompleteed();
- ThrowIfContainsInnerAtomicComposition();
-
- Requires.NotNull(completeAction, "completeAction");
-
- if (this._completeActionList == null)
- {
- this._completeActionList = new List<Action>();
- }
- this._completeActionList.Add(completeAction);
- }
-
- public void AddRevertAction(Action revertAction)
- {
- ThrowIfDisposed();
- ThrowIfCompleteed();
- ThrowIfContainsInnerAtomicComposition();
-
- Requires.NotNull(revertAction, "revertAction");
-
- if (this._revertActionList == null)
- {
- this._revertActionList = new List<Action>();
- }
- this._revertActionList.Add(revertAction);
- }
-
- public void Complete()
- {
- ThrowIfDisposed();
- ThrowIfCompleteed();
-
- if (this._outerAtomicComposition == null)
- { // Execute all the complete actions
- FinalComplete();
- }
- else
- { // Copy the actions and state to the outer atomicComposition
- CopyComplete();
- }
-
- this._isCompleted = true;
- }
-
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- ThrowIfDisposed();
- this._isDisposed = true;
-
- if (this._outerAtomicComposition != null)
- {
- this._outerAtomicComposition.ContainsInnerAtomicComposition = false;
- }
-
- // Revert is always immediate and involves forgetting information and
- // exceuting any appropriate revert actions
- if (!this._isCompleted)
- {
- if (this._revertActionList != null)
- {
- // Execute the revert actions in reverse order to ensure
- // everything incrementally rollsback its state.
- for (int i = this._revertActionList.Count - 1; i >= 0; i--)
- {
- Action action = this._revertActionList[i];
- action();
- }
- this._revertActionList = null;
- }
- }
- }
-
- private void FinalComplete()
- {
- // Completeting the outer most scope is easy, just execute all the actions
- if (this._completeActionList != null)
- {
- foreach (Action action in this._completeActionList)
- {
- action();
- }
- this._completeActionList = null;
- }
- }
-
- private void CopyComplete()
- {
- Assumes.NotNull(this._outerAtomicComposition);
-
- this._outerAtomicComposition.ContainsInnerAtomicComposition = false;
-
- // Inner scopes are much odder, because completeting them means coalescing them into the
- // outer scope - the complete or revert actions are deferred until the outermost scope completes
- // or any intermediate rolls back
- if (this._completeActionList != null)
- {
- foreach (Action action in this._completeActionList)
- {
- this._outerAtomicComposition.AddCompleteAction(action);
- }
- }
-
- if (this._revertActionList != null)
- {
- foreach (Action action in this._revertActionList)
- {
- this._outerAtomicComposition.AddRevertAction(action);
- }
- }
-
- // We can copy over existing atomicComposition entries because they're either already chained or
- // overwrite by design and can now be completed or rolled back together
- for (var index = 0; index < this._valueCount; index++)
- {
- this._outerAtomicComposition.SetValueInternal(
- this._values[index].Key, this._values[index].Value);
- }
- }
-
- private bool ContainsInnerAtomicComposition
- {
- set
- {
- if (value == true && this._containsInnerAtomicComposition == true)
- {
- throw new InvalidOperationException(Strings.AtomicComposition_AlreadyNested);
- }
- this._containsInnerAtomicComposition = value;
- }
- }
-
- private bool TryGetValueInternal<T>(object key, bool localAtomicCompositionOnly, out T value)
- {
- for (var index = 0; index < this._valueCount; index++)
- {
- if (this._values[index].Key == key)
- {
- value = (T)this._values[index].Value;
- return true;
- }
- }
-
- // If there's no atomicComposition available then recurse until we hit the outermost
- // scope, where upon we go ahead and return null
- if (!localAtomicCompositionOnly && this._outerAtomicComposition != null)
- {
- return this._outerAtomicComposition.TryGetValueInternal<T>(key, localAtomicCompositionOnly, out value);
- }
-
- value = default(T);
- return false;
- }
-
- private void SetValueInternal(object key, object value)
- {
- // Handle overwrites quickly
- for (var index = 0; index < this._valueCount; index++)
- {
- if (this._values[index].Key == key)
- {
- this._values[index] = new KeyValuePair<object,object>(key, value);
- return;
- }
- }
-
- // Expand storage when needed
- if (this._values == null || this._valueCount == this._values.Length)
- {
- var newQueries = new KeyValuePair<object, object>[this._valueCount == 0 ? 5 : this._valueCount * 2];
- if (this._values != null)
- {
- Array.Copy(this._values, newQueries, this._valueCount);
- }
- this._values = newQueries;
- }
-
- // Store a new entry
- this._values[_valueCount] = new KeyValuePair<object, object>(key, value);
- this._valueCount++;
- return;
- }
-
- [DebuggerStepThrough]
- private void ThrowIfContainsInnerAtomicComposition()
- {
- if (this._containsInnerAtomicComposition)
- {
- throw new InvalidOperationException(Strings.AtomicComposition_PartOfAnotherAtomicComposition);
- }
- }
-
- [DebuggerStepThrough]
- private void ThrowIfCompleteed()
- {
- if (this._isCompleted)
- {
- throw new InvalidOperationException(Strings.AtomicComposition_AlreadyCompleted);
- }
- }
-
- [DebuggerStepThrough]
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AtomicCompositionExtensions.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AtomicCompositionExtensions.cs
deleted file mode 100644
index af57329..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AtomicCompositionExtensions.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Collections.Generic;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- internal static class AtomicCompositionExtensions
- {
- internal static T GetValueAllowNull<T>(this AtomicComposition atomicComposition, T defaultResultAndKey) where T : class
- {
- Assumes.NotNull(defaultResultAndKey);
-
- return GetValueAllowNull<T>(atomicComposition, defaultResultAndKey, defaultResultAndKey);
- }
-
- internal static T GetValueAllowNull<T>(this AtomicComposition atomicComposition, object key, T defaultResult)
- {
- T result;
- if (atomicComposition != null && atomicComposition.TryGetValue(key, out result))
- {
- return result;
- }
-
- return defaultResult;
- }
-
- internal static void AddRevertActionAllowNull(this AtomicComposition atomicComposition, Action action)
- {
- Assumes.NotNull(action);
-
- if (atomicComposition == null)
- {
- action();
- }
- else
- {
- atomicComposition.AddRevertAction(action);
- }
- }
-
- internal static void AddCompleteActionAllowNull(this AtomicComposition atomicComposition, Action action)
- {
- Assumes.NotNull(action);
-
- if (atomicComposition == null)
- {
- action();
- }
- else
- {
- atomicComposition.AddCompleteAction(action);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogChangeProxy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogChangeProxy.cs
deleted file mode 100644
index a66471d..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogChangeProxy.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using System.Threading;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class CatalogExportProvider : ExportProvider, IDisposable
- {
- private class CatalogChangeProxy : ComposablePartCatalog
- {
- private ComposablePartCatalog _originalCatalog;
- private List<ComposablePartDefinition> _addedParts;
- private HashSet<ComposablePartDefinition> _removedParts;
-
- public CatalogChangeProxy(ComposablePartCatalog originalCatalog,
- IEnumerable<ComposablePartDefinition> addedParts,
- IEnumerable<ComposablePartDefinition> removedParts)
- {
- this._originalCatalog = originalCatalog;
- this._addedParts = new List<ComposablePartDefinition>(addedParts);
- this._removedParts = new HashSet<ComposablePartDefinition>(removedParts);
- }
-
- public override IQueryable<ComposablePartDefinition> Parts
- {
- get
- {
- return this._originalCatalog.Parts.Concat(this._addedParts).Except(this._removedParts);
- }
- }
-
- public override IEnumerable<Tuple<ComposablePartDefinition, ExportDefinition>> GetExports(
- ImportDefinition definition)
- {
- Requires.NotNull(definition, "definition");
-
- var originalExports = this._originalCatalog.GetExports(definition);
- var trimmedExports = originalExports.Where(partAndExport =>
- !this._removedParts.Contains(partAndExport.Item1));
-
- var addedExports = new List<Tuple<ComposablePartDefinition, ExportDefinition>>();
- foreach (var part in this._addedParts)
- {
- foreach (var export in part.ExportDefinitions)
- {
- if (definition.IsConstraintSatisfiedBy(export))
- {
- addedExports.Add(new Tuple<ComposablePartDefinition, ExportDefinition>(part, export));
- }
- }
- }
- return trimmedExports.Concat(addedExports);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogExport.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogExport.cs
deleted file mode 100644
index 35ea352..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogExport.cs
+++ /dev/null
@@ -1,132 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class CatalogExportProvider
- {
- private class CatalogExport : Export
- {
- protected readonly CatalogExportProvider _catalogExportProvider;
- protected readonly ComposablePartDefinition _partDefinition;
- protected readonly ExportDefinition _definition;
- protected ComposablePart _part;
-
- public CatalogExport(CatalogExportProvider catalogExportProvider,
- ComposablePartDefinition partDefinition, ExportDefinition definition)
- {
- this._catalogExportProvider = catalogExportProvider;
- this._partDefinition = partDefinition;
- this._definition = definition;
- }
-
- public override ExportDefinition Definition
- {
- get
- {
- return this._definition;
- }
- }
-
- protected virtual bool IsSharedPart
- {
- get
- {
- return true;
- }
- }
-
- protected override object GetExportedValueCore()
- {
- ComposablePart part = this._catalogExportProvider.GetComposablePart(this._partDefinition, this.IsSharedPart);
- object exportedValue = this._catalogExportProvider.GetExportedValue(part, this._definition, this.IsSharedPart);
- this._part = part;
-
- return exportedValue;
- }
-
- [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
- public static CatalogExport CreateExport(CatalogExportProvider catalogExportProvider,
- ComposablePartDefinition partDefinition, ExportDefinition definition, CreationPolicy importCreationPolicy)
- {
- CreationPolicy partPolicy = partDefinition.Metadata.GetValue<CreationPolicy>(CompositionConstants.PartCreationPolicyMetadataName);
- bool isSharedPart = ShouldUseSharedPart(partPolicy, importCreationPolicy);
-
- if (isSharedPart)
- {
- return new CatalogExport(catalogExportProvider, partDefinition, definition);
- }
- else
- {
- return new NonSharedCatalogExport(catalogExportProvider, partDefinition, definition);
- }
- }
-
- private static bool ShouldUseSharedPart(CreationPolicy partPolicy, CreationPolicy importPolicy)
- {
- // Matrix that details which policy to use for a given part to satisfy a given import.
- // Part.Any Part.Shared Part.NonShared
- // Import.Any Shared Shared NonShared
- // Import.Shared Shared Shared N/A
- // Import.NonShared NonShared N/A NonShared
-
- switch (partPolicy)
- {
- case CreationPolicy.Any:
- {
- if (importPolicy == CreationPolicy.Any ||
- importPolicy == CreationPolicy.Shared)
- {
- return true;
- }
- return false;
- }
-
- case CreationPolicy.NonShared:
- {
- Assumes.IsTrue(importPolicy != CreationPolicy.Shared);
- return false;
- }
-
- default:
- {
- Assumes.IsTrue(partPolicy == CreationPolicy.Shared);
- Assumes.IsTrue(importPolicy != CreationPolicy.NonShared);
- return true;
- }
- }
- }
- }
-
- private sealed class NonSharedCatalogExport : CatalogExport, IDisposable
- {
- public NonSharedCatalogExport(CatalogExportProvider catalogExportProvider,
- ComposablePartDefinition partDefinition, ExportDefinition definition)
- : base(catalogExportProvider, partDefinition, definition)
- {
- }
-
- protected override bool IsSharedPart
- {
- get
- {
- return false;
- }
- }
-
- void IDisposable.Dispose()
- {
- if (this._part != null)
- {
- this._catalogExportProvider.ReleasePart(this.Value, this._part, null);
- this._part = null;
- }
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.PartCreatorExport.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.PartCreatorExport.cs
deleted file mode 100644
index 62202b2..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.PartCreatorExport.cs
+++ /dev/null
@@ -1,132 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Linq;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class CatalogExportProvider
- {
- internal class PartCreatorExport : Export
- {
- private readonly CatalogExportProvider _catalogExportProvider;
- private readonly ComposablePartDefinition _partDefinition;
- private readonly ExportDefinition _exportDefinition;
- private ExportDefinition _partCreatorExportDefinition;
- private PartCreatorPartDefinition _partCreatorPartDefinition;
-
- public PartCreatorExport(CatalogExportProvider catalogExportProvider, ComposablePartDefinition partDefinition, ExportDefinition exportDefinition)
- {
- this._catalogExportProvider = catalogExportProvider;
- this._partDefinition = partDefinition;
- this._exportDefinition = exportDefinition;
- this._partCreatorExportDefinition = new PartCreatorExportDefinition(this._exportDefinition);
- }
-
- public override ExportDefinition Definition
- {
- get { return this._partCreatorExportDefinition; }
- }
-
- protected override object GetExportedValueCore()
- {
- if (this._partCreatorPartDefinition == null)
- {
- this._partCreatorPartDefinition = new PartCreatorPartDefinition(this);
- }
- return this._partCreatorPartDefinition;
- }
-
- public Export CreateExportProduct()
- {
- return new NonSharedCatalogExport(this._catalogExportProvider, this._partDefinition, this._exportDefinition);
- }
-
- private class PartCreatorPartDefinition : ComposablePartDefinition
- {
- private readonly PartCreatorExport _partCreatorExport;
-
- public PartCreatorPartDefinition(PartCreatorExport partCreatorExport)
- {
- this._partCreatorExport = partCreatorExport;
- }
-
- public override IEnumerable<ExportDefinition> ExportDefinitions
- {
- get { return new ExportDefinition[] { this._partCreatorExport.Definition }; }
- }
-
- public override IEnumerable<ImportDefinition> ImportDefinitions
- {
- get { return Enumerable.Empty<ImportDefinition>(); }
- }
-
- public ExportDefinition PartCreatorExportDefinition
- {
- get { return this._partCreatorExport.Definition; }
- }
-
- public Export CreateProductExport()
- {
- return this._partCreatorExport.CreateExportProduct();
- }
-
- public override ComposablePart CreatePart()
- {
- return new PartCreatorPart(this);
- }
- }
-
- private sealed class PartCreatorPart : ComposablePart, IDisposable
- {
- private readonly PartCreatorPartDefinition _definition;
- private readonly Export _export;
-
- public PartCreatorPart(PartCreatorPartDefinition definition)
- {
- this._definition = definition;
- this._export = definition.CreateProductExport();
- }
-
- public override IEnumerable<ExportDefinition> ExportDefinitions
- {
- get { return this._definition.ExportDefinitions; }
- }
-
- public override IEnumerable<ImportDefinition> ImportDefinitions
- {
- get { return this._definition.ImportDefinitions; }
- }
-
- public override object GetExportedValue(ExportDefinition definition)
- {
- if (definition != this._definition.PartCreatorExportDefinition)
- {
- throw ExceptionBuilder.CreateExportDefinitionNotOnThisComposablePart("definition");
- }
-
- return this._export.Value;
- }
-
- public override void SetImport(ImportDefinition definition, IEnumerable<Export> exports)
- {
- throw ExceptionBuilder.CreateImportDefinitionNotOnThisComposablePart("definition");
- }
-
- public void Dispose()
- {
- IDisposable disposable = this._export as IDisposable;
-
- if (disposable != null)
- {
- disposable.Dispose();
- }
- }
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.cs
deleted file mode 100644
index 9318d80..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.cs
+++ /dev/null
@@ -1,816 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Diagnostics;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class CatalogExportProvider : ExportProvider, IDisposable
- {
- private readonly CompositionLock _lock;
- private Dictionary<ComposablePartDefinition, ComposablePart> _activatedParts = new Dictionary<ComposablePartDefinition, ComposablePart>();
- private HashSet<ComposablePartDefinition> _rejectedParts = new HashSet<ComposablePartDefinition>();
- private ConditionalWeakTable<object, List<ComposablePart>> _conditionalReferencesForRecomposableParts = new ConditionalWeakTable<object, List<ComposablePart>>();
- private HashSet<IDisposable> _partsToDispose = new HashSet<IDisposable>();
- private ComposablePartCatalog _catalog;
- private volatile bool _isDisposed = false;
- private volatile bool _isRunning = false;
- private ExportProvider _sourceProvider;
- private ImportEngine _importEngine;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CatalogExportProvider"/> class.
- /// </summary>
- /// <param name="catalog">
- /// The <see cref="ComposablePartCatalog"/> that the <see cref="CatalogExportProvider"/>
- /// uses to produce <see cref="Export"/> objects.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="catalog"/> is <see langword="null"/>.
- /// </exception>
- public CatalogExportProvider(ComposablePartCatalog catalog)
- : this(catalog, false)
- {
- }
-
- public CatalogExportProvider(ComposablePartCatalog catalog, bool isThreadSafe)
- {
- Requires.NotNull(catalog, "catalog");
-
- this._catalog = catalog;
-
- var notifyCatalogChanged = this._catalog as INotifyComposablePartCatalogChanged;
- if (notifyCatalogChanged != null)
- {
- notifyCatalogChanged.Changing += this.OnCatalogChanging;
- }
-
- this._lock = new CompositionLock(isThreadSafe);
- }
-
- /// <summary>
- /// Gets the composable part catalog that the provider users to
- /// produce exports.
- /// </summary>
- /// <value>
- /// The <see cref="ComposablePartCatalog"/> that the
- /// <see cref="CatalogExportProvider"/>
- /// uses to produce <see cref="Export"/> objects.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- public ComposablePartCatalog Catalog
- {
- get
- {
- ThrowIfDisposed();
-
- return this._catalog;
- }
- }
-
- /// <summary>
- /// Gets the export provider which provides the provider access to additional
- /// exports.
- /// </summary>
- /// <value>
- /// The <see cref="ExportProvider"/> which provides the
- /// <see cref="CatalogExportProvider"/> access to additional
- /// <see cref="Export"/> objects. The default is <see langword="null"/>.
- /// </value>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="value"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="InvalidOperationException">
- /// This property has already been set.
- /// <para>
- /// -or-
- /// </para>
- /// The methods on the <see cref="CatalogExportProvider"/>
- /// have already been accessed.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CatalogExportProvider"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// This property must be set before accessing any methods on the
- /// <see cref="CatalogExportProvider"/>.
- /// </remarks>
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Justification="EnsureCanSet ensures that the property is set only once, Dispose is not required")]
- public ExportProvider SourceProvider
- {
- get
- {
- this.ThrowIfDisposed();
- using (this._lock.LockStateForRead())
- {
- return this._sourceProvider;
- }
- }
- set
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(value, "value");
-
- ImportEngine newImportEngine = null;
- bool isThrowing = true;
- try
- {
- newImportEngine = new ImportEngine(value, this._lock.IsThreadSafe);
- value.ExportsChanging += this.OnExportsChangingInternal;
-
- using (this._lock.LockStateForWrite())
- {
- this.EnsureCanSet(this._sourceProvider);
-
- this._sourceProvider = value;
- this._importEngine = newImportEngine;
-
- isThrowing = false;
- }
- }
- finally
- {
- if (isThrowing)
- {
- value.ExportsChanging -= this.OnExportsChangingInternal;
- newImportEngine.Dispose();
- }
- }
- }
- }
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources
- /// </summary>
- public void Dispose()
- {
- this.Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources
- /// </summary>
- /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- if (!this._isDisposed)
- {
- bool disposeLock = false;
- INotifyComposablePartCatalogChanged catalogToUnsubscribeFrom = null;
- HashSet<IDisposable> partsToDispose = null;
- ExportProvider sourceProviderToUnsubscribeFrom = null;
- ImportEngine importEngineToDispose = null;
-
- try
- {
- using (this._lock.LockStateForWrite())
- {
- if (!this._isDisposed)
- {
- catalogToUnsubscribeFrom = this._catalog as INotifyComposablePartCatalogChanged;
- this._catalog = null;
-
- sourceProviderToUnsubscribeFrom = this._sourceProvider;
- this._sourceProvider = null;
-
- importEngineToDispose = this._importEngine;
- this._importEngine = null;
-
- partsToDispose = this._partsToDispose;
- this._partsToDispose = new HashSet<IDisposable>();
- this._activatedParts.Clear();
- this._conditionalReferencesForRecomposableParts = null;
-
- disposeLock = true;
- this._isDisposed = true;
- }
- }
- }
- finally
- {
- if (catalogToUnsubscribeFrom != null)
- {
- catalogToUnsubscribeFrom.Changing -= this.OnCatalogChanging;
- }
-
- if (sourceProviderToUnsubscribeFrom != null)
- {
- sourceProviderToUnsubscribeFrom.ExportsChanging -= this.OnExportsChangingInternal;
- }
-
- if (importEngineToDispose != null)
- {
- importEngineToDispose.Dispose();
- }
-
- if (partsToDispose != null)
- {
- foreach (var part in partsToDispose)
- {
- part.Dispose();
- }
- }
-
- if (disposeLock)
- {
- this._lock.Dispose();
- }
- }
- }
- }
- }
-
- /// <summary>
- /// Returns all exports that match the conditions of the specified import.
- /// </summary>
- /// <param name="definition">The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> to get.</param>
- /// <returns></returns>
- /// <result>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects that match
- /// the conditions defined by <see cref="ImportDefinition"/>, if found; otherwise, an
- /// empty <see cref="IEnumerable{T}"/>.
- /// </result>
- /// <remarks>
- /// <note type="inheritinfo">
- /// The implementers should not treat the cardinality-related mismatches as errors, and are not
- /// expected to throw exceptions in those cases.
- /// For instance, if the import requests exactly one export and the provider has no matching exports or more than one,
- /// it should return an empty <see cref="IEnumerable{T}"/> of <see cref="Export"/>.
- /// </note>
- /// </remarks>
- protected override IEnumerable<Export> GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition)
- {
- this.ThrowIfDisposed();
- this.EnsureRunning();
-
- // Use the version of the catalog appropriate to this atomicComposition
- ComposablePartCatalog currentCatalog = atomicComposition.GetValueAllowNull(this._catalog);
-
- IPartCreatorImportDefinition partCreatorDefinition = definition as IPartCreatorImportDefinition;
- bool isPartCreator = false;
-
- if (partCreatorDefinition != null)
- {
- definition = partCreatorDefinition.ProductImportDefinition;
- isPartCreator = true;
- }
-
- CreationPolicy importPolicy = definition.GetRequiredCreationPolicy();
-
- List<Export> exports = new List<Export>();
- foreach (var partDefinitionAndExportDefinition in currentCatalog.GetExports(definition))
- {
- if (!IsRejected(partDefinitionAndExportDefinition.Item1, atomicComposition))
- {
- if (isPartCreator)
- {
- exports.Add(new PartCreatorExport(this,
- partDefinitionAndExportDefinition.Item1,
- partDefinitionAndExportDefinition.Item2));
- }
- else
- {
- exports.Add(CatalogExport.CreateExport(this,
- partDefinitionAndExportDefinition.Item1,
- partDefinitionAndExportDefinition.Item2,
- importPolicy));
- }
- }
- }
-
- return exports;
- }
-
- private void OnExportsChangingInternal(object sender, ExportsChangeEventArgs e)
- {
- UpdateRejections(e.AddedExports.Concat(e.RemovedExports), e.AtomicComposition);
- }
-
- private static ExportDefinition[] GetExportsFromPartDefinitions(IEnumerable<ComposablePartDefinition> partDefinitions)
- {
- List<ExportDefinition> exports = new List<ExportDefinition>();
-
- foreach (var partDefinition in partDefinitions)
- {
- foreach (var export in partDefinition.ExportDefinitions)
- {
- exports.Add(export);
-
- // While creating a PartCreatorExportDefinition for every changed definition may not be the most
- // efficient way to do this the PartCreatorExportDefinition is very efficient and doesn't do any
- // real work unless its metadata is pulled on. If this turns out to be a bottleneck then we
- // will need to start tracking all the PartCreator's we hand out and only send those which we
- // have handed out. In fact we could do the same thing for all the Exports if we wished but
- // that requires a cache management which we don't want to do at this point.
- exports.Add(new PartCreatorExportDefinition(export));
- }
- }
-
- return exports.ToArray();
- }
-
- [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
- private void OnCatalogChanging(object sender, ComposablePartCatalogChangeEventArgs e)
- {
- using (var atomicComposition = new AtomicComposition(e.AtomicComposition))
- {
- // Save the preview catalog to use in place of the original while handling
- // this event
- atomicComposition.SetValue(this._catalog,
- new CatalogChangeProxy(this._catalog, e.AddedDefinitions, e.RemovedDefinitions));
-
- IEnumerable<ExportDefinition> addedExports = GetExportsFromPartDefinitions(e.AddedDefinitions);
- IEnumerable<ExportDefinition> removedExports = GetExportsFromPartDefinitions(e.RemovedDefinitions);
-
- // Remove any parts based on eliminated definitions (in a atomicComposition-friendly
- // fashion)
- foreach (var definition in e.RemovedDefinitions)
- {
- ComposablePart removedPart = null;
- bool removed = false;
-
- using (this._lock.LockStateForRead())
- {
- removed = this._activatedParts.TryGetValue(definition, out removedPart);
- }
- if (removed)
- {
- var capturedDefinition = definition;
- ReleasePart(null, removedPart, atomicComposition);
- atomicComposition.AddCompleteActionAllowNull(() =>
- {
- using (this._lock.LockStateForWrite())
- {
- this._activatedParts.Remove(capturedDefinition);
- }
- });
- }
- }
-
- UpdateRejections(addedExports.ConcatAllowingNull(removedExports), atomicComposition);
-
- this.OnExportsChanging(
- new ExportsChangeEventArgs(addedExports, removedExports, atomicComposition));
-
- atomicComposition.AddCompleteAction(() => this.OnExportsChanged(
- new ExportsChangeEventArgs(addedExports, removedExports, null)));
-
- atomicComposition.Complete();
- }
- }
-
- private ComposablePart GetComposablePart(ComposablePartDefinition partDefinition, bool isSharedPart)
- {
- this.ThrowIfDisposed();
- this.EnsureRunning();
-
- ComposablePart part;
-
- if (isSharedPart)
- {
- part = GetSharedPart(partDefinition);
- }
- else
- {
- part = partDefinition.CreatePart();
-
- IDisposable disposablePart = part as IDisposable;
- if (disposablePart != null)
- {
- using (this._lock.LockStateForWrite())
- {
- this._partsToDispose.Add(disposablePart);
- }
- }
- }
-
- return part;
- }
-
- private ComposablePart GetSharedPart(ComposablePartDefinition partDefinition)
- {
- ComposablePart part;
- bool found = false;
-
- using (this._lock.LockStateForRead())
- {
- found = this._activatedParts.TryGetValue(partDefinition, out part);
- }
-
- if (!found)
- {
- ComposablePart newPart = partDefinition.CreatePart();
-
- using (this._lock.LockStateForWrite())
- {
- found = this._activatedParts.TryGetValue(partDefinition, out part);
-
- if (!found)
- {
- part = newPart;
- this._activatedParts.Add(partDefinition, part);
- IDisposable disposablePart = part as IDisposable;
- if (disposablePart != null)
- {
- this._partsToDispose.Add(disposablePart);
- }
- }
- }
- }
-
- return part;
- }
-
- private object GetExportedValue(ComposablePart part, ExportDefinition export, bool isSharedPart)
- {
- this.ThrowIfDisposed();
- this.EnsureRunning();
-
- Assumes.NotNull(part, export);
-
- object exportedValue = CompositionServices.GetExportedValueFromComposedPart(
- this._importEngine, part, export);
-
- // Only hold conditional references for recomposable non-shared parts because we are
- // already holding strong references to the shared parts.
- if (exportedValue != null && !isSharedPart && part.IsRecomposable())
- {
- SetConditionalReferenceForRecomposablePart(exportedValue, part);
- }
-
- return exportedValue;
- }
-
- private void ReleasePart(object exportedValue, ComposablePart part, AtomicComposition atomicComposition)
- {
- this.ThrowIfDisposed();
- this.EnsureRunning();
-
- Assumes.NotNull(part);
-
- this._importEngine.ReleaseImports(part, atomicComposition);
-
- if (exportedValue != null)
- {
- atomicComposition.AddCompleteActionAllowNull(() =>
- {
- using (this._lock.LockStateForWrite())
- {
- this._conditionalReferencesForRecomposableParts.Remove(exportedValue);
- }
- });
- }
-
- IDisposable diposablePart = part as IDisposable;
- if (diposablePart != null)
- {
- atomicComposition.AddCompleteActionAllowNull(() =>
- {
- bool removed = false;
- using (this._lock.LockStateForWrite())
- {
- removed = this._partsToDispose.Remove(diposablePart);
- }
- if (removed)
- {
- diposablePart.Dispose();
- }
- });
- }
- }
-
- private void SetConditionalReferenceForRecomposablePart(object exportedValue, ComposablePart part)
- {
- Assumes.NotNull(exportedValue, part);
-
- List<ComposablePart> partList;
-
- using (this._lock.LockStateForWrite())
- {
- if (!this._conditionalReferencesForRecomposableParts.TryGetValue(exportedValue, out partList))
- {
- partList = new List<ComposablePart>();
- this._conditionalReferencesForRecomposableParts.Add(exportedValue, partList);
- }
-
- // There is one really obscure case (one part exporting exact value multiple times) where
- // the part may already be in the list but it isn't a scenario that is interesting so
- // we simply always add. Later if we change this to support more than non-shared we may
- // need to check if the part already exists to pervent adding it multiple times.
- partList.Add(part);
- }
- }
-
- private bool IsRejected(ComposablePartDefinition definition, AtomicComposition atomicComposition)
- {
- // Check to see if we're currently working on the definition in question.
- // Recursive queries always answer optimistically, as if the definition hasn't
- // been rejected - because if it is we can discard all decisions that were based
- // on the faulty assumption in the first place.
- var forceRejectionTest = false;
- if (atomicComposition != null)
- {
- var atomicCompositionQuery = GetAtomicCompositionQuery(atomicComposition);
- AtomicCompositionQueryState state = atomicCompositionQuery(definition);
- switch (state)
- {
- case AtomicCompositionQueryState.TreatAsRejected:
- return true;
- case AtomicCompositionQueryState.TreatAsValidated:
- return false;
- case AtomicCompositionQueryState.NeedsTesting:
- forceRejectionTest = true;
- break;
- default:
- Assumes.IsTrue(state == AtomicCompositionQueryState.Unknown);
- // Need to do the work to determine the state
- break;
- }
- }
-
- if (!forceRejectionTest)
- {
- // Next, anything that has been activated is not rejected
- using (this._lock.LockStateForRead())
- {
- if (this._activatedParts.ContainsKey(definition))
- {
- return false;
- }
-
- // Last stop before doing the hard work: check a specific registry of rejected parts
- if (this._rejectedParts.Contains(definition))
- {
- return true;
- }
- }
- }
-
- // Determine whether or not the definition's imports can be satisfied
- return DetermineRejection(definition, atomicComposition);
- }
-
- private bool DetermineRejection(ComposablePartDefinition definition, AtomicComposition parentAtomicComposition)
- {
- ChangeRejectedException exception = null;
-
- using (var localAtomicComposition = new AtomicComposition(parentAtomicComposition))
- {
- // The part definition we're currently working on is treated optimistically
- // as if we know it hasn't been rejected. This handles recursion, and if we
- // later decide that it has been rejected we'll discard all nested progress so
- // all side-effects of the mistake are erased.
- //
- // Note that this means that recursive failures that would be detected by the
- // import engine are not discovered by rejection currently. Loops among
- // prerequisites, runaway import chains involving factories, and prerequisites
- // that cannot be fully satisfied still result in runtime errors. Doing
- // otherwise would be possible but potentially expensive - and could be a v2
- // improvement if deemed worthwhile.
- UpdateAtomicCompositionQuery(localAtomicComposition,
- def => definition.Equals(def), AtomicCompositionQueryState.TreatAsValidated);
-
- var newPart = definition.CreatePart();
- try
- {
- this._importEngine.PreviewImports(newPart, localAtomicComposition);
-
- // Reuse the partially-fleshed out part the next time we need a shared
- // instance to keep the expense of pre-validation to a minimum. Note that
- // _activatedParts holds references to both shared and non-shared parts.
- // The non-shared parts will only be used for rejection purposes only but
- // the shared parts will be handed out when requested via GetExports as
- // well as be used for rejection purposes.
- localAtomicComposition.AddCompleteActionAllowNull(() =>
- {
- using (this._lock.LockStateForWrite())
- {
- if (!this._activatedParts.ContainsKey(definition))
- {
- this._activatedParts.Add(definition, newPart);
- IDisposable newDisposablePart = newPart as IDisposable;
- if (newDisposablePart != null)
- {
- this._partsToDispose.Add(newDisposablePart);
- }
- }
- }
- });
-
- // Success! Complete any recursive work that was conditioned on this part's validation
- localAtomicComposition.Complete();
-
- return false;
- }
- catch (ChangeRejectedException ex)
- {
- exception = ex;
- }
- }
-
- // If we've reached this point then this part has been rejected so we need to
- // record the rejection in our parent composition or execute it immediately if
- // one doesn't exist.
- parentAtomicComposition.AddCompleteActionAllowNull(() =>
- {
- using (this._lock.LockStateForWrite())
- {
- this._rejectedParts.Add(definition);
- }
-
- CompositionTrace.PartDefinitionRejected(definition, exception);
-
- });
- if (parentAtomicComposition != null)
- {
- UpdateAtomicCompositionQuery(parentAtomicComposition,
- def => definition.Equals(def), AtomicCompositionQueryState.TreatAsRejected);
- }
-
- return true;
- }
-
- private void UpdateRejections(IEnumerable<ExportDefinition> changedExports, AtomicComposition atomicComposition)
- {
- using (var localAtomicComposition = new AtomicComposition(atomicComposition))
- {
- // Reconsider every part definition that has been previously
- // rejected to see if any of them can be added back.
- var affectedRejections = new HashSet<ComposablePartDefinition>();
- var atomicCompositionQuery = GetAtomicCompositionQuery(localAtomicComposition);
-
- ComposablePartDefinition[] rejectedParts;
- using (this._lock.LockStateForRead())
- {
- rejectedParts = this._rejectedParts.ToArray();
- }
- foreach (var definition in rejectedParts)
- {
- if (atomicCompositionQuery(definition) == AtomicCompositionQueryState.TreatAsValidated)
- {
- continue;
- }
-
- foreach (var import in definition.ImportDefinitions.Where(ImportEngine.IsRequiredImportForPreview))
- {
- if (changedExports.Any(export => import.IsConstraintSatisfiedBy(export)))
- {
- affectedRejections.Add(definition);
- break;
- }
- }
- }
- UpdateAtomicCompositionQuery(localAtomicComposition,
- def => affectedRejections.Contains(def), AtomicCompositionQueryState.NeedsTesting);
-
- // Determine if any of the resurrectable parts is now available so that we can
- // notify listeners of the exact changes to exports
- var resurrectedExports = new List<ExportDefinition>();
-
- foreach (var partDefinition in affectedRejections)
- {
- if (!IsRejected(partDefinition, localAtomicComposition))
- {
- // Notify listeners of the newly available exports and
- // prepare to remove the rejected part from the list of rejections
- resurrectedExports.AddRange(partDefinition.ExportDefinitions);
-
- // Capture the local so that the closure below refers to the current definition
- // in the loop and not the value of 'partDefinition' when the closure executes
- var capturedPartDefinition = partDefinition;
- localAtomicComposition.AddCompleteAction(() =>
- {
- using (this._lock.LockStateForWrite())
- {
- this._rejectedParts.Remove(capturedPartDefinition);
- }
-
- CompositionTrace.PartDefinitionResurrected(capturedPartDefinition);
- });
- }
- }
-
- // Notify anyone sourcing exports that the resurrected exports have appeared
- if (resurrectedExports.Any())
- {
- this.OnExportsChanging(
- new ExportsChangeEventArgs(resurrectedExports, new ExportDefinition[0], localAtomicComposition));
-
- localAtomicComposition.AddCompleteAction(() => this.OnExportsChanged(
- new ExportsChangeEventArgs(resurrectedExports, new ExportDefinition[0], null)));
- }
-
- localAtomicComposition.Complete();
- }
- }
-
- [DebuggerStepThrough]
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
-
- /// <summary>
- /// EnsureCanRun must be called from within a lock.
- /// </summary>
- [DebuggerStepThrough]
- private void EnsureCanRun()
- {
- if ((this._sourceProvider == null) || (this._importEngine == null))
- {
- throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Strings.ObjectMustBeInitialized, "SourceProvider")); // NOLOC
- }
- }
-
- [DebuggerStepThrough]
- private void EnsureRunning()
- {
- if (!this._isRunning)
- {
- using (this._lock.LockStateForWrite())
- {
- if (!this._isRunning)
- {
- this.EnsureCanRun();
- this._isRunning = true;
- }
- }
- }
- }
-
- /// <summary>
- /// EnsureCanSet<T> must be called from within a lock.
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="currentValue"></param>
- [DebuggerStepThrough]
- private void EnsureCanSet<T>(T currentValue)
- where T : class
- {
- if ((this._isRunning) || (currentValue != null))
- {
- throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Strings.ObjectAlreadyInitialized));
- }
- }
-
- private Func<ComposablePartDefinition, AtomicCompositionQueryState> GetAtomicCompositionQuery(AtomicComposition atomicComposition)
- {
- Func<ComposablePartDefinition, AtomicCompositionQueryState> atomicCompositionQuery;
- atomicComposition.TryGetValue(this, out atomicCompositionQuery);
-
- if (atomicCompositionQuery == null)
- {
- return (definition) => AtomicCompositionQueryState.Unknown;
- }
-
- return atomicCompositionQuery;
- }
-
- private void UpdateAtomicCompositionQuery(
- AtomicComposition atomicComposition,
- Func<ComposablePartDefinition, bool> query,
- AtomicCompositionQueryState state)
- {
- var parentQuery = GetAtomicCompositionQuery(atomicComposition);
- Func<ComposablePartDefinition, AtomicCompositionQueryState> newQuery = definition =>
- {
- if (query(definition))
- {
- return state;
- }
- return parentQuery(definition);
- };
-
- atomicComposition.SetValue(this, newQuery);
- }
-
- private enum AtomicCompositionQueryState
- {
- Unknown,
- TreatAsRejected,
- TreatAsValidated,
- NeedsTesting
- };
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartCatalogChangeEventArgs.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartCatalogChangeEventArgs.cs
deleted file mode 100644
index 9d2ee11..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartCatalogChangeEventArgs.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// Provides data for the <see cref="INotifyComposablePartCatalogChanged.Changed"/> and
- /// <see cref="INotifyComposablePartCatalogChanged.Changing"/> events.
- /// </summary>
- public class ComposablePartCatalogChangeEventArgs : EventArgs
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartCatalogChangeEventArgs"/>.
- /// </summary>
- /// <param name="addedDefinitions">
- /// An <see cref="IEnumerable{T}"/> of <see cref="ComposablePartDefinition"/> objects that
- /// are being added to the <see cref="ComposablePartCatalog"/>.
- /// </param>
- /// <param name="removedDefinitions">
- /// An <see cref="IEnumerable{T}"/> of <see cref="ComposablePartDefinition"/> objects that
- /// are being removed from the <see cref="ComposablePartCatalog"/>.
- /// </param>
- /// <param name="atomicComposition">
- /// A <see cref="AtomicComposition"/> representing all tentative changes that will
- /// be completed if the change is successful, or discarded if it is not.
- /// <see langword="null"/> if being applied outside a <see cref="AtomicComposition"/>
- /// or during a <see cref="INotifyComposablePartCatalogChanged.Changed"/> event.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="addedDefinitions"/> or <paramref name="removedDefinitions"/> is <see langword="null"/>.
- /// </exception>
- public ComposablePartCatalogChangeEventArgs(IEnumerable<ComposablePartDefinition> addedDefinitions,
- IEnumerable<ComposablePartDefinition> removedDefinitions, AtomicComposition atomicComposition)
- {
- Requires.NotNull(addedDefinitions, "addedDefinitions");
- Requires.NotNull(removedDefinitions, "removedDefinitions");
-
- this.AddedDefinitions = addedDefinitions.AsArray();
- this.RemovedDefinitions = removedDefinitions.AsArray();
- this.AtomicComposition = atomicComposition;
- }
-
- /// <summary>
- /// Gets the identifiers of the parts that have been added.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of <see cref="ComposablePartDefinition"/> objects that
- /// have been added to the <see cref="ComposablePartCatalog"/>.
- /// </value>
- public IEnumerable<ComposablePartDefinition> AddedDefinitions { get; private set; }
-
- /// <summary>
- /// Gets the identifiers of the parts that have been removed.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of <see cref="ComposablePartDefinition"/> objects that
- /// have been removed from from the <see cref="ComposablePartCatalog"/>.
- /// </value>
- public IEnumerable<ComposablePartDefinition> RemovedDefinitions { get; private set; }
-
- /// <summary>
- /// Gets the atomicComposition, if any, that this change applies to.
- /// </summary>
- /// <value>
- /// A <see cref="AtomicComposition"/> that this set of changes applies too.
- /// It can be <see langword="null"/> if the changes are being applied outside a
- /// <see cref="AtomicComposition"/> or during a
- /// <see cref="INotifyComposablePartCatalogChanged.Changed"/> event.
- ///
- /// When the value is non-null it should be used to record temporary changed state
- /// and actions that will be executed when the atomicComposition is completeed.
- /// </value>
- public AtomicComposition AtomicComposition { get; private set; }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartCatalogCollection.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartCatalogCollection.cs
deleted file mode 100644
index ed20128..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartCatalogCollection.cs
+++ /dev/null
@@ -1,420 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.ObjectModel;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Diagnostics;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// This class implements a threadsafe ICollection{T} of ComposablePartCatalog.
- /// It is exposed as an ICollection(ComposablePartCatalog)
- /// It is threadsafe, notifications are not marshalled using a SynchronizationContext.
- /// It is Disposable.
- /// </summary>
- internal class ComposablePartCatalogCollection : ICollection<ComposablePartCatalog>, INotifyComposablePartCatalogChanged, IDisposable
- {
- private readonly Lock _lock = new Lock();
- private Action<ComposablePartCatalogChangeEventArgs> _onChanged;
- private Action<ComposablePartCatalogChangeEventArgs> _onChanging;
- private List<ComposablePartCatalog> _catalogs = new List<ComposablePartCatalog>();
- private volatile bool _isCopyNeeded = false;
- private volatile bool _isDisposed = false;
- private bool _hasChanged = false;
-
- public ComposablePartCatalogCollection(IEnumerable<ComposablePartCatalog> catalogs)
- : this(catalogs, null, null)
- {
- }
-
- public ComposablePartCatalogCollection(
- IEnumerable<ComposablePartCatalog> catalogs,
- Action<ComposablePartCatalogChangeEventArgs> onChanged,
- Action<ComposablePartCatalogChangeEventArgs> onChanging)
- {
- catalogs = catalogs ?? Enumerable.Empty<ComposablePartCatalog>();
- this._catalogs = new List<ComposablePartCatalog>(catalogs);
- this._onChanged = onChanged;
- this._onChanging = onChanging;
-
- SubscribeToCatalogNotifications(catalogs);
- }
-
- public void Add(ComposablePartCatalog item)
- {
- Requires.NotNull(item, "item");
-
- this.ThrowIfDisposed();
-
- var addedParts = new Lazy<IEnumerable<ComposablePartDefinition>>(() => item.Parts.ToArray(), false);
-
- using (var atomicComposition = new AtomicComposition())
- {
- this.RaiseChangingEvent(addedParts, null, atomicComposition);
-
- using (new WriteLock(this._lock))
- {
- if (this._isCopyNeeded)
- {
- this._catalogs = new List<ComposablePartCatalog>(this._catalogs);
- this._isCopyNeeded = false;
- }
- this._hasChanged = true;
- this._catalogs.Add(item);
- }
-
- this.SubscribeToCatalogNotifications(item);
-
- // Complete after the catalog changes are written
- atomicComposition.Complete();
- }
-
- this.RaiseChangedEvent(addedParts, null);
- }
-
- /// <summary>
- /// Notify when the contents of the Catalog has changed.
- /// </summary>
- public event EventHandler<ComposablePartCatalogChangeEventArgs> Changed;
-
- /// <summary>
- /// Notify when the contents of the Catalog has changing.
- /// </summary>
- public event EventHandler<ComposablePartCatalogChangeEventArgs> Changing;
-
- public void Clear()
- {
- this.ThrowIfDisposed();
-
- // No action is required if we are already empty
- ComposablePartCatalog[] catalogs = null;
- using (new ReadLock(this._lock))
- {
- if (this._catalogs.Count == 0)
- {
- return;
- }
- catalogs = this._catalogs.ToArray();
- }
-
- //TODO-MT: This is pretty suspect - we can easily eliminate catalogs that aren't listed as being
- // removed. Then again, the idea of trying to mutate the catalog on two threads at the same time is pretty
- // suspect to begin with. When would that ever result in a meaningful composition?
-
- // We are doing this outside of the lock, so it's possible that the catalog will continute propagating events from things
- // we are about to unsubscribe from. Given the non-specificity of our event, in the worst case scenario we would simply fire
- // unnecessary events.
-
- var removedParts = new Lazy<IEnumerable<ComposablePartDefinition>>(() => catalogs.SelectMany(catalog => catalog.Parts).ToArray(), false);
-
- // Validate the changes before applying them
- using (var atomicComposition = new AtomicComposition())
- {
- this.RaiseChangingEvent(null, removedParts, atomicComposition);
- this.UnsubscribeFromCatalogNotifications(catalogs);
-
- using (new WriteLock(this._lock))
- {
- this._catalogs = new List<ComposablePartCatalog>();
-
- this._isCopyNeeded = false;
- this._hasChanged = true;
- }
-
- // Complete after the catalog changes are written
- atomicComposition.Complete();
- }
-
- this.RaiseChangedEvent(null, removedParts);
- }
-
- public bool Contains(ComposablePartCatalog item)
- {
- Requires.NotNull(item, "item");
-
- this.ThrowIfDisposed();
-
- using (new ReadLock(this._lock))
- {
- return this._catalogs.Contains(item);
- }
- }
-
- public void CopyTo(ComposablePartCatalog[] array, int arrayIndex)
- {
- this.ThrowIfDisposed();
-
- using (new ReadLock(this._lock))
- {
- this._catalogs.CopyTo(array, arrayIndex);
- }
- }
-
- public int Count
- {
- get
- {
- this.ThrowIfDisposed();
-
- using (new ReadLock(this._lock))
- {
- return this._catalogs.Count;
- }
- }
- }
-
- public bool IsReadOnly
- {
- get
- {
- this.ThrowIfDisposed();
-
- return false;
- }
- }
-
- public bool Remove(ComposablePartCatalog item)
- {
- Requires.NotNull(item, "item");
-
- this.ThrowIfDisposed();
-
- using (new ReadLock(this._lock))
- {
- if (!this._catalogs.Contains(item))
- {
- return false;
- }
- }
-
- bool isSuccessfulRemoval = false;
-
- var removedParts = new Lazy<IEnumerable<ComposablePartDefinition>>(() => item.Parts.ToArray(), false);
- using (var atomicComposition = new AtomicComposition())
- {
- this.RaiseChangingEvent(null, removedParts, atomicComposition);
-
- using (new WriteLock(this._lock))
- {
- if (_isCopyNeeded)
- {
- this._catalogs = new List<ComposablePartCatalog>(this._catalogs);
- this._isCopyNeeded = false;
- }
-
- isSuccessfulRemoval = this._catalogs.Remove(item);
- if (isSuccessfulRemoval)
- {
- this._hasChanged = true;
- }
- }
-
- this.UnsubscribeFromCatalogNotifications(item);
-
- // Complete after the catalog changes are written
- atomicComposition.Complete();
- }
-
- this.RaiseChangedEvent(null, removedParts);
-
- return isSuccessfulRemoval;
- }
-
- internal bool HasChanged
- {
- get
- {
- this.ThrowIfDisposed();
-
- using (new ReadLock(this._lock))
- {
- return this._hasChanged;
- }
- }
- }
-
- public IEnumerator<ComposablePartCatalog> GetEnumerator()
- {
- this.ThrowIfDisposed();
-
- using (new ReadLock(this._lock))
- {
- IEnumerator<ComposablePartCatalog> enumerator = this._catalogs.GetEnumerator();
- this._isCopyNeeded = true;
- return enumerator;
- }
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return this.GetEnumerator();
- }
-
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- if (!this._isDisposed)
- {
- bool disposeLock = false;
- IEnumerable<ComposablePartCatalog> catalogs = null;
- try
- {
- using (new WriteLock(this._lock))
- {
- if (!this._isDisposed)
- {
- disposeLock = true;
-
- catalogs = this._catalogs;
- this._catalogs = null;
-
- this._isDisposed = true;
- }
- }
- }
- finally
- {
- if (catalogs != null)
- {
- this.UnsubscribeFromCatalogNotifications(catalogs);
- catalogs.ForEach(catalog => catalog.Dispose());
- }
-
- if (disposeLock)
- {
- this._lock.Dispose();
- }
- }
- }
- }
- }
-
- private void RaiseChangedEvent(
- Lazy<IEnumerable<ComposablePartDefinition>> addedDefinitions,
- Lazy<IEnumerable<ComposablePartDefinition>> removedDefinitions)
- {
- if (this._onChanged == null || this.Changed == null)
- {
- return;
- }
-
- var added = (addedDefinitions == null ? Enumerable.Empty<ComposablePartDefinition>() : addedDefinitions.Value);
- var removed = (removedDefinitions == null ? Enumerable.Empty<ComposablePartDefinition>() : removedDefinitions.Value);
-
- this._onChanged.Invoke(new ComposablePartCatalogChangeEventArgs(added, removed, null));
- }
-
- public void OnChanged(object sender, ComposablePartCatalogChangeEventArgs e)
- {
- var changedEvent = this.Changed;
- if (changedEvent != null)
- {
- changedEvent(sender, e);
- }
- }
-
- private void RaiseChangingEvent(
- Lazy<IEnumerable<ComposablePartDefinition>> addedDefinitions,
- Lazy<IEnumerable<ComposablePartDefinition>> removedDefinitions,
- AtomicComposition atomicComposition)
- {
- if (this._onChanging == null || this.Changing == null)
- {
- return;
- }
- var added = (addedDefinitions == null ? Enumerable.Empty<ComposablePartDefinition>() : addedDefinitions.Value);
- var removed = (removedDefinitions == null ? Enumerable.Empty<ComposablePartDefinition>() : removedDefinitions.Value);
-
- this._onChanging.Invoke(new ComposablePartCatalogChangeEventArgs(added, removed, atomicComposition));
- }
-
- public void OnChanging(object sender, ComposablePartCatalogChangeEventArgs e)
- {
- var changingEvent = this.Changing;
- if (changingEvent != null)
- {
- changingEvent(sender, e);
- }
- }
-
- private void OnContainedCatalogChanged(object sender, ComposablePartCatalogChangeEventArgs e)
- {
- if (this._onChanged == null || this.Changed == null)
- {
- return;
- }
-
- this._onChanged.Invoke(e);
- }
-
- private void OnContainedCatalogChanging(object sender, ComposablePartCatalogChangeEventArgs e)
- {
- if (this._onChanging == null || this.Changing == null)
- {
- return;
- }
-
- this._onChanging.Invoke(e);
- }
-
- private void SubscribeToCatalogNotifications(ComposablePartCatalog catalog)
- {
- INotifyComposablePartCatalogChanged notifyCatalog = catalog as INotifyComposablePartCatalogChanged;
- if (notifyCatalog != null)
- {
- notifyCatalog.Changed += this.OnContainedCatalogChanged;
- notifyCatalog.Changing += this.OnContainedCatalogChanging;
- }
- }
-
- private void SubscribeToCatalogNotifications(IEnumerable<ComposablePartCatalog> catalogs)
- {
- foreach (var catalog in catalogs)
- {
- SubscribeToCatalogNotifications(catalog);
- }
- }
-
- private void UnsubscribeFromCatalogNotifications(ComposablePartCatalog catalog)
- {
- INotifyComposablePartCatalogChanged notifyCatalog = catalog as INotifyComposablePartCatalogChanged;
- if (notifyCatalog != null)
- {
- notifyCatalog.Changed -= this.OnContainedCatalogChanged;
- notifyCatalog.Changing -= this.OnContainedCatalogChanging;
- }
- }
-
- private void UnsubscribeFromCatalogNotifications(IEnumerable<ComposablePartCatalog> catalogs)
- {
- foreach (var catalog in catalogs)
- {
- UnsubscribeFromCatalogNotifications(catalog);
- }
- }
-
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartExportProvider.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartExportProvider.cs
deleted file mode 100644
index 5337b4e..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartExportProvider.cs
+++ /dev/null
@@ -1,396 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Globalization;
-using System.Linq;
-using System.Threading;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public class ComposablePartExportProvider : ExportProvider, IDisposable
- {
- private List<ComposablePart> _parts = new List<ComposablePart>();
- private volatile bool _isDisposed = false;
- private volatile bool _isRunning = false;
- private CompositionLock _lock = null;
- private ExportProvider _sourceProvider;
- private ImportEngine _importEngine;
- private volatile bool _currentlyComposing;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartExportProvider"/> class.
- /// </summary>
- public ComposablePartExportProvider() :
- this(false)
- {
- }
-
- public ComposablePartExportProvider(bool isThreadSafe)
- {
- this._lock = new CompositionLock(isThreadSafe);
- }
-
- /// <summary>
- /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
- /// </summary>
- public void Dispose()
- {
- this.Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources
- /// </summary>
- /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- if (!this._isDisposed)
- {
- bool disposeLock = false;
- ImportEngine oldImportEngine = null;
- try
- {
- using (this._lock.LockStateForWrite())
- {
- if (!this._isDisposed)
- {
- oldImportEngine = this._importEngine;
- this._importEngine = null;
- this._sourceProvider = null;
- this._isDisposed = true;
- disposeLock = true;
- }
- }
- }
- finally
- {
- if (oldImportEngine != null)
- {
- oldImportEngine.Dispose();
- }
-
- if (disposeLock)
- {
- this._lock.Dispose();
- }
- }
- }
- }
- }
-
- /// <summary>
- /// Gets the export provider which provides the provider access to
- /// exports.
- /// </summary>
- /// <value>
- /// The <see cref="ExportProvider"/> which provides the
- /// <see cref="ComposablePartExportProvider"/> access to <see cref="Export"/> objects.
- /// The default is <see langword="null"/>.
- /// </value>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="value"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="InvalidOperationException">
- /// This property has already been set.
- /// <para>
- /// -or-
- /// </para>
- /// The methods on the <see cref="ComposablePartExportProvider"/>
- /// have already been accessed.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePartExportProvider"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// This property must be set before accessing any methods on the
- /// <see cref="ComposablePartExportProvider"/>.
- /// </remarks>
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Justification = "EnsureCanSet ensures that the property is set only once, Dispose is not required")]
- public ExportProvider SourceProvider
- {
- get
- {
- this.ThrowIfDisposed();
-
- return this._sourceProvider;
- }
- set
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(value, "value");
- using (this._lock.LockStateForWrite())
- {
- this.EnsureCanSet(this._sourceProvider);
- this._sourceProvider = value;
- }
-
- // This should be safe to do outside the lock, because only the first setter will ever win
- // and others will throw
- ImportEngine importEngine = new ImportEngine(this._sourceProvider, this._lock.IsThreadSafe);
- Thread.MemoryBarrier();
- this._importEngine = importEngine;
- }
- }
-
- /// <summary>
- /// Returns all exports that match the conditions of the specified import.
- /// </summary>
- /// <param name="definition">The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> to get.</param>
- /// <returns></returns>
- /// <result>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects that match
- /// the conditions defined by <see cref="ImportDefinition"/>, if found; otherwise, an
- /// empty <see cref="IEnumerable{T}"/>.
- /// </result>
- /// <remarks>
- /// <note type="inheritinfo">
- /// The implementers should not treat the cardinality-related mismatches as errors, and are not
- /// expected to throw exceptions in those cases.
- /// For instance, if the import requests exactly one export and the provider has no matching exports or more than one,
- /// it should return an empty <see cref="IEnumerable{T}"/> of <see cref="Export"/>.
- /// </note>
- /// </remarks>
- protected override IEnumerable<Export> GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition)
- {
- this.ThrowIfDisposed();
- this.EnsureRunning();
-
- // Determine whether there is a composition atomicComposition-specific list of parts to use,
- // failing that use the usual list. We never change the list of parts in place,
- // but rather copy, change and write a new list atomically. Therefore all we need
- // to do here is to read the _parts member.
- List<ComposablePart> parts = null;
- using (this._lock.LockStateForRead())
- {
- parts = atomicComposition.GetValueAllowNull(this, this._parts);
- }
-
- if (parts.Count == 0)
- {
- return Enumerable.Empty<Export>();
- }
-
- List<Export> exports = new List<Export>();
- foreach (var part in parts)
- {
- foreach (var exportDefinition in part.ExportDefinitions)
- {
- if (definition.IsConstraintSatisfiedBy(exportDefinition))
- {
- exports.Add(this.CreateExport(part, exportDefinition));
- }
- }
- }
- return exports;
- }
-
- public void Compose(CompositionBatch batch)
- {
- this.ThrowIfDisposed();
- this.EnsureRunning();
-
- Requires.NotNull(batch, "batch");
-
- // Quick exit test can be done prior to cloning since it's just an optimization, not a
- // change in behavior
- if ((batch.PartsToAdd.Count == 0) && (batch.PartsToRemove.Count == 0))
- {
- return;
- }
-
- CompositionResult result = CompositionResult.SucceededResult;
-
- // Clone the batch, so that the external changes wouldn't happen half-way thorugh compose
- // NOTE : this does not guarantee the atomicity of cloning, which is not the goal anyway,
- // rather the fact that all subsequent calls will deal with an unchanging batch
- batch = new CompositionBatch(batch.PartsToAdd, batch.PartsToRemove);
-
- var newParts = GetUpdatedPartsList(batch);
-
- // Allow only recursive calls from the import engine to see the changes until
- // they've been verified ...
- using (var atomicComposition = new AtomicComposition())
- {
- // Don't allow reentrant calls to compose during previewing to prevent
- // corrupted state.
- if (this._currentlyComposing)
- {
- throw new InvalidOperationException(Strings.ReentrantCompose);
- }
-
- this._currentlyComposing = true;
-
- try
- {
- // In the meantime recursive calls need to be able to see the list as well
- atomicComposition.SetValue(this, newParts);
-
- // Recompose any existing imports effected by the these changes first so that
- // adapters, resurrected parts, etc. can all play their role in satisfying
- // imports for added parts
- this.Recompose(batch, atomicComposition);
-
- // Ensure that required imports can be satisfied
- foreach (ComposablePart part in batch.PartsToAdd)
- {
- // collect the result of previewing all the adds in the batch
- try
- {
- this._importEngine.PreviewImports(part, atomicComposition);
- }
- catch (ChangeRejectedException ex)
- {
- result = result.MergeResult(new CompositionResult(ex.Errors));
- }
- }
-
- result.ThrowOnErrors(atomicComposition);
-
- // Complete the new parts since they passed previewing.`
- using (this._lock.LockStateForWrite())
- {
- this._parts = newParts;
- }
-
- atomicComposition.Complete();
- }
- finally
- {
- this._currentlyComposing = false;
- }
- }
-
- // Satisfy Imports
- // - Satisfy imports on all newly added component parts
- foreach (ComposablePart part in batch.PartsToAdd)
- {
- result = result.MergeResult(CompositionServices.TryInvoke(() =>
- this._importEngine.SatisfyImports(part)));
- }
-
- // return errors
- result.ThrowOnErrors();
- }
-
- private List<ComposablePart> GetUpdatedPartsList(CompositionBatch batch)
- {
- Assumes.NotNull(batch);
-
- // Copy the current list of parts - we are about to modify it
- // This is an OK thing to do as this is the only method that can modify the List AND Compose can
- // only be executed on one thread at a time - thus two different threads cannot tramp over each other
- List<ComposablePart> parts = null;
- using (this._lock.LockStateForRead())
- {
- parts = this._parts.ToList(); // this copies the list
- }
-
- foreach (ComposablePart part in batch.PartsToAdd)
- {
- parts.Add(part);
- }
-
- foreach (ComposablePart part in batch.PartsToRemove)
- {
- parts.Remove(part);
- }
-
- return parts;
- }
-
- private void Recompose(CompositionBatch batch, AtomicComposition atomicComposition)
- {
- Assumes.NotNull(batch);
-
- // Unregister any removed component parts
- foreach (ComposablePart part in batch.PartsToRemove)
- {
- this._importEngine.ReleaseImports(part, atomicComposition);
- }
-
- // Recompose any imports effected by the these changes (the changes are
- // observable through GetExports in the appropriate atomicComposition, thus we can fire
- // the event
- IEnumerable<ExportDefinition> addedExports = batch.PartsToAdd.Count != 0 ?
- batch.PartsToAdd.SelectMany(part => part.ExportDefinitions).ToArray() :
- new ExportDefinition[0];
-
- IEnumerable<ExportDefinition> removedExports = batch.PartsToRemove.Count != 0 ?
- batch.PartsToRemove.SelectMany(part => part.ExportDefinitions).ToArray() :
- new ExportDefinition[0];
-
- this.OnExportsChanging(
- new ExportsChangeEventArgs(addedExports, removedExports, atomicComposition));
-
- atomicComposition.AddCompleteAction(() => this.OnExportsChanged(
- new ExportsChangeEventArgs(addedExports, removedExports, null)));
- }
-
- private Export CreateExport(ComposablePart part, ExportDefinition export)
- {
- return new Export(export, () => GetExportedValue(part, export));
- }
-
- private object GetExportedValue(ComposablePart part, ExportDefinition export)
- {
- this.ThrowIfDisposed();
- this.EnsureRunning();
-
- return CompositionServices.GetExportedValueFromComposedPart(this._importEngine, part, export);
- }
-
- [DebuggerStepThrough]
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw new ObjectDisposedException(this.GetType().Name);
- }
- }
-
- [DebuggerStepThrough]
- private void EnsureCanRun()
- {
- if ((this._sourceProvider == null) || (this._importEngine == null))
- {
- throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Strings.ObjectMustBeInitialized, "SourceProvider")); // NOLOC
- }
- }
-
- [DebuggerStepThrough]
- private void EnsureRunning()
- {
- if (!this._isRunning)
- {
- using (this._lock.LockStateForWrite())
- {
- if (!this._isRunning)
- {
- this.EnsureCanRun();
- this._isRunning = true;
- }
- }
- }
- }
-
- [DebuggerStepThrough]
- private void EnsureCanSet<T>(T currentValue)
- where T : class
- {
- if ((this._isRunning) || (currentValue != null))
- {
- throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Strings.ObjectAlreadyInitialized));
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionBatch.SingleExportComposablePart.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionBatch.SingleExportComposablePart.cs
deleted file mode 100644
index fd5875e..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionBatch.SingleExportComposablePart.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Linq;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- partial class CompositionBatch
- {
- // Represents a part that exports a single export
- private class SingleExportComposablePart : ComposablePart
- {
- private readonly Export _export;
-
- public SingleExportComposablePart(Export export)
- {
- Assumes.NotNull(export);
-
- this._export = export;
- }
-
- public override IDictionary<string, object> Metadata
- {
- get { return MetadataServices.EmptyMetadata; }
- }
-
- public override IEnumerable<ExportDefinition> ExportDefinitions
- {
- get { return new ExportDefinition[] { _export.Definition }; }
- }
-
- public override IEnumerable<ImportDefinition> ImportDefinitions
- {
- get { return Enumerable.Empty<ImportDefinition>(); }
- }
-
- public override object GetExportedValue(ExportDefinition definition)
- {
- Requires.NotNull(definition, "definition");
-
- if (definition != _export.Definition)
- {
- throw ExceptionBuilder.CreateExportDefinitionNotOnThisComposablePart("definition");
- }
-
- return _export.Value;
- }
-
- public override void SetImport(ImportDefinition definition, IEnumerable<Export> exports)
- {
- Requires.NotNull(definition, "definition");
- Requires.NotNullOrNullElements(exports, "exports");
-
- throw ExceptionBuilder.CreateImportDefinitionNotOnThisComposablePart("definition");
- }
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionBatch.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionBatch.cs
deleted file mode 100644
index 43dd7f9..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionBatch.cs
+++ /dev/null
@@ -1,174 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Linq;
-using Microsoft.Internal;
-using System.Collections.ObjectModel;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class CompositionBatch
- {
- private object _lock = new object();
- private bool _copyNeededForAdd;
- private bool _copyNeededForRemove;
- private List<ComposablePart> _partsToAdd;
- private ReadOnlyCollection<ComposablePart> _readOnlyPartsToAdd;
- private List<ComposablePart> _partsToRemove;
- private ReadOnlyCollection<ComposablePart> _readOnlyPartsToRemove;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionBatch"/> class.
- /// </summary>
- public CompositionBatch() :
- this(null, null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionBatch"/> class.
- /// </summary>
- /// <param name="partsToAdd">The parts to add.</param>
- /// <param name="partsToRemove">The parts to remove.</param>
- public CompositionBatch(IEnumerable<ComposablePart> partsToAdd, IEnumerable<ComposablePart> partsToRemove)
- {
- this._partsToAdd = new List<ComposablePart>();
- if (partsToAdd != null)
- {
- foreach (var part in partsToAdd)
- {
- if (part == null)
- {
- throw ExceptionBuilder.CreateContainsNullElement("partsToAdd");
- }
- this._partsToAdd.Add(part);
- }
- }
- this._readOnlyPartsToAdd = this._partsToAdd.AsReadOnly();
-
- this._partsToRemove = new List<ComposablePart>();
- if (partsToRemove != null)
- {
- foreach (var part in partsToRemove)
- {
- if (part == null)
- {
- throw ExceptionBuilder.CreateContainsNullElement("partsToRemove");
- }
- this._partsToRemove.Add(part);
- }
- }
- this._readOnlyPartsToRemove = this._partsToRemove.AsReadOnly();
- }
-
- /// <summary>
- /// Returns the collection of parts that will be added.
- /// </summary>
- /// <value>The parts to be added.</value>
- public ReadOnlyCollection<ComposablePart> PartsToAdd
- {
- get
- {
- lock (this._lock)
- {
- this._copyNeededForAdd = true;
- return this._readOnlyPartsToAdd;
- }
- }
- }
-
- /// <summary>
- /// Returns the collection of parts that will be removed.
- /// </summary>
- /// <value>The parts to be removed.</value>
- public ReadOnlyCollection<ComposablePart> PartsToRemove
- {
- get
- {
- lock (this._lock)
- {
- this._copyNeededForRemove = true;
- return this._readOnlyPartsToRemove;
- }
- }
- }
-
- /// <summary>
- /// Adds the specified part to the <see cref="CompositionBatch"/>.
- /// </summary>
- /// <param name="part">
- /// The part.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="part"/> is <see langword="null"/>.
- /// </exception>
- public void AddPart(ComposablePart part)
- {
- Requires.NotNull(part, "part");
- lock (this._lock)
- {
- if (this._copyNeededForAdd)
- {
- this._partsToAdd = new List<ComposablePart>(this._partsToAdd);
- this._readOnlyPartsToAdd = this._partsToAdd.AsReadOnly();
- this._copyNeededForAdd = false;
- }
- this._partsToAdd.Add(part);
- }
- }
-
- /// <summary>
- /// Removes the specified part from the <see cref="CompositionBatch"/>.
- /// </summary>
- /// <param name="part">
- /// The part.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="part"/> is <see langword="null"/>.
- /// </exception>
- public void RemovePart(ComposablePart part)
- {
- Requires.NotNull(part, "part");
- lock (this._lock)
- {
- if (this._copyNeededForRemove)
- {
- this._partsToRemove = new List<ComposablePart>(this._partsToRemove);
- this._readOnlyPartsToRemove = this._partsToRemove.AsReadOnly();
- this._copyNeededForRemove = false;
- }
- this._partsToRemove.Add(part);
- }
- }
-
- /// <summary>
- /// Adds the specified export to the <see cref="CompositionBatch"/>.
- /// </summary>
- /// <param name="export">
- /// The <see cref="Export"/> to add to the <see cref="CompositionBatch"/>.
- /// </param>
- /// <returns>
- /// A <see cref="ComposablePart"/> that can be used remove the <see cref="Export"/>
- /// from the <see cref="CompositionBatch"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="export"/> is <see langword="null"/>.
- /// </exception>
- /// <remarks>
- /// </remarks>
- public ComposablePart AddExport(Export export)
- {
- Requires.NotNull(export, "export");
-
- ComposablePart part = new SingleExportComposablePart(export);
-
- this.AddPart(part);
-
- return part;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionConstants.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionConstants.cs
deleted file mode 100644
index 5a1c29a..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionConstants.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public static class CompositionConstants
- {
- private const string CompositionNamespace = "System.ComponentModel.Composition";
-
- public const string PartCreationPolicyMetadataName = CompositionNamespace + ".CreationPolicy";
- public const string ExportTypeIdentityMetadataName = "ExportTypeIdentity";
- internal const string ProductDefinitionMetadataName = "ProductDefinition";
-
- internal const string PartCreatorContractName = CompositionNamespace + ".Contracts.ExportFactory";
- internal static readonly string PartCreatorTypeIdentity = AttributedModelServices.GetTypeIdentity(typeof(ComposablePartDefinition));
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionContainer.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionContainer.cs
deleted file mode 100644
index 34c5e6c..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionContainer.cs
+++ /dev/null
@@ -1,410 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class CompositionContainer : ExportProvider, ICompositionService, IDisposable
- {
- private ImportEngine _importEngine;
- private ComposablePartExportProvider _partExportProvider;
- private AggregateExportProvider _aggregatingExportProvider;
- private ExportProvider _rootProvider;
- private CatalogExportProvider _catalogExportProvider;
- private readonly ReadOnlyCollection<ExportProvider> _providers;
- private volatile int _isDisposed = 0;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionContainer"/> class.
- /// </summary>
- public CompositionContainer()
- : this((ComposablePartCatalog)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionContainer"/> class
- /// with the specified export providers.
- /// </summary>
- /// <param name="providers">
- /// A <see cref="Array"/> of <see cref="ExportProvider"/> objects which provide
- /// the <see cref="CompositionContainer"/> access to <see cref="Export"/> objects,
- /// or <see langword="null"/> to set <see cref="Providers"/> to an empty
- /// <see cref="ReadOnlyCollection{T}"/>.
- /// </param>
- /// <exception cref="ArgumentException">
- /// <paramref name="providers"/> contains an element that is <see langword="null"/>.
- /// </exception>
- public CompositionContainer(params ExportProvider[] providers) :
- this((ComposablePartCatalog)null, providers)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionContainer"/> class
- /// with the specified catalog and export providers.
- /// </summary>
- /// <param name="providers">
- /// A <see cref="Array"/> of <see cref="ExportProvider"/> objects which provide
- /// the <see cref="CompositionContainer"/> access to <see cref="Export"/> objects,
- /// or <see langword="null"/> to set <see cref="Providers"/> to an empty
- /// <see cref="ReadOnlyCollection{T}"/>.
- /// </param>
- /// <exception cref="ArgumentException">
- /// <paramref name="providers"/> contains an element that is <see langword="null"/>.
- /// </exception>
- public CompositionContainer(ComposablePartCatalog catalog, params ExportProvider[] providers):
- this(catalog, false, providers)
- {
- }
-
- public CompositionContainer(ComposablePartCatalog catalog, bool isThreadSafe, params ExportProvider[] providers)
- {
- this._importEngine = new ImportEngine(this, isThreadSafe);
- this._partExportProvider = new ComposablePartExportProvider(isThreadSafe);
- this._partExportProvider.SourceProvider = this;
- this._providers = new ReadOnlyCollection<ExportProvider>(providers != null ? (ExportProvider[])providers.Clone() : new ExportProvider[0]);
-
- List<ExportProvider> providerList = new List<ExportProvider>();
-
- providerList.Add(this._partExportProvider);
-
- if (catalog != null)
- {
- this._catalogExportProvider = new CatalogExportProvider(catalog, isThreadSafe);
- this._catalogExportProvider.SourceProvider = this;
-
- providerList.Add(this._catalogExportProvider);
- }
-
- foreach (var provider in this._providers)
- {
- if (provider == null)
- {
- throw ExceptionBuilder.CreateContainsNullElement("providers");
- }
- providerList.Add(provider);
- }
-
- // we only build the aggregating provider if necessary - that is, if we have more than one provider to aggregate
- if (providerList.Count > 1)
- {
- this._aggregatingExportProvider = new AggregateExportProvider(providerList);
- this._rootProvider = this._aggregatingExportProvider;
- }
- else
- {
- Assumes.IsTrue(providerList.Count == 1);
- this._rootProvider = providerList[0];
- }
-
- this._rootProvider.ExportsChanged += this.OnExportsChangedInternal;
- this._rootProvider.ExportsChanging += this.OnExportsChangingInternal;
- }
-
- /// <summary>
- /// Gets the catalog which provides the container access to exports produced
- /// from composable parts.
- /// </summary>
- /// <value>
- /// The <see cref="ComposablePartCatalog"/> which provides the
- /// <see cref="CompositionContainer"/> access to exports produced from
- /// <see cref="ComposablePart"/> objects. The default is <see langword="null"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- public ComposablePartCatalog Catalog
- {
- get
- {
- ThrowIfDisposed();
-
- if (_catalogExportProvider != null)
- {
- return _catalogExportProvider.Catalog;
- }
-
- return null;
- }
- }
-
- /// <summary>
- /// Gets the export providers which provide the container access to additional exports.
- /// </summary>
- /// <value>
- /// A <see cref="ReadOnlyCollection{T}"/> of <see cref="ExportProvider"/> objects
- /// which provide the <see cref="CompositionContainer"/> access to additional
- /// <see cref="Export"/> objects. The default is an empty
- /// <see cref="ReadOnlyCollection{T}"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- public ReadOnlyCollection<ExportProvider> Providers
- {
- get
- {
- this.ThrowIfDisposed();
-
- return this._providers;
- }
- }
-
- /// <summary>
- /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
- /// </summary>
- public void Dispose()
- {
- this.Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources
- /// </summary>
- /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- // NOTE : According to http://msdn.microsoft.com/en-us/library/4bw5ewxy.aspx, the warning is bogus when used with Interlocked API.
-#pragma warning disable 420
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
-#pragma warning restore 420
- {
- this._rootProvider.ExportsChanged -= this.OnExportsChangedInternal;
- this._rootProvider.ExportsChanging -= this.OnExportsChangingInternal;
- if (this._aggregatingExportProvider != null)
- {
- this._aggregatingExportProvider.Dispose();
- }
- this._partExportProvider.Dispose();
- if (this._catalogExportProvider != null)
- {
- this._catalogExportProvider.Dispose();
- }
- this._importEngine.Dispose();
- }
- }
- }
-
- public void Compose(CompositionBatch batch)
- {
- Requires.NotNull(batch, "batch");
-
- this.ThrowIfDisposed();
- this._partExportProvider.Compose(batch);
- }
-
- /// <summary>
- /// Releases the <see cref="Export"/> from the <see cref="CompositionContainer"/>. The behavior
- /// may vary depending on the implementation of the <see cref="ExportProvider"/> that produced
- /// the <see cref="Export"/> instance. As a general rule non shared exports should be early
- /// released causing them to be detached from the container.
- ///
- /// For example the <see cref="CatalogExportProvider"/> will only release
- /// an <see cref="Export"/> if it comes from a <see cref="ComposablePart"/> that was constructed
- /// under a <see cref="CreationPolicy.NonShared" /> context. Release in this context means walking
- /// the dependency chain of the <see cref="Export"/>s, detaching references from the container and
- /// calling Dispose on the <see cref="ComposablePart"/>s as needed. If the <see cref="Export"/>
- /// was constructed under a <see cref="CreationPolicy.Shared" /> context the
- /// <see cref="CatalogExportProvider"/> will do nothing as it may be in use by other requestors.
- /// Those will only be detached when the container is itself disposed.
- /// </summary>
- /// <param name="export"><see cref="Export"/> that needs to be released.</param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="export"/> is <see langword="null"/>.
- /// </exception>
- [SuppressMessage("Microsoft.Performance", "CA1822")]
- public void ReleaseExport(Export export)
- {
- Requires.NotNull(export, "export");
-
- IDisposable dependency = export as IDisposable;
-
- if (dependency != null)
- {
- dependency.Dispose();
- }
- }
-
- /// <summary>
- /// Releases the <see cref="Lazy{T}"/> from the <see cref="CompositionContainer"/>. The behavior
- /// may vary depending on the implementation of the <see cref="ExportProvider"/> that produced
- /// the <see cref="Export"/> instance. As a general rule non shared exports should be early
- /// released causing them to be detached from the container.
- ///
- /// For example the <see cref="CatalogExportProvider"/> will only release
- /// an <see cref="Lazy{T}"/> if it comes from a <see cref="ComposablePart"/> that was constructed
- /// under a <see cref="CreationPolicy.NonShared" /> context. Release in this context means walking
- /// the dependency chain of the <see cref="Export"/>s, detaching references from the container and
- /// calling Dispose on the <see cref="ComposablePart"/>s as needed. If the <see cref="Export"/>
- /// was constructed under a <see cref="CreationPolicy.Shared" /> context the
- /// <see cref="CatalogExportProvider"/> will do nothing as it may be in use by other requestors.
- /// Those will only be detached when the container is itself disposed.
- /// </summary>
- /// <param name="export"><see cref="Export"/> that needs to be released.</param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="export"/> is <see langword="null"/>.
- /// </exception>
- [SuppressMessage("Microsoft.Performance", "CA1822")]
- public void ReleaseExport<T>(Lazy<T> export)
- {
- Requires.NotNull(export, "export");
-
- IDisposable dependency = export as IDisposable;
-
- if (dependency != null)
- {
- dependency.Dispose();
- }
- }
-
- /// <summary>
- /// Releases a set of <see cref="Export"/>s from the <see cref="CompositionContainer"/>.
- /// See also <see cref="ReleaseExport"/>.
- /// </summary>
- /// <param name="exports"><see cref="Export"/>s that need to be released.</param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="exports"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="exports"/> contains an element that is <see langword="null"/>.
- /// </exception>
- public void ReleaseExports(IEnumerable<Export> exports)
- {
- Requires.NotNullOrNullElements(exports, "exports");
-
- foreach (Export export in exports)
- {
- this.ReleaseExport(export);
- }
- }
-
- /// <summary>
- /// Releases a set of <see cref="Export"/>s from the <see cref="CompositionContainer"/>.
- /// See also <see cref="ReleaseExport"/>.
- /// </summary>
- /// <param name="exports"><see cref="Export"/>s that need to be released.</param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="exports"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="exports"/> contains an element that is <see langword="null"/>.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public void ReleaseExports<T>(IEnumerable<Lazy<T>> exports)
- {
- Requires.NotNullOrNullElements(exports, "exports");
-
- foreach (Lazy<T> export in exports)
- {
- this.ReleaseExport(export);
- }
- }
-
- /// <summary>
- /// Releases a set of <see cref="Export"/>s from the <see cref="CompositionContainer"/>.
- /// See also <see cref="ReleaseExport"/>.
- /// </summary>
- /// <param name="exports"><see cref="Export"/>s that need to be released.</param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="exports"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="exports"/> contains an element that is <see langword="null"/>.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public void ReleaseExports<T, TMetadataView>(IEnumerable<Lazy<T, TMetadataView>> exports)
- {
- Requires.NotNullOrNullElements(exports, "exports");
-
- foreach (Lazy<T, TMetadataView> export in exports)
- {
- this.ReleaseExport(export);
- }
- }
-
- /// <summary>
- /// Sets the imports of the specified composable part exactly once and they will not
- /// ever be recomposed.
- /// </summary>
- /// <param name="part">
- /// The <see cref="ComposablePart"/> to set the imports.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="part"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ICompositionService"/> has been disposed of.
- /// </exception>
- public void SatisfyImportsOnce(ComposablePart part)
- {
- this.ThrowIfDisposed();
- this._importEngine.SatisfyImportsOnce(part);
- }
-
- internal void OnExportsChangedInternal(object sender, ExportsChangeEventArgs e)
- {
- this.OnExportsChanged(e);
- }
-
- internal void OnExportsChangingInternal(object sender, ExportsChangeEventArgs e)
- {
- this.OnExportsChanging(e);
- }
-
- /// <summary>
- /// Returns all exports that match the conditions of the specified import.
- /// </summary>
- /// <param name="definition">The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> to get.</param>
- /// <returns></returns>
- /// <result>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects that match
- /// the conditions defined by <see cref="ImportDefinition"/>, if found; otherwise, an
- /// empty <see cref="IEnumerable{T}"/>.
- /// </result>
- /// <remarks>
- /// <note type="inheritinfo">
- /// The implementers should not treat the cardinality-related mismatches as errors, and are not
- /// expected to throw exceptions in those cases.
- /// For instance, if the import requests exactly one export and the provider has no matching exports or more than one,
- /// it should return an empty <see cref="IEnumerable{T}"/> of <see cref="Export"/>.
- /// </note>
- /// </remarks>
- protected override IEnumerable<Export> GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition)
- {
- this.ThrowIfDisposed();
-
- IEnumerable<Export> exports = null;
- this._rootProvider.TryGetExports(definition, atomicComposition, out exports);
-
- return exports;
- }
-
- [DebuggerStepThrough]
- private void ThrowIfDisposed()
- {
- if (this._isDisposed == 1)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionLock.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionLock.cs
deleted file mode 100644
index 4edf397..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionLock.cs
+++ /dev/null
@@ -1,153 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#define SINGLETHREADEDLOCKENFORCEMENT
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- // This a a lock class that needs to be held in order to perform any mutation of the parts/parts state in the composition
- // Today's implementation relies on the AppDomain-wide re-entrant lock for changes on the composition, and a narrow lock for changes in
- // the state of the specific ImportEngine
- // Today we make several assumptions to ensure thread-safety:
- // 1. Each composition doesn't change lock affinity
- // 2. Every part of the system that updates the status of the parts (in our case ImportEngine) needs to hold the same wide - lock
- // 3. State of the import engine that gets accessed outside of the wide lock needs to be accessed in the context of the narrow lock
- // 4. Narrow lock CAN be taken inside the wide lock
- // 5. Wide lock CANNOT be taken inside the narrow lock
- // 6. No 3rd party code will EVER get called inside the narrow lock
- // Sadly, this means that we WILL be calling 3rd party code under a lock, but as long as the lock is re-entrant and they can't invoke us on anotehr thread
- // we have no issue, other than potential overlocking
- internal sealed class CompositionLock : IDisposable
- {
- // narrow lock
- private readonly Lock _stateLock = null;
- // wide lock
- private static object _compositionLock = new object();
-
- private int _isDisposed = 0;
- private bool _isThreadSafe = false;
-
- private static readonly EmptyLockHolder _EmptyLockHolder = new EmptyLockHolder();
-
- public CompositionLock(bool isThreadSafe)
- {
- this._isThreadSafe = isThreadSafe;
- if (isThreadSafe)
- {
- this._stateLock = new Lock();
- }
- }
-
- public void Dispose()
- {
- if (this._isThreadSafe)
- {
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
- {
- this._stateLock.Dispose();
- }
- }
- }
-
- public bool IsThreadSafe
- {
- get
- {
- return this._isThreadSafe;
- }
- }
-
- private void EnterCompositionLock()
- {
-#pragma warning disable 618
- if (this._isThreadSafe)
- {
- Monitor.Enter(_compositionLock);
- }
-#pragma warning restore 618
- }
-
- private void ExitCompositionLock()
- {
- if (this._isThreadSafe)
- {
- Monitor.Exit(_compositionLock);
- }
- }
-
- public IDisposable LockComposition()
- {
- if (this._isThreadSafe)
- {
- return new CompositionLockHolder(this);
- }
- else
- {
- return _EmptyLockHolder;
- }
- }
-
- public IDisposable LockStateForRead()
- {
- if (this._isThreadSafe)
- {
- return new ReadLock(this._stateLock);
- }
- else
- {
- return _EmptyLockHolder;
- }
- }
-
- public IDisposable LockStateForWrite()
- {
- if (this._isThreadSafe)
- {
- return new WriteLock(this._stateLock);
- }
- else
- {
- return _EmptyLockHolder;
- }
- }
-
- // NOTE : this should NOT be changed to a struct as ImportEngine relies on it
- public sealed class CompositionLockHolder : IDisposable
- {
- private CompositionLock _lock;
- private int _isDisposed;
-
- public CompositionLockHolder(CompositionLock @lock)
- {
- this._lock = @lock;
-
- this._isDisposed = 0;
- this._lock.EnterCompositionLock();
- }
-
- public void Dispose()
- {
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
- {
- this._lock.ExitCompositionLock();
- }
- }
- }
-
- private sealed class EmptyLockHolder : IDisposable
- {
- public void Dispose()
- {
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionServices.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionServices.cs
deleted file mode 100644
index 77e5fdc..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionServices.cs
+++ /dev/null
@@ -1,522 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel.Composition;
-using System.ComponentModel.Composition.AttributedModel;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Collections.ObjectModel;
-using System.ComponentModel.Composition.ReflectionModel;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- internal static class CompositionServices
- {
- internal static readonly Type InheritedExportAttributeType = typeof(InheritedExportAttribute);
- internal static readonly Type ExportAttributeType = typeof(ExportAttribute);
- internal static readonly Type AttributeType = typeof(Attribute);
- internal static readonly Type ObjectType = typeof(object);
-
- private static readonly string[] reservedMetadataNames = new string[]
- {
- CompositionConstants.PartCreationPolicyMetadataName
- };
-
- internal static Type GetDefaultTypeFromMember(this MemberInfo member)
- {
- Assumes.NotNull(member);
-
- switch (member.MemberType)
- {
- case MemberTypes.Property:
- return ((PropertyInfo)member).PropertyType;
-
- case MemberTypes.NestedType:
- case MemberTypes.TypeInfo:
- return ((Type)member);
-
- case MemberTypes.Field:
- default:
- Assumes.IsTrue(member.MemberType == MemberTypes.Field);
- return ((FieldInfo)member).FieldType;
- }
- }
-
- internal static string GetContractNameFromExport(this MemberInfo member, ExportAttribute export)
- {
- if (!string.IsNullOrEmpty(export.ContractName))
- {
- return export.ContractName;
- }
-
- if (export.ContractType != null)
- {
- return AttributedModelServices.GetContractName(export.ContractType);
- }
-
- if (member.MemberType == MemberTypes.Method)
- {
- return AttributedModelServices.GetTypeIdentity((MethodInfo)member);
- }
-
- return AttributedModelServices.GetContractName(member.GetDefaultTypeFromMember());
- }
-
- internal static string GetTypeIdentityFromExport(this MemberInfo member, ExportAttribute export)
- {
- if (export.ContractType != null)
- {
- return AttributedModelServices.GetTypeIdentity(export.ContractType);
- }
-
- if (member.MemberType == MemberTypes.Method)
- {
- return AttributedModelServices.GetTypeIdentity((MethodInfo)member);
- }
-
- return AttributedModelServices.GetTypeIdentity(member.GetDefaultTypeFromMember());
- }
-
- internal static Type GetContractTypeFromImport(this IAttributedImport import, ImportType importType)
- {
- if (import.ContractType != null)
- {
- return import.ContractType;
- }
-
- return importType.ContractType;
- }
-
- internal static string GetContractNameFromImport(this IAttributedImport import, ImportType importType)
- {
- if (!string.IsNullOrEmpty(import.ContractName))
- {
- return import.ContractName;
- }
-
- Type contractType = import.GetContractTypeFromImport(importType);
-
- return AttributedModelServices.GetContractName(contractType);
- }
-
- internal static string GetTypeIdentityFromImport(this IAttributedImport import, ImportType importType)
- {
- Type contractType = import.GetContractTypeFromImport(importType);
-
- // For our importers we treat object as not having a type identity
- if (contractType == CompositionServices.ObjectType)
- {
- return null;
- }
-
- return AttributedModelServices.GetTypeIdentity(contractType);
- }
-
- internal static IDictionary<string, object> GetPartMetadataForType(this Type type, CreationPolicy creationPolicy)
- {
- IDictionary<string, object> dictionary = new Dictionary<string, object>(StringComparers.MetadataKeyNames);
-
- if (creationPolicy != CreationPolicy.Any)
- {
- dictionary.Add(CompositionConstants.PartCreationPolicyMetadataName, creationPolicy);
- }
-
- foreach (PartMetadataAttribute partMetadata in type.GetAttributes<PartMetadataAttribute>())
- {
- if (reservedMetadataNames.Contains(partMetadata.Name, StringComparers.MetadataKeyNames)
- || dictionary.ContainsKey(partMetadata.Name))
- {
- // Perhaps we should log an error here so that people know this value is being ignored.
- continue;
- }
-
- dictionary.Add(partMetadata.Name, partMetadata.Value);
- }
-
- if (dictionary.Count == 0)
- {
- return MetadataServices.EmptyMetadata;
- }
- else
- {
- return dictionary;
- }
- }
-
- internal static void TryExportMetadataForMember(this MemberInfo member, out IDictionary<string, object> dictionary)
- {
- dictionary = new Dictionary<string, object>();
-
- foreach (var attr in member.GetAttributes<Attribute>())
- {
- var provider = attr as ExportMetadataAttribute;
-
- if (provider != null)
- {
- if (reservedMetadataNames.Contains(provider.Name, StringComparers.MetadataKeyNames))
- {
- throw ExceptionBuilder.CreateDiscoveryException(Strings.Discovery_ReservedMetadataNameUsed, member.GetDisplayName(), provider.Name);
- }
-
- // we pass "null" for valueType which would make it inferred. We don;t have additional type information when metadata
- // goes through the ExportMetadataAttribute path
- if (!dictionary.TryContributeMetadataValue(provider.Name, provider.Value, null, provider.IsMultiple))
- {
- throw ExceptionBuilder.CreateDiscoveryException(Strings.Discovery_DuplicateMetadataNameValues, member.GetDisplayName(), provider.Name);
- }
- }
- else
- {
- Type attrType = attr.GetType();
- if ((attrType != CompositionServices.ExportAttributeType) && attrType.IsAttributeDefined<MetadataAttributeAttribute>(true))
- {
- bool allowsMultiple = false;
- AttributeUsageAttribute usage = attrType.GetFirstAttribute<AttributeUsageAttribute>(true);
-
- if (usage != null)
- {
- allowsMultiple = usage.AllowMultiple;
- }
-
- foreach (PropertyInfo pi in attrType.GetProperties())
- {
- if (pi.DeclaringType == CompositionServices.ExportAttributeType || pi.DeclaringType == CompositionServices.AttributeType)
- {
- // Don't contribute metadata properies from the base attribute types.
- continue;
- }
-
- if (reservedMetadataNames.Contains(pi.Name, StringComparers.MetadataKeyNames))
- {
- throw ExceptionBuilder.CreateDiscoveryException(Strings.Discovery_ReservedMetadataNameUsed, member.GetDisplayName(), provider.Name);
- }
-
- object value = pi.GetValue(attr, null);
-
- if (value != null && !IsValidAttributeType(value.GetType()))
- {
- throw ExceptionBuilder.CreateDiscoveryException(Strings.Discovery_MetadataContainsValueWithInvalidType, pi.GetDisplayName(), value.GetType().GetDisplayName());
- }
-
- if (!dictionary.TryContributeMetadataValue(pi.Name, value, pi.PropertyType, allowsMultiple))
- {
- throw ExceptionBuilder.CreateDiscoveryException(Strings.Discovery_DuplicateMetadataNameValues, member.GetDisplayName(), pi.Name);
- }
- }
- }
- }
- }
-
- // Need Keys.ToArray because we alter the dictionary in the loop
- foreach (var key in dictionary.Keys.ToArray())
- {
- var list = dictionary[key] as MetadataList;
- if (list != null)
- {
- dictionary[key] = list.ToArray();
- }
- }
-
- return;
- }
-
- private static bool TryContributeMetadataValue(this IDictionary<string, object> dictionary, string name, object value, Type valueType, bool allowsMultiple)
- {
- object metadataValue;
- if (!dictionary.TryGetValue(name, out metadataValue))
- {
- if (allowsMultiple)
- {
- var list = new MetadataList();
- list.Add(value, valueType);
- value = list;
- }
-
- dictionary.Add(name, value);
- }
- else
- {
- var list = metadataValue as MetadataList;
- if (!allowsMultiple || list == null)
- {
- // Either single value already found when should be multiple
- // or a duplicate name already exists
- dictionary.Remove(name);
- return false;
- }
-
- list.Add(value, valueType);
- }
- return true;
- }
-
- private class MetadataList
- {
- private Type _arrayType = null;
- private bool _containsNulls = false;
- private static readonly Type ObjectType = typeof(object);
- private static readonly Type TypeType = typeof(Type);
- private Collection<object> _innerList = new Collection<object>();
-
- public void Add(object item, Type itemType)
- {
- this._containsNulls |= (item == null);
-
- // if we've been passed typeof(object), we basically have no type inmformation
- if (itemType == ObjectType)
- {
- itemType = null;
- }
-
- // if we have no type information, get it from the item, if we can
- if ((itemType == null) && (item != null))
- {
- itemType = item.GetType();
- }
-
- // Types are special, because the are abstract classes, so if the item casts to Type, we assume System.Type
- if (item is Type)
- {
- itemType = TypeType;
- }
-
- // only try to call this if we got a meaningful type
- if (itemType != null)
- {
- this.InferArrayType(itemType);
- }
-
- this._innerList.Add(item);
- }
-
- private void InferArrayType(Type itemType)
- {
- Assumes.NotNull(itemType);
-
- if (this._arrayType == null)
- {
- // this is the first typed element we've been given, it sets the type of the array
- this._arrayType = itemType;
- }
- else
- {
- // if there's a disagreement on the array type, we flip to Object
- // NOTE : we can try to do better in the future to find common base class, but given that we support very limited set of types
- // in metadata right now, it's a moot point
- if (this._arrayType != itemType)
- {
- this._arrayType = ObjectType;
- }
- }
- }
-
- public Array ToArray()
- {
- if (this._arrayType == null)
- {
- // if the array type has not been set, assume Object
- this._arrayType = ObjectType;
- }
- else if (this._containsNulls && this._arrayType.IsValueType)
- {
- // if the array type is a value type and we have seen nulls, then assume Object
- this._arrayType = ObjectType;
- }
-
- Array array = Array.CreateInstance(this._arrayType, this._innerList.Count);
-
- for(int i = 0; i < array.Length; i++)
- {
- array.SetValue(this._innerList[i], i);
- }
- return array;
- }
- }
-
- //UNDONE: Need to add these warnings somewhere...Dev10:472538 should address this.
- //internal static CompositionResult MatchRequiredMetadata(this IDictionary<string, object> metadata, IEnumerable<string> requiredMetadata, string contractName)
- //{
- // Assumes.IsTrue(metadata != null);
-
- // var result = CompositionResult.SucceededResult;
-
- // var missingMetadata = (requiredMetadata == null) ? null : requiredMetadata.Except<string>(metadata.Keys);
- // if (missingMetadata != null && missingMetadata.Any())
- // {
- // result = result.MergeIssue(
- // CompositionError.CreateIssueAsWarning(CompositionErrorId.RequiredMetadataNotFound,
- // Strings.RequiredMetadataNotFound,
- // contractName,
- // string.Join(", ", missingMetadata.ToArray())));
-
- // return new CompositionResult(false, result.Issues);
- // }
-
- // return result;
- //}
-
- internal static IEnumerable<KeyValuePair<string, Type>> GetRequiredMetadata(Type metadataViewType)
- {
- if ((metadataViewType == null) ||
- ExportServices.IsDefaultMetadataViewType(metadataViewType) ||
- ExportServices.IsDictionaryConstructorViewType(metadataViewType) ||
- !metadataViewType.IsInterface)
- {
- return Enumerable.Empty<KeyValuePair<string, Type>>();
- }
-
- // A metadata view is required to be an Intrerface, and therefore only properties are allowed
- List<PropertyInfo> properties = metadataViewType.GetAllProperties().
- Where(property => property.GetFirstAttribute<DefaultValueAttribute>() == null).
- ToList();
-
- // NOTE : this is a carefully found balance between eager and delay-evaluation - the properties are filtered once and upfront
- // whereas the key/Type pairs are created every time. The latter is fine as KVPs are structs and as such copied on access regardless.
- // This also allows us to avoid creation of List<KVP> which - at least according to FxCop - leads to isues with NGEN
- return properties.Select(property => new KeyValuePair<string, Type>(property.Name, property.PropertyType));
- }
-
- internal static object GetExportedValueFromComposedPart(ImportEngine engine, ComposablePart part, ExportDefinition definition)
- {
- try
- {
- engine.SatisfyImports(part);
- }
- catch (CompositionException ex)
- {
- throw ExceptionBuilder.CreateCannotGetExportedValue(part, definition, ex);
- }
-
- try
- {
- return part.GetExportedValue(definition);
- }
- catch (ComposablePartException ex)
- {
- throw ExceptionBuilder.CreateCannotGetExportedValue(part, definition, ex);
- }
- }
-
- internal static bool IsRecomposable(this ComposablePart part)
- {
- return part.ImportDefinitions.Any(import => import.IsRecomposable);
- }
-
- internal static CompositionResult<T> TryInvoke<T>(Func<T> action)
- {
- try
- {
- T value = action();
- return new CompositionResult<T>(value);
- }
- catch (CompositionException ex)
- {
- return new CompositionResult<T>(ex.Errors);
- }
- }
-
- internal static CompositionResult TryInvoke(Action action)
- {
- try
- {
- action();
- return CompositionResult.SucceededResult;
- }
- catch (CompositionException ex)
- {
- return new CompositionResult(ex.Errors);
- }
- }
-
- internal static CompositionResult TryFire<TEventArgs>(EventHandler<TEventArgs> _delegate, object sender, TEventArgs e)
- where TEventArgs : EventArgs
- {
- CompositionResult result = CompositionResult.SucceededResult;
- foreach (EventHandler<TEventArgs> _subscriber in _delegate.GetInvocationList())
- {
- try
- {
- _subscriber.Invoke(sender, e);
- }
- catch (CompositionException ex)
- {
- result = result.MergeErrors(ex.Errors);
- }
- }
-
- return result;
- }
-
- internal static CreationPolicy GetRequiredCreationPolicy(this ImportDefinition definition)
- {
- ContractBasedImportDefinition contractDefinition = definition as ContractBasedImportDefinition;
-
- if (contractDefinition != null)
- {
- return contractDefinition.RequiredCreationPolicy;
- }
-
- return CreationPolicy.Any;
- }
-
- /// <summary>
- /// Returns a value indicating whether cardinality is
- /// <see cref="ImportCardinality.ZeroOrOne"/> or
- /// <see cref="ImportCardinality.ExactlyOne"/>.
- /// </summary>
- internal static bool IsAtMostOne(this ImportCardinality cardinality)
- {
- return cardinality == ImportCardinality.ZeroOrOne || cardinality == ImportCardinality.ExactlyOne;
- }
-
- private static bool IsValidAttributeType(Type type)
- {
- return IsValidAttributeType(type, true);
- }
-
- private static bool IsValidAttributeType(Type type, bool arrayAllowed)
- {
- Assumes.NotNull(type);
- // Definitions of valid attribute type taken from C# 3.0 Specification section 17.1.3.
-
- // One of the following types: bool, byte, char, double, float, int, long, sbyte, short, string, uint, ulong, ushort.
- if (type.IsPrimitive)
- {
- return true;
- }
-
- if (type == typeof(string))
- {
- return true;
- }
-
- // An enum type, provided it has public accessibility and the types in which it is nested (if any) also have public accessibility
- if (type.IsEnum && type.IsVisible)
- {
- return true;
- }
-
- if (typeof(Type).IsAssignableFrom(type))
- {
- return true;
- }
-
- // Single-dimensional arrays of the above types.
- if (arrayAllowed && type.IsArray &&
- type.GetArrayRank() == 1 &&
- IsValidAttributeType(type.GetElementType(), false))
- {
- return true;
- }
-
- return false;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/DirectoryCatalog.DirectoryCatalogDebuggerProxy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/DirectoryCatalog.DirectoryCatalogDebuggerProxy.cs
deleted file mode 100644
index 5c1d7d9..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/DirectoryCatalog.DirectoryCatalogDebuggerProxy.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if !SILVERLIGHT
-
-using System;
-using System.Collections.ObjectModel;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- partial class DirectoryCatalog
- {
- internal class DirectoryCatalogDebuggerProxy
- {
- private readonly DirectoryCatalog _catalog;
-
- public DirectoryCatalogDebuggerProxy(DirectoryCatalog catalog)
- {
- Requires.NotNull(catalog, "catalog");
-
- this._catalog = catalog;
- }
-
- public ReadOnlyCollection<Assembly> Assemblies
- {
- get
- {
- return this._catalog._assemblyCatalogs.Values.Select(catalog => catalog.Assembly)
- .ToReadOnlyCollection();
- }
- }
-
- public string SearchPattern
- {
- get { return this._catalog.SearchPattern; }
- }
-
- public string Path
- {
- get { return this._catalog._path; }
- }
-
- public string FullPath
- {
- get { return this._catalog._fullPath; }
- }
-
- public ReadOnlyCollection<string> LoadedFiles
- {
- get { return this._catalog._loadedFiles; }
- }
-
- public ReadOnlyCollection<ComposablePartDefinition> Parts
- {
- // NOTE: This shouldn't be cached, so that on every query of
- // the current value of the underlying catalog is respected.
- // We use ReadOnlyCollection as arrays do not have the
- // appropriate debugger display attributes applied to them.
- get { return this._catalog.Parts.ToReadOnlyCollection(); }
- }
- }
- }
-}
-
-#endif
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/DirectoryCatalog.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/DirectoryCatalog.cs
deleted file mode 100644
index c6430f2..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/DirectoryCatalog.cs
+++ /dev/null
@@ -1,542 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if !SILVERLIGHT
-
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.ComponentModel.Composition.Diagnostics;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-using IOPath = System.IO.Path;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- [DebuggerTypeProxy(typeof(DirectoryCatalogDebuggerProxy))]
- public partial class DirectoryCatalog : ComposablePartCatalog, INotifyComposablePartCatalogChanged, ICompositionElement
- {
- private readonly Lock _thisLock = new Lock();
- private ComposablePartCatalogCollection _catalogCollection;
- private Dictionary<string, AssemblyCatalog> _assemblyCatalogs;
- private volatile bool _isDisposed = false;
- private string _path;
- private string _fullPath;
- private string _searchPattern;
- private ReadOnlyCollection<string> _loadedFiles;
- private IQueryable<ComposablePartDefinition> _partsQuery;
-
- /// <summary>
- /// Creates a catalog of <see cref="ComposablePartDefinition"/>s based on all the *.dll files
- /// in the given directory path.
- ///
- /// Possible exceptions that can be thrown are any that <see cref="Directory.GetFiles(string, string)"/> or
- /// <see cref="Assembly.Load(AssemblyName)"/> can throw.
- /// </summary>
- /// <param name="path">
- /// Path to the directory to scan for assemblies to add to the catalog.
- /// The path needs to be absolute or relative to <see cref="AppDomain.BaseDirectory"/>
- /// </param>
- /// <exception cref="ArgumentException">
- /// If <paramref name="path"/> is a zero-length string, contains only white space, or
- /// contains one or more implementation-specific invalid characters.
- /// </exception>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="path"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="DirectoryNotFoundException">
- /// The specified <paramref name="path"/> is invalid (for example, it is on an unmapped drive).
- /// </exception>
- /// <exception cref="PathTooLongException">
- /// The specified <paramref name="path"/>, file name, or both exceed the system-defined maximum length.
- /// For example, on Windows-based platforms, paths must be less than 248 characters and file names must
- /// be less than 260 characters.
- /// </exception>
- /// <exception cref="UnauthorizedAccessException">
- /// The caller does not have the required permission.
- /// </exception>
- public DirectoryCatalog(string path) : this(path, "*.dll")
- {
- }
-
- /// <summary>
- /// Creates a catalog of <see cref="ComposablePartDefinition"/>s based on all the given searchPattern
- /// over the files in the given directory path.
- ///
- /// Possible exceptions that can be thrown are any that <see cref="Directory.GetFiles(string, string)"/> or
- /// <see cref="Assembly.Load(AssemblyName)"/> can throw.
- /// </summary>
- /// <param name="path">
- /// Path to the directory to scan for assemblies to add to the catalog.
- /// The path needs to be absolute or relative to <see cref="AppDomain.BaseDirectory"/>
- /// </param>
- /// <param name="searchPattern">
- /// Any valid searchPattern that <see cref="Directory.GetFiles(string, string)"/> will accept.
- /// </param>
- /// <exception cref="ArgumentException">
- /// If <paramref name="path"/> is a zero-length string, contains only white space, or
- /// contains one or more implementation-specific invalid characters. Or <paramref name="searchPattern"/>
- /// does not contain a valid pattern.
- /// </exception>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="path"/> is <see langword="null"/> or <paramref name="searchPattern"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="DirectoryNotFoundException">
- /// The specified <paramref name="path"/> is invalid (for example, it is on an unmapped drive).
- /// </exception>
- /// <exception cref="PathTooLongException">
- /// The specified <paramref name="path"/>, file name, or both exceed the system-defined maximum length.
- /// For example, on Windows-based platforms, paths must be less than 248 characters and file names must
- /// be less than 260 characters.
- /// </exception>
- /// <exception cref="UnauthorizedAccessException">
- /// The caller does not have the required permission.
- /// </exception>
- public DirectoryCatalog(string path, string searchPattern)
- {
- Requires.NotNullOrEmpty(path, "path");
- this.Initialize(path, searchPattern);
- }
-
- /// <summary>
- /// Translated absolute path of the path passed into the constructor of <see cref="DirectoryCatalog"/>.
- /// </summary>
- public string FullPath
- {
- get
- {
- return this._fullPath;
- }
- }
-
- /// <summary>
- /// Set of files that have currently been loaded into the catalog.
- /// </summary>
- public ReadOnlyCollection<string> LoadedFiles
- {
- get
- {
- using (new ReadLock(this._thisLock))
- {
- return this._loadedFiles;
- }
- }
- }
-
- /// <summary>
- /// Path passed into the constructor of <see cref="DirectoryCatalog"/>.
- /// </summary>
- public string Path
- {
- get
- {
- return this._path;
- }
- }
-
- /// <summary>
- /// Gets the part definitions of the directory catalog.
- /// </summary>
- /// <value>
- /// A <see cref="IQueryable{T}"/> of <see cref="ComposablePartDefinition"/> objects of the
- /// <see cref="DirectoryCatalog"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="DirectoryCatalog"/> has been disposed of.
- /// </exception>
- public override IQueryable<ComposablePartDefinition> Parts
- {
- get
- {
- this.ThrowIfDisposed();
- return this._partsQuery;
- }
- }
-
- /// <summary>
- /// SearchPattern passed into the constructor of <see cref="DirectoryCatalog"/>, or the default *.dll.
- /// </summary>
- public string SearchPattern
- {
- get
- {
- return this._searchPattern;
- }
- }
-
- /// <summary>
- /// Notify when the contents of the Catalog has changed.
- /// </summary>
- public event EventHandler<ComposablePartCatalogChangeEventArgs> Changed;
-
- /// <summary>
- /// Notify when the contents of the Catalog has changing.
- /// </summary>
- public event EventHandler<ComposablePartCatalogChangeEventArgs> Changing;
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources
- /// </summary>
- /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected override void Dispose(bool disposing)
- {
- try
- {
- if (disposing)
- {
- if (!this._isDisposed)
- {
- bool disposeLock = false;
- ComposablePartCatalogCollection catalogs = null;
-
- try
- {
- using (new WriteLock(this._thisLock))
- {
- if (!this._isDisposed)
- {
- disposeLock = true;
- catalogs = this._catalogCollection;
- this._catalogCollection = null;
- this._assemblyCatalogs = null;
- this._isDisposed = true;
- }
- }
- }
- finally
- {
- if (catalogs != null)
- {
- catalogs.Dispose();
- }
-
- if (disposeLock)
- {
- this._thisLock.Dispose();
- }
- }
- }
- }
- }
- finally
- {
- base.Dispose(disposing);
- }
- }
-
- /// <summary>
- /// Returns the export definitions that match the constraint defined by the specified definition.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="ExportDefinition"/> objects to return.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Tuple{T1, T2}"/> containing the
- /// <see cref="ExportDefinition"/> objects and their associated
- /// <see cref="ComposablePartDefinition"/> for objects that match the constraint defined
- /// by <paramref name="definition"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="DirectoryCatalog"/> has been disposed of.
- /// </exception>
- public override IEnumerable<Tuple<ComposablePartDefinition, ExportDefinition>> GetExports(ImportDefinition definition)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(definition, "definition");
-
- return this._catalogCollection.SelectMany(catalog => catalog.GetExports(definition));
- }
-
- /// <summary>
- /// Raises the <see cref="INotifyComposablePartCatalogChanged.Changed"/> event.
- /// </summary>
- /// <param name="e">
- /// An <see cref="ComposablePartCatalogChangeEventArgs"/> containing the data for the event.
- /// </param>
- protected virtual void OnChanged(ComposablePartCatalogChangeEventArgs e)
- {
- EventHandler<ComposablePartCatalogChangeEventArgs> changedEvent = this.Changed;
- if (changedEvent != null)
- {
- changedEvent(this, e);
- }
- }
-
- /// <summary>
- /// Raises the <see cref="INotifyComposablePartCatalogChanged.Changing"/> event.
- /// </summary>
- /// <param name="e">
- /// An <see cref="ComposablePartCatalogChangeEventArgs"/> containing the data for the event.
- /// </param>
- protected virtual void OnChanging(ComposablePartCatalogChangeEventArgs e)
- {
- EventHandler<ComposablePartCatalogChangeEventArgs> changingEvent = this.Changing;
- if (changingEvent != null)
- {
- changingEvent(this, e);
- }
- }
-
- /// <summary>
- /// Refreshes the <see cref="ComposablePartDefinition"/>s with the latest files in the directory that match
- /// the searchPattern. If any files have been added they will be added to the catalog and if any files were
- /// removed they will be removed from the catalog. For files that have been removed keep in mind that the
- /// assembly cannot be unloaded from the process so <see cref="ComposablePartDefinition"/>s for those files
- /// will simply be removed from the catalog.
- ///
- /// Possible exceptions that can be thrown are any that <see cref="Directory.GetFiles(string, string)"/> or
- /// <see cref="Assembly.Load(AssemblyName)"/> can throw.
- /// </summary>
- /// <exception cref="DirectoryNotFoundException">
- /// The specified <paramref name="path"/> has been removed since object construction.
- /// </exception>
- public void Refresh()
- {
- this.ThrowIfDisposed();
- Assumes.NotNull(this._loadedFiles);
-
- List<Tuple<string, AssemblyCatalog>> catalogsToAdd;
- List<Tuple<string, AssemblyCatalog>> catalogsToRemove;
- ComposablePartDefinition[] addedDefinitions;
- ComposablePartDefinition[] removedDefinitions;
- object changeReferenceObject;
- string[] afterFiles;
- string[] beforeFiles;
-
- while (true)
- {
- afterFiles = this.GetFiles();
-
- using (new ReadLock(this._thisLock))
- {
- changeReferenceObject = this._loadedFiles;
- beforeFiles = this._loadedFiles.ToArray();
- }
-
- this.DiffChanges(beforeFiles, afterFiles, out catalogsToAdd, out catalogsToRemove);
-
- // Don't go any further if there's no work to do
- if (catalogsToAdd.Count == 0 && catalogsToRemove.Count == 0)
- {
- return;
- }
-
- // Notify listeners to give them a preview before completeting the changes
- addedDefinitions = catalogsToAdd
- .SelectMany(cat => cat.Item2.Parts)
- .ToArray<ComposablePartDefinition>();
-
- removedDefinitions = catalogsToRemove
- .SelectMany(cat => cat.Item2.Parts)
- .ToArray<ComposablePartDefinition>();
-
- using (var atomicComposition = new AtomicComposition())
- {
- var changingArgs = new ComposablePartCatalogChangeEventArgs(addedDefinitions, removedDefinitions, atomicComposition);
- this.OnChanging(changingArgs);
-
- // if the change went through then write the catalog changes
- using (new WriteLock(this._thisLock))
- {
- if (changeReferenceObject != this._loadedFiles)
- {
- // Someone updated the list while we were diffing so we need to try the diff again
- continue;
- }
-
- foreach (var catalogToAdd in catalogsToAdd)
- {
- this._assemblyCatalogs.Add(catalogToAdd.Item1, catalogToAdd.Item2);
- this._catalogCollection.Add(catalogToAdd.Item2);
- }
-
- foreach (var catalogToRemove in catalogsToRemove)
- {
- this._assemblyCatalogs.Remove(catalogToRemove.Item1);
- this._catalogCollection.Remove(catalogToRemove.Item2);
- }
-
- this._partsQuery = this._catalogCollection.AsQueryable().SelectMany(catalog => catalog.Parts);
- this._loadedFiles = afterFiles.ToReadOnlyCollection();
-
- // Lastly complete any changes added to the atomicComposition during the change event
- atomicComposition.Complete();
-
- // Break out of the while(true)
- break;
- } // WriteLock
- } // AtomicComposition
- } // while (true)
-
- var changedArgs = new ComposablePartCatalogChangeEventArgs(addedDefinitions, removedDefinitions, null);
- this.OnChanged(changedArgs);
- }
-
- /// <summary>
- /// Returns a string representation of the directory catalog.
- /// </summary>
- /// <returns>
- /// A <see cref="String"/> containing the string representation of the <see cref="DirectoryCatalog"/>.
- /// </returns>
- public override string ToString()
- {
- return GetDisplayName();
- }
-
- private AssemblyCatalog CreateAssemblyCatalogGuarded(string assemblyFilePath)
- {
- Exception exception = null;
-
- try
- {
- return new AssemblyCatalog(assemblyFilePath, this);
- }
- catch (FileNotFoundException ex)
- { // Files should always exists but don't blow up here if they don't
- exception = ex;
- }
- catch (FileLoadException ex)
- { // File was found but could not be loaded
- exception = ex;
- }
- catch (BadImageFormatException ex)
- { // Dlls that contain native code are not loaded, but do not invalidate the Directory
- exception = ex;
- }
- catch (ReflectionTypeLoadException ex)
- { // Dlls that have missing Managed dependencies are not loaded, but do not invalidate the Directory
- exception = ex;
- }
-
- CompositionTrace.AssemblyLoadFailed(this, assemblyFilePath, exception);
-
- return null;
- }
-
- private void DiffChanges(string[] beforeFiles, string[] afterFiles,
- out List<Tuple<string, AssemblyCatalog>> catalogsToAdd,
- out List<Tuple<string, AssemblyCatalog>> catalogsToRemove)
- {
- catalogsToAdd = new List<Tuple<string, AssemblyCatalog>>();
- catalogsToRemove = new List<Tuple<string, AssemblyCatalog>>();
-
- IEnumerable<string> filesToAdd = afterFiles.Except(beforeFiles);
- foreach (string file in filesToAdd)
- {
- AssemblyCatalog catalog = CreateAssemblyCatalogGuarded(file);
-
- if (catalog != null)
- {
- catalogsToAdd.Add(new Tuple<string, AssemblyCatalog>(file, catalog));
- }
- }
-
- IEnumerable<string> filesToRemove = beforeFiles.Except(afterFiles);
- using (new ReadLock(this._thisLock))
- {
- foreach (string file in filesToRemove)
- {
- AssemblyCatalog catalog;
- if (this._assemblyCatalogs.TryGetValue(file, out catalog))
- {
- catalogsToRemove.Add(new Tuple<string, AssemblyCatalog>(file, catalog));
- }
- }
- }
- }
-
- private string GetDisplayName()
- {
- return string.Format(CultureInfo.CurrentCulture,
- "{0} (Path=\"{1}\")", // NOLOC
- this.GetType().Name,
- this._path);
- }
-
- private string[] GetFiles()
- {
- return Directory.GetFiles(this._fullPath, this._searchPattern);
- }
-
- private static string GetFullPath(string path)
- {
- if (!IOPath.IsPathRooted(path) && AppDomain.CurrentDomain.BaseDirectory != null)
- {
- path = IOPath.Combine(AppDomain.CurrentDomain.BaseDirectory, path);
- }
-
- return IOPath.GetFullPath(path);
- }
-
- private void Initialize(string path, string searchPattern)
- {
- this._path = path;
- this._fullPath = GetFullPath(path);
- this._searchPattern = searchPattern;
- this._assemblyCatalogs = new Dictionary<string, AssemblyCatalog>();
- this._catalogCollection = new ComposablePartCatalogCollection(null);
-
- this._loadedFiles = GetFiles().ToReadOnlyCollection();
-
- foreach (string file in this._loadedFiles)
- {
- AssemblyCatalog assemblyCatalog = null;
- assemblyCatalog = CreateAssemblyCatalogGuarded(file);
-
- if (assemblyCatalog != null)
- {
- this._assemblyCatalogs.Add(file, assemblyCatalog);
- this._catalogCollection.Add(assemblyCatalog);
- }
- }
- this._partsQuery = this._catalogCollection.AsQueryable().SelectMany(catalog => catalog.Parts);
- }
-
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
-
- /// <summary>
- /// Gets the display name of the directory catalog.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing a human-readable display name of the <see cref="DirectoryCatalog"/>.
- /// </value>
- [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
- string ICompositionElement.DisplayName
- {
- get { return this.GetDisplayName(); }
- }
-
- /// <summary>
- /// Gets the composition element from which the directory catalog originated.
- /// </summary>
- /// <value>
- /// This property always returns <see langword="null"/>.
- /// </value>
- [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
- ICompositionElement ICompositionElement.Origin
- {
- get { return null; }
- }
- }
-}
-
-#endif
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportProvider.GetExportOverrides.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportProvider.GetExportOverrides.cs
deleted file mode 100644
index 2a4c582..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportProvider.GetExportOverrides.cs
+++ /dev/null
@@ -1,817 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Collections.ObjectModel;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public abstract partial class ExportProvider
- {
- /// <summary>
- /// Returns the export with the contract name derived from the specified type parameter,
- /// throwing an exception if there is not exactly one matching export.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T}"/> object to return. The contract name is also
- /// derived from this type parameter.
- /// </typeparam>
- /// <returns>
- /// The <see cref="Lazy{T}"/> object with the contract name derived from
- /// <typeparamref name="T"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The returned <see cref="Lazy{T}"/> object is an instance of
- /// <see cref="Lazy{T, TMetadataView}"/> underneath, where
- /// <c>TMetadataView</c>
- /// is <see cref="IDictionary{TKey, TValue}"/> and where <c>TKey</c>
- /// is <see cref="String"/> and <c>TValue</c> is <see cref="Object"/>.
- /// </para>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// There are zero <see cref="Lazy{T}"/> objects with the contract name derived
- /// from <typeparamref name="T"/> in the <see cref="CompositionContainer"/>.
- /// </para>
- /// -or-
- /// <para>
- /// There are more than one <see cref="Lazy{T}"/> objects with the contract name
- /// derived from <typeparamref name="T"/> in the <see cref="CompositionContainer"/>.
- /// </para>
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- public Lazy<T> GetExport<T>()
- {
- return this.GetExport<T>((string)null);
- }
-
- /// <summary>
- /// Returns the export with the specified contract name, throwing an exception if there
- /// is not exactly one matching export.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T}"/> object to return.
- /// </typeparam>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the <see cref="Lazy{T}"/>
- /// object to return; or <see langword="null"/> or an empty string ("") to use the
- /// default contract name.
- /// </param>
- /// <returns>
- /// The <see cref="Lazy{T}"/> object with the specified contract name.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The returned <see cref="Lazy{T}"/> object is an instance of
- /// <see cref="Lazy{T, TMetadataView}"/> underneath, where
- /// <c>TMetadataView</c>
- /// is <see cref="IDictionary{TKey, TValue}"/> and where <c>TKey</c>
- /// is <see cref="String"/> and <c>TValue</c> is <see cref="Object"/>.
- /// </para>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The default contract name is compared using a case-sensitive, non-linguistic
- /// comparison using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// There are zero <see cref="Lazy{T}"/> objects with the specified contract name
- /// in the <see cref="CompositionContainer"/>.
- /// </para>
- /// -or-
- /// <para>
- /// There are more than one <see cref="Lazy{T}"/> objects with the specified contract
- /// name in the <see cref="CompositionContainer"/>.
- /// </para>
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- public Lazy<T> GetExport<T>(string contractName)
- {
- return this.GetExportCore<T>(contractName);
- }
-
- /// <summary>
- /// Returns the export with the contract name derived from the specified type parameter,
- /// throwing an exception if there is not exactly one matching export.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T, TMetadataView}"/> object to return. The
- /// contract name is also derived from this type parameter.
- /// </typeparam>
- /// <typeparam name="TMetadataView">
- /// The type of the metadata view of the <see cref="Lazy{T, TMetadataView}"/> object
- /// to return.
- /// </typeparam>
- /// <returns>
- /// The <see cref="Lazy{T, TMetadataView}"/> object with the contract name derived
- /// from <typeparamref name="T"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// There are zero <see cref="Lazy{T, TMetadataView}"/> objects with the contract
- /// name derived from <typeparamref name="T"/> in the
- /// <see cref="CompositionContainer"/>.
- /// </para>
- /// -or-
- /// <para>
- /// There are more than one <see cref="Lazy{T, TMetadataView}"/> objects with the
- /// contract name derived from <typeparamref name="T"/> in the
- /// <see cref="CompositionContainer"/>.
- /// </para>
- /// </exception>
- /// <exception cref="InvalidOperationException">
- /// <typeparamref name="TMetadataView"/> is not a valid metadata view type.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- public Lazy<T, TMetadataView> GetExport<T, TMetadataView>()
- {
- return this.GetExport<T, TMetadataView>((string)null);
- }
-
- /// <summary>
- /// Returns the export with the specified contract name, throwing an exception if there
- /// is not exactly one matching export.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T, TMetadataView}"/> object to return.
- /// </typeparam>
- /// <typeparam name="TMetadataView">
- /// The type of the metadata view of the <see cref="Lazy{T, TMetadataView}"/> object
- /// to return.
- /// </typeparam>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="Lazy{T, TMetadataView}"/> object to return; or <see langword="null"/>
- /// or an empty string ("") to use the default contract name.
- /// </param>
- /// <returns>
- /// The <see cref="Lazy{T, TMetadataView}"/> object with the specified contract name.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// There are zero <see cref="Lazy{T, TMetadataView}"/> objects with the
- /// specified contract name in the <see cref="CompositionContainer"/>.
- /// </para>
- /// -or-
- /// <para>
- /// There are more than one <see cref="Lazy{T, TMetadataView}"/> objects with the
- /// specified contract name in the <see cref="CompositionContainer"/>.
- /// </para>
- /// </exception>
- /// <exception cref="InvalidOperationException">
- /// <typeparamref name="TMetadataView"/> is not a valid metadata view type.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- public Lazy<T, TMetadataView> GetExport<T, TMetadataView>(string contractName)
- {
- return this.GetExportCore<T, TMetadataView>(contractName);
- }
-
- /// <summary>
- /// Returns the exports with the specified contract name.
- /// </summary>
- /// <param name="type">
- /// The <see cref="Type"/> of the <see cref="Export"/> objects to return.
- /// </param>
- /// <param name="metadataViewType">
- /// The <see cref="Type"/> of the metadata view of the <see cref="Export"/> objects to
- /// return.
- /// </param>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="Export"/> object to return; or <see langword="null"/>
- /// or an empty string ("") to use the default contract name.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> containing the <see cref="Lazy{Object, Object}"/> objects
- /// with the specified contract name, if found; otherwise, an empty
- /// <see cref="IEnumerable{T}"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The returned <see cref="Export"/> objects are instances of
- /// <see cref="Lazy{T, TMetadataView}"/> underneath, where <c>T</c>
- /// is <paramref name="type"/> and <c>TMetadataView</c> is
- /// <paramref name="metadataViewType"/>.
- /// </para>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <paramref name="type"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="type"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="InvalidOperationException">
- /// <paramref name="metadataViewType"/> is not a valid metadata view type.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006")]
- public IEnumerable<Lazy<object, object>> GetExports(Type type, Type metadataViewType, string contractName)
- {
- IEnumerable<Export> exports = this.GetExportsCore(type, metadataViewType, contractName, ImportCardinality.ZeroOrMore);
- Collection<Lazy<object, object>> result = new Collection<Lazy<object, object>>();
-
- Func<Export, Lazy<object, object>> typedExportFactory = ExportServices.CreateSemiStronglyTypedLazyFactory(type, metadataViewType);
- foreach (Export export in exports)
- {
- result.Add(typedExportFactory.Invoke(export));
- }
-
- return result;
- }
-
- /// <summary>
- /// Returns the exports with the contract name derived from the specified type parameter.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T}"/> objects to return. The contract name is also
- /// derived from this type parameter.
- /// </typeparam>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> containing the <see cref="Lazy{T}"/> objects
- /// with the contract name derived from <typeparamref name="T"/>, if found; otherwise,
- /// an empty <see cref="IEnumerable{T}"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The returned <see cref="Lazy{T}"/> objects are instances of
- /// <see cref="Lazy{T, TMetadataView}"/> underneath, where
- /// <c>TMetadataView</c>
- /// is <see cref="IDictionary{TKey, TValue}"/> and where <c>TKey</c>
- /// is <see cref="String"/> and <c>TValue</c> is <see cref="Object"/>.
- /// </para>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006")]
- public IEnumerable<Lazy<T>> GetExports<T>()
- {
- return this.GetExports<T>((string)null);
- }
-
- /// <summary>
- /// Returns the exports with the specified contract name.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T}"/> objects to return.
- /// </typeparam>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the <see cref="Lazy{T}"/>
- /// objects to return; or <see langword="null"/> or an empty string ("") to use the
- /// default contract name.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> containing the <see cref="Lazy{T}"/> objects
- /// with the specified contract name, if found; otherwise, an empty
- /// <see cref="IEnumerable{T}"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The returned <see cref="Lazy{T}"/> objects are instances of
- /// <see cref="Lazy{T, TMetadataView}"/> underneath, where
- /// <c>TMetadataView</c>
- /// is <see cref="IDictionary{TKey, TValue}"/> and where <c>TKey</c>
- /// is <see cref="String"/> and <c>TValue</c> is <see cref="Object"/>.
- /// </para>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006")]
- public IEnumerable<Lazy<T>> GetExports<T>(string contractName)
- {
- return this.GetExportsCore<T>(contractName);
- }
-
- /// <summary>
- /// Returns the exports with the contract name derived from the specified type parameter.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T, TMetadataView}"/> objects to return. The
- /// contract name is also derived from this type parameter.
- /// </typeparam>
- /// <typeparam name="TMetadataView">
- /// The type of the metadata view of the <see cref="Lazy{T, TMetadataView}"/> objects
- /// to return.
- /// </typeparam>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> containing the
- /// <see cref="Lazy{T, TMetadataView}"/> objects with the contract name derived from
- /// <typeparamref name="T"/>, if found; otherwise, an empty
- /// <see cref="IEnumerable{T}"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="InvalidOperationException">
- /// <typeparamref name="TMetadataView"/> is not a valid metadata view type.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006")]
- public IEnumerable<Lazy<T, TMetadataView>> GetExports<T, TMetadataView>()
- {
- return this.GetExports<T, TMetadataView>((string)null);
- }
-
- /// <summary>
- /// Returns the exports with the specified contract name.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T, TMetadataView}"/> objects to return. The
- /// contract name is also derived from this type parameter.
- /// </typeparam>
- /// <typeparam name="TMetadataView">
- /// The type of the metadata view of the <see cref="Lazy{T, TMetadataView}"/> objects
- /// to return.
- /// </typeparam>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="Lazy{T, TMetadataView}"/> objects to return; or <see langword="null"/>
- /// or an empty string ("") to use the default contract name.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> containing the
- /// <see cref="Lazy{T, TMetadataView}"/> objects with the specified contract name if
- /// found; otherwise, an empty <see cref="IEnumerable{T}"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="InvalidOperationException">
- /// <typeparamref name="TMetadataView"/> is not a valid metadata view type.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006")]
- public IEnumerable<Lazy<T, TMetadataView>> GetExports<T, TMetadataView>(string contractName)
- {
- return this.GetExportsCore<T, TMetadataView>(contractName);
- }
-
- /// <summary>
- /// Returns the exported value with the contract name derived from the specified type
- /// parameter, throwing an exception if there is not exactly one matching exported value.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the exported value to return. The contract name is also
- /// derived from this type parameter.
- /// </typeparam>
- /// <returns>
- /// The exported <see cref="Object"/> with the contract name derived from
- /// <typeparamref name="T"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="CompositionContractMismatchException">
- /// The underlying exported value cannot be cast to <typeparamref name="T"/>.
- /// </exception>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// There are zero exported values with the contract name derived from
- /// <typeparamref name="T"/> in the <see cref="CompositionContainer"/>.
- /// </para>
- /// -or-
- /// <para>
- /// There are more than one exported values with the contract name derived from
- /// <typeparamref name="T"/> in the <see cref="CompositionContainer"/>.
- /// </para>
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- public T GetExportedValue<T>()
- {
- return this.GetExportedValue<T>((string)null);
- }
-
- /// <summary>
- /// Returns the exported value with the specified contract name, throwing an exception
- /// if there is not exactly one matching exported value.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the exported value to return.
- /// </typeparam>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the exported value to return,
- /// or <see langword="null"/> or an empty string ("") to use the default contract name.
- /// </param>
- /// <returns>
- /// The exported <see cref="Object"/> with the specified contract name.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="CompositionContractMismatchException">
- /// The underlying exported value cannot be cast to <typeparamref name="T"/>.
- /// </exception>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// There are zero exported values with the specified contract name in the
- /// <see cref="CompositionContainer"/>.
- /// </para>
- /// -or-
- /// <para>
- /// There are more than one exported values with the specified contract name in the
- /// <see cref="CompositionContainer"/>.
- /// </para>
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- public T GetExportedValue<T>(string contractName)
- {
- return this.GetExportedValueCore<T>(contractName, ImportCardinality.ExactlyOne);
- }
-
- /// <summary>
- /// Returns the exported value with the contract name derived from the specified type
- /// parameter, throwing an exception if there is more than one matching exported value.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the exported value to return. The contract name is also
- /// derived from this type parameter.
- /// </typeparam>
- /// <returns>
- /// The exported <see cref="Object"/> with the contract name derived from
- /// <typeparamref name="T"/>, if found; otherwise, the default value for
- /// <typeparamref name="T"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// If the exported value is not found, then this method returns the appropriate
- /// default value for <typeparamref name="T"/>; for example, 0 (zero) for integer
- /// types, <see langword="false"/> for Boolean types, and <see langword="null"/>
- /// for reference types.
- /// </para>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="CompositionContractMismatchException">
- /// The underlying exported value cannot be cast to <typeparamref name="T"/>.
- /// </exception>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// There are more than one exported values with the contract name derived from
- /// <typeparamref name="T"/> in the <see cref="CompositionContainer"/>.
- /// </para>
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- public T GetExportedValueOrDefault<T>()
- {
- return this.GetExportedValueOrDefault<T>((string)null);
- }
-
- /// <summary>
- /// Returns the exported value with the specified contract name, throwing an exception
- /// if there is more than one matching exported value.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the exported value to return.
- /// </typeparam>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the exported value to return,
- /// or <see langword="null"/> or an empty string ("") to use the default contract name.
- /// </param>
- /// <returns>
- /// The exported <see cref="Object"/> with the specified contract name, if found;
- /// otherwise, the default value for <typeparamref name="T"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// If the exported value is not found, then this method returns the appropriate
- /// default value for <typeparamref name="T"/>; for example, 0 (zero) for integer
- /// types, <see langword="false"/> for Boolean types, and <see langword="null"/>
- /// for reference types.
- /// </para>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="CompositionContractMismatchException">
- /// The underlying exported value cannot be cast to <typeparamref name="T"/>.
- /// </exception>
- /// <exception cref="ImportCardinalityMismatchException">
- /// There are more than one exported values with the specified contract name in the
- /// <see cref="CompositionContainer"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- public T GetExportedValueOrDefault<T>(string contractName)
- {
- return this.GetExportedValueCore<T>(contractName, ImportCardinality.ZeroOrOne);
- }
-
- /// <summary>
- /// Returns the exported values with the contract name derived from the specified type
- /// parameter.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the exported value to return. The contract name is also
- /// derived from this type parameter.
- /// </typeparam>
- /// <returns>
- /// An <see cref="Collection{T}"/> containing the exported values with the contract name
- /// derived from the specified type parameter, if found; otherwise, an empty
- /// <see cref="Collection{T}"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="CompositionContractMismatchException">
- /// One or more of the underlying exported values cannot be cast to
- /// <typeparamref name="T"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- public IEnumerable<T> GetExportedValues<T>()
- {
- return this.GetExportedValues<T>((string)null);
- }
-
- /// <summary>
- /// Returns the exported values with the specified contract name.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the exported value to return.
- /// </typeparam>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the exported values to
- /// return; or <see langword="null"/> or an empty string ("") to use the default
- /// contract name.
- /// </param>
- /// <returns>
- /// An <see cref="Collection{T}"/> containing the exported values with the specified
- /// contract name, if found; otherwise, an empty <see cref="Collection{T}"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="CompositionContractMismatchException">
- /// One or more of the underlying exported values cannot be cast to
- /// <typeparamref name="T"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- public IEnumerable<T> GetExportedValues<T>(string contractName)
- {
- return this.GetExportedValuesCore<T>(contractName);
- }
-
- private IEnumerable<T> GetExportedValuesCore<T>(string contractName)
- {
- IEnumerable<Export> exports = this.GetExportsCore(typeof(T), (Type)null, contractName, ImportCardinality.ZeroOrMore);
-
- Collection<T> result = new Collection<T>();
- foreach (Export export in exports)
- {
- result.Add(ExportServices.GetCastedExportedValue<T>(export));
- }
- return result;
- }
-
- private T GetExportedValueCore<T>(string contractName, ImportCardinality cardinality)
- {
- Assumes.IsTrue(cardinality.IsAtMostOne());
-
- Export export = this.GetExportsCore(typeof(T), (Type)null, contractName, cardinality).SingleOrDefault();
-
- return (export != null) ? ExportServices.GetCastedExportedValue<T>(export) : default(T);
- }
-
- private IEnumerable<Lazy<T>> GetExportsCore<T>(string contractName)
- {
- IEnumerable<Export> exports = this.GetExportsCore(typeof(T), (Type)null, contractName, ImportCardinality.ZeroOrMore);
-
- Collection<Lazy<T>> result = new Collection<Lazy<T>>();
- foreach (Export export in exports)
- {
- result.Add(ExportServices.CreateStronglyTypedLazyOfT<T>(export));
- }
- return result;
- }
-
- private IEnumerable<Lazy<T, TMetadataView>> GetExportsCore<T, TMetadataView>(string contractName)
- {
- IEnumerable<Export> exports = this.GetExportsCore(typeof(T), typeof(TMetadataView), contractName, ImportCardinality.ZeroOrMore);
-
- Collection<Lazy<T, TMetadataView>> result = new Collection<Lazy<T, TMetadataView>>();
- foreach (Export export in exports)
- {
- result.Add(ExportServices.CreateStronglyTypedLazyOfTM<T, TMetadataView>(export));
- }
- return result;
- }
-
- private Lazy<T, TMetadataView> GetExportCore<T, TMetadataView>(string contractName)
- {
- Export export = this.GetExportsCore(typeof(T), typeof(TMetadataView), contractName, ImportCardinality.ExactlyOne).SingleOrDefault();
-
- return (export != null) ? ExportServices.CreateStronglyTypedLazyOfTM<T, TMetadataView>(export) : null;
- }
-
- private Lazy<T> GetExportCore<T>(string contractName)
- {
- Export export = this.GetExportsCore(typeof(T), null, contractName, ImportCardinality.ExactlyOne).SingleOrDefault();
-
- return (export != null) ? ExportServices.CreateStronglyTypedLazyOfT<T>(export) : null;
- }
-
- private IEnumerable<Export> GetExportsCore(Type type, Type metadataViewType, string contractName, ImportCardinality cardinality)
- {
- // Only 'type' cannot be null - the other parameters have sensible defaults.
- Requires.NotNull(type, "type");
-
- if (string.IsNullOrEmpty(contractName))
- {
- contractName = AttributedModelServices.GetContractName(type);
- }
-
- if (metadataViewType == null)
- {
- metadataViewType = ExportServices.DefaultMetadataViewType;
- }
-
- if (!MetadataViewProvider.IsViewTypeValid(metadataViewType))
- {
- throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Strings.InvalidMetadataView, metadataViewType.Name));
- }
-
- ImportDefinition importDefinition = BuildImportDefinition(type, metadataViewType, contractName, cardinality);
- return this.GetExports(importDefinition, null);
- }
-
- private static ImportDefinition BuildImportDefinition(Type type, Type metadataViewType, string contractName, ImportCardinality cardinality)
- {
- Assumes.NotNull(type, metadataViewType, contractName);
-
- IEnumerable<KeyValuePair<string, Type>> requiredMetadata = CompositionServices.GetRequiredMetadata(metadataViewType);
-
- string requiredTypeIdentity = null;
- if (type != typeof(object))
- {
- requiredTypeIdentity = AttributedModelServices.GetTypeIdentity(type);
- }
-
- return new ContractBasedImportDefinition(contractName, requiredTypeIdentity, requiredMetadata, cardinality, false, true, CreationPolicy.Any);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportProvider.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportProvider.cs
deleted file mode 100644
index 39893dc..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportProvider.cs
+++ /dev/null
@@ -1,231 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using System.Linq;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// Defines the <see langword="abstract"/> base class for export providers, which provide
- /// methods for retrieving <see cref="Export"/> objects.
- /// </summary>
- public abstract partial class ExportProvider
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportProvider"/> class.
- /// </summary>
- protected ExportProvider()
- {
- }
-
- /// <summary>
- /// Occurs when the exports in the <see cref="ExportProvider"/> have changed.
- /// </summary>
- public event EventHandler<ExportsChangeEventArgs> ExportsChanged;
-
- /// <summary>
- /// Occurs when the exports in the <see cref="ExportProvider"/> are changing.
- /// </summary>
- public event EventHandler<ExportsChangeEventArgs> ExportsChanging;
-
- /// <summary>
- /// Returns all exports that match the conditions of the specified import.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> objects to get.
- /// </param>
- /// <result>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects that match
- /// the conditions defined by <see cref="ImportDefinition"/>, if found; otherwise, an
- /// empty <see cref="IEnumerable{T}"/>.
- /// </result>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// <see cref="ImportDefinition.Cardinality"/> is <see cref="ImportCardinality.ExactlyOne"/> and
- /// there are zero <see cref="Export"/> objects that match the conditions of the specified
- /// <see cref="ImportDefinition"/>.
- /// </para>
- /// -or-
- /// <para>
- /// <see cref="ImportDefinition.Cardinality"/> is <see cref="ImportCardinality.ZeroOrOne"/> or
- /// <see cref="ImportCardinality.ExactlyOne"/> and there are more than one <see cref="Export"/>
- /// objects that match the conditions of the specified <see cref="ImportDefinition"/>.
- /// </para>
- /// </exception>
- public IEnumerable<Export> GetExports(ImportDefinition definition)
- {
- return GetExports(definition, null);
- }
-
- /// <summary>
- /// Returns all exports that match the conditions of the specified import.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> objects to get.
- /// </param>
- /// <result>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects that match
- /// the conditions defined by <see cref="ImportDefinition"/>, if found; otherwise, an
- /// empty <see cref="IEnumerable{T}"/>.
- /// </result>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// <see cref="ImportDefinition.Cardinality"/> is <see cref="ImportCardinality.ExactlyOne"/> and
- /// there are zero <see cref="Export"/> objects that match the conditions of the specified
- /// <see cref="ImportDefinition"/>.
- /// </para>
- /// -or-
- /// <para>
- /// <see cref="ImportDefinition.Cardinality"/> is <see cref="ImportCardinality.ZeroOrOne"/> or
- /// <see cref="ImportCardinality.ExactlyOne"/> and there are more than one <see cref="Export"/>
- /// objects that match the conditions of the specified <see cref="ImportDefinition"/>.
- /// </para>
- /// </exception>
- public IEnumerable<Export> GetExports(ImportDefinition definition, AtomicComposition atomicComposition)
- {
- Requires.NotNull(definition, "definition");
-
- IEnumerable<Export> exports;
- ExportCardinalityCheckResult result = this.TryGetExportsCore(definition, atomicComposition, out exports);
- switch(result)
- {
- case ExportCardinalityCheckResult.Match:
- return exports;
- case ExportCardinalityCheckResult.NoExports:
- throw new ImportCardinalityMismatchException(string.Format(CultureInfo.CurrentCulture, Strings.CardinalityMismatch_NoExports, definition.Constraint.Body.ToString()));
- default:
- Assumes.IsTrue(result == ExportCardinalityCheckResult.TooManyExports);
- throw new ImportCardinalityMismatchException(string.Format(CultureInfo.CurrentCulture, Strings.CardinalityMismatch_TooManyExports, definition.Constraint.Body.ToString()));
- }
- }
-
- /// <summary>
- /// Returns all exports that match the conditions of the specified import.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> objects to get.
- /// </param>
- /// <param name="exports">
- /// When this method returns, contains an <see cref="IEnumerable{T}"/> of <see cref="Export"/>
- /// objects that match the conditions defined by <see cref="ImportDefinition"/>, if found;
- /// otherwise, an empty <see cref="IEnumerable{T}"/>.
- /// </param>
- /// <returns>
- /// <see langword="true"/> if <see cref="ImportDefinition.Cardinality"/> is
- /// <see cref="ImportCardinality.ZeroOrOne"/> or <see cref="ImportCardinality.ZeroOrMore"/> and
- /// there are zero <see cref="Export"/> objects that match the conditions of the specified
- /// <see cref="ImportDefinition"/>. <see langword="true"/> if
- /// <see cref="ImportDefinition.Cardinality"/> is <see cref="ImportCardinality.ZeroOrOne"/> or
- /// <see cref="ImportCardinality.ExactlyOne"/> and there is exactly one <see cref="Export"/>
- /// that matches the conditions of the specified <see cref="ImportDefinition"/>; otherwise,
- /// <see langword="false"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- public bool TryGetExports(ImportDefinition definition, AtomicComposition atomicComposition, out IEnumerable<Export> exports)
- {
- Requires.NotNull(definition, "definition");
-
- exports = null;
- ExportCardinalityCheckResult result = this.TryGetExportsCore(definition, atomicComposition, out exports);
- return (result == ExportCardinalityCheckResult.Match);
- }
-
- /// <summary>
- /// Returns all exports that match the constraint defined by the specified definition.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> objects to return.
- /// </param>
- /// <result>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects that match
- /// the conditions defined by <see cref="ImportDefinition"/>, if found; otherwise, an
- /// empty <see cref="IEnumerable{T}"/>.
- /// </result>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this method should not treat cardinality-related mismatches
- /// as errors, and should not throw exceptions in those cases. For instance,
- /// if <see cref="ImportDefinition.Cardinality"/> is <see cref="ImportCardinality.ExactlyOne"/>
- /// and there are zero <see cref="Export"/> objects that match the conditions of the
- /// specified <see cref="ImportDefinition"/>, an <see cref="IEnumerable{T}"/> should be returned.
- /// </note>
- /// </remarks>
- protected abstract IEnumerable<Export> GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition);
-
- /// <summary>
- /// Raises the <see cref="ExportsChanged"/> event.
- /// </summary>
- /// <param name="e">
- /// An <see cref="ExportsChangeEventArgs"/> containing the data for the event.
- /// </param>
- protected virtual void OnExportsChanged(ExportsChangeEventArgs e)
- {
- EventHandler<ExportsChangeEventArgs> changedEvent = this.ExportsChanged;
- if (changedEvent != null)
- {
- CompositionResult result = CompositionServices.TryFire(changedEvent, this, e);
- result.ThrowOnErrors(e.AtomicComposition);
- }
- }
-
- /// <summary>
- /// Raises the <see cref="ExportsChanging"/> event.
- /// </summary>
- /// <param name="e">
- /// An <see cref="ExportsChangeEventArgs"/> containing the data for the event.
- /// </param>
- protected virtual void OnExportsChanging(ExportsChangeEventArgs e)
- {
- EventHandler<ExportsChangeEventArgs> changingEvent = this.ExportsChanging;
- if (changingEvent != null)
- {
- CompositionResult result = CompositionServices.TryFire(changingEvent, this, e);
- result.ThrowOnErrors(e.AtomicComposition);
- }
- }
-
- private ExportCardinalityCheckResult TryGetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition, out IEnumerable<Export> exports)
- {
- Assumes.NotNull(definition);
-
- exports = this.GetExportsCore(definition, atomicComposition);
-
- if (exports == null)
- {
- exports = Enumerable.Empty<Export>();
- }
-
- var checkResult = ExportServices.CheckCardinality(definition, exports);
-
- // Export providers treat >1 match as zero for cardinality 0-1 imports
- // If this policy is moved we need to revisit the assumption that the
- // ImportEngine made during previewing the only required imports to
- // now also preview optional imports.
- if (checkResult == ExportCardinalityCheckResult.TooManyExports &&
- definition.Cardinality == ImportCardinality.ZeroOrOne)
- {
- checkResult = ExportCardinalityCheckResult.Match;
- exports = Enumerable.Empty<Export>();
- }
-
- return checkResult;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportsChangeEventArgs.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportsChangeEventArgs.cs
deleted file mode 100644
index 6cff6b6..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportsChangeEventArgs.cs
+++ /dev/null
@@ -1,110 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// Provides data for the <see cref="ExportProvider.ExportsChanged"/> and
- /// <see cref="ExportProvider.ExportsChanging"/> events.
- /// </summary>
- public class ExportsChangeEventArgs : EventArgs
- {
- private IEnumerable<string> _changedContractNames = null;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportsChangeEventArgs"/> class with
- /// the specified changed export definitions.
- /// </summary>
- /// <param name="addedExports">
- /// An <see cref="IEnumerable{T}"/> of <see cref="ExportDefinition"/>s of the exports
- /// that have been added.
- /// </param>
- /// <param name="removedExports">
- /// An <see cref="IEnumerable{T}"/> of <see cref="ExportDefinition"/>s of the exports
- /// that have been removed.
- /// </param>
- /// <param name="atomicComposition">
- /// A <see cref="AtomicComposition"/> representing all tentative changes that will
- /// be completed if the change is successful, or discarded if it is not.
- /// <see langword="null"/> if being applied outside a <see cref="AtomicComposition"/>
- /// or during a <see cref="ExportProvider.ExportsChanged"/> event.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="addedExports"/> or <paramref name="removedExports"/> is <see langword="null"/>.
- /// </exception>
- public ExportsChangeEventArgs(IEnumerable<ExportDefinition> addedExports,
- IEnumerable<ExportDefinition> removedExports, AtomicComposition atomicComposition)
- {
- Requires.NotNull(addedExports, "addedExports");
- Requires.NotNull(removedExports, "removedExports");
-
- this.AddedExports = addedExports.AsArray();
- this.RemovedExports = removedExports.AsArray();
- this.AtomicComposition = atomicComposition;
- }
-
- /// <summary>
- /// Gets the export definitions for the exports that have been added.
- /// </summary>
- /// <value>
- /// A <see cref="IEnumerable{T}"/> of ExportDefinitions representing
- /// the exports that have been added to the <see cref="CompositionContainer"/>.
- /// </value>
- public IEnumerable<ExportDefinition> AddedExports { get; private set; }
-
- /// <summary>
- /// Gets the export definitions for the exports that have been removed.
- /// </summary>
- /// <value>
- /// A <see cref="IEnumerable{T}"/> of ExportDefinitions representing
- /// the exports that have been added to the <see cref="CompositionContainer"/>.
- /// </value>
- public IEnumerable<ExportDefinition> RemovedExports { get; private set; }
-
- /// <summary>
- /// Gets the contract names of the exports that have changed.
- /// </summary>
- /// <value>
- /// A <see cref="IEnumerable{T}"/> of strings representing the contract names of
- /// the exports that have changed in the <see cref="CompositionContainer"/>.
- /// </value>
- public IEnumerable<string> ChangedContractNames
- {
- get
- {
- if (this._changedContractNames == null)
- {
- this._changedContractNames = this.AddedExports
- .Concat(this.RemovedExports)
- .Select(export => export.ContractName)
- .Distinct()
- .ToArray();
- }
- return this._changedContractNames;
- }
- }
-
- /// <summary>
- /// Gets the atomicComposition, if any, that this change applies to.
- /// </summary>
- /// <value>
- /// A <see cref="AtomicComposition"/> that this set of changes applies too.
- ///
- /// It can be <see langword="null"/> if the changes are being applied outside a
- /// <see cref="AtomicComposition"/> or during a
- /// <see cref="ExportProvider.ExportsChanged"/> event.
- ///
- /// When the value is non-null it should be used to record temporary changed state
- /// and actions that will be executed when the atomicComposition is completeed.
- /// </value>
- public AtomicComposition AtomicComposition { get; private set; }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/INotifyComposablePartCatalogChanged.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/INotifyComposablePartCatalogChanged.cs
deleted file mode 100644
index 28d013b..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/INotifyComposablePartCatalogChanged.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// Notifications when a ComposablePartCatalog changes.
- /// </summary>
- public interface INotifyComposablePartCatalogChanged
- {
- event EventHandler<ComposablePartCatalogChangeEventArgs> Changed;
- event EventHandler<ComposablePartCatalogChangeEventArgs> Changing;
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.EngineContext.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.EngineContext.cs
deleted file mode 100644
index d5fb427..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.EngineContext.cs
+++ /dev/null
@@ -1,84 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class ImportEngine
- {
- /// <summary>
- /// Used to wrap the start and stop of enforcing export changes don't
- /// break required imports. This context is stored in a AtomicComposition.
- /// </summary>
- private class EngineContext
- {
- private ImportEngine _importEngine;
- private List<PartManager> _addedPartManagers = new List<PartManager>();
- private List<PartManager> _removedPartManagers = new List<PartManager>();
- private EngineContext _parentEngineContext;
-
- public EngineContext(ImportEngine importEngine, EngineContext parentEngineContext)
- {
- this._importEngine = importEngine;
- this._parentEngineContext = parentEngineContext;
- }
-
- public void AddPartManager(PartManager part)
- {
- Assumes.NotNull(part);
- if (!this._removedPartManagers.Remove(part))
- {
- this._addedPartManagers.Add(part);
- }
- }
-
- public void RemovePartManager(PartManager part)
- {
- Assumes.NotNull(part);
- if (!this._addedPartManagers.Remove(part))
- {
- this._removedPartManagers.Add(part);
- }
- }
-
- public IEnumerable<PartManager> GetAddedPartManagers()
- {
- if (this._parentEngineContext != null)
- {
- return this._addedPartManagers.ConcatAllowingNull(this._parentEngineContext.GetAddedPartManagers());
- }
- return this._addedPartManagers;
- }
-
- public IEnumerable<PartManager> GetRemovedPartManagers()
- {
- if (this._parentEngineContext != null)
- {
- return this._removedPartManagers.ConcatAllowingNull(this._parentEngineContext.GetRemovedPartManagers());
- }
- return this._removedPartManagers;
- }
-
- public void Complete()
- {
- foreach (var partManager in this._addedPartManagers)
- {
- this._importEngine.StartSatisfyingImports(partManager, null);
- }
-
- foreach (var partManager in this._removedPartManagers)
- {
- this._importEngine.StopSatisfyingImports(partManager, null);
- }
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.PartManager.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.PartManager.cs
deleted file mode 100644
index 2af4197..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.PartManager.cs
+++ /dev/null
@@ -1,211 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class ImportEngine
- {
- /// <summary>
- /// Used by the <see cref="ImportEngine"/> to manage the composition of a given part.
- /// It stores things like the list of disposable exports used to satisfy the imports as
- /// well as the caching of the exports discovered during previewing of a part.
- /// </summary>
- private class PartManager
- {
- private Dictionary<ImportDefinition, List<IDisposable>> _importedDisposableExports;
- private Dictionary<ImportDefinition, Export[]> _importCache;
- private string[] _importedContractNames;
- private ComposablePart _part;
- private ImportState _state = ImportState.NoImportsSatisfied;
- private readonly ImportEngine _importEngine;
-
- public PartManager(ImportEngine importEngine, ComposablePart part)
- {
- this._importEngine = importEngine;
- this._part = part;
- }
-
- public ComposablePart Part
- {
- get
- {
- return this._part;
- }
- }
-
- public ImportState State
- {
- get
- {
- using (this._importEngine._lock.LockStateForRead())
- {
- return this._state;
- }
- }
- set
- {
- using (this._importEngine._lock.LockStateForWrite())
- {
- this._state = value;
- }
- }
- }
-
- public bool TrackingImports { get; set; }
-
- public IEnumerable<string> GetImportedContractNames()
- {
- if (this.Part == null)
- {
- return Enumerable.Empty<string>();
- }
-
- if (this._importedContractNames == null)
- {
- this._importedContractNames = this.Part.ImportDefinitions.Select(import => import.ContractName ?? ImportDefinition.EmptyContractName).Distinct().ToArray();
- }
- return this._importedContractNames;
- }
-
- public CompositionResult TrySetImport(ImportDefinition import, IEnumerable<Export> exports)
- {
- try
- {
- this.Part.SetImport(import, exports);
- UpdateDisposableDependencies(import, exports);
- return CompositionResult.SucceededResult;
- }
- catch (CompositionException ex)
- { // Pulling on one of the exports failed
-
- return new CompositionResult(
- ErrorBuilder.CreatePartCannotSetImport(Part, import, ex));
- }
- catch (ComposablePartException ex)
- { // Type mismatch between export and import
-
- return new CompositionResult(
- ErrorBuilder.CreatePartCannotSetImport(Part, import, ex));
- }
- }
-
- public void SetSavedImport(ImportDefinition import, Export[] exports, AtomicComposition atomicComposition)
- {
- if (atomicComposition != null)
- {
- var savedExports = this.GetSavedImport(import);
-
- // Add a revert action to revert the stored exports
- // in the case that this atomicComposition gets rolled back.
- atomicComposition.AddRevertAction(() =>
- this.SetSavedImport(import, savedExports, null));
- }
-
- if (this._importCache == null)
- {
- this._importCache = new Dictionary<ImportDefinition, Export[]>();
- }
-
- this._importCache[import] = exports;
- }
-
- public Export[] GetSavedImport(ImportDefinition import)
- {
- Export[] exports = null;
- if (this._importCache != null)
- {
- // We don't care about the return value we just want the exports
- // and if it isn't present we just return the initialized null value
- this._importCache.TryGetValue(import, out exports);
- }
- return exports;
- }
-
- public void ClearSavedImports()
- {
- this._importCache = null;
- }
-
- public CompositionResult TryOnComposed()
- {
- try
- {
- this.Part.Activate();
- return CompositionResult.SucceededResult;
- }
- catch (ComposablePartException ex)
- { // Type failed to be constructed, imports could not be set, etc
- return new CompositionResult(
- ErrorBuilder.CreatePartCannotActivate(this.Part, ex));
- }
- }
-
- public void UpdateDisposableDependencies(ImportDefinition import, IEnumerable<Export> exports)
- {
- // Determine if there are any new disposable exports, optimizing for the most
- // likely case, which is that there aren't any
- List<IDisposable> disposableExports = null;
- foreach (var disposableExport in exports.OfType<IDisposable>())
- {
- if (disposableExports == null)
- {
- disposableExports = new List<IDisposable>();
- }
- disposableExports.Add(disposableExport);
- }
-
- // Dispose any existing references previously set on this import
- List<IDisposable> oldDisposableExports = null;
- if (this._importedDisposableExports != null &&
- this._importedDisposableExports.TryGetValue(import, out oldDisposableExports))
- {
- oldDisposableExports.ForEach(disposable => disposable.Dispose());
-
- // If there aren't any replacements, get rid of the old storage
- if (disposableExports == null)
- {
- this._importedDisposableExports.Remove(import);
- if (!this._importedDisposableExports.FastAny())
- {
- this._importedDisposableExports = null;
- }
-
- return;
- }
- }
-
- // Record the new collection
- if (disposableExports != null)
- {
- if (this._importedDisposableExports == null)
- {
- this._importedDisposableExports = new Dictionary<ImportDefinition, List<IDisposable>>();
- }
- this._importedDisposableExports[import] = disposableExports;
- }
- }
-
- public void DisposeAllDependencies()
- {
- if (this._importedDisposableExports != null)
- {
- IEnumerable<IDisposable> dependencies = this._importedDisposableExports.Values
- .SelectMany(exports => exports);
-
- this._importedDisposableExports = null;
-
- dependencies.ForEach(disposableExport => disposableExport.Dispose());
- }
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.RecompositionManager.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.RecompositionManager.cs
deleted file mode 100644
index ba1f98a..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.RecompositionManager.cs
+++ /dev/null
@@ -1,159 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class ImportEngine
- {
- /// <summary>
- /// Used by the <see cref="ImportEngine"/> to effiecently store and retrieve the list of parts
- /// that will be affected by changes to exports. This allows the <see cref="ImportEngine"/> to properly
- /// block breaking changes and also recompose imports as appropriate.
- /// </summary>
- private class RecompositionManager
- {
- private WeakReferenceCollection<PartManager> _partsToIndex = new WeakReferenceCollection<PartManager>();
- private WeakReferenceCollection<PartManager> _partsToUnindex = new WeakReferenceCollection<PartManager>();
- private Dictionary<string, WeakReferenceCollection<PartManager>> _partManagerIndex = new Dictionary<string, WeakReferenceCollection<PartManager>>();
-
- public void AddPartToIndex(PartManager partManager)
- {
- this._partsToIndex.Add(partManager);
- }
-
- public void AddPartToUnindex(PartManager partManager)
- {
- this._partsToUnindex.Add(partManager);
- }
-
- public IEnumerable<PartManager> GetAffectedParts(IEnumerable<string> changedContractNames)
- {
- this.UpdateImportIndex();
-
- List<PartManager> parts = new List<PartManager>();
-
- parts.AddRange(GetPartsImporting(ImportDefinition.EmptyContractName));
-
- foreach (string contractName in changedContractNames)
- {
- parts.AddRange(GetPartsImporting(contractName));
- }
-
- return parts;
- }
-
- public static IEnumerable<ImportDefinition> GetAffectedImports(ComposablePart part, IEnumerable<ExportDefinition> changedExports)
- {
- return part.ImportDefinitions.Where(import => IsAffectedImport(import, changedExports));
- }
-
- private static bool IsAffectedImport(ImportDefinition import, IEnumerable<ExportDefinition> changedExports)
- {
- // This could be more efficient still if the export definitions were indexed by contract name,
- // only worth revisiting if we need to squeeze more performance out of recomposition
- foreach (var export in changedExports)
- {
- if (import.IsConstraintSatisfiedBy(export))
- {
- return true;
- }
- }
-
- return false;
- }
-
- public IEnumerable<PartManager> GetPartsImporting(string contractName)
- {
- WeakReferenceCollection<PartManager> partManagerList;
- if (!this._partManagerIndex.TryGetValue(contractName, out partManagerList))
- {
- return Enumerable.Empty<PartManager>();
- }
-
- return partManagerList.AliveItemsToList();
- }
-
- private void AddIndexEntries(PartManager partManager)
- {
- foreach (string contractName in partManager.GetImportedContractNames())
- {
- WeakReferenceCollection<PartManager> indexEntries;
- if (!this._partManagerIndex.TryGetValue(contractName, out indexEntries))
- {
- indexEntries = new WeakReferenceCollection<PartManager>();
- this._partManagerIndex.Add(contractName, indexEntries);
- }
-
- if (!indexEntries.Contains(partManager))
- {
- indexEntries.Add(partManager);
- }
- }
- }
-
- private void RemoveIndexEntries(PartManager partManager)
- {
- foreach (string contractName in partManager.GetImportedContractNames())
- {
- WeakReferenceCollection<PartManager> indexEntries;
- if (this._partManagerIndex.TryGetValue(contractName, out indexEntries))
- {
- indexEntries.Remove(partManager);
- var aliveItems = indexEntries.AliveItemsToList();
-
- if (aliveItems.Count == 0)
- {
- this._partManagerIndex.Remove(contractName);
- }
- }
- }
- }
-
- private void UpdateImportIndex()
- {
- var partsToIndex = this._partsToIndex.AliveItemsToList();
- this._partsToIndex.Clear();
-
- var partsToUnindex = this._partsToUnindex.AliveItemsToList();
- this._partsToUnindex.Clear();
-
- if (partsToIndex.Count == 0 && partsToUnindex.Count == 0)
- {
- return;
- }
-
- foreach (var partManager in partsToIndex)
- {
- var index = partsToUnindex.IndexOf(partManager);
-
- // If the same part is being added and removed we can ignore both
- if (index >= 0)
- {
- partsToUnindex[index] = null;
- }
- else
- {
- AddIndexEntries(partManager);
- }
- }
-
- foreach (var partManager in partsToUnindex)
- {
- if (partManager != null)
- {
- RemoveIndexEntries(partManager);
- }
- }
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.cs
deleted file mode 100644
index 18b296a..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.cs
+++ /dev/null
@@ -1,754 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- // This class guarantees thread-safety under the follwoing conditions:
- // - Each composition is executed on a single thread
- // - No recomposition ever takes place
- // - The class is created with isThreadSafe=true
- public partial class ImportEngine : ICompositionService, IDisposable
- {
- private const int MaximumNumberOfCompositionIterations = 100;
-
- private volatile bool _isDisposed;
- private ExportProvider _sourceProvider;
- private Stack<PartManager> _recursionStateStack = new Stack<PartManager>();
- private ConditionalWeakTable<ComposablePart, PartManager> _partManagers = new ConditionalWeakTable<ComposablePart, PartManager>();
- private RecompositionManager _recompositionManager = new RecompositionManager();
- private readonly CompositionLock _lock = null;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportEngine"/> class.
- /// </summary>
- /// <param name="sourceProvider">
- /// The <see cref="ExportProvider"/> which provides the
- /// <see cref="ImportEngine"/> access to <see cref="Export"/>s.
- /// </param>
- public ImportEngine(ExportProvider sourceProvider)
- : this(sourceProvider, false)
- {
- }
-
- public ImportEngine(ExportProvider sourceProvider, bool isThreadSafe)
- {
- Requires.NotNull(sourceProvider, "sourceProvider");
-
- this._sourceProvider = sourceProvider;
- this._sourceProvider.ExportsChanging += this.OnExportsChanging;
- this._lock = new CompositionLock(isThreadSafe);
- }
-
- /// <summary>
- /// Previews all the required imports for the given <see cref="ComposablePart"/> to
- /// ensure they can all be satisified. The preview does not actually set the imports
- /// only ensures that they exist in the source provider. If the preview succeeds then
- /// the <see cref="ImportEngine"/> also enforces that changes to exports in the source
- /// provider will not break any of the required imports. If this enforcement needs to be
- /// lifted for this part then <see cref="ReleaseImports"/> needs to be called for this
- /// <see cref="ComposablePart"/>.
- /// </summary>
- /// <param name="part">
- /// The <see cref="ComposablePart"/> to preview the required imports.
- /// </param>
- /// <param name="atomicComposition"></param>
- /// <exception cref="CompositionException">
- /// An error occurred during previewing and <paramref name="atomicComposition"/> is null.
- /// <see cref="CompositionException.Errors"/> will contain a collection of errors that occurred.
- /// The pre-existing composition is in an unknown state, depending on the errors that occured.
- /// </exception>
- /// <exception cref="ChangeRejectedException">
- /// An error occurred during the previewing and <paramref name="atomicComposition"/> is not null.
- /// <see cref="CompositionException.Errors"/> will contain a collection of errors that occurred.
- /// The pre-existing composition remains in valid state.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ImportEngine"/> has been disposed of.
- /// </exception>
- public void PreviewImports(ComposablePart part, AtomicComposition atomicComposition)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(part, "part");
-
- // NOTE : this is a very intricate area threading-wise, please use caution when changing, otherwise state corruption or deadlocks will ensue
- // The gist of what we are doing is as follows:
- // We need to lock the composition, as we will proceed modifying our internal state. The tricky part is when we release the lock
- // Due to the fact that some actions will take place AFTER we leave this method, we need to KEEP THAT LOCK HELD until the transation is commiited or rolled back
- // This is the reason we CAN'T use "using here.
- // Instead, if the transaction is present we will queue up the release of the lock, otherwise we will release it when we exit this method
- // We add the "release" lock to BOTH Commit and Revert queues, because they are mutually exclusive, and we need to release the lock regardless.
-
- // This will take the lock, if necesary
- IDisposable compositionLockHolder = this._lock.IsThreadSafe ? this._lock.LockComposition() : null;
- bool compositionLockTaken = (compositionLockHolder != null);
- try
- {
- // revert actions are processed in the reverse order, so we have to add the "release lock" action now
- if (compositionLockTaken && (atomicComposition != null))
- {
- atomicComposition.AddRevertAction(() => compositionLockHolder.Dispose());
- }
-
- var partManager = GetPartManager(part, true);
- var result = TryPreviewImportsStateMachine(partManager, part, atomicComposition);
- result.ThrowOnErrors(atomicComposition);
-
- StartSatisfyingImports(partManager, atomicComposition);
-
- // Add the "release lock" to the commit actions
- if (compositionLockTaken && (atomicComposition != null))
- {
- atomicComposition.AddCompleteAction(() => compositionLockHolder.Dispose());
- }
- }
- finally
- {
- // We haven't updated the queues, so we can release the lock now
- if (compositionLockTaken && (atomicComposition == null))
- {
- compositionLockHolder.Dispose();
- }
- }
- }
-
- /// <summary>
- /// Satisfies the imports of the specified composable part. If the satisfy succeeds then
- /// the <see cref="ImportEngine"/> also enforces that changes to exports in the source
- /// provider will not break any of the required imports. If this enforcement needs to be
- /// lifted for this part then <see cref="ReleaseImports"/> needs to be called for this
- /// <see cref="ComposablePart"/>.
- /// </summary>
- /// <param name="part">
- /// The <see cref="ComposablePart"/> to set the imports.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="part"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ImportEngine"/> has been disposed of.
- /// </exception>
- public void SatisfyImports(ComposablePart part)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(part, "part");
-
- // NOTE : the following two calls use the state lock
- PartManager partManager = this.GetPartManager(part, true);
- if (partManager.State == ImportState.Composed)
- {
- return;
- }
-
- using (this._lock.LockComposition())
- {
- var result = TrySatisfyImports(partManager, part, true);
- result.ThrowOnErrors(); // throw CompositionException not ChangeRejectedException
- }
- }
-
- /// <summary>
- /// Sets the imports of the specified composable part exactly once and they will not
- /// ever be recomposed.
- /// </summary>
- /// <param name="part">
- /// The <see cref="ComposablePart"/> to set the imports.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="part"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ICompositionService"/> has been disposed of.
- /// </exception>
- public void SatisfyImportsOnce(ComposablePart part)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(part, "part");
-
- // NOTE : the following two calls use the state lock
- PartManager partManager = this.GetPartManager(part, true);
- if (partManager.State == ImportState.Composed)
- {
- return;
- }
-
- using (this._lock.LockComposition())
- {
- var result = TrySatisfyImports(partManager, part, false);
- result.ThrowOnErrors(); // throw CompositionException not ChangeRejectedException
- }
- }
-
- /// <summary>
- /// Removes any state stored in the <see cref="ImportEngine"/> for the associated
- /// <see cref="ComposablePart"/> and releases all the <see cref="Export"/>s used to
- /// satisfy the imports on the <see cref="ComposablePart"/>.
- ///
- /// Also removes the enforcement for changes that would break a required import on
- /// <paramref name="part"/>.
- /// </summary>
- /// <param name="part">
- /// The <see cref="ComposablePart"/> to release the imports on.
- /// </param>
- /// <param name="atomicComposition">
- /// The <see cref="AtomicComposition"/> that the release imports is running under.
- /// </param>
- public void ReleaseImports(ComposablePart part, AtomicComposition atomicComposition)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(part, "part");
-
- using (this._lock.LockComposition())
- {
- PartManager partManager = this.GetPartManager(part, false);
- if (partManager != null)
- {
- this.StopSatisfyingImports(partManager, atomicComposition);
- }
- }
- }
-
- /// <summary>
- /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
- /// </summary>
- public void Dispose()
- {
- this.Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources
- /// </summary>
- /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- if (!this._isDisposed)
- {
- bool disposeLock = false;
- ExportProvider sourceProviderToUnsubscribeFrom = null;
- using (this._lock.LockStateForWrite())
- {
- if (!this._isDisposed)
- {
- sourceProviderToUnsubscribeFrom = this._sourceProvider;
- this._sourceProvider = null;
- this._recompositionManager = null;
- this._partManagers = null;
- this._isDisposed = true;
- disposeLock = true;
- }
- }
-
- if (sourceProviderToUnsubscribeFrom != null)
- {
- sourceProviderToUnsubscribeFrom.ExportsChanging -= this.OnExportsChanging;
- }
-
- if (disposeLock)
- {
- this._lock.Dispose();
- }
- }
- }
- }
-
- private CompositionResult TryPreviewImportsStateMachine(PartManager partManager,
- ComposablePart part, AtomicComposition atomicComposition)
- {
- var result = CompositionResult.SucceededResult;
-
- if (partManager.State == ImportState.ImportsPreviewing)
- {
- // We shouldn't nomally ever hit this case but if we do
- // then we should just error with a cycle error.
- return new CompositionResult(ErrorBuilder.CreatePartCycle(part));
- }
-
- // Transition from NoImportsStatisified to ImportsPreviewed
- if (partManager.State == ImportState.NoImportsSatisfied)
- {
- partManager.State = ImportState.ImportsPreviewing;
-
- var requiredImports = part.ImportDefinitions.Where(IsRequiredImportForPreview);
-
- // If this atomicComposition gets rolledback for any reason we need to reset our state
- atomicComposition.AddRevertActionAllowNull(() => partManager.State = ImportState.NoImportsSatisfied);
-
- result = result.MergeResult(
- this.TrySatisfyImportSubset(partManager, requiredImports, atomicComposition));
-
- if (!result.Succeeded)
- {
- partManager.State = ImportState.NoImportsSatisfied;
- return result;
- }
-
- partManager.State = ImportState.ImportsPreviewed;
- }
-
- return result;
- }
-
- private CompositionResult TrySatisfyImportsStateMachine(PartManager partManager, ComposablePart part)
- {
- var result = CompositionResult.SucceededResult;
-
- while (partManager.State < ImportState.Composed)
- {
- var previousState = partManager.State;
-
- switch (partManager.State)
- {
- // "ed" states which represent a some sort of steady state and will
- // attempt to do a state transition
- case ImportState.NoImportsSatisfied:
- case ImportState.ImportsPreviewed:
- {
- partManager.State = ImportState.PreExportImportsSatisfying;
-
- var prereqImports = part.ImportDefinitions.Where(import => import.IsPrerequisite);
- result = result.MergeResult(
- this.TrySatisfyImportSubset(partManager, prereqImports, null));
-
- partManager.State = ImportState.PreExportImportsSatisfied;
- break;
- }
- case ImportState.PreExportImportsSatisfied:
- {
- partManager.State = ImportState.PostExportImportsSatisfying;
-
- var requiredImports = part.ImportDefinitions.Where(import => !import.IsPrerequisite);
-
- result = result.MergeResult(
- this.TrySatisfyImportSubset(partManager, requiredImports, null));
-
- partManager.State = ImportState.PostExportImportsSatisfied;
- break;
- }
- case ImportState.PostExportImportsSatisfied:
- {
- partManager.State = ImportState.ComposedNotifying;
-
- partManager.ClearSavedImports();
- result = result.MergeResult(partManager.TryOnComposed());
-
- partManager.State = ImportState.Composed;
- break;
- }
-
-
- // "ing" states which represent some sort of cycle
- // These state should always return, error or not, instead of breaking
- case ImportState.ImportsPreviewing:
- {
- // We shouldn't nomally ever hit this case but if we do
- // then we should just error with a cycle error.
- return new CompositionResult(ErrorBuilder.CreatePartCycle(part));
- }
- case ImportState.PreExportImportsSatisfying:
- case ImportState.PostExportImportsSatisfying:
- {
- if (InPrerequisiteLoop())
- {
- return result.MergeError(ErrorBuilder.CreatePartCycle(part));
- }
- // Cycles in post export imports are allowed so just return in that case
- return result;
- }
- case ImportState.ComposedNotifying:
- {
- // We are currently notifying so don't notify again just return
- return result;
- }
- }
-
- // if an error occured while doing a state transition
- if (!result.Succeeded)
- {
- // revert to the previous state and return the error
- partManager.State = previousState;
- return result;
- }
- }
- return result;
- }
-
- private CompositionResult TrySatisfyImports(PartManager partManager, ComposablePart part, bool shouldTrackImports)
- {
- Assumes.NotNull(part);
-
- var result = CompositionResult.SucceededResult;
-
- // get out if the part is already composed
- if (partManager.State == ImportState.Composed)
- {
- return result;
- }
-
- // Track number of recursive iterations and throw an exception before the stack
- // fills up and debugging the root cause becomes tricky
- if (this._recursionStateStack.Count >= MaximumNumberOfCompositionIterations)
- {
- return result.MergeError(
- ErrorBuilder.ComposeTookTooManyIterations(MaximumNumberOfCompositionIterations));
- }
-
- // Maintain the stack to detect whether recursive loops cross prerequisites
- this._recursionStateStack.Push(partManager);
- try
- {
- result = result.MergeResult(
- TrySatisfyImportsStateMachine(partManager, part));
- }
- finally
- {
- this._recursionStateStack.Pop();
- }
-
- if (shouldTrackImports)
- {
- StartSatisfyingImports(partManager, null);
- }
-
- return result;
- }
-
- private CompositionResult TrySatisfyImportSubset(PartManager partManager,
- IEnumerable<ImportDefinition> imports, AtomicComposition atomicComposition)
- {
- CompositionResult result = CompositionResult.SucceededResult;
-
- var part = partManager.Part;
- foreach (ImportDefinition import in imports)
- {
- var exports = partManager.GetSavedImport(import);
-
- if (exports == null)
- {
- CompositionResult<IEnumerable<Export>> exportsResult = TryGetExports(
- this._sourceProvider, part, import, atomicComposition);
-
- if (!exportsResult.Succeeded)
- {
- result = result.MergeResult(exportsResult.ToResult());
- continue;
- }
- exports = exportsResult.Value.AsArray();
- }
-
- if (atomicComposition == null)
- {
- result = result.MergeResult(
- partManager.TrySetImport(import, exports));
- }
- else
- {
- partManager.SetSavedImport(import, exports, atomicComposition);
- }
- }
- return result;
- }
-
- private void OnExportsChanging(object sender, ExportsChangeEventArgs e)
- {
- CompositionResult result = CompositionResult.SucceededResult;
-
- // Prepare for the recomposition effort by minimizing the amount of work we'll have to do later
- AtomicComposition atomicComposition = e.AtomicComposition;
-
- IEnumerable<PartManager> affectedParts = this._recompositionManager.GetAffectedParts(e.ChangedContractNames);
-
- // When in a atomicComposition account for everything that isn't yet reflected in the
- // index
- if (atomicComposition != null)
- {
- EngineContext engineContext;
- if (atomicComposition.TryGetValue(this, out engineContext))
- {
- // always added the new part managers to see if they will also be
- // affected by these changes
- affectedParts = affectedParts.ConcatAllowingNull(engineContext.GetAddedPartManagers())
- .Except(engineContext.GetRemovedPartManagers());
- }
- }
-
- var changedExports = e.AddedExports.ConcatAllowingNull(e.RemovedExports);
-
- foreach (var partManager in affectedParts)
- {
- result = result.MergeResult(this.TryRecomposeImports(partManager, changedExports, atomicComposition));
- }
-
- result.ThrowOnErrors(atomicComposition);
- }
-
- private CompositionResult TryRecomposeImports(PartManager partManager,
- IEnumerable<ExportDefinition> changedExports, AtomicComposition atomicComposition)
- {
- var result = CompositionResult.SucceededResult;
-
- switch (partManager.State)
- {
- case ImportState.ImportsPreviewed:
- case ImportState.Composed:
- // Validate states to continue.
- break;
-
- default:
- {
- // All other states are invalid and for recomposition.
- return new CompositionResult(ErrorBuilder.InvalidStateForRecompposition(partManager.Part));
- }
- }
-
- var affectedImports = RecompositionManager.GetAffectedImports(partManager.Part, changedExports);
- bool partComposed = (partManager.State == ImportState.Composed);
-
- bool recomposedImport = false;
- foreach (var import in affectedImports)
- {
- result = result.MergeResult(
- TryRecomposeImport(partManager, partComposed, import, atomicComposition));
-
- recomposedImport = true;
- }
-
- // Knowing that the part has already been composed before and that the only possible
- // changes are to recomposable imports, we can safely go ahead and do this now or
- // schedule it for later
- if (result.Succeeded && recomposedImport && partComposed)
- {
- if (atomicComposition == null)
- {
- result = result.MergeResult(partManager.TryOnComposed());
- }
- else
- {
- atomicComposition.AddCompleteAction(() => partManager.TryOnComposed().ThrowOnErrors());
- }
- }
-
- return result;
- }
-
- private CompositionResult TryRecomposeImport(PartManager partManager, bool partComposed,
- ImportDefinition import, AtomicComposition atomicComposition)
- {
- if (partComposed && !import.IsRecomposable)
- {
- return new CompositionResult(ErrorBuilder.PreventedByExistingImport(partManager.Part, import));
- }
-
- // During recomposition you must always requery with the new atomicComposition you cannot use any
- // cached value in the part manager
- var exportsResult = TryGetExports(this._sourceProvider, partManager.Part, import, atomicComposition);
- if (!exportsResult.Succeeded)
- {
- return exportsResult.ToResult();
- }
- var exports = exportsResult.Value.AsArray();
-
- if (partComposed)
- {
- // Knowing that the part has already been composed before and that the only possible
- // changes are to recomposable imports, we can safely go ahead and do this now or
- // schedule it for later
- if (atomicComposition == null)
- {
- return partManager.TrySetImport(import, exports);
- }
- else
- {
- atomicComposition.AddCompleteAction(() => partManager.TrySetImport(import, exports).ThrowOnErrors());
- }
- }
- else
- {
- partManager.SetSavedImport(import, exports, atomicComposition);
- }
-
- return CompositionResult.SucceededResult;
- }
-
- private void StartSatisfyingImports(PartManager partManager, AtomicComposition atomicComposition)
- {
- // When not running in a atomicCompositional state, schedule reindexing after ensuring
- // that this isn't a redundant addition
- if (atomicComposition == null)
- {
- if (!partManager.TrackingImports)
- {
- partManager.TrackingImports = true;
- this._recompositionManager.AddPartToIndex(partManager);
- }
- }
- else
- {
- // While in a atomicCompositional state use a less efficient but effective means
- // of achieving the same results
- GetEngineContext(atomicComposition).AddPartManager(partManager);
- }
- }
-
- private void StopSatisfyingImports(PartManager partManager, AtomicComposition atomicComposition)
- {
- // When not running in a atomicCompositional state, schedule reindexing after ensuring
- // that this isn't a redundant removal
- if (atomicComposition == null)
- {
- this._partManagers.Remove(partManager.Part);
-
- // Take care of lifetime requirements
- partManager.DisposeAllDependencies();
-
- if (partManager.TrackingImports)
- {
- partManager.TrackingImports = false;
- this._recompositionManager.AddPartToUnindex(partManager);
- }
- }
- else
- {
- // While in a atomicCompositional state use a less efficient but effective means
- // of achieving the same results
- GetEngineContext(atomicComposition).RemovePartManager(partManager);
- }
- }
-
- private PartManager GetPartManager(ComposablePart part, bool createIfNotpresent)
- {
- PartManager partManager = null;
- using (this._lock.LockStateForRead())
- {
- if (this._partManagers.TryGetValue(part, out partManager))
- {
- return partManager;
- }
- }
-
- if (createIfNotpresent)
- {
- using (this._lock.LockStateForWrite())
- {
- if (!this._partManagers.TryGetValue(part, out partManager))
- {
- partManager = new PartManager(this, part);
- this._partManagers.Add(part, partManager);
- }
- }
- }
- return partManager;
- }
-
-
- private EngineContext GetEngineContext(AtomicComposition atomicComposition)
- {
- Assumes.NotNull(atomicComposition);
-
- EngineContext engineContext;
- if (!atomicComposition.TryGetValue(this, true, out engineContext))
- {
- EngineContext parentContext;
- atomicComposition.TryGetValue(this, false, out parentContext);
- engineContext = new EngineContext(this, parentContext);
- atomicComposition.SetValue(this, engineContext);
- atomicComposition.AddCompleteAction(engineContext.Complete);
- }
- return engineContext;
- }
-
- private bool InPrerequisiteLoop()
- {
- PartManager firstPart = this._recursionStateStack.First();
- PartManager lastPart = null;
-
- foreach (PartManager testPart in this._recursionStateStack.Skip(1))
- {
- if (testPart.State == ImportState.PreExportImportsSatisfying)
- {
- return true;
- }
-
- if (testPart == firstPart)
- {
- lastPart = testPart;
- break;
- }
- }
-
- // This should only be called when a loop has been detected - so it should always be on the stack
- Assumes.IsTrue(lastPart == firstPart);
- return false;
- }
-
- [DebuggerStepThrough]
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
-
- private static CompositionResult<IEnumerable<Export>> TryGetExports(ExportProvider provider,
- ComposablePart part, ImportDefinition definition, AtomicComposition atomicComposition)
- {
- try
- {
- var exports = provider.GetExports(definition, atomicComposition).AsArray();
- return new CompositionResult<IEnumerable<Export>>(exports);
- }
- catch (ImportCardinalityMismatchException ex)
- {
- // Either not enough or too many exports that match the definition
- CompositionException exception = new CompositionException(ErrorBuilder.CreateImportCardinalityMismatch(ex, definition));
-
- return new CompositionResult<IEnumerable<Export>>(
- ErrorBuilder.CreatePartCannotSetImport(part, definition, exception));
- }
- }
-
- internal static bool IsRequiredImportForPreview(ImportDefinition import)
- {
- return import.Cardinality == ImportCardinality.ExactlyOne;
- }
-
- // Ordering of this enum is important so be sure to use caution if you
- // try to reorder them.
- private enum ImportState
- {
- NoImportsSatisfied = 0,
- ImportsPreviewing = 1,
- ImportsPreviewed = 2,
- PreExportImportsSatisfying = 3,
- PreExportImportsSatisfied = 4,
- PostExportImportsSatisfying = 5,
- PostExportImportsSatisfied = 6,
- ComposedNotifying = 7,
- Composed = 8,
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/TypeCatalog.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/TypeCatalog.cs
deleted file mode 100644
index 6d3be39..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/TypeCatalog.cs
+++ /dev/null
@@ -1,347 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.AttributedModel;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// An immutable ComposablePartCatalog created from a type array or a list of managed types. This class is threadsafe.
- /// It is Disposable.
- /// </summary>
- [DebuggerTypeProxy(typeof(ComposablePartCatalogDebuggerProxy))]
- public class TypeCatalog : ComposablePartCatalog, ICompositionElement
- {
- private readonly object _thisLock = new object();
- private Type[] _types = null;
- private volatile IQueryable<ComposablePartDefinition> _queryableParts;
- private volatile bool _isDisposed = false;
- private readonly ICompositionElement _definitionOrigin;
- private readonly Lazy<IDictionary<string, List<ComposablePartDefinition>>> _contractPartIndex;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="TypeCatalog"/> class
- /// with the specified types.
- /// </summary>
- /// <param name="types">
- /// An <see cref="Array"/> of attributed <see cref="Type"/> objects to add to the
- /// <see cref="TypeCatalog"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="types"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="types"/> contains an element that is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="types"/> contains an element that was loaded in the Reflection-only context.
- /// </exception>
- public TypeCatalog(params Type[] types)
- : this(types, (ICompositionElement)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="TypeCatalog"/> class
- /// with the specified types.
- /// </summary>
- /// <param name="types">
- /// An <see cref="IEnumerable{T}"/> of attributed <see cref="Type"/> objects to add
- /// to the <see cref="TypeCatalog"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="types"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="types"/> contains an element that is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="types"/> contains an element that was loaded in the reflection-only context.
- /// </exception>
- public TypeCatalog(IEnumerable<Type> types)
- : this(types, (ICompositionElement)null)
- {
- }
-
- internal TypeCatalog(IEnumerable<Type> types, ICompositionElement definitionOrigin)
- {
- Requires.NotNull(types, "types");
-
- foreach (Type type in types)
- {
- if (type == null)
- {
- throw ExceptionBuilder.CreateContainsNullElement("types");
- }
-#if !SILVERLIGHT
- if (type.Assembly.ReflectionOnly)
- {
- throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Strings.Argument_ElementReflectionOnlyType, "types"), "types");
- }
-#endif
- }
-
- this._types = types.ToArray();
- this._definitionOrigin = definitionOrigin ?? this;
-#if !SILVERLIGHT
- this._contractPartIndex = new Lazy<IDictionary<string, List<ComposablePartDefinition>>>(this.CreateIndex, true);
-#else
- this._contractPartIndex = new Lazy<IDictionary<string, List<ComposablePartDefinition>>>(this.CreateIndex);
-#endif
-
- }
-
- /// <summary>
- /// Gets the part definitions of the catalog.
- /// </summary>
- /// <value>
- /// A <see cref="IQueryable{T}"/> of <see cref="ComposablePartDefinition"/> objects of the
- /// <see cref="TypeCatalog"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="TypeCatalog"/> has been disposed of.
- /// </exception>
- public override IQueryable<ComposablePartDefinition> Parts
- {
- get
- {
- this.ThrowIfDisposed();
-
- return this.PartsInternal;
- }
- }
-
- /// <summary>
- /// Gets the display name of the type catalog.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing a human-readable display name of the <see cref="TypeCatalog"/>.
- /// </value>
- [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
- string ICompositionElement.DisplayName
- {
- get { return this.GetDisplayName(); }
- }
-
- /// <summary>
- /// Gets the composition element from which the type catalog originated.
- /// </summary>
- /// <value>
- /// This property always returns <see langword="null"/>.
- /// </value>
- [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
- ICompositionElement ICompositionElement.Origin
- {
- get { return null; }
- }
-
- private IQueryable<ComposablePartDefinition> PartsInternal
- {
- get
- {
- if (this._queryableParts == null)
- {
- lock (this._thisLock)
- {
- if (this._queryableParts == null)
- {
- Assumes.NotNull(this._types);
-
- var collection = new List<ComposablePartDefinition>();
- foreach (Type type in this._types)
- {
- var definition = AttributedModelDiscovery.CreatePartDefinitionIfDiscoverable(type, _definitionOrigin);
- if (definition != null)
- {
- collection.Add(definition);
- }
- }
- IQueryable<ComposablePartDefinition> queryableParts = collection.AsQueryable();
- Thread.MemoryBarrier();
-
- this._types = null;
- this._queryableParts = queryableParts;
- }
- }
- }
-
- return this._queryableParts;
- }
- }
-
- /// <summary>
- /// Returns the export definitions that match the constraint defined by the specified definition.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="ExportDefinition"/> objects to return.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Tuple{T1, T2}"/> containing the
- /// <see cref="ExportDefinition"/> objects and their associated
- /// <see cref="ComposablePartDefinition"/> for objects that match the constraint defined
- /// by <paramref name="definition"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePartCatalog"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>, if no
- /// <see cref="ExportDefinition"/> match the conditions defined by
- /// <paramref name="definition"/>, return an empty <see cref="IEnumerable{T}"/>.
- /// </note>
- /// </remarks>
- public override IEnumerable<Tuple<ComposablePartDefinition, ExportDefinition>> GetExports(ImportDefinition definition)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(definition, "definition");
-
- IEnumerable<ComposablePartDefinition> candidateParts = this.GetCandidateParts(definition);
- if (candidateParts == null)
- {
- return Enumerable.Empty<Tuple<ComposablePartDefinition, ExportDefinition>>();
- }
-
- var exports = new List<Tuple<ComposablePartDefinition, ExportDefinition>>();
- foreach (var part in candidateParts)
- {
- foreach (var export in part.ExportDefinitions)
- {
- if (definition.IsConstraintSatisfiedBy(export))
- {
- exports.Add(new Tuple<ComposablePartDefinition, ExportDefinition>(part, export));
- }
- }
- }
- return exports;
- }
-
- private IEnumerable<ComposablePartDefinition> GetCandidateParts(ImportDefinition definition)
- {
- string contractName = definition.ContractName;
-
- // Empty string represents a non-contract based import and thus the constraint needs
- // to be applied to all the possible exports in this catalog.
- if (string.IsNullOrEmpty(contractName))
- {
- return this.PartsInternal;
- }
-
- List<ComposablePartDefinition> candidateParts = null;
- if (this._contractPartIndex.Value.TryGetValue(contractName, out candidateParts))
- {
- return candidateParts;
- }
- else
- {
- return null;
- }
- }
-
- private IDictionary<string, List<ComposablePartDefinition>> CreateIndex()
- {
- Dictionary<string, List<ComposablePartDefinition>> index = new Dictionary<string, List<ComposablePartDefinition>>(StringComparers.ContractName);
-
- foreach (var part in this.PartsInternal)
- {
- foreach (string contractName in part.ExportDefinitions.Select(export => export.ContractName).Distinct())
- {
- List<ComposablePartDefinition> contractParts = null;
- if (!index.TryGetValue(contractName, out contractParts))
- {
- contractParts = new List<ComposablePartDefinition>();
- index.Add(contractName, contractParts);
- }
- contractParts.Add(part);
- }
- }
- return index;
- }
-
- /// <summary>
- /// Returns a string representation of the type catalog.
- /// </summary>
- /// <returns>
- /// A <see cref="String"/> containing the string representation of the <see cref="TypeCatalog"/>.
- /// </returns>
- public override string ToString()
- {
- return this.GetDisplayName();
- }
-
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- this._isDisposed = true;
- }
-
- base.Dispose(disposing);
- }
-
- private string GetDisplayName()
- {
- return String.Format(CultureInfo.CurrentCulture,
- Strings.TypeCatalog_DisplayNameFormat,
- this.GetType().Name,
- this.GetTypesDisplay());
- }
-
- private string GetTypesDisplay()
- {
- int count = this.PartsInternal.Count();
- if (count == 0)
- {
- return Strings.TypeCatalog_Empty;
- }
-
- const int displayCount = 2;
- StringBuilder builder = new StringBuilder();
- foreach (ReflectionComposablePartDefinition definition in this.PartsInternal.Take(displayCount))
- {
- if (builder.Length > 0)
- {
- builder.Append(CultureInfo.CurrentCulture.TextInfo.ListSeparator);
- builder.Append(" ");
- }
-
- builder.Append(definition.GetPartType().GetDisplayName());
- }
-
- if (count > displayCount)
- { // Add an elipse to indicate that there
- // are more types than actually listed
- builder.Append(CultureInfo.CurrentCulture.TextInfo.ListSeparator);
- builder.Append(" ...");
- }
-
- return builder.ToString();
- }
-
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/IAttributedImport.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/IAttributedImport.cs
deleted file mode 100644
index 28b3b4f..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/IAttributedImport.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition
-{
- internal interface IAttributedImport
- {
- string ContractName { get; }
- Type ContractType { get; }
- bool AllowRecomposition { get; }
- CreationPolicy RequiredCreationPolicy { get; }
- ImportCardinality Cardinality { get; }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ICompositionError.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ICompositionError.cs
deleted file mode 100644
index 12af595..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ICompositionError.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition
-{
- // Internal interface for providing access to the composition error
- // identifier for an exception or error that participates in composition.
- internal interface ICompositionError
- {
- CompositionErrorId Id
- {
- get;
- }
-
- ICompositionElement Element
- {
- get;
- }
-
- Exception InnerException
- {
- get;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ICompositionService.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ICompositionService.cs
deleted file mode 100644
index 9cb9feb..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ICompositionService.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Provides methods for composing <see cref="ComposablePart"/> objects.
- /// </summary>
- public interface ICompositionService
- {
- /// <summary>
- /// Sets the imports of the specified composable part exactly once and they will not
- /// ever be recomposed.
- /// </summary>
- /// <param name="part">
- /// The <see cref="ComposablePart"/> to set the imports.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="part"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ICompositionService"/> has been disposed of.
- /// </exception>
- void SatisfyImportsOnce(ComposablePart part);
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/IPartImportsSatisfiedNotification.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/IPartImportsSatisfiedNotification.cs
deleted file mode 100644
index 7969e0c..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/IPartImportsSatisfiedNotification.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition
-{
- public interface IPartImportsSatisfiedNotification
- {
- void OnImportsSatisfied();
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportAttribute.cs
deleted file mode 100644
index d2879f7..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportAttribute.cs
+++ /dev/null
@@ -1,181 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies that a property, field, or parameter imports a particular export.
- /// </summary>
- [SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")]
- [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter,
- AllowMultiple = false, Inherited = false)]
- public class ImportAttribute : Attribute, IAttributedImport
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportAttribute"/> class, importing the
- /// export with the default contract name.
- /// </summary>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the property, field,
- /// or parameter type that this is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ImportAttribute()
- : this((string)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportAttribute"/> class, importing the
- /// export with the contract name derived from the specified type.
- /// </summary>
- /// <param name="contractType">
- /// A <see cref="Type"/> of which to derive the contract name of the export to import, or
- /// <see langword="null"/> to use the default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on
- /// <paramref name="contractType"/>.
- /// </para>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the property, field,
- /// or parameter type that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ImportAttribute(Type contractType)
- : this((string)null, contractType)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportAttribute"/> class, importing the
- /// export with the specified contract name.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the export to import, or
- /// <see langword="null"/> or an empty string ("") to use the default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the property, field,
- /// or parameter type that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ImportAttribute(string contractName)
- : this(contractName, (Type)null)
- {
- }
-
- public ImportAttribute(string contractName, Type contractType)
- {
- this.ContractName = contractName;
- this.ContractType = contractType;
- }
-
- /// <summary>
- /// Gets the contract name of the export to import.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing the contract name of the export to import. The
- /// default value is an empty string ("").
- /// </value>
- public string ContractName { get; private set; }
-
- /// <summary>
- /// Get the contract type of the export to import.
- /// </summary>
- /// <value>
- /// A <see cref="Type"/> of the export that this import is expecting. The default value is
- /// <see langword="null"/> which means that the type will be obtained by looking at the type on
- /// the member that this import is attached to. If the type is <see cref="object"/> then the
- /// importer is delaring they can accept any exported type.
- /// </value>
- public Type ContractType { get; private set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the property, field or parameter will be set
- /// to its type's default value when an export with the contract name is not present in
- /// the container.
- /// </summary>
- /// <value>
- /// <see langword="true"/> if the property, field or parameter will be set
- /// its type's default value when an export with the <see cref="ContractName"/> is not
- /// present in the <see cref="CompositionContainer"/>; otherwise, <see langword="false"/>.
- /// The default value is <see langword="false"/>.
- /// </value>
- /// <remarks>
- /// <para>
- /// The default value of a property's, field's or parameter's type is
- /// <see langword="null"/> for reference types and 0 for numeric value types. For
- /// other value types, the default value will be each field of the value type
- /// initialized to zero, if the field is a value type or <see langword="null"/> if
- /// the field is a reference type.
- /// </para>
- /// </remarks>
- public bool AllowDefault { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the property or field will be recomposed
- /// when exports that provide the same contract that this import expects, have changed
- /// in the container.
- /// </summary>
- /// <value>
- /// <see langword="true"/> if the property or field allows for recomposition when exports
- /// that provide the same <see cref="ContractName"/> are added or removed from the
- /// <see cref="CompositionContainer"/>; otherwise, <see langword="false"/>.
- /// The default value is <see langword="false"/>.
- /// </value>
- public bool AllowRecomposition { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating that the importer requires a specific
- /// <see cref="CreationPolicy"/> for the exports used to satisfy this import. T
- /// </summary>
- /// <value>
- /// <see cref="CreationPolicy.Any"/> - default value, used if the importer doesn't
- /// require a specific <see cref="CreationPolicy"/>.
- ///
- /// <see cref="CreationPolicy.Shared"/> - Requires that all exports used should be shared
- /// by everyone in the container.
- ///
- /// <see cref="CreationPolicy.NonShared"/> - Requires that all exports used should be
- /// non-shared in a container and thus everyone gets their own instance.
- /// </value>
- public CreationPolicy RequiredCreationPolicy { get; set; }
-
- ImportCardinality IAttributedImport.Cardinality
- {
- get
- {
- if (this.AllowDefault == true)
- {
- return ImportCardinality.ZeroOrOne;
- }
- return ImportCardinality.ExactlyOne;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportCardinalityMismatchException.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportCardinalityMismatchException.cs
deleted file mode 100644
index e7e09c7..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportCardinalityMismatchException.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Runtime.Serialization;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// The exception that is thrown when the cardinality of a <see cref="ImportDefinition"/>
- /// does not match the cardinality of the <see cref="Export"/> objects available in an
- /// <see cref="ExportProvider"/>.
- /// </summary>
- [Serializable]
- public class ImportCardinalityMismatchException : Exception
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportCardinalityMismatchException"/> class.
- /// </summary>
- public ImportCardinalityMismatchException()
- : this((string)null, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportCardinalityMismatchException"/> class
- /// with the specified error message.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="ImportCardinalityMismatchException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- public ImportCardinalityMismatchException(string message)
- : this(message, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportCardinalityMismatchException"/> class
- /// with the specified error message and exception that is the cause of the
- /// exception.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="ImportCardinalityMismatchException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- /// <param name="innerException">
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="ImportCardinalityMismatchException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.InnerException"/> property to <see langword="null"/>.
- /// </param>
- public ImportCardinalityMismatchException(string message, Exception innerException)
- : base(message, innerException)
- {
- }
-
-#if !SILVERLIGHT
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportCardinalityMismatchException"/> class
- /// with the specified serialization data.
- /// </summary>
- /// <param name="info">
- /// The <see cref="SerializationInfo"/> that holds the serialized object data about the
- /// <see cref="ImportCardinalityMismatchException"/>.
- /// </param>
- /// <param name="context">
- /// The <see cref="StreamingContext"/> that contains contextual information about the
- /// source or destination.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="info"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="SerializationException">
- /// <paramref name="info"/> is missing a required value.
- /// </exception>
- /// <exception cref="InvalidCastException">
- /// <paramref name="info"/> contains a value that cannot be cast to the correct type.
- /// </exception>
- [System.Security.SecuritySafeCritical]
- protected ImportCardinalityMismatchException(SerializationInfo info, StreamingContext context)
- : base(info, context)
- {
- }
-#endif //!SILVERLIGHT
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportManyAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportManyAttribute.cs
deleted file mode 100644
index cdd1163..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportManyAttribute.cs
+++ /dev/null
@@ -1,152 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies that a property, field, or parameter imports a particular set of exports.
- /// </summary>
- [SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")]
- [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter,
- AllowMultiple = false, Inherited = false)]
- public class ImportManyAttribute : Attribute, IAttributedImport
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportManyAttribute"/> class, importing the
- /// set of exports with the default contract name.
- /// </summary>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the element\item type of
- /// theproperty, field, or parameter type that this is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ImportManyAttribute()
- : this((string)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportManyAttribute"/> class, importing the
- /// set of exports with the contract name derived from the specified type.
- /// </summary>
- /// <param name="contractType">
- /// A <see cref="Type"/> of which to derive the contract name of the exports to import, or
- /// <see langword="null"/> to use the default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on
- /// <paramref name="contractType"/>.
- /// </para>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the property, field,
- /// or parameter type that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ImportManyAttribute(Type contractType)
- : this((string)null, contractType)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportManyAttribute"/> class, importing the
- /// set of exports with the specified contract name.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the exports to import, or
- /// <see langword="null"/> or an empty string ("") to use the default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the property, field,
- /// or parameter type that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ImportManyAttribute(string contractName)
- : this(contractName, (Type)null)
- {
- }
-
- public ImportManyAttribute(string contractName, Type contractType)
- {
- this.ContractName = contractName;
- this.ContractType = contractType;
- }
-
- /// <summary>
- /// Gets the contract name of the exports to import.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing the contract name of the exports to import. The
- /// default value is an empty string ("").
- /// </value>
- public string ContractName { get; private set; }
-
- /// <summary>
- /// Get the contract type of the export to import.
- /// </summary>
- /// <value>
- /// A <see cref="Type"/> of the export that this import is expecting. The default value is
- /// <see langword="null"/> which means that the type will be obtained by looking at the type on
- /// the member that this import is attached to. If the type is <see cref="object"/> then the
- /// importer is delaring they can accept any exported type.
- /// </value>
- public Type ContractType { get; private set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the property or field will be recomposed
- /// when exports that provide the same contract that this import expects, have changed
- /// in the container.
- /// </summary>
- /// <value>
- /// <see langword="true"/> if the property or field allows for recomposition when exports
- /// that provide the same <see cref="ContractName"/> are added or removed from the
- /// <see cref="CompositionContainer"/>; otherwise, <see langword="false"/>.
- /// The default value is <see langword="false"/>.
- /// </value>
- public bool AllowRecomposition { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating that the importer requires a specific
- /// <see cref="CreationPolicy"/> for the exports used to satisfy this import. T
- /// </summary>
- /// <value>
- /// <see cref="CreationPolicy.Any"/> - default value, used if the importer doesn't
- /// require a specific <see cref="CreationPolicy"/>.
- ///
- /// <see cref="CreationPolicy.Shared"/> - Requires that all exports used should be shared
- /// by everyone in the container.
- ///
- /// <see cref="CreationPolicy.NonShared"/> - Requires that all exports used should be
- /// non-shared in a container and thus everyone gets their own instance.
- /// </value>
- public CreationPolicy RequiredCreationPolicy { get; set; }
-
- ImportCardinality IAttributedImport.Cardinality
- {
- get { return ImportCardinality.ZeroOrMore; }
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportingConstructorAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportingConstructorAttribute.cs
deleted file mode 100644
index db4a5eb..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportingConstructorAttribute.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies that a constructor should be used when constructing an attributed part.
- /// </summary>
- /// <remarks>
- /// By default, only a default parameter-less constructor, if available, is used to
- /// construct an attributed part. Use this attribute to indicate that a specific constructor
- /// should be used.
- /// </remarks>
- [SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")]
- [AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false, Inherited = false)]
- public class ImportingConstructorAttribute : Attribute
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportingConstructorAttribute"/> class.
- /// </summary>
- public ImportingConstructorAttribute()
- {
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/InheritedExportAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/InheritedExportAttribute.cs
deleted file mode 100644
index fb411bc..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/InheritedExportAttribute.cs
+++ /dev/null
@@ -1,122 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies that a type or interface that provides a particular export.
- /// </summary>
- [SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")]
- [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple = true, Inherited = true)]
- public class InheritedExportAttribute : ExportAttribute
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type marked with this attribute under the default contract name.
- /// </summary>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the type itself,
- /// that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public InheritedExportAttribute()
- : this((string)null, (Type)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type marked with this attribute under a contract name derived from the specified type.
- /// </summary>
- /// <param name="contractType">
- /// A <see cref="Type"/> of which to derive the contract name to export the type
- /// marked with this attribute, under; or <see langword="null"/> to use the
- /// default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on
- /// <paramref name="contractType"/>.
- /// </para>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the type of the
- /// itself, that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public InheritedExportAttribute(Type contractType)
- : this((string)null, contractType)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type or member marked with this attribute under the specified contract name.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name to export the type
- /// marked with this attribute, under; or <see langword="null"/> or an empty string
- /// ("") to use the default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on
- /// the type itself that this is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public InheritedExportAttribute(string contractName)
- : this(contractName, (Type)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type or member marked with this attribute under the specified contract name.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name to export the type
- /// marked with this attribute, under; or <see langword="null"/> or an empty string
- /// ("") to use the default contract name.
- /// </param>
- /// <param name="contractType">
- /// A <see cref="Type"/> of which to derive the contract name to export the type
- /// marked with this attribute, under; or <see langword="null"/> to use the
- /// default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on
- /// the type itself that this is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public InheritedExportAttribute(string contractName, Type contractType)
- : base(contractName, contractType)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataAttributeAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataAttributeAttribute.cs
deleted file mode 100644
index 81ad7e9..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataAttributeAttribute.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies that an attribute can be used to provide metadata for a type, property, field,
- /// or method marked with the <see cref="ExportAttribute"/>.
- /// </summary>
- [AttributeUsage(AttributeTargets.Class,
- AllowMultiple=false, Inherited=true)]
- public sealed class MetadataAttributeAttribute : Attribute
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="MetadataAttributeAttribute"/> class.
- /// </summary>
- public MetadataAttributeAttribute()
- {
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataServices.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataServices.cs
deleted file mode 100644
index fa363c0..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataServices.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition
-{
- internal static class MetadataServices
- {
- public static readonly IDictionary<string, object> EmptyMetadata = new ReadOnlyDictionary<string, object>(null);
-
- public static IDictionary<string, object> AsReadOnly(this IDictionary<string, object> metadata)
- {
- if (metadata == null)
- {
- return EmptyMetadata;
- }
-
- if (metadata is ReadOnlyDictionary<string, object>)
- {
- return metadata;
- }
-
- return new ReadOnlyDictionary<string, object>(metadata);
- }
-
- public static T GetValue<T>(this IDictionary<string, object> metadata, string key)
- {
- Assumes.NotNull(metadata, "metadata");
-
- object untypedValue = true;
- if (!metadata.TryGetValue(key, out untypedValue))
- {
- return default(T);
- }
-
- if (untypedValue is T)
- {
- return (T)untypedValue;
- }
- else
- {
- return default(T);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataViewGenerator.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataViewGenerator.cs
deleted file mode 100644
index e40aa62..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataViewGenerator.cs
+++ /dev/null
@@ -1,321 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using System.Threading;
-using Microsoft.Internal;
-using System.Reflection.Emit;
-using System.Collections;
-
-namespace System.ComponentModel.Composition
-{
- // // Assume TMetadataView is
- // //interface Foo
- // //{
- // // public typeRecord1 Record1 { get; }
- // // public typeRecord2 Record2 { get; }
- // // public typeRecord3 Record3 { get; }
- // // public typeRecord4 Record4 { get; }
- // //}
- // // The class to be generated will look approximately like:
- // public class __Foo__MedataViewProxy : TMetadataView
- // {
- // public __Foo__MedataViewProxy (IDictionary<string, object> metadata)
- // {
- // if(metadata == null)
- // {
- // throw InvalidArgumentException("metadata");
- // }
- // try
- // {
- // Record1 = (typeRecord1)Record1;
- // Record2 = (typeRecord1)Record2;
- // Record3 = (typeRecord1)Record3;
- // Record4 = (typeRecord1)Record4;
- // }
- // catch(InvalidCastException ice)
- // {
- // //Annotate exception .Data with diagnostic info
- // }
- // catch(NulLReferenceException ice)
- // {
- // //Annotate exception .Data with diagnostic info
- // }
- // }
- // // Interface
- // public typeRecord1 Record1 { get; }
- // public typeRecord2 Record2 { get; }
- // public typeRecord3 Record3 { get; }
- // public typeRecord4 Record4 { get; }
- // }
- internal static class MetadataViewGenerator
- {
- public const string MetadataViewType = "MetadataViewType";
- public const string MetadataItemKey = "MetadataItemKey";
- public const string MetadataItemTargetType = "MetadataItemTargetType";
- public const string MetadataItemSourceType = "MetadataItemSourceType";
- public const string MetadataItemValue = "MetadataItemValue";
-
- private static Lock _lock = new Lock();
- private static Dictionary<Type, Type> _proxies = new Dictionary<Type, Type>();
-
- private static AssemblyName ProxyAssemblyName = new AssemblyName(string.Format(CultureInfo.InvariantCulture, "MetadataViewProxies_{0}", Guid.NewGuid()));
- private static AssemblyBuilder ProxyAssemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(ProxyAssemblyName, AssemblyBuilderAccess.Run);
- private static ModuleBuilder ProxyModuleBuilder = ProxyAssemblyBuilder.DefineDynamicModule("MetadataViewProxiesModule");
- private static Type[] CtorArgumentTypes = new Type[] { typeof(IDictionary<string, object>) };
- private static MethodInfo _mdvDictionaryTryGet = CtorArgumentTypes[0].GetMethod("TryGetValue");
- private static readonly MethodInfo ObjectGetType = typeof(object).GetMethod("GetType", Type.EmptyTypes);
-
- public static Type GenerateView(Type viewType)
- {
- Assumes.NotNull(viewType);
- Assumes.IsTrue(viewType.IsInterface);
-
- Type proxyType;
- bool foundProxy;
-
- using (new ReadLock(_lock))
- {
- foundProxy = _proxies.TryGetValue(viewType, out proxyType);
- }
-
- // No factory exists
- if(!foundProxy)
- {
- // Try again under a write lock if still none generate the proxy
- using (new WriteLock(_lock))
- {
- foundProxy = _proxies.TryGetValue(viewType, out proxyType);
-
- if (!foundProxy)
- {
- proxyType = GenerateInterfaceViewProxyType(viewType);
- Assumes.NotNull(proxyType);
-
- _proxies.Add(viewType, proxyType);
- }
- }
- }
- return proxyType;
- }
-
- private static void GenerateLocalAssignmentFromDefaultAttribute(this ILGenerator IL, DefaultValueAttribute[] attrs, LocalBuilder local)
- {
- if (attrs.Length > 0)
- {
- DefaultValueAttribute defaultAttribute = attrs[0];
- IL.LoadValue(defaultAttribute.Value);
- if ((defaultAttribute.Value != null) && (defaultAttribute.Value.GetType().IsValueType))
- {
- IL.Emit(OpCodes.Box, defaultAttribute.Value.GetType());
- }
- IL.Emit(OpCodes.Stloc, local);
- }
- }
-
- private static void GenerateFieldAssignmentFromLocalValue(this ILGenerator IL, LocalBuilder local, FieldBuilder field)
- {
- IL.Emit(OpCodes.Ldarg_0);
- IL.Emit(OpCodes.Ldloc, local);
- IL.Emit(field.FieldType.IsValueType ? OpCodes.Unbox_Any : OpCodes.Castclass, field.FieldType);
- IL.Emit(OpCodes.Stfld, field);
- }
-
- private static void GenerateLocalAssignmentFromFlag(this ILGenerator IL, LocalBuilder local, bool flag)
- {
- IL.Emit(flag ? OpCodes.Ldc_I4_1 : OpCodes.Ldc_I4_0);
- IL.Emit(OpCodes.Stloc, local);
- }
-
- // This must be called with _readerWriterLock held for Write
- private static Type GenerateInterfaceViewProxyType(Type viewType)
- {
- // View type is an interface let's cook an implementation
- Type proxyType;
- TypeBuilder proxyTypeBuilder;
- Type[] interfaces = { viewType };
-
- proxyTypeBuilder = ProxyModuleBuilder.DefineType(
- string.Format(CultureInfo.InvariantCulture, "_proxy_{0}_{1}", viewType.FullName, Guid.NewGuid()),
- TypeAttributes.Public,
- typeof(object),
- interfaces);
-
- // Implement Constructor
- ILGenerator proxyCtorIL = proxyTypeBuilder.CreateGeneratorForPublicConstructor(CtorArgumentTypes);
- LocalBuilder exception = proxyCtorIL.DeclareLocal(typeof(Exception));
- LocalBuilder exceptionData = proxyCtorIL.DeclareLocal(typeof(IDictionary));
- LocalBuilder sourceType = proxyCtorIL.DeclareLocal(typeof(Type));
- LocalBuilder value = proxyCtorIL.DeclareLocal(typeof(object));
- LocalBuilder usesExportedMD = proxyCtorIL.DeclareLocal(typeof(bool));
-
- Label tryConstructView = proxyCtorIL.BeginExceptionBlock();
-
- // Implement interface properties
- foreach (PropertyInfo propertyInfo in viewType.GetAllProperties())
- {
- string fieldName = string.Format(CultureInfo.InvariantCulture, "_{0}_{1}", propertyInfo.Name, Guid.NewGuid());
-
- // Cache names and type for exception
- string propertyName = string.Format(CultureInfo.InvariantCulture, "{0}", propertyInfo.Name);
-
- Type[] propertyTypeArguments = new Type[] { propertyInfo.PropertyType };
- Type[] optionalModifiers = null;
- Type[] requiredModifiers = null;
-
-#if !SILVERLIGHT
- // PropertyInfo does not support GetOptionalCustomModifiers and GetRequiredCustomModifiers on Silverlight
- optionalModifiers = propertyInfo.GetOptionalCustomModifiers();
- requiredModifiers = propertyInfo.GetRequiredCustomModifiers();
- Array.Reverse(optionalModifiers);
- Array.Reverse(requiredModifiers);
-#endif
- // Generate field
- FieldBuilder proxyFieldBuilder = proxyTypeBuilder.DefineField(
- fieldName,
- propertyInfo.PropertyType,
- FieldAttributes.Private);
-
- // Generate property
- PropertyBuilder proxyPropertyBuilder = proxyTypeBuilder.DefineProperty(
- propertyName,
- PropertyAttributes.None,
- propertyInfo.PropertyType,
- propertyTypeArguments);
-
- // Generate constructor code for retrieving the metadata value and setting the field
- Label tryCastValue = proxyCtorIL.BeginExceptionBlock();
- Label innerTryCastValue;
-
- DefaultValueAttribute[] attrs = propertyInfo.GetAttributes<DefaultValueAttribute>(false);
- if(attrs.Length > 0)
- {
- innerTryCastValue = proxyCtorIL.BeginExceptionBlock();
- }
-
- // In constructor set the backing field with the value from the dictionary
- Label doneGettingDefaultValue = proxyCtorIL.DefineLabel();
- GenerateLocalAssignmentFromFlag(proxyCtorIL, usesExportedMD, true);
-
- proxyCtorIL.Emit(OpCodes.Ldarg_1);
- proxyCtorIL.Emit(OpCodes.Ldstr, propertyInfo.Name);
- proxyCtorIL.Emit(OpCodes.Ldloca, value);
- proxyCtorIL.Emit(OpCodes.Callvirt, _mdvDictionaryTryGet);
- proxyCtorIL.Emit(OpCodes.Brtrue, doneGettingDefaultValue);
-
- proxyCtorIL.GenerateLocalAssignmentFromFlag(usesExportedMD, false);
- proxyCtorIL.GenerateLocalAssignmentFromDefaultAttribute(attrs, value);
-
- proxyCtorIL.MarkLabel(doneGettingDefaultValue);
- proxyCtorIL.GenerateFieldAssignmentFromLocalValue(value, proxyFieldBuilder);
- proxyCtorIL.Emit(OpCodes.Leave, tryCastValue);
-
- // catch blocks for innerTryCastValue start here
- if (attrs.Length > 0)
- {
- proxyCtorIL.BeginCatchBlock(typeof(InvalidCastException));
- {
- Label notUsesExportedMd = proxyCtorIL.DefineLabel();
- proxyCtorIL.Emit(OpCodes.Ldloc, usesExportedMD);
- proxyCtorIL.Emit(OpCodes.Brtrue, notUsesExportedMd);
- proxyCtorIL.Emit(OpCodes.Rethrow);
- proxyCtorIL.MarkLabel(notUsesExportedMd);
- proxyCtorIL.GenerateLocalAssignmentFromDefaultAttribute(attrs, value);
- proxyCtorIL.GenerateFieldAssignmentFromLocalValue(value, proxyFieldBuilder);
- }
- proxyCtorIL.EndExceptionBlock();
- }
-
- // catch blocks for tryCast start here
- proxyCtorIL.BeginCatchBlock(typeof(NullReferenceException));
- {
- proxyCtorIL.Emit(OpCodes.Stloc, exception);
-
- proxyCtorIL.GetExceptionDataAndStoreInLocal(exception, exceptionData);
- proxyCtorIL.AddItemToLocalDictionary(exceptionData, MetadataItemKey, propertyName);
- proxyCtorIL.AddItemToLocalDictionary(exceptionData, MetadataItemTargetType, propertyInfo.PropertyType);
- proxyCtorIL.Emit(OpCodes.Rethrow);
- }
-
- proxyCtorIL.BeginCatchBlock(typeof(InvalidCastException));
- {
- proxyCtorIL.Emit(OpCodes.Stloc, exception);
-
- proxyCtorIL.GetExceptionDataAndStoreInLocal(exception, exceptionData);
- proxyCtorIL.AddItemToLocalDictionary(exceptionData, MetadataItemKey, propertyName);
- proxyCtorIL.AddItemToLocalDictionary(exceptionData, MetadataItemTargetType, propertyInfo.PropertyType);
- proxyCtorIL.Emit(OpCodes.Rethrow);
- }
-
- proxyCtorIL.EndExceptionBlock();
-
- if (propertyInfo.CanWrite)
- {
- // The MetadataView '{0}' is invalid because property '{1}' has a property set method.
- throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture,
- Strings.InvalidSetterOnMetadataField,
- viewType,
- propertyName));
- }
- if (propertyInfo.CanRead)
- {
- // Generate "get" method implementation.
- MethodBuilder getMethodBuilder = proxyTypeBuilder.DefineMethod(
- string.Format(CultureInfo.InvariantCulture, "get_{0}", propertyName),
- MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.NewSlot | MethodAttributes.Virtual | MethodAttributes.Final,
- CallingConventions.HasThis,
- propertyInfo.PropertyType,
- requiredModifiers,
- optionalModifiers,
- Type.EmptyTypes, null, null);
-
- proxyTypeBuilder.DefineMethodOverride(getMethodBuilder, propertyInfo.GetGetMethod());
- ILGenerator getMethodIL = getMethodBuilder.GetILGenerator();
- getMethodIL.Emit(OpCodes.Ldarg_0);
- getMethodIL.Emit(OpCodes.Ldfld, proxyFieldBuilder);
- getMethodIL.Emit(OpCodes.Ret);
-
- proxyPropertyBuilder.SetGetMethod(getMethodBuilder);
- }
- }
-
- proxyCtorIL.Emit(OpCodes.Leave, tryConstructView);
-
- // catch blocks for constructView start here
- proxyCtorIL.BeginCatchBlock(typeof(NullReferenceException));
- {
- proxyCtorIL.Emit(OpCodes.Stloc, exception);
-
- proxyCtorIL.GetExceptionDataAndStoreInLocal(exception, exceptionData);
- proxyCtorIL.AddItemToLocalDictionary(exceptionData, MetadataViewType, viewType);
- proxyCtorIL.Emit(OpCodes.Rethrow);
- }
- proxyCtorIL.BeginCatchBlock(typeof(InvalidCastException));
- {
- proxyCtorIL.Emit(OpCodes.Stloc, exception);
-
- proxyCtorIL.GetExceptionDataAndStoreInLocal(exception, exceptionData);
- proxyCtorIL.Emit(OpCodes.Ldloc, value);
- proxyCtorIL.Emit(OpCodes.Call, ObjectGetType);
- proxyCtorIL.Emit(OpCodes.Stloc, sourceType);
- proxyCtorIL.AddItemToLocalDictionary(exceptionData, MetadataViewType, viewType);
- proxyCtorIL.AddLocalToLocalDictionary(exceptionData, MetadataItemSourceType, sourceType);
- proxyCtorIL.AddLocalToLocalDictionary(exceptionData, MetadataItemValue, value);
- proxyCtorIL.Emit(OpCodes.Rethrow);
- }
- proxyCtorIL.EndExceptionBlock();
-
- // Finished implementing interface and constructor
- proxyCtorIL.Emit(OpCodes.Ret);
- proxyType = proxyTypeBuilder.CreateType();
-
- return proxyType;
- }
-
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataViewProvider.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataViewProvider.cs
deleted file mode 100644
index a6efbd5..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataViewProvider.cs
+++ /dev/null
@@ -1,106 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using Microsoft.Internal;
-using System.Globalization;
-using System.Runtime.InteropServices;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition
-{
- internal static class MetadataViewProvider
- {
- [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
- public static TMetadataView GetMetadataView<TMetadataView>(IDictionary<string, object> metadata)
- {
- Type metadataViewType = typeof(TMetadataView);
-
- // If the Metadata dictionary is cast compatible with the passed in type
- if (metadataViewType.IsAssignableFrom(typeof(IDictionary<string, object>)))
- {
- return (TMetadataView)metadata;
- }
- // otherwise is it a metadata view
- else
- {
- Type proxyType;
- if (metadataViewType.IsInterface)
- {
- try
- {
- proxyType = MetadataViewGenerator.GenerateView(metadataViewType);
- }
- catch (TypeLoadException ex)
- {
- throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, Strings.NotSupportedInterfaceMetadataView, metadataViewType.FullName), ex);
- }
- }
- else
- {
- proxyType = metadataViewType;
- }
-
- // Now we have the type for the proxy create it
- try
- {
- return (TMetadataView)proxyType.SafeCreateInstance(metadata);
- }
- catch (MissingMethodException ex)
- {
- // Unable to create an Instance of the Metadata view '{0}' because a constructor could not be selected. Ensure that the type implements a constructor which takes an argument of type IDictionary<string, object>.
- throw new CompositionContractMismatchException(string.Format(CultureInfo.CurrentCulture,
- Strings.CompositionException_MetadataViewInvalidConstructor,
- proxyType.AssemblyQualifiedName), ex);
- }
- catch (TargetInvocationException ex)
- {
- //Unwrap known failures that we want to present as CompositionContractMismatchException
- if(metadataViewType.IsInterface)
- {
- if(ex.InnerException.GetType() == typeof(InvalidCastException))
- {
- // Unable to create an Instance of the Metadata view {0} because the exporter exported the metadata for the item {1} with the value {2} as type {3} but the view imports it as type {4}.
- throw new CompositionContractMismatchException(string.Format(CultureInfo.CurrentCulture,
- Strings.ContractMismatch_InvalidCastOnMetadataField,
- ex.InnerException.Data[MetadataViewGenerator.MetadataViewType],
- ex.InnerException.Data[MetadataViewGenerator.MetadataItemKey],
- ex.InnerException.Data[MetadataViewGenerator.MetadataItemValue],
- ex.InnerException.Data[MetadataViewGenerator.MetadataItemSourceType],
- ex.InnerException.Data[MetadataViewGenerator.MetadataItemTargetType]), ex);
- }
- else if (ex.InnerException.GetType() == typeof(NullReferenceException))
- {
- // Unable to create an Instance of the Metadata view {0} because the exporter exported the metadata for the item {1} with a null value and null is not a valid value for type {2}.
- throw new CompositionContractMismatchException(string.Format(CultureInfo.CurrentCulture,
- Strings.ContractMismatch_NullReferenceOnMetadataField,
- ex.InnerException.Data[MetadataViewGenerator.MetadataViewType],
- ex.InnerException.Data[MetadataViewGenerator.MetadataItemKey],
- ex.InnerException.Data[MetadataViewGenerator.MetadataItemTargetType]), ex);
- }
- }
- throw;
- }
- }
- }
-
- public static bool IsViewTypeValid(Type metadataViewType)
- {
- Assumes.NotNull(metadataViewType);
-
- // If the Metadata dictionary is cast compatible with the passed in type
- if (ExportServices.IsDefaultMetadataViewType(metadataViewType)
- || metadataViewType.IsInterface
- || ExportServices.IsDictionaryConstructorViewType(metadataViewType))
- {
- return true;
- }
-
- return false;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/PartCreationPolicyAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/PartCreationPolicyAttribute.cs
deleted file mode 100644
index 43d0fc9..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/PartCreationPolicyAttribute.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies <see cref="CreationPolicy"/> for a given <see cref="ComposablePart" />.
- /// </summary>
- [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
- public sealed class PartCreationPolicyAttribute : Attribute
- {
- internal static PartCreationPolicyAttribute Default = new PartCreationPolicyAttribute(CreationPolicy.Any);
- internal static PartCreationPolicyAttribute Shared = new PartCreationPolicyAttribute(CreationPolicy.Shared);
-
- /// <summary>
- /// Initializes a new instance of the <see cref="PartCreationPolicyAttribute"/> class.
- /// </summary>
- public PartCreationPolicyAttribute(CreationPolicy creationPolicy)
- {
- this.CreationPolicy = creationPolicy;
- }
-
- /// <summary>
- /// Gets or sets a value indicating the creation policy of the attributed part.
- /// </summary>
- /// <value>
- /// One of the <see cref="CreationPolicy"/> values indicating the creation policy of the
- /// attributed part. The default is
- /// <see cref="System.ComponentModel.Composition.CreationPolicy.Any"/>.
- /// </value>
- public CreationPolicy CreationPolicy { get; private set; }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/PartMetadataAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/PartMetadataAttribute.cs
deleted file mode 100644
index a75aa4e..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/PartMetadataAttribute.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies metadata for a type to be used as a <see cref="ComposablePartDefinition"/> and
- /// <see cref="ComposablePart"/>.
- /// </summary>
- [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
- public sealed class PartMetadataAttribute : Attribute
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="PartMetadataAttribute"/> with the
- /// specified name and metadata value.
- /// </summary>
- /// <param name="name">
- /// A <see cref="String"/> containing the name of the metadata value; or
- /// <see langword="null"/> to use an empty string ("").
- /// </param>
- /// <param name="value">
- /// An <see cref="object"/> containing the metadata value. This can be
- /// <see langword="null"/>.
- /// </param>
- public PartMetadataAttribute(string name, object value)
- {
- this.Name = name ?? string.Empty;
- this.Value = value;
- }
-
- /// <summary>
- /// Gets the name of the metadata value.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing the name of the metadata value.
- /// </value>
- public string Name
- {
- get;
- private set;
- }
-
- /// <summary>
- /// Gets the metadata value.
- /// </summary>
- /// <value>
- /// An <see cref="object"/> containing the metadata value.
- /// </value>
- public object Value
- {
- get;
- private set;
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/PartNotDiscoverableAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/PartNotDiscoverableAttribute.cs
deleted file mode 100644
index 02c8246..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/PartNotDiscoverableAttribute.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Place on a type that should not be discovered as a <see cref="ComposablePart" /> in
- /// a <see cref="ComposablePartCatalog" />.
- /// </summary>
- [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
- public sealed class PartNotDiscoverableAttribute : Attribute
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="PartNotDiscoverableAttribute"/> class.
- /// </summary>
- public PartNotDiscoverableAttribute()
- {
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePart.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePart.cs
deleted file mode 100644
index 0632fee..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePart.cs
+++ /dev/null
@@ -1,210 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Defines the <see langword="abstract"/> base class for composable parts, which
- /// import and produce exported values.
- /// </summary>
- public abstract class ComposablePart
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePart"/> class.
- /// </summary>
- protected ComposablePart()
- {
- }
-
- /// <summary>
- /// Gets the export definitions that describe the exported values provided by the part.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of <see cref="ExportDefinition"/> objects describing
- /// the exported values provided by the <see cref="ComposablePart"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePart"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// <para>
- /// <note type="inheritinfo">
- /// If the <see cref="ComposablePart"/> was created from a
- /// <see cref="ComposablePartDefinition"/>, this property should return the result of
- /// <see cref="ComposablePartDefinition.ExportDefinitions"/>.
- /// </note>
- /// </para>
- /// <para>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>.
- /// If the <see cref="ComposablePart"/> does not have exports, return an empty
- /// <see cref="IEnumerable{T}"/> instead.
- /// </note>
- /// </para>
- /// </remarks>
- public abstract IEnumerable<ExportDefinition> ExportDefinitions { get; }
-
- /// <summary>
- /// Gets the import definitions that describe the imports required by the part.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of <see cref="ImportDefinition"/> objects describing
- /// the imports required by the <see cref="ComposablePart"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePart"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// <para>
- /// <note type="inheritinfo">
- /// If the <see cref="ComposablePart"/> was created from a
- /// <see cref="ComposablePartDefinition"/>, this property should return the result of
- /// <see cref="ComposablePartDefinition.ImportDefinitions"/>.
- /// </note>
- /// </para>
- /// <para>
- /// <note type="inheritinfo">
- /// Overrides of this property should never return <see langword="null"/>.
- /// If the <see cref="ComposablePart"/> does not have imports, return an empty
- /// <see cref="IEnumerable{T}"/> instead.
- /// </note>
- /// </para>
- /// </remarks>
- public abstract IEnumerable<ImportDefinition> ImportDefinitions { get; }
-
- /// <summary>
- /// Gets the metadata of the part.
- /// </summary>
- /// <value>
- /// An <see cref="IDictionary{TKey, TValue}"/> containing the metadata of the
- /// <see cref="ComposablePart"/>. The default is an empty, read-only
- /// <see cref="IDictionary{TKey, TValue}"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePart"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// <para>
- /// <note type="inheritinfo">
- /// If the <see cref="ComposablePart"/> was created from a
- /// <see cref="ComposablePartDefinition"/>, this property should return the result of
- /// <see cref="ComposablePartDefinition.Metadata"/>.
- /// </note>
- /// </para>
- /// <para>
- /// <note type="inheritinfo">
- /// Overriders of this property should return a read-only
- /// <see cref="IDictionary{TKey, TValue}"/> object with a case-sensitive,
- /// non-linguistic comparer, such as <see cref="StringComparer.Ordinal"/>,
- /// and should never return <see langword="null"/>. If the
- /// <see cref="ComposablePart"/> does not contain metadata, return an
- /// empty <see cref="IDictionary{TKey, TValue}"/> instead.
- /// </note>
- /// </para>
- /// </remarks>
- public virtual IDictionary<string, object> Metadata
- {
- get
- {
- return MetadataServices.EmptyMetadata;
- }
- }
-
- /// <summary>
- /// Called by the composition engine when all required imports on the part have been
- /// satisfied.
- /// </summary>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePart"/> has been disposed of.
- /// </exception>
- /// <exception cref="ComposablePartException">
- /// An error occurred activating the <see cref="ComposablePart"/>.
- /// </exception>
- public virtual void Activate()
- {
- }
-
- /// <summary>
- /// Gets the exported value described by the specified definition.
- /// </summary>
- /// <param name="definition">
- /// One of the <see cref="ExportDefinition"/> objects from the
- /// <see cref="ExportDefinitions"/> property describing the exported value
- /// to return.
- /// </param>
- /// <returns>
- /// The exported value described by <paramref name="definition"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="definition"/> did not originate from the <see cref="ExportDefinitions"/>
- /// property on the <see cref="ComposablePart"/>.
- /// </exception>
- /// <exception cref="InvalidOperationException">
- /// One or more pre-requisite imports, indicated by <see cref="ImportDefinition.IsPrerequisite"/>,
- /// have not been set.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePart"/> has been disposed of.
- /// </exception>
- /// <exception cref="ComposablePartException">
- /// An error occurred getting the exported value described by the <see cref="ExportDefinition"/>.
- /// </exception>
- public abstract object GetExportedValue(ExportDefinition definition);
-
- /// <summary>
- /// Sets the import described by the specified definition with the specified exports.
- /// </summary>
- /// <param name="definition">
- /// One of the <see cref="ImportDefinition"/> objects from the
- /// <see cref="ImportDefinitions"/> property describing the import to be set.
- /// </param>
- /// <param name="exports">
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects of which
- /// to set the import described by <paramref name="definition"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="exports"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="definition"/> did not originate from the <see cref="ImportDefinitions"/>
- /// property on the <see cref="ComposablePart"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="exports"/> contains an element that is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="exports"/> is empty and <see cref="ImportDefinition.Cardinality"/> is
- /// <see cref="ImportCardinality.ExactlyOne"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="exports"/> contains more than one element and
- /// <see cref="ImportDefinition.Cardinality"/> is <see cref="ImportCardinality.ZeroOrOne"/> or
- /// <see cref="ImportCardinality.ExactlyOne"/>.
- /// </exception>
- /// <exception cref="InvalidOperationException">
- /// <see cref="Activate"/> has been previously called and
- /// <see cref="ImportDefinition.IsRecomposable"/> is <see langword="false"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePart"/> has been disposed of.
- /// </exception>
- /// <exception cref="ComposablePartException">
- /// An error occurred setting the import described by the <see cref="ImportDefinition"/>.
- /// </exception>
- public abstract void SetImport(ImportDefinition definition, IEnumerable<Export> exports);
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartCatalog.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartCatalog.cs
deleted file mode 100644
index 59b55b2..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartCatalog.cs
+++ /dev/null
@@ -1,129 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using System.Linq.Expressions;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Defines the <see langword="abstract"/> base class for composable part catalogs, which produce
- /// and return <see cref="ComposablePartDefinition"/> objects.
- /// </summary>
- /// <remarks>
- /// This type is thread safe.
- /// </remarks>
- [DebuggerTypeProxy(typeof(ComposablePartCatalogDebuggerProxy))]
- public abstract class ComposablePartCatalog : IDisposable
- {
- private bool _isDisposed;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartCatalog"/> class.
- /// </summary>
- protected ComposablePartCatalog()
- {
- }
-
- /// <summary>
- /// Gets the part definitions of the catalog.
- /// </summary>
- /// <value>
- /// A <see cref="IQueryable{T}"/> of <see cref="ComposablePartDefinition"/> objects of the
- /// <see cref="ComposablePartCatalog"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePartCatalog"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>.
- /// </note>
- /// </remarks>
- public abstract IQueryable<ComposablePartDefinition> Parts
- {
- get;
- }
-
- /// <summary>
- /// Returns the export definitions that match the constraint defined by the specified definition.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="ExportDefinition"/> objects to return.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Tuple{T1, T2}"/> containing the
- /// <see cref="ExportDefinition"/> objects and their associated
- /// <see cref="ComposablePartDefinition"/> for objects that match the constraint defined
- /// by <paramref name="definition"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePartCatalog"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>, if no
- /// <see cref="ExportDefinition"/> match the conditions defined by
- /// <paramref name="definition"/>, return an empty <see cref="IEnumerable{T}"/>.
- /// </note>
- /// </remarks>
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public virtual IEnumerable<Tuple<ComposablePartDefinition, ExportDefinition>> GetExports(ImportDefinition definition)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(definition, "definition");
-
- var exports = new List<Tuple<ComposablePartDefinition, ExportDefinition>>();
- foreach (var part in this.Parts)
- {
- foreach (var export in part.ExportDefinitions)
- {
- if (definition.IsConstraintSatisfiedBy(export))
- {
- exports.Add(new Tuple<ComposablePartDefinition, ExportDefinition>(part, export));
- }
- }
- }
- return exports;
-
- }
-
- /// <summary>
- /// Releases the unmanaged resources used by the <see cref="ComposablePartCatalog"/> and
- /// optionally releases the managed resources.
- /// </summary>
- /// <param name="disposing">
- /// <see langword="true"/> to release both managed and unmanaged resources;
- /// <see langword="false"/> to release only unmanaged resources.
- /// </param>
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- this._isDisposed = true;
- }
-
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartCatalogDebuggerProxy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartCatalogDebuggerProxy.cs
deleted file mode 100644
index 15f0031..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartCatalogDebuggerProxy.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.ObjectModel;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- // This proxy is needed to pretty up ComposablePartCatalog.Parts; IQueryable<T>
- // instances are not displayed in a very friendly way in the debugger.
- internal class ComposablePartCatalogDebuggerProxy
- {
- private readonly ComposablePartCatalog _catalog;
-
- public ComposablePartCatalogDebuggerProxy(ComposablePartCatalog catalog)
- {
- Requires.NotNull(catalog, "catalog");
-
- this._catalog = catalog;
- }
-
- public ReadOnlyCollection<ComposablePartDefinition> Parts
- {
- // NOTE: This shouldn't be cached, so that on every query of
- // the current value of the underlying catalog is respected.
- // We use ReadOnlyCollection as arrays do not have the
- // appropriate debugger display attributes applied to them.
- get { return this._catalog.Parts.ToReadOnlyCollection(); }
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartDefinition.cs
deleted file mode 100644
index b82f590..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartDefinition.cs
+++ /dev/null
@@ -1,102 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Defines the <see langword="abstract"/> base class for composable part definitions, which
- /// describe, and allow the creation of, <see cref="ComposablePart"/> objects.
- /// </summary>
- public abstract class ComposablePartDefinition
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartDefinition"/> class.
- /// </summary>
- protected ComposablePartDefinition()
- {
- }
-
- /// <summary>
- /// Gets the export definitions that describe the exported values provided by parts
- /// created by the definition.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of <see cref="ExportDefinition"/> objects describing
- /// the exported values provided by <see cref="ComposablePart"/> objects created by the
- /// <see cref="ComposablePartDefinition"/>.
- /// </value>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overrides of this property should never return <see langword="null"/>.
- /// If the <see cref="ComposablePart"/> objects created by the
- /// <see cref="ComposablePartDefinition"/> do not provide exported values, return
- /// an empty <see cref="IEnumerable{T}"/> instead.
- /// </note>
- /// </remarks>
- public abstract IEnumerable<ExportDefinition> ExportDefinitions { get; }
-
- /// <summary>
- /// Gets the import definitions that describe the imports required by parts created
- /// by the definition.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of <see cref="ImportDefinition"/> objects describing
- /// the imports required by <see cref="ComposablePart"/> objects created by the
- /// <see cref="ComposablePartDefinition"/>.
- /// </value>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>.
- /// If the <see cref="ComposablePart"/> objects created by the
- /// <see cref="ComposablePartDefinition"/> do not have imports, return an empty
- /// <see cref="IEnumerable{T}"/> instead.
- /// </note>
- /// </remarks>
- public abstract IEnumerable<ImportDefinition> ImportDefinitions { get; }
-
- /// <summary>
- /// Gets the metadata of the definition.
- /// </summary>
- /// <value>
- /// An <see cref="IDictionary{TKey, TValue}"/> containing the metadata of the
- /// <see cref="ComposablePartDefinition"/>. The default is an empty, read-only
- /// <see cref="IDictionary{TKey, TValue}"/>.
- /// </value>
- /// <remarks>
- /// <para>
- /// <note type="inheritinfo">
- /// Overriders of this property should return a read-only
- /// <see cref="IDictionary{TKey, TValue}"/> object with a case-sensitive,
- /// non-linguistic comparer, such as <see cref="StringComparer.Ordinal"/>,
- /// and should never return <see langword="null"/>. If the
- /// <see cref="ComposablePartDefinition"/> does contain metadata,
- /// return an empty <see cref="IDictionary{TKey, TValue}"/> instead.
- /// </note>
- /// </para>
- /// </remarks>
- public virtual IDictionary<string, object> Metadata
- {
- get { return MetadataServices.EmptyMetadata; }
- }
-
- /// <summary>
- /// Creates a new instance of a part that the definition describes.
- /// </summary>
- /// <returns>
- /// The created <see cref="ComposablePart"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// <note type="inheritinfo">
- /// Derived types overriding this method should return a new instance of a
- /// <see cref="ComposablePart"/> on every invoke and should never return
- /// <see langword="null"/>.
- /// </note>
- /// </para>
- /// </remarks>
- public abstract ComposablePart CreatePart();
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartException.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartException.cs
deleted file mode 100644
index 72b1a33..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartException.cs
+++ /dev/null
@@ -1,214 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.Runtime.Serialization;
-using System.Security.Permissions;
-using Microsoft.Internal;
-
-#if !SILVERLIGHT
-using Microsoft.Internal.Runtime.Serialization;
-#endif
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// The exception that is thrown when an error occurs when calling methods on a
- /// <see cref="ComposablePart"/>.
- /// </summary>
- [Serializable]
- public class ComposablePartException : Exception, ICompositionError
- {
- private readonly CompositionErrorId _id;
- private readonly ICompositionElement _element;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartException"/> class.
- /// </summary>
- public ComposablePartException()
- : this(CompositionErrorId.Unknown, (string)null, (ICompositionElement)null, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartException"/> class
- /// with the specified error message.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- /// <param name="element">
- /// The <see cref="ICompositionElement"/> that is the cause of the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="ComposablePartException.Element"/> property to
- /// <see langword="null"/>.
- /// </param>
- public ComposablePartException(string message)
- : this(CompositionErrorId.Unknown, message, (ICompositionElement)null, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartException"/> class
- /// with the specified error message and composition element that is the cause of
- /// the exception.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- public ComposablePartException(string message, ICompositionElement element)
- : this(CompositionErrorId.Unknown, message, element, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartException"/> class
- /// with the specified error message and exception that is the cause of the
- /// exception.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- /// <param name="innerException">
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.InnerException"/> property to <see langword="null"/>.
- /// </param>
- public ComposablePartException(string message, Exception innerException)
- : this(CompositionErrorId.Unknown, message, (ICompositionElement)null, innerException)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartException"/> class
- /// with the specified error message, and composition element and exception that
- /// are the cause of the exception.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- /// <param name="element">
- /// The <see cref="ICompositionElement"/> that is the cause of the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="ComposablePartException.Element"/> property to
- /// <see langword="null"/>.
- /// </param>
- /// <param name="innerException">
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.InnerException"/> property to <see langword="null"/>.
- /// </param>
- public ComposablePartException(string message, ICompositionElement element, Exception innerException)
- : this(CompositionErrorId.Unknown, message, element, innerException)
- {
- }
-
- internal ComposablePartException(CompositionErrorId id, string message)
- : this(id, message, (ICompositionElement)null, (Exception)null)
- {
- }
-
- internal ComposablePartException(CompositionErrorId id, string message, Exception exception)
- : this(id, message, (ICompositionElement)null, exception)
- {
- }
-
- internal ComposablePartException(CompositionErrorId id, string message, ICompositionElement element)
- : this(id, message, (ICompositionElement)element, (Exception)null)
- {
- }
-
- internal ComposablePartException(CompositionErrorId id, string message, ICompositionElement element, Exception innerException)
- : base(message, innerException)
- {
- _id = id;
- _element = element;
- }
-
-#if !SILVERLIGHT
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartException"/> class
- /// with the specified serialization data.
- /// </summary>
- /// <param name="info">
- /// The <see cref="SerializationInfo"/> that holds the serialized object data about the
- /// <see cref="ComposablePartException"/>.
- /// </param>
- /// <param name="context">
- /// The <see cref="StreamingContext"/> that contains contextual information about the
- /// source or destination.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="info"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="SerializationException">
- /// <paramref name="info"/> is missing a required value.
- /// </exception>
- /// <exception cref="InvalidCastException">
- /// <paramref name="info"/> contains a value that cannot be cast to the correct type.
- /// </exception>
- [System.Security.SecuritySafeCritical]
- protected ComposablePartException(SerializationInfo info, StreamingContext context)
- : base(info, context)
- {
- _id = info.GetValue<CompositionErrorId>("Id");
- _element = info.GetValue<ICompositionElement>("Element");
- }
-
-#endif
-
- /// <summary>
- /// Gets the composition element that is the cause of the exception.
- /// </summary>
- /// <value>
- /// The <see cref="ICompositionElement"/> that is the cause of the
- /// <see cref="ComposablePartException"/>. The default is <see langword="null"/>.
- /// </value>
- public ICompositionElement Element
- {
- get { return _element; }
- }
-
- CompositionErrorId ICompositionError.Id
- {
- get { return _id; }
- }
-
-#if !SILVERLIGHT
-
- /// <summary>
- /// Gets the serialization data of the exception.
- /// </summary>
- /// <param name="info">
- /// The <see cref="SerializationInfo"/> that holds the serialized object data about the
- /// <see cref="ComposablePartException"/>.
- /// </param>
- /// <param name="context">
- /// The <see cref="StreamingContext"/> that contains contextual information about the
- /// source or destination.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="info"/> is <see langword="null"/>.
- /// </exception>
- [System.Security.SecurityCritical]
- public override void GetObjectData(SerializationInfo info, StreamingContext context)
- {
- base.GetObjectData(info, context);
-
- info.AddValue("Id", _id);
- info.AddValue("Element", _element.ToSerializableElement());
- }
-
-#endif
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElement.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElement.cs
deleted file mode 100644
index 23f7677..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElement.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- // Represents the ICompositionElement placeholder for an
- // object that does not implement ICompositionElement
- [DebuggerTypeProxy(typeof(CompositionElementDebuggerProxy))]
- [Serializable]
- internal class CompositionElement : SerializableCompositionElement
- {
- private static readonly ICompositionElement UnknownOrigin = new SerializableCompositionElement(Strings.CompositionElement_UnknownOrigin, (ICompositionElement)null);
- private readonly object _underlyingObject;
-
- public CompositionElement(object underlyingObject)
- : base(underlyingObject.ToString(), UnknownOrigin)
- {
- this._underlyingObject = underlyingObject;
- }
-
- public object UnderlyingObject
- {
- get { return _underlyingObject; }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElementDebuggerProxy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElementDebuggerProxy.cs
deleted file mode 100644
index 00442c5..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElementDebuggerProxy.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- // Because the debugger displays only the members available on ICompositionElement
- // when viewing CompositionError.Element in the watch and data tips windows, we
- // need this proxy so that the underlying object wrapped by the CompositionElement
- // placeholder is displayed by default.
- internal class CompositionElementDebuggerProxy
- {
- private readonly CompositionElement _element;
-
- public CompositionElementDebuggerProxy(CompositionElement element)
- {
- Requires.NotNull(element, "element");
-
- this._element = element;
- }
-
- public string DisplayName
- {
- get { return this._element.DisplayName; }
- }
-
- public ICompositionElement Origin
- {
- get { return this._element.Origin; }
- }
-
- public object UnderlyingObject
- {
- get { return this._element.UnderlyingObject; }
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElementExtensions.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElementExtensions.cs
deleted file mode 100644
index 0f34d72..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElementExtensions.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- internal static class CompositionElementExtensions
- {
-#if !SILVERLIGHT
- public static ICompositionElement ToSerializableElement(this ICompositionElement element)
- {
- return SerializableCompositionElement.FromICompositionElement(element);
- }
-#endif
- public static ICompositionElement ToElement(this Export export)
- {
- // First try the export
- ICompositionElement element = export as ICompositionElement;
- if (element != null)
- {
- return element;
- }
-
- // Otherwise, try the definition
- return ToElement(export.Definition);
- }
-
- public static ICompositionElement ToElement(this ExportDefinition definition)
- {
- return ToElementCore(definition);
- }
-
- public static ICompositionElement ToElement(this ImportDefinition definition)
- {
- return ToElementCore(definition);
- }
-
- public static ICompositionElement ToElement(this ComposablePart part)
- {
- return ToElementCore(part);
- }
-
- public static ICompositionElement ToElement(this ComposablePartDefinition definition)
- {
- return ToElementCore(definition);
- }
-
- public static string GetDisplayName(this ComposablePartDefinition definition)
- {
- return GetDisplayNameCore(definition);
- }
-
- public static string GetDisplayName(this ComposablePartCatalog catalog)
- {
- return GetDisplayNameCore(catalog);
- }
-
- private static string GetDisplayNameCore(object value)
- {
- ICompositionElement element = value as ICompositionElement;
- if (element != null)
- {
- return element.DisplayName;
- }
-
- return value.ToString();
- }
-
- private static ICompositionElement ToElementCore(object value)
- {
- ICompositionElement element = value as ICompositionElement;
- if (element != null)
- {
- return element;
- }
-
- return new CompositionElement(value);
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ContractBasedImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ContractBasedImportDefinition.cs
deleted file mode 100644
index 148f46b..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ContractBasedImportDefinition.cs
+++ /dev/null
@@ -1,309 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using System.Linq.Expressions;
-using Microsoft.Internal;
-using System.Globalization;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Represents a contract name and metadata-based import
- /// required by a <see cref="ComposablePart"/> object.
- /// </summary>
- public class ContractBasedImportDefinition : ImportDefinition
- {
- // Unlike contract name, required metadata has a sensible default; set it to an empty
- // enumerable, so that derived definitions only need to override ContractName by default.
- private readonly IEnumerable<KeyValuePair<string, Type>> _requiredMetadata = Enumerable.Empty<KeyValuePair<string, Type>>();
- private Expression<Func<ExportDefinition, bool>> _constraint;
- private readonly CreationPolicy _requiredCreationPolicy = CreationPolicy.Any;
- private readonly string _requiredTypeIdentity = null;
- private bool _isRequiredMetadataValidated = false;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ContractBasedImportDefinition"/> class.
- /// </summary>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Derived types calling this constructor can optionally override the
- /// <see cref="ImportDefinition.ContractName"/>, <see cref="RequiredTypeIdentity"/>,
- /// <see cref="RequiredMetadata"/>, <see cref="ImportDefinition.Cardinality"/>,
- /// <see cref="ImportDefinition.IsPrerequisite"/>, <see cref="ImportDefinition.IsRecomposable"/>
- /// and <see cref="RequiredCreationPolicy"/> properties.
- /// </note>
- /// </remarks>
- protected ContractBasedImportDefinition()
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ContractBasedImportDefinition"/> class
- /// with the specified contract name, required metadataq, cardinality, value indicating
- /// if the import definition is recomposable and a value indicating if the import definition
- /// is a prerequisite.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="Export"/> required by the <see cref="ContractBasedImportDefinition"/>.
- /// </param>
- /// <param name="requiredTypeIdentity">
- /// The type identity of the export type expected. Use <see cref="AttributedModelServices.GetTypeIdentity(Type)"/>
- /// to generate a type identity for a given type. If no specific type is required pass <see langword="null"/>.
- /// </param>
- /// <param name="requiredMetadata">
- /// An <see cref="IEnumerable{T}"/> of <see cref="String"/> objects containing
- /// the metadata names of the <see cref="Export"/> required by the
- /// <see cref="ContractBasedImportDefinition"/>; or <see langword="null"/> to
- /// set the <see cref="RequiredMetadata"/> property to an empty <see cref="IEnumerable{T}"/>.
- /// </param>
- /// <param name="cardinality">
- /// One of the <see cref="ImportCardinality"/> values indicating the
- /// cardinality of the <see cref="Export"/> objects required by the
- /// <see cref="ContractBasedImportDefinition"/>.
- /// </param>
- /// <param name="isRecomposable">
- /// <see langword="true"/> if the <see cref="ContractBasedImportDefinition"/> can be satisfied
- /// multiple times throughout the lifetime of a <see cref="ComposablePart"/>, otherwise,
- /// <see langword="false"/>.
- /// </param>
- /// <param name="isPrerequisite">
- /// <see langword="true"/> if the <see cref="ContractBasedImportDefinition"/> is required to be
- /// satisfied before a <see cref="ComposablePart"/> can start producing exported
- /// objects; otherwise, <see langword="false"/>.
- /// </param>
- /// <param name="requiredCreationPolicy">
- /// A value indicating that the importer requires a specific <see cref="CreationPolicy"/> for
- /// the exports used to satisfy this import. If no specific <see cref="CreationPolicy"/> is needed
- /// pass the default <see cref="CreationPolicy.Any"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="contractName"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="contractName"/> is an empty string ("").
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="requiredMetadata"/> contains an element that is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="cardinality"/> is not one of the <see cref="ImportCardinality"/>
- /// values.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public ContractBasedImportDefinition(string contractName, string requiredTypeIdentity, IEnumerable<KeyValuePair<string, Type>> requiredMetadata,
- ImportCardinality cardinality, bool isRecomposable, bool isPrerequisite, CreationPolicy requiredCreationPolicy)
- : base(contractName, cardinality, isRecomposable, isPrerequisite)
- {
- Requires.NotNullOrEmpty(contractName, "contractName");
-
- this._requiredTypeIdentity = requiredTypeIdentity;
-
- if (requiredMetadata != null)
- {
- this._requiredMetadata = requiredMetadata;
- }
-
- this._requiredCreationPolicy = requiredCreationPolicy;
- }
-
- /// <summary>
- /// The type identity of the export type expected.
- /// </summary>
- /// <value>
- /// A <see cref="string"/> that is generated by <see cref="AttributedModelServices.GetTypeIdentity(Type)"/>
- /// on the type that this import expects. If the value is <see langword="null"/> then this import
- /// doesn't expect a particular type.
- /// </value>
- public virtual string RequiredTypeIdentity
- {
- get { return this._requiredTypeIdentity; }
- }
-
- /// <summary>
- /// Gets the metadata names of the export required by the import definition.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of pairs of metadata keys and types of the <see cref="Export"/> required by the
- /// <see cref="ContractBasedImportDefinition"/>. The default is an empty
- /// <see cref="IEnumerable{T}"/>.
- /// </value>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>
- /// or return an <see cref="IEnumerable{T}"/> that contains an element that is
- /// <see langword="null"/>. If the definition does not contain required metadata,
- /// return an empty <see cref="IEnumerable{T}"/> instead.
- /// </note>
- /// </remarks>
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public virtual IEnumerable<KeyValuePair<string, Type>> RequiredMetadata
- {
- get
- {
- // NOTE : unlike other arguments, we validate this one as late as possible, because its validation may lead to type loading
- this.ValidateRequiredMetadata();
-
- return this._requiredMetadata;
- }
- }
-
- private void ValidateRequiredMetadata()
- {
- if (!this._isRequiredMetadataValidated)
- {
- foreach (KeyValuePair<string, Type> metadataItem in this._requiredMetadata)
- {
- if ((metadataItem.Key == null) || (metadataItem.Value == null))
- {
- throw new InvalidOperationException(
- string.Format(CultureInfo.CurrentCulture, Strings.Argument_NullElement, "requiredMetadata"));
- }
- }
- this._isRequiredMetadataValidated = true;
- }
- }
-
- /// <summary>
- /// Gets or sets a value indicating that the importer requires a specific
- /// <see cref="CreationPolicy"/> for the exports used to satisfy this import. T
- /// </summary>
- /// <value>
- /// <see cref="CreationPolicy.Any"/> - default value, used if the importer doesn't
- /// require a specific <see cref="CreationPolicy"/>.
- ///
- /// <see cref="CreationPolicy.Shared"/> - Requires that all exports used should be shared
- /// by everyone in the container.
- ///
- /// <see cref="CreationPolicy.NonShared"/> - Requires that all exports used should be
- /// non-shared in a container and thus everyone gets their own instance.
- /// </value>
- public virtual CreationPolicy RequiredCreationPolicy
- {
- get { return this._requiredCreationPolicy; }
- }
-
- /// <summary>
- /// Gets an expression that defines conditions that must be matched for the import
- /// described by the import definition to be satisfied.
- /// </summary>
- /// <returns>
- /// A <see cref="Expression{TDelegate}"/> containing a <see cref="Func{T, TResult}"/>
- /// that defines the conditions that must be matched for the
- /// <see cref="ImportDefinition"/> to be satisfied by an <see cref="Export"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// This property returns an expression that defines conditions based on the
- /// <see cref="ImportDefinition.ContractName"/>, <see cref="RequiredTypeIdentity"/>,
- /// <see cref="RequiredMetadata"/>, and <see cref="RequiredCreationPolicy"/>
- /// properties.
- /// </para>
- /// </remarks>
- public override Expression<Func<ExportDefinition, bool>> Constraint
- {
- get
- {
- if (this._constraint == null)
- {
- this._constraint = ConstraintServices.CreateConstraint(this.ContractName, this.RequiredTypeIdentity, this.RequiredMetadata, this.RequiredCreationPolicy);
- }
-
- return this._constraint;
- }
- }
-
- /// <summary>
- /// Executes an optimized version of the contraint given by the <see cref="Constraint"/> property
- /// </summary>
- /// <param name="exportDefinition">
- /// A definition for a <see cref="Export"/> used to determine if it satisfies the
- /// requirements for this <see cref="ImportDefinition"/>.
- /// </param>
- /// <returns>
- /// <see langword="True"/> if the <see cref="Export"/> satisfies the requirements for
- /// this <see cref="ImportDefinition"/>, otherwise returns <see langword="False"/>.
- /// </returns>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overrides of this method can provide a more optimized execution of the
- /// <see cref="Constraint"/> property but the result should remain consistent.
- /// </note>
- /// </remarks>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="exportDefinition"/> is <see langword="null"/>.
- /// </exception>
- public override bool IsConstraintSatisfiedBy(ExportDefinition exportDefinition)
- {
- Requires.NotNull(exportDefinition, "exportDefinition");
-
- if (!StringComparers.ContractName.Equals(this.ContractName, exportDefinition.ContractName))
- {
- return false;
- }
-
- return MatchRequiredMatadata(exportDefinition);
- }
-
- private bool MatchRequiredMatadata(ExportDefinition definition)
- {
- if (!string.IsNullOrEmpty(this.RequiredTypeIdentity))
- {
- string exportTypeIdentity = definition.Metadata.GetValue<string>(CompositionConstants.ExportTypeIdentityMetadataName);
-
- if (!StringComparers.ContractName.Equals(this.RequiredTypeIdentity, exportTypeIdentity))
- {
- return false;
- }
- }
-
- foreach (KeyValuePair<string, Type> metadataItem in this.RequiredMetadata)
- {
- string metadataKey = metadataItem.Key;
- Type metadataValueType = metadataItem.Value;
-
- object metadataValue = null;
- if (!definition.Metadata.TryGetValue(metadataKey, out metadataValue))
- {
- return false;
- }
-
- if (metadataValue != null)
- {
- // the metadata value is not null, we can rely on IsInstanceOfType to do the right thing
- if (!metadataValueType.IsInstanceOfType(metadataValue))
- {
- return false;
- }
- }
- else
- {
- // this is an unfortunate special case - typeof(object).IsInstanceofType(null) == false
- // basically nulls are not considered valid values for anything
- // We want them to match anything that is a reference type
- if (metadataValueType.IsValueType)
- {
- // this is a pretty expensive check, but we only invoke it when metadata values are null, which is very rare
- return false;
- }
- }
- }
-
- if (this.RequiredCreationPolicy == CreationPolicy.Any)
- {
- return true;
- }
-
- CreationPolicy exportPolicy = definition.Metadata.GetValue<CreationPolicy>(CompositionConstants.PartCreationPolicyMetadataName);
- return exportPolicy == CreationPolicy.Any ||
- exportPolicy == this.RequiredCreationPolicy;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/Export.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/Export.cs
deleted file mode 100644
index e347551..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/Export.cs
+++ /dev/null
@@ -1,245 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-using Microsoft.Internal;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Represents an export. That is, a type that is made up of a delay-created exported value
- /// and metadata that describes that object.
- /// </summary>
- public class Export
- {
- private readonly ExportDefinition _definition;
- private readonly Func<object> _exportedValueGetter;
- private static readonly object _EmptyValue = new object();
- private volatile object _exportedValue = Export._EmptyValue;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="Export"/> class.
- /// </summary>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Derived types calling this constructor must override <see cref="Definition"/>
- /// and <see cref="GetExportedValueCore"/>.
- /// </note>
- /// </remarks>
- protected Export()
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="Export"/> class
- /// with the specified contract name and exported value getter.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="Export"/>.
- /// </param>
- /// <param name="exportedValueGetter">
- /// A <see cref="Func{T}"/> that is called to create the exported value of the
- /// <see cref="Export"/>. This allows the creation of the object to be delayed
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="contractName"/> is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="exportedValueGetter"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="contractName"/> is an empty string ("").
- /// </exception>
- public Export(string contractName, Func<object> exportedValueGetter)
- : this(new ExportDefinition(contractName, (IDictionary<string, object>)null), exportedValueGetter)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="Export"/> class
- /// with the specified contract name, metadata and exported value getter.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="Export"/>.
- /// </param>
- /// <param name="metadata">
- /// An <see cref="IDictionary{TKey, TValue}"/> containing the metadata of the
- /// <see cref="Export"/>; or <see langword="null"/> to set the
- /// <see cref="Metadata"/> property to an empty, read-only
- /// <see cref="IDictionary{TKey, TValue}"/>.
- /// </param>
- /// <param name="exportedValueGetter">
- /// A <see cref="Func{T}"/> that is called to create the exported value of the
- /// <see cref="Export"/>. This allows the creation of the object to be delayed.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="contractName"/> is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="exportedValueGetter"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="contractName"/> is an empty string ("").
- /// </exception>
- public Export(string contractName, IDictionary<string, object> metadata, Func<object> exportedValueGetter)
- : this(new ExportDefinition(contractName, metadata), exportedValueGetter)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="Export"/> class
- /// with the specified export definition and exported value getter.
- /// </summary>
- /// <param name="definition">
- /// An <see cref="ExportDefinition"/> that describes the contract that the
- /// <see cref="Export"/> satisfies.
- /// </param>
- /// <param name="exportedValueGetter">
- /// A <see cref="Func{T}"/> that is called to create the exported value of the
- /// <see cref="Export"/>. This allows the creation of the object to be delayed.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="exportedValueGetter"/> is <see langword="null"/>.
- /// </exception>
- public Export(ExportDefinition definition, Func<object> exportedValueGetter)
- {
- Requires.NotNull(definition, "definition");
- Requires.NotNull(exportedValueGetter, "exportedValueGetter");
-
- this._definition = definition;
- this._exportedValueGetter = exportedValueGetter;
- }
-
- /// <summary>
- /// Gets the definition that describes the contract that the export satisfies.
- /// </summary>
- /// <value>
- /// An <see cref="ExportDefinition"/> that describes the contract that
- /// the <see cref="Export"/> satisfies.
- /// </value>
- /// <exception cref="NotImplementedException">
- /// This property was not overridden by a derived class.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return
- /// <see langword="null"/>.
- /// </note>
- /// </remarks>
- public virtual ExportDefinition Definition
- {
- get
- {
- if (_definition != null)
- {
- return _definition;
- }
-
- throw ExceptionBuilder.CreateNotOverriddenByDerived("Definition");
- }
- }
-
- /// <summary>
- /// Gets the metadata of the export.
- /// </summary>
- /// <value>
- /// An <see cref="IDictionary{TKey, TValue}"/> containing the metadata of the
- /// <see cref="Export"/>.
- /// </value>
- /// <exception cref="NotImplementedException">
- /// The <see cref="Definition"/> property was not overridden by a derived class.
- /// </exception>
- /// <remarks>
- /// <para>
- /// This property returns the value of <see cref="ExportDefinition.Metadata"/>
- /// of the <see cref="Definition"/> property.
- /// </para>
- /// </remarks>
- public IDictionary<string, object> Metadata
- {
- get { return Definition.Metadata; }
- }
-
- /// <summary>
- /// Returns the exported value of the export.
- /// </summary>
- /// <returns>
- /// The exported <see cref="Object"/> of the <see cref="Export"/>.
- /// </returns>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- /// <exception cref="CompositionContractMismatchException">
- /// The current instance is an instance of <see cref="Lazy{T}"/> and the underlying
- /// exported value cannot be cast to <c>T</c>.
- /// </exception>
- /// <exception cref="NotImplementedException">
- /// The <see cref="GetExportedValueCore"/> method was not overridden by a derived class.
- /// </exception>
- public object Value
- {
- get
- {
- // NOTE : the logic below guarantees that the value will be set exactly once. It DOES NOT, however, guarantee that GetExportedValueCore() will be executed
- // more than once, as locking would be required for that. The said locking is problematic, as we can't reliable call 3rd party code under a lock.
- if (this._exportedValue == Export._EmptyValue)
- {
- object exportedValue = this.GetExportedValueCore();
-
- // NOTE : According to http://msdn.microsoft.com/en-us/library/4bw5ewxy.aspx, the warning is bogus when used with Interlocked API.
-#pragma warning disable 420
- Interlocked.CompareExchange(ref this._exportedValue, exportedValue, Export._EmptyValue);
-#pragma warning restore 420
- }
-
- return this._exportedValue;
- }
- }
-
- /// <summary>
- /// Returns the exported value of the export.
- /// </summary>
- /// <returns>
- /// The exported <see cref="Object"/> of the <see cref="Export"/>.
- /// </returns>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- /// <exception cref="CompositionContractMismatchException">
- /// The current instance is an instance of <see cref="Lazy{T}"/> and the underlying
- /// exported value cannot be cast to <c>T</c>.
- /// </exception>
- /// <exception cref="NotImplementedException">
- /// The method was not overridden by a derived class.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this method should never return
- /// <see langword="null"/>.
- /// </note>
- /// </remarks>
- [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
- protected virtual object GetExportedValueCore()
- {
- if (this._exportedValueGetter != null)
- {
- return this._exportedValueGetter.Invoke();
- }
-
- throw ExceptionBuilder.CreateNotOverriddenByDerived("GetExportedValueCore");
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ExportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ExportDefinition.cs
deleted file mode 100644
index fb3db62..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ExportDefinition.cs
+++ /dev/null
@@ -1,131 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Describes the contract that an <see cref="Export"/> object satisfies.
- /// </summary>
- public class ExportDefinition
- {
- // Unlike contract name, metadata has a sensible default; set it to an empty bag,
- // so that derived definitions only need to override ContractName by default.
- private readonly IDictionary<string, object> _metadata = MetadataServices.EmptyMetadata;
- private readonly string _contractName;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportDefinition"/> class.
- /// </summary>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Derived types calling this constructor must override <see cref="ContractName"/>
- /// and optionally, <see cref="Metadata"/>. By default, <see cref="Metadata"/>
- /// returns an empty, read-only dictionary.
- /// </note>
- /// </remarks>
- protected ExportDefinition()
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportDefinition"/> class with
- /// the specified contract name and metadata.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="ExportDefinition"/>.
- /// </param>
- /// <param name="metadata">
- /// An <see cref="IDictionary{TKey, TValue}"/> containing the metadata of the
- /// <see cref="ExportDefinition"/>; or <see langword="null"/> to set the
- /// <see cref="Metadata"/> property to an empty, read-only
- /// <see cref="IDictionary{TKey, TValue}"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="contractName"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="contractName"/> is an empty string ("").
- /// </exception>
- public ExportDefinition(string contractName, IDictionary<string, object> metadata)
- {
- Requires.NotNullOrEmpty(contractName, "contractName");
-
- _contractName = contractName;
-
- if (metadata != null)
- {
- _metadata = metadata.AsReadOnly();
- }
- }
-
- /// <summary>
- /// Gets the contract name of the export definition.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="ExportDefinition"/>.
- /// </value>
- /// <exception cref="NotImplementedException">
- /// The property was not overridden by a derived class.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>
- /// or an empty string ("").
- /// </note>
- /// </remarks>
- public virtual string ContractName
- {
- get
- {
- if (_contractName != null)
- {
- return _contractName;
- }
-
- throw ExceptionBuilder.CreateNotOverriddenByDerived("ContractName");
- }
- }
-
- /// <summary>
- /// Gets the metadata of the export definition.
- /// </summary>
- /// <value>
- /// An <see cref="IDictionary{TKey, TValue}"/> containing the metadata of the
- /// <see cref="ExportDefinition"/>. The default is an empty, read-only
- /// <see cref="IDictionary{TKey, TValue}"/>.
- /// </value>
- /// <remarks>
- /// <para>
- /// <note type="inheritinfo">
- /// Overriders of this property should return a read-only
- /// <see cref="IDictionary{TKey, TValue}"/> object with a case-sensitive,
- /// non-linguistic comparer, such as <see cref="StringComparer.Ordinal"/>,
- /// and should never return <see langword="null"/>.
- /// If the <see cref="ExportDefinition"/> does not contain metadata
- /// return an empty <see cref="IDictionary{TKey, TValue}"/> instead.
- /// </note>
- /// </para>
- /// </remarks>
- public virtual IDictionary<string, object> Metadata
- {
- get { return _metadata; }
- }
-
- /// <summary>
- /// Returns a string representation of the export definition.
- /// </summary>
- /// <returns>
- /// A <see cref="String"/> containing the value of the <see cref="ContractName"/> property.
- /// </returns>
- public override string ToString()
- {
- return this.ContractName;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ExportedDelegate.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ExportedDelegate.cs
deleted file mode 100644
index 438b0dd..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ExportedDelegate.cs
+++ /dev/null
@@ -1,97 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics.CodeAnalysis;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- [SuppressMessage("Microsoft.Naming", "CA1711:IdentifiersShouldNotHaveIncorrectSuffix")]
- public class ExportedDelegate
- {
- private object _instance;
- private MethodInfo _method;
-
- protected ExportedDelegate() { }
-#if !SILVERLIGHT
- [System.Security.SecurityCritical]
-#endif
- public ExportedDelegate(object instance, MethodInfo method)
- {
- Requires.NotNull(method, "method");
-
- this._instance = instance;
- this._method = method;
- }
-
- public virtual Delegate CreateDelegate(Type delegateType)
- {
- Requires.NotNull(delegateType, "delegateType");
-
- if (delegateType == typeof(Delegate) || delegateType == typeof(MulticastDelegate))
- {
- Type funcOrAction = ConvertMethodInfoToFuncOrActionType(this._method);
-
- if (funcOrAction != null)
- {
- delegateType = funcOrAction;
- }
- else
- {
- return null;
- }
- }
-
- return Delegate.CreateDelegate(delegateType, this._instance, this._method, false);
- }
-
- private static Type[] _funcTypes =
- {
- typeof(Func<>), typeof(Func<,>), typeof(Func<,,>), typeof(Func<,,,>), typeof(Func<,,,,>)
-#if CLR40 && !SILVERLIGHT
- , typeof(Func<,,,,,>), typeof(Func<,,,,,,>), typeof(Func<,,,,,,,>), typeof(Func<,,,,,,,,>)
-#endif
- };
-
- private static Type[] _actionTypes =
- {
- typeof(Action), typeof(Action<>), typeof(Action<,>), typeof(Action<,,>), typeof(Action<,,,>)
-#if CLR40 && !SILVERLIGHT
- , typeof(Action<,,,,>), typeof(Action<,,,,,>), typeof(Action<,,,,,,>), typeof(Action<,,,,,,,>)
-#endif
- };
-
- private static Type ConvertMethodInfoToFuncOrActionType(MethodInfo method)
- {
- ParameterInfo[] parameters = method.GetParameters();
-
- bool isVoid = method.ReturnType == typeof(void);
- Type[] typeArray = isVoid ? _actionTypes : _funcTypes;
-
- if (parameters.Length >= typeArray.Length)
- {
- return null;
- }
-
- Type[] genericArgTypes = new Type[parameters.Length + (isVoid ? 0 : 1)];
-
- for (int i = 0; i < parameters.Length; i++)
- {
- genericArgTypes[i] = parameters[i].ParameterType;
- }
-
- if (!isVoid)
- {
- genericArgTypes[parameters.Length] = method.ReturnType;
- }
-
- Type delegateType = typeArray[parameters.Length].IsGenericType ?
- typeArray[parameters.Length].MakeGenericType(genericArgTypes) :
- typeArray[parameters.Length];
-
- return delegateType;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ICompositionElement.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ICompositionElement.cs
deleted file mode 100644
index 32ff5f7..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ICompositionElement.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Represents an element that participates in composition.
- /// </summary>
- public interface ICompositionElement
- {
- /// <summary>
- /// Gets the display name of the composition element.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing a human-readable display name of the <see cref="ICompositionElement"/>.
- /// </value>
- /// <remarks>
- /// <note type="implementnotes">
- /// Implementors of this property should never return <see langword="null"/> or an empty
- /// string ("").
- /// </note>
- /// </remarks>
- string DisplayName
- {
- get;
- }
-
- /// <summary>
- /// Gets the composition element from which the current composition element
- /// originated.
- /// </summary>
- /// <value>
- /// A <see cref="ICompositionElement"/> from which the current
- /// <see cref="ICompositionElement"/> originated, or <see langword="null"/>
- /// if the <see cref="ICompositionElement"/> is the root composition element.
- /// </value>
- ICompositionElement Origin
- {
- get;
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/IPartCreatorImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/IPartCreatorImportDefinition.cs
deleted file mode 100644
index 27ac034..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/IPartCreatorImportDefinition.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- internal interface IPartCreatorImportDefinition
- {
- ContractBasedImportDefinition ProductImportDefinition { get; }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ImportCardinality.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ImportCardinality.cs
deleted file mode 100644
index 5ce945f..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ImportCardinality.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Indicates the cardinality of the <see cref="Export"/> objects required by an <see cref="ImportDefinition"/>.
- /// </summary>
- public enum ImportCardinality
- {
- /// <summary>
- /// Zero or one <see cref="Export"/> objects are required by an <see cref="ImportDefinition"/>.
- /// </summary>
- ZeroOrOne = 0,
-
- /// <summary>
- /// Exactly one <see cref="Export"/> object is required by an <see cref="ImportDefinition"/>.
- /// </summary>
- ExactlyOne = 1,
-
- /// <summary>
- /// Zero or more <see cref="Export"/> objects are required by an <see cref="ImportDefinition"/>.
- /// </summary>
- ZeroOrMore = 2,
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ImportDefinition.cs
deleted file mode 100644
index cff9886..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ImportDefinition.cs
+++ /dev/null
@@ -1,236 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq.Expressions;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Represents an import required by a <see cref="ComposablePart"/> object.
- /// </summary>
- public class ImportDefinition
- {
- internal static readonly string EmptyContractName = string.Empty;
- private readonly Expression<Func<ExportDefinition, bool>> _constraint;
- private readonly ImportCardinality _cardinality = ImportCardinality.ExactlyOne;
- private readonly string _contractName = EmptyContractName;
- private readonly bool _isRecomposable;
- private readonly bool _isPrerequisite = true;
- private Func<ExportDefinition, bool> _compiledConstraint;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportDefinition"/> class.
- /// </summary>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Derived types calling this constructor must override the <see cref="Constraint"/>
- /// property, and optionally, the <see cref="Cardinality"/>, <see cref="IsPrerequisite"/>
- /// and <see cref="IsRecomposable"/>
- /// properties.
- /// </note>
- /// </remarks>
- protected ImportDefinition()
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportDefinition"/> class
- /// with the specified constraint, cardinality, value indicating if the import
- /// definition is recomposable and a value indicating if the import definition
- /// is a prerequisite.
- /// </summary>
- /// <param name="constraint">
- /// A <see cref="Expression{TDelegate}"/> containing a <see cref="Func{T, TResult}"/>
- /// that defines the conditions that must be matched for the <see cref="ImportDefinition"/>
- /// to be satisfied by an <see cref="Export"/>.
- /// </param>
- /// <param name="contractName">
- /// The contract name of the export that this import is interested in. The contract name
- /// property is used as guidance and not automatically enforced in the constraint. If
- /// the contract name is a required in the constraint then it should be added to the constraint
- /// by the caller of this constructor.
- /// </param>
- /// <param name="cardinality">
- /// One of the <see cref="ImportCardinality"/> values indicating the
- /// cardinality of the <see cref="Export"/> objects required by the
- /// <see cref="ImportDefinition"/>.
- /// </param>
- /// <param name="isRecomposable">
- /// <see langword="true"/> if the <see cref="ImportDefinition"/> can be satisfied
- /// multiple times throughout the lifetime of a <see cref="ComposablePart"/>, otherwise,
- /// <see langword="false"/>.
- /// </param>
- /// <param name="isPrerequisite">
- /// <see langword="true"/> if the <see cref="ImportDefinition"/> is required to be
- /// satisfied before a <see cref="ComposablePart"/> can start producing exported
- /// objects; otherwise, <see langword="false"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="constraint"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="cardinality"/> is not one of the <see cref="ImportCardinality"/>
- /// values.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public ImportDefinition(Expression<Func<ExportDefinition, bool>> constraint, string contractName, ImportCardinality cardinality, bool isRecomposable, bool isPrerequisite)
- : this(contractName, cardinality, isRecomposable, isPrerequisite)
- {
- Requires.NotNull(constraint, "constraint");
-
- this._constraint = constraint;
- }
-
- internal ImportDefinition(string contractName, ImportCardinality cardinality, bool isRecomposable, bool isPrerequisite)
- {
- if (
- (cardinality != ImportCardinality.ExactlyOne) &&
- (cardinality != ImportCardinality.ZeroOrMore) &&
- (cardinality != ImportCardinality.ZeroOrOne)
- )
- {
- throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Strings.ArgumentOutOfRange_InvalidEnum, "cardinality", cardinality, typeof(ImportCardinality).Name), "cardinality");
- }
-
- this._contractName = contractName ?? EmptyContractName;
- this._cardinality = cardinality;
- this._isRecomposable = isRecomposable;
- this._isPrerequisite = isPrerequisite;
- }
-
- /// <summary>
- /// Gets the contract name of the export required by the import definition.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing the contract name of the <see cref="Export"/>
- /// required by the <see cref="ContractBasedImportDefinition"/>. This property should
- /// return <see cref="String.Empty"/> for imports that do not require a specific
- /// contract name.
- /// </value>
- public virtual string ContractName
- {
- get { return this._contractName; }
- }
-
- /// <summary>
- /// Gets the cardinality of the exports required by the import definition.
- /// </summary>
- /// <value>
- /// One of the <see cref="ImportCardinality"/> values indicating the
- /// cardinality of the <see cref="Export"/> objects required by the
- /// <see cref="ImportDefinition"/>. The default is
- /// <see cref="ImportCardinality.ExactlyOne"/>
- /// </value>
- public virtual ImportCardinality Cardinality
- {
- get { return this._cardinality; }
- }
-
- /// <summary>
- /// Gets an expression that defines conditions that must be matched for the import
- /// described by the import definition to be satisfied.
- /// </summary>
- /// <returns>
- /// A <see cref="Expression{TDelegate}"/> containing a <see cref="Func{T, TResult}"/>
- /// that defines the conditions that must be matched for the
- /// <see cref="ImportDefinition"/> to be satisfied by an <see cref="Export"/>.
- /// </returns>
- /// <exception cref="NotImplementedException">
- /// The property was not overridden by a derived class.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>.
- /// </note>
- /// </remarks>
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public virtual Expression<Func<ExportDefinition, bool>> Constraint
- {
- get
- {
- if (this._constraint != null)
- {
- return this._constraint;
- }
-
- throw ExceptionBuilder.CreateNotOverriddenByDerived("Constraint");
- }
- }
-
- /// <summary>
- /// Gets a value indicating whether the import definition is required to be
- /// satisfied before a part can start producing exported values.
- /// </summary>
- /// <value>
- /// <see langword="true"/> if the <see cref="ImportDefinition"/> is required to be
- /// satisfied before a <see cref="ComposablePart"/> can start producing exported
- /// objects; otherwise, <see langword="false"/>. The default is <see langword="true"/>.
- /// </value>
- public virtual bool IsPrerequisite
- {
- get { return this._isPrerequisite; }
- }
-
- /// <summary>
- /// Gets a value indicating whether the import definition can be satisfied multiple times.
- /// </summary>
- /// <value>
- /// <see langword="true"/> if the <see cref="ImportDefinition"/> can be satisfied
- /// multiple times throughout the lifetime of a <see cref="ComposablePart"/>, otherwise,
- /// <see langword="false"/>. The default is <see langword="false"/>.
- /// </value>
- public virtual bool IsRecomposable
- {
- get { return this._isRecomposable; }
- }
-
- /// <summary>
- /// Executes of the constraint provided by the <see cref="Constraint"/> property
- /// against a given <see cref="ExportDefinition"/> to determine if this
- /// <see cref="ImportDefinition"/> can be satisfied by the given <see cref="Export"/>.
- /// </summary>
- /// <param name="exportDefinition">
- /// A definition for a <see cref="Export"/> used to determine if it satisfies the
- /// requirements for this <see cref="ImportDefinition"/>.
- /// </param>
- /// <returns>
- /// <see langword="True"/> if the <see cref="Export"/> satisfies the requirements for
- /// this <see cref="ImportDefinition"/>, otherwise returns <see langword="False"/>.
- /// </returns>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overrides of this method can provide a more optimized execution of the
- /// <see cref="Constraint"/> property but the result should remain consistent.
- /// </note>
- /// </remarks>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="exportDefinition"/> is <see langword="null"/>.
- /// </exception>
- public virtual bool IsConstraintSatisfiedBy(ExportDefinition exportDefinition)
- {
- Requires.NotNull(exportDefinition, "exportDefinition");
-
- if (this._compiledConstraint == null)
- {
- this._compiledConstraint = this.Constraint.Compile();
- }
-
- return this._compiledConstraint.Invoke(exportDefinition);
- }
-
- /// <summary>
- /// Returns a string representation of the import definition.
- /// </summary>
- /// <returns>
- /// A <see cref="String"/> containing the value of the <see cref="Constraint"/> property.
- /// </returns>
- public override string ToString()
- {
- return this.Constraint.Body.ToString();
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/SerializableCompositionElement.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/SerializableCompositionElement.cs
deleted file mode 100644
index 45958bc..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/SerializableCompositionElement.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- // As most objects that implement ICompositionElement (such as Export, ComposablePart,
- // ComposablePartCatalog, etc) are not serializable, this class is used as a serializable
- // placeholder for these types when ICompositionElement is used within serializable types,
- // such as CompositionException, CompositionIssue, etc.
- [Serializable]
- internal class SerializableCompositionElement : ICompositionElement
- {
- private readonly string _displayName;
- private readonly ICompositionElement _origin;
-
- public SerializableCompositionElement(string displayName, ICompositionElement origin)
- {
-#if !SILVERLIGHT
- Assumes.IsTrue(origin == null || origin.GetType().IsSerializable);
-#endif
- this._displayName = displayName ?? string.Empty;
- this._origin = origin;
- }
-
- public string DisplayName
- {
- get { return this._displayName; }
- }
-
- public ICompositionElement Origin
- {
- get { return this._origin; }
- }
-
- public override string ToString()
- {
- return this.DisplayName;
- }
-
- public static ICompositionElement FromICompositionElement(ICompositionElement element)
- {
- if (element == null)
- { // Null is always serializable
-
- return null;
- }
-
- ICompositionElement origin = FromICompositionElement(element.Origin);
-
- // Otherwise, we need to create a serializable wrapper
- return new SerializableCompositionElement(element.DisplayName, origin);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/DisposableReflectionComposablePart.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/DisposableReflectionComposablePart.cs
deleted file mode 100644
index c883d1d..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/DisposableReflectionComposablePart.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal sealed class DisposableReflectionComposablePart : ReflectionComposablePart, IDisposable
- {
- private volatile int _isDisposed = 0;
-
- public DisposableReflectionComposablePart(ReflectionComposablePartDefinition definition)
- : base(definition)
- {
- }
-
- protected override void ReleaseInstanceIfNecessary(object instance)
- {
- IDisposable disposable = instance as IDisposable;
- if (disposable != null)
- {
- disposable.Dispose();
- }
- }
-
- protected override void EnsureRunning()
- {
- base.EnsureRunning();
- if (this._isDisposed == 1)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
-
- void IDisposable.Dispose()
- {
- // NOTE : According to http://msdn.microsoft.com/en-us/library/4bw5ewxy.aspx, the warning is bogus when used with Interlocked API.
-#pragma warning disable 420
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
-#pragma warning restore 420
- {
- this.ReleaseInstanceIfNecessary(this.CachedInstance);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ExportingMember.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ExportingMember.cs
deleted file mode 100644
index 44dbcea..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ExportingMember.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ExportingMember
- {
- private readonly ExportDefinition _definition;
- private readonly ReflectionMember _member;
- private object _cachedValue = null;
- private volatile bool _isValueCached = false;
-
- public ExportingMember(ExportDefinition definition, ReflectionMember member)
- {
- Assumes.NotNull(definition, member);
-
- this._definition = definition;
- this._member = member;
- }
-
- public bool RequiresInstance
- {
- get { return _member.RequiresInstance; }
- }
-
- public ExportDefinition Definition
- {
- get { return _definition; }
- }
-
- public object GetExportedValue(object instance, object @lock)
- {
- this.EnsureReadable();
-
- if (!this._isValueCached)
- {
- object exportedValue;
- try
- {
- exportedValue = this._member.GetValue(instance);
- }
- catch (TargetInvocationException exception)
- { // Member threw an exception. Avoid letting this
- // leak out as a 'raw' unhandled exception, instead,
- // we'll add some context and rethrow.
-
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ExportThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ExportThrewException,
- this._member.GetDisplayName()),
- Definition.ToElement(),
- exception.InnerException);
- }
-
- lock (@lock)
- {
- if (!this._isValueCached)
- {
- this._cachedValue = exportedValue;
- Thread.MemoryBarrier();
-
- this._isValueCached = true;
- }
- }
- }
-
- return this._cachedValue;
- }
-
- private void EnsureReadable()
- {
- if (!this._member.CanRead)
- { // Property does not have a getter
-
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ExportNotReadable,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ExportNotReadable,
- this._member.GetDisplayName()),
- Definition.ToElement());
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/IReflectionPartCreationInfo.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/IReflectionPartCreationInfo.cs
deleted file mode 100644
index fa43610..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/IReflectionPartCreationInfo.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Reflection;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal interface IReflectionPartCreationInfo : ICompositionElement
- {
- Type GetPartType();
- Lazy<Type> GetLazyPartType();
- ConstructorInfo GetConstructor();
- IDictionary<string, object> GetMetadata();
- IEnumerable<ExportDefinition> GetExports();
- IEnumerable<ImportDefinition> GetImports();
- bool IsDisposalRequired { get; }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportType.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportType.cs
deleted file mode 100644
index 776c54b..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportType.cs
+++ /dev/null
@@ -1,140 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Reflection;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- // Describes the import type of a Reflection-based import definition
- internal class ImportType
- {
- private static readonly Type LazyOfTType = typeof(Lazy<>);
- private static readonly Type LazyOfTMType = typeof(Lazy<,>);
- private const string ExportFactoryTypeName = "System.ComponentModel.Composition.ExportFactory";
-
- private readonly Type _type;
- private readonly bool _isAssignableCollectionType;
- private readonly Type _contractType;
- private Func<Export, object> _castSingleValue;
-
- public ImportType(Type type, ImportCardinality cardinality)
- {
- Assumes.NotNull(type);
-
- this._type = type;
- this._contractType = type;
-
- if (cardinality == ImportCardinality.ZeroOrMore)
- {
- this._isAssignableCollectionType = IsTypeAssignableCollectionType(type);
- this._contractType = CheckForCollection(type);
- }
-
- this._contractType = CheckForLazyAndPartCreator(this._contractType);
- }
-
- public bool IsAssignableCollectionType
- {
- get { return this._isAssignableCollectionType; }
- }
-
- public Type ElementType { get; private set; }
-
- public Type ActualType
- {
- get { return this._type; }
- }
-
- public bool IsPartCreator { get; private set; }
-
- public Type ContractType { get { return this._contractType; } }
-
- public Func<Export, object> CastExport { get { return this._castSingleValue; } }
-
- public Type MetadataViewType { get; private set; }
-
- private Type CheckForCollection(Type type)
- {
- this.ElementType = CollectionServices.GetEnumerableElementType(type);
- if (this.ElementType != null)
- {
- return this.ElementType;
- }
- return type;
- }
-
- private Type CheckForLazyAndPartCreator(Type type)
- {
- if (type.IsGenericType)
- {
- Type genericType = type.GetGenericTypeDefinition();
- Type[] arguments = type.GetGenericArguments();
-
- if (genericType == LazyOfTType)
- {
- this._castSingleValue = ExportServices.CreateStronglyTypedLazyFactory(arguments[0], null);
- return arguments[0];
- }
-
- if (genericType == LazyOfTMType)
- {
- this.MetadataViewType = arguments[1];
- this._castSingleValue = ExportServices.CreateStronglyTypedLazyFactory(arguments[0], arguments[1]);
- return arguments[0];
- }
-
- if (
- type.FullName.StartsWith(ExportFactoryTypeName, StringComparison.Ordinal) &&
- ((arguments.Length == 1) || (arguments.Length == 2)))
- {
- // Func<Tuple<T, Action>>
- Type exportLifetimeContextCreatorType = typeof(Func<>).MakeGenericType(typeof(Tuple<,>).MakeGenericType(arguments[0], typeof(Action)));
- ConstructorInfo constructor = null;
-
- if (arguments.Length == 1)
- {
- constructor = type.GetConstructor(new Type[] { exportLifetimeContextCreatorType });
- }
- else
- {
- Assumes.IsTrue(arguments.Length == 2);
- constructor = type.GetConstructor(new Type[] { exportLifetimeContextCreatorType, arguments[1] });
- }
-
- if (constructor != null)
- {
- this.IsPartCreator = true;
- if (arguments.Length == 1)
- {
- this._castSingleValue = ExportServices.CreateStronglyTypedExportFactoryFactory(arguments[0], null, constructor);
- }
- else
- {
- Assumes.IsTrue(arguments.Length == 2);
- this._castSingleValue = ExportServices.CreateStronglyTypedExportFactoryFactory(arguments[0], arguments[1], constructor);
- this.MetadataViewType = arguments[1];
- }
-
- return arguments[0];
- }
- }
- }
-
- return type;
- }
-
- private static bool IsTypeAssignableCollectionType(Type type)
- {
- if (type.IsArray || CollectionServices.IsEnumerableOfT(type))
- {
- return true;
- }
-
- return false;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingItem.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingItem.cs
deleted file mode 100644
index c45245e..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingItem.cs
+++ /dev/null
@@ -1,116 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using System.Linq;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal abstract class ImportingItem
- {
- private readonly ContractBasedImportDefinition _definition;
- private readonly ImportType _importType;
-
- protected ImportingItem(ContractBasedImportDefinition definition, ImportType importType)
- {
- Assumes.NotNull(definition);
-
- this._definition = definition;
- this._importType = importType;
- }
-
- public ContractBasedImportDefinition Definition
- {
- get { return this._definition; }
- }
-
- public ImportType ImportType
- {
- get { return this._importType; }
- }
-
- public object CastExportsToImportType(Export[] exports)
- {
- if (this.Definition.Cardinality == ImportCardinality.ZeroOrMore)
- {
- return CastExportsToCollectionImportType(exports);
- }
- else
- {
- return CastExportsToSingleImportType(exports);
- }
- }
-
- private object CastExportsToCollectionImportType(Export[] exports)
- {
- Assumes.NotNull(exports);
-
- // Element type could be null if the actually import type of the member is not a collection
- // This particular case will end up failing when we set the member.
- Type elementType = this.ImportType.ElementType ?? typeof(object);
-
- Array array = Array.CreateInstance(elementType, exports.Length);
-
- for (int i = 0; i < array.Length; i++)
- {
- object value = CastSingleExportToImportType(elementType, exports[i]);
-
- array.SetValue(value, i);
- }
-
- return array;
- }
-
- private object CastExportsToSingleImportType(Export[] exports)
- {
- Assumes.NotNull(exports);
- Assumes.IsTrue(exports.Length < 2);
-
- if (exports.Length == 0)
- {
- return null;
- }
-
- return CastSingleExportToImportType(this.ImportType.ActualType, exports[0]);
- }
-
- private object CastSingleExportToImportType(Type type, Export export)
- {
- if (this.ImportType.CastExport != null)
- {
- return this.ImportType.CastExport(export);
- }
-
- return Cast(type, export);
- }
-
- private object Cast(Type type, Export export)
- {
- // TODO: Need to catch CompositionException to provide
- // additional information about what member we're setting
- // and the current dependency graph.
- object value = export.Value;
-
- object result;
- if (!ContractServices.TryCast(type, value, out result))
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportNotAssignableFromExport,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportNotAssignableFromExport,
- export.ToElement().DisplayName,
- type.FullName),
- this.Definition.ToElement());
- }
-
- return result;
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingMember.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingMember.cs
deleted file mode 100644
index 723131f..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingMember.cs
+++ /dev/null
@@ -1,253 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ImportingMember : ImportingItem
- {
- private readonly ReflectionWritableMember _member;
-
- public ImportingMember(ContractBasedImportDefinition definition, ReflectionWritableMember member, ImportType importType)
- : base(definition, importType)
- {
- Assumes.NotNull(definition, member);
-
- this._member = member;
- }
-
- public void SetExportedValue(object instance, object value)
- {
- if (RequiresCollectionNormalization())
- {
- this.SetCollectionMemberValue(instance, (IEnumerable)value);
- }
- else
- {
- this.SetSingleMemberValue(instance, value);
- }
- }
-
- private bool RequiresCollectionNormalization()
- {
- if (this.Definition.Cardinality != ImportCardinality.ZeroOrMore)
- { // If we're not looking at a collection import, then don't
- // 'normalize' the collection.
-
- return false;
- }
-
- if (this._member.CanWrite && this.ImportType.IsAssignableCollectionType)
- { // If we can simply replace the entire value of the property/field, then
- // we don't need to 'normalize' the collection.
-
- return false;
- }
-
- return true;
- }
-
- private void SetSingleMemberValue(object instance, object value)
- {
- EnsureWritable();
-
- try
- {
- this._member.SetValue(instance, value);
- }
- catch (TargetInvocationException exception)
- { // Member threw an exception. Avoid letting this
- // leak out as a 'raw' unhandled exception, instead,
- // we'll add some context and rethrow.
-
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportThrewException,
- this._member.GetDisplayName()),
- Definition.ToElement(),
- exception.InnerException);
- }
- }
-
- private void EnsureWritable()
- {
- if (!this._member.CanWrite)
- { // Property does not have a setter, or
- // field is marked as read-only.
-
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportNotWritable,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportNotWritable,
- this._member.GetDisplayName()),
- Definition.ToElement());
- }
- }
-
- private void SetCollectionMemberValue(object instance, IEnumerable values)
- {
- Assumes.NotNull(values);
-
- ICollection<object> collection = null;
- Type itemType = CollectionServices.GetCollectionElementType(this.ImportType.ActualType);
- if (itemType != null)
- {
- collection = GetNormalizedCollection(itemType, instance);
- }
-
- EnsureCollectionIsWritable(collection);
- PopulateCollection(collection, values);
- }
-
- private ICollection<object> GetNormalizedCollection(Type itemType, object instance)
- {
- Assumes.NotNull(itemType);
-
- object collectionObject = null;
-
- if (this._member.CanRead)
- {
- try
- {
- collectionObject = this._member.GetValue(instance);
- }
- catch (TargetInvocationException exception)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportCollectionGetThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportCollectionGetThrewException,
- this._member.GetDisplayName()),
- this.Definition.ToElement(),
- exception.InnerException);
- }
- }
-
- if (collectionObject == null)
- {
- ConstructorInfo constructor = this.ImportType.ActualType.GetConstructor(Type.EmptyTypes);
-
- // If it contains a default public constructor create a new instance.
- if (constructor != null)
- {
- try
- {
- collectionObject = constructor.SafeInvoke();
- }
- catch (TargetInvocationException exception)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportCollectionConstructionThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportCollectionConstructionThrewException,
- this._member.GetDisplayName(),
- this.ImportType.ActualType.FullName),
- this.Definition.ToElement(),
- exception.InnerException);
- }
-
- SetSingleMemberValue(instance, collectionObject);
- }
- }
-
- if (collectionObject == null)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportCollectionNull,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportCollectionNull,
- this._member.GetDisplayName()),
- this.Definition.ToElement());
- }
-
- return CollectionServices.GetCollectionWrapper(itemType, collectionObject);
- }
-
- [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
- private void EnsureCollectionIsWritable(ICollection<object> collection)
- {
- bool isReadOnly = true;
-
- try
- {
- if (collection != null)
- {
- isReadOnly = collection.IsReadOnly;
- }
- }
- catch (Exception exception)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportCollectionIsReadOnlyThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportCollectionIsReadOnlyThrewException,
- this._member.GetDisplayName(),
- collection.GetType().FullName),
- this.Definition.ToElement(),
- exception);
- }
-
- if (isReadOnly)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportCollectionNotWritable,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportCollectionNotWritable,
- this._member.GetDisplayName()),
- this.Definition.ToElement());
- }
- }
-
- [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
- private void PopulateCollection(ICollection<object> collection, IEnumerable values)
- {
- Assumes.NotNull(collection, values);
-
- try
- {
- collection.Clear();
- }
- catch (Exception exception)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportCollectionClearThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportCollectionClearThrewException,
- this._member.GetDisplayName(),
- collection.GetType().FullName),
- this.Definition.ToElement(),
- exception);
- }
-
- foreach (object value in values)
- {
- try
- {
- collection.Add(value);
- }
- catch (Exception exception)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportCollectionAddThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportCollectionAddThrewException,
- this._member.GetDisplayName(),
- collection.GetType().FullName),
- this.Definition.ToElement(),
- exception);
- }
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingParameter.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingParameter.cs
deleted file mode 100644
index 0b1d15f..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingParameter.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ImportingParameter : ImportingItem
- {
- public ImportingParameter(ContractBasedImportDefinition definition, ImportType importType)
- : base(definition, importType)
- {
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/LazyMemberInfo.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/LazyMemberInfo.cs
deleted file mode 100644
index f59e3c6..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/LazyMemberInfo.cs
+++ /dev/null
@@ -1,207 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using System.Threading;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- public struct LazyMemberInfo
- {
- private readonly MemberTypes _memberType;
- private MemberInfo[] _accessors;
- private readonly Func<MemberInfo[]> _accessorsCreator;
-
- public LazyMemberInfo(MemberInfo member)
- {
- Requires.NotNull(member, "member");
- EnsureSupportedMemberType(member.MemberType, "member");
-
- this._accessorsCreator = null;
- this._memberType = member.MemberType;
-
- switch(this._memberType)
- {
- case MemberTypes.Property:
- PropertyInfo property = (PropertyInfo)member;
- Assumes.NotNull(property);
- this._accessors = new MemberInfo[] { property.GetGetMethod(true), property.GetSetMethod(true) };
- break;
- case MemberTypes.Event:
- EventInfo event_ = (EventInfo)member;
- this._accessors = new MemberInfo[] { event_.GetRaiseMethod(true), event_.GetAddMethod(true), event_.GetRemoveMethod(true) };
- break;
- default:
- this._accessors = new MemberInfo[] { member };
- break;
- }
- }
-
- public LazyMemberInfo(MemberTypes memberType, params MemberInfo[] accessors)
- {
- EnsureSupportedMemberType(memberType, "memberType");
- Requires.NotNull(accessors, "accessors");
-
- string errorMessage;
- if (!LazyMemberInfo.AreAccessorsValid(memberType, accessors, out errorMessage))
- {
- throw new ArgumentException(errorMessage, "accessors");
- }
-
- this._memberType = memberType;
- this._accessors = accessors;
- this._accessorsCreator = null;
- }
-
- public LazyMemberInfo(MemberTypes memberType, Func<MemberInfo[]> accessorsCreator)
- {
- EnsureSupportedMemberType(memberType, "memberType");
- Requires.NotNull(accessorsCreator, "accessorsCreator");
-
- this._memberType = memberType;
- this._accessors = null;
- this._accessorsCreator = accessorsCreator;
- }
-
- public MemberTypes MemberType
- {
- get { return this._memberType; }
- }
-
- public MemberInfo[] GetAccessors()
- {
- if ((this._accessors == null) && (this._accessorsCreator != null))
- {
- MemberInfo[] accessors = this._accessorsCreator.Invoke();
-
- string errorMessage;
- if (!LazyMemberInfo.AreAccessorsValid(this.MemberType, accessors, out errorMessage))
- {
- throw new InvalidOperationException(errorMessage);
- }
-
- this._accessors = accessors;
- }
-
- return this._accessors;
- }
-
- public override int GetHashCode()
- {
- if (this._accessorsCreator != null)
- {
- return this.MemberType.GetHashCode() ^ this._accessorsCreator.GetHashCode();
- }
- else
- {
- Assumes.NotNull(this._accessors);
- Assumes.NotNull(this._accessors[0]);
- return this.MemberType.GetHashCode() ^ this._accessors[0].GetHashCode();
- }
- }
-
- public override bool Equals(object obj)
- {
- LazyMemberInfo that = (LazyMemberInfo)obj;
-
- // Difefrent member types mean different members
- if (this._memberType != that._memberType)
- {
- return false;
- }
-
- // if any of the lazy memebers create accessors in a delay-loaded fashion, we simply compare the creators
- if ((this._accessorsCreator != null) || (that._accessorsCreator != null))
- {
- return object.Equals(this._accessorsCreator, that._accessorsCreator);
- }
-
- // we are dealing with explicitly passed accessors in both cases
- Assumes.NotNull(this._accessors);
- Assumes.NotNull(that._accessors);
- return this._accessors.SequenceEqual(that._accessors);
- }
-
- public static bool operator ==(LazyMemberInfo left, LazyMemberInfo right)
- {
- return left.Equals(right);
- }
-
- public static bool operator !=(LazyMemberInfo left, LazyMemberInfo right)
- {
- return !left.Equals(right);
- }
-
- private static void EnsureSupportedMemberType(MemberTypes memberType, string argument)
- {
- MemberTypes supportedTypes = MemberTypes.TypeInfo | MemberTypes.NestedType | MemberTypes.Constructor | MemberTypes.Field | MemberTypes.Method | MemberTypes.Property | MemberTypes.Event;
- Requires.IsInMembertypeSet(memberType, argument, supportedTypes);
- }
-
- private static bool AreAccessorsValid(MemberTypes memberType, MemberInfo[] accessors, out string errorMessage)
- {
- errorMessage = string.Empty;
- if (accessors == null)
- {
- errorMessage = Strings.LazyMemberInfo_AccessorsNull;
- return false;
- }
-
- if (accessors.All(accessor => accessor == null))
- {
- errorMessage = Strings.LazyMemberInfo_NoAccessors;
- return false;
- }
-
- switch (memberType)
- {
- case MemberTypes.Property:
- if (accessors.Length != 2)
- {
- errorMessage = Strings.LazyMemberInfo_InvalidPropertyAccessors_Cardinality;
- return false;
- }
-
- if (accessors.Where(accessor => (accessor != null) && (accessor.MemberType != MemberTypes.Method)).Any())
- {
- errorMessage = Strings.LazyMemberinfo_InvalidPropertyAccessors_AccessorType;
- return false;
- }
-
- break;
-
- case MemberTypes.Event:
- if (accessors.Length != 3)
- {
- errorMessage = Strings.LazyMemberInfo_InvalidEventAccessors_Cardinality;
- return false;
- }
-
- if (accessors.Where(accessor => (accessor != null) && (accessor.MemberType != MemberTypes.Method)).Any())
- {
- errorMessage = Strings.LazyMemberinfo_InvalidPropertyAccessors_AccessorType;
- return false;
- }
-
- break;
-
- default:
- if (
- (accessors.Length != 1) ||
- ((accessors.Length == 1) && (accessors[0].MemberType != memberType)))
- {
- errorMessage = string.Format(CultureInfo.CurrentCulture, Strings.LazyMemberInfo_InvalidAccessorOnSimpleMember, memberType);
- return false;
- }
-
- break;
- }
- return true;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorExportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorExportDefinition.cs
deleted file mode 100644
index 517dd59..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorExportDefinition.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class PartCreatorExportDefinition : ExportDefinition
- {
- private readonly ExportDefinition _productDefinition;
- private IDictionary<string, object> _metadata;
-
- public PartCreatorExportDefinition(ExportDefinition productDefinition)
- : base()
- {
- this._productDefinition = productDefinition;
- }
-
- public override string ContractName
- {
- get
- {
- return CompositionConstants.PartCreatorContractName;
- }
- }
-
- public override IDictionary<string, object> Metadata
- {
- get
- {
- if (this._metadata == null)
- {
- var metadata = new Dictionary<string, object>(this._productDefinition.Metadata);
- metadata[CompositionConstants.ExportTypeIdentityMetadataName] = CompositionConstants.PartCreatorTypeIdentity;
- metadata[CompositionConstants.ProductDefinitionMetadataName] = this._productDefinition;
-
- this._metadata = metadata.AsReadOnly();
- }
- return this._metadata;
- }
- }
-
- internal static bool IsProductConstraintSatisfiedBy(ImportDefinition productImportDefinition, ExportDefinition exportDefinition)
- {
- object productValue = null;
- if (exportDefinition.Metadata.TryGetValue(CompositionConstants.ProductDefinitionMetadataName, out productValue))
- {
- ExportDefinition productDefinition = productValue as ExportDefinition;
-
- if (productDefinition != null)
- {
- return productImportDefinition.IsConstraintSatisfiedBy(productDefinition);
- }
- }
-
- return false;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorMemberImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorMemberImportDefinition.cs
deleted file mode 100644
index 0aa6480..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorMemberImportDefinition.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Linq.Expressions;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class PartCreatorMemberImportDefinition : ReflectionMemberImportDefinition, IPartCreatorImportDefinition
- {
- private readonly ContractBasedImportDefinition _productImportDefinition;
-
- public PartCreatorMemberImportDefinition(
- LazyMemberInfo importingLazyMember,
- ICompositionElement origin,
- ContractBasedImportDefinition productImportDefinition)
- : base(importingLazyMember, CompositionConstants.PartCreatorContractName, CompositionConstants.PartCreatorTypeIdentity,
- productImportDefinition.RequiredMetadata, productImportDefinition.Cardinality, productImportDefinition.IsRecomposable, CreationPolicy.Any, origin)
- {
- Assumes.NotNull(productImportDefinition);
- this._productImportDefinition = productImportDefinition;
- }
-
- public ContractBasedImportDefinition ProductImportDefinition { get { return this._productImportDefinition; } }
-
- public override bool IsConstraintSatisfiedBy(ExportDefinition exportDefinition)
- {
- if (!base.IsConstraintSatisfiedBy(exportDefinition))
- {
- return false;
- }
-
- return PartCreatorExportDefinition.IsProductConstraintSatisfiedBy(this._productImportDefinition, exportDefinition);
- }
-
- public override Expression<Func<ExportDefinition, bool>> Constraint
- {
- get
- {
- return ConstraintServices.CreatePartCreatorConstraint(base.Constraint, this._productImportDefinition);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorParameterImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorParameterImportDefinition.cs
deleted file mode 100644
index d12e4bd..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorParameterImportDefinition.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Linq.Expressions;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class PartCreatorParameterImportDefinition : ReflectionParameterImportDefinition, IPartCreatorImportDefinition
- {
- private readonly ContractBasedImportDefinition _productImportDefinition;
-
- public PartCreatorParameterImportDefinition(
- Lazy<ParameterInfo> importingLazyParameter,
- ICompositionElement origin,
- ContractBasedImportDefinition productImportDefinition)
- : base(importingLazyParameter, CompositionConstants.PartCreatorContractName, CompositionConstants.PartCreatorTypeIdentity,
- productImportDefinition.RequiredMetadata, productImportDefinition.Cardinality, CreationPolicy.Any, origin)
- {
- Assumes.NotNull(productImportDefinition);
- this._productImportDefinition = productImportDefinition;
- }
-
- public ContractBasedImportDefinition ProductImportDefinition { get { return this._productImportDefinition; } }
-
- public override bool IsConstraintSatisfiedBy(ExportDefinition exportDefinition)
- {
- if (!base.IsConstraintSatisfiedBy(exportDefinition))
- {
- return false;
- }
- return PartCreatorExportDefinition.IsProductConstraintSatisfiedBy(this._productImportDefinition, exportDefinition);
- }
-
- public override Expression<Func<ExportDefinition, bool>> Constraint
- {
- get
- {
- return ConstraintServices.CreatePartCreatorConstraint(base.Constraint, this._productImportDefinition);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePart.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePart.cs
deleted file mode 100644
index c4b15de..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePart.cs
+++ /dev/null
@@ -1,565 +0,0 @@
-
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- // This
- internal class ReflectionComposablePart : ComposablePart, ICompositionElement
- {
- private readonly ReflectionComposablePartDefinition _definition;
- private readonly Dictionary<ImportDefinition, object> _importValues = new Dictionary<ImportDefinition, object>();
- private readonly Dictionary<ImportDefinition, ImportingItem> _importsCache = new Dictionary<ImportDefinition, ImportingItem>();
- private readonly Dictionary<ExportDefinition, ExportingMember> _exportsCache = new Dictionary<ExportDefinition, ExportingMember>();
- private bool _invokeImportsSatisfied = true;
- private bool _invokingImportsSatisfied = false;
- private bool _initialCompositionComplete = false;
- private volatile object _cachedInstance;
- private object _lock = new object();
-
- public ReflectionComposablePart(ReflectionComposablePartDefinition definition)
- {
- Requires.NotNull(definition, "definition");
-
- this._definition = definition;
- }
-
- public ReflectionComposablePart(ReflectionComposablePartDefinition definition, object attributedPart)
- {
- Requires.NotNull(definition, "definition");
- Requires.NotNull(attributedPart, "attributedPart");
-
- this._definition = definition;
-
- if (attributedPart is ValueType)
- {
- throw new ArgumentException(Strings.ArgumentValueType, "attributedPart");
- }
- this._cachedInstance = attributedPart;
- }
-
- protected virtual void EnsureRunning()
- {
- }
-
- protected virtual void ReleaseInstanceIfNecessary(object instance)
- {
- }
-
- protected object CachedInstance
- {
- get
- {
- lock (this._lock)
- {
- return this._cachedInstance;
- }
- }
- }
-
- public ReflectionComposablePartDefinition Definition
- {
- get
- {
- this.EnsureRunning();
- return this._definition;
- }
- }
-
- public override IDictionary<string, object> Metadata
- {
- get
- {
- this.EnsureRunning();
- return this.Definition.Metadata;
- }
- }
-
- public sealed override IEnumerable<ImportDefinition> ImportDefinitions
- {
- get
- {
- this.EnsureRunning();
- return this.Definition.ImportDefinitions;
- }
- }
-
- public sealed override IEnumerable<ExportDefinition> ExportDefinitions
- {
- get
- {
- this.EnsureRunning();
- return this.Definition.ExportDefinitions;
- }
- }
-
-
- string ICompositionElement.DisplayName
- {
- get { return GetDisplayName(); }
- }
-
- ICompositionElement ICompositionElement.Origin
- {
- get { return Definition; }
- }
-
- // This is the ONLY method which is not executed under the ImportEngine composition lock.
- // We need to protect all state that is accesses
- public override object GetExportedValue(ExportDefinition definition)
- {
- // given the implementation of the ImportEngine, this iwll be called under a lock if the part is still being composed
- // This is only called outside of the lock when the part is fully composed
- // based on that we only protect:
- // _exportsCache - and thus all calls to GetExportingMemberFromDefinition
- // access to _importValues
- // access to _initialCompositionComplete
- // access to _instance
- this.EnsureRunning();
- Requires.NotNull(definition, "definition");
-
- ExportingMember member = null;
- lock (this._lock)
- {
- member = GetExportingMemberFromDefinition(definition);
- if (member == null)
- {
- throw ExceptionBuilder.CreateExportDefinitionNotOnThisComposablePart("definition");
- }
- this.EnsureGettable();
- }
-
- return this.GetExportedValue(member);
- }
-
- public override void SetImport(ImportDefinition definition, IEnumerable<Export> exports)
- {
- this.EnsureRunning();
-
- Requires.NotNull(definition, "definition");
- Requires.NotNull(exports, "exports");
-
- ImportingItem item = GetImportingItemFromDefinition(definition);
- if (item == null)
- {
- throw ExceptionBuilder.CreateImportDefinitionNotOnThisComposablePart("definition");
- }
-
- EnsureSettable(definition);
-
- // Avoid walking over exports many times
- Export[] exportsAsArray = exports.AsArray();
- EnsureCardinality(definition, exportsAsArray);
-
- SetImport(item, exportsAsArray);
- }
-
- public override void Activate()
- {
- this.EnsureRunning();
-
- this.SetNonPrerequisiteImports();
-
- // Whenever we are composed/recomposed notify the instance
- this.NotifyImportSatisfied();
-
- lock (this._lock)
- {
- this._initialCompositionComplete = true;
- }
- }
-
- public override string ToString()
- {
- return this.GetDisplayName();
- }
-
- private object GetExportedValue(ExportingMember member)
- {
- object instance = null;
- if (member.RequiresInstance)
- { // Only activate the instance if we actually need to
-
- instance = this.GetInstanceActivatingIfNeeded();
- }
-
- return member.GetExportedValue(instance, this._lock);
- }
-
- private void SetImport(ImportingItem item, Export[] exports)
- {
- object value = item.CastExportsToImportType(exports);
-
- lock (this._lock)
- {
- this._invokeImportsSatisfied = true;
- this._importValues[item.Definition] = value;
- }
- }
-
- private object GetInstanceActivatingIfNeeded()
- {
- if (this._cachedInstance != null)
- {
- return this._cachedInstance;
- }
- else
- {
- ConstructorInfo constructor = null;
- object[] arguments = null;
- // determine whether activation is required, and collect necessary information for activation
- // we need to do that under a lock
- lock (this._lock)
- {
- if (!this.RequiresActivation())
- {
- return null;
- }
-
- constructor = this.Definition.GetConstructor();
- if (constructor == null)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_PartConstructorMissing,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_PartConstructorMissing,
- this.Definition.GetPartType().FullName),
- this.Definition.ToElement());
- }
- arguments = this.GetConstructorArguments();
- }
-
- // create instance outside of the lock
- object createdInstance = this.CreateInstance(constructor, arguments);
-
- // set the created instance
- lock (this._lock)
- {
- if (this._cachedInstance == null)
- {
- this._cachedInstance = createdInstance;
- createdInstance = null;
- }
- }
-
- // if the instance has been already set
- if (createdInstance == null)
- {
- this.ReleaseInstanceIfNecessary(createdInstance);
- }
- }
-
- return this._cachedInstance;
- }
-
- private object[] GetConstructorArguments()
- {
- ReflectionParameterImportDefinition[] parameterImports = this.ImportDefinitions.OfType<ReflectionParameterImportDefinition>().ToArray();
- object[] arguments = new object[parameterImports.Length];
-
- this.UseImportedValues(
- parameterImports,
- (import, definition, value) =>
- {
- if (definition.Cardinality == ImportCardinality.ZeroOrMore && !import.ImportType.IsAssignableCollectionType)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportManyOnParameterCanOnlyBeAssigned,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportManyOnParameterCanOnlyBeAssigned,
- this.Definition.GetPartType().FullName,
- definition.ImportingLazyParameter.Value.Name),
- this.Definition.ToElement());
- }
-
- arguments[definition.ImportingLazyParameter.Value.Position] = value;
- },
- true);
-
- return arguments;
- }
-
- // alwayc called under a lock
- private bool RequiresActivation()
- {
- // If we have any imports then we need activation
- // (static imports are not supported)
- if (this.ImportDefinitions.Any())
- {
- return true;
- }
-
- // If we have any instance exports, then we also
- // need activation.
- return this.ExportDefinitions.Any(definition =>
- {
- ExportingMember member = GetExportingMemberFromDefinition(definition);
-
- return member.RequiresInstance;
- });
- }
-
- // this is called under a lock
- private void EnsureGettable()
- {
- // If we're already composed then we know that
- // all pre-req imports have been satisfied
- if (_initialCompositionComplete)
- {
- return;
- }
-
- // Make sure all pre-req imports have been set
- foreach (ImportDefinition definition in ImportDefinitions.Where(definition => definition.IsPrerequisite))
- {
- if (!this._importValues.ContainsKey(definition))
- {
- throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture,
- Strings.InvalidOperation_GetExportedValueBeforePrereqImportSet,
- definition.ToElement().DisplayName));
- }
- }
- }
-
- private void EnsureSettable(ImportDefinition definition)
- {
- lock (this._lock)
- {
- if (this._initialCompositionComplete && !definition.IsRecomposable)
- {
- throw new InvalidOperationException(Strings.InvalidOperation_DefinitionCannotBeRecomposed);
- }
- }
- }
-
- private static void EnsureCardinality(ImportDefinition definition, Export[] exports)
- {
- Requires.NullOrNotNullElements(exports, "exports");
-
- ExportCardinalityCheckResult result = ExportServices.CheckCardinality(definition, exports);
-
- switch (result)
- {
- case ExportCardinalityCheckResult.NoExports:
- throw new ArgumentException(Strings.Argument_ExportsEmpty, "exports");
-
- case ExportCardinalityCheckResult.TooManyExports:
- throw new ArgumentException(Strings.Argument_ExportsTooMany, "exports");
-
- default:
- Assumes.IsTrue(result == ExportCardinalityCheckResult.Match);
- break;
- }
- }
-
- private object CreateInstance(ConstructorInfo constructor, object[] arguments)
- {
- Exception exception = null;
- object instance = null;
-
- try
- {
- instance = constructor.SafeInvoke(arguments);
- }
- catch (TypeInitializationException ex)
- {
- exception = ex;
- }
- catch (TargetInvocationException ex)
- {
- exception = ex.InnerException;
- }
-
- if (exception != null)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_PartConstructorThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_PartConstructorThrewException,
- Definition.GetPartType().FullName),
- Definition.ToElement(),
- exception);
- }
-
- return instance;
- }
-
- private void SetNonPrerequisiteImports()
- {
- IEnumerable<ImportDefinition> members = this.ImportDefinitions.Where(import => !import.IsPrerequisite);
-
- // NOTE: Dev10 484204 The validation is turned off for post imports because of it broke declarative composition
- this.UseImportedValues(members, SetExportedValueForImport, false);
- }
-
- private void SetExportedValueForImport(ImportingItem import, ImportDefinition definition, object value)
- {
- ImportingMember importMember = (ImportingMember)import;
-
- object instance = this.GetInstanceActivatingIfNeeded();
-
- importMember.SetExportedValue(instance, value);
- }
-
- private void UseImportedValues<TImportDefinition>(IEnumerable<TImportDefinition> definitions, Action<ImportingItem, TImportDefinition, object> useImportValue, bool errorIfMissing)
- where TImportDefinition : ImportDefinition
- {
- var result = CompositionResult.SucceededResult;
-
- foreach (var definition in definitions)
- {
- ImportingItem import = GetImportingItemFromDefinition(definition);
-
- object value;
- if (!TryGetImportValue(definition, out value))
- {
- if (!errorIfMissing)
- {
- continue;
- }
-
- if (definition.Cardinality == ImportCardinality.ExactlyOne)
- {
- var error = CompositionError.Create(
- CompositionErrorId.ImportNotSetOnPart,
- Strings.ImportNotSetOnPart,
- this.Definition.GetPartType().FullName,
- definition.ToString());
- result = result.MergeError(error);
- continue;
- }
- else
- {
- value = import.CastExportsToImportType(new Export[0]);
- }
- }
-
- useImportValue(import, definition, value);
- }
-
- result.ThrowOnErrors();
- }
-
- private bool TryGetImportValue(ImportDefinition definition, out object value)
- {
- lock (this._lock)
- {
- if (this._importValues.TryGetValue(definition, out value))
- {
- this._importValues.Remove(definition);
- return true;
- }
- }
-
- value = null;
- return false;
- }
-
- [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
- private void NotifyImportSatisfied()
- {
- if (this._invokeImportsSatisfied && !this._invokingImportsSatisfied)
- {
- IPartImportsSatisfiedNotification notify = this.GetInstanceActivatingIfNeeded() as IPartImportsSatisfiedNotification;
- if (notify != null)
- {
- try
- {
- // Reentrancy on composition notifications is allowed, so set this first to avoid
- // an infinte loop of notifications.
- this._invokingImportsSatisfied = true;
-
- notify.OnImportsSatisfied();
- }
- catch (Exception exception)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_PartOnImportsSatisfiedThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_PartOnImportsSatisfiedThrewException,
- Definition.GetPartType().FullName),
- Definition.ToElement(),
- exception);
- }
- finally
- {
- this._invokingImportsSatisfied = false;
- }
-
- this._invokeImportsSatisfied = false;
- }
- }
- }
-
- // this is always called under a lock
- private ExportingMember GetExportingMemberFromDefinition(ExportDefinition definition)
- {
- ExportingMember result;
- if (!_exportsCache.TryGetValue(definition, out result))
- {
- result = GetExportingMember(definition);
- if (result != null)
- {
- _exportsCache[definition] = result;
- }
- }
-
- return result;
- }
-
- private ImportingItem GetImportingItemFromDefinition(ImportDefinition definition)
- {
- ImportingItem result;
- if (!_importsCache.TryGetValue(definition, out result))
- {
- result = GetImportingItem(definition);
- if (result != null)
- {
- _importsCache[definition] = result;
- }
- }
-
- return result;
- }
-
- private static ImportingItem GetImportingItem(ImportDefinition definition)
- {
- ReflectionImportDefinition reflectionDefinition = definition as ReflectionImportDefinition;
- if (reflectionDefinition != null)
- {
- return reflectionDefinition.ToImportingItem();
- }
-
- // Don't recognize it
- return null;
- }
-
- private static ExportingMember GetExportingMember(ExportDefinition definition)
- {
- ReflectionMemberExportDefinition exportDefinition = definition as ReflectionMemberExportDefinition;
- if (exportDefinition != null)
- {
- return exportDefinition.ToExportingMember();
- }
-
- // Don't recognize it
- return null;
- }
-
- private string GetDisplayName()
- {
- return this.Definition.GetPartType().GetDisplayName();
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePartDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePartDefinition.cs
deleted file mode 100644
index a8e3c83..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePartDefinition.cs
+++ /dev/null
@@ -1,151 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using System.Reflection;
-using System.Threading;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ReflectionComposablePartDefinition : ComposablePartDefinition, ICompositionElement
- {
- private readonly IReflectionPartCreationInfo _creationInfo;
-
- private volatile IEnumerable<ImportDefinition> _imports;
- private volatile IEnumerable<ExportDefinition> _exports;
- private volatile IDictionary<string, object> _metadata;
- private volatile ConstructorInfo _constructor;
- private object _lock = new object();
-
- public ReflectionComposablePartDefinition(IReflectionPartCreationInfo creationInfo)
- {
- Assumes.NotNull(creationInfo);
- this._creationInfo = creationInfo;
- }
-
- public Type GetPartType()
- {
- return this._creationInfo.GetPartType();
- }
-
- public Lazy<Type> GetLazyPartType()
- {
- return this._creationInfo.GetLazyPartType();
- }
-
- public ConstructorInfo GetConstructor()
- {
- if (this._constructor == null)
- {
- ConstructorInfo constructor = this._creationInfo.GetConstructor();
- lock (this._lock)
- {
- if (this._constructor == null)
- {
- this._constructor = constructor;
- }
- }
- }
-
- return this._constructor;
- }
-
- public override IEnumerable<ExportDefinition> ExportDefinitions
- {
- get
- {
- if (this._exports == null)
- {
- ExportDefinition[] exports = this._creationInfo.GetExports().ToArray();
- lock (this._lock)
- {
- if (this._exports == null)
- {
- this._exports = exports;
- }
- }
- }
- return this._exports;
- }
- }
-
- public override IEnumerable<ImportDefinition> ImportDefinitions
- {
- get
- {
- if (this._imports == null)
- {
- ImportDefinition[] imports = this._creationInfo.GetImports().ToArray();
- lock (this._lock)
- {
- if (this._imports == null)
- {
- this._imports = imports;
- }
- }
- }
- return this._imports;
- }
- }
-
- public override IDictionary<string, object> Metadata
- {
- get
- {
- if (this._metadata == null)
- {
- IDictionary<string, object> metadata = this._creationInfo.GetMetadata().AsReadOnly();
- lock (this._lock)
- {
- if (this._metadata == null)
- {
- this._metadata = metadata;
- }
- }
- }
- return this._metadata;
- }
- }
-
- internal bool IsDisposalRequired
- {
- get
- {
- return this._creationInfo.IsDisposalRequired;
- }
- }
-
- [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
- public override ComposablePart CreatePart()
- {
- if (this.IsDisposalRequired)
- {
- return new DisposableReflectionComposablePart(this);
- }
- else
- {
- return new ReflectionComposablePart(this);
- }
- }
-
- string ICompositionElement.DisplayName
- {
- get { return this._creationInfo.DisplayName; }
- }
-
- ICompositionElement ICompositionElement.Origin
- {
- get { return this._creationInfo.Origin; }
- }
-
- public override string ToString()
- {
- return this._creationInfo.DisplayName;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionExtensions.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionExtensions.cs
deleted file mode 100644
index b04edbc..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionExtensions.cs
+++ /dev/null
@@ -1,134 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-using System.Collections.Generic;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal static class ReflectionExtensions
- {
- public static ReflectionMember ToReflectionMember(this LazyMemberInfo lazyMember)
- {
- MemberInfo[] accessors = lazyMember.GetAccessors();
- MemberTypes memberType = lazyMember.MemberType;
-
- switch (memberType)
- {
- case MemberTypes.Field:
- Assumes.IsTrue(accessors.Length == 1);
- return ((FieldInfo)accessors[0]).ToReflectionField();
-
- case MemberTypes.Property:
- Assumes.IsTrue(accessors.Length == 2);
- return ReflectionExtensions.CreateReflectionProperty((MethodInfo)accessors[0], (MethodInfo)accessors[1]);
-
- case MemberTypes.NestedType:
- case MemberTypes.TypeInfo:
- return ((Type)accessors[0]).ToReflectionType();
-
- default:
- Assumes.IsTrue(memberType == MemberTypes.Method);
- return ((MethodInfo)accessors[0]).ToReflectionMethod();
- }
- }
-
- public static LazyMemberInfo ToLazyMember(this ReflectionMember reflectionMember)
- {
- Assumes.NotNull(reflectionMember);
-
- if (reflectionMember.ItemType == ReflectionItemType.Property)
- {
- ReflectionProperty reflectionProperty = reflectionMember as ReflectionProperty;
- Assumes.NotNull(reflectionProperty);
-
- MemberInfo[] accessors = new MemberInfo[] { reflectionProperty.UnderlyingGetMethod, reflectionProperty.UnderlyingSetMethod };
- return new LazyMemberInfo(MemberTypes.Property, accessors);
- }
- else
- {
- return new LazyMemberInfo(reflectionMember.UnderlyingMember.MemberType, reflectionMember.UnderlyingMember);
- }
- }
-
- public static LazyMemberInfo ToLazyMember(this MemberInfo member)
- {
- Assumes.NotNull(member);
-
- if (member.MemberType == MemberTypes.Property)
- {
- PropertyInfo property = member as PropertyInfo;
- Assumes.NotNull(property);
-
- MemberInfo[] accessors = new MemberInfo[] { property.GetGetMethod(true), property.GetSetMethod(true)};
- return new LazyMemberInfo(MemberTypes.Property, accessors);
- }
- else
- {
- return new LazyMemberInfo(member);
- }
- }
-
- public static ReflectionWritableMember ToReflectionWriteableMember(this LazyMemberInfo lazyMember)
- {
- Assumes.IsTrue((lazyMember.MemberType == MemberTypes.Field) || (lazyMember.MemberType == MemberTypes.Property));
-
- ReflectionWritableMember reflectionMember = lazyMember.ToReflectionMember() as ReflectionWritableMember;
- Assumes.NotNull(reflectionMember);
-
- return reflectionMember;
- }
-
-
- public static ReflectionProperty ToReflectionProperty(this PropertyInfo property)
- {
- Assumes.NotNull(property);
- return CreateReflectionProperty(property.GetGetMethod(true), property.GetSetMethod(true));
- }
-
- public static ReflectionProperty CreateReflectionProperty(MethodInfo getMethod, MethodInfo setMethod)
- {
- Assumes.IsTrue(getMethod != null || setMethod != null);
-
- return new ReflectionProperty(getMethod, setMethod);
- }
-
- public static ReflectionParameter ToReflectionParameter(this ParameterInfo parameter)
- {
- Assumes.NotNull(parameter);
- return new ReflectionParameter(parameter);
- }
-
- public static ReflectionMethod ToReflectionMethod(this MethodInfo method)
- {
- Assumes.NotNull(method);
- return new ReflectionMethod(method);
- }
-
- public static ReflectionField ToReflectionField(this FieldInfo field)
- {
- Assumes.NotNull(field);
- return new ReflectionField(field);
- }
-
- public static ReflectionType ToReflectionType(this Type type)
- {
- Assumes.NotNull(type);
- return new ReflectionType(type);
- }
-
- public static ReflectionWritableMember ToReflectionWritableMember(this MemberInfo member)
- {
- Assumes.NotNull(member);
- if (member.MemberType == MemberTypes.Property)
- {
- return ((PropertyInfo)member).ToReflectionProperty();
- }
-
- return ((FieldInfo)member).ToReflectionField();
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionField.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionField.cs
deleted file mode 100644
index 1cac368..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionField.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ReflectionField : ReflectionWritableMember
- {
- private readonly FieldInfo _field;
-
- public ReflectionField(FieldInfo field)
- {
- Assumes.NotNull(field);
-
- this._field = field;
- }
-
- public FieldInfo UndelyingField
- {
- get { return this._field; }
- }
-
- public override MemberInfo UnderlyingMember
- {
- get { return this.UndelyingField; }
- }
-
- public override bool CanRead
- {
- get { return true; }
- }
-
- public override bool CanWrite
- {
- get { return !this.UndelyingField.IsInitOnly; }
- }
-
- public override bool RequiresInstance
- {
- get { return !this.UndelyingField.IsStatic; }
- }
-
- public override Type ReturnType
- {
- get { return this.UndelyingField.FieldType; }
- }
-
- public override ReflectionItemType ItemType
- {
- get { return ReflectionItemType.Field; }
- }
-
- public override object GetValue(object instance)
- {
- return this.UndelyingField.SafeGetValue(instance);
- }
-
- public override void SetValue(object instance, object value)
- {
- this.UndelyingField.SafeSetValue(instance, value);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionImportDefinition.cs
deleted file mode 100644
index 0ab5ca4..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionImportDefinition.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal abstract class ReflectionImportDefinition : ContractBasedImportDefinition, ICompositionElement
- {
- private readonly ICompositionElement _origin;
-
- public ReflectionImportDefinition(
- string contractName,
- string requiredTypeIdentity,
- IEnumerable<KeyValuePair<string, Type>> requiredMetadata,
- ImportCardinality cardinality,
- bool isRecomposable,
- bool isPrerequisite,
- CreationPolicy requiredCreationPolicy,
- ICompositionElement origin)
- : base(contractName, requiredTypeIdentity, requiredMetadata, cardinality, isRecomposable, isPrerequisite, requiredCreationPolicy)
- {
- this._origin = origin;
- }
-
- string ICompositionElement.DisplayName
- {
- get { return this.GetDisplayName(); }
- }
-
- ICompositionElement ICompositionElement.Origin
- {
- get { return this._origin; }
- }
-
- public override string ToString()
- {
- return this.GetDisplayName();
- }
-
- public abstract ImportingItem ToImportingItem();
-
- protected abstract string GetDisplayName();
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionItem.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionItem.cs
deleted file mode 100644
index 3d649af..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionItem.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Reflection;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal abstract class ReflectionItem
- {
- public abstract string Name { get; }
- public abstract string GetDisplayName();
- public abstract Type ReturnType { get; }
- public abstract ReflectionItemType ItemType { get; }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionItemType.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionItemType.cs
deleted file mode 100644
index 2e7eaf4..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionItemType.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal enum ReflectionItemType : int
- {
- Parameter = 0,
- Field = 1,
- Property = 2,
- Method = 3,
- Type = 4,
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMember.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMember.cs
deleted file mode 100644
index c34abc5..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMember.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal abstract class ReflectionMember : ReflectionItem
- {
- public abstract bool CanRead
- {
- get;
- }
-
- public Type DeclaringType
- {
- get { return this.UnderlyingMember.DeclaringType; }
- }
-
- public override string Name
- {
- get { return this.UnderlyingMember.Name; }
- }
-
- public override string GetDisplayName()
- {
- return this.UnderlyingMember.GetDisplayName();
- }
-
- public abstract bool RequiresInstance
- {
- get;
- }
-
- public abstract MemberInfo UnderlyingMember { get; }
-
- public abstract object GetValue(object instance);
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberExportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberExportDefinition.cs
deleted file mode 100644
index 5f94b86..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberExportDefinition.cs
+++ /dev/null
@@ -1,89 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ReflectionMemberExportDefinition : ExportDefinition, ICompositionElement
- {
- private readonly LazyMemberInfo _member;
- private readonly ExportDefinition _exportDefinition;
- private readonly ICompositionElement _origin;
- private IDictionary<string, object> _metadata;
-
- public ReflectionMemberExportDefinition(LazyMemberInfo member, ExportDefinition exportDefinition, ICompositionElement origin)
- {
- Assumes.NotNull(exportDefinition);
-
- this._member = member;
- this._exportDefinition = exportDefinition;
- this._origin = origin;
- }
-
- public override string ContractName
- {
- get { return this._exportDefinition.ContractName; }
- }
-
- public LazyMemberInfo ExportingLazyMember
- {
- get { return this._member; }
- }
-
- public override IDictionary<string, object> Metadata
- {
- get
- {
- if (this._metadata == null)
- {
- var metadata = this._exportDefinition.Metadata ?? MetadataServices.EmptyMetadata;
- this._metadata = metadata.AsReadOnly();
- }
- return this._metadata;
- }
- }
-
- string ICompositionElement.DisplayName
- {
- get { return this.GetDisplayName(); }
- }
-
- ICompositionElement ICompositionElement.Origin
- {
- get { return this._origin; }
- }
-
- public override string ToString()
- {
- return this.GetDisplayName();
- }
-
- public ExportingMember ToExportingMember()
- {
- return new ExportingMember(this, this.ToReflectionMember());
- }
-
- private ReflectionMember ToReflectionMember()
- {
- return this.ExportingLazyMember.ToReflectionMember();
- }
-
- private string GetDisplayName()
- {
- return string.Format(CultureInfo.CurrentCulture,
- "{0} (ContractName=\"{1}\")", // NOLOC
- this.ToReflectionMember().GetDisplayName(),
- this.ContractName);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberImportDefinition.cs
deleted file mode 100644
index 6a0558f..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberImportDefinition.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ReflectionMemberImportDefinition : ReflectionImportDefinition
- {
- private LazyMemberInfo _importingLazyMember;
-
- public ReflectionMemberImportDefinition(
- LazyMemberInfo importingLazyMember,
- string contractName,
- string requiredTypeIdentity,
- IEnumerable<KeyValuePair<string, Type>> requiredMetadata,
- ImportCardinality cardinality,
- bool isRecomposable,
- CreationPolicy requiredCreationPolicy,
- ICompositionElement origin)
- : base(contractName, requiredTypeIdentity, requiredMetadata, cardinality, isRecomposable, false, requiredCreationPolicy, origin)
- {
- Assumes.NotNull(contractName);
-
- this._importingLazyMember = importingLazyMember;
- }
-
- public override ImportingItem ToImportingItem()
- {
- ReflectionWritableMember member = this.ImportingLazyMember.ToReflectionWriteableMember();
- return new ImportingMember(this, member, new ImportType(member.ReturnType, this.Cardinality));
- }
-
- public LazyMemberInfo ImportingLazyMember
- {
- get { return this._importingLazyMember; }
- }
-
- protected override string GetDisplayName()
- {
- return string.Format(
- CultureInfo.CurrentCulture,
- "{0} (ContractName=\"{1}\")", // NOLOC
- this.ImportingLazyMember.ToReflectionMember().GetDisplayName(),
- this.ContractName);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMethod.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMethod.cs
deleted file mode 100644
index a4893bc..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMethod.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal partial class ReflectionMethod : ReflectionMember
- {
- private readonly MethodInfo _method;
-
- public ReflectionMethod(MethodInfo method)
- {
- Assumes.NotNull(method);
-
- this._method = method;
- }
-
- public MethodInfo UnderlyingMethod
- {
- get { return this._method; }
- }
-
- public override MemberInfo UnderlyingMember
- {
- get { return this.UnderlyingMethod; }
- }
-
- public override bool CanRead
- {
- get { return true; }
- }
-
- public override bool RequiresInstance
- {
- get { return !this.UnderlyingMethod.IsStatic; }
- }
-
- public override Type ReturnType
- {
- get { return this.UnderlyingMethod.ReturnType; }
- }
-
- public override ReflectionItemType ItemType
- {
- get { return ReflectionItemType.Method; }
- }
-
- public override object GetValue(object instance)
- {
- return SafeCreateExportedDelegate(instance, _method);
- }
-#if !SILVERLIGHT
- [System.Security.SecuritySafeCritical]
-#endif
- private static ExportedDelegate SafeCreateExportedDelegate(object instance, MethodInfo method)
- {
- // We demand member access in place of the [SecurityCritical]
- // attribute on ExportDelegate constructor
- ReflectionInvoke.DemandMemberAccessIfNeeded(method);
-
- return new ExportedDelegate(instance, method);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionModelServices.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionModelServices.cs
deleted file mode 100644
index 61657e8..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionModelServices.cs
+++ /dev/null
@@ -1,444 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
-#if !SILVERLIGHT
- [System.Security.SecurityCritical]
-#endif
- public static class ReflectionModelServices
- {
- public static Lazy<Type> GetPartType(ComposablePartDefinition partDefinition)
- {
- Requires.NotNull(partDefinition, "partDefinition");
-
- ReflectionComposablePartDefinition reflectionPartDefinition = partDefinition as ReflectionComposablePartDefinition;
- if (reflectionPartDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidPartDefinition, partDefinition.GetType()),
- "partDefinition");
- }
-
- return reflectionPartDefinition.GetLazyPartType();
- }
-
- public static bool IsDisposalRequired(ComposablePartDefinition partDefinition)
- {
- Requires.NotNull(partDefinition, "partDefinition");
-
- ReflectionComposablePartDefinition reflectionPartDefinition = partDefinition as ReflectionComposablePartDefinition;
- if (reflectionPartDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidPartDefinition, partDefinition.GetType()),
- "partDefinition");
- }
-
- return reflectionPartDefinition.IsDisposalRequired;
- }
-
- public static LazyMemberInfo GetExportingMember(ExportDefinition exportDefinition)
- {
- Requires.NotNull(exportDefinition, "exportDefinition");
-
- ReflectionMemberExportDefinition reflectionExportDefinition = exportDefinition as ReflectionMemberExportDefinition;
- if (reflectionExportDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidExportDefinition, exportDefinition.GetType()),
- "exportDefinition");
- }
-
- return reflectionExportDefinition.ExportingLazyMember;
- }
-
- public static LazyMemberInfo GetImportingMember(ImportDefinition importDefinition)
- {
- Requires.NotNull(importDefinition, "importDefinition");
-
- ReflectionMemberImportDefinition reflectionMemberImportDefinition = importDefinition as ReflectionMemberImportDefinition;
- if (reflectionMemberImportDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidMemberImportDefinition, importDefinition.GetType()),
- "importDefinition");
- }
-
- return reflectionMemberImportDefinition.ImportingLazyMember;
- }
-
- public static Lazy<ParameterInfo> GetImportingParameter(ImportDefinition importDefinition)
- {
- Requires.NotNull(importDefinition, "importDefinition");
-
- ReflectionParameterImportDefinition reflectionParameterImportDefinition = importDefinition as ReflectionParameterImportDefinition;
- if (reflectionParameterImportDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidParameterImportDefinition, importDefinition.GetType()),
- "importDefinition");
- }
-
- return reflectionParameterImportDefinition.ImportingLazyParameter;
- }
-
- public static bool IsImportingParameter(ImportDefinition importDefinition)
- {
- Requires.NotNull(importDefinition, "importDefinition");
-
- ReflectionImportDefinition reflectionImportDefinition = importDefinition as ReflectionImportDefinition;
- if (reflectionImportDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidImportDefinition, importDefinition.GetType()),
- "importDefinition");
- }
-
- return (importDefinition is ReflectionParameterImportDefinition);
- }
-
- internal static bool IsExportFactoryImportDefinition(ImportDefinition importDefinition)
- {
- Requires.NotNull(importDefinition, "importDefinition");
-
- ReflectionImportDefinition reflectionImportDefinition = importDefinition as ReflectionImportDefinition;
- if (reflectionImportDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidImportDefinition, importDefinition.GetType()),
- "importDefinition");
- }
-
- return (importDefinition is IPartCreatorImportDefinition);
- }
-
- internal static ContractBasedImportDefinition GetPartCreatorProductImportDefinition(ImportDefinition importDefinition)
- {
- Requires.NotNull(importDefinition, "importDefinition");
-
- IPartCreatorImportDefinition partCreatorImportDefinition = importDefinition as IPartCreatorImportDefinition;
- if (partCreatorImportDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidImportDefinition, importDefinition.GetType()),
- "importDefinition");
- }
-
- return partCreatorImportDefinition.ProductImportDefinition;
- }
-
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public static ComposablePartDefinition CreatePartDefinition(
- Lazy<Type> partType,
- bool isDisposalRequired,
- Lazy<IEnumerable<ImportDefinition>> imports,
- Lazy<IEnumerable<ExportDefinition>> exports,
- Lazy<IDictionary<string, object>> metadata,
- ICompositionElement origin)
- {
- Requires.NotNull(partType, "partType");
-
- return new ReflectionComposablePartDefinition(
- new ReflectionPartCreationInfo(
- partType,
- isDisposalRequired,
- imports,
- exports,
- metadata,
- origin));
- }
-
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public static ExportDefinition CreateExportDefinition(
- LazyMemberInfo exportingMember,
- string contractName,
- Lazy<IDictionary<string, object>> metadata,
- ICompositionElement origin)
- {
- Requires.NotNullOrEmpty(contractName, "contractName");
- Requires.IsInMembertypeSet(exportingMember.MemberType, "exportingMember", MemberTypes.Field | MemberTypes.Property | MemberTypes.NestedType | MemberTypes.TypeInfo | MemberTypes.Method);
-
- return new ReflectionMemberExportDefinition(
- exportingMember,
- new LazyExportDefinition(contractName, metadata),
- origin);
- }
-
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public static ContractBasedImportDefinition CreateImportDefinition(
- LazyMemberInfo importingMember,
- string contractName,
- string requiredTypeIdentity,
- IEnumerable<KeyValuePair<string, Type>> requiredMetadata,
- ImportCardinality cardinality,
- bool isRecomposable,
- CreationPolicy requiredCreationPolicy,
- ICompositionElement origin)
- {
- return CreateImportDefinition(importingMember, contractName, requiredTypeIdentity, requiredMetadata, cardinality, isRecomposable, requiredCreationPolicy, false, origin);
- }
-
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- internal static ContractBasedImportDefinition CreateImportDefinition(
- LazyMemberInfo importingMember,
- string contractName,
- string requiredTypeIdentity,
- IEnumerable<KeyValuePair<string, Type>> requiredMetadata,
- ImportCardinality cardinality,
- bool isRecomposable,
- CreationPolicy requiredCreationPolicy,
- bool isExportFactory,
- ICompositionElement origin)
- {
- Requires.NotNullOrEmpty(contractName, "contractName");
- Requires.IsInMembertypeSet(importingMember.MemberType, "importingMember", MemberTypes.Property | MemberTypes.Field);
-
- if (isExportFactory)
- {
- return new PartCreatorMemberImportDefinition(
- importingMember,
- origin,
- new ContractBasedImportDefinition(
- contractName,
- requiredTypeIdentity,
- requiredMetadata,
- cardinality,
- isRecomposable,
- false,
- CreationPolicy.NonShared));
- }
- else
- {
- return new ReflectionMemberImportDefinition(
- importingMember,
- contractName,
- requiredTypeIdentity,
- requiredMetadata,
- cardinality,
- isRecomposable,
- requiredCreationPolicy,
- origin);
- }
- }
-
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public static ContractBasedImportDefinition CreateImportDefinition(
- Lazy<ParameterInfo> parameter,
- string contractName,
- string requiredTypeIdentity,
- IEnumerable<KeyValuePair<string, Type>> requiredMetadata,
- ImportCardinality cardinality,
- CreationPolicy requiredCreationPolicy,
- ICompositionElement origin)
- {
- return CreateImportDefinition(parameter, contractName, requiredTypeIdentity, requiredMetadata, cardinality, requiredCreationPolicy, false, origin);
- }
-
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- internal static ContractBasedImportDefinition CreateImportDefinition(
- Lazy<ParameterInfo> parameter,
- string contractName,
- string requiredTypeIdentity,
- IEnumerable<KeyValuePair<string, Type>> requiredMetadata,
- ImportCardinality cardinality,
- CreationPolicy requiredCreationPolicy,
- bool isExportFactory,
- ICompositionElement origin)
- {
- Requires.NotNull(parameter, "parameter");
- Requires.NotNullOrEmpty(contractName, "contractName");
-
- if (isExportFactory)
- {
- return new PartCreatorParameterImportDefinition(
- parameter,
- origin,
- new ContractBasedImportDefinition(
- contractName,
- requiredTypeIdentity,
- requiredMetadata,
- cardinality,
- false,
- true,
- CreationPolicy.NonShared));
- }
- else
- {
- return new ReflectionParameterImportDefinition(
- parameter,
- contractName,
- requiredTypeIdentity,
- requiredMetadata,
- cardinality,
- requiredCreationPolicy,
- origin);
- }
- }
- }
- internal class ReflectionPartCreationInfo : IReflectionPartCreationInfo
- {
- private readonly Lazy<Type> _partType;
- private readonly Lazy<IEnumerable<ImportDefinition>> _imports;
- private readonly Lazy<IEnumerable<ExportDefinition>> _exports;
- private readonly Lazy<IDictionary<string, object>> _metadata;
- private readonly ICompositionElement _origin;
- private ConstructorInfo _constructor;
- private bool _isDisposalRequired;
-
- public ReflectionPartCreationInfo(
- Lazy<Type> partType,
- bool isDisposalRequired,
- Lazy<IEnumerable<ImportDefinition>> imports,
- Lazy<IEnumerable<ExportDefinition>> exports,
- Lazy<IDictionary<string, object>> metadata,
- ICompositionElement origin)
- {
- Assumes.NotNull(partType);
-
- this._partType = partType;
- this._isDisposalRequired = isDisposalRequired;
- this._imports = imports;
- this._exports = exports;
- this._metadata = metadata;
- this._origin = origin;
- }
-
- public Type GetPartType()
- {
- return this._partType.GetNotNullValue("type");
- }
-
- public Lazy<Type> GetLazyPartType()
- {
- return this._partType;
- }
-
- public ConstructorInfo GetConstructor()
- {
- if (this._constructor == null)
- {
- ConstructorInfo[] constructors = null;
- constructors = this.GetImports()
- .OfType<ReflectionParameterImportDefinition>()
- .Select(parameterImport => parameterImport.ImportingLazyParameter.Value.Member)
- .OfType<ConstructorInfo>()
- .Distinct()
- .ToArray();
-
- if (constructors.Length == 1)
- {
- this._constructor = constructors[0];
- }
- else if (constructors.Length == 0)
- {
- this._constructor = this.GetPartType().GetConstructor(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null);
- }
- }
- return this._constructor;
- }
-
- public bool IsDisposalRequired
- {
- get
- {
- return this._isDisposalRequired;
- }
- }
-
- public IDictionary<string, object> GetMetadata()
- {
- return (this._metadata != null) ? this._metadata.Value : null;
- }
-
- public IEnumerable<ExportDefinition> GetExports()
- {
- if (this._exports == null)
- {
- yield break;
- }
-
- IEnumerable<ExportDefinition> exports = this._exports.Value;
-
- if (exports == null)
- {
- yield break;
- }
-
- foreach (ExportDefinition export in exports)
- {
- ReflectionMemberExportDefinition reflectionExport = export as ReflectionMemberExportDefinition;
- if (reflectionExport == null)
- {
- throw new InvalidOperationException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidExportDefinition, export.GetType()));
- }
- yield return reflectionExport;
- }
- }
-
- public IEnumerable<ImportDefinition> GetImports()
- {
- if (this._imports == null)
- {
- yield break;
- }
-
- IEnumerable<ImportDefinition> imports = this._imports.Value;
-
- if (imports == null)
- {
- yield break;
- }
-
- foreach (ImportDefinition import in imports)
- {
- ReflectionImportDefinition reflectionImport = import as ReflectionImportDefinition;
- if (reflectionImport == null)
- {
- throw new InvalidOperationException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidMemberImportDefinition, import.GetType()));
- }
- yield return reflectionImport;
- }
- }
-
- public string DisplayName
- {
- get { return this.GetPartType().GetDisplayName(); }
- }
-
- public ICompositionElement Origin
- {
- get { return this._origin; }
- }
- }
-
- internal class LazyExportDefinition : ExportDefinition
- {
- private readonly Lazy<IDictionary<string, object>> _metadata;
-
- public LazyExportDefinition(string contractName, Lazy<IDictionary<string, object>> metadata)
- : base(contractName, (IDictionary<string, object>)null)
- {
- this._metadata = metadata;
- }
-
- public override IDictionary<string, object> Metadata
- {
- get
- {
- return this._metadata.Value;
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionParameter.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionParameter.cs
deleted file mode 100644
index 0d5fbf3..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionParameter.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ReflectionParameter : ReflectionItem
- {
- private readonly ParameterInfo _parameter;
-
- public ReflectionParameter(ParameterInfo parameter)
- {
- Assumes.NotNull(parameter);
-
- this._parameter = parameter;
- }
-
- public ParameterInfo UnderlyingParameter
- {
- get { return this._parameter; }
- }
-
- public override string Name
- {
- get { return this.UnderlyingParameter.Name; }
- }
-
- public override string GetDisplayName()
- {
- return string.Format(
- CultureInfo.CurrentCulture,
- "{0} (Parameter=\"{1}\")", // NOLOC
- this.UnderlyingParameter.Member.GetDisplayName(),
- this.UnderlyingParameter.Name);
- }
-
- public override Type ReturnType
- {
- get { return this.UnderlyingParameter.ParameterType; }
- }
-
- public override ReflectionItemType ItemType
- {
- get { return ReflectionItemType.Parameter; }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionParameterImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionParameterImportDefinition.cs
deleted file mode 100644
index 42eadff..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionParameterImportDefinition.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ReflectionParameterImportDefinition : ReflectionImportDefinition
- {
- private Lazy<ParameterInfo> _importingLazyParameter;
-
- public ReflectionParameterImportDefinition(
- Lazy<ParameterInfo> importingLazyParameter,
- string contractName,
- string requiredTypeIdentity,
- IEnumerable<KeyValuePair<string,Type>> requiredMetadata,
- ImportCardinality cardinality,
- CreationPolicy requiredCreationPolicy,
- ICompositionElement origin)
- : base(contractName, requiredTypeIdentity, requiredMetadata, cardinality, false, true, requiredCreationPolicy, origin)
- {
- Assumes.NotNull(importingLazyParameter);
-
- this._importingLazyParameter = importingLazyParameter;
- }
-
- public override ImportingItem ToImportingItem()
- {
- return new ImportingParameter(this, new ImportType(this.ImportingLazyParameter.GetNotNullValue("parameter").ParameterType, this.Cardinality));
- }
-
- public Lazy<ParameterInfo> ImportingLazyParameter
- {
- get { return this._importingLazyParameter; }
- }
-
- protected override string GetDisplayName()
- {
- ParameterInfo parameter = this.ImportingLazyParameter.GetNotNullValue("parameter");
- return string.Format(
- CultureInfo.CurrentCulture,
- "{0} (Parameter=\"{1}\", ContractName=\"{2}\")", // NOLOC
- parameter.Member.GetDisplayName(),
- parameter.Name,
- this.ContractName);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionProperty.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionProperty.cs
deleted file mode 100644
index 6daa34b..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionProperty.cs
+++ /dev/null
@@ -1,124 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- // Instead of representing properties as an actual PropertyInfo, we need to
- // represent them as two MethodInfo objects one for each accessor. This is so
- // that cached attribute part can go from a metadata token -> XXXInfo without
- // needing to walk all members of a particular type. Unfortunately, (probably
- // because you never see one of them in an IL stream), Reflection does not allow
- // you to go from a metadata token -> PropertyInfo like it does with types,
- // fields, and methods.
-
- internal class ReflectionProperty : ReflectionWritableMember
- {
- private readonly MethodInfo _getMethod;
- private readonly MethodInfo _setMethod;
-
- public ReflectionProperty(MethodInfo getMethod, MethodInfo setMethod)
- {
- Assumes.IsTrue(getMethod != null || setMethod != null);
-
- this._getMethod = getMethod;
- this._setMethod = setMethod;
- }
-
- public override MemberInfo UnderlyingMember
- {
- get { return this.UnderlyingGetMethod ?? this.UnderlyingSetMethod; }
- }
-
- public override bool CanRead
- {
- get { return this.UnderlyingGetMethod != null; }
- }
-
- public override bool CanWrite
- {
- get { return this.UnderlyingSetMethod != null; }
- }
-
- public MethodInfo UnderlyingGetMethod
- {
- get { return this._getMethod; }
- }
-
- public MethodInfo UnderlyingSetMethod
- {
- get { return this._setMethod; }
- }
-
- public override string Name
- {
- get
- {
- MethodInfo method = this.UnderlyingGetMethod ?? this.UnderlyingSetMethod;
-
- string name = method.Name;
-
- Assumes.IsTrue(name.Length > 4);
-
- // Remove 'get_' or 'set_'
- return name.Substring(4);
- }
- }
-
- public override string GetDisplayName()
- {
- return ReflectionServices.GetDisplayName(this.DeclaringType, this.Name);
- }
-
- public override bool RequiresInstance
- {
- get
- {
- MethodInfo method = this.UnderlyingGetMethod ?? this.UnderlyingSetMethod;
-
- return !method.IsStatic;
- }
- }
-
- public override Type ReturnType
- {
- get
- {
- if (this.UnderlyingGetMethod != null)
- {
- return this.UnderlyingGetMethod.ReturnType;
- }
-
- ParameterInfo[] parameters = this.UnderlyingSetMethod.GetParameters();
-
- Assumes.IsTrue(parameters.Length > 0);
-
- return parameters[parameters.Length - 1].ParameterType;
- }
- }
-
- public override ReflectionItemType ItemType
- {
- get { return ReflectionItemType.Property; }
- }
-
- public override object GetValue(object instance)
- {
- Assumes.NotNull(this._getMethod);
-
- return this.UnderlyingGetMethod.SafeInvoke(instance);
- }
-
- public override void SetValue(object instance, object value)
- {
- Assumes.NotNull(this._setMethod);
-
- this.UnderlyingSetMethod.SafeInvoke(instance, value);
- }
-
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionType.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionType.cs
deleted file mode 100644
index 047333a..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionType.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.AttributedModel;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ReflectionType : ReflectionMember
- {
- private Type _type;
-
- public ReflectionType(Type type)
- {
- Assumes.NotNull(type);
-
- this._type = type;
- }
-
- public override MemberInfo UnderlyingMember
- {
- get { return this._type; }
- }
-
- public Type UnderlyingType
- {
- get { return this._type; }
- }
-
- public override bool CanRead
- {
- get { return true; }
- }
-
- public override bool RequiresInstance
- {
- get { return true; }
- }
-
- public override Type ReturnType
- {
- get { return this._type; }
- }
-
- public override ReflectionItemType ItemType
- {
- get { return ReflectionItemType.Type; }
- }
-
- public override object GetValue(object instance)
- {
- return instance;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionWritableMember.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionWritableMember.cs
deleted file mode 100644
index b8cf56d..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionWritableMember.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal abstract class ReflectionWritableMember : ReflectionMember
- {
- public abstract bool CanWrite
- {
- get;
- }
-
- public abstract void SetValue(object instance, object value);
- }
-}
diff --git a/System.ComponentModel.Composition/System/Lazy.cs b/System.ComponentModel.Composition/System/Lazy.cs
deleted file mode 100644
index 369e7d1..0000000
--- a/System.ComponentModel.Composition/System/Lazy.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if !CLR40
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using Microsoft.Internal;
-
-namespace System
-{
- public class Lazy<T>
- {
- private T _value = default(T);
- private volatile bool _isValueCreated = false;
- private Func<T> _valueFactory = null;
- private object _lock;
-
- public Lazy()
- : this(() => Activator.CreateInstance<T>())
- {
- }
-
- public Lazy(bool isThreadSafe)
- : this(() => Activator.CreateInstance<T>(), isThreadSafe)
- {
- }
-
- public Lazy(Func<T> valueFactory):
- this(valueFactory, true)
- {
- }
-
- public Lazy(Func<T> valueFactory, bool isThreadSafe)
- {
- Requires.NotNull(valueFactory, "valueFactory");
- if(isThreadSafe)
- {
- this._lock = new object();
- }
-
- this._valueFactory = valueFactory;
- }
-
-
- public T Value
- {
- get
- {
- if (!this._isValueCreated)
- {
- if(this._lock != null)
- {
- Monitor.Enter(this._lock);
- }
-
- try
- {
- T value = this._valueFactory.Invoke();
- this._valueFactory = null;
- Thread.MemoryBarrier();
- this._value = value;
- this._isValueCreated = true;
- }
- finally
- {
- if(this._lock != null)
- {
- Monitor.Exit(this._lock);
- }
- }
- }
- return this._value;
- }
- }
- }
-}
-#endif
diff --git a/System.ComponentModel.Composition/System/LazyOfTTMetadata.cs b/System.ComponentModel.Composition/System/LazyOfTTMetadata.cs
deleted file mode 100644
index 24221c6..0000000
--- a/System.ComponentModel.Composition/System/LazyOfTTMetadata.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace System
-{
-#if CLR40 && !SILVERLIGHT
- [Serializable]
-#endif
- public class Lazy<T, TMetadata> : Lazy<T>
- {
- private TMetadata _metadata;
-
- public Lazy(Func<T> valueFactory, TMetadata metadata) :
- base(valueFactory)
- {
- this._metadata = metadata;
- }
-
- public Lazy(TMetadata metadata) :
- base()
- {
- this._metadata = metadata;
- }
-
-
- public Lazy(TMetadata metadata, bool isThreadSafe) :
- base(isThreadSafe)
- {
- this._metadata = metadata;
- }
-
- public Lazy(Func<T> valueFactory, TMetadata metadata, bool isThreadSafe) :
- base(valueFactory, isThreadSafe)
- {
- this._metadata = metadata;
- }
-
- public TMetadata Metadata
- {
- get
- {
- return this._metadata;
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/Tuple.cs b/System.ComponentModel.Composition/System/Tuple.cs
deleted file mode 100644
index 1ce2dea..0000000
--- a/System.ComponentModel.Composition/System/Tuple.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if !CLR40
-using System;
-
-namespace System
-{
- // This is a very minimalistic implementation of Tuple'2 that allows us
- // to compile and work on versions of .Net eariler then 4.0.
- public struct Tuple<TItem1, TItem2>
- {
- public Tuple(TItem1 item1, TItem2 item2)
- {
- this = new Tuple<TItem1, TItem2>();
- this.Item1 = item1;
- this.Item2 = item2;
- }
-
- public TItem1 Item1 { get; private set; }
- public TItem2 Item2 { get; private set; }
-
- public override bool Equals(object obj)
- {
- if (obj is Tuple<TItem1, TItem2>)
- {
- Tuple<TItem1, TItem2> that = (Tuple<TItem1, TItem2>)obj;
- return object.Equals(this.Item1, that.Item1) && object.Equals(this.Item2, that.Item2);
- }
- else
- {
- return false;
- }
- }
-
- public override int GetHashCode()
- {
- return ((this.Item1 != null) ? this.Item1.GetHashCode() : 0) ^ ((this.Item2 != null) ? this.Item2.GetHashCode() : 0);
- }
-
- public static bool operator ==(Tuple<TItem1, TItem2> left, Tuple<TItem1, TItem2> right)
- {
- return left.Equals(right);
- }
-
- public static bool operator !=(Tuple<TItem1, TItem2> left, Tuple<TItem1, TItem2> right)
- {
- return !left.Equals(right);
- }
- }
-}
-#endif
\ No newline at end of file
diff --git a/Wix/Bitmaps/Pinta.ico b/Wix/Bitmaps/Pinta.ico
deleted file mode 100644
index 5f67cf8..0000000
Binary files a/Wix/Bitmaps/Pinta.ico and /dev/null differ
diff --git a/Wix/Bitmaps/bannrbmp.bmp b/Wix/Bitmaps/bannrbmp.bmp
deleted file mode 100644
index 1085be5..0000000
Binary files a/Wix/Bitmaps/bannrbmp.bmp and /dev/null differ
diff --git a/Wix/Bitmaps/dlgbmp.bmp b/Wix/Bitmaps/dlgbmp.bmp
deleted file mode 100644
index 782a944..0000000
Binary files a/Wix/Bitmaps/dlgbmp.bmp and /dev/null differ
diff --git a/Wix/PintaWix.sln b/Wix/PintaWix.sln
deleted file mode 100644
index 46000f9..0000000
--- a/Wix/PintaWix.sln
+++ /dev/null
@@ -1,19 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PintaWix", "PintaWix.wixproj", "{8AF6F472-BEF2-4092-BD0F-A3017B2F5304}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|x86 = Debug|x86
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {8AF6F472-BEF2-4092-BD0F-A3017B2F5304}.Debug|x86.ActiveCfg = Debug|x86
- {8AF6F472-BEF2-4092-BD0F-A3017B2F5304}.Debug|x86.Build.0 = Debug|x86
- {8AF6F472-BEF2-4092-BD0F-A3017B2F5304}.Release|x86.ActiveCfg = Release|x86
- {8AF6F472-BEF2-4092-BD0F-A3017B2F5304}.Release|x86.Build.0 = Release|x86
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/Wix/PintaWix.wixproj b/Wix/PintaWix.wixproj
deleted file mode 100644
index e5aeeff..0000000
--- a/Wix/PintaWix.wixproj
+++ /dev/null
@@ -1,52 +0,0 @@
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
- <PropertyGroup>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
- <ProductVersion>3.0</ProductVersion>
- <ProjectGuid>{8af6f472-bef2-4092-bd0f-a3017b2f5304}</ProjectGuid>
- <SchemaVersion>2.0</SchemaVersion>
- <OutputName>Pinta</OutputName>
- <OutputType>Package</OutputType>
- <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
- <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
- <Name>PintaWix</Name>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
- <OutputPath>bin\$(Configuration)\</OutputPath>
- <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
- <DefineConstants>Debug</DefineConstants>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
- <OutputPath>bin\$(Configuration)\</OutputPath>
- <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
- </PropertyGroup>
- <ItemGroup>
- <Compile Include="Product.wxs" />
- </ItemGroup>
- <ItemGroup>
- <Folder Include="Bitmaps" />
- </ItemGroup>
- <ItemGroup>
- <Content Include="Bitmaps\bannrbmp.bmp" />
- <Content Include="Bitmaps\dlgbmp.bmp" />
- <Content Include="Bitmaps\Pinta.ico" />
- <Content Include="license.rtf" />
- </ItemGroup>
- <ItemGroup>
- <WixExtension Include="WixUIExtension">
- <HintPath>$(WixExtDir)\WixUIExtension.dll</HintPath>
- </WixExtension>
- <WixExtension Include="WixNetFxExtension">
- <HintPath>$(WixExtDir)\WixNetFxExtension.dll</HintPath>
- </WixExtension>
- </ItemGroup>
- <Import Project="$(WixTargetsPath)" />
- <!--
- To modify your build process, add your task inside one of the targets below and uncomment it.
- Other similar extension points exist, see Wix.targets.
- <Target Name="BeforeBuild">
- </Target>
- <Target Name="AfterBuild">
- </Target>
- -->
-</Project>
\ No newline at end of file
diff --git a/Wix/Product.wxs b/Wix/Product.wxs
deleted file mode 100644
index 0da18e0..0000000
--- a/Wix/Product.wxs
+++ /dev/null
@@ -1,437 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?define ProductShortName = "Pinta" ?>
-<?define ProductVersion = "0.6.0" ?>
-<?define ProductVersionText = "0.6" ?>
-<?define Manufacturer = "Pinta Community" ?>
-<?define UpgradeCode = "C0BCDEDA-62E7-4A43-8435-58323E096912" ?>
-
-<?define BuildRoot= "..\bin" ?>
-
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
- <Product Id="*" Name="$(var.ProductShortName) $(var.ProductVersionText)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
- <Package InstallerVersion="200" Compressed="yes" />
- <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
-
- <!-- Ensure GTK# 2.12.9+ is installed -->
- <Property Id="GTKSHARPVERSION">
- <RegistrySearch Id="gsversion" Root="HKLM" Key="SOFTWARE\Novell\GtkSharp\Version" Type="raw" />
- </Property>
- <Condition Message="Gtk# version 2.12.9 or greater must be installed.">
- <![CDATA[GTKSHARPVERSION >= "2.12.9" OR (GTKSHARPVERSION << "2.12.1" AND GTKSHARPVERSION <> "2.12.1") OR REMOVE ~= "ALL"]]>
- </Condition>
-
- <!-- Ensure .Net 3.5 is installed -->
- <PropertyRef Id="NETFRAMEWORK35" />
- <Condition Message="This setup requires the .NET Framework 3.5 to be installed.">
- Installed OR NETFRAMEWORK35
- </Condition>
-
- <!-- Get the GTK# install directory -->
- <Property Id="GTKSHARPPATH">
- <RegistrySearch Id="gspath" Root="HKLM" Key="SOFTWARE\Novell\GtkSharp\InstallFolder" Type="raw" />
- </Property>
-
- <!-- Major upgrade -->
- <Upgrade Id="$(var.UpgradeCode)">
- <UpgradeVersion Minimum="$(var.ProductVersion)" OnlyDetect="yes" Property="NEWERVERSIONDETECTED" />
- <UpgradeVersion Minimum="0.0.0" Maximum="$(var.ProductVersion)" IncludeMinimum="yes" IncludeMaximum="no" Property="OLDERVERSIONBEINGUPGRADED" />
- </Upgrade>
-
- <Directory Id="TARGETDIR" Name="SourceDir">
- <Directory Id="ProgramFilesFolder">
- <Directory Id="INSTALLLOCATION" Name="Pinta">
- <Component Id="ProductComponent" Guid="7D5ABDF1-2CCE-4A74-8AFE-A06237D783AB">
- <!-- Executable with Start Menu Icon -->
- <File Name="Pinta.exe" Source="$(var.BuildRoot)\Pinta.exe">
- <Shortcut Id="pinta_shortcut" Directory="ProgramMenuDir" Name="$(var.ProductShortName)" Icon="Pinta.exe" IconIndex="0" Advertise="yes" />
- </File>
-
- <!-- Additional Assemblies -->
- <File Name="Pinta.Core.dll" Source="$(var.BuildRoot)\Pinta.Core.dll" />
- <File Name="Pinta.Gui.Widgets.dll" Source="$(var.BuildRoot)\Pinta.Gui.Widgets.dll" />
- <File Name="Pinta.Resources.dll" Source="$(var.BuildRoot)\Pinta.Resources.dll" />
- <File Name="ICSharpCode.SharpZipLib.dll" Source="$(var.BuildRoot)\ICSharpCode.SharpZipLib.dll" />
- <File Name="System.ComponentModel.Composition.dll" Source="$(var.BuildRoot)\System.ComponentModel.Composition.dll" />
-
- <!-- Debug Symbols -->
- <File Name="Pinta.pdb" Source="$(var.BuildRoot)\Pinta.pdb" />
- <File Name="Pinta.Core.pdb" Source="$(var.BuildRoot)\Pinta.Core.pdb" />
- <File Name="Pinta.Gui.Widgets.pdb" Source="$(var.BuildRoot)\Pinta.Gui.Widgets.pdb" />
- <File Name="Pinta.Resources.pdb" Source="$(var.BuildRoot)\Pinta.Resources.pdb" />
- <File Name="System.ComponentModel.Composition.pdb" Source="$(var.BuildRoot)\System.ComponentModel.Composition.pdb" />
-
- <!-- Program Menu Shortcut -->
- <RemoveFolder Id='ProgramMenuDir' Directory="ProgramMenuDir" On='uninstall' />
- </Component>
-
- <!-- Extensions-->
- <Directory Id="Extensions" Name="Extensions">
- <Component Id="ExtensionsComp" Guid="A6C05439-FCFF-4155-8A99-65AE373B77A0">
- <File Name="Pinta.Tools.dll" Source="$(var.BuildRoot)\Extensions\Pinta.Tools.dll" />
- <File Name="Pinta.Effects.dll" Source="$(var.BuildRoot)\Extensions\Pinta.Effects.dll" />
- <File Name="Pinta.Tools.pdb" Source="$(var.BuildRoot)\Extensions\Pinta.Tools.pdb" />
- <File Name="Pinta.Effects.pdb" Source="$(var.BuildRoot)\Extensions\Pinta.Effects.pdb" />
- </Component>
- </Directory>
-
- <!--
- <Directory Id="locale" Name="locale">
- <Directory Id="ar" Name="ar">
- <Directory Id="LC_MESSAGES_AR" Name='LC_MESSAGES'>
- <Component Id="ArTranslation" Guid="42CCCE42-11DD-4C9E-AFE7-4037F32F971D">
- <File Id="pinta_ar" Name="pinta.mo" Source="$(var.BuildRoot)\locale\ar\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="br" Name="br">
- <Directory Id="LC_MESSAGES_BR" Name='LC_MESSAGES'>
- <Component Id="BrTranslation" Guid="196B021E-309C-4A2E-94DA-AA17512A709B">
- <File Id="pinta_br" Name="pinta.mo" Source="$(var.BuildRoot)\locale\br\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="ca" Name='ca'>
- <Directory Id="LC_MESSAGES_CA" Name='LC_MESSAGES'>
- <Component Id="CaTranslation" Guid="0FF46F28-0348-48D9-9321-168077CAF1AE">
- <File Id="pinta_ca" Name="pinta.mo" Source="$(var.BuildRoot)\locale\ca\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="cs" Name='cs'>
- <Directory Id="LC_MESSAGES_CS" Name='LC_MESSAGES'>
- <Component Id="CsTranslation" Guid="E34F5B21-175F-4403-8FA7-A4A626F0A6D4">
- <File Id="pinta_cs" Name="pinta.mo" Source="$(var.BuildRoot)\locale\cs\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="da" Name='da'>
- <Directory Id="LC_MESSAGES_DA" Name='LC_MESSAGES'>
- <Component Id="DaTranslation" Guid="3891256E-7A0C-4A26-872A-C7EBA14A87D8">
- <File Id="pinta_da" Name="pinta.mo" Source="$(var.BuildRoot)\locale\da\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="de" Name='de'>
- <Directory Id="LC_MESSAGES_DE" Name='LC_MESSAGES'>
- <Component Id="DeTranslation" Guid="F98414D7-8AE0-461B-B9EB-219DCE5284C4">
- <File Id="pinta_de" Name="pinta.mo" Source="$(var.BuildRoot)\locale\de\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="el" Name='el'>
- <Directory Id="LC_MESSAGES_EL" Name='LC_MESSAGES'>
- <Component Id="ElTranslation" Guid="E87E32A6-3546-41D8-8E91-2CFB12810254">
- <File Id="pinta_el" Name="pinta.mo" Source="$(var.BuildRoot)\locale\el\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="en_gb" Name='en_GB'>
- <Directory Id="LC_MESSAGES_EN_GB" Name='LC_MESSAGES'>
- <Component Id="EnGbTranslation" Guid="32265FEE-4D87-42CF-9848-CE449F9944CF">
- <File Id="pinta_en_gb" Name="pinta.mo" Source="$(var.BuildRoot)\locale\en_GB\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="es" Name='es'>
- <Directory Id="LC_MESSAGES_ES" Name='LC_MESSAGES'>
- <Component Id="EsTranslation" Guid="E5C85E52-046F-41EF-8DFF-576FE9DCF8A9">
- <File Id="pinta_es" Name="pinta.mo" Source="$(var.BuildRoot)\locale\es\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="eu" Name='eu'>
- <Directory Id="LC_MESSAGES_EU" Name='LC_MESSAGES'>
- <Component Id="EuTranslation" Guid="65080F25-35D3-4D29-BE78-A204E6B669C6">
- <File Id="pinta_eu" Name="pinta.mo" Source="$(var.BuildRoot)\locale\eu\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="fi" Name='fi'>
- <Directory Id="LC_MESSAGES_FI" Name='LC_MESSAGES'>
- <Component Id="FiTranslation" Guid="FD5A27FF-FE70-4CC4-9401-183E6EEAE79B">
- <File Id="pinta_fi" Name="pinta.mo" Source="$(var.BuildRoot)\locale\fi\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="fo" Name='fo'>
- <Directory Id="LC_MESSAGES_FO" Name='LC_MESSAGES'>
- <Component Id="FoTranslation" Guid="E52FE762-D62C-4B20-BB9B-F29666A9FFD4">
- <File Id="pinta_fo" Name="pinta.mo" Source="$(var.BuildRoot)\locale\fo\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="fr" Name='fr'>
- <Directory Id="LC_MESSAGES_FR" Name='LC_MESSAGES'>
- <Component Id="FrTranslation" Guid="7108526E-386E-4B4F-88DD-27A55DF5C322">
- <File Id="pinta_fr" Name="pinta.mo" Source="$(var.BuildRoot)\locale\fr\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="ga" Name='ga'>
- <Directory Id="LC_MESSAGES_GA" Name='LC_MESSAGES'>
- <Component Id="GaTranslation" Guid="404F60EE-DD26-4F01-A613-84477D9B06A7">
- <File Id="pinta_ga" Name="pinta.mo" Source="$(var.BuildRoot)\locale\ga\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="gl" Name='gl'>
- <Directory Id="LC_MESSAGES_GL" Name='LC_MESSAGES'>
- <Component Id="GlTranslation" Guid="7BB516E8-10B7-4D74-9E0F-831CFDE496EA">
- <File Id="pinta_gl" Name="pinta.mo" Source="$(var.BuildRoot)\locale\gl\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="he" Name='he'>
- <Directory Id="LC_MESSAGES_HE" Name='LC_MESSAGES'>
- <Component Id="HeTranslation" Guid="9C765381-4B63-499F-82A5-208C0E6799D3">
- <File Id="pinta_he" Name="pinta.mo" Source="$(var.BuildRoot)\locale\he\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="hr" Name='hr'>
- <Directory Id="LC_MESSAGES_HR" Name='LC_MESSAGES'>
- <Component Id="HrTranslation" Guid="BF9F0237-C18E-4FED-B108-03066087B0D5">
- <File Id="pinta_hr" Name="pinta.mo" Source="$(var.BuildRoot)\locale\hr\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="hy" Name='hy'>
- <Directory Id="LC_MESSAGES_HY" Name='LC_MESSAGES'>
- <Component Id="HyTranslation" Guid="D88AA8FE-A4E0-4156-B96F-B122A9042702">
- <File Id="pinta_hy" Name="pinta.mo" Source="$(var.BuildRoot)\locale\hy\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="id" Name='id'>
- <Directory Id="LC_MESSAGES_ID" Name='LC_MESSAGES'>
- <Component Id="IdTranslation" Guid="79B75681-4F09-4F3E-9FD7-055706B686DF">
- <File Id="pinta_id" Name="pinta.mo" Source="$(var.BuildRoot)\locale\id\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="it" Name='it'>
- <Directory Id="LC_MESSAGES_IT" Name='LC_MESSAGES'>
- <Component Id="ItTranslation" Guid="B0C5EB19-C586-4980-941D-8DDC510A3FBA">
- <File Id="pinta_it" Name="pinta.mo" Source="$(var.BuildRoot)\locale\it\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="ja" Name='ja'>
- <Directory Id="LC_MESSAGES_JA" Name='LC_MESSAGES'>
- <Component Id="JaTranslation" Guid="67C2D595-1B88-477A-8FC2-9192EEC63690">
- <File Id="pinta_ja" Name="pinta.mo" Source="$(var.BuildRoot)\locale\ja\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="ko" Name='ko'>
- <Directory Id="LC_MESSAGES_KO" Name='LC_MESSAGES'>
- <Component Id="KoTranslation" Guid="A9F2C3D8-9F48-4F1F-A262-94CAA8A7D982">
- <File Id="pinta_ko" Name="pinta.mo" Source="$(var.BuildRoot)\locale\ko\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="lt" Name='lt'>
- <Directory Id="LC_MESSAGES_LT" Name='LC_MESSAGES'>
- <Component Id="LtTranslation" Guid="DC609476-C501-421D-8958-06DF5E420142">
- <File Id="pinta_lt" Name="pinta.mo" Source="$(var.BuildRoot)\locale\lt\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="nb" Name='nb'>
- <Directory Id="LC_MESSAGES_NB" Name='LC_MESSAGES'>
- <Component Id="NbTranslation" Guid="38C6EEB1-88CB-4ECA-BBDF-7F07C9114091">
- <File Id="pinta_nb" Name="pinta.mo" Source="$(var.BuildRoot)\locale\nb\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="nl" Name='nl'>
- <Directory Id="LC_MESSAGES_NL" Name='LC_MESSAGES'>
- <Component Id="NlTranslation" Guid="F8FFA0A4-40A7-4A0E-8E75-ACBCAE53CE56">
- <File Id="pinta_nl" Name="pinta.mo" Source="$(var.BuildRoot)\locale\nl\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="pl" Name='pl'>
- <Directory Id="LC_MESSAGES_PL" Name='LC_MESSAGES'>
- <Component Id="PlTranslation" Guid="5BEABE4B-B297-40F3-B211-EC43933BE52B">
- <File Id="pinta_pl" Name="pinta.mo" Source="$(var.BuildRoot)\locale\pl\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="pt" Name='pt'>
- <Directory Id="LC_MESSAGES_PT" Name='LC_MESSAGES'>
- <Component Id="PtTranslation" Guid="4F2EAD1F-A276-47B2-B591-90BE77A9B87F">
- <File Id="pinta_pt" Name="pinta.mo" Source="$(var.BuildRoot)\locale\pt\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="pt_BR" Name='pt_BR'>
- <Directory Id="LC_MESSAGES_PT_BR" Name='LC_MESSAGES'>
- <Component Id="PtBrTranslation" Guid="FD8FF383-5B2F-4302-951A-4B2E8923397B">
- <File Id="pinta_ptbr" Name="pinta.mo" Source="$(var.BuildRoot)\locale\pt_BR\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="ro" Name='ro'>
- <Directory Id="LC_MESSAGES_RO" Name='LC_MESSAGES'>
- <Component Id="RoTranslation" Guid="CA26C662-114D-48B9-889A-AE2710097BE2">
- <File Id="pinta_ro" Name="pinta.mo" Source="$(var.BuildRoot)\locale\ro\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="ru" Name='ru'>
- <Directory Id="LC_MESSAGES_RU" Name='LC_MESSAGES'>
- <Component Id="RuTranslation" Guid="BF208BE8-3987-4132-875C-EE097416D675">
- <File Id="pinta_ru" Name="pinta.mo" Source="$(var.BuildRoot)\locale\ru\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="sk" Name='sk'>
- <Directory Id="LC_MESSAGES_SK" Name='LC_MESSAGES'>
- <Component Id="SkTranslation" Guid="8BCC12E8-8055-48F2-9DC9-5B8736C35482">
- <File Id="pinta_sk" Name="pinta.mo" Source="$(var.BuildRoot)\locale\sk\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="sl" Name='sl'>
- <Directory Id="LC_MESSAGES_SL" Name='LC_MESSAGES'>
- <Component Id="SlTranslation" Guid="BFBAF55C-705A-470C-A99F-66D303E08D20">
- <File Id="pinta_sl" Name="pinta.mo" Source="$(var.BuildRoot)\locale\sl\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="sr" Name='sr'>
- <Directory Id="LC_MESSAGES_SR" Name='LC_MESSAGES'>
- <Component Id="SrTranslation" Guid="9BBFC675-625D-4E39-B667-3BAAE01F1459">
- <File Id="pinta_sr" Name="pinta.mo" Source="$(var.BuildRoot)\locale\sr\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="sv" Name='sv'>
- <Directory Id="LC_MESSAGES_SV" Name='LC_MESSAGES'>
- <Component Id="SvTranslation" Guid="1ADE1336-FED4-4011-A69F-6419CC77164A">
- <File Id="pinta_sv" Name="pinta.mo" Source="$(var.BuildRoot)\locale\sv\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="th" Name='th'>
- <Directory Id="LC_MESSAGES_TH" Name='LC_MESSAGES'>
- <Component Id="ThTranslation" Guid="89E5EC81-7464-435E-A550-FC73473F7FAB">
- <File Id="pinta_th" Name="pinta.mo" Source="$(var.BuildRoot)\locale\th\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="tr" Name='tr'>
- <Directory Id="LC_MESSAGES_TR" Name='LC_MESSAGES'>
- <Component Id="TrTranslation" Guid="A62ECF9D-7086-4F7B-B2B2-279D0BF90341">
- <File Id="pinta_tr" Name="pinta.mo" Source="$(var.BuildRoot)\locale\tr\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="uk" Name='uk'>
- <Directory Id="LC_MESSAGES_UK" Name='LC_MESSAGES'>
- <Component Id="UkTranslation" Guid="6058E93D-C04E-460A-86CD-D25544660BB3">
- <File Id="pinta_uk" Name="pinta.mo" Source="$(var.BuildRoot)\locale\uk\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="vi" Name='vi'>
- <Directory Id="LC_MESSAGES_VI" Name='LC_MESSAGES'>
- <Component Id="ViTranslation" Guid="9E9E81C1-2D97-4504-BD8B-060F38FA7C07">
- <File Id="pinta_vi" Name="pinta.mo" Source="$(var.BuildRoot)\locale\vi\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="zh_CN" Name='zh_CN'>
- <Directory Id="LC_MESSAGES_ZhCn" Name='LC_MESSAGES'>
- <Component Id="ZhCnTranslation" Guid="C96196DA-C971-4C59-B924-A0354AC71C6A">
- <File Id="pinta_zhcn" Name="pinta.mo" Source="$(var.BuildRoot)\locale\zh_CN\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="zh_TW" Name='zh_TW'>
- <Directory Id="LC_MESSAGES_ZhTw" Name='LC_MESSAGES'>
- <Component Id="ZhTwTranslation" Guid="827B9D1D-B2AE-4B46-9DD2-E42713B21FD4">
- <File Id="pinta_zhtw" Name="pinta.mo" Source="$(var.BuildRoot)\locale\zh_TW\LC_MESSAGES\pinta.mo" />
- </Component>
- </Directory>
- </Directory>
- </Directory>-->
- </Directory>
-
- </Directory>
-
- <Directory Id="ProgramMenuFolder" Name="PMenu">
- <Directory Id="ProgramMenuDir" Name='$(var.ProductShortName)' />
- </Directory>
- </Directory>
-
- <Feature Id="ProductFeature" Title="Pint" Level="1">
- <ComponentRef Id="ProductComponent" />
- <ComponentRef Id="ExtensionsComp" />
- <!--<ComponentRef Id="ArTranslation" />
- <ComponentRef Id="BrTranslation" />
- <ComponentRef Id="CaTranslation" />
- <ComponentRef Id="CsTranslation" />
- <ComponentRef Id="DaTranslation" />
- <ComponentRef Id="DeTranslation" />
- <ComponentRef Id="ElTranslation" />
- <ComponentRef Id="EnGbTranslation" />
- <ComponentRef Id="EsTranslation" />
- <ComponentRef Id="EuTranslation" />
- <ComponentRef Id="FiTranslation" />
- <ComponentRef Id="FoTranslation" />
- <ComponentRef Id="FrTranslation" />
- <ComponentRef Id="GaTranslation" />
- <ComponentRef Id="GlTranslation" />
- <ComponentRef Id="HeTranslation" />
- <ComponentRef Id="HrTranslation" />
- <ComponentRef Id="HyTranslation" />
- <ComponentRef Id="IdTranslation" />
- <ComponentRef Id="ItTranslation" />
- <ComponentRef Id="JaTranslation" />
- <ComponentRef Id="KoTranslation" />
- <ComponentRef Id="LtTranslation" />
- <ComponentRef Id="NbTranslation" />
- <ComponentRef Id="NlTranslation" />
- <ComponentRef Id="PlTranslation" />
- <ComponentRef Id="PtTranslation" />
- <ComponentRef Id="PtBrTranslation" />
- <ComponentRef Id="RoTranslation" />
- <ComponentRef Id="RuTranslation" />
- <ComponentRef Id="SkTranslation" />
- <ComponentRef Id="SlTranslation" />
- <ComponentRef Id="SrTranslation" />
- <ComponentRef Id="SvTranslation" />
- <ComponentRef Id="ThTranslation" />
- <ComponentRef Id="TrTranslation" />
- <ComponentRef Id="UkTranslation" />
- <ComponentRef Id="ViTranslation" />
- <ComponentRef Id="ZhCnTranslation" />
- <ComponentRef Id="ZhTwTranslation" />-->
- </Feature>
-
- <!-- Sequences -->
- <InstallExecuteSequence>
- <RemoveExistingProducts After="InstallValidate" />
- </InstallExecuteSequence>
-
- <InstallUISequence>
- <!-- Because we have a launch condition that uses the results of FindRelatedProducts, put it first. -->
- <LaunchConditions After="FindRelatedProducts" />
- </InstallUISequence>
-
- <!-- This enables the license screen and where to install screen -->
- <Property Id="WIXUI_INSTALLDIR">INSTALLLOCATION</Property>
- <UIRef Id="WixUI_InstallDir"/>
-
- <!-- Specify the license to display and graphics to use in our GUI -->
- <WixVariable Id="WixUILicenseRtf" Value="license.rtf" />
- <WixVariable Id="WixUIBannerBmp" Value="Bitmaps\bannrbmp.bmp" />
- <WixVariable Id="WixUIDialogBmp" Value="Bitmaps\dlgbmp.bmp" />
-
- <!-- This is for the icon that is shown in the Add/Remove Programs dialog and menu shortcut -->
- <Icon Id="Pinta.exe" SourceFile="Bitmaps\Pinta.ico" />
- <Property Id="ARPPRODUCTICON" Value="Pinta.exe" />
- </Product>
-</Wix>
diff --git a/Wix/license.rtf b/Wix/license.rtf
deleted file mode 100644
index c7a6120..0000000
Binary files a/Wix/license.rtf and /dev/null differ
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..a9f93bf
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,776 @@
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
+[m4_warning([this file was generated for autoconf 2.65.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+#
+# Copyright © 2004 Scott James Remnant <scott at netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=m4_default([$1], [0.9.0])
+ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PKG_CONFIG=""
+ fi
+
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists. Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+ m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$PKG_CONFIG"; then
+ if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ else
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+ [pkg_failed=yes])
+ fi
+else
+ pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT
+])],
+ [AC_MSG_RESULT([no])
+ $4])
+elif test $pkg_failed = untried; then
+ ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
+ [$4])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.11.1], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index c90d3a8..0000000
--- a/autogen.sh
+++ /dev/null
@@ -1,141 +0,0 @@
-#! /bin/sh
-
-# Compares software version numbers
-# 10 means EQUAL
-# 11 means GREATER THAN
-# 9 means LESS THAN
-check_version() {
- test -z "$1" && return 1
- local ver1=$1
- while test `echo $ver1 | egrep -c [^0123456789.]` -gt 0 ; do
- char=`echo $ver1 | sed 's/.*\([^0123456789.]\).*/\1/'`
- char_dec=`echo -n "$char" | od -b | head -1 | awk {'print $2'}`
- ver1=`echo $ver1 | sed "s/$char/.$char_dec/g"`
- done
- test -z "$2" && return 1
- local ver2=$2
- while test `echo $ver2 | egrep -c [^0123456789.]` -gt 0 ; do
- char=`echo $ver2 | sed 's/.*\([^0123456789.]\).*/\1/'`
- char_dec=`echo -n "$char" | od -b | head -1 | awk {'print $2'}`
- ver2=`echo $ver2 | sed "s/$char/.$char_dec/g"`
- done
-
- ver1=`echo $ver1 | sed 's/\.\./.0/g'`
- ver2=`echo $ver2 | sed 's/\.\./.0/g'`
-
- do_version_check "$ver1" "$ver2"
-}
-
-do_version_check() {
-
- test "$1" -eq "$2" && return 10
-
- ver1front=`echo $1 | cut -d "." -f -1`
- ver1back=`echo $1 | cut -d "." -f 2-`
- ver2front=`echo $2 | cut -d "." -f -1`
- ver2back=`echo $2 | cut -d "." -f 2-`
-
- if test "$ver1front" != "$1" || test "$ver2front" != "$2" ; then
- test "$ver1front" -gt "$ver2front" && return 11
- test "$ver1front" -lt "$ver2front" && return 9
-
- test "$ver1front" -eq "$1" || test -z "$ver1back" && ver1back=0
- test "$ver2front" -eq "$2" || test -z "$ver2back" && ver2back=0
- do_version_check "$ver1back" "$ver2back"
- return $?
- else
- test "$1" -gt "$2" && return 11 || return 9
- fi
-}
-
-PROJECT=Pinta
-FILE=
-CONFIGURE=configure.ac
-
-: ${AUTOCONF=autoconf}
-: ${AUTOHEADER=autoheader}
-: ${AUTOMAKE=automake}
-: ${ACLOCAL=aclocal}
-: ${MONO=mono}
-: ${XBUILD=xbuild}
-
-DIE=0
-
-($AUTOCONF --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have autoconf installed to compile $PROJECT."
- echo "Download the appropriate package for your distribution,"
- echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
- DIE=1
-}
-
-($AUTOMAKE --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have automake installed to compile $PROJECT."
- echo "Get ftp://sourceware.cygnus.com/pub/automake/automake-1.4.tar.gz"
- echo "(or a newer version if it is available)"
- DIE=1
-}
-
-($MONO --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have mono runtime installed to compile $PROJECT."
- DIE=1
-}
-
-($XBUILD /version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have mono-xbuild installed to compile $PROJECT."
- DIE=1
-}
-
-if test "$DIE" -eq 1; then
- exit 1
-fi
-
-xbuild_version=`xbuild /version | grep '^XBuild' | egrep -o '([0-9]+\.?){2,}'`
-check_version "$xbuild_version" "2.4" 2> /dev/null
-if test $? -eq 9; then
- echo
- echo "A newer version of XBuild is required to build $PROJECT ( >= 2.4 )"
- exit 1
-fi
-
-mono_version=`xbuild /version | grep '^Mono' | egrep -o '([0-9]+\.?){2,}'`
-check_version "$xbuild_version" "2.4" 2> /dev/null
-if test $? -eq 9; then
- echo
- echo "A newer version of Mono is required to run $PROJECT ( >= 2.4 )"
- exit 1
-fi
-
-#Check directoy
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-TEST_TYPE=-f
-aclocalinclude="-I . $ACLOCAL_FLAGS"
-
-test $TEST_TYPE $FILE || {
- echo "You must run this script in the top-level $PROJECT directory"
- exit 1
-}
-
-if test -z "$*"; then
- echo "I am going to run ./configure with no arguments - if you wish "
- echo "to pass any to it, please specify them on the $0 command line."
-fi
-
-echo "Running $ACLOCAL $aclocalinclude ..."
-$ACLOCAL $aclocalinclude
-
-echo "Running $AUTOMAKE --gnu $am_opt ..."
-$AUTOMAKE --add-missing --gnu $am_opt
-
-echo "Running $AUTOCONF ..."
-$AUTOCONF
-
-echo Running $srcdir/configure $conf_flags "$@" ...
-$srcdir/configure $conf_flags "$@"
diff --git a/configure b/configure
new file mode 100755
index 0000000..1095fb7
--- /dev/null
+++ b/configure
@@ -0,0 +1,4078 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.65 for pinta 1.0.
+#
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ # We cannot yet assume a decent shell, so we have to provide a
+ # neutralization value for shells without unset; and this also
+ # works around shells that cannot unset nonexistent variables.
+ BASH_ENV=/dev/null
+ ENV=/dev/null
+ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf at gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$?; test $as_status -eq 0 && as_status=1
+ if test "$3"; then
+ as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ fi
+ $as_echo "$as_me: error: $1" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='pinta'
+PACKAGE_TARNAME='pinta'
+PACKAGE_VERSION='1.0'
+PACKAGE_STRING='pinta 1.0'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
+
+ac_default_prefix=/usr
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+MONO_CAIRO_LIBS
+MONO_CAIRO_CFLAGS
+GTK_SHARP_20_LIBS
+GTK_SHARP_20_CFLAGS
+GLIB_SHARP_20_LIBS
+GLIB_SHARP_20_CFLAGS
+MONO_LIBS
+MONO_CFLAGS
+MONO
+XBUILD
+PKG_CONFIG
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+PKG_CONFIG
+MONO_CFLAGS
+MONO_LIBS
+GLIB_SHARP_20_CFLAGS
+GLIB_SHARP_20_LIBS
+GTK_SHARP_20_CFLAGS
+GTK_SHARP_20_LIBS
+MONO_CAIRO_CFLAGS
+MONO_CAIRO_LIBS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information."
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures pinta 1.0 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/pinta]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of pinta 1.0:";;
+ esac
+ cat <<\_ACEOF
+
+Some influential environment variables:
+ PKG_CONFIG path to pkg-config utility
+ MONO_CFLAGS C compiler flags for MONO, overriding pkg-config
+ MONO_LIBS linker flags for MONO, overriding pkg-config
+ GLIB_SHARP_20_CFLAGS
+ C compiler flags for GLIB_SHARP_20, overriding pkg-config
+ GLIB_SHARP_20_LIBS
+ linker flags for GLIB_SHARP_20, overriding pkg-config
+ GTK_SHARP_20_CFLAGS
+ C compiler flags for GTK_SHARP_20, overriding pkg-config
+ GTK_SHARP_20_LIBS
+ linker flags for GTK_SHARP_20, overriding pkg-config
+ MONO_CAIRO_CFLAGS
+ C compiler flags for MONO_CAIRO, overriding pkg-config
+ MONO_CAIRO_LIBS
+ linker flags for MONO_CAIRO, overriding pkg-config
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+pinta configure 1.0
+generated by GNU Autoconf 2.65
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by pinta $as_me 1.0, which was
+generated by GNU Autoconf 2.65. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+am__api_version='1.11'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+ for ac_t in install-sh install.sh shtool; do
+ if test -f "$ac_dir/$ac_t"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/$ac_t -c"
+ break 2
+ fi
+ done
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error "ls -t appears to fail. Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='pinta'
+ VERSION='1.0'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5
+$as_echo_n "checking how to create a ustar tar archive... " >&6; }
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar plaintar pax cpio none'
+_am_tools=${am_cv_prog_tar_ustar-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ { echo "$as_me:$LINENO: $_am_tar --version" >&5
+ ($_am_tar --version) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && break
+ done
+ am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x ustar -w "$$tardir"'
+ am__tar_='pax -L -x ustar -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H ustar -L'
+ am__tar_='find "$tardir" -print | cpio -o -H ustar -L'
+ am__untar='cpio -i -H ustar -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_ustar}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5
+ (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5
+ ($am__untar <conftest.tar) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+if test "${am_cv_prog_tar_ustar+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ am_cv_prog_tar_ustar=$_am_tool
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5
+$as_echo "$am_cv_prog_tar_ustar" >&6; }
+
+
+
+
+
+
+
+
+
+# Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test "x$PKG_CONFIG" = "xno"; then
+ as_fn_error "You need to install pkg-config" "$LINENO" 5
+fi
+
+# Extract the first word of "xbuild", so it can be a program name with args.
+set dummy xbuild; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_XBUILD+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $XBUILD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XBUILD="$XBUILD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_XBUILD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_XBUILD" && ac_cv_path_XBUILD="no"
+ ;;
+esac
+fi
+XBUILD=$ac_cv_path_XBUILD
+if test -n "$XBUILD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XBUILD" >&5
+$as_echo "$XBUILD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "mono", so it can be a program name with args.
+set dummy mono; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MONO+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MONO in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MONO="$MONO" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_MONO="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_MONO" && ac_cv_path_MONO="no"
+ ;;
+esac
+fi
+MONO=$ac_cv_path_MONO
+if test -n "$MONO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MONO" >&5
+$as_echo "$MONO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+if test "x$XBUILD" = "xno"; then
+ as_fn_error "XBuild not found" "$LINENO" 5
+fi
+
+if test "x$MONO" = "xno"; then
+ as_fn_error "No mono runtime found" "$LINENO" 5
+fi
+
+# Check Mono version
+MONO_MINIMUM_VERSION=2.6.7
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+ ac_pt_PKG_CONFIG=$PKG_CONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKG_CONFIG" = x; then
+ PKG_CONFIG=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKG_CONFIG=$ac_pt_PKG_CONFIG
+ fi
+else
+ PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=0.9.0
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ PKG_CONFIG=""
+ fi
+
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MONO" >&5
+$as_echo_n "checking for MONO... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$MONO_CFLAGS"; then
+ pkg_cv_MONO_CFLAGS="$MONO_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono >= \$MONO_MINIMUM_VERSION\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "mono >= $MONO_MINIMUM_VERSION") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_MONO_CFLAGS=`$PKG_CONFIG --cflags "mono >= $MONO_MINIMUM_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$MONO_LIBS"; then
+ pkg_cv_MONO_LIBS="$MONO_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono >= \$MONO_MINIMUM_VERSION\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "mono >= $MONO_MINIMUM_VERSION") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_MONO_LIBS=`$PKG_CONFIG --libs "mono >= $MONO_MINIMUM_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ MONO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "mono >= $MONO_MINIMUM_VERSION"`
+ else
+ MONO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "mono >= $MONO_MINIMUM_VERSION"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$MONO_PKG_ERRORS" >&5
+
+ as_fn_error "Package requirements (mono >= $MONO_MINIMUM_VERSION) were not met:
+
+$MONO_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables MONO_CFLAGS
+and MONO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables MONO_CFLAGS
+and MONO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." "$LINENO" 5; }
+else
+ MONO_CFLAGS=$pkg_cv_MONO_CFLAGS
+ MONO_LIBS=$pkg_cv_MONO_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ :
+fi
+
+
+
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB_SHARP_20" >&5
+$as_echo_n "checking for GLIB_SHARP_20... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GLIB_SHARP_20_CFLAGS"; then
+ pkg_cv_GLIB_SHARP_20_CFLAGS="$GLIB_SHARP_20_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-sharp-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "glib-sharp-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GLIB_SHARP_20_CFLAGS=`$PKG_CONFIG --cflags "glib-sharp-2.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GLIB_SHARP_20_LIBS"; then
+ pkg_cv_GLIB_SHARP_20_LIBS="$GLIB_SHARP_20_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-sharp-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "glib-sharp-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GLIB_SHARP_20_LIBS=`$PKG_CONFIG --libs "glib-sharp-2.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GLIB_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "glib-sharp-2.0"`
+ else
+ GLIB_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-sharp-2.0"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GLIB_SHARP_20_PKG_ERRORS" >&5
+
+ as_fn_error "Package requirements (glib-sharp-2.0) were not met:
+
+$GLIB_SHARP_20_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GLIB_SHARP_20_CFLAGS
+and GLIB_SHARP_20_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GLIB_SHARP_20_CFLAGS
+and GLIB_SHARP_20_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." "$LINENO" 5; }
+else
+ GLIB_SHARP_20_CFLAGS=$pkg_cv_GLIB_SHARP_20_CFLAGS
+ GLIB_SHARP_20_LIBS=$pkg_cv_GLIB_SHARP_20_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ :
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK_SHARP_20" >&5
+$as_echo_n "checking for GTK_SHARP_20... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GTK_SHARP_20_CFLAGS"; then
+ pkg_cv_GTK_SHARP_20_CFLAGS="$GTK_SHARP_20_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-sharp-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gtk-sharp-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GTK_SHARP_20_CFLAGS=`$PKG_CONFIG --cflags "gtk-sharp-2.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GTK_SHARP_20_LIBS"; then
+ pkg_cv_GTK_SHARP_20_LIBS="$GTK_SHARP_20_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-sharp-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gtk-sharp-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GTK_SHARP_20_LIBS=`$PKG_CONFIG --libs "gtk-sharp-2.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GTK_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtk-sharp-2.0"`
+ else
+ GTK_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk-sharp-2.0"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GTK_SHARP_20_PKG_ERRORS" >&5
+
+ as_fn_error "Package requirements (gtk-sharp-2.0) were not met:
+
+$GTK_SHARP_20_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GTK_SHARP_20_CFLAGS
+and GTK_SHARP_20_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GTK_SHARP_20_CFLAGS
+and GTK_SHARP_20_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." "$LINENO" 5; }
+else
+ GTK_SHARP_20_CFLAGS=$pkg_cv_GTK_SHARP_20_CFLAGS
+ GTK_SHARP_20_LIBS=$pkg_cv_GTK_SHARP_20_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ :
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MONO_CAIRO" >&5
+$as_echo_n "checking for MONO_CAIRO... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$MONO_CAIRO_CFLAGS"; then
+ pkg_cv_MONO_CAIRO_CFLAGS="$MONO_CAIRO_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-cairo\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "mono-cairo") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_MONO_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "mono-cairo" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$MONO_CAIRO_LIBS"; then
+ pkg_cv_MONO_CAIRO_LIBS="$MONO_CAIRO_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-cairo\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "mono-cairo") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_MONO_CAIRO_LIBS=`$PKG_CONFIG --libs "mono-cairo" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ MONO_CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "mono-cairo"`
+ else
+ MONO_CAIRO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "mono-cairo"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$MONO_CAIRO_PKG_ERRORS" >&5
+
+ as_fn_error "Package requirements (mono-cairo) were not met:
+
+$MONO_CAIRO_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables MONO_CAIRO_CFLAGS
+and MONO_CAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables MONO_CAIRO_CFLAGS
+and MONO_CAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." "$LINENO" 5; }
+else
+ MONO_CAIRO_CFLAGS=$pkg_cv_MONO_CAIRO_CFLAGS
+ MONO_CAIRO_LIBS=$pkg_cv_MONO_CAIRO_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ :
+fi
+
+ac_config_files="$ac_config_files Makefile pinta"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ test "x$cache_file" != "x/dev/null" &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+ g
+ s/^\n//
+ s/\n/ /g
+ p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$?; test $as_status -eq 0 && as_status=1
+ if test "$3"; then
+ as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ fi
+ $as_echo "$as_me: error: $1" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by pinta $as_me 1.0, which was
+generated by GNU Autoconf 2.65. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+pinta config.status 1.0
+configured by $0, generated by GNU Autoconf 2.65,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h | --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "pinta") CONFIG_FILES="$CONFIG_FILES pinta" ;;
+
+ *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp=
+ trap 'exit_status=$?
+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+ || as_fn_error "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[ ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X " :F $CONFIG_FILES "
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$tmp/stdin" \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&2;}
+
+ rm -f "$tmp/stdin"
+ case $ac_file in
+ -) cat "$tmp/out" && rm -f "$tmp/out";;
+ *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+
+ esac
+
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit $?
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+cat <<EOF
+
+${PACKAGE}-${VERSION}
+
+ Build Environment
+ Install Prefix: ${prefix}
+ XBuild Path: ${XBUILD}
+ Mono Runtime: ${MONO}
+ Launch Script: ${prefix}/bin/${PACKAGE}
+ Installation Directory: ${prefix}/lib/${PACKAGE}/
+
+EOF
diff --git a/configure.ac b/configure.ac
index e50658e..f0e29c2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT([pinta], [0.7])
+AC_INIT([pinta], [1.0])
AM_INIT_AUTOMAKE([tar-ustar foreign])
AC_PREFIX_DEFAULT([/usr])
@@ -23,7 +23,7 @@ if test "x$MONO" = "xno"; then
fi
# Check Mono version
-MONO_MINIMUM_VERSION=2.8
+MONO_MINIMUM_VERSION=2.6.7
PKG_CHECK_MODULES(MONO, mono >= $MONO_MINIMUM_VERSION)
AC_SUBST(XBUILD)
diff --git a/install-sh b/install-sh
new file mode 100755
index 0000000..6781b98
--- /dev/null
+++ b/install-sh
@@ -0,0 +1,520 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2009-04-28.21; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# 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
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" "" $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -s) stripcmd=$stripprog;;
+
+ -t) dst_arg=$2
+ shift;;
+
+ -T) no_target_directory=true;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ done
+fi
+
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+if test -z "$dir_arg"; then
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dst_arg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst;;
+ esac
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writeable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ -*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ eval "$initialize_posix_glob"
+
+ oIFS=$IFS
+ IFS=/
+ $posix_glob set -f
+ set fnord $dstdir
+ shift
+ $posix_glob set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test -z "$d" && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/missing b/missing
new file mode 100755
index 0000000..28055d2
--- /dev/null
+++ b/missing
@@ -0,0 +1,376 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ # Exit code 63 means version mismatch. This often happens
+ # when the user try to use an ancient version of a tool on
+ # a file that requires a minimum version. In this case we
+ # we should proceed has if the program had been absent, or
+ # if --run hadn't been passed.
+ if test $? = 63; then
+ run=:
+ msg="probably too old"
+ fi
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ autom4te touch the output file, or create a stub one
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
+Send bug reports to <bug-automake at gnu.org>."
+ exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# normalize program name to check for.
+program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
+# Now exit if we have it, but it failed. Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program). This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+ lex*|yacc*)
+ # Not GNU programs, they don't have --version.
+ ;;
+
+ tar*)
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ exit 1
+ fi
+ ;;
+
+ *)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ # Could not run --version or --help. This is probably someone
+ # running `$TOOL --version' or `$TOOL --help' to check whether
+ # $TOOL exists and not knowing $TOOL uses missing.
+ exit 1
+ fi
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+ aclocal*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case $f in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te*)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison*|yacc*)
+ echo 1>&2 "\
+WARNING: \`$1' $msg. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f y.tab.h; then
+ echo >y.tab.h
+ fi
+ if test ! -f y.tab.c; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex*|flex*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f lex.yy.c; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit $?
+ fi
+ ;;
+
+ makeinfo*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ # The file to touch is that specified with -o ...
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -z "$file"; then
+ # ... or it is the one specified with @setfilename ...
+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '
+ /^@setfilename/{
+ s/.* \([^ ]*\) *$/\1/
+ p
+ q
+ }' $infile`
+ # ... or it is derived from the source name (dir/f.texi becomes f.info)
+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+ fi
+ # If the file does not exist, the user really needs makeinfo;
+ # let's fail without touching anything.
+ test -f $file || exit 1
+ touch $file
+ ;;
+
+ tar*)
+ shift
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar "$@" && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar "$@" && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case $firstarg in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ case $firstarg in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequisites for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/po/messages-ar.po b/po/messages-ar.po
index 658e746..8d254c5 100644
--- a/po/messages-ar.po
+++ b/po/messages-ar.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-03 17:37+0000\n"
+"PO-Revision-Date: 2011-03-30 16:09+0000\n"
"Last-Translator: Jonathan Pobst <Unknown>\n"
"Language-Team: Arabic <ar at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-br.po b/po/messages-br.po
index a88775e..52a7b24 100644
--- a/po/messages-br.po
+++ b/po/messages-br.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-04 17:14+0000\n"
-"Last-Translator: Alan <Unknown>\n"
+"PO-Revision-Date: 2011-03-30 16:22+0000\n"
+"Last-Translator: Jonathan Pobst <Unknown>\n"
"Language-Team: Breton <br at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-ca.po b/po/messages-ca.po
index d495ae7..2a248d0 100644
--- a/po/messages-ca.po
+++ b/po/messages-ca.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-03 18:28+0000\n"
-"Last-Translator: tot3lmon <tot3lmon at gmail.com>\n"
+"PO-Revision-Date: 2011-04-05 07:18+0000\n"
+"Last-Translator: Pau Iranzo <Unknown>\n"
"Language-Team: Catalan <ca at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
@@ -23,15 +23,15 @@ msgstr ""
#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
msgid "Invert Colors"
-msgstr ""
+msgstr "Inverteix els colors"
#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
msgid "Levels"
-msgstr ""
+msgstr "Nivells"
#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
msgid "Sepia"
-msgstr ""
+msgstr "Sèpia"
#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
@@ -40,16 +40,16 @@ msgstr ""
#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
msgid "Black and White"
-msgstr ""
+msgstr "Blanc i negre"
#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
msgid "Curves"
-msgstr ""
+msgstr "Corbes"
#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
msgid "Brightness / Contrast"
-msgstr ""
+msgstr "Brillantor / Contrast"
#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
msgid "Hue / Saturation"
@@ -61,69 +61,69 @@ msgstr ""
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
msgid "Input Histogram"
-msgstr ""
+msgstr "Histograma d'entrada"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
msgid "Input"
-msgstr ""
+msgstr "Entrada"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
msgid "Output"
-msgstr ""
+msgstr "Sortida"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
msgid "Output Histogram"
-msgstr ""
+msgstr "Histograma de sortida"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
msgid "Auto"
-msgstr ""
+msgstr "Automàtic"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
msgid "Reset"
-msgstr ""
+msgstr "Restableix"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
msgid "Red"
-msgstr ""
+msgstr "Vermell"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
msgid "Green"
-msgstr ""
+msgstr "Verd"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
msgid "Blue"
-msgstr ""
+msgstr "Blau"
#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
msgid "Linked"
-msgstr ""
+msgstr "Enllaçat"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
msgid "Transfer Map"
-msgstr ""
+msgstr "Transfereix el mapa"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
msgid "RGB"
-msgstr ""
+msgstr "RGB"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
msgid "Luminosity"
-msgstr ""
+msgstr "Lluminositat"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
msgid "(256, 256)"
-msgstr ""
+msgstr "(256, 256)"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
msgid "Red "
-msgstr ""
+msgstr "Vermell "
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
msgid "Blue "
-msgstr ""
+msgstr "Blau "
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
msgid "Tip: Right-click to remove control points."
@@ -131,17 +131,17 @@ msgstr ""
#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
msgid "Reduce Noise"
-msgstr ""
+msgstr "Redueix el soroll"
#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
#: Pinta.Effects/Effects/MedianEffect.cs:37
#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
msgid "Noise"
-msgstr ""
+msgstr "Soroll"
#: Pinta.Effects/Effects/FragmentEffect.cs:26
msgid "Fragment"
-msgstr ""
+msgstr "Fragment"
#: Pinta.Effects/Effects/FragmentEffect.cs:34
#: Pinta.Effects/Effects/UnfocusEffect.cs:36
@@ -150,17 +150,17 @@ msgstr ""
#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
msgid "Blurs"
-msgstr "Difuminats"
+msgstr ""
#: Pinta.Effects/Effects/CloudsEffect.cs:30
msgid "Clouds"
-msgstr ""
+msgstr "Núvols"
#: Pinta.Effects/Effects/CloudsEffect.cs:38
#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
msgid "Render"
-msgstr ""
+msgstr "Renderitza"
#: Pinta.Effects/Effects/UnfocusEffect.cs:28
msgid "Unfocus"
@@ -175,7 +175,7 @@ msgstr "Elimina ulls vermells"
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
#: Pinta.Effects/Effects/SharpenEffect.cs:34
msgid "Photo"
-msgstr "Foto"
+msgstr "Fotografia"
#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
msgid "Mandelbrot Fractal"
@@ -194,11 +194,11 @@ msgstr ""
#: Pinta.Effects/Effects/EmbossEffect.cs:34
#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
-msgstr ""
+msgstr "Estilitza"
#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
msgid "Radial Blur"
-msgstr ""
+msgstr "Desenfocament radial"
#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
msgid "Frosted Glass"
@@ -221,11 +221,11 @@ msgstr ""
#: Pinta.Effects/Effects/InkSketchEffect.cs:42
#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
msgid "Artistic"
-msgstr ""
+msgstr "Artístic"
#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
msgid "Julia Fractal"
-msgstr ""
+msgstr "Fractal Julia"
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
msgid "Soften Portrait"
@@ -241,7 +241,7 @@ msgstr ""
#: Pinta.Effects/Effects/MedianEffect.cs:29
msgid "Median"
-msgstr ""
+msgstr "Mediana"
#: Pinta.Effects/Effects/EmbossEffect.cs:26
msgid "Emboss"
@@ -249,15 +249,15 @@ msgstr ""
#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
msgid "Gaussian Blur"
-msgstr ""
+msgstr "Difuminat gaussià"
#: Pinta.Effects/Effects/SharpenEffect.cs:26
msgid "Sharpen"
-msgstr ""
+msgstr "Aguditza"
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
-msgstr ""
+msgstr "Afegeix soroll"
#: Pinta.Effects/Effects/TileEffect.cs:26
msgid "Tile Reflection"
@@ -269,11 +269,11 @@ msgstr "Pixelitza"
#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
msgid "Motion Blur"
-msgstr ""
+msgstr "Difuminació per moviment"
#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
msgid "Polar Inversion"
-msgstr ""
+msgstr "Inversió polar"
#: Pinta.Effects/Effects/BulgeEffect.cs:26
msgid "Bulge"
@@ -281,7 +281,7 @@ msgstr ""
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
msgid "Zoom Blur"
-msgstr ""
+msgstr "Desenfocament per zoom"
#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
msgid "Pencil Sketch"
@@ -909,6 +909,7 @@ msgstr ""
msgid "translator-credits"
msgstr ""
"Launchpad Contributions:\n"
+" Pau Iranzo https://launchpad.net/~paugnu\n"
" thor9216 https://launchpad.net/~thor9216\n"
" tot3lmon https://launchpad.net/~tot3lmon"
diff --git a/po/messages-cs.po b/po/messages-cs.po
index 6cf53f7..86d5b98 100644
--- a/po/messages-cs.po
+++ b/po/messages-cs.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-07 15:34+0000\n"
+"PO-Revision-Date: 2011-04-01 12:22+0000\n"
"Last-Translator: schunka <Unknown>\n"
"Language-Team: Czech <cs at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
@@ -371,7 +371,7 @@ msgstr "Přesunout výběr"
#: Pinta.Tools/MoveSelectionTool.cs:48
msgid "Drag the selection to move selection outline."
-msgstr "Pro posunutí obrysu táhnout vyběrem ."
+msgstr "Pro posunutí obrysu táhnout výběrem."
#: Pinta.Tools/GradientTool.cs:56 Pinta.Tools/GradientTool.cs:167
msgid "Gradient"
@@ -382,7 +382,7 @@ msgid ""
"Click and drag to draw gradient from primary to secondary color. Right "
"click to reverse."
msgstr ""
-"Klik a tažení nakreslé přechod od primární k sekundární barvě. Pravý klik "
+"Klik a tažení nakreslí přechod od primární k sekundární barvě. Pravý klik "
"kreslí obráceně."
#: Pinta.Tools/GradientTool.cs:174
@@ -430,7 +430,7 @@ msgid ""
"Left click to draw with primary color, right click to draw with secondary "
"color."
msgstr ""
-"Levý klik kreslí primarní barvou, pravý klik kreslí sekundární barvou."
+"Levý klik kreslí primární barvou, pravý klik kreslí sekundární barvou."
#: Pinta.Tools/PaintBrushTool.cs:64
msgid "Type"
@@ -457,7 +457,7 @@ msgid ""
"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
"circle."
msgstr ""
-"Klik a tažení nakreslí elliptický výběr. Pro kruhový výběr držte shift."
+"Klik a tažení nakreslí eliptický výběr. Pro kruhový výběr držte shift."
#: Pinta.Tools/LineCurveTool.cs:38
msgid "Line"
@@ -484,7 +484,7 @@ msgstr "Posun"
#: Pinta.Tools/PanTool.cs:44
msgid "Click and drag to navigate image."
-msgstr "Klik a táhnutí navedou obrazék."
+msgstr "Klik a táhnutí posunou obrázek."
#: Pinta.Tools/ColorPickerTool.cs:44
msgid "Color Picker"
@@ -493,8 +493,7 @@ msgstr "Kapátko"
#: Pinta.Tools/ColorPickerTool.cs:50
msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
-"Levým klikem se nastaví primarní barva. Pravým klikem se nastaví sekundarní "
-"barva."
+"Levý klik nastaví primární barvu, pravý klik nastaví sekundární barvu."
#: Pinta.Tools/ColorPickerTool.cs:62
msgid "After select"
diff --git a/po/messages-da.po b/po/messages-da.po
index d982ca8..277f7ab 100644
--- a/po/messages-da.po
+++ b/po/messages-da.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2010-10-27 02:02+0000\n"
-"Last-Translator: Jonathan Pobst <Unknown>\n"
+"PO-Revision-Date: 2011-04-06 20:20+0000\n"
+"Last-Translator: Simon Højlind <Unknown>\n"
"Language-Team: Danish <da at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
@@ -23,7 +23,7 @@ msgstr "Auto niveau"
#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
msgid "Invert Colors"
-msgstr "Invertere farver"
+msgstr "Invertér farver"
#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
msgid "Levels"
@@ -36,7 +36,7 @@ msgstr "Sepia"
#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
msgid "Posterize"
-msgstr "Posterisere"
+msgstr "Posterisér"
#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
msgid "Black and White"
@@ -57,23 +57,23 @@ msgstr "Nuance / Mætning"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
msgid "Levels Adjustment"
-msgstr "Niveauer justering"
+msgstr "Niveau justering"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
msgid "Input Histogram"
-msgstr "Inddate histogram"
+msgstr "Input Histogram"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
msgid "Input"
-msgstr "Inddata"
+msgstr "Input"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
msgid "Output"
-msgstr "Uddata"
+msgstr "Output"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
msgid "Output Histogram"
-msgstr "Uddate histogram"
+msgstr "Output Histogram"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
msgid "Auto"
@@ -103,7 +103,7 @@ msgstr "Sammenkædet"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
msgid "Transfer Map"
-msgstr "Overføre kort"
+msgstr "Overfør kort"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
msgid "RGB"
@@ -131,7 +131,7 @@ msgstr ""
#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
msgid "Reduce Noise"
-msgstr "Reducere støj"
+msgstr "Reducér støj"
#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
#: Pinta.Effects/Effects/MedianEffect.cs:37
@@ -285,7 +285,7 @@ msgstr "Zoom sløring"
#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
msgid "Pencil Sketch"
-msgstr "Blyant stregning"
+msgstr "Blyantssketch"
#: Pinta.Effects/Effects/OutlineEffect.cs:29
#: Pinta.Tools/TextTool/TextTool.cs:171
@@ -316,15 +316,15 @@ msgstr "Gen-så"
#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
msgid "Choose Primary Color"
-msgstr ""
+msgstr "Vælg primær farve"
#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
msgid "Choose Secondary Color"
-msgstr ""
+msgstr "Vælg sekundær farve"
#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
msgid "Choose Palette Color"
-msgstr ""
+msgstr "Vælg palettefarve"
#: Pinta.Tools/RectangleSelectTool.cs:38
msgid "Rectangle Select"
@@ -376,7 +376,7 @@ msgstr "Træk i valg for at flytte vaglt omrids."
#: Pinta.Tools/GradientTool.cs:56 Pinta.Tools/GradientTool.cs:167
msgid "Gradient"
-msgstr "Overgang"
+msgstr "Farveovergang"
#: Pinta.Tools/GradientTool.cs:64
msgid ""
@@ -431,12 +431,12 @@ msgid ""
"Left click to draw with primary color, right click to draw with secondary "
"color."
msgstr ""
-"Venstre klik for at tegne med primær farve, højre klik for at tegne med "
+"Venstreklik for at tegne med primær farve, højreklik for at tegne med "
"sekundær farve."
#: Pinta.Tools/PaintBrushTool.cs:64
msgid "Type"
-msgstr ""
+msgstr "Type"
#: Pinta.Tools/PencilTool.cs:48 Pinta.Tools/ColorPickerTool.cs:120
msgid "Pencil"
@@ -459,8 +459,8 @@ msgid ""
"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
"circle."
msgstr ""
-"Klik og træk for at tegne et ellipse valg. Hold skift for at begrænse til en "
-"cirkel."
+"Klik og træk for at skabe en elliptisk markering. Hold skift for at begrænse "
+"til en cirkel."
#: Pinta.Tools/LineCurveTool.cs:38
msgid "Line"
@@ -470,7 +470,8 @@ msgstr "Linje"
msgid ""
"Left click to draw with primary color, right click for secondary color."
msgstr ""
-"Venstre klik for at tegne med primær farve, højre klik for sekundær farve."
+"Venstre klik for at tegne med den primære farve, højre klik for den "
+"sekundære farve."
#: Pinta.Tools/EraserTool.cs:45
msgid "Eraser"
@@ -533,22 +534,22 @@ msgstr "Radius"
#: Pinta.Tools/RoundedRectangleTool.cs:88
msgid "Decrease rectangle's corner radius"
-msgstr "Formindsk rektangels hjørne radius"
+msgstr "Formindsk rektanglens hjørne-radius"
#: Pinta.Tools/RoundedRectangleTool.cs:102
msgid "Increase rectangle's corner radius"
-msgstr "Forøg rektangels hjørne radius"
+msgstr "Forøg rektanglens hjørne-radius"
#: Pinta.Tools/MoveSelectedTool.cs:42
#: Pinta.Core/HistoryItems/PasteHistoryItem.cs:70
#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:64
#: Pinta.Core/Actions/EditActions.cs:255
msgid "Move Selected Pixels"
-msgstr "Flyt markerede billedepunkter"
+msgstr "Flyt markerede pixels"
#: Pinta.Tools/MoveSelectedTool.cs:48
msgid "Drag the selection to move selected content."
-msgstr "Træk i valgt for at flytte valgt indhold."
+msgstr "Træk i markeringen for at flytte det markerede indhold."
#: Pinta.Tools/RecolorTool.cs:59
msgid "Recolor"
@@ -560,7 +561,7 @@ msgstr "Venstre klik for at erstatte sekundær farve med primær farve."
#: Pinta.Tools/PaintBucketTool.cs:40
msgid "Paint Bucket"
-msgstr "Malespand"
+msgstr "Farvespand"
#: Pinta.Tools/PaintBucketTool.cs:46
msgid ""
@@ -935,7 +936,8 @@ msgid "translator-credits"
msgstr ""
"Launchpad Contributions:\n"
" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" Ole Carlsen https://launchpad.net/~ole-carlsen-web"
+" Ole Carlsen https://launchpad.net/~ole-carlsen-web\n"
+" Simon Højlind https://launchpad.net/~hojlind"
#: Pinta/Dialogs/AboutDialog.cs:123
msgid "Translated by:"
diff --git a/po/messages-de.po b/po/messages-de.po
index 3961298..d735ebf 100644
--- a/po/messages-de.po
+++ b/po/messages-de.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-27 00:16+0000\n"
-"Last-Translator: Benedict Etzel <Unknown>\n"
+"PO-Revision-Date: 2011-03-30 16:19+0000\n"
+"Last-Translator: Jonathan Pobst <Unknown>\n"
"Language-Team: German <de at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-el.po b/po/messages-el.po
index 3134b0d..cefdd13 100644
--- a/po/messages-el.po
+++ b/po/messages-el.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-05 08:48+0000\n"
-"Last-Translator: Spiros Anthis <Unknown>\n"
+"PO-Revision-Date: 2011-03-30 16:22+0000\n"
+"Last-Translator: Jonathan Pobst <Unknown>\n"
"Language-Team: Greek <el at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-en_GB.po b/po/messages-en_GB.po
index 155fffc..4221882 100644
--- a/po/messages-en_GB.po
+++ b/po/messages-en_GB.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-03 18:33+0000\n"
+"PO-Revision-Date: 2011-03-30 16:11+0000\n"
"Last-Translator: Jonathan Pobst <Unknown>\n"
"Language-Team: English (United Kingdom) <en_GB at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-es.po b/po/messages-es.po
index 8954302..9748450 100644
--- a/po/messages-es.po
+++ b/po/messages-es.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-eu.po b/po/messages-eu.po
index d5b9ca4..cf9ef8c 100644
--- a/po/messages-eu.po
+++ b/po/messages-eu.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-03 21:11+0000\n"
-"Last-Translator: Asier Sarasua Garmendia <Unknown>\n"
+"PO-Revision-Date: 2011-03-30 16:23+0000\n"
+"Last-Translator: Jonathan Pobst <Unknown>\n"
"Language-Team: Basque <eu at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-fi.po b/po/messages-fi.po
index 9f55462..3ec4d54 100644
--- a/po/messages-fi.po
+++ b/po/messages-fi.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-fo.po b/po/messages-fo.po
index d7bfe29..8f521ae 100644
--- a/po/messages-fo.po
+++ b/po/messages-fo.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-03 18:23+0000\n"
+"PO-Revision-Date: 2011-03-30 16:19+0000\n"
"Last-Translator: Jonathan Pobst <Unknown>\n"
"Language-Team: Føroyabólkurin\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
"Language: fo\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
diff --git a/po/messages-fr.po b/po/messages-fr.po
index e2fd5af..95e9ecd 100644
--- a/po/messages-fr.po
+++ b/po/messages-fr.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-03 17:57+0000\n"
-"Last-Translator: fred.lavigne <fred.taff at gmail.com>\n"
+"PO-Revision-Date: 2011-04-11 12:08+0000\n"
+"Last-Translator: dufoli <olivier.duff at gmail.com>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
@@ -482,6 +482,8 @@ msgstr "Gomme"
msgid ""
"Left click to erase to transparent, right click to erase to secondary color. "
msgstr ""
+"Clic gauche pour effacer et rendre transparent, clic droit pour remplir de "
+"la couleur secondaire. "
#: Pinta.Tools/PanTool.cs:38
msgid "Pan"
@@ -628,7 +630,7 @@ msgstr "Aligné à droite"
#: Pinta.Tools/TextTool/TextTool.cs:162
msgid "Text Style"
-msgstr ""
+msgstr "Style du texte"
#: Pinta.Tools/TextTool/TextTool.cs:169 Pinta.Tools/Brushes/PlainBrush.cs:38
msgid "Normal"
@@ -636,19 +638,19 @@ msgstr "Normal"
#: Pinta.Tools/TextTool/TextTool.cs:170
msgid "Normal and Outline"
-msgstr ""
+msgstr "Normal avec contours"
#: Pinta.Tools/TextTool/TextTool.cs:179
msgid "Outline width"
-msgstr ""
+msgstr "Largeur du contour"
#: Pinta.Tools/TextTool/TextTool.cs:184
msgid "Decrease outline size"
-msgstr ""
+msgstr "Diminuer la taille du contour"
#: Pinta.Tools/TextTool/TextTool.cs:201
msgid "Increase outline size"
-msgstr ""
+msgstr "Augmenter la taille du contour"
#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
msgid "Brush width"
@@ -949,6 +951,7 @@ msgstr ""
" Marting https://launchpad.net/~marting\n"
" Nicolas https://launchpad.net/~nicolas-pecqueux\n"
" Simon Leblanc https://launchpad.net/~contact-leblanc-simon\n"
+" Tonher3 https://launchpad.net/~jeanluc-jlg\n"
" dufoli https://launchpad.net/~olivier-duff\n"
" fred.lavigne https://launchpad.net/~fred-taff"
@@ -1275,7 +1278,7 @@ msgstr "Zoom arrière"
#: Pinta.Core/Actions/ViewActions.cs:65
msgid "Best Fit"
-msgstr ""
+msgstr "Meilleur ajustement"
#: Pinta.Core/Actions/ViewActions.cs:66
msgid "Zoom to Selection"
@@ -1283,7 +1286,7 @@ msgstr "Adapter l'échelle à la sélection"
#: Pinta.Core/Actions/ViewActions.cs:67
msgid "Normal Size"
-msgstr ""
+msgstr "Taille normale"
#: Pinta.Core/Actions/ViewActions.cs:68
msgid "Toolbar"
@@ -1345,7 +1348,7 @@ msgstr "Coller dans une nouvelle image"
#: Pinta.Core/Actions/EditActions.cs:72
msgid "Delete Selection"
-msgstr ""
+msgstr "Supprimer la sélection"
#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:172
msgid "Fill Selection"
@@ -1361,7 +1364,7 @@ msgstr "Tout sélectionner"
#: Pinta.Core/Actions/EditActions.cs:76
msgid "Deselect All"
-msgstr ""
+msgstr "Tout désélectionner"
#: Pinta.Core/Actions/EditActions.cs:80
msgid "Reset to Default"
diff --git a/po/messages-ga.po b/po/messages-ga.po
index a3ef051..7e542c2 100644
--- a/po/messages-ga.po
+++ b/po/messages-ga.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-gl.po b/po/messages-gl.po
index 0bffd0a..df37f65 100644
--- a/po/messages-gl.po
+++ b/po/messages-gl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-he.po b/po/messages-he.po
index b31cd4a..3732cfc 100644
--- a/po/messages-he.po
+++ b/po/messages-he.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-hr.po b/po/messages-hr.po
index 1a620f2..d5cf5c3 100644
--- a/po/messages-hr.po
+++ b/po/messages-hr.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-hu.po b/po/messages-hu.po
index a5ae332..7e92e3b 100644
--- a/po/messages-hu.po
+++ b/po/messages-hu.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-03 17:51+0000\n"
-"Last-Translator: Jonathan Pobst <Unknown>\n"
+"PO-Revision-Date: 2011-04-03 20:00+0000\n"
+"Last-Translator: Mechanick <Unknown>\n"
"Language-Team: Hungarian <hu at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
@@ -164,7 +164,7 @@ msgstr "Renderelés"
#: Pinta.Effects/Effects/UnfocusEffect.cs:28
msgid "Unfocus"
-msgstr ""
+msgstr "Életlenít"
#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
msgid "Red Eye Removal"
@@ -294,7 +294,7 @@ msgstr "Körvonal"
#: Pinta.Effects/Effects/TwistEffect.cs:26
msgid "Twist"
-msgstr ""
+msgstr "Elcsavarás"
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
@@ -335,14 +335,16 @@ msgid ""
"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
"square."
msgstr ""
+"Kattints és húzd az egeret a téglalap alakú kijelöléshez. Tartsd lenyomva a "
+"Shift-et a négyzet alakú kijelöléshez."
#: Pinta.Tools/CloneStampTool.cs:43
msgid "Clone Stamp"
-msgstr ""
+msgstr "Klónozó bélyegző"
#: Pinta.Tools/CloneStampTool.cs:48
msgid "Ctrl-left click to set origin, left click to paint."
-msgstr ""
+msgstr "Ctrl és bal egér gomb a kijelöléshez, bal egér gomb a festéshez."
#: Pinta.Tools/MagicWandTool.cs:46
msgid "Magic Wand Select"
@@ -350,7 +352,7 @@ msgstr "Kijelölés varázspálcával"
#: Pinta.Tools/MagicWandTool.cs:54
msgid "Click to select region of similar color."
-msgstr ""
+msgstr "Kattints a hasonló színű terület kiválasztásához."
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
@@ -374,37 +376,39 @@ msgstr ""
#: Pinta.Tools/GradientTool.cs:56 Pinta.Tools/GradientTool.cs:167
msgid "Gradient"
-msgstr ""
+msgstr "Színátmenet"
#: Pinta.Tools/GradientTool.cs:64
msgid ""
"Click and drag to draw gradient from primary to secondary color. Right "
"click to reverse."
msgstr ""
+"Bal egér gombbal színátmenetet rajzol az elsődleges színtől a másodlagosik. "
+"Jobb egér gomb a fordított színátmenethez."
#: Pinta.Tools/GradientTool.cs:174
msgid "Linear Gradient"
-msgstr ""
+msgstr "Lineáris színátmenet"
#: Pinta.Tools/GradientTool.cs:175
msgid "Linear Reflected Gradient"
-msgstr ""
+msgstr "Lineáris tükrözött színátmenet"
#: Pinta.Tools/GradientTool.cs:176
msgid "Linear Diamond Gradient"
-msgstr ""
+msgstr "Lineáris rombusz színátmenet"
#: Pinta.Tools/GradientTool.cs:177
msgid "Radial Gradient"
-msgstr ""
+msgstr "Sugárirányú színátmenet"
#: Pinta.Tools/GradientTool.cs:178
msgid "Conical Gradient"
-msgstr ""
+msgstr "Kúpos színátmenet"
#: Pinta.Tools/FloodTool.cs:73
msgid "Flood Mode"
-msgstr ""
+msgstr "Elöntés"
#: Pinta.Tools/FloodTool.cs:80
msgid "Contiguous"
@@ -420,7 +424,7 @@ msgstr "Tűrés"
#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:401
msgid "Paintbrush"
-msgstr ""
+msgstr "Ecset"
#: Pinta.Tools/PaintBrushTool.cs:43 Pinta.Tools/FreeformShapeTool.cs:55
msgid ""
@@ -431,17 +435,19 @@ msgstr ""
#: Pinta.Tools/PaintBrushTool.cs:64
msgid "Type"
-msgstr ""
+msgstr "Típus"
#: Pinta.Tools/PencilTool.cs:48 Pinta.Tools/ColorPickerTool.cs:120
msgid "Pencil"
-msgstr ""
+msgstr "Ceruza"
#: Pinta.Tools/PencilTool.cs:50
msgid ""
"Left click to draw freeform, one-pixel wide lines with the primary color, "
"right click to use the secondary color."
msgstr ""
+"Bal egér gombbal szabad kezű, egy pixel széles vonal az elsődleges színnel, "
+"jobb egér gombbal a másodlagos színnel."
#: Pinta.Tools/EllipseSelectTool.cs:38
msgid "Ellipse Select"
@@ -452,6 +458,7 @@ msgid ""
"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
"circle."
msgstr ""
+"Klikk és húzd elliptikus kijelöléshez, Shift-tel együtt kör kijelöléshez."
#: Pinta.Tools/LineCurveTool.cs:38
msgid "Line"
@@ -465,16 +472,17 @@ msgstr ""
#: Pinta.Tools/EraserTool.cs:45
msgid "Eraser"
-msgstr ""
+msgstr "Radír"
#: Pinta.Tools/EraserTool.cs:47
msgid ""
"Left click to erase to transparent, right click to erase to secondary color. "
msgstr ""
+"Bal egér gombbal átlátszóra töröl, jobb egér gombbal a másodlagos színre. "
#: Pinta.Tools/PanTool.cs:38
msgid "Pan"
-msgstr ""
+msgstr "Kéz eszköz"
#: Pinta.Tools/PanTool.cs:44
msgid "Click and drag to navigate image."
@@ -482,88 +490,96 @@ msgstr "Kattints és húzd a kép navigálásához."
#: Pinta.Tools/ColorPickerTool.cs:44
msgid "Color Picker"
-msgstr ""
+msgstr "Színválasztó"
#: Pinta.Tools/ColorPickerTool.cs:50
msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
+"Bal egér gombbal az elsődleges szín beállításához. Jobb egér gombbal a "
+"másodlagos szín beállításához."
#: Pinta.Tools/ColorPickerTool.cs:62
msgid "After select"
-msgstr ""
+msgstr "Kijelölés után"
#: Pinta.Tools/ColorPickerTool.cs:68
msgid "Do not switch tool"
-msgstr ""
+msgstr "Ne válts eszközt"
#: Pinta.Tools/ColorPickerTool.cs:68
msgid "Switch to previous tool"
-msgstr ""
+msgstr "Váltás az előző eszközre"
#: Pinta.Tools/ColorPickerTool.cs:68
msgid "Switch to Pencil tool"
-msgstr ""
+msgstr "Váltás ceruza eszközre"
#: Pinta.Tools/RoundedRectangleTool.cs:44
msgid "Rounded Rectangle"
-msgstr ""
+msgstr "Lekerekített téglalap"
#: Pinta.Tools/RoundedRectangleTool.cs:50
msgid ""
"Click and drag to draw a rounded rectangle (right click for secondary "
"color). Hold shift to constrain."
msgstr ""
+"Klikk és húzd lekerekített téglalap rajzolásához (jobb egér gombbal a "
+"másodlagos színnel), Shift-tel a négyzet alakhoz."
#: Pinta.Tools/RoundedRectangleTool.cs:83
msgid "Radius"
-msgstr ""
+msgstr "Sugár"
#: Pinta.Tools/RoundedRectangleTool.cs:88
msgid "Decrease rectangle's corner radius"
-msgstr ""
+msgstr "Csökkenti a téglalap sarkának lekerekítési sugarát"
#: Pinta.Tools/RoundedRectangleTool.cs:102
msgid "Increase rectangle's corner radius"
-msgstr ""
+msgstr "Növeli a téglalap sarkának lekerekítési sugarát"
#: Pinta.Tools/MoveSelectedTool.cs:42
#: Pinta.Core/HistoryItems/PasteHistoryItem.cs:70
#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:64
#: Pinta.Core/Actions/EditActions.cs:255
msgid "Move Selected Pixels"
-msgstr ""
+msgstr "A kijelölt pixelek mozgatása"
#: Pinta.Tools/MoveSelectedTool.cs:48
msgid "Drag the selection to move selected content."
-msgstr ""
+msgstr "Húzd a kijelölést a terület elmozdításához"
#: Pinta.Tools/RecolorTool.cs:59
msgid "Recolor"
-msgstr ""
+msgstr "Átszinező"
#: Pinta.Tools/RecolorTool.cs:61
msgid "Left click to replace the secondary color with the primary color."
-msgstr ""
+msgstr "Bal egér gombbal cseréli a másodlagos színt az elsődlegesre."
#: Pinta.Tools/PaintBucketTool.cs:40
msgid "Paint Bucket"
-msgstr ""
+msgstr "Festékes vödör"
#: Pinta.Tools/PaintBucketTool.cs:46
msgid ""
"Left click to fill a region with the primary color, right click to fill with "
"the secondary color."
msgstr ""
+"Bal egér gombbal a terület kitöltése elsődleges színnel, jobb egér gombbal a "
+"másodlagos színnel."
#: Pinta.Tools/EllipseTool.cs:38
msgid "Ellipse"
-msgstr ""
+msgstr "Ellipszis"
#: Pinta.Tools/EllipseTool.cs:44
msgid ""
"Click and drag to draw an ellipse (right click for secondary color). Hold "
"shift to constrain to a circle."
msgstr ""
+"Klikk és húzd ellipszis rajzoláshoz (jobb egér gombbal a másodlagos "
+"színnel). Tartsd lenyomva a Shift-et a szabályos kör alakhoz."
#: Pinta.Tools/TextTool/TextTool.cs:36
msgid "Text"
@@ -607,11 +623,11 @@ msgstr "Jobbra igazítás"
#: Pinta.Tools/TextTool/TextTool.cs:162
msgid "Text Style"
-msgstr ""
+msgstr "Szöveg stílus"
#: Pinta.Tools/TextTool/TextTool.cs:169 Pinta.Tools/Brushes/PlainBrush.cs:38
msgid "Normal"
-msgstr ""
+msgstr "Normál"
#: Pinta.Tools/TextTool/TextTool.cs:170
msgid "Normal and Outline"
@@ -619,27 +635,27 @@ msgstr ""
#: Pinta.Tools/TextTool/TextTool.cs:179
msgid "Outline width"
-msgstr ""
+msgstr "Körvonal vastagság"
#: Pinta.Tools/TextTool/TextTool.cs:184
msgid "Decrease outline size"
-msgstr ""
+msgstr "Csökkenti a körvonal méretét"
#: Pinta.Tools/TextTool/TextTool.cs:201
msgid "Increase outline size"
-msgstr ""
+msgstr "Növeli a körvonal méretét"
#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
msgid "Brush width"
-msgstr ""
+msgstr "Ecset méret"
#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
msgid "Decrease brush size"
-msgstr ""
+msgstr "Csökkenti az ecset méretét"
#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
msgid "Increase brush size"
-msgstr ""
+msgstr "Növeli az ecset méretét"
#: Pinta.Tools/ShapeTool.cs:131 Pinta.Tools/FreeformShapeTool.cs:71
msgid "Fill Style"
@@ -659,37 +675,39 @@ msgstr "Alakzat kitöltése és körvonala"
#: Pinta.Tools/Brushes/CircleBrush.cs:38
msgid "Circles"
-msgstr ""
+msgstr "Kör ecset"
#: Pinta.Tools/Brushes/GridBrush.cs:38
msgid "Grid"
-msgstr ""
+msgstr "Rács"
#: Pinta.Tools/Brushes/SquaresBrush.cs:40
msgid "Squares"
-msgstr ""
+msgstr "Négyzet ecset"
#: Pinta.Tools/Brushes/SplatterBrush.cs:38
msgid "Splatter"
-msgstr ""
+msgstr "Folt ecset"
#: Pinta.Tools/ZoomTool.cs:49
msgid "Zoom"
-msgstr ""
+msgstr "Nagyító"
#: Pinta.Tools/ZoomTool.cs:55
msgid ""
"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
"selection."
msgstr ""
+"Bal egér gombbal nagyít. Jobb egér gombbal kicsinyít. Klikk és húzd a "
+"kijelölésre nagyításhoz."
#: Pinta.Tools/LassoSelectTool.cs:45
msgid "Lasso Select"
-msgstr ""
+msgstr "Lasszó kijelölés"
#: Pinta.Tools/LassoSelectTool.cs:47
msgid "Click and drag to draw the outline for a selection area."
-msgstr ""
+msgstr "Klikk és húzd a kijelöléshez."
#: Pinta.Tools/FreeformShapeTool.cs:53
msgid "Freeform Shape"
@@ -701,51 +719,51 @@ msgstr "Névjegy"
#: Pinta/MainWindow.cs:371 Pinta/MainWindow.cs:387
msgid "..."
-msgstr ""
+msgstr "…"
#: Pinta/MainWindow.cs:456
msgid "_File"
-msgstr ""
+msgstr "_Fájl"
#: Pinta/MainWindow.cs:457
msgid "_Edit"
-msgstr ""
+msgstr "_Szerkesztés"
#: Pinta/MainWindow.cs:459
msgid "_View"
-msgstr ""
+msgstr "_Nézet"
#: Pinta/MainWindow.cs:462
msgid "_Image"
-msgstr ""
+msgstr "_Kép"
#: Pinta/MainWindow.cs:463
msgid "_Layers"
-msgstr ""
+msgstr "_Rétegek"
#: Pinta/MainWindow.cs:464
msgid "_Adjustments"
-msgstr ""
+msgstr "_Korrekciók"
#: Pinta/MainWindow.cs:465
msgid "Effe_cts"
-msgstr ""
+msgstr "_Effektusok"
#: Pinta/MainWindow.cs:467
msgid "_Window"
-msgstr ""
+msgstr "_Ablak"
#: Pinta/MainWindow.cs:471
msgid "Tool Windows"
-msgstr ""
+msgstr "Eszközök ablak"
#: Pinta/MainWindow.cs:475
msgid "_Help"
-msgstr ""
+msgstr "_Súgó"
#: Pinta/MainWindow.cs:557 Pinta/MainWindow.cs:563
msgid "Tools"
-msgstr ""
+msgstr "Eszközök"
#: Pinta/MainWindow.cs:571 Pinta/MainWindow.cs:578
#: Pinta.Core/Actions/EditActions.cs:121
@@ -754,65 +772,65 @@ msgstr "Paletta"
#: Pinta/MainWindow.cs:588
msgid "Documents"
-msgstr ""
+msgstr "Dokumentumok"
#: Pinta/MainWindow.cs:638 Pinta/MainWindow.cs:649
msgid "Layers"
-msgstr ""
+msgstr "Rétegek"
#: Pinta/MainWindow.cs:658 Pinta/MainWindow.cs:665
msgid "History"
-msgstr ""
+msgstr "Előzmények"
#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
msgid "Hide"
-msgstr ""
+msgstr "Elrejt"
#: Pinta/DockLibrary/DockItemContainer.cs:190
msgid "Dock"
-msgstr ""
+msgstr "Dokkolás"
#: Pinta/DockLibrary/DockItemContainer.cs:194
#: Pinta/DockLibrary/DockItem.cs:502
msgid "Auto Hide"
-msgstr ""
+msgstr "Automatikus elrejtés"
#: Pinta/DockLibrary/DockItem.cs:485
msgid "Dockable"
-msgstr ""
+msgstr "Dokkolható"
#: Pinta/DockLibrary/DockItem.cs:493
msgid "Floating"
-msgstr ""
+msgstr "Lebegő"
#: Pinta/DialogHandlers.cs:109
msgid "Take Screenshot"
-msgstr ""
+msgstr "Képernyőkép készítése"
#: Pinta/DialogHandlers.cs:110
msgid "Delay before taking a screenshot (seconds):"
-msgstr ""
+msgstr "Várakozás a képernyő mentés előtt (mp):"
#: Pinta/DialogHandlers.cs:158
#, csharp-format
msgid "Save the changes to image \"{0}\" before closing?"
-msgstr ""
+msgstr "Menti a \"{0}\" -on végzett változtatásokat?"
#: Pinta/DialogHandlers.cs:159
msgid "If you don't save, all changes will be permanently lost."
-msgstr ""
+msgstr "Ha nem menti, akkor minden változtatás véglegesen elvész."
#: Pinta/DialogHandlers.cs:166
msgid "Close without saving"
-msgstr ""
+msgstr "Bezárás mentés nélkül"
#: Pinta/DialogHandlers.cs:193
msgid "Resize Palette"
-msgstr ""
+msgstr "Színek számának változtatása"
#: Pinta/DialogHandlers.cs:194
msgid "New palette size:"
-msgstr ""
+msgstr "Színek száma:"
#: Pinta/DialogHandlers.cs:223 Pinta.Core/Actions/EditActions.cs:70
msgid "Paste Into New Layer"
@@ -820,23 +838,23 @@ msgstr "Beillesztés új rétegre"
#: Pinta/DialogHandlers.cs:320
msgid "Layer Opacity"
-msgstr ""
+msgstr "Réteg átlátszóság"
#: Pinta/DialogHandlers.cs:325
msgid "Rename Layer"
-msgstr ""
+msgstr "Réteg átnevezése"
#: Pinta/DialogHandlers.cs:330
msgid "Hide Layer"
-msgstr ""
+msgstr "Réteg elrejtése"
#: Pinta/DialogHandlers.cs:330
msgid "Show Layer"
-msgstr ""
+msgstr "Réteg megjelenítése"
#: Pinta/DialogHandlers.cs:335 Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44
msgid "Layer Properties"
-msgstr ""
+msgstr "Réteg tulajdonságai"
#: Pinta/DialogHandlers.cs:415 Pinta.Core/Actions/LayerActions.cs:156
msgid "Open Image File"
@@ -844,7 +862,7 @@ msgstr "Kép megnyitása"
#: Pinta/DialogHandlers.cs:423
msgid "Image files"
-msgstr ""
+msgstr "Képfájlok"
#: Pinta/DialogHandlers.cs:427 Pinta.Core/Actions/EditActions.cs:330
msgid "All files"
@@ -852,19 +870,19 @@ msgstr "Minden fájl"
#: Pinta/DialogHandlers.cs:480
msgid "Paste cancelled"
-msgstr ""
+msgstr "Beillesztés megszakítva"
#: Pinta/DialogHandlers.cs:481
msgid "The clipboard does not contain an image"
-msgstr ""
+msgstr "Csak kép illeszthető be"
#: Pinta/DialogHandlers.cs:514
msgid "Save Image File"
-msgstr ""
+msgstr "Kép fájl mentése"
#: Pinta/DialogHandlers.cs:612
msgid "Pinta does not support saving images in this file format."
-msgstr ""
+msgstr "Pinta nem támogatja ezt a fájl formátumot."
#: Pinta/DialogHandlers.cs:613 Pinta.Core/Managers/WorkspaceManager.cs:185
#: Pinta.Core/Actions/EditActions.cs:347
@@ -874,7 +892,7 @@ msgstr "Hiba"
#: Pinta/DialogHandlers.cs:633
#, csharp-format
msgid "A file named \"{0}\" already exists. Do you want to replace it?"
-msgstr ""
+msgstr "\"{0}\" ez a fájl már létezik. Felülírja?"
#: Pinta/DialogHandlers.cs:634
#, csharp-format
@@ -884,43 +902,44 @@ msgstr ""
#: Pinta/Dialogs/JpegCompressionDialog.cs:38
msgid "JPEG Quality"
-msgstr ""
+msgstr "JPEG minőség"
#: Pinta/Dialogs/JpegCompressionDialog.cs:46
msgid "Quality: "
-msgstr ""
+msgstr "Minőség: "
#: Pinta/Dialogs/VersionInformationTabPage.cs:44
msgid "Title"
-msgstr ""
+msgstr "Megnevezés"
#: Pinta/Dialogs/VersionInformationTabPage.cs:50
#: Pinta/Dialogs/AboutPintaTabPage.cs:41
msgid "Version"
-msgstr ""
+msgstr "Verzió"
#: Pinta/Dialogs/VersionInformationTabPage.cs:53
msgid "Path"
-msgstr ""
+msgstr "Elérési út"
#: Pinta/Dialogs/AboutDialog.cs:101
msgid "Contributors to this Release"
-msgstr ""
+msgstr "Közreműködők (jelen verzió)"
#: Pinta/Dialogs/AboutDialog.cs:111
msgid "Previous Contributors"
-msgstr ""
+msgstr "Közreműködők (korábbi verziók)"
#: Pinta/Dialogs/AboutDialog.cs:120
msgid "translator-credits"
msgstr ""
"Launchpad Contributions:\n"
" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Mechanick https://launchpad.net/~info-mechanick\n"
" Vizion-HUN https://launchpad.net/~vizler-k"
#: Pinta/Dialogs/AboutDialog.cs:123
msgid "Translated by:"
-msgstr ""
+msgstr "Fordította:"
#: Pinta/Dialogs/AboutDialog.cs:130
msgid "Based on the work of Paint.NET:"
@@ -928,27 +947,27 @@ msgstr ""
#: Pinta/Dialogs/AboutDialog.cs:137
msgid "Using some icons from:"
-msgstr ""
+msgstr "Néhány ikon forrása:"
#: Pinta/Dialogs/AboutDialog.cs:249
msgid "About Pinta"
-msgstr ""
+msgstr "Pinta névjegy"
#: Pinta/Dialogs/AboutDialog.cs:267
msgid "Version Info"
-msgstr ""
+msgstr "Verzió infó"
#: Pinta/Dialogs/AboutPintaTabPage.cs:50
msgid "License"
-msgstr ""
+msgstr "Licensz"
#: Pinta/Dialogs/AboutPintaTabPage.cs:50
msgid "Released under the MIT X11 License."
-msgstr ""
+msgstr "Kiadva a MIT X11 licensz alatt."
#: Pinta/Dialogs/AboutPintaTabPage.cs:57
msgid "Copyright"
-msgstr ""
+msgstr "Szerzői jog"
#: Pinta/Dialogs/AboutPintaTabPage.cs:57
msgid "by Pinta contributors"
@@ -956,15 +975,15 @@ msgstr ""
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
msgid "Name:"
-msgstr ""
+msgstr "Név:"
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
msgid "Visible"
-msgstr ""
+msgstr "Láthatóság"
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
msgid "Opacity:"
-msgstr ""
+msgstr "Átlátszóság"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
#: Pinta.Core/Classes/Document.cs:612
@@ -974,18 +993,18 @@ msgstr "Rajzvászon átméretezése"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
msgid "By percentage:"
-msgstr ""
+msgstr "Százalékos:"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
msgid "By absolute size:"
-msgstr ""
+msgstr "Méret alapján:"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
msgid "Width:"
-msgstr ""
+msgstr "Szélesség:"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
@@ -994,22 +1013,22 @@ msgstr ""
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
msgid "pixels"
-msgstr ""
+msgstr "képpontok"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
msgid "Height:"
-msgstr ""
+msgstr "Magasság:"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
msgid "Maintain aspect ratio"
-msgstr ""
+msgstr "Méretarány megőrzése"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
msgid "Anchor:"
-msgstr ""
+msgstr "Horgony:"
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
@@ -1023,7 +1042,7 @@ msgstr "Új kép"
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
msgid "New Image Size "
-msgstr ""
+msgstr "Új kép méret "
#: Pinta/Main.cs:68
msgid "number of threads to use for rendering"
@@ -1241,7 +1260,7 @@ msgstr "Kicsinyítés"
#: Pinta.Core/Actions/ViewActions.cs:65
msgid "Best Fit"
-msgstr ""
+msgstr "Legjobb illeszkedés"
#: Pinta.Core/Actions/ViewActions.cs:66
msgid "Zoom to Selection"
@@ -1249,7 +1268,7 @@ msgstr "Nagyítás a kijelölésre"
#: Pinta.Core/Actions/ViewActions.cs:67
msgid "Normal Size"
-msgstr ""
+msgstr "Normál méret"
#: Pinta.Core/Actions/ViewActions.cs:68
msgid "Toolbar"
@@ -1311,7 +1330,7 @@ msgstr "Beillesztés új képként"
#: Pinta.Core/Actions/EditActions.cs:72
msgid "Delete Selection"
-msgstr ""
+msgstr "Kiválasztás törlése"
#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:172
msgid "Fill Selection"
@@ -1327,7 +1346,7 @@ msgstr "Összes kijelölése"
#: Pinta.Core/Actions/EditActions.cs:76
msgid "Deselect All"
-msgstr ""
+msgstr "Kijelölés megszüntetése"
#: Pinta.Core/Actions/EditActions.cs:80
msgid "Reset to Default"
@@ -1362,7 +1381,7 @@ msgstr "Nem sikerült megnyitni a paletta fájlt: {0}."
#: Pinta.Core/Actions/EditActions.cs:359
msgid "Save Palette File"
-msgstr ""
+msgstr "Színskála fájl mentése"
#: Pinta.Core/Actions/EditActions.cs:365
msgid "Paint.NET palette (*.txt)"
@@ -1430,11 +1449,11 @@ msgstr ""
#: ReliefData dialog
#: TwistEffect dialog
msgid "Angle"
-msgstr ""
+msgstr "Szög"
#: CloudsEffect dialog
msgid "Antialias"
-msgstr ""
+msgstr "Élsimítás"
#: GlowEffect dialog
msgid "Blend Mode"
@@ -1442,19 +1461,19 @@ msgstr ""
#: OilPaintingEffect dialog
msgid "Brightness"
-msgstr ""
+msgstr "Fényerő"
#: PixelateData dialog
msgid "Brush Size"
-msgstr ""
+msgstr "Ecset méret"
#: PolarInversionEffect dialog
msgid "Cell Size"
-msgstr ""
+msgstr "Cellaméret"
#: MotionBlurEffect dialog
msgid "Center Offset"
-msgstr ""
+msgstr "Középpont eltolása"
#: OilPaintingEffect dialog
msgid "Centered"
@@ -1466,19 +1485,19 @@ msgstr ""
#: AddNoiseEffect dialog
msgid "Color Range"
-msgstr ""
+msgstr "Színtartomány"
#: InkSketchEffect dialog
msgid "Color Saturation"
-msgstr ""
+msgstr "Színtelítettséget"
#: GlowEffect dialog
msgid "Coloring"
-msgstr ""
+msgstr "Színezés"
#: AddNoiseEffect dialog
msgid "Contrast"
-msgstr ""
+msgstr "Kontraszt"
#: FragmentEffect dialog
msgid "Coverage"
@@ -1487,7 +1506,7 @@ msgstr ""
#: MotionBlurEffect dialog
#: PolarInversionEffect dialog
msgid "Distance"
-msgstr ""
+msgstr "Távolság"
#: JuliaFractalEffect dialog
msgid "Edge Behavior"
@@ -1510,17 +1529,17 @@ msgstr ""
#: OutlineEffect dialog
#: MandelbrotFractalEffect dialog
msgid "Intensity"
-msgstr ""
+msgstr "Intenzitás"
#: RadialBlurEffect dialog
msgid "Lighting"
-msgstr ""
+msgstr "Megvilágítás"
#: ZoomBlurEffect dialog
#: BulgeEffect dialog
#: PencilSketchEffect dialog
msgid "Offset"
-msgstr ""
+msgstr "Eltolás"
#: MedianEffect dialog
msgid "Pencil Tip Size"
@@ -1539,12 +1558,12 @@ msgstr ""
#: MandelbrotFractalEffect dialog
#: GaussianBlurEffect dialog
msgid "Quality"
-msgstr ""
+msgstr "Minőség"
#: TileEffect dialog
#: RedEyeRemoveData dialog
msgid "Rotation"
-msgstr ""
+msgstr "Elforgatás"
#: CloudsEffect dialog
msgid "Saturation percentage"
@@ -1552,7 +1571,7 @@ msgstr ""
#: CloudsEffect dialog
msgid "Scale"
-msgstr ""
+msgstr "Méretarány"
#: SoftenPortraitData dialog
msgid "Seed"
@@ -1564,11 +1583,11 @@ msgstr ""
#: OutlineEffect dialog
msgid "Strength"
-msgstr ""
+msgstr "Erősség"
#: TileEffect dialog
msgid "Thickness"
-msgstr ""
+msgstr "Vastagság"
#: RedEyeRemoveData dialog
msgid "Tile Size"
@@ -1576,7 +1595,7 @@ msgstr ""
#: JuliaFractalEffect dialog
msgid "Warmth"
-msgstr ""
+msgstr "Fraktál hőfok"
#: RadialBlurEffect dialog
msgid ""
diff --git a/po/messages-hy.po b/po/messages-hy.po
index c901dbd..c39cb22 100644
--- a/po/messages-hy.po
+++ b/po/messages-hy.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-03 18:17+0000\n"
+"PO-Revision-Date: 2011-03-30 16:17+0000\n"
"Last-Translator: Jonathan Pobst <Unknown>\n"
"Language-Team: Armenian <hy at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-id.po b/po/messages-id.po
index 7b7a81c..0d97fbd 100644
--- a/po/messages-id.po
+++ b/po/messages-id.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
"X-Poedit-Country: INDONESIA\n"
"X-Poedit-Language: Indonesian\n"
diff --git a/po/messages-it.po b/po/messages-it.po
index 2d745e4..927eeaa 100644
--- a/po/messages-it.po
+++ b/po/messages-it.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-03 18:22+0000\n"
-"Last-Translator: Jonathan Pobst <Unknown>\n"
+"PO-Revision-Date: 2011-04-11 23:47+0000\n"
+"Last-Translator: Davide Lunghi <Unknown>\n"
"Language-Team: Italian <it at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
@@ -487,6 +487,8 @@ msgstr "Gomma"
msgid ""
"Left click to erase to transparent, right click to erase to secondary color. "
msgstr ""
+"Clicca pulsante sinistro per rendere trasparente, clicca pulsante per "
+"cancellare il colore secondario. "
#: Pinta.Tools/PanTool.cs:38
msgid "Pan"
@@ -632,7 +634,7 @@ msgstr "Allinea a destra"
#: Pinta.Tools/TextTool/TextTool.cs:162
msgid "Text Style"
-msgstr ""
+msgstr "Stile di testo"
#: Pinta.Tools/TextTool/TextTool.cs:169 Pinta.Tools/Brushes/PlainBrush.cs:38
msgid "Normal"
@@ -640,19 +642,19 @@ msgstr "Normale"
#: Pinta.Tools/TextTool/TextTool.cs:170
msgid "Normal and Outline"
-msgstr ""
+msgstr "Normale e contornato"
#: Pinta.Tools/TextTool/TextTool.cs:179
msgid "Outline width"
-msgstr ""
+msgstr "Larghezza contorno"
#: Pinta.Tools/TextTool/TextTool.cs:184
msgid "Decrease outline size"
-msgstr ""
+msgstr "Diminuire dimensione contorno"
#: Pinta.Tools/TextTool/TextTool.cs:201
msgid "Increase outline size"
-msgstr ""
+msgstr "Aumentare dimensione contorno"
#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
msgid "Brush width"
@@ -946,6 +948,7 @@ msgid "translator-credits"
msgstr ""
"Launchpad Contributions:\n"
" Daniele Napolitano https://launchpad.net/~dnax88\n"
+" Davide Lunghi https://launchpad.net/~davide-lunghi\n"
" Jonathan Pobst https://launchpad.net/~jpobst\n"
" Kabir94 https://launchpad.net/~kabirsala\n"
" Luca Urbini https://launchpad.net/~luca-urbini\n"
@@ -1282,7 +1285,7 @@ msgstr "Riduci"
#: Pinta.Core/Actions/ViewActions.cs:65
msgid "Best Fit"
-msgstr ""
+msgstr "Adatta alla pagina"
#: Pinta.Core/Actions/ViewActions.cs:66
msgid "Zoom to Selection"
@@ -1290,7 +1293,7 @@ msgstr "Ingrandisci alla selezione"
#: Pinta.Core/Actions/ViewActions.cs:67
msgid "Normal Size"
-msgstr ""
+msgstr "Dimensione normale"
#: Pinta.Core/Actions/ViewActions.cs:68
msgid "Toolbar"
@@ -1352,7 +1355,7 @@ msgstr "Incolla in una nuova immagine"
#: Pinta.Core/Actions/EditActions.cs:72
msgid "Delete Selection"
-msgstr ""
+msgstr "Elimina selezione"
#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:172
msgid "Fill Selection"
@@ -1368,7 +1371,7 @@ msgstr "Seleziona tutto"
#: Pinta.Core/Actions/EditActions.cs:76
msgid "Deselect All"
-msgstr ""
+msgstr "Deseleziona tutto"
#: Pinta.Core/Actions/EditActions.cs:80
msgid "Reset to Default"
diff --git a/po/messages-ja.po b/po/messages-ja.po
index 0c38565..2ed52c2 100644
--- a/po/messages-ja.po
+++ b/po/messages-ja.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-ko.po b/po/messages-ko.po
index 924c8e8..fc82745 100644
--- a/po/messages-ko.po
+++ b/po/messages-ko.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-lt.po b/po/messages-lt.po
index 40581d2..da2bbdb 100644
--- a/po/messages-lt.po
+++ b/po/messages-lt.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2010-09-07 11:02+0000\n"
-"Last-Translator: Rytis Slatkevičius <rytis.s at gmail.com>\n"
+"PO-Revision-Date: 2011-04-10 13:58+0000\n"
+"Last-Translator: pencininkas4 <Unknown>\n"
"Language-Team: Lithuanian <lt at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
@@ -23,11 +23,11 @@ msgstr ""
#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
msgid "Invert Colors"
-msgstr ""
+msgstr "Invertuoti spalvas"
#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
msgid "Levels"
-msgstr ""
+msgstr "Lygiai"
#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
msgid "Sepia"
@@ -49,7 +49,7 @@ msgstr ""
#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
msgid "Brightness / Contrast"
-msgstr ""
+msgstr "Šviesumas/ Kontrastas"
#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
msgid "Hue / Saturation"
@@ -910,7 +910,8 @@ msgid "translator-credits"
msgstr ""
"Launchpad Contributions:\n"
" Mantas Kriaučiūnas https://launchpad.net/~mantas\n"
-" Rytis Slatkevičius https://launchpad.net/~rytis-s"
+" Rytis Slatkevičius https://launchpad.net/~rytis-s\n"
+" pencininkas4 https://launchpad.net/~pencininkas4"
#: Pinta/Dialogs/AboutDialog.cs:123
msgid "Translated by:"
diff --git a/po/messages-nb.po b/po/messages-nb.po
index 9039558..f93ff44 100644
--- a/po/messages-nb.po
+++ b/po/messages-nb.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-nl.po b/po/messages-nl.po
index 4d318ca..ea96701 100644
--- a/po/messages-nl.po
+++ b/po/messages-nl.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-03 17:40+0000\n"
-"Last-Translator: Jonathan Pobst <Unknown>\n"
+"PO-Revision-Date: 2011-04-01 18:53+0000\n"
+"Last-Translator: Harry Slieker <Unknown>\n"
"Language-Team: Dutch <nl at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
@@ -936,6 +936,7 @@ msgstr ""
"Launchpad Contributions:\n"
" Harry Slieker https://launchpad.net/~harryslieker\n"
" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Richard Prins https://launchpad.net/~pewpewaliens\n"
" Tijmen Rekmans https://launchpad.net/~tijmenr"
#: Pinta/Dialogs/AboutDialog.cs:123
@@ -1129,7 +1130,7 @@ msgstr "Deze applicatie vertalen"
#: Pinta.Core/Actions/WindowActions.cs:45
msgid "Save All"
-msgstr "Sla alles op"
+msgstr "Alles opslaan"
#: Pinta.Core/Actions/WindowActions.cs:46
msgid "Close All"
diff --git a/po/messages-pl.po b/po/messages-pl.po
index 4f9c0e0..59ec169 100644
--- a/po/messages-pl.po
+++ b/po/messages-pl.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-20 20:12+0000\n"
-"Last-Translator: Patryk Wychowaniec <patryk1303 at gmail.com>\n"
+"PO-Revision-Date: 2011-04-04 07:10+0000\n"
+"Last-Translator: skrzat <Unknown>\n"
"Language-Team: Polish <pl at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
@@ -959,7 +959,8 @@ msgstr ""
" doiges https://launchpad.net/~bohopicasso\n"
" eeree https://launchpad.net/~eeree\n"
" jacek https://launchpad.net/~yacka71\n"
-" pp/bs https://launchpad.net/~pawprok"
+" pp/bs https://launchpad.net/~pawprok\n"
+" skrzat https://launchpad.net/~radek-floraland"
#: Pinta/Dialogs/AboutDialog.cs:123
msgid "Translated by:"
@@ -1370,7 +1371,7 @@ msgstr "Zaznacz wszystko"
#: Pinta.Core/Actions/EditActions.cs:76
msgid "Deselect All"
-msgstr ""
+msgstr "Odznacz wszystko"
#: Pinta.Core/Actions/EditActions.cs:80
msgid "Reset to Default"
diff --git a/po/messages-pt.po b/po/messages-pt.po
index e3b1282..5721d2c 100644
--- a/po/messages-pt.po
+++ b/po/messages-pt.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-pt_BR.po b/po/messages-pt_BR.po
index 5fbfdd2..f7b7dfc 100644
--- a/po/messages-pt_BR.po
+++ b/po/messages-pt_BR.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-ro.po b/po/messages-ro.po
index 0d07bbf..00c1ec1 100644
--- a/po/messages-ro.po
+++ b/po/messages-ro.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-ru.po b/po/messages-ru.po
index 69082c3..c27187a 100644
--- a/po/messages-ru.po
+++ b/po/messages-ru.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-29 16:23+0000\n"
-"Last-Translator: jeder <Unknown>\n"
+"PO-Revision-Date: 2011-04-13 20:01+0000\n"
+"Last-Translator: Polivoda Roman <Unknown>\n"
"Language-Team: Russian <ru at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
@@ -637,19 +637,19 @@ msgstr "Обычный"
#: Pinta.Tools/TextTool/TextTool.cs:170
msgid "Normal and Outline"
-msgstr ""
+msgstr "Нормальный и контурный"
#: Pinta.Tools/TextTool/TextTool.cs:179
msgid "Outline width"
-msgstr ""
+msgstr "Ширина контура"
#: Pinta.Tools/TextTool/TextTool.cs:184
msgid "Decrease outline size"
-msgstr ""
+msgstr "Уменьшить размер контура"
#: Pinta.Tools/TextTool/TextTool.cs:201
msgid "Increase outline size"
-msgstr ""
+msgstr "Увеличить размер контура"
#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
msgid "Brush width"
@@ -942,10 +942,13 @@ msgstr ""
"Launchpad Contributions:\n"
" Alexey Ivanov https://launchpad.net/~alexey-ivanov\n"
" Anzhel https://launchpad.net/~a9227\n"
+" Chubakur https://launchpad.net/~chubakur\n"
" Eugene Rozov https://launchpad.net/~eugene-rozov\n"
" Jonathan Pobst https://launchpad.net/~jpobst\n"
" Maia Kozheva https://launchpad.net/~sikon\n"
" Nikita Putko https://launchpad.net/~ktototam98\n"
+" Nkolay Parukhin https://launchpad.net/~parukhin\n"
+" Polivoda Roman https://launchpad.net/~rom-polivoda\n"
" Stepan Kislan https://launchpad.net/~stepa87\n"
" jeder https://launchpad.net/~i-jeder\n"
" ma$terok https://launchpad.net/~m-shein"
diff --git a/po/messages-sk.po b/po/messages-sk.po
index 0fd94c3..2e566dc 100644
--- a/po/messages-sk.po
+++ b/po/messages-sk.po
@@ -8,18 +8,18 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2010-12-18 14:17+0000\n"
+"PO-Revision-Date: 2011-04-15 08:14+0000\n"
"Last-Translator: DAG Software <Unknown>\n"
"Language-Team: Slovak <sk at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
-msgstr "Automatické úrovne"
+msgstr "Auto úrovne"
#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
msgid "Invert Colors"
@@ -82,7 +82,7 @@ msgstr "Automaticky"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
msgid "Reset"
-msgstr "Zresetovať"
+msgstr "Pôvodné"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
msgid "Red"
@@ -127,7 +127,7 @@ msgstr "Modrá "
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
msgid "Tip: Right-click to remove control points."
-msgstr "Tip: Kliknite pravým na odstránenie kontrolných bodov."
+msgstr "Tip: Kliknutím pravým tlačidlom odstránite kontrolné body."
#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
msgid "Reduce Noise"
@@ -269,7 +269,7 @@ msgstr "Pixelizovať"
#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
msgid "Motion Blur"
-msgstr "Rozostriť pohybom"
+msgstr "Rozostrenie pohybom"
#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
msgid "Polar Inversion"
@@ -335,7 +335,7 @@ msgid ""
"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
"square."
msgstr ""
-"Kliknutím a ťahaním nakresliť obdĺžnikový výber. Držaním Shift obmedzíte na "
+"Kliknutím a ťahaním nakreslíte obdĺžnikový výber. Držaním Shift obmedzíte na "
"štvorec."
#: Pinta.Tools/CloneStampTool.cs:43
@@ -383,7 +383,7 @@ msgid ""
"Click and drag to draw gradient from primary to secondary color. Right "
"click to reverse."
msgstr ""
-"Kliknutím a ťahaním nakresliť prechod od primárnej k sekundárnej farbe. "
+"Kliknutím a ťahaním nakreslíte prechod od primárnej k sekundárnej farbe. "
"Kliknutie pravým tlačidlom kreslí obrátene."
#: Pinta.Tools/GradientTool.cs:174
@@ -431,8 +431,8 @@ msgid ""
"Left click to draw with primary color, right click to draw with secondary "
"color."
msgstr ""
-"Kliknutím ľavým tlačidlom kresliť primárnou farbou, kliknutím pravým "
-"tlačidlom kresliť sekundárnou farbou."
+"Kliknutím ľavým tlačidlom kreslíte primárnou farbou, kliknutím pravým "
+"tlačidlom kreslíte sekundárnou farbou."
#: Pinta.Tools/PaintBrushTool.cs:64
msgid "Type"
@@ -459,7 +459,7 @@ msgid ""
"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
"circle."
msgstr ""
-"Kliknutím a ťahaním nakresliť elliptický výber. Držaním shift obmedzenie na "
+"Kliknutím a ťahaním nakreslíte elliptický výber. Držaním Shift obmedzíte na "
"kružnicu."
#: Pinta.Tools/LineCurveTool.cs:38
@@ -470,8 +470,8 @@ msgstr "Čiara"
msgid ""
"Left click to draw with primary color, right click for secondary color."
msgstr ""
-"Kliknutím ľavým tlačidlom kresliť primárnou farbou, kliknutím pravým "
-"tlačidlom kresliť sekundárnou farbou."
+"Kliknutím ľavým tlačidlom kreslíte primárnou farbou, kliknutím pravým "
+"tlačidlom kreslíte sekundárnou farbou."
#: Pinta.Tools/EraserTool.cs:45
msgid "Eraser"
@@ -480,11 +480,11 @@ msgstr "Guma"
#: Pinta.Tools/EraserTool.cs:47
msgid ""
"Left click to erase to transparent, right click to erase to secondary color. "
-msgstr ""
+msgstr "Ľavým klikom mažete do priehľadna, pravým do sekundárnej farby. "
#: Pinta.Tools/PanTool.cs:38
msgid "Pan"
-msgstr "Posun"
+msgstr "Posúvanie"
#: Pinta.Tools/PanTool.cs:44
msgid "Click and drag to navigate image."
@@ -525,7 +525,7 @@ msgid ""
"Click and drag to draw a rounded rectangle (right click for secondary "
"color). Hold shift to constrain."
msgstr ""
-"Kliknutím a ťahaním nakresliť zaoblený obdĺžnik (kliknutím pravým tlačidlom "
+"Kliknutím a ťahaním nakreslíte zaoblený obdĺžnik (kliknutím pravým tlačidlom "
"v sekundárnej farbe). Držaním Shift obmedzíte na štvorec."
#: Pinta.Tools/RoundedRectangleTool.cs:83
@@ -545,7 +545,7 @@ msgstr "Zväčšiť polomer zaoblenia rohov"
#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:64
#: Pinta.Core/Actions/EditActions.cs:255
msgid "Move Selected Pixels"
-msgstr "Presunúť vybarné pixle"
+msgstr "Presunúť vybrané pixle"
#: Pinta.Tools/MoveSelectedTool.cs:48
msgid "Drag the selection to move selected content."
@@ -580,8 +580,8 @@ msgid ""
"Click and drag to draw an ellipse (right click for secondary color). Hold "
"shift to constrain to a circle."
msgstr ""
-"Kliknutím a ťahaním nakresliť elipsu (kliknutím pravým tlačidlom sekundárnou "
-"farbou). Držaním Shift obmedzíte na kružnicu."
+"Kliknutím a ťahaním nakreslíte elipsu (kliknutím pravým tlačidlom "
+"sekundárnou farbou). Držaním Shift obmedzíte na kružnicu."
#: Pinta.Tools/TextTool/TextTool.cs:36
msgid "Text"
@@ -625,7 +625,7 @@ msgstr "Zarovnať doprava"
#: Pinta.Tools/TextTool/TextTool.cs:162
msgid "Text Style"
-msgstr ""
+msgstr "Štýl textu"
#: Pinta.Tools/TextTool/TextTool.cs:169 Pinta.Tools/Brushes/PlainBrush.cs:38
msgid "Normal"
@@ -633,19 +633,19 @@ msgstr "Normálny"
#: Pinta.Tools/TextTool/TextTool.cs:170
msgid "Normal and Outline"
-msgstr ""
+msgstr "Normálny a obrys"
#: Pinta.Tools/TextTool/TextTool.cs:179
msgid "Outline width"
-msgstr ""
+msgstr "Šírka obrysu"
#: Pinta.Tools/TextTool/TextTool.cs:184
msgid "Decrease outline size"
-msgstr ""
+msgstr "Zmenšiť veľosť obrysu"
#: Pinta.Tools/TextTool/TextTool.cs:201
msgid "Increase outline size"
-msgstr ""
+msgstr "Zväčšiť veľosť obrysu"
#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
msgid "Brush width"
@@ -717,7 +717,7 @@ msgstr "Voľný tvar"
#: Pinta/MainWindow.cs:146 Pinta.Core/Actions/HelpActions.cs:53
msgid "About"
-msgstr "O programe"
+msgstr "O aplikácii"
#: Pinta/MainWindow.cs:371 Pinta/MainWindow.cs:387
msgid "..."
@@ -761,7 +761,7 @@ msgstr "Okná nástrojov"
#: Pinta/MainWindow.cs:475
msgid "_Help"
-msgstr "_Nápoveda"
+msgstr "_Pomocník"
#: Pinta/MainWindow.cs:557 Pinta/MainWindow.cs:563
msgid "Tools"
@@ -807,11 +807,11 @@ msgstr "Plávajúce"
#: Pinta/DialogHandlers.cs:109
msgid "Take Screenshot"
-msgstr "Spraviť snímok obrazovky"
+msgstr "Zachytiť snímku obrazovky"
#: Pinta/DialogHandlers.cs:110
msgid "Delay before taking a screenshot (seconds):"
-msgstr "Omeškanie pred spravením snímku obrazovky (v sekundách):"
+msgstr "Oneskorenie pred zachytením snímky obrazovky (v sekundách):"
#: Pinta/DialogHandlers.cs:158
#, csharp-format
@@ -945,7 +945,7 @@ msgstr "Preložili:"
#: Pinta/Dialogs/AboutDialog.cs:130
msgid "Based on the work of Paint.NET:"
-msgstr "Založené na práci Paint.NET-u:"
+msgstr "Založené na diele Paint.NET:"
#: Pinta/Dialogs/AboutDialog.cs:137
msgid "Using some icons from:"
@@ -953,7 +953,7 @@ msgstr "Použité niektoré ikony z:"
#: Pinta/Dialogs/AboutDialog.cs:249
msgid "About Pinta"
-msgstr "O programe Pinta"
+msgstr "O aplikácii Pinta"
#: Pinta/Dialogs/AboutDialog.cs:267
msgid "Version Info"
@@ -973,7 +973,7 @@ msgstr "Autorské práva"
#: Pinta/Dialogs/AboutPintaTabPage.cs:57
msgid "by Pinta contributors"
-msgstr "od Pinta prispievateľov"
+msgstr "prispievatelia projektu Pinta"
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
msgid "Name:"
@@ -1142,7 +1142,7 @@ msgstr "Nový..."
#: Pinta.Core/Actions/FileActions.cs:55
msgid "New Screenshot..."
-msgstr "Nový snímok obrazovky"
+msgstr "Nová snímka obrazovky..."
#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
msgid "Open..."
@@ -1262,7 +1262,7 @@ msgstr "Oddialiť"
#: Pinta.Core/Actions/ViewActions.cs:65
msgid "Best Fit"
-msgstr ""
+msgstr "Prispôsobiť"
#: Pinta.Core/Actions/ViewActions.cs:66
msgid "Zoom to Selection"
@@ -1270,7 +1270,7 @@ msgstr "Priblížiť na výber"
#: Pinta.Core/Actions/ViewActions.cs:67
msgid "Normal Size"
-msgstr ""
+msgstr "Normálna veľkosť"
#: Pinta.Core/Actions/ViewActions.cs:68
msgid "Toolbar"
@@ -1278,7 +1278,7 @@ msgstr "Panel nástrojov"
#: Pinta.Core/Actions/ViewActions.cs:69
msgid "Pixel Grid"
-msgstr "Pixelová mriežka"
+msgstr "Mriežka pixlov"
#: Pinta.Core/Actions/ViewActions.cs:70
msgid "Rulers"
@@ -1286,7 +1286,7 @@ msgstr "Pravítka"
#: Pinta.Core/Actions/ViewActions.cs:71
msgid "Pixels"
-msgstr "Pixely"
+msgstr "Pixle"
#: Pinta.Core/Actions/ViewActions.cs:72
msgid "Inches"
@@ -1332,7 +1332,7 @@ msgstr "Vložiť do nového obrázka"
#: Pinta.Core/Actions/EditActions.cs:72
msgid "Delete Selection"
-msgstr ""
+msgstr "Zmazať výber"
#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:172
msgid "Fill Selection"
@@ -1348,7 +1348,7 @@ msgstr "Vybrať všetko"
#: Pinta.Core/Actions/EditActions.cs:76
msgid "Deselect All"
-msgstr ""
+msgstr "Zrušiť výber"
#: Pinta.Core/Actions/EditActions.cs:80
msgid "Reset to Default"
@@ -1389,7 +1389,7 @@ msgstr "Uložiť súbor palety"
#: Pinta.Core/Actions/EditActions.cs:365
msgid "Paint.NET palette (*.txt)"
-msgstr "Paint.NET paleta (*.txt)"
+msgstr "Paleta Paint.NET (*.txt)"
#: Pinta.Core/Actions/EditActions.cs:370
msgid "GIMP palette (*.gpl)"
@@ -1443,7 +1443,7 @@ msgstr "Všeobecné"
#: SharpenData dialog
#: MotionBlurEffect dialog
msgid "Amount"
-msgstr "Množstvo"
+msgstr "Stupeň"
#: RadialBlurEffect dialog
#: JuliaFractalEffect dialog
diff --git a/po/messages-sl.po b/po/messages-sl.po
index f1ae5ff..66fda0f 100644
--- a/po/messages-sl.po
+++ b/po/messages-sl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-sr.po b/po/messages-sr.po
index eb6b029..81fa9b9 100644
--- a/po/messages-sr.po
+++ b/po/messages-sr.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-sv.po b/po/messages-sv.po
index af7754a..531f8de 100644
--- a/po/messages-sv.po
+++ b/po/messages-sv.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-03 17:44+0000\n"
-"Last-Translator: Jonathan Pobst <Unknown>\n"
+"PO-Revision-Date: 2011-04-06 17:54+0000\n"
+"Last-Translator: Tom Mannerhagen <Unknown>\n"
"Language-Team: Swedish <sv at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
@@ -482,6 +482,8 @@ msgstr "Suddgummi"
msgid ""
"Left click to erase to transparent, right click to erase to secondary color. "
msgstr ""
+"Vänsterklicka för att radera till transparent, högerklicka för att radera "
+"till sekundär färg. "
#: Pinta.Tools/PanTool.cs:38
msgid "Pan"
@@ -626,7 +628,7 @@ msgstr "Högerjustera"
#: Pinta.Tools/TextTool/TextTool.cs:162
msgid "Text Style"
-msgstr ""
+msgstr "Text stil"
#: Pinta.Tools/TextTool/TextTool.cs:169 Pinta.Tools/Brushes/PlainBrush.cs:38
msgid "Normal"
@@ -634,19 +636,19 @@ msgstr "Normal"
#: Pinta.Tools/TextTool/TextTool.cs:170
msgid "Normal and Outline"
-msgstr ""
+msgstr "Normal och Konturlinje"
#: Pinta.Tools/TextTool/TextTool.cs:179
msgid "Outline width"
-msgstr ""
+msgstr "Bredd på konturlinje"
#: Pinta.Tools/TextTool/TextTool.cs:184
msgid "Decrease outline size"
-msgstr ""
+msgstr "Minska konturlinje"
#: Pinta.Tools/TextTool/TextTool.cs:201
msgid "Increase outline size"
-msgstr ""
+msgstr "Öka konturlinje"
#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
msgid "Brush width"
@@ -939,7 +941,8 @@ msgstr ""
"Launchpad Contributions:\n"
" David Bengtsson https://launchpad.net/~justfaking\n"
" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" Phoenix https://launchpad.net/~thephoenix"
+" Phoenix https://launchpad.net/~thephoenix\n"
+" Tom Mannerhagen https://launchpad.net/~tom-mannerhagen-gmail"
#: Pinta/Dialogs/AboutDialog.cs:123
msgid "Translated by:"
@@ -1264,7 +1267,7 @@ msgstr "Zooma ut"
#: Pinta.Core/Actions/ViewActions.cs:65
msgid "Best Fit"
-msgstr ""
+msgstr "Bästa passning"
#: Pinta.Core/Actions/ViewActions.cs:66
msgid "Zoom to Selection"
@@ -1272,7 +1275,7 @@ msgstr "Zooma till markering"
#: Pinta.Core/Actions/ViewActions.cs:67
msgid "Normal Size"
-msgstr ""
+msgstr "Normal storlek"
#: Pinta.Core/Actions/ViewActions.cs:68
msgid "Toolbar"
@@ -1334,7 +1337,7 @@ msgstr "Klistra in i ny bild"
#: Pinta.Core/Actions/EditActions.cs:72
msgid "Delete Selection"
-msgstr ""
+msgstr "Ta bort markering"
#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:172
msgid "Fill Selection"
@@ -1350,7 +1353,7 @@ msgstr "Markera allt"
#: Pinta.Core/Actions/EditActions.cs:76
msgid "Deselect All"
-msgstr ""
+msgstr "Avmarkera allt"
#: Pinta.Core/Actions/EditActions.cs:80
msgid "Reset to Default"
diff --git a/po/messages-th.po b/po/messages-th.po
index 92c29b8..ba58578 100644
--- a/po/messages-th.po
+++ b/po/messages-th.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-tr.po b/po/messages-tr.po
index 48c63bb..59e8eb3 100644
--- a/po/messages-tr.po
+++ b/po/messages-tr.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-uk.po b/po/messages-uk.po
index 5f0fecf..9971b71 100644
--- a/po/messages-uk.po
+++ b/po/messages-uk.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-03 18:02+0000\n"
-"Last-Translator: Jonathan Pobst <Unknown>\n"
+"PO-Revision-Date: 2011-04-05 07:25+0000\n"
+"Last-Translator: Fedik <Unknown>\n"
"Language-Team: Ukrainian <uk at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
@@ -624,7 +624,7 @@ msgstr "Рівняння праворуч"
#: Pinta.Tools/TextTool/TextTool.cs:162
msgid "Text Style"
-msgstr ""
+msgstr "Стиль Тексту"
#: Pinta.Tools/TextTool/TextTool.cs:169 Pinta.Tools/Brushes/PlainBrush.cs:38
msgid "Normal"
@@ -935,6 +935,7 @@ msgid "translator-credits"
msgstr ""
"Launchpad Contributions:\n"
" Eugene Rozov https://launchpad.net/~eugene-rozov\n"
+" Fedik https://launchpad.net/~fedikw\n"
" Jonathan Pobst https://launchpad.net/~jpobst\n"
" UaHummer https://launchpad.net/~uahummer\n"
" ma$terok https://launchpad.net/~m-shein"
@@ -1262,7 +1263,7 @@ msgstr "Зменшити"
#: Pinta.Core/Actions/ViewActions.cs:65
msgid "Best Fit"
-msgstr ""
+msgstr "Найкраще заповнення"
#: Pinta.Core/Actions/ViewActions.cs:66
msgid "Zoom to Selection"
@@ -1270,7 +1271,7 @@ msgstr "По розміру виділення"
#: Pinta.Core/Actions/ViewActions.cs:67
msgid "Normal Size"
-msgstr ""
+msgstr "Нормальний розмір"
#: Pinta.Core/Actions/ViewActions.cs:68
msgid "Toolbar"
@@ -1332,7 +1333,7 @@ msgstr "Вставити як нове зображення"
#: Pinta.Core/Actions/EditActions.cs:72
msgid "Delete Selection"
-msgstr ""
+msgstr "Вилучити вибране"
#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:172
msgid "Fill Selection"
@@ -1348,7 +1349,7 @@ msgstr "Виділити все"
#: Pinta.Core/Actions/EditActions.cs:76
msgid "Deselect All"
-msgstr ""
+msgstr "Зняти виділення"
#: Pinta.Core/Actions/EditActions.cs:80
msgid "Reset to Default"
diff --git a/po/messages-vi.po b/po/messages-vi.po
index b8f9dae..5d57ffc 100644
--- a/po/messages-vi.po
+++ b/po/messages-vi.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
diff --git a/po/messages-zh_CN.po b/po/messages-zh_CN.po
index 873b1a5..3615af7 100644
--- a/po/messages-zh_CN.po
+++ b/po/messages-zh_CN.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2011-02-28 17:08-0600\n"
-"PO-Revision-Date: 2011-03-10 11:11+0000\n"
+"PO-Revision-Date: 2011-04-08 01:41+0000\n"
"Last-Translator: Xhacker Liu <liu.dongyuan at gmail.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:51+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
@@ -342,7 +342,7 @@ msgstr "仿制图章"
#: Pinta.Tools/CloneStampTool.cs:48
msgid "Ctrl-left click to set origin, left click to paint."
-msgstr ""
+msgstr "按住 Ctrl 键点击设置源点,然后点击进行涂抹。"
#: Pinta.Tools/MagicWandTool.cs:46
msgid "Magic Wand Select"
@@ -386,7 +386,7 @@ msgstr "线性渐变"
#: Pinta.Tools/GradientTool.cs:175
msgid "Linear Reflected Gradient"
-msgstr ""
+msgstr "双线性渐变"
#: Pinta.Tools/GradientTool.cs:176
msgid "Linear Diamond Gradient"
@@ -406,11 +406,11 @@ msgstr "填充模式"
#: Pinta.Tools/FloodTool.cs:80
msgid "Contiguous"
-msgstr "连续"
+msgstr "区域"
#: Pinta.Tools/FloodTool.cs:81
msgid "Global"
-msgstr ""
+msgstr "整个区域"
#: Pinta.Tools/FloodTool.cs:92 Pinta.Tools/RecolorTool.cs:73
msgid "Tolerance"
diff --git a/po/messages-zh_TW.po b/po/messages-zh_TW.po
index cf14097..decb9f3 100644
--- a/po/messages-zh_TW.po
+++ b/po/messages-zh_TW.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-29 21:32+0000\n"
-"X-Generator: Launchpad (build 12684)\n"
+"X-Launchpad-Export-Date: 2011-04-20 23:50+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
--
pinta
More information about the Pkg-cli-apps-commits
mailing list