1 /* $Id: ptb_registry.cpp 122761 2008-03-25 16:45:09Z gouriano $
2  * ===========================================================================
3  *
4  *                            PUBLIC DOMAIN NOTICE
5  *               National Center for Biotechnology Information
6  *
7  *  This software/database is a "United States Government Work" under the
8  *  terms of the United States Copyright Act.  It was written as part of
9  *  the author's official duties as a United States Government employee and
10  *  thus cannot be copyrighted.  This software/database is freely available
11  *  to the public for use. The National Library of Medicine and the U.S.
12  *  Government have not placed any restriction on its use or reproduction.
13  *
14  *  Although all reasonable efforts have been taken to ensure the accuracy
15  *  and reliability of the software and data, the NLM and the U.S.
16  *  Government do not and cannot warrant the performance or results that
17  *  may be obtained by using this software or data. The NLM and the U.S.
18  *  Government disclaim all warranties, express or implied, including
19  *  warranties of performance, merchantability or fitness for any particular
20  *  purpose.
21  *
22  *  Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  * Author:  Andrei Gourianov
27  *
28  */
29 
30 #include <ncbi_pch.hpp>
31 #include "ptb_registry.hpp"
32 
33 BEGIN_NCBI_SCOPE
34 
CPtbRegistry(void)35 CPtbRegistry::CPtbRegistry(void)
36     : m_IsEmpty(true)
37 {
38     m_Registry.reset(new CMemoryRegistry);
39 }
40 
CPtbRegistry(const IRWRegistry & reg)41 CPtbRegistry::CPtbRegistry(const IRWRegistry& reg)
42     : m_Registry(const_cast<IRWRegistry*>(&reg), eNoOwnership)
43 {
44     m_IsEmpty = reg.Empty();
45 }
46 
~CPtbRegistry(void)47 CPtbRegistry::~CPtbRegistry(void)
48 {
49 }
50 
GetString(const string & section,const string & name,const string & default_value) const51 string CPtbRegistry::GetString(const string& section,
52                                const string& name,
53                                const string& default_value) const
54 {
55     if (m_IsEmpty) {return default_value;}
56     string key(section+name);
57     map<string,string>::const_iterator i = m_Cache.find(key);
58     if (i != m_Cache.end()) {
59         return i->second;
60     }
61     return m_Cache[key] = m_Registry->GetString(section,name,default_value);
62 }
63 
64 END_NCBI_SCOPE
65