text: // C++ informative line for the emacs editor: -*- C++ -*-
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
   * Copyright by The HDF Group.                                               *
   * Copyright by the Board of Trustees of the University of Illinois.         *
   * All rights reserved.                                                      *
   *                                                                           *
   * This file is part of HDF5.  The full HDF5 copyright notice, including     *
   * terms governing use, modification, and redistribution, is contained in    *
   * the COPYING file, which can be found at the root of the source code       *
   * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.  *
   * If you do not have access to either file, you may request a copy from     *
   * help@hdfgroup.org.                                                        *
   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  
  #ifndef __H5FileCreatPropList_H
  #define __H5FileCreatPropList_H
  
  namespace H5 {
  
  /*! \class FileCreatPropList
      \brief Class FileCreatPropList inherits from PropList and provides
      wrappers for the HDF5 file create property list.
  */
  //  Inheritance: PropList -> IdComponent
  class H5_DLLCPP FileCreatPropList : public PropList {
    public:
      ///\brief Default file creation property list.
      static const FileCreatPropList &DEFAULT;
  
      // Creates a file create property list.
      FileCreatPropList();
  
  #ifndef H5_NO_DEPRECATED_SYMBOLS
      // Retrieves version information for various parts of a file.
      void getVersion(unsigned &super, unsigned &freelist, unsigned &stab, unsigned &shhdr) const;
  #endif /* H5_NO_DEPRECATED_SYMBOLS */
  
      // Sets the userblock size field of a file creation property list.
      void setUserblock(hsize_t size) const;
  
      // Gets the size of a user block in this file creation property list.
      hsize_t getUserblock() const;
  
      // Retrieves the size-of address and size quantities stored in a
      // file according to this file creation property list.
      void getSizes(size_t &sizeof_addr, size_t &sizeof_size) const;
  
      // Sets file size-of addresses and sizes.
      void setSizes(size_t sizeof_addr = 4, size_t sizeof_size = 4) const;
  
      // Retrieves the size of the symbol table B-tree 1/2 rank and the
      // symbol table leaf node 1/2 size.
      void getSymk(unsigned &int_nodes_k, unsigned &leaf_nodes_k) const;
  
      // Sets the size of parameters used to control the symbol table nodes.
      void setSymk(unsigned int_nodes_k, unsigned leaf_nodes_k) const;
  
      // Returns the 1/2 rank of an indexed storage B-tree.
      unsigned getIstorek() const;
  
      // Sets the size of parameter used to control the B-trees for
      // indexing chunked datasets.
      void setIstorek(unsigned ik) const;
  
      // Sets the strategy and the threshold value that the library will
      // will employ in managing file space.
      void setFileSpaceStrategy(H5F_fspace_strategy_t strategy, hbool_t persist, hsize_t threshold) const;
  
      // Returns the strategy that the library uses in managing file space.
      void getFileSpaceStrategy(H5F_fspace_strategy_t &strategy, hbool_t &persist, hsize_t &threshold) const;
  
      // Sets the file space page size for paged aggregation.
      void setFileSpacePagesize(hsize_t fsp_psize) const;
  
      // Returns the threshold value that the library uses in tracking free
      // space sections.
      hsize_t getFileSpacePagesize() const;
  
      ///\brief Returns this class name.
      virtual H5std_string
      fromClass() const
      {
          return ("FileCreatPropList");
      }
  
      // Copy constructor: same as the original FileCreatPropList.
      FileCreatPropList(const FileCreatPropList &orig);
  
      // Creates a copy of an existing file create property list
      // using the property list id.
      FileCreatPropList(const hid_t plist_id);
  
      // Noop destructor
      virtual ~FileCreatPropList();
  
  #ifndef DOXYGEN_SHOULD_SKIP_THIS
  
      // Deletes the global constant, should only be used by the library
      static void deleteConstants();
  
    private:
      static FileCreatPropList *DEFAULT_;
  
      // Creates the global constant, should only be used by the library
      static FileCreatPropList *getConstant();
  
  #endif // DOXYGEN_SHOULD_SKIP_THIS
  
  }; // end of FileCreatPropList
  } // namespace H5
  
  #endif // __H5FileCreatPropList_H
  