00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef PALUDIS_GUARD_PALUDIS_ENVIRONMENT_HH
00021 #define PALUDIS_GUARD_PALUDIS_ENVIRONMENT_HH 1
00022
00023 #include <paludis/environment-fwd.hh>
00024 #include <paludis/util/instantiation_policy.hh>
00025 #include <paludis/util/options-fwd.hh>
00026 #include <paludis/util/fs_entry-fwd.hh>
00027 #include <paludis/util/tribool-fwd.hh>
00028 #include <paludis/util/simple_visitor.hh>
00029 #include <paludis/output_manager-fwd.hh>
00030 #include <paludis/util/private_implementation_pattern.hh>
00031 #include <paludis/name-fwd.hh>
00032 #include <paludis/hook-fwd.hh>
00033 #include <paludis/repository-fwd.hh>
00034 #include <paludis/dep_spec.hh>
00035 #include <paludis/spec_tree-fwd.hh>
00036 #include <paludis/package_id-fwd.hh>
00037 #include <paludis/mask-fwd.hh>
00038 #include <paludis/package_database-fwd.hh>
00039 #include <paludis/selection-fwd.hh>
00040 #include <paludis/metadata_key_holder.hh>
00041 #include <paludis/choice-fwd.hh>
00042 #include <paludis/create_output_manager_info-fwd.hh>
00043 #include <paludis/notifier_callback-fwd.hh>
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 namespace paludis
00056 {
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077 class PALUDIS_VISIBLE Environment :
00078 private InstantiationPolicy<Environment, instantiation_method::NonCopyableTag>,
00079 public MetadataKeyHolder
00080 {
00081 public:
00082
00083
00084
00085 virtual ~Environment() = 0;
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101 virtual const Tribool want_choice_enabled(
00102 const std::tr1::shared_ptr<const PackageID> &,
00103 const std::tr1::shared_ptr<const Choice> &,
00104 const UnprefixedChoiceName &
00105 ) const
00106 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123 virtual const std::string value_for_choice_parameter(
00124 const std::tr1::shared_ptr<const PackageID> &,
00125 const std::tr1::shared_ptr<const Choice> &,
00126 const UnprefixedChoiceName &
00127 ) const
00128 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140 virtual std::tr1::shared_ptr<const Set<UnprefixedChoiceName> > known_choice_value_names(
00141 const std::tr1::shared_ptr<const PackageID> &,
00142 const std::tr1::shared_ptr<const Choice> &
00143 ) const
00144 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157 virtual bool accept_license(const std::string &, const PackageID &) const
00158 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168 virtual bool accept_keywords(const std::tr1::shared_ptr<const KeywordNameSet> &, const PackageID &) const
00169 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179 virtual const std::tr1::shared_ptr<const Mask> mask_for_breakage(const PackageID &) const
00180 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193 virtual const std::tr1::shared_ptr<const Mask> mask_for_user(const PackageID &,
00194 const bool will_be_used_for_overridden) const
00195 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206 virtual bool unmasked_by_user(const PackageID &) const
00207 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00208
00209
00210
00211
00212
00213
00214 virtual std::tr1::shared_ptr<PackageDatabase> package_database()
00215 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00216
00217 virtual std::tr1::shared_ptr<const PackageDatabase> package_database() const
00218 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00219
00220
00221
00222
00223 virtual std::tr1::shared_ptr<PackageIDSequence> operator[] (const Selection &) const
00224 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235 virtual std::tr1::shared_ptr<const FSEntrySequence> bashrc_files() const
00236 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00237
00238
00239
00240
00241 virtual std::tr1::shared_ptr<const FSEntrySequence> syncers_dirs() const
00242 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00243
00244
00245
00246
00247 virtual std::tr1::shared_ptr<const FSEntrySequence> fetchers_dirs() const
00248 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00249
00250
00251
00252
00253 virtual std::tr1::shared_ptr<const FSEntrySequence> hook_dirs() const
00254 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00255
00256
00257
00258
00259 virtual std::string paludis_command() const
00260 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00261
00262
00263
00264
00265 virtual void set_paludis_command(const std::string &) = 0;
00266
00267
00268
00269
00270 virtual const FSEntry root() const = 0;
00271
00272
00273
00274
00275 virtual uid_t reduced_uid() const = 0;
00276
00277
00278
00279
00280 virtual gid_t reduced_gid() const = 0;
00281
00282
00283
00284
00285
00286
00287
00288 virtual bool is_paludis_package(const QualifiedPackageName &) const
00289 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299 virtual std::tr1::shared_ptr<const MirrorsSequence> mirrors(const std::string &) const
00300 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325 virtual void add_set(
00326 const SetName & base_name,
00327 const SetName & combined_name,
00328 const std::tr1::function<std::tr1::shared_ptr<const SetSpecTree> ()> & func,
00329 const bool combine) const = 0;
00330
00331
00332
00333
00334 virtual std::tr1::shared_ptr<const SetNameSet> set_names() const
00335 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00336
00337
00338
00339
00340
00341
00342 virtual const std::tr1::shared_ptr<const SetSpecTree> set(const SetName &) const
00343 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353 virtual std::tr1::shared_ptr<const DestinationsSet> default_destinations() const
00354 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364 virtual HookResult perform_hook(const Hook &) const
00365 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00366
00367
00368
00369
00370
00371
00372 virtual std::string distribution() const
00373 PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383 virtual void add_to_world(const QualifiedPackageName &) const = 0;
00384
00385
00386
00387
00388 virtual void add_to_world(const SetName &) const = 0;
00389
00390
00391
00392
00393 virtual void remove_from_world(const QualifiedPackageName &) const = 0;
00394
00395
00396
00397
00398 virtual void remove_from_world(const SetName &) const = 0;
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410 virtual const std::tr1::shared_ptr<const MetadataValueKey<std::string> > format_key() const = 0;
00411
00412
00413
00414
00415
00416 virtual const std::tr1::shared_ptr<const MetadataValueKey<FSEntry> > config_location_key() const = 0;
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428 virtual const std::tr1::shared_ptr<OutputManager> create_output_manager(
00429 const CreateOutputManagerInfo &) const = 0;
00430
00431
00432
00433
00434
00435
00436
00437
00438 virtual NotifierCallbackID add_notifier_callback(const NotifierCallbackFunction &) = 0;
00439
00440
00441
00442
00443
00444
00445 virtual void remove_notifier_callback(const NotifierCallbackID) = 0;
00446
00447
00448
00449
00450
00451
00452 virtual void trigger_notifier_callback(const NotifierCallbackEvent &) const = 0;
00453
00454
00455 };
00456
00457 #ifdef PALUDIS_HAVE_EXTERN_TEMPLATE
00458 extern template class PrivateImplementationPattern<CreateOutputManagerForRepositorySyncInfo>;
00459 extern template class PrivateImplementationPattern<CreateOutputManagerForPackageIDActionInfo>;
00460 #endif
00461
00462 }
00463
00464 #endif