You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
3.1 KiB

// ==================================================
// Copyright 2020 Siemens Digital Industries Software
// ==================================================
// Copyright 2013.
// Siemens Product Lifecycle Management Software Inc.
// All Rights Reserved.
// ==================================================
// Copyright 2020 Siemens Digital Industries Software
/* */
#ifndef TEAMCENTER_PREFERENCE_SCOPE_HXX
#define TEAMCENTER_PREFERENCE_SCOPE_HXX
#include <tc/preferences.h>
#include <tc/libtc_exports.h>
/**
@file
Wrapper class to conveniently set the Preferences search scope and reset it once
not needed any more.
*/
/**
@deprecated #PreferenceScope deprecated in Teamcenter 10.0.
<br/>This class has become useless since the search scope concept is removed and replaced with the dynamic concept of protection scope.
<br/>Any usage of this class is simply ignored (the code is a no-operation).
@brief Conveniently sets and resets the search scope for Preferences
The search scope for Preferences is needed to let the Preferences layer know where to start looking for a preference value.
<br/>It is set using the PREF_set_search_scope ITK. Prior to calling the PREF_set_search_scope, the PREF_ask_search_scope also needs to be called to keep the previous value and reset to it once done.
<br/>In a nutshell, the setting of search scope through ITK reads like this:
@code
TC_preference_search_scope_t old_scope;
int ifail = PREF_ask_search_scope( &old_scope );
if( ITK_ok == ifail )
{
ifail = PREF_set_search_scope( new_scope );
if( ITK_ok == ifail )
{
ifail = PREF_ask_int_value( "My_Preference", 0, &int_value );
[...]
}
ifail = PREF_set_search_scope( old_value );
[...]
}
@endcode
<br/>This approach can be tedious. Great simplification comes from using the PreferenceScope class:
@code
{
PreferenceScope prefScope( new_scope );
ifail = PREF_ask_int_value( "My_Preference", 0, &int_value );
[...]
} //<-- At the end of the C++ code scope, the destructor of the prefScope object is called,
// effectively resetting the Preferences search scope.
@endcode
*/
class TC_DEPRECATED_NO_REPLACEMENT( "10.0", "PreferenceScope" ) TC_API PreferenceScope
{
public:
/**
Constructor
<br/>The current Preferences search scope will be stored and the value set by
@p newScope will become the new search scope.
*/
PreferenceScope( TC_preference_search_scope_t newScope );
/**
Destructor
<br/>It will reset the Preferences search scope to its prior value.
*/
virtual ~PreferenceScope();
private:
/** Default constructor */
PreferenceScope();
/** Copy constructor */
PreferenceScope( const PreferenceScope& );
/** Operator = */
PreferenceScope& operator = ( const PreferenceScope& );
/** The existing search scope before the replacement by a new scope */
TC_preference_search_scope_t savedScope;
};
#include <tc/libtc_undef.h>
#endif