summaryrefslogtreecommitdiffstats
path: root/c++/src/H5Location.cpp
Commit message (Collapse)AuthorAgeFilesLines
* [svn-r29361] Purpose: CorrectionBinh-Minh Ribler2016-03-091-2/+2
| | | | | | | | | | Description: Replaced static_cast with reinterpret_cast for "void *". Removed some commented-out old code. Platforms tested: Linux/32 2.6 (jam) Linux/64 (platypus) Darwin (osx1010test)
* [svn-r29340] Purpose: Code cleanupBinh-Minh Ribler2016-03-081-5/+5
| | | | | | | | | | | | | | | Description: - Removed many warnings: warning: use of old-style cast warning: enumeration value ‘H5D_VIRTUAL’ not handled in switch warning: comparison between signed and unsigned There are others of the same warnings and they will be taken care of in the next release. - Made some code reuse between overloads Platforms tested: Linux/32 2.6 (jam) Linux/64 (platypus) Darwin (osx1010test)
* [svn-r27961] Purpose: Partial fix of issues HDFFV-9169 and HDFFV-9167Binh-Minh Ribler2015-10-061-0/+1
| | | | | | | | | | | | | | | | | | | | | | Description: Added wrappers for H5P[s/g]et_attr_phase_change and H5P[s/g]et_attr_creation_order // Sets attribute storage phase change thresholds. void setAttrPhaseChange(unsigned max_compact = 8, unsigned min_dense = 6) // Gets attribute storage phase change thresholds. void getAttrPhaseChange(unsigned& max_compact, unsigned& min_dense) // Sets tracking and indexing of attribute creation order. void setAttrCrtOrder(unsigned crt_order_flags) // Gets tracking and indexing settings for attribute creation order. unsigned getAttrCrtOrder() Platforms tested: Linux/32 2.6 (jam) Linux/64 (platypus) Darwin (osx1010test)
* [svn-r27945] Purpose: Fix HDFFV-9529Binh-Minh Ribler2015-10-041-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Description: Merged from hdf5_CppAPI_Constants r27942: ------ Description: - Added H5dont_atexit() to getPredType and all the getConstant's to prevent the C library from terminating before the C++ library cleanup. - More cleanup and added more comments r27923: ------ - Updated more comments and moved some things around for consistency - Removed check for "new" failure, exceptions would be thrown r27922: ------ Description: Added function headers and more comments for clarity. r27917: ------ Description: The C++ library has several types of global constants from different classes, such as PropList, PredType, DataSpace, etc... Previously, these global constants were declared statically and the C++ library used a constant, called PredType::AtExit, to detect when all the global contants are destroyed then close the C library (H5close). This method relied on the order of the constants being created and destroyed and that PredType constants be the last to be destroyed. In September 2015, it was recognized that the order in which the global constants were created and destroyed was actually undefined, thus can be different between different compilers. This resulted in failure when compilers destroy PredType constants before others because when PredType::AtExit was destroyed, the C library was closed, so when the constants of other classes such as PropList or DataSpace were being deleted, the C library would not be available. Solution: The static approach is changed to dynamic. In order to avoid an impact on existing applications, the static global constants are changed to constant references to the dynamically allocated objects. A detailed explanation of the new method and a description of the changes are in a Design Notes at the end of the file H5PredType.cpp. New functions added to support the new methods are listed below. class H5Library: // Returns a singleton H5Library to initialize the global // constants, invoked in IdComponent default constructor static H5Library* getInstance(); // public // Registers cleanup and terminating functions with atexit(), // called in IdComponent default constructor static void initH5cpp(void); // public // Calls H5close to terminate the library, registered with // atexit(), as the last thing to be done. static void termH5cpp(void); // public class PredType: // Creates the constants static void makePredTypes(); // private // Calls makePredTypes to create the constants and returns // the dummy constant PREDTYPE_CONST; static PredType* getPredTypes(); // private class DataSpace: // Creates the constant static DataSpace* getConstant(); // private class PropList: // Creates the constant static PropList* getConstant(); // private class DSetCreatPropList: // Creates the constant static DSetCreatPropList* getConstant(); // private class DSetMemXferPropList: // Creates the constant static DSetMemXferPropList* getConstant(); // private class FileCreatPropList: // Creates the constant static FileCreatPropList* getConstant(); // private class FileAccPropList: // Creates the constant static FileAccPropList* getConstant(); // private This function is added to PredType, DataSpace, PropList, and the four subclasses of PropList: // Deletes the constant static void deleteConstants(); // public Platforms tested: Linux/32 2.6 (jam) Linux/64 (platypus) Darwin (osx1010test)
* [svn-r27943] Purpose: Fix HDFFV-7947 (cont.)Binh-Minh Ribler2015-10-031-2/+2
| | | | | | | | | | | | | | | Description: In the friend functions that setId, changed the direct assignment of id to using p_setId() so that the previous id can be closed first to avoid memory leaks. This change was tested and confirmed by user Jorj on Forum when his application stopped running out of memory. Currently, the C++ library doesn't have a way to test this. A function such as H5Inmembers for library ids would be helpful. Platforms tested: Linux/32 2.6 (jam) SunOS 5.11 (emu) Darwin (osx1010test)
* [svn-r26695] Purpose: Fixed HDFFV-7947 (cont.)Binh-Minh Ribler2015-04-011-1/+1
| | | | | | | | | | | | Description: - Put back the UNUSED parameters in dsets test because the change to remove the warning last time caused failure in setting filter, in turn, caused failure in the test with such obscure/unrelated errors! - Added incRefCount() to other constructors that missed from last time. Platforms tested: Linux/64 (platypus) Linux/32 2.6 (jam) SunOS 5.11 (emu)
* [svn-r26655] Purpose: Fixed HDFFV-7947Binh-Minh Ribler2015-03-301-9/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | Description: When copy constructor or constructor that takes an existing id is invoked, the C ref counter stays the same but there is an extra C++ object which later is destroyed and may cause the HDF5 id to be closed prematurely. The C++ library needs to increment the ref counter in these situations, so that the C library will not close the id when it is still being referenced. However, the incrementing of ref count left some objects opened at the end of the program, perhaps, due to compiler's optimization on cons/destructors. The constructor, that takes an existing id, needs to increment the counter but it seems that the matching destructor wasn't invoked. The workaround is to have a function for each class that has "id" that only sets the id and not increment the ref count for the library to use in these situations. These functions are "friend" and not public. The friend functions are: void f_Attribute_setId(Attribute *, hid_t) void f_DataSet_setId(DataSet *, hid_t) void f_DataSpace_setId(DataSpace *, hid_t) void f_DataType_setId(DataType *, hid_t) Platforms tested: Linux/64 (platypus) Linux/32 2.6 (jam gnu and Intel 15.0) SunOS 5.11 (emu)
* [svn-r26457] Purpose: Fix warnings HDFFV-8658Binh-Minh Ribler2015-03-151-4/+15
| | | | | | | | | | | | | | | | | | | | | | | | Description: The following two constructors of classes: AbstractDs, IdComponent, H5Location, and H5Object are no longer appropriate after the data member "id" had been moved from IdComponent to the sub-classes. The copy constructors are noop and will be generated by the compilers if needed so they can be removed in 1.8.15 without effecting applications. The other constructors will be removed from 1.10 release, and then from 1.8 if their removal does not raise any problems in at least two 1.10 releases. <Classname>(const hid_t h5_id); <Classname>(const <Classname>& original); Deprecation warnings are added to each of these classes. The other classes are changed to call the default constructor instead of one of the constructors above. Platforms tested: Linux/64 (platypus) Linux/32 2.6 (jam) SunOS 5.11 (emu)
* [svn-r25644] Purpose: Fixed HDFFV-8928Binh-Minh Ribler2014-10-011-0/+1
| | | | | | | | | | Description: Followed hints on the JIRA issue to remove several potential memory leaks. Platforms tested: Linux/ppc64 (ostrich) Linux/32 2.6 (jam) SunOS 5.11 (emu)
* [svn-r25640] Purpose: Fixed HDFFV-4259Binh-Minh Ribler2014-09-301-0/+3
| | | | | | | | | | | | | | Description: - Used H5I_INVALID_HID instead of 0 to initialized member "id" in classes that represent HDF5 objects. For PropList, H5P_DEFAULT has to be used instead of H5I_INVALID_HID. - Added try/catch block to some dynamically allocating memory code and re-throw the bad_alloc exception with a message informing the location of the failure. Platforms tested: Linux/ppc64 (ostrich) Linux/32 2.6 (jam) SunOS 5.11 (emu)
* [svn-r25020] Description:Binh-Minh Ribler2014-04-121-0/+2
| | | | | | | | | | - Fixed a few comments that Doxygen gave warnings on. - Removed stylesheet from configuration so Doxygen will use the default stylesheet and removed the CLANG-related lines to eliminate another error since we're not using that feature, so the lines should not present. (from cpp_doc_config) Platforms tested: Linux/32 2.6 (jam) - only changing comments
* [svn-r24996] Description:Binh-Minh Ribler2014-04-091-0/+2
| | | | | | | | Fixed some minor documentation mistakes. Updated configuration file for Doxygen. Platforms tested: Linux/ppc64 (ostrich) Linux/32 2.6 (jam)
* [svn-r24994] Purpose: Removed some warningsBinh-Minh Ribler2014-04-091-6/+13
| | | | | | | | | Description: Turned on warnings and removed some of those. Platforms tested: Linux/ppc64 (ostrich) Linux/32 2.6 (jam) SunOS 5.11 (emu)
* [svn-r24925] Purpose: Fix HDFFV-7907Binh-Minh Ribler2014-03-301-1/+0
| | | | | | | | | | | | | | | | | | | | | | Description: Added transform property list functions // Constructor creates a dataset transform property list. DSetMemXferPropList(const char* expression); // Sets data transform expression. void setDataTransform(const char* expression) const; void setDataTransform(const H5std_string& expression) const; // Gets data transform expression. ssize_t getDataTransform(char* exp, size_t buf_size=0) const; H5std_string getDataTransform() const; Added test file tdspl.cpp. Platforms tested: Linux/ppc64 (ostrich) Linux/32 2.6 (jam) SunOS 5.11 (emu)
* [svn-r24867] Description:Binh-Minh Ribler2014-03-221-2/+6
| | | | | | | | | | - Added a null terminator to the comment returned from the C call, in getComment methods - Some minor cleanup Platforms tested: Linux/ppc64 (ostrich) Linux/32 2.6 (jam) Linux/64 2.6 (platypus)/PGI compilers
* [svn-r24865] Description:Binh-Minh Ribler2014-03-211-49/+85
| | | | | | | | | | | - Added another overload for char* argument: ssize_t getComment(const char* name, const size_t buf_size, char* comment) - Changed default value to 0 for the other two getComment methods - Added HDmemset to after every char string allocation to clear the buffer Platforms tested: Linux/ppc64 (ostrich) Linux/32 2.6 (jam) Linux/64 2.6 (platypus)/PGI compilers
* [svn-r24291] Description:Binh-Minh Ribler2013-10-151-9/+9
| | | | | | | | | - Added a lot of documentation to classes for Reference Manual. - Fixed some format inconsistencies Platforms tested: Linux/ppc64 (ostrich) Linux/32 2.6 (jam) Linux/64 2.6 (koala)/PGI compilers
* [svn-r24188] Purpose: Fixed bug introduced in r24163Binh-Minh Ribler2013-09-231-150/+309
| | | | | | | | | | | | | Description: - The failure in daily test was caused by missing initialization of member "id" in a few constructors. This is now fixed. - Added two overloaded H5Location::setComment - Improved some error reporting in H5Location - Improved error reporting in tests Platforms tested: Linux/32 2.6 (jam) SunOS 5.11 (emu) Linux/64 2.6 (koala)/PGI compilers
* [svn-r24178] Back out the changes that cause daily test to fail r24163Binh-Minh Ribler2013-09-201-296/+124
|
* [svn-r24163] Purpose: More on HDFFV-7520 and HDFFV-533Binh-Minh Ribler2013-09-191-124/+296
| | | | | | | | | | | | Description: - Improved the changes in revisions r22836 and r23438, mainly on the wrappers of reference, dereference, get region, and set/getcomment. - Added more tests. Platforms tested: Linux/32 2.6 (jam) SunOS 5.11 (emu) Linux/ppc64 (ostrich)
* [svn-r24162] backing out a commit that includes wrong filesBinh-Minh Ribler2013-09-191-297/+124
|
* [svn-r24161] Purpose: More on HDFFV-7520 and HDFFV-533Binh-Minh Ribler2013-09-191-124/+297
| | | | | | | | | | | Description: - Completed the changes in revisions r22836 and r23438 with improvement on wrappers such as reference, dereference, get region, and set/getcomment. - Added more tests. Platforms tested: Linux/32 2.6 (jam) SunOS 5.11 (emu) Linux/ppc64 (ostrich)
* [svn-r24143] Description:Binh-Minh Ribler2013-09-161-11/+21
| | | | | | | Fixed comments, documentation, and mis-matched DOXYGEN_SHOULD_SKIP_THIS pairs. Platforms tested: Linux/32 2.6 (jam) Regenerated and verified generated documentation.
* [svn-r23456] Description:Binh-Minh Ribler2013-03-261-1/+1
| | | | | | | | A "return" was missing from a non-void function. Fixed. Platforms Tested: Linux/32 2.6 (jam) Linux/ppc64 (ostrich) Asked Allen check Windows.
* [svn-r23438] Purpose: Fix bug HDFFV-7520Binh-Minh Ribler2013-03-231-0/+33
| | | | | | | | | Description: Added wrappers for H5Aexists. Platforms Tested: Linux/32 2.6 (jam) Linux/64 2.6 (koala) Linux/ppc64 (ostrich)
* [svn-r22836] Purpose: Fix bug HDFFV-533 and add other missing functionsBinh-Minh Ribler2012-09-271-0/+669
Description: In this bug, H5File doesn't have the ability to create attribute. The following changes will provide that functionality and several others that were also missing: - Added an abstract class H5Location in between IdComponent and H5Object. - New class structure of IdComponent, H5Location, H5Object, H5File IdComponent | H5Location / \ H5Object H5File - Wrappers in H5Object were moved to H5Location because the related C functions take either file, group, dataset, or named datatype ID. - Added wrapper for H5Rget_obj_type2 - Added tests for file attributes and H5Rget_obj_type2 wrapper Platforms tested: Linux/32 2.6 (jam) Linux/64 2.6 (koala) SunOS 5.10 (linew)