text: /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You under the Apache License, Version 2.0
   * (the "License"); you may not use this file except in compliance with
   * the License.  You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  #ifndef _LOG4CXX_HELPERS_RESOURCE_BUNDLE_H
  #define _LOG4CXX_HELPERS_RESOURCE_BUNDLE_H
  
  #include <log4cxx/helpers/objectimpl.h>
  #include <log4cxx/helpers/objectptr.h>
  
  namespace log4cxx
  {
          namespace helpers
          {
                  class Locale;
  
                  class ResourceBundle;
                  LOG4CXX_PTR_DEF(ResourceBundle);
  
                  /**
                  Resource bundles contain locale-specific objects
                  */
                  class LOG4CXX_EXPORT ResourceBundle : public ObjectImpl
                  {
                  public:
                          DECLARE_ABSTRACT_LOG4CXX_OBJECT(ResourceBundle)
                          BEGIN_LOG4CXX_CAST_MAP()
                                  LOG4CXX_CAST_ENTRY(ResourceBundle)
                          END_LOG4CXX_CAST_MAP()
  
                          /**
                          Gets a string for the given key from this resource bundle or one of
                          its parents. Calling this method is equivalent to calling
  
                          @param key the key for the desired string
                          @return the string for the given key
                          @throw MissingResourceException - if no object for the given key
                          can be found
                          */
                          virtual LogString getString(const LogString& key) const = 0;
  
                          /**
                          Gets a resource bundle using the specified base name and locale
  
                          @param baseName the base name of the resource bundle, a fully
                          qualified class name or property filename
                          @param locale the locale for which a resource bundle is desired
                          */
                          static ResourceBundlePtr getBundle(const LogString& baseName,
                                  const Locale& locale);
  
                  protected:
                          /*
                          Sets the parent bundle of this bundle. The parent bundle is
                          searched by #getString when this bundle does not contain a particular
                          resource.
  
                          Parameters:
                          parent - this bundle's parent bundle.
                          */
                          inline void setParent(const ResourceBundlePtr& parent1)
                                  { this->parent = parent1; }
  
                          /**
                          The parent bundle of this bundle.
  
                          The parent bundle is searched by #getString when this bundle does
                          not contain a particular resource.
                          */
                          ResourceBundlePtr parent;
                  }; // class ResourceBundle
          }  // namespace helpers
  } // namespace log4cxx
  
  #endif
  
  