diff options
author | 2012-04-15 14:51:19 +0100 | |
---|---|---|
committer | 2012-04-15 14:51:19 +0100 | |
commit | 535b0908fbc1f4372d0b53f71f5b72958e9e8831 (patch) | |
tree | cbf2f6926291ab722ef80312f895dbebd28418db | |
parent | a65d3c7ab5776b4d6eb4c1a44f3eafaaf015e54a (diff) | |
download | paludis-535b0908fbc1f4372d0b53f71f5b72958e9e8831.tar.gz paludis-535b0908fbc1f4372d0b53f71f5b72958e9e8831.tar.xz |
GCC 4.7 does visibility differently
63 files changed, 445 insertions, 282 deletions
diff --git a/paludis/about_metadata.hh b/paludis/about_metadata.hh index 6621427e7..ecc18cfea 100644 --- a/paludis/about_metadata.hh +++ b/paludis/about_metadata.hh @@ -35,6 +35,8 @@ namespace paludis { + extern template class PALUDIS_VISIBLE Singleton<AboutMetadata>; + /** * Information about Paludis, provided as MetadataKey instances. * @@ -58,7 +60,6 @@ namespace paludis }; extern template class Pimp<AboutMetadata>; - extern template class Singleton<AboutMetadata>; } #endif diff --git a/paludis/action.cc b/paludis/action.cc index 4231d7dc4..11e1c399b 100644 --- a/paludis/action.cc +++ b/paludis/action.cc @@ -332,7 +332,8 @@ namespace paludis template class Pimp<InfoAction>; template class Pimp<ConfigAction>; - template class Sequence<FetchActionFailure>; - template class WrappedForwardIterator<Sequence<FetchActionFailure>::ConstIteratorTag, const FetchActionFailure>; - template class WrappedOutputIterator<Sequence<FetchActionFailure>::InserterTag, FetchActionFailure>; + template class PALUDIS_VISIBLE Sequence<FetchActionFailure>; + template class PALUDIS_VISIBLE WrappedForwardIterator<Sequence<FetchActionFailure>::ConstIteratorTag, const FetchActionFailure>; + template class PALUDIS_VISIBLE WrappedOutputIterator<Sequence<FetchActionFailure>::InserterTag, FetchActionFailure>; } + diff --git a/paludis/additional_package_dep_spec_requirement.hh b/paludis/additional_package_dep_spec_requirement.hh index 318e75d9c..a04ef0bc3 100644 --- a/paludis/additional_package_dep_spec_requirement.hh +++ b/paludis/additional_package_dep_spec_requirement.hh @@ -111,8 +111,8 @@ namespace paludis virtual const std::string as_raw_string() const PALUDIS_ATTRIBUTE((warn_unused_result)) = 0; }; - extern template class Sequence<std::shared_ptr<const AdditionalPackageDepSpecRequirement> >; - extern template class WrappedForwardIterator<AdditionalPackageDepSpecRequirements::ConstIteratorTag, + extern template class PALUDIS_VISIBLE Sequence<std::shared_ptr<const AdditionalPackageDepSpecRequirement> >; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<AdditionalPackageDepSpecRequirements::ConstIteratorTag, const std::shared_ptr<const AdditionalPackageDepSpecRequirement> >; } diff --git a/paludis/always_enabled_dependency_label.hh b/paludis/always_enabled_dependency_label.hh index ed0c5d804..ca58b8758 100644 --- a/paludis/always_enabled_dependency_label.hh +++ b/paludis/always_enabled_dependency_label.hh @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2010 Ciaran McCreesh + * Copyright (c) 2010, 2011 Ciaran McCreesh * * This file is part of the Paludis package manager. Paludis is free software; * you can redistribute it and/or modify it under the terms of the GNU General @@ -43,15 +43,15 @@ namespace paludis const std::shared_ptr<const PackageID> &) const; }; - extern template class AlwaysEnabledDependencyLabel<DependenciesBuildLabelTag>; - extern template class AlwaysEnabledDependencyLabel<DependenciesRunLabelTag>; - extern template class AlwaysEnabledDependencyLabel<DependenciesPostLabelTag>; - extern template class AlwaysEnabledDependencyLabel<DependenciesCompileAgainstLabelTag>; - extern template class AlwaysEnabledDependencyLabel<DependenciesFetchLabelTag>; - extern template class AlwaysEnabledDependencyLabel<DependenciesInstallLabelTag>; - extern template class AlwaysEnabledDependencyLabel<DependenciesSuggestionLabelTag>; - extern template class AlwaysEnabledDependencyLabel<DependenciesRecommendationLabelTag>; - extern template class AlwaysEnabledDependencyLabel<DependenciesTestLabelTag>; + extern template class PALUDIS_VISIBLE AlwaysEnabledDependencyLabel<DependenciesBuildLabelTag>; + extern template class PALUDIS_VISIBLE AlwaysEnabledDependencyLabel<DependenciesRunLabelTag>; + extern template class PALUDIS_VISIBLE AlwaysEnabledDependencyLabel<DependenciesPostLabelTag>; + extern template class PALUDIS_VISIBLE AlwaysEnabledDependencyLabel<DependenciesCompileAgainstLabelTag>; + extern template class PALUDIS_VISIBLE AlwaysEnabledDependencyLabel<DependenciesFetchLabelTag>; + extern template class PALUDIS_VISIBLE AlwaysEnabledDependencyLabel<DependenciesInstallLabelTag>; + extern template class PALUDIS_VISIBLE AlwaysEnabledDependencyLabel<DependenciesSuggestionLabelTag>; + extern template class PALUDIS_VISIBLE AlwaysEnabledDependencyLabel<DependenciesRecommendationLabelTag>; + extern template class PALUDIS_VISIBLE AlwaysEnabledDependencyLabel<DependenciesTestLabelTag>; } #endif diff --git a/paludis/args/args_group.hh b/paludis/args/args_group.hh index d1f56e59a..cbedc4cbb 100644 --- a/paludis/args/args_group.hh +++ b/paludis/args/args_group.hh @@ -126,7 +126,7 @@ namespace paludis }; } - extern template class WrappedForwardIterator<args::ArgsGroup::ConstIteratorTag, args::ArgsOption * const>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<args::ArgsGroup::ConstIteratorTag, args::ArgsOption * const>; } #endif diff --git a/paludis/args/args_handler.hh b/paludis/args/args_handler.hh index 4d338179e..85599264d 100644 --- a/paludis/args/args_handler.hh +++ b/paludis/args/args_handler.hh @@ -325,17 +325,17 @@ namespace paludis std::ostream & operator<< (std::ostream &, const ArgsHandler &) PALUDIS_VISIBLE; } - extern template class WrappedForwardIterator<args::ArgsHandler::ParametersConstIteratorTag, const std::string>; - extern template class WrappedForwardIterator<args::ArgsHandler::UsageLineConstIteratorTag, const std::string>; - extern template class WrappedForwardIterator<args::ArgsHandler::EnvironmentLineConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<args::ArgsHandler::ParametersConstIteratorTag, const std::string>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<args::ArgsHandler::UsageLineConstIteratorTag, const std::string>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<args::ArgsHandler::EnvironmentLineConstIteratorTag, const std::pair<std::string, std::string> >; - extern template class WrappedForwardIterator<args::ArgsHandler::ExamplesConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<args::ArgsHandler::ExamplesConstIteratorTag, const std::pair<std::string, std::string> >; - extern template class WrappedForwardIterator<args::ArgsHandler::ArgsSectionsConstIteratorTag, const args::ArgsSection>; - extern template class WrappedForwardIterator<args::ArgsHandler::DescriptionLineConstIteratorTag, const std::string>; - extern template class WrappedForwardIterator<args::ArgsHandler::NotesIteratorTag, const std::string>; - extern template class WrappedForwardIterator<args::ArgsHandler::ArgsIteratorTag, std::string>; - extern template class WrappedForwardIterator<args::ArgsHandler::SeeAlsoConstIteratorTag, const std::pair<std::string, int> >; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<args::ArgsHandler::ArgsSectionsConstIteratorTag, const args::ArgsSection>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<args::ArgsHandler::DescriptionLineConstIteratorTag, const std::string>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<args::ArgsHandler::NotesIteratorTag, const std::string>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<args::ArgsHandler::ArgsIteratorTag, std::string>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<args::ArgsHandler::SeeAlsoConstIteratorTag, const std::pair<std::string, int> >; } #endif diff --git a/paludis/args/args_option.hh b/paludis/args/args_option.hh index 6131cccfd..cea351f1c 100644 --- a/paludis/args/args_option.hh +++ b/paludis/args/args_option.hh @@ -654,11 +654,11 @@ namespace paludis }; } - extern template class WrappedForwardIterator<args::StringSetArg::ConstIteratorTag, const std::string>; - extern template class WrappedForwardIterator<args::StringSetArg::AllowedArgConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<args::StringSetArg::ConstIteratorTag, const std::string>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<args::StringSetArg::AllowedArgConstIteratorTag, const std::pair<std::string, std::string> >; - extern template class WrappedForwardIterator<args::StringSequenceArg::ConstIteratorTag, const std::string>; - extern template class WrappedForwardIterator<args::EnumArg::AllowedArgConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<args::StringSequenceArg::ConstIteratorTag, const std::string>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<args::EnumArg::AllowedArgConstIteratorTag, const args::AllowedEnumArg>; } diff --git a/paludis/args/args_section.hh b/paludis/args/args_section.hh index 6d20608d6..5422575e4 100644 --- a/paludis/args/args_section.hh +++ b/paludis/args/args_section.hh @@ -61,7 +61,7 @@ namespace paludis } extern template class Pimp<args::ArgsSection>; - extern template class WrappedForwardIterator<args::ArgsSection::GroupsConstIteratorTag, const args::ArgsGroup>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<args::ArgsSection::GroupsConstIteratorTag, const args::ArgsGroup>; } #endif diff --git a/paludis/broken_linkage_configuration.hh b/paludis/broken_linkage_configuration.hh index f67815979..e394810f2 100644 --- a/paludis/broken_linkage_configuration.hh +++ b/paludis/broken_linkage_configuration.hh @@ -52,7 +52,7 @@ namespace paludis bool lib_is_masked(const std::string &) const PALUDIS_ATTRIBUTE((warn_unused_result)); }; - extern template class WrappedForwardIterator<BrokenLinkageConfiguration::DirsIteratorTag, const FSPath>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<BrokenLinkageConfiguration::DirsIteratorTag, const FSPath>; } #endif diff --git a/paludis/choice.cc b/paludis/choice.cc index 1d28f5482..94d881ec3 100644 --- a/paludis/choice.cc +++ b/paludis/choice.cc @@ -344,6 +344,7 @@ namespace paludis template class WrappedOutputIterator<Set<UnprefixedChoiceName>::InserterTag, UnprefixedChoiceName>; } -template std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<UnprefixedChoiceNameTag> &); -template std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<ChoicePrefixNameTag> &); -template std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<ChoiceNameWithPrefixTag> &); +template PALUDIS_VISIBLE std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<UnprefixedChoiceNameTag> &); +template PALUDIS_VISIBLE std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<ChoicePrefixNameTag> &); +template PALUDIS_VISIBLE std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<ChoiceNameWithPrefixTag> &); + diff --git a/paludis/choice.hh b/paludis/choice.hh index 7090b1dff..0f24664a6 100644 --- a/paludis/choice.hh +++ b/paludis/choice.hh @@ -28,6 +28,9 @@ #include <paludis/util/exception.hh> #include <paludis/util/named_value.hh> #include <paludis/util/wrapped_value.hh> +#include <paludis/util/set.hh> +#include <paludis/util/wrapped_forward_iterator.hh> +#include <paludis/util/wrapped_output_iterator.hh> #include <memory> #include <string> @@ -107,6 +110,8 @@ namespace paludis static bool validate(const std::string &) PALUDIS_ATTRIBUTE((warn_unused_result)); }; + extern template class PALUDIS_VISIBLE WrappedValue<ChoicePrefixNameTag>; + template <> struct WrappedValueTraits<UnprefixedChoiceNameTag> { @@ -117,6 +122,8 @@ namespace paludis static bool validate(const std::string &) PALUDIS_ATTRIBUTE((warn_unused_result)); }; + extern template class PALUDIS_VISIBLE WrappedValue<UnprefixedChoiceNameTag>; + template <> struct WrappedValueTraits<ChoiceNameWithPrefixTag> { @@ -127,6 +134,8 @@ namespace paludis static bool validate(const std::string &) PALUDIS_ATTRIBUTE((warn_unused_result)); }; + extern template class PALUDIS_VISIBLE WrappedValue<ChoiceNameWithPrefixTag>; + /** * Choices holds a collection of configurable values for a PackageID. * @@ -388,8 +397,12 @@ namespace paludis extern template class Pimp<Choices>; extern template class Pimp<Choice>; - extern template class WrappedForwardIterator<Choices::ConstIteratorTag, const std::shared_ptr<const Choice> >; - extern template class WrappedForwardIterator<Choice::ConstIteratorTag, const std::shared_ptr<const ChoiceValue> >; + extern template class PALUDIS_VISIBLE Set<UnprefixedChoiceName>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Set<UnprefixedChoiceName>::ConstIteratorTag, const UnprefixedChoiceName>; + extern template class PALUDIS_VISIBLE WrappedOutputIterator<Set<UnprefixedChoiceName>::InserterTag, UnprefixedChoiceName>; + + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Choices::ConstIteratorTag, const std::shared_ptr<const Choice> >; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Choice::ConstIteratorTag, const std::shared_ptr<const ChoiceValue> >; } #endif diff --git a/paludis/contents.hh b/paludis/contents.hh index 818f55b84..f4358c2a2 100644 --- a/paludis/contents.hh +++ b/paludis/contents.hh @@ -235,7 +235,7 @@ namespace paludis extern template class Pimp<ContentsEntry>; extern template class Pimp<ContentsSymEntry>; - extern template class WrappedForwardIterator<Contents::ConstIteratorTag, const std::shared_ptr<const ContentsEntry> >; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Contents::ConstIteratorTag, const std::shared_ptr<const ContentsEntry> >; } #endif diff --git a/paludis/dep_label.cc b/paludis/dep_label.cc index a13ce70a9..eb1df38d1 100644 --- a/paludis/dep_label.cc +++ b/paludis/dep_label.cc @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2007, 2008, 2009, 2010 Ciaran McCreesh + * Copyright (c) 2007, 2008, 2009, 2010, 2011 Ciaran McCreesh * * This file is part of the Paludis package manager. Paludis is free software; * you can redistribute it and/or modify it under the terms of the GNU General diff --git a/paludis/dep_label.hh b/paludis/dep_label.hh index b62bac02f..e09e0fb39 100644 --- a/paludis/dep_label.hh +++ b/paludis/dep_label.hh @@ -156,24 +156,25 @@ namespace paludis typedef T_ Tag; }; - extern template class SpecificURILabel<URIMirrorsThenListedLabelTag>; - extern template class SpecificURILabel<URIMirrorsOnlyLabelTag>; - extern template class SpecificURILabel<URIListedOnlyLabelTag>; - extern template class SpecificURILabel<URIListedThenMirrorsLabelTag>; - extern template class SpecificURILabel<URILocalMirrorsOnlyLabelTag>; - extern template class SpecificURILabel<URIManualOnlyLabelTag>; - - extern template class SpecificDependenciesLabel<DependenciesBuildLabelTag>; - extern template class SpecificDependenciesLabel<DependenciesRunLabelTag>; - extern template class SpecificDependenciesLabel<DependenciesPostLabelTag>; - extern template class SpecificDependenciesLabel<DependenciesCompileAgainstLabelTag>; - extern template class SpecificDependenciesLabel<DependenciesFetchLabelTag>; - extern template class SpecificDependenciesLabel<DependenciesInstallLabelTag>; - extern template class SpecificDependenciesLabel<DependenciesSuggestionLabelTag>; - extern template class SpecificDependenciesLabel<DependenciesRecommendationLabelTag>; - extern template class SpecificDependenciesLabel<DependenciesTestLabelTag>; - - extern template class WrappedForwardIterator<Sequence<std::shared_ptr<const DependenciesLabel> >::ConstIteratorTag, + extern template class PALUDIS_VISIBLE SpecificURILabel<URIMirrorsThenListedLabelTag>; + extern template class PALUDIS_VISIBLE SpecificURILabel<URIMirrorsOnlyLabelTag>; + extern template class PALUDIS_VISIBLE SpecificURILabel<URIListedOnlyLabelTag>; + extern template class PALUDIS_VISIBLE SpecificURILabel<URIListedThenMirrorsLabelTag>; + extern template class PALUDIS_VISIBLE SpecificURILabel<URILocalMirrorsOnlyLabelTag>; + extern template class PALUDIS_VISIBLE SpecificURILabel<URIManualOnlyLabelTag>; + + extern template class PALUDIS_VISIBLE SpecificDependenciesLabel<DependenciesBuildLabelTag>; + extern template class PALUDIS_VISIBLE SpecificDependenciesLabel<DependenciesRunLabelTag>; + extern template class PALUDIS_VISIBLE SpecificDependenciesLabel<DependenciesPostLabelTag>; + extern template class PALUDIS_VISIBLE SpecificDependenciesLabel<DependenciesCompileAgainstLabelTag>; + extern template class PALUDIS_VISIBLE SpecificDependenciesLabel<DependenciesFetchLabelTag>; + extern template class PALUDIS_VISIBLE SpecificDependenciesLabel<DependenciesInstallLabelTag>; + extern template class PALUDIS_VISIBLE SpecificDependenciesLabel<DependenciesSuggestionLabelTag>; + extern template class PALUDIS_VISIBLE SpecificDependenciesLabel<DependenciesRecommendationLabelTag>; + extern template class PALUDIS_VISIBLE SpecificDependenciesLabel<DependenciesTestLabelTag>; + + extern template class PALUDIS_VISIBLE Sequence<std::shared_ptr<const DependenciesLabel> >; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Sequence<std::shared_ptr<const DependenciesLabel> >::ConstIteratorTag, const std::shared_ptr<const DependenciesLabel> >; } diff --git a/paludis/dep_spec.hh b/paludis/dep_spec.hh index 07a307683..9f8254345 100644 --- a/paludis/dep_spec.hh +++ b/paludis/dep_spec.hh @@ -57,6 +57,15 @@ namespace paludis { + extern template class PALUDIS_VISIBLE Cloneable<DepSpec>; + extern template class Pimp<ConditionalDepSpec>; + extern template class PALUDIS_VISIBLE CloneUsingThis<DepSpec, ConditionalDepSpec>; + extern template class Pimp<PackageDepSpec>; + extern template class PALUDIS_VISIBLE CloneUsingThis<DepSpec, PackageDepSpec>; + extern template class Pimp<DependenciesLabelsDepSpec>; + extern template class Pimp<URILabelsDepSpec>; + extern template class Pimp<PlainTextLabelDepSpec>; + /** * Base class for a dependency spec. * @@ -680,18 +689,9 @@ namespace paludis const std::string label() const PALUDIS_ATTRIBUTE((warn_unused_result)); }; - extern template class Cloneable<DepSpec>; - extern template class Pimp<ConditionalDepSpec>; - extern template class CloneUsingThis<DepSpec, ConditionalDepSpec>; - extern template class Pimp<PackageDepSpec>; - extern template class CloneUsingThis<DepSpec, PackageDepSpec>; - extern template class Pimp<DependenciesLabelsDepSpec>; - extern template class Pimp<URILabelsDepSpec>; - extern template class Pimp<PlainTextLabelDepSpec>; - - extern template class WrappedForwardIterator<DependenciesLabelsDepSpec::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<DependenciesLabelsDepSpec::ConstIteratorTag, const std::shared_ptr<const DependenciesLabel> >; - extern template class WrappedForwardIterator<URILabelsDepSpec::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<URILabelsDepSpec::ConstIteratorTag, const std::shared_ptr<const URILabel> >; } diff --git a/paludis/dep_spec_annotations.hh b/paludis/dep_spec_annotations.hh index 08245b0ef..29fc1e252 100644 --- a/paludis/dep_spec_annotations.hh +++ b/paludis/dep_spec_annotations.hh @@ -65,7 +65,7 @@ namespace paludis }; extern template class Pimp<DepSpecAnnotations>; - extern template class WrappedForwardIterator<DepSpecAnnotations::ConstIteratorTag, const DepSpecAnnotation>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<DepSpecAnnotations::ConstIteratorTag, const DepSpecAnnotation>; } #endif diff --git a/paludis/dep_spec_flattener.hh b/paludis/dep_spec_flattener.hh index 5871524e9..8cd312a50 100644 --- a/paludis/dep_spec_flattener.hh +++ b/paludis/dep_spec_flattener.hh @@ -118,15 +118,15 @@ namespace paludis ///\} }; - extern template class DepSpecFlattener<PlainTextSpecTree, PlainTextDepSpec>; - extern template class DepSpecFlattener<SetSpecTree, PackageDepSpec>; - extern template class DepSpecFlattener<SimpleURISpecTree, SimpleURIDepSpec>; + extern template class PALUDIS_VISIBLE DepSpecFlattener<PlainTextSpecTree, PlainTextDepSpec>; + extern template class PALUDIS_VISIBLE DepSpecFlattener<SetSpecTree, PackageDepSpec>; + extern template class PALUDIS_VISIBLE DepSpecFlattener<SimpleURISpecTree, SimpleURIDepSpec>; - extern template class WrappedForwardIterator<DepSpecFlattener<PlainTextSpecTree, PlainTextDepSpec>::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<DepSpecFlattener<PlainTextSpecTree, PlainTextDepSpec>::ConstIteratorTag, const std::shared_ptr<const PlainTextDepSpec> >; - extern template class WrappedForwardIterator<DepSpecFlattener<SetSpecTree, PackageDepSpec>::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<DepSpecFlattener<SetSpecTree, PackageDepSpec>::ConstIteratorTag, const std::shared_ptr<const PackageDepSpec> >; - extern template class WrappedForwardIterator<DepSpecFlattener<SimpleURISpecTree, SimpleURIDepSpec>::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<DepSpecFlattener<SimpleURISpecTree, SimpleURIDepSpec>::ConstIteratorTag, const std::shared_ptr<const SimpleURIDepSpec> >; } diff --git a/paludis/distribution.hh b/paludis/distribution.hh index acdff2039..a8327a74a 100644 --- a/paludis/distribution.hh +++ b/paludis/distribution.hh @@ -42,6 +42,8 @@ namespace paludis { + extern template class PALUDIS_VISIBLE Singleton<DistributionData>; + namespace n { typedef Name<struct name_concept_keyword> concept_keyword; @@ -157,8 +159,6 @@ namespace paludis const Distribution &) const PALUDIS_ATTRIBUTE((warn_unused_result)); }; - - extern template class Singleton<DistributionData>; } #endif diff --git a/paludis/environment.hh b/paludis/environment.hh index 8e6b5ff55..984b16e37 100644 --- a/paludis/environment.hh +++ b/paludis/environment.hh @@ -728,8 +728,8 @@ namespace paludis extern template class Pimp<CreateOutputManagerForRepositorySyncInfo>; extern template class Pimp<CreateOutputManagerForPackageIDActionInfo>; - extern template class WrappedForwardIterator<Environment::RepositoryConstIteratorTag, const std::shared_ptr<Repository> >; - extern template class WrappedForwardIterator<AmbiguousPackageNameError::OptionsConstIteratorTag, const std::string>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Environment::RepositoryConstIteratorTag, const std::shared_ptr<Repository> >; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<AmbiguousPackageNameError::OptionsConstIteratorTag, const std::string>; } #endif diff --git a/paludis/environment_factory.hh b/paludis/environment_factory.hh index 6a5acf6da..cb3fc902c 100644 --- a/paludis/environment_factory.hh +++ b/paludis/environment_factory.hh @@ -32,6 +32,8 @@ namespace paludis { + extern template class PALUDIS_VISIBLE Singleton<EnvironmentFactory>; + class PALUDIS_VISIBLE FallBackToAnotherFormatError { }; @@ -91,7 +93,6 @@ namespace paludis void register_environment(const EnvironmentClass_ * const, EnvironmentFactory * const); extern template class Pimp<EnvironmentFactory>; - extern template class Singleton<EnvironmentFactory>; } #endif diff --git a/paludis/filter.hh b/paludis/filter.hh index b32027b79..c79a111ae 100644 --- a/paludis/filter.hh +++ b/paludis/filter.hh @@ -301,13 +301,13 @@ namespace paludis } extern template class Pimp<Filter>; - extern template class filter::SupportsAction<InstallAction>; - extern template class filter::SupportsAction<UninstallAction>; - extern template class filter::SupportsAction<PretendAction>; - extern template class filter::SupportsAction<ConfigAction>; - extern template class filter::SupportsAction<FetchAction>; - extern template class filter::SupportsAction<InfoAction>; - extern template class filter::SupportsAction<PretendFetchAction>; + extern template class PALUDIS_VISIBLE filter::SupportsAction<InstallAction>; + extern template class PALUDIS_VISIBLE filter::SupportsAction<UninstallAction>; + extern template class PALUDIS_VISIBLE filter::SupportsAction<PretendAction>; + extern template class PALUDIS_VISIBLE filter::SupportsAction<ConfigAction>; + extern template class PALUDIS_VISIBLE filter::SupportsAction<FetchAction>; + extern template class PALUDIS_VISIBLE filter::SupportsAction<InfoAction>; + extern template class PALUDIS_VISIBLE filter::SupportsAction<PretendFetchAction>; } #endif diff --git a/paludis/fuzzy_finder.hh b/paludis/fuzzy_finder.hh index 90d1047e8..73f37b8d9 100644 --- a/paludis/fuzzy_finder.hh +++ b/paludis/fuzzy_finder.hh @@ -99,8 +99,8 @@ namespace paludis ///\} }; - extern template class WrappedForwardIterator<FuzzyCandidatesFinder::CandidatesConstIteratorTag, const QualifiedPackageName>; - extern template class WrappedForwardIterator<FuzzyRepositoriesFinder::RepositoriesConstIteratorTag, const RepositoryName>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<FuzzyCandidatesFinder::CandidatesConstIteratorTag, const QualifiedPackageName>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<FuzzyRepositoriesFinder::RepositoriesConstIteratorTag, const RepositoryName>; } diff --git a/paludis/hook.hh b/paludis/hook.hh index b750bee96..cfa252efc 100644 --- a/paludis/hook.hh +++ b/paludis/hook.hh @@ -155,7 +155,7 @@ namespace paludis PALUDIS_ATTRIBUTE((warn_unused_result)); }; - extern template class WrappedForwardIterator<Hook::ConstIteratorTag, const std::pair<const std::string, std::string> >; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Hook::ConstIteratorTag, const std::pair<const std::string, std::string> >; } extern "C" paludis::HookResult PALUDIS_VISIBLE paludis_hook_run_3( diff --git a/paludis/maintainer.hh b/paludis/maintainer.hh index cca6dc266..72eba42c7 100644 --- a/paludis/maintainer.hh +++ b/paludis/maintainer.hh @@ -47,8 +47,8 @@ namespace paludis NamedValue<n::email, std::string> email; }; - extern template class Sequence<Maintainer>; - extern template class WrappedForwardIterator<Sequence<Maintainer>::ConstIteratorTag, const Maintainer>; + extern template class PALUDIS_VISIBLE Sequence<Maintainer>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Sequence<Maintainer>::ConstIteratorTag, const Maintainer>; } #endif diff --git a/paludis/metadata_key_holder.hh b/paludis/metadata_key_holder.hh index 28daca298..cb42ae92b 100644 --- a/paludis/metadata_key_holder.hh +++ b/paludis/metadata_key_holder.hh @@ -76,7 +76,7 @@ namespace paludis ///\} }; - extern template class WrappedForwardIterator<MetadataKeyHolder::MetadataConstIteratorTag, const std::shared_ptr<const MetadataKey> >; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<MetadataKeyHolder::MetadataConstIteratorTag, const std::shared_ptr<const MetadataKey> >; } #endif diff --git a/paludis/name.cc b/paludis/name.cc index c73b391d2..15de46ac7 100644 --- a/paludis/name.cc +++ b/paludis/name.cc @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2005, 2006, 2007, 2008, 2009, 2010 Ciaran McCreesh + * Copyright (c) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Ciaran McCreesh * * This file is part of the Paludis package manager. Paludis is free software; * you can redistribute it and/or modify it under the terms of the GNU General @@ -35,51 +35,50 @@ using namespace paludis; namespace paludis { - template struct Sequence<RepositoryName>; - template struct WrappedForwardIterator<Sequence<RepositoryName>::ConstIteratorTag, const RepositoryName>; + template struct WrappedValue<RepositoryNameTag>; + template struct WrappedValue<CategoryNamePartTag>; + template struct WrappedValue<PackageNamePartTag>; + template struct WrappedValue<SlotNameTag>; + template struct WrappedValue<KeywordNameTag>; + template struct WrappedValue<SetNameTag>; + + template struct PALUDIS_VISIBLE Sequence<RepositoryName>; + template struct PALUDIS_VISIBLE WrappedForwardIterator<Sequence<RepositoryName>::ConstIteratorTag, const RepositoryName>; - template struct Set<RepositoryName>; - template struct WrappedForwardIterator<Set<RepositoryName>::ConstIteratorTag, const RepositoryName>; - template struct WrappedOutputIterator<Set<RepositoryName>::InserterTag, RepositoryName>; + template struct PALUDIS_VISIBLE Set<RepositoryName>; + template struct PALUDIS_VISIBLE WrappedForwardIterator<Set<RepositoryName>::ConstIteratorTag, const RepositoryName>; + template struct PALUDIS_VISIBLE WrappedOutputIterator<Set<RepositoryName>::InserterTag, RepositoryName>; - template struct Set<PackageNamePart>; - template struct WrappedForwardIterator<Set<PackageNamePart>::ConstIteratorTag, const PackageNamePart>; - template struct WrappedOutputIterator<Set<PackageNamePart>::InserterTag, PackageNamePart>; + template struct PALUDIS_VISIBLE Set<PackageNamePart>; + template struct PALUDIS_VISIBLE WrappedForwardIterator<Set<PackageNamePart>::ConstIteratorTag, const PackageNamePart>; + template struct PALUDIS_VISIBLE WrappedOutputIterator<Set<PackageNamePart>::InserterTag, PackageNamePart>; - template struct Set<CategoryNamePart>; - template struct WrappedForwardIterator<Set<CategoryNamePart>::ConstIteratorTag, const CategoryNamePart>; - template struct WrappedOutputIterator<Set<CategoryNamePart>::InserterTag, CategoryNamePart>; + template struct PALUDIS_VISIBLE Set<CategoryNamePart>; + template struct PALUDIS_VISIBLE WrappedForwardIterator<Set<CategoryNamePart>::ConstIteratorTag, const CategoryNamePart>; + template struct PALUDIS_VISIBLE WrappedOutputIterator<Set<CategoryNamePart>::InserterTag, CategoryNamePart>; template struct Set<QualifiedPackageName>; template struct WrappedForwardIterator<Set<QualifiedPackageName>::ConstIteratorTag, const QualifiedPackageName>; template struct WrappedOutputIterator<Set<QualifiedPackageName>::InserterTag, QualifiedPackageName>; - template struct Set<KeywordName>; - template struct WrappedForwardIterator<Set<KeywordName>::ConstIteratorTag, const KeywordName>; - template struct WrappedOutputIterator<Set<KeywordName>::InserterTag, KeywordName>; + template struct PALUDIS_VISIBLE Set<KeywordName>; + template struct PALUDIS_VISIBLE WrappedForwardIterator<Set<KeywordName>::ConstIteratorTag, const KeywordName>; + template struct PALUDIS_VISIBLE WrappedOutputIterator<Set<KeywordName>::InserterTag, KeywordName>; - template struct Set<SetName>; - template struct WrappedForwardIterator<Set<SetName>::ConstIteratorTag, const SetName>; - template struct WrappedOutputIterator<Set<SetName>::InserterTag, SetName>; + template struct PALUDIS_VISIBLE Set<SetName>; + template struct PALUDIS_VISIBLE WrappedForwardIterator<Set<SetName>::ConstIteratorTag, const SetName>; + template struct PALUDIS_VISIBLE WrappedOutputIterator<Set<SetName>::InserterTag, SetName>; - template struct Set<std::string>; - template struct WrappedForwardIterator<Set<std::string>::ConstIteratorTag, const std::string>; - template struct WrappedOutputIterator<Set<std::string>::InserterTag, std::string>; - - template struct WrappedValue<RepositoryNameTag>; - template struct WrappedValue<CategoryNamePartTag>; - template struct WrappedValue<PackageNamePartTag>; - template struct WrappedValue<SlotNameTag>; - template struct WrappedValue<KeywordNameTag>; - template struct WrappedValue<SetNameTag>; + template struct PALUDIS_VISIBLE WrappedForwardIterator<Set<std::string>::ConstIteratorTag, const std::string>; + template struct PALUDIS_VISIBLE WrappedOutputIterator<Set<std::string>::InserterTag, std::string>; } -template std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<RepositoryNameTag> &); -template std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<CategoryNamePartTag> &); -template std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<PackageNamePartTag> &); -template std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<SlotNameTag> &); -template std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<KeywordNameTag> &); -template std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<SetNameTag> &); +template PALUDIS_VISIBLE std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<RepositoryNameTag> &); +template PALUDIS_VISIBLE std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<CategoryNamePartTag> &); +template PALUDIS_VISIBLE std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<PackageNamePartTag> &); +template PALUDIS_VISIBLE std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<SlotNameTag> &); +template PALUDIS_VISIBLE std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<KeywordNameTag> &); +template PALUDIS_VISIBLE std::ostream & paludis::operator<< (std::ostream &, const WrappedValue<SetNameTag> &); std::ostream & paludis::operator<< (std::ostream & s, const QualifiedPackageName & q) diff --git a/paludis/name.hh b/paludis/name.hh index f386ecb59..b0f56c23c 100644 --- a/paludis/name.hh +++ b/paludis/name.hh @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2005, 2006, 2007, 2008, 2010 Ciaran McCreesh + * Copyright (c) 2005, 2006, 2007, 2008, 2010, 2011 Ciaran McCreesh * * This file is part of the Paludis package manager. Paludis is free software; * you can redistribute it and/or modify it under the terms of the GNU General @@ -24,6 +24,9 @@ #include <paludis/util/exception.hh> #include <paludis/util/wrapped_value.hh> #include <paludis/util/operators.hh> +#include <paludis/util/set.hh> +#include <paludis/util/wrapped_forward_iterator.hh> +#include <paludis/util/wrapped_output_iterator.hh> #include <string> #include <iosfwd> @@ -67,6 +70,8 @@ namespace paludis static bool validate(const std::string &) PALUDIS_ATTRIBUTE((warn_unused_result)); }; + extern template struct PALUDIS_VISIBLE WrappedValue<PackageNamePartTag>; + /** * A CategoryNamePartError is thrown if an invalid value is assigned to * a CategoryNamePart. @@ -94,6 +99,8 @@ namespace paludis static bool validate(const std::string &) PALUDIS_ATTRIBUTE((warn_unused_result)); }; + extern template struct PALUDIS_VISIBLE WrappedValue<CategoryNamePartTag>; + /** * Represents a category plus package name. * @@ -236,6 +243,15 @@ namespace paludis static bool validate(const std::string &) PALUDIS_ATTRIBUTE((warn_unused_result)); }; + + extern template struct PALUDIS_VISIBLE WrappedValue<RepositoryNameTag>; + extern template struct PALUDIS_VISIBLE WrappedValue<SlotNameTag>; + extern template struct PALUDIS_VISIBLE WrappedValue<KeywordNameTag>; + extern template struct PALUDIS_VISIBLE WrappedValue<SetNameTag>; + + extern template struct PALUDIS_VISIBLE Set<QualifiedPackageName>; + extern template struct PALUDIS_VISIBLE WrappedForwardIterator<Set<QualifiedPackageName>::ConstIteratorTag, const QualifiedPackageName>; + extern template struct PALUDIS_VISIBLE WrappedOutputIterator<Set<QualifiedPackageName>::InserterTag, QualifiedPackageName>; } #endif diff --git a/paludis/notifier_callback.hh b/paludis/notifier_callback.hh index 9fbf59798..c97038d1f 100644 --- a/paludis/notifier_callback.hh +++ b/paludis/notifier_callback.hh @@ -97,7 +97,6 @@ namespace paludis }; extern template class Pimp<ScopedNotifierCallback>; - } #endif diff --git a/paludis/output_manager_factory.hh b/paludis/output_manager_factory.hh index 5705f149e..189dfe735 100644 --- a/paludis/output_manager_factory.hh +++ b/paludis/output_manager_factory.hh @@ -33,6 +33,8 @@ namespace paludis { + extern template class PALUDIS_VISIBLE Singleton<OutputManagerFactory>; + class PALUDIS_VISIBLE OutputManagerFactory : public Singleton<OutputManagerFactory> { @@ -103,8 +105,7 @@ namespace paludis }; extern template class Pimp<OutputManagerFactory>; - extern template class Singleton<OutputManagerFactory>; - extern template class WrappedForwardIterator<OutputManagerFactory::ConstIteratorTag, const std::string>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<OutputManagerFactory::ConstIteratorTag, const std::string>; } #endif diff --git a/paludis/package_id.cc b/paludis/package_id.cc index 8053d61aa..b870c2e82 100644 --- a/paludis/package_id.cc +++ b/paludis/package_id.cc @@ -255,3 +255,4 @@ namespace paludis template class WrappedForwardIterator<PackageID::MasksConstIteratorTag, const std::shared_ptr<const Mask> >; template class WrappedForwardIterator<PackageID::OverriddenMasksConstIteratorTag, const std::shared_ptr<const OverriddenMask> >; } + diff --git a/paludis/package_id.hh b/paludis/package_id.hh index 65d32e8f7..91e932b0d 100644 --- a/paludis/package_id.hh +++ b/paludis/package_id.hh @@ -26,7 +26,10 @@ #include <paludis/util/operators.hh> #include <paludis/util/pimp.hh> #include <paludis/util/wrapped_forward_iterator.hh> +#include <paludis/util/wrapped_output_iterator.hh> #include <paludis/util/fs_path-fwd.hh> +#include <paludis/util/set.hh> +#include <paludis/util/sequence.hh> #include <paludis/action-fwd.hh> #include <paludis/dep_spec-fwd.hh> @@ -463,8 +466,22 @@ namespace paludis const std::shared_ptr<const PackageID> &) const; }; - extern template class WrappedForwardIterator<PackageID::MasksConstIteratorTag, const std::shared_ptr<const Mask> >; - extern template class WrappedForwardIterator<PackageID::OverriddenMasksConstIteratorTag, const std::shared_ptr<const OverriddenMask> >; + extern template class PALUDIS_VISIBLE Sequence<std::shared_ptr<const PackageID> >; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Sequence<std::shared_ptr<const PackageID> >::ConstIteratorTag, + const std::shared_ptr<const PackageID> >; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Sequence<std::shared_ptr<const PackageID> >::ReverseConstIteratorTag, + const std::shared_ptr<const PackageID> >; + extern template class PALUDIS_VISIBLE WrappedOutputIterator<Sequence<std::shared_ptr<const PackageID> >::InserterTag, + std::shared_ptr<const PackageID> >; + + extern template class PALUDIS_VISIBLE Set<std::shared_ptr<const PackageID>, PackageIDSetComparator>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Set<std::shared_ptr<const PackageID>, PackageIDSetComparator>::ConstIteratorTag, + const std::shared_ptr<const PackageID> >; + extern template class PALUDIS_VISIBLE WrappedOutputIterator<Set<std::shared_ptr<const PackageID>, PackageIDSetComparator>::InserterTag, + std::shared_ptr<const PackageID> >; + + extern template class PALUDIS_VISIBLE WrappedForwardIterator<PackageID::MasksConstIteratorTag, const std::shared_ptr<const Mask> >; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<PackageID::OverriddenMasksConstIteratorTag, const std::shared_ptr<const OverriddenMask> >; } #endif diff --git a/paludis/repositories/e/glsa.hh b/paludis/repositories/e/glsa.hh index 612f6190d..726b8c4af 100644 --- a/paludis/repositories/e/glsa.hh +++ b/paludis/repositories/e/glsa.hh @@ -190,6 +190,10 @@ namespace paludis */ std::string title() const; }; + + extern template class PALUDIS_VISIBLE WrappedForwardIterator<GLSAPackage::ArchsConstIteratorTag, const std::string>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<GLSAPackage::RangesConstIteratorTag, const erepository::GLSARange>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<GLSA::PackagesConstIteratorTag, const GLSAPackage>; } #endif diff --git a/paludis/repositories/e/metadata_xml.cc b/paludis/repositories/e/metadata_xml.cc index 7e12e186c..73d22ba63 100644 --- a/paludis/repositories/e/metadata_xml.cc +++ b/paludis/repositories/e/metadata_xml.cc @@ -87,7 +87,7 @@ MetadataXMLPool::metadata_if_exists(const FSPath & f) const namespace paludis { - template class Map<ChoiceNameWithPrefix, std::string>; + template class PALUDIS_VISIBLE Map<ChoiceNameWithPrefix, std::string>; template class Pimp<MetadataXMLPool>; template class Singleton<MetadataXMLPool>; } diff --git a/paludis/repository_factory.hh b/paludis/repository_factory.hh index d98463023..52018feb2 100644 --- a/paludis/repository_factory.hh +++ b/paludis/repository_factory.hh @@ -34,6 +34,8 @@ namespace paludis { + extern template class PALUDIS_VISIBLE Singleton<RepositoryFactory>; + class PALUDIS_VISIBLE RepositoryFactory : public Singleton<RepositoryFactory> { @@ -157,8 +159,7 @@ namespace paludis void register_repositories(const RepositoryClass_ * const, RepositoryFactory * const); extern template class Pimp<RepositoryFactory>; - extern template class Singleton<RepositoryFactory>; - extern template class WrappedForwardIterator<RepositoryFactory::ConstIteratorTag, const std::string>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<RepositoryFactory::ConstIteratorTag, const std::string>; } #endif diff --git a/paludis/resolver/change_by_resolvent.hh b/paludis/resolver/change_by_resolvent.hh index 1371db1f6..dd44a5b90 100644 --- a/paludis/resolver/change_by_resolvent.hh +++ b/paludis/resolver/change_by_resolvent.hh @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2010 Ciaran McCreesh + * Copyright (c) 2010, 2011 Ciaran McCreesh * * This file is part of the Paludis package manager. Paludis is free software; * you can redistribute it and/or modify it under the terms of the GNU General @@ -48,8 +48,8 @@ namespace paludis }; } - extern template class Sequence<resolver::ChangeByResolvent>; - extern template class WrappedForwardIterator<Sequence<resolver::ChangeByResolvent>::ConstIteratorTag, const resolver::ChangeByResolvent>; + extern template class PALUDIS_VISIBLE Sequence<resolver::ChangeByResolvent>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Sequence<resolver::ChangeByResolvent>::ConstIteratorTag, const resolver::ChangeByResolvent>; } #endif diff --git a/paludis/resolver/collect_depped_upon.hh b/paludis/resolver/collect_depped_upon.hh index 5424f9417..a92f8dd8a 100644 --- a/paludis/resolver/collect_depped_upon.hh +++ b/paludis/resolver/collect_depped_upon.hh @@ -52,8 +52,8 @@ namespace paludis }; } - extern template class Sequence<resolver::DependentPackageID>; - extern template class WrappedForwardIterator<Sequence<resolver::DependentPackageID>::ConstIteratorTag, const resolver::DependentPackageID>; + extern template class PALUDIS_VISIBLE Sequence<resolver::DependentPackageID>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Sequence<resolver::DependentPackageID>::ConstIteratorTag, const resolver::DependentPackageID>; } #endif diff --git a/paludis/resolver/constraint.hh b/paludis/resolver/constraint.hh index 3ffa345b3..08b1ae1ec 100644 --- a/paludis/resolver/constraint.hh +++ b/paludis/resolver/constraint.hh @@ -95,7 +95,7 @@ namespace paludis } extern template class Pimp<resolver::Constraints>; - extern template class WrappedForwardIterator<resolver::Constraints::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<resolver::Constraints::ConstIteratorTag, const std::shared_ptr<const resolver::Constraint> >; } diff --git a/paludis/resolver/decisions.hh b/paludis/resolver/decisions.hh index e989dff5c..55eddc8ce 100644 --- a/paludis/resolver/decisions.hh +++ b/paludis/resolver/decisions.hh @@ -74,22 +74,22 @@ namespace paludis static const std::shared_ptr<Decisions> deserialise(Deserialisation & d) PALUDIS_ATTRIBUTE((warn_unused_result)); }; - extern template class Decisions<UnableToMakeDecision>; - extern template class Decisions<ChangesToMakeDecision>; - extern template class Decisions<ChangeOrRemoveDecision>; - extern template class Decisions<ConfirmableDecision>; - extern template class Decisions<ChangeOrRemoveDecision, std::shared_ptr<const OrdererNotes> >; + extern template class PALUDIS_VISIBLE Decisions<UnableToMakeDecision>; + extern template class PALUDIS_VISIBLE Decisions<ChangesToMakeDecision>; + extern template class PALUDIS_VISIBLE Decisions<ChangeOrRemoveDecision>; + extern template class PALUDIS_VISIBLE Decisions<ConfirmableDecision>; + extern template class PALUDIS_VISIBLE Decisions<ChangeOrRemoveDecision, std::shared_ptr<const OrdererNotes> >; } - extern template class WrappedForwardIterator<resolver::Decisions<resolver::UnableToMakeDecision>::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<resolver::Decisions<resolver::UnableToMakeDecision>::ConstIteratorTag, const std::shared_ptr<const resolver::UnableToMakeDecision> >; - extern template class WrappedForwardIterator<resolver::Decisions<resolver::ChangesToMakeDecision>::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<resolver::Decisions<resolver::ChangesToMakeDecision>::ConstIteratorTag, const std::shared_ptr<const resolver::ChangesToMakeDecision> >; - extern template class WrappedForwardIterator<resolver::Decisions<resolver::ChangeOrRemoveDecision>::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<resolver::Decisions<resolver::ChangeOrRemoveDecision>::ConstIteratorTag, const std::shared_ptr<const resolver::ChangeOrRemoveDecision> >; - extern template class WrappedForwardIterator<resolver::Decisions<resolver::ConfirmableDecision>::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<resolver::Decisions<resolver::ConfirmableDecision>::ConstIteratorTag, const std::shared_ptr<const resolver::ConfirmableDecision> >; - extern template class WrappedForwardIterator<resolver::Decisions<resolver::ChangeOrRemoveDecision, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<resolver::Decisions<resolver::ChangeOrRemoveDecision, std::shared_ptr<const resolver::OrdererNotes> >::ConstIteratorTag, const std::pair< std::shared_ptr<const resolver::ChangeOrRemoveDecision>, diff --git a/paludis/resolver/job_list.hh b/paludis/resolver/job_list.hh index 90a1ef9e1..8b7099ce0 100644 --- a/paludis/resolver/job_list.hh +++ b/paludis/resolver/job_list.hh @@ -60,13 +60,13 @@ namespace paludis void serialise(Serialiser &) const; }; - extern template class JobList<PretendJob>; - extern template class JobList<ExecuteJob>; + extern template class PALUDIS_VISIBLE JobList<PretendJob>; + extern template class PALUDIS_VISIBLE JobList<ExecuteJob>; } - extern template class WrappedForwardIterator<resolver::JobListConstIteratorTag<resolver::PretendJob>, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<resolver::JobListConstIteratorTag<resolver::PretendJob>, const std::shared_ptr<resolver::PretendJob> >; - extern template class WrappedForwardIterator<resolver::JobListConstIteratorTag<resolver::ExecuteJob>, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<resolver::JobListConstIteratorTag<resolver::ExecuteJob>, const std::shared_ptr<resolver::ExecuteJob> >; } diff --git a/paludis/resolver/job_requirements.hh b/paludis/resolver/job_requirements.hh index 354c601fa..579b6a496 100644 --- a/paludis/resolver/job_requirements.hh +++ b/paludis/resolver/job_requirements.hh @@ -53,8 +53,8 @@ namespace paludis }; } - extern template class Sequence<resolver::JobRequirement>; - extern template class WrappedForwardIterator<Sequence<resolver::JobRequirement>::ConstIteratorTag, const resolver::JobRequirement>; + extern template class PALUDIS_VISIBLE Sequence<resolver::JobRequirement>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Sequence<resolver::JobRequirement>::ConstIteratorTag, const resolver::JobRequirement>; } #endif diff --git a/paludis/resolver/nag.hh b/paludis/resolver/nag.hh index e944bc695..077e95018 100644 --- a/paludis/resolver/nag.hh +++ b/paludis/resolver/nag.hh @@ -104,9 +104,9 @@ namespace paludis }; } - extern template class WrappedForwardIterator<resolver::NAG::EdgesFromConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<resolver::NAG::EdgesFromConstIteratorTag, const std::pair<const resolver::NAGIndex, resolver::NAGEdgeProperties> >; - extern template class WrappedForwardIterator<resolver::NAG::NodesConstIteratorTag, const resolver::NAGIndex>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<resolver::NAG::NodesConstIteratorTag, const resolver::NAGIndex>; } #endif diff --git a/paludis/resolver/resolutions_by_resolvent.hh b/paludis/resolver/resolutions_by_resolvent.hh index bb7cd97f3..bdcb14532 100644 --- a/paludis/resolver/resolutions_by_resolvent.hh +++ b/paludis/resolver/resolutions_by_resolvent.hh @@ -56,7 +56,7 @@ namespace paludis }; } - extern template class WrappedForwardIterator<resolver::ResolutionsByResolvent::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<resolver::ResolutionsByResolvent::ConstIteratorTag, const std::shared_ptr<resolver::Resolution> >; } diff --git a/paludis/resolver/resolvent.hh b/paludis/resolver/resolvent.hh index 57f98ae0c..8cf7a79ff 100644 --- a/paludis/resolver/resolvent.hh +++ b/paludis/resolver/resolvent.hh @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2009, 2010 Ciaran McCreesh + * Copyright (c) 2009, 2010, 2011 Ciaran McCreesh * * This file is part of the Paludis package manager. Paludis is free software; * you can redistribute it and/or modify it under the terms of the GNU General @@ -66,8 +66,8 @@ namespace paludis }; } - extern template class Sequence<resolver::Resolvent>; - extern template class WrappedForwardIterator<Sequence<resolver::Resolvent>::ConstIteratorTag, const resolver::Resolvent>; + extern template class PALUDIS_VISIBLE Sequence<resolver::Resolvent>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Sequence<resolver::Resolvent>::ConstIteratorTag, const resolver::Resolvent>; } #endif diff --git a/paludis/resolver/strongly_connected_component.hh b/paludis/resolver/strongly_connected_component.hh index 28d38948f..a77566cd1 100644 --- a/paludis/resolver/strongly_connected_component.hh +++ b/paludis/resolver/strongly_connected_component.hh @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2010 Ciaran McCreesh + * Copyright (c) 2010, 2011 Ciaran McCreesh * * This file is part of the Paludis package manager. Paludis is free software; * you can redistribute it and/or modify it under the terms of the GNU General @@ -47,12 +47,12 @@ namespace paludis }; } - extern template class Set<resolver::NAGIndex>; - extern template class WrappedForwardIterator<Set<resolver::NAGIndex>::ConstIteratorTag, const resolver::NAGIndex>; - extern template class WrappedOutputIterator<Set<resolver::NAGIndex>::InserterTag, resolver::NAGIndex>; + extern template class PALUDIS_VISIBLE Set<resolver::NAGIndex>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Set<resolver::NAGIndex>::ConstIteratorTag, const resolver::NAGIndex>; + extern template class PALUDIS_VISIBLE WrappedOutputIterator<Set<resolver::NAGIndex>::InserterTag, resolver::NAGIndex>; - extern template class Sequence<resolver::StronglyConnectedComponent>; - extern template class WrappedForwardIterator<Sequence<resolver::StronglyConnectedComponent>::ConstIteratorTag, const resolver::StronglyConnectedComponent>; + extern template class PALUDIS_VISIBLE Sequence<resolver::StronglyConnectedComponent>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Sequence<resolver::StronglyConnectedComponent>::ConstIteratorTag, const resolver::StronglyConnectedComponent>; } #endif diff --git a/paludis/spec_tree.cc b/paludis/spec_tree.cc index b954273f1..c67fbf801 100644 --- a/paludis/spec_tree.cc +++ b/paludis/spec_tree.cc @@ -264,28 +264,30 @@ namespace paludis template const std::shared_ptr<GenericSpecTree::NodeType<NamedSetDepSpec>::Type> BasicInnerNode<GenericSpecTree>::append<NamedSetDepSpec>(const std::shared_ptr<NamedSetDepSpec> &); - namespace spec_tree_internals { + namespace spec_tree_internals + { template class BasicInnerNode<GenericSpecTree>; } template class WrappedForwardIterator<BasicInnerNode<GenericSpecTree>::ConstIteratorTag, const std::shared_ptr<const BasicNode<GenericSpecTree> > >; - namespace spec_tree_internals { - template class LeafNode<GenericSpecTree, PackageDepSpec>; - template class LeafNode<GenericSpecTree, BlockDepSpec>; - template class LeafNode<GenericSpecTree, DependenciesLabelsDepSpec>; - template class LeafNode<GenericSpecTree, NamedSetDepSpec>; - template class LeafNode<GenericSpecTree, PlainTextDepSpec>; - template class LeafNode<GenericSpecTree, PlainTextLabelDepSpec>; - template class LeafNode<GenericSpecTree, SimpleURIDepSpec>; - template class LeafNode<GenericSpecTree, FetchableURIDepSpec>; - template class LeafNode<GenericSpecTree, LicenseDepSpec>; - template class LeafNode<GenericSpecTree, URILabelsDepSpec>; - template class InnerNode<GenericSpecTree, AllDepSpec>; - template class InnerNode<GenericSpecTree, AnyDepSpec>; - template class InnerNode<GenericSpecTree, ExactlyOneDepSpec>; - template class InnerNode<GenericSpecTree, ConditionalDepSpec>; + namespace spec_tree_internals + { + template class PALUDIS_VISIBLE LeafNode<GenericSpecTree, PackageDepSpec>; + template class PALUDIS_VISIBLE LeafNode<GenericSpecTree, BlockDepSpec>; + template class PALUDIS_VISIBLE LeafNode<GenericSpecTree, DependenciesLabelsDepSpec>; + template class PALUDIS_VISIBLE LeafNode<GenericSpecTree, NamedSetDepSpec>; + template class PALUDIS_VISIBLE LeafNode<GenericSpecTree, PlainTextDepSpec>; + template class PALUDIS_VISIBLE LeafNode<GenericSpecTree, PlainTextLabelDepSpec>; + template class PALUDIS_VISIBLE LeafNode<GenericSpecTree, SimpleURIDepSpec>; + template class PALUDIS_VISIBLE LeafNode<GenericSpecTree, FetchableURIDepSpec>; + template class PALUDIS_VISIBLE LeafNode<GenericSpecTree, LicenseDepSpec>; + template class PALUDIS_VISIBLE LeafNode<GenericSpecTree, URILabelsDepSpec>; + template class PALUDIS_VISIBLE InnerNode<GenericSpecTree, AllDepSpec>; + template class PALUDIS_VISIBLE InnerNode<GenericSpecTree, AnyDepSpec>; + template class PALUDIS_VISIBLE InnerNode<GenericSpecTree, ExactlyOneDepSpec>; + template class PALUDIS_VISIBLE InnerNode<GenericSpecTree, ConditionalDepSpec>; } } @@ -330,16 +332,18 @@ namespace paludis { template class WrappedForwardIterator<BasicInnerNode<DependencySpecTree>::ConstIteratorTag, const std::shared_ptr<const BasicNode<DependencySpecTree> > >; - namespace spec_tree_internals { + + namespace spec_tree_internals + { template class BasicInnerNode<DependencySpecTree>; - template class LeafNode<DependencySpecTree, PackageDepSpec>; - template class LeafNode<DependencySpecTree, BlockDepSpec>; - template class LeafNode<DependencySpecTree, DependenciesLabelsDepSpec>; - template class LeafNode<DependencySpecTree, NamedSetDepSpec>; - template class InnerNode<DependencySpecTree, AllDepSpec>; - template class InnerNode<DependencySpecTree, AnyDepSpec>; - template class InnerNode<DependencySpecTree, ConditionalDepSpec>; + template class PALUDIS_VISIBLE LeafNode<DependencySpecTree, PackageDepSpec>; + template class PALUDIS_VISIBLE LeafNode<DependencySpecTree, BlockDepSpec>; + template class PALUDIS_VISIBLE LeafNode<DependencySpecTree, DependenciesLabelsDepSpec>; + template class PALUDIS_VISIBLE LeafNode<DependencySpecTree, NamedSetDepSpec>; + template class PALUDIS_VISIBLE InnerNode<DependencySpecTree, AllDepSpec>; + template class PALUDIS_VISIBLE InnerNode<DependencySpecTree, AnyDepSpec>; + template class PALUDIS_VISIBLE InnerNode<DependencySpecTree, ConditionalDepSpec>; } } /* SetSpecTree */ @@ -364,11 +368,12 @@ namespace paludis template class WrappedForwardIterator<BasicInnerNode<SetSpecTree>::ConstIteratorTag, const std::shared_ptr<const BasicNode<SetSpecTree> > >; - namespace spec_tree_internals { + namespace spec_tree_internals + { template class BasicInnerNode<SetSpecTree>; - template class LeafNode<SetSpecTree, PackageDepSpec>; - template class LeafNode<SetSpecTree, NamedSetDepSpec>; - template class InnerNode<SetSpecTree, AllDepSpec>; + template class PALUDIS_VISIBLE LeafNode<SetSpecTree, PackageDepSpec>; + template class PALUDIS_VISIBLE LeafNode<SetSpecTree, NamedSetDepSpec>; + template class PALUDIS_VISIBLE InnerNode<SetSpecTree, AllDepSpec>; } } @@ -399,12 +404,13 @@ namespace paludis template class WrappedForwardIterator<BasicInnerNode<PlainTextSpecTree>::ConstIteratorTag, const std::shared_ptr<const BasicNode<PlainTextSpecTree> > >; - namespace spec_tree_internals { + namespace spec_tree_internals + { template class BasicInnerNode<PlainTextSpecTree>; - template class LeafNode<PlainTextSpecTree, PlainTextDepSpec>; - template class LeafNode<PlainTextSpecTree, PlainTextLabelDepSpec>; - template class InnerNode<PlainTextSpecTree, AllDepSpec>; - template class InnerNode<PlainTextSpecTree, ConditionalDepSpec>; + template class PALUDIS_VISIBLE LeafNode<PlainTextSpecTree, PlainTextDepSpec>; + template class PALUDIS_VISIBLE LeafNode<PlainTextSpecTree, PlainTextLabelDepSpec>; + template class PALUDIS_VISIBLE InnerNode<PlainTextSpecTree, AllDepSpec>; + template class PALUDIS_VISIBLE InnerNode<PlainTextSpecTree, ConditionalDepSpec>; } } /* RequiredUseSpecTree */ @@ -439,13 +445,14 @@ namespace paludis template class WrappedForwardIterator<BasicInnerNode<RequiredUseSpecTree>::ConstIteratorTag, const std::shared_ptr<const BasicNode<RequiredUseSpecTree> > >; - namespace spec_tree_internals { + namespace spec_tree_internals + { template class BasicInnerNode<RequiredUseSpecTree>; - template class LeafNode<RequiredUseSpecTree, PlainTextDepSpec>; - template class InnerNode<RequiredUseSpecTree, AllDepSpec>; - template class InnerNode<RequiredUseSpecTree, AnyDepSpec>; - template class InnerNode<RequiredUseSpecTree, ExactlyOneDepSpec>; - template class InnerNode<RequiredUseSpecTree, ConditionalDepSpec>; + template class PALUDIS_VISIBLE LeafNode<RequiredUseSpecTree, PlainTextDepSpec>; + template class PALUDIS_VISIBLE InnerNode<RequiredUseSpecTree, AllDepSpec>; + template class PALUDIS_VISIBLE InnerNode<RequiredUseSpecTree, AnyDepSpec>; + template class PALUDIS_VISIBLE InnerNode<RequiredUseSpecTree, ExactlyOneDepSpec>; + template class PALUDIS_VISIBLE InnerNode<RequiredUseSpecTree, ConditionalDepSpec>; } } /* SimpleURISpecTree */ @@ -470,11 +477,12 @@ namespace paludis template class WrappedForwardIterator<BasicInnerNode<SimpleURISpecTree>::ConstIteratorTag, const std::shared_ptr<const BasicNode<SimpleURISpecTree> > >; - namespace spec_tree_internals { + namespace spec_tree_internals + { template class BasicInnerNode<SimpleURISpecTree>; - template class LeafNode<SimpleURISpecTree, SimpleURIDepSpec>; - template class InnerNode<SimpleURISpecTree, AllDepSpec>; - template class InnerNode<SimpleURISpecTree, ConditionalDepSpec>; + template class PALUDIS_VISIBLE LeafNode<SimpleURISpecTree, SimpleURIDepSpec>; + template class PALUDIS_VISIBLE InnerNode<SimpleURISpecTree, AllDepSpec>; + template class PALUDIS_VISIBLE InnerNode<SimpleURISpecTree, ConditionalDepSpec>; } } /* FetchableURISpecTree */ @@ -504,13 +512,14 @@ namespace paludis template class WrappedForwardIterator<BasicInnerNode<FetchableURISpecTree>::ConstIteratorTag, const std::shared_ptr<const BasicNode<FetchableURISpecTree> > >; - namespace spec_tree_internals { + namespace spec_tree_internals + { template class BasicInnerNode<FetchableURISpecTree>; - template class LeafNode<FetchableURISpecTree, FetchableURIDepSpec>; - template class LeafNode<FetchableURISpecTree, URILabelsDepSpec>; - template class InnerNode<FetchableURISpecTree, AllDepSpec>; - template class InnerNode<FetchableURISpecTree, ConditionalDepSpec>; + template class PALUDIS_VISIBLE LeafNode<FetchableURISpecTree, FetchableURIDepSpec>; + template class PALUDIS_VISIBLE LeafNode<FetchableURISpecTree, URILabelsDepSpec>; + template class PALUDIS_VISIBLE InnerNode<FetchableURISpecTree, AllDepSpec>; + template class PALUDIS_VISIBLE InnerNode<FetchableURISpecTree, ConditionalDepSpec>; } } @@ -541,13 +550,14 @@ namespace paludis template class WrappedForwardIterator<BasicInnerNode<LicenseSpecTree>::ConstIteratorTag, const std::shared_ptr<const BasicNode<LicenseSpecTree> > >; - namespace spec_tree_internals { + namespace spec_tree_internals + { template class BasicInnerNode<LicenseSpecTree>; - template class LeafNode<LicenseSpecTree, LicenseDepSpec>; - template class InnerNode<LicenseSpecTree, AllDepSpec>; - template class InnerNode<LicenseSpecTree, AnyDepSpec>; - template class InnerNode<LicenseSpecTree, ConditionalDepSpec>; + template class PALUDIS_VISIBLE LeafNode<LicenseSpecTree, LicenseDepSpec>; + template class PALUDIS_VISIBLE InnerNode<LicenseSpecTree, AllDepSpec>; + template class PALUDIS_VISIBLE InnerNode<LicenseSpecTree, AnyDepSpec>; + template class PALUDIS_VISIBLE InnerNode<LicenseSpecTree, ConditionalDepSpec>; } } diff --git a/paludis/spec_tree.hh b/paludis/spec_tree.hh index 690cce685..9629fd9c9 100644 --- a/paludis/spec_tree.hh +++ b/paludis/spec_tree.hh @@ -177,23 +177,96 @@ namespace paludis const std::shared_ptr<typename InnerNodeType<RootNode_>::Type> _top; }; - extern template class WrappedForwardIterator<spec_tree_internals::BasicInnerNode<GenericSpecTree>::ConstIteratorTag, + extern template class PALUDIS_VISIBLE SpecTree<MakeTypeList< + SpecTreeLeafNodeType<PlainTextDepSpec>, + SpecTreeLeafNodeType<PlainTextLabelDepSpec>, + SpecTreeLeafNodeType<SimpleURIDepSpec>, + SpecTreeLeafNodeType<FetchableURIDepSpec>, + SpecTreeLeafNodeType<LicenseDepSpec>, + SpecTreeLeafNodeType<PackageDepSpec>, + SpecTreeLeafNodeType<BlockDepSpec>, + SpecTreeLeafNodeType<URILabelsDepSpec>, + SpecTreeLeafNodeType<DependenciesLabelsDepSpec>, + SpecTreeLeafNodeType<NamedSetDepSpec>, + SpecTreeInnerNodeType<AllDepSpec>, + SpecTreeInnerNodeType<AnyDepSpec>, + SpecTreeInnerNodeType<ExactlyOneDepSpec>, + SpecTreeInnerNodeType<ConditionalDepSpec> + >::Type, AllDepSpec>; + + extern template class PALUDIS_VISIBLE SpecTree<MakeTypeList< + SpecTreeLeafNodeType<LicenseDepSpec>, + SpecTreeInnerNodeType<AllDepSpec>, + SpecTreeInnerNodeType<AnyDepSpec>, + SpecTreeInnerNodeType<ConditionalDepSpec> + >::Type, AllDepSpec>; + + extern template class PALUDIS_VISIBLE SpecTree<MakeTypeList< + SpecTreeLeafNodeType<FetchableURIDepSpec>, + SpecTreeLeafNodeType<URILabelsDepSpec>, + SpecTreeInnerNodeType<AllDepSpec>, + SpecTreeInnerNodeType<ConditionalDepSpec> + >::Type, AllDepSpec>; + + extern template class PALUDIS_VISIBLE SpecTree<MakeTypeList< + SpecTreeLeafNodeType<SimpleURIDepSpec>, + SpecTreeInnerNodeType<AllDepSpec>, + SpecTreeInnerNodeType<ConditionalDepSpec> + >::Type, AllDepSpec>; + + extern template class PALUDIS_VISIBLE SpecTree<MakeTypeList< + SpecTreeLeafNodeType<PackageDepSpec>, + SpecTreeInnerNodeType<AllDepSpec>, + SpecTreeInnerNodeType<ConditionalDepSpec> + >::Type, AllDepSpec>; + + extern template class PALUDIS_VISIBLE SpecTree<MakeTypeList< + SpecTreeLeafNodeType<PlainTextDepSpec>, + SpecTreeLeafNodeType<PlainTextLabelDepSpec>, + SpecTreeInnerNodeType<AllDepSpec>, + SpecTreeInnerNodeType<ConditionalDepSpec> + >::Type, AllDepSpec>; + + extern template class PALUDIS_VISIBLE SpecTree<MakeTypeList< + SpecTreeLeafNodeType<PlainTextDepSpec>, + SpecTreeInnerNodeType<AllDepSpec>, + SpecTreeInnerNodeType<AnyDepSpec>, + SpecTreeInnerNodeType<ExactlyOneDepSpec>, + SpecTreeInnerNodeType<ConditionalDepSpec> + >::Type, AllDepSpec>; + + extern template class PALUDIS_VISIBLE SpecTree<MakeTypeList< + SpecTreeLeafNodeType<PackageDepSpec>, + SpecTreeLeafNodeType<BlockDepSpec>, + SpecTreeLeafNodeType<DependenciesLabelsDepSpec>, + SpecTreeLeafNodeType<NamedSetDepSpec>, + SpecTreeInnerNodeType<AllDepSpec>, + SpecTreeInnerNodeType<AnyDepSpec>, + SpecTreeInnerNodeType<ConditionalDepSpec> + >::Type, AllDepSpec>; + + extern template class PALUDIS_VISIBLE SpecTree<MakeTypeList< + SpecTreeLeafNodeType<PackageDepSpec>, + SpecTreeLeafNodeType<NamedSetDepSpec>, + SpecTreeInnerNodeType<AllDepSpec> + >::Type, AllDepSpec>; + + extern template class PALUDIS_VISIBLE WrappedForwardIterator<spec_tree_internals::BasicInnerNode<GenericSpecTree>::ConstIteratorTag, const std::shared_ptr<const spec_tree_internals::BasicNode<GenericSpecTree> > >; - extern template class WrappedForwardIterator<spec_tree_internals::BasicInnerNode<DependencySpecTree>::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<spec_tree_internals::BasicInnerNode<DependencySpecTree>::ConstIteratorTag, const std::shared_ptr<const spec_tree_internals::BasicNode<DependencySpecTree> > >; - extern template class WrappedForwardIterator<spec_tree_internals::BasicInnerNode<SetSpecTree>::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<spec_tree_internals::BasicInnerNode<SetSpecTree>::ConstIteratorTag, const std::shared_ptr<const spec_tree_internals::BasicNode<SetSpecTree> > >; - extern template class WrappedForwardIterator<spec_tree_internals::BasicInnerNode<PlainTextSpecTree>::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<spec_tree_internals::BasicInnerNode<PlainTextSpecTree>::ConstIteratorTag, const std::shared_ptr<const spec_tree_internals::BasicNode<PlainTextSpecTree> > >; - extern template class WrappedForwardIterator<spec_tree_internals::BasicInnerNode<RequiredUseSpecTree>::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<spec_tree_internals::BasicInnerNode<RequiredUseSpecTree>::ConstIteratorTag, const std::shared_ptr<const spec_tree_internals::BasicNode<RequiredUseSpecTree> > >; - extern template class WrappedForwardIterator<spec_tree_internals::BasicInnerNode<SimpleURISpecTree>::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<spec_tree_internals::BasicInnerNode<SimpleURISpecTree>::ConstIteratorTag, const std::shared_ptr<const spec_tree_internals::BasicNode<SimpleURISpecTree> > >; - extern template class WrappedForwardIterator<spec_tree_internals::BasicInnerNode<FetchableURISpecTree>::ConstIteratorTag, + extern template class PALUDIS_VISIBLE WrappedForwardIterator<spec_tree_internals::BasicInnerNode<FetchableURISpecTree>::ConstIteratorTag, const std::shared_ptr<const spec_tree_internals::BasicNode<FetchableURISpecTree> > >; extern template class WrappedForwardIterator<spec_tree_internals::BasicInnerNode<LicenseSpecTree>::ConstIteratorTag, const std::shared_ptr<const spec_tree_internals::BasicNode<LicenseSpecTree> > >; - } #endif diff --git a/paludis/util/config_file.hh b/paludis/util/config_file.hh index 4429943b4..1b2d69585 100644 --- a/paludis/util/config_file.hh +++ b/paludis/util/config_file.hh @@ -259,8 +259,8 @@ namespace paludis extern template class Pimp<LineConfigFile>; extern template class Pimp<KeyValueConfigFile>; - extern template class WrappedForwardIterator<LineConfigFile::ConstIteratorTag, const std::string>; - extern template class WrappedForwardIterator<KeyValueConfigFile::ConstIteratorTag, const std::pair<const std::string, std::string> >; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<LineConfigFile::ConstIteratorTag, const std::string>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<KeyValueConfigFile::ConstIteratorTag, const std::pair<const std::string, std::string> >; } #endif diff --git a/paludis/util/digest_registry.hh b/paludis/util/digest_registry.hh index cf14fcf8f..9e01016bc 100644 --- a/paludis/util/digest_registry.hh +++ b/paludis/util/digest_registry.hh @@ -31,6 +31,11 @@ namespace paludis { + class DigestRegistry; + + extern template class Pimp<DigestRegistry>; + extern template class PALUDIS_VISIBLE Singleton<DigestRegistry>; + class PALUDIS_VISIBLE DigestRegistry : public Singleton<DigestRegistry> { @@ -73,9 +78,6 @@ namespace paludis return digest.hexsum(); } }; - - extern template class Pimp<DigestRegistry>; - extern template class Singleton<DigestRegistry>; } #endif diff --git a/paludis/util/elf.cc b/paludis/util/elf.cc index 760fe4f39..7f6771a39 100644 --- a/paludis/util/elf.cc +++ b/paludis/util/elf.cc @@ -400,9 +400,10 @@ ElfObject<ElfType_>::get_section_by_index(unsigned int index) const namespace paludis { - template class ElfObject<Elf32Type>; - template class ElfObject<Elf64Type>; + template class PALUDIS_VISIBLE ElfObject<Elf32Type>; + template class PALUDIS_VISIBLE ElfObject<Elf64Type>; - template class WrappedForwardIterator<ElfObject<Elf32Type>::SectionIteratorTag, Section<Elf32Type> >; - template class WrappedForwardIterator<ElfObject<Elf64Type>::SectionIteratorTag, Section<Elf64Type> >; + template class PALUDIS_VISIBLE WrappedForwardIterator<ElfObject<Elf32Type>::SectionIteratorTag, Section<Elf32Type> >; + template class PALUDIS_VISIBLE WrappedForwardIterator<ElfObject<Elf64Type>::SectionIteratorTag, Section<Elf64Type> >; } + diff --git a/paludis/util/elf_dynamic_section.cc b/paludis/util/elf_dynamic_section.cc index cfb939176..1b13d3e43 100644 --- a/paludis/util/elf_dynamic_section.cc +++ b/paludis/util/elf_dynamic_section.cc @@ -357,9 +357,10 @@ DynamicSection<ElfType_>::entry_end() const namespace paludis { - template class DynamicSection<Elf32Type>; - template class DynamicSection<Elf64Type>; + template class PALUDIS_VISIBLE DynamicSection<Elf32Type>; + template class PALUDIS_VISIBLE DynamicSection<Elf64Type>; - template class WrappedForwardIterator<DynamicSection<Elf32Type>::EntryIteratorTag, DynamicEntry<Elf32Type> >; - template class WrappedForwardIterator<DynamicSection<Elf64Type>::EntryIteratorTag, DynamicEntry<Elf64Type> >; + template class PALUDIS_VISIBLE WrappedForwardIterator<DynamicSection<Elf32Type>::EntryIteratorTag, DynamicEntry<Elf32Type> >; + template class PALUDIS_VISIBLE WrappedForwardIterator<DynamicSection<Elf64Type>::EntryIteratorTag, DynamicEntry<Elf64Type> >; } + diff --git a/paludis/util/elf_relocation_section.cc b/paludis/util/elf_relocation_section.cc index d628f684f..320132927 100644 --- a/paludis/util/elf_relocation_section.cc +++ b/paludis/util/elf_relocation_section.cc @@ -140,19 +140,20 @@ RelocationSection<ElfType_, Relocation_>::relocation_end() const namespace paludis { - template class RelocationSection<Elf32Type, Relocation<Elf32Type> >; - template class WrappedForwardIterator<RelocationSection<Elf32Type, Relocation<Elf32Type> >::RelocationIteratorTag, + template class PALUDIS_VISIBLE RelocationSection<Elf32Type, Relocation<Elf32Type> >; + template class PALUDIS_VISIBLE WrappedForwardIterator<RelocationSection<Elf32Type, Relocation<Elf32Type> >::RelocationIteratorTag, const Relocation<Elf32Type>::Entry>; - template class RelocationSection<Elf32Type, RelocationA<Elf32Type> >; - template class WrappedForwardIterator<RelocationSection<Elf32Type, RelocationA<Elf32Type> >::RelocationIteratorTag, + template class PALUDIS_VISIBLE RelocationSection<Elf32Type, RelocationA<Elf32Type> >; + template class PALUDIS_VISIBLE WrappedForwardIterator<RelocationSection<Elf32Type, RelocationA<Elf32Type> >::RelocationIteratorTag, const RelocationA<Elf32Type>::Entry>; - template class RelocationSection<Elf64Type, Relocation<Elf64Type> >; - template class WrappedForwardIterator<RelocationSection<Elf64Type, Relocation<Elf64Type> >::RelocationIteratorTag, + template class PALUDIS_VISIBLE RelocationSection<Elf64Type, Relocation<Elf64Type> >; + template class PALUDIS_VISIBLE WrappedForwardIterator<RelocationSection<Elf64Type, Relocation<Elf64Type> >::RelocationIteratorTag, const Relocation<Elf64Type>::Entry>; - template class RelocationSection<Elf64Type, RelocationA<Elf64Type> >; - template class WrappedForwardIterator<RelocationSection<Elf64Type, RelocationA<Elf64Type> >::RelocationIteratorTag, + template class PALUDIS_VISIBLE RelocationSection<Elf64Type, RelocationA<Elf64Type> >; + template class PALUDIS_VISIBLE WrappedForwardIterator<RelocationSection<Elf64Type, RelocationA<Elf64Type> >::RelocationIteratorTag, const RelocationA<Elf64Type>::Entry>; } + diff --git a/paludis/util/elf_sections.cc b/paludis/util/elf_sections.cc index 5b0d4f1ba..e3b5066f5 100644 --- a/paludis/util/elf_sections.cc +++ b/paludis/util/elf_sections.cc @@ -101,10 +101,11 @@ StringSection<ElfType_>::get_type() const namespace paludis { - template class Section<Elf32Type>; - template class Section<Elf64Type>; - template class GenericSection<Elf32Type>; - template class GenericSection<Elf64Type>; - template class StringSection<Elf32Type>; - template class StringSection<Elf64Type>; + template class PALUDIS_VISIBLE Section<Elf32Type>; + template class PALUDIS_VISIBLE Section<Elf64Type>; + template class PALUDIS_VISIBLE GenericSection<Elf32Type>; + template class PALUDIS_VISIBLE GenericSection<Elf64Type>; + template class PALUDIS_VISIBLE StringSection<Elf32Type>; + template class PALUDIS_VISIBLE StringSection<Elf64Type>; } + diff --git a/paludis/util/elf_symbol_section.cc b/paludis/util/elf_symbol_section.cc index 636f3fd09..8eb4c9eeb 100644 --- a/paludis/util/elf_symbol_section.cc +++ b/paludis/util/elf_symbol_section.cc @@ -218,9 +218,10 @@ SymbolSection<ElfType_>::symbol_end() const namespace paludis { - template class SymbolSection<Elf32Type>; - template class SymbolSection<Elf64Type>; + template class PALUDIS_VISIBLE SymbolSection<Elf32Type>; + template class PALUDIS_VISIBLE SymbolSection<Elf64Type>; - template class WrappedForwardIterator<SymbolSection<Elf32Type>::SymbolIteratorTag, const Symbol<Elf32Type> >; - template class WrappedForwardIterator<SymbolSection<Elf64Type>::SymbolIteratorTag, const Symbol<Elf64Type> >; + template class PALUDIS_VISIBLE WrappedForwardIterator<SymbolSection<Elf32Type>::SymbolIteratorTag, const Symbol<Elf32Type> >; + template class PALUDIS_VISIBLE WrappedForwardIterator<SymbolSection<Elf64Type>::SymbolIteratorTag, const Symbol<Elf64Type> >; } + diff --git a/paludis/util/fs_path.cc b/paludis/util/fs_path.cc index 29456e434..b3857eab0 100644 --- a/paludis/util/fs_path.cc +++ b/paludis/util/fs_path.cc @@ -443,13 +443,14 @@ FSPathComparator::operator() (const FSPath & a, const FSPath & b) const namespace paludis { - template class Sequence<FSPath>; - template class WrappedForwardIterator<Sequence<FSPath>::ConstIteratorTag, const FSPath>; - template class WrappedForwardIterator<Sequence<FSPath>::ReverseConstIteratorTag, const FSPath>; - template class WrappedOutputIterator<Sequence<FSPath>::InserterTag, FSPath>; + template class PALUDIS_VISIBLE Sequence<FSPath>; + template class PALUDIS_VISIBLE WrappedForwardIterator<Sequence<FSPath>::ConstIteratorTag, const FSPath>; + template class PALUDIS_VISIBLE WrappedForwardIterator<Sequence<FSPath>::ReverseConstIteratorTag, const FSPath>; + template class PALUDIS_VISIBLE WrappedOutputIterator<Sequence<FSPath>::InserterTag, FSPath>; - template class Set<FSPath, FSPathComparator>; - template class WrappedForwardIterator<Set<FSPath, FSPathComparator>::ConstIteratorTag, const FSPath>; + template class PALUDIS_VISIBLE Set<FSPath, FSPathComparator>; + template class PALUDIS_VISIBLE WrappedForwardIterator<Set<FSPath, FSPathComparator>::ConstIteratorTag, const FSPath>; template class Pimp<FSPath>; } + diff --git a/paludis/util/map.cc b/paludis/util/map.cc index 5ca543b8c..d642eba62 100644 --- a/paludis/util/map.cc +++ b/paludis/util/map.cc @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2007, 2009 Ciaran McCreesh + * Copyright (c) 2007, 2009, 2011 Ciaran McCreesh * * This file is part of the Paludis package manager. Paludis is free software; * you can redistribute it and/or modify it under the terms of the GNU General @@ -28,7 +28,7 @@ using namespace paludis; namespace paludis { template class Map<std::string, std::string>; - template class DefaultMapComparator<std::string>; + template class PALUDIS_VISIBLE DefaultMapComparator<std::string>; template class WrappedForwardIterator<Map<std::string, std::string>::ConstIteratorTag, const std::pair<const std::string, std::string> >; - template class WrappedOutputIterator<Map<std::string, std::string>::InserterTag, std::pair<const std::string, std::string> >; + template class PALUDIS_VISIBLE WrappedOutputIterator<Map<std::string, std::string>::InserterTag, std::pair<const std::string, std::string> >; } diff --git a/paludis/util/map.hh b/paludis/util/map.hh index a83102335..d877e8280 100644 --- a/paludis/util/map.hh +++ b/paludis/util/map.hh @@ -108,8 +108,8 @@ namespace paludis ///\} }; - extern template class Map<std::string, std::string>; - extern template class WrappedForwardIterator<Map<std::string, std::string>::ConstIteratorTag, const std::pair<const std::string, std::string> >; + extern template class PALUDIS_VISIBLE Map<std::string, std::string>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Map<std::string, std::string>::ConstIteratorTag, const std::pair<const std::string, std::string> >; } #endif diff --git a/paludis/util/sequence.cc b/paludis/util/sequence.cc index cd46586bc..4ce4f3e69 100644 --- a/paludis/util/sequence.cc +++ b/paludis/util/sequence.cc @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2008, 2009 Ciaran McCreesh + * Copyright (c) 2008, 2009, 2011 Ciaran McCreesh * * This file is part of the Paludis package manager. Paludis is free software; * you can redistribute it and/or modify it under the terms of the GNU General @@ -25,7 +25,7 @@ using namespace paludis; namespace paludis { - template class Sequence<std::string>; - template class WrappedForwardIterator<Sequence<std::string>::ConstIteratorTag, const std::string>; - template class WrappedOutputIterator<Sequence<std::string>::InserterTag, std::string>; + template class PALUDIS_VISIBLE Sequence<std::string>; + template class PALUDIS_VISIBLE WrappedForwardIterator<Sequence<std::string>::ConstIteratorTag, const std::string>; + template class PALUDIS_VISIBLE WrappedOutputIterator<Sequence<std::string>::InserterTag, std::string>; } diff --git a/paludis/util/set.cc b/paludis/util/set.cc index c7311287c..beeb96087 100644 --- a/paludis/util/set.cc +++ b/paludis/util/set.cc @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2009 Ciaran McCreesh + * Copyright (c) 2009, 2011 Ciaran McCreesh * * This file is part of the Paludis package manager. Paludis is free software; * you can redistribute it and/or modify it under the terms of the GNU General @@ -18,10 +18,15 @@ */ #include <paludis/util/set-impl.hh> +#include <paludis/util/wrapped_forward_iterator-impl.hh> +#include <paludis/util/wrapped_output_iterator-impl.hh> using namespace paludis; namespace paludis { template class Set<std::string>; + template class PALUDIS_VISIBLE WrappedForwardIterator<Set<std::string>::ConstIteratorTag, const std::string>; + template class PALUDIS_VISIBLE WrappedOutputIterator<Set<std::string>::InserterTag, std::string>; } + diff --git a/paludis/util/set.hh b/paludis/util/set.hh index 50efd69a5..6b31134d0 100644 --- a/paludis/util/set.hh +++ b/paludis/util/set.hh @@ -109,7 +109,7 @@ namespace paludis ///\} }; - extern template class Set<std::string>; + extern template class PALUDIS_VISIBLE Set<std::string>; } #endif diff --git a/paludis/version_requirements.cc b/paludis/version_requirements.cc index fef0d679f..ee2025f20 100644 --- a/paludis/version_requirements.cc +++ b/paludis/version_requirements.cc @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2006, 2007, 2008 Ciaran McCreesh + * Copyright (c) 2006, 2007, 2008, 2011 Ciaran McCreesh * * This file is part of the Paludis package manager. Paludis is free software; * you can redistribute it and/or modify it under the terms of the GNU General @@ -58,3 +58,4 @@ namespace paludis template class WrappedForwardIterator<Sequence<VersionRequirement>::ConstIteratorTag, const VersionRequirement>; template class WrappedOutputIterator<Sequence<VersionRequirement>::InserterTag, VersionRequirement>; } + diff --git a/paludis/version_requirements.hh b/paludis/version_requirements.hh index 380adc0a5..92f913748 100644 --- a/paludis/version_requirements.hh +++ b/paludis/version_requirements.hh @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2006, 2007, 2008, 2010 Ciaran McCreesh + * Copyright (c) 2006, 2007, 2008, 2010, 2011 Ciaran McCreesh * * This file is part of the Paludis package manager. Paludis is free software; * you can redistribute it and/or modify it under the terms of the GNU General @@ -24,6 +24,9 @@ #include <paludis/version_operator.hh> #include <paludis/version_spec.hh> #include <paludis/util/named_value.hh> +#include <paludis/util/sequence.hh> +#include <paludis/util/wrapped_forward_iterator.hh> +#include <paludis/util/wrapped_output_iterator.hh> /** \file * Declarations for version requirements classes. @@ -59,6 +62,10 @@ namespace paludis NamedValue<n::version_operator, VersionOperator> version_operator; NamedValue<n::version_spec, VersionSpec> version_spec; }; + + extern template class PALUDIS_VISIBLE Sequence<VersionRequirement>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<Sequence<VersionRequirement>::ConstIteratorTag, const VersionRequirement>; + extern template class PALUDIS_VISIBLE WrappedOutputIterator<Sequence<VersionRequirement>::InserterTag, VersionRequirement>; } #endif diff --git a/paludis/version_spec.cc b/paludis/version_spec.cc index a62e4acb6..42e7e61d5 100644 --- a/paludis/version_spec.cc +++ b/paludis/version_spec.cc @@ -777,3 +777,4 @@ namespace paludis { template class WrappedForwardIterator<VersionSpec::ConstIteratorTag, const VersionSpecComponent>; } + diff --git a/paludis/version_spec.hh b/paludis/version_spec.hh index 81973fcb3..01b09f028 100644 --- a/paludis/version_spec.hh +++ b/paludis/version_spec.hh @@ -25,7 +25,7 @@ #include <paludis/util/pimp.hh> #include <paludis/util/operators.hh> #include <paludis/util/named_value.hh> -#include <paludis/util/wrapped_forward_iterator-fwd.hh> +#include <paludis/util/wrapped_forward_iterator.hh> #include <iosfwd> #include <string> @@ -222,6 +222,8 @@ namespace paludis ConstIterator begin() const; ConstIterator end() const; }; + + extern template class PALUDIS_VISIBLE WrappedForwardIterator<VersionSpec::ConstIteratorTag, const VersionSpecComponent>; } #endif |