Skip to content

PERF: Meta data dictionary move#98

Closed
hjmjohnson wants to merge 2 commits intoInsightSoftwareConsortium:masterfrom
hjmjohnson:MetaDataDictionaryMove
Closed

PERF: Meta data dictionary move#98
hjmjohnson wants to merge 2 commits intoInsightSoftwareConsortium:masterfrom
hjmjohnson:MetaDataDictionaryMove

Conversation

@hjmjohnson
Copy link
Copy Markdown
Member

http://review.source.kitware.com/#/c/23238/5

Bradley Lowekamp
Uploaded patch set 1.Mar 5, 2018

Bradley Lowekamp
Patch Set 1: Straight from SimpleITK, what do you think of this idea?Mar 5, 2018

Kitware Build Robot
Patch Set 1: Verified-1 Build Failed: CDash filtered results: https://open.cdash.org/index.php?&project=Insight&filtercount=3&field1=buildname/string&compare1=63&value1=23238-1&field2=buildstarttime/date&compare2=83&value2=2015-03-01&field3=buildstarttime/date&compare3=84&value3=2029-01-01Mar 5, 2018

Dzenan Zukic
Patch Set 1: (2 comments) Looks good, but as you said a lot of testing is needed.Mar 6, 2018

Bradley Lowekamp
Patch Set 1: (1 comment) Thanks for the feed back.Mar 6, 2018

Bradley Lowekamp
Uploaded patch set 2.Mar 6, 2018

Dzenan Zukic
Patch Set 2: Code-Review+1Mar 6, 2018

Kitware Build Robot
Patch Set 2: Verified-1 Build Failed: CDash filtered results: https://open.cdash.org/index.php?&project=Insight&filtercount=3&field1=buildname/string&compare1=63&value1=23238-2&field2=buildstarttime/date&compare2=83&value2=2015-03-01&field3=buildstarttime/date&compare3=84&value3=2029-01-01Mar 6, 2018

Bradley Lowekamp
Uploaded patch set 3.May 7, 2018

Kitware Build Robot
Patch Set 3: Verified-1 Build Failed: CDash filtered results: https://open.cdash.org/index.php?&project=Insight&filtercount=3&field1=buildname/string&compare1=63&value1=23238-3&field2=buildstarttime/date&compare2=83&value2=2015-03-01&field3=buildstarttime/date&compare3=84&value3=2029-01-01May 7, 2018

Bradley Lowekamp
Uploaded patch set 4: Patch Set 3 was rebased.May 25 1:30 PM

Kitware Build Robot
Patch Set 4: Verified+1 Build Successful: CDash filtered results: https://open.cdash.org/index.php?&project=Insight&filtercount=3&field1=buildname/string&compare1=63&value1=23238-4&field2=buildstarttime/date&compare2=83&value2=2015-03-01&field3=buildstarttime/date&compare3=84&value3=2029-01-01May 25 4:08 PM

Bradley Lowekamp
Uploaded patch set 5: Patch Set 4 was rebased.May 29 8:30 AM

Kitware Build Robot
Patch Set 5: Build Successful: CDash filtered results: https://open.cdash.org/index.php?&project=Insight&filtercount=3&field1=buildname/string&compare1=63&value1=23238-5&field2=buildstarttime/date&compare2=83&value2=2015-03-01&field3=buildstarttime/date&compare3=84&value3=2029-01-01May 29 9:46 AM

Bradley Lowekamp
Patch Set 5: Add more comments to ensure that future developers keep the copy on write working correctlyJul 27 10:36 AM

Hans J. Johnson
Patch Set 5: Code-Review+1 This looks like like a nice improvement.Aug 23 10:49 AM

@hjmjohnson
Copy link
Copy Markdown
Member Author

@thewtex It appears that the WIP check is not working.

@blowekamp Can this be converted from a WIP?

@thewtex
Copy link
Copy Markdown
Member

thewtex commented Nov 6, 2018

@hjmjohnson The WIP check looks at the title of the PR.

@hjmjohnson hjmjohnson closed this Nov 6, 2018
@hjmjohnson hjmjohnson deleted the MetaDataDictionaryMove branch November 6, 2018 14:49
@hjmjohnson hjmjohnson restored the MetaDataDictionaryMove branch November 6, 2018 19:21
@hjmjohnson
Copy link
Copy Markdown
Member Author

Accidently deleted/closed branch when the script for moving from Gerrit went haywire.

@hjmjohnson hjmjohnson reopened this Nov 6, 2018
@hjmjohnson hjmjohnson changed the title Meta data dictionary move WIP: Meta data dictionary move Nov 6, 2018
@hjmjohnson hjmjohnson force-pushed the MetaDataDictionaryMove branch from a46b6fa to 79eb5c6 Compare November 10, 2018 03:17
@hjmjohnson hjmjohnson changed the title WIP: Meta data dictionary move PERF: Meta data dictionary move Nov 10, 2018

MetaDataDictionary
::MetaDataDictionary( MetaDataDictionary && rr)
: m_Dictionary( new MetaDataDictionaryMapType(std::move(*rr.m_Dictionary)))
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess you know, dynamic memory allocation (as in new MetaDataDictionaryMapType) in a move-operation should preferably be avoided. Wouldn't a defaulted move-constructor (= default) just do the right thing?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch!

}

MetaDataDictionary & MetaDataDictionary
::operator=(MetaDataDictionary && rr)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't an explicitly defaulted move-assignment operator (= default) just do the right thing?

MetaDataDictionary
::MetaDataDictionary( MetaDataDictionary && rr)
: m_Dictionary( std::move(rr.m_Dictionary) )
{
Copy link
Copy Markdown
Contributor

@N-Dekker N-Dekker Nov 15, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still looks like an explicitly defaulted move-constructor (= default) would just do the right thing, OK?

@blowekamp
Copy link
Copy Markdown
Member

I think the move methods should be kept explicit. This class is implementing a non trivial resource management policy so I think being explicit is a very good thing.

Copy link
Copy Markdown
Contributor

@N-Dekker N-Dekker left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please note that the expression ( *m_Dictionary )[key] might actually modify the dictionary (by adding an empty entry, if it isn't there already). When the dictionary is shared (using std::shared_ptr) it could be problematic, I guess.

This comment is specifically about the const overload of MetaDataDictionary::::operator[].

@hjmjohnson hjmjohnson force-pushed the MetaDataDictionaryMove branch from 79eb5c6 to ff1c9f0 Compare December 21, 2018 20:54
The default behavior when reading a Image in ITK is to create 3 copies
of the MetaDataDictionary for the ImageIO, ImageFileReader, and Image
object. These are usually not modified, not shared and created by a
deep copy. The internal std::map is shared via a std::share_ptr with a
reference count. If the dictionaries are modified a deep copy is
performed.
@blowekamp
Copy link
Copy Markdown
Member

Thanks again for your comments and review. I will seek to combine modern C++ style with ITK's tradition of being explicit. I am reviving the PR in #455

@hjmjohnson
Copy link
Copy Markdown
Member Author

Moved to : Meta data dictionary move #455.

@hjmjohnson hjmjohnson closed this Jan 29, 2019
@hjmjohnson hjmjohnson deleted the MetaDataDictionaryMove branch October 23, 2019 13:30
hjmjohnson added a commit to hjmjohnson/ITK that referenced this pull request Dec 26, 2020
Fix typos in comments
CMakeLists.txt: Export all symbols (InsightSoftwareConsortium#136)
test/cctest/CMakeLists.txt: Added /bigobj for MSVC tests (InsightSoftwareConsortium#135)
Add DOUBLE_CONVERSION_HAS_ATTRIBUTE to fix warnings on MSVC and enable for GCC. (InsightSoftwareConsortium#131)
Fix broken MSVC builds. (InsightSoftwareConsortium#130)
Add support for quiet and signaling NaNs to the ieee header. (InsightSoftwareConsortium#128)
Move buffer and buffer_pos down (InsightSoftwareConsortium#125)
    * Move buffer and buffer_pos down
    Simplifies code by removing two asserts
    Optimize code with -ftrivial-auto-var-init=pattern by avoiding initialization when buffer is not used
    * Disable -ftrivial-auto-var-init=pattern for a large buffer

Fix strtod.cc undefined constants (InsightSoftwareConsortium#123)
    When DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS is not defined
    there is a build error when -Wall -Werror enabled because
    kMaxExactDoubleIntegerDecimalDigits, exact_powers_of_ten and
    kExactPowersOfTenSize are used only in else branch of this define
    (when it's defined).
    Fixes google/double-conversion#122

Add full license to test .cc files missing it. (InsightSoftwareConsortium#121)
    Some files in cctest had a 1-line copyright that doesn't list the
    license. This copies the project license to those files, preserving the
    date.

Add wasm32 as supported platform (InsightSoftwareConsortium#120)
    Summary:
    Emscripten is already included, adding wasm32 the same way for when
    build with "plain" clang wasm32 (without emscripten)

Pseiderer/add nios2 and xtensa 001 (InsightSoftwareConsortium#119)
    * double-conversion: enable for nios2
    Nios2 supports double conversion, tested using qemu:

Add support for microblaze.
Add support for e2k architecture. (InsightSoftwareConsortium#118)
Add min exponent width option in double-to-string conversion (InsightSoftwareConsortium#116)

Remove reference to `diy-fp.cc`
    That file was removed in a previous commit.

More Bignum fiddling. (InsightSoftwareConsortium#108)
    * Char has size 1.
    * More const.
    * Allow inlining.
    * Compact Bignum sizes.
    * Consistent naming.

Remove redundant parenthesis.
    Reported by seanm (github).

Optimise Bignum layout. (InsightSoftwareConsortium#107)
    * Use memset to clear bignum.
    * Improve data locality.
    * Reduce size of bignum.

Split Strtod() (InsightSoftwareConsortium#106)
    Add `StrtodTrimmed` method, exposing a later stage of the conversion pipeline.
    Some tools can do the first stage outside of the double-conversion library and would prefer not to pay the cost of doing it again.

Split double-conversion. (InsightSoftwareConsortium#104)
    Separates the two main classes into separate c and h files.
    Fix naming. (InsightSoftwareConsortium#103)
    Fix naming of `case_insensibility` to `case_insensitivity`.

Consistent macro prefix. (InsightSoftwareConsortium#101)

Use standard min/max. (InsightSoftwareConsortium#102)

Fix some issues with invalid hex-float literals.
    When converting `0x` the converter would assert (or access out of
        boundary).
    With `0x1.p1234556666FFFFF` the converter would overflow and not yield
    the correct exponent.

Usefulcat master (InsightSoftwareConsortium#98)
    * minor bug fix: use free() instead of delete[] to free memory allocated by strdup()
    * fix for uninitialized variable problem found by valgrind
    * disable assertions for 'optimize' build
    * removed -g option that was inadvertently added to CCFLAGS
    * ignore generated files

    Fix warning for g++ 4.9.3.

CMake: install to correct lib dir (InsightSoftwareConsortium#93)
    64-bit libraries should be installed in /usr/lib64, not in /usr/lib/
    Make the destination lib dir configurable.

Add big endian ARM support (InsightSoftwareConsortium#92)
    This fixes compilation on such platforms.

Switch to relative includes.
Fix 16-bit separators.

msvc: check if _MSC_VER is defined (InsightSoftwareConsortium#88)

Allow for compilation in emscripten (InsightSoftwareConsortium#86)
    Support emscripten

Add test cases.
    Fixes InsightSoftwareConsortium#62

Add support of ARC architecture (InsightSoftwareConsortium#82)
    More info about ARC architecture is here: [1] & [2].
    We need ARC supported here for many things like:
     - ICU (see [3])
     - Qt5 etc

Fix hex literal bug.
    Large hex literals would lose their minus sign.

Support separator characters.
Add support for hexadecimal float literals.
Fix bug where hex numbers would lose the minus sign.

Add comments for achitecture check.
    This should make it easier to add new architectures.

Add support for aarch64_be, or1k and microblazebe.
Add support for Windows on ARM and ARM64 (InsightSoftwareConsortium#76)

Use `static_assert` with newer compilers.
Add Native Client as support architecture.
Avoid undefined cast to make ASAN happy.
Avoid undefined cast to make ASAN happy.
Add `exports_files`
Processed length should include no trailing junk (InsightSoftwareConsortium#63)

Clarify output charset in DoubleToAscii documentation (InsightSoftwareConsortium#61)
    * Clarify output charset in DoubleToAscii documentation
    * Fixing typo in charset docs.

Fix warning for code that will never be executed (InsightSoftwareConsortium#59)

Rename macros.
    Renamed DISALLOW_COPY_AND_ASSIGN and DISALLOW_IMPLICIT_CONSTRUCTORS to
    DC_DISALLOW_COPY_AND_ASSIGN and DC_DISALLOW_IMPLICIT_CONSTRUCTORS.

    This makes it easier to use this library in projects that have macros
    with the same name (as is common in Google).

Some refactorings: remove unused static, replace deprecated headers, init member in constructor
    REF: replace deprecated headers
    REF: meaningless static definition in anonymous namespace
    REF: init member in constructor

Fix typo in variable name.

Suppress issue in clang analyzer.
CMake fixes.
    Remove unused CMake file.

Implement ALLOW_CASE_INSENSIBILITY mode for StringToDoubleConverter c…

Remove unnecessary INSTALL_INTERFACE expression.

Use template for CMake installation.

Fix mistake for build interface include dir.

Improve CMake changes.
    Update CMake package generation.

Implement ALLOW_CASE_INSENSIBILITY mode for StringToDoubleConverter class

Add assert and test.

Avoid negative shift.
    When filling in fractional digits in a fixed representation we
    might use all existing digits. When this happens, we can not look
    at the next digit to see if we should round up.
    Before this fix, we tried to shift by a negative amount to see if the
    (non-existing) next bit was set to 1 (requiring the number to be rounded up).
hjmjohnson added a commit to hjmjohnson/ITK that referenced this pull request Dec 26, 2020
Fix typos in comments
CMakeLists.txt: Export all symbols (InsightSoftwareConsortium#136)
test/cctest/CMakeLists.txt: Added /bigobj for MSVC tests (InsightSoftwareConsortium#135)
Add DOUBLE_CONVERSION_HAS_ATTRIBUTE to fix warnings on MSVC and enable for GCC. (InsightSoftwareConsortium#131)
Fix broken MSVC builds. (InsightSoftwareConsortium#130)
Add support for quiet and signaling NaNs to the ieee header. (InsightSoftwareConsortium#128)
Move buffer and buffer_pos down (InsightSoftwareConsortium#125)
    * Move buffer and buffer_pos down
    Simplifies code by removing two asserts
    Optimize code with -ftrivial-auto-var-init=pattern by avoiding initialization when buffer is not used
    * Disable -ftrivial-auto-var-init=pattern for a large buffer

Fix strtod.cc undefined constants (InsightSoftwareConsortium#123)
    When DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS is not defined
    there is a build error when -Wall -Werror enabled because
    kMaxExactDoubleIntegerDecimalDigits, exact_powers_of_ten and
    kExactPowersOfTenSize are used only in else branch of this define
    (when it's defined).
    Fixes google/double-conversion#122

Add full license to test .cc files missing it. (InsightSoftwareConsortium#121)
    Some files in cctest had a 1-line copyright that doesn't list the
    license. This copies the project license to those files, preserving the
    date.

Add wasm32 as supported platform (InsightSoftwareConsortium#120)
    Summary:
    Emscripten is already included, adding wasm32 the same way for when
    build with "plain" clang wasm32 (without emscripten)

Pseiderer/add nios2 and xtensa 001 (InsightSoftwareConsortium#119)
    * double-conversion: enable for nios2
    Nios2 supports double conversion, tested using qemu:

Add support for microblaze.
Add support for e2k architecture. (InsightSoftwareConsortium#118)
Add min exponent width option in double-to-string conversion (InsightSoftwareConsortium#116)

Remove reference to `diy-fp.cc`
    That file was removed in a previous commit.

More Bignum fiddling. (InsightSoftwareConsortium#108)
    * Char has size 1.
    * More const.
    * Allow inlining.
    * Compact Bignum sizes.
    * Consistent naming.

Remove redundant parenthesis.
    Reported by seanm (github).

Optimise Bignum layout. (InsightSoftwareConsortium#107)
    * Use memset to clear bignum.
    * Improve data locality.
    * Reduce size of bignum.

Split Strtod() (InsightSoftwareConsortium#106)
    Add `StrtodTrimmed` method, exposing a later stage of the conversion pipeline.
    Some tools can do the first stage outside of the double-conversion library and would prefer not to pay the cost of doing it again.

Split double-conversion. (InsightSoftwareConsortium#104)
    Separates the two main classes into separate c and h files.
    Fix naming. (InsightSoftwareConsortium#103)
    Fix naming of `case_insensibility` to `case_insensitivity`.

Consistent macro prefix. (InsightSoftwareConsortium#101)

Use standard min/max. (InsightSoftwareConsortium#102)

Fix some issues with invalid hex-float literals.
    When converting `0x` the converter would assert (or access out of
        boundary).
    With `0x1.p1234556666FFFFF` the converter would overflow and not yield
    the correct exponent.

Usefulcat master (InsightSoftwareConsortium#98)
    * minor bug fix: use free() instead of delete[] to free memory allocated by strdup()
    * fix for uninitialized variable problem found by valgrind
    * disable assertions for 'optimize' build
    * removed -g option that was inadvertently added to CCFLAGS
    * ignore generated files

    Fix warning for g++ 4.9.3.

CMake: install to correct lib dir (InsightSoftwareConsortium#93)
    64-bit libraries should be installed in /usr/lib64, not in /usr/lib/
    Make the destination lib dir configurable.

Add big endian ARM support (InsightSoftwareConsortium#92)
    This fixes compilation on such platforms.

Switch to relative includes.
Fix 16-bit separators.

msvc: check if _MSC_VER is defined (InsightSoftwareConsortium#88)

Allow for compilation in emscripten (InsightSoftwareConsortium#86)
    Support emscripten

Add test cases.
    Fixes InsightSoftwareConsortium#62

Add support of ARC architecture (InsightSoftwareConsortium#82)
    More info about ARC architecture is here: [1] & [2].
    We need ARC supported here for many things like:
     - ICU (see [3])
     - Qt5 etc

Fix hex literal bug.
    Large hex literals would lose their minus sign.

Support separator characters.
Add support for hexadecimal float literals.
Fix bug where hex numbers would lose the minus sign.

Add comments for achitecture check.
    This should make it easier to add new architectures.

Add support for aarch64_be, or1k and microblazebe.
Add support for Windows on ARM and ARM64 (InsightSoftwareConsortium#76)

Use `static_assert` with newer compilers.
Add Native Client as support architecture.
Avoid undefined cast to make ASAN happy.
Avoid undefined cast to make ASAN happy.
Add `exports_files`
Processed length should include no trailing junk (InsightSoftwareConsortium#63)

Clarify output charset in DoubleToAscii documentation (InsightSoftwareConsortium#61)
    * Clarify output charset in DoubleToAscii documentation
    * Fixing typo in charset docs.

Fix warning for code that will never be executed (InsightSoftwareConsortium#59)

Rename macros.
    Renamed DISALLOW_COPY_AND_ASSIGN and DISALLOW_IMPLICIT_CONSTRUCTORS to
    DC_DISALLOW_COPY_AND_ASSIGN and DC_DISALLOW_IMPLICIT_CONSTRUCTORS.

    This makes it easier to use this library in projects that have macros
    with the same name (as is common in Google).

Some refactorings: remove unused static, replace deprecated headers, init member in constructor
    REF: replace deprecated headers
    REF: meaningless static definition in anonymous namespace
    REF: init member in constructor

Fix typo in variable name.

Suppress issue in clang analyzer.
CMake fixes.
    Remove unused CMake file.

Implement ALLOW_CASE_INSENSIBILITY mode for StringToDoubleConverter c…

Remove unnecessary INSTALL_INTERFACE expression.

Use template for CMake installation.

Fix mistake for build interface include dir.

Improve CMake changes.
    Update CMake package generation.

Implement ALLOW_CASE_INSENSIBILITY mode for StringToDoubleConverter class

Add assert and test.

Avoid negative shift.
    When filling in fractional digits in a fixed representation we
    might use all existing digits. When this happens, we can not look
    at the next digit to see if we should round up.
    Before this fix, we tried to shift by a negative amount to see if the
    (non-existing) next bit was set to 1 (requiring the number to be rounded up).
hjmjohnson added a commit that referenced this pull request Dec 28, 2020
Fix typos in comments
CMakeLists.txt: Export all symbols (#136)
test/cctest/CMakeLists.txt: Added /bigobj for MSVC tests (#135)
Add DOUBLE_CONVERSION_HAS_ATTRIBUTE to fix warnings on MSVC and enable for GCC. (#131)
Fix broken MSVC builds. (#130)
Add support for quiet and signaling NaNs to the ieee header. (#128)
Move buffer and buffer_pos down (#125)
    * Move buffer and buffer_pos down
    Simplifies code by removing two asserts
    Optimize code with -ftrivial-auto-var-init=pattern by avoiding initialization when buffer is not used
    * Disable -ftrivial-auto-var-init=pattern for a large buffer

Fix strtod.cc undefined constants (#123)
    When DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS is not defined
    there is a build error when -Wall -Werror enabled because
    kMaxExactDoubleIntegerDecimalDigits, exact_powers_of_ten and
    kExactPowersOfTenSize are used only in else branch of this define
    (when it's defined).
    Fixes google/double-conversion#122

Add full license to test .cc files missing it. (#121)
    Some files in cctest had a 1-line copyright that doesn't list the
    license. This copies the project license to those files, preserving the
    date.

Add wasm32 as supported platform (#120)
    Summary:
    Emscripten is already included, adding wasm32 the same way for when
    build with "plain" clang wasm32 (without emscripten)

Pseiderer/add nios2 and xtensa 001 (#119)
    * double-conversion: enable for nios2
    Nios2 supports double conversion, tested using qemu:

Add support for microblaze.
Add support for e2k architecture. (#118)
Add min exponent width option in double-to-string conversion (#116)

Remove reference to `diy-fp.cc`
    That file was removed in a previous commit.

More Bignum fiddling. (#108)
    * Char has size 1.
    * More const.
    * Allow inlining.
    * Compact Bignum sizes.
    * Consistent naming.

Remove redundant parenthesis.
    Reported by seanm (github).

Optimise Bignum layout. (#107)
    * Use memset to clear bignum.
    * Improve data locality.
    * Reduce size of bignum.

Split Strtod() (#106)
    Add `StrtodTrimmed` method, exposing a later stage of the conversion pipeline.
    Some tools can do the first stage outside of the double-conversion library and would prefer not to pay the cost of doing it again.

Split double-conversion. (#104)
    Separates the two main classes into separate c and h files.
    Fix naming. (#103)
    Fix naming of `case_insensibility` to `case_insensitivity`.

Consistent macro prefix. (#101)

Use standard min/max. (#102)

Fix some issues with invalid hex-float literals.
    When converting `0x` the converter would assert (or access out of
        boundary).
    With `0x1.p1234556666FFFFF` the converter would overflow and not yield
    the correct exponent.

Usefulcat master (#98)
    * minor bug fix: use free() instead of delete[] to free memory allocated by strdup()
    * fix for uninitialized variable problem found by valgrind
    * disable assertions for 'optimize' build
    * removed -g option that was inadvertently added to CCFLAGS
    * ignore generated files

    Fix warning for g++ 4.9.3.

CMake: install to correct lib dir (#93)
    64-bit libraries should be installed in /usr/lib64, not in /usr/lib/
    Make the destination lib dir configurable.

Add big endian ARM support (#92)
    This fixes compilation on such platforms.

Switch to relative includes.
Fix 16-bit separators.

msvc: check if _MSC_VER is defined (#88)

Allow for compilation in emscripten (#86)
    Support emscripten

Add test cases.
    Fixes #62

Add support of ARC architecture (#82)
    More info about ARC architecture is here: [1] & [2].
    We need ARC supported here for many things like:
     - ICU (see [3])
     - Qt5 etc

Fix hex literal bug.
    Large hex literals would lose their minus sign.

Support separator characters.
Add support for hexadecimal float literals.
Fix bug where hex numbers would lose the minus sign.

Add comments for achitecture check.
    This should make it easier to add new architectures.

Add support for aarch64_be, or1k and microblazebe.
Add support for Windows on ARM and ARM64 (#76)

Use `static_assert` with newer compilers.
Add Native Client as support architecture.
Avoid undefined cast to make ASAN happy.
Avoid undefined cast to make ASAN happy.
Add `exports_files`
Processed length should include no trailing junk (#63)

Clarify output charset in DoubleToAscii documentation (#61)
    * Clarify output charset in DoubleToAscii documentation
    * Fixing typo in charset docs.

Fix warning for code that will never be executed (#59)

Rename macros.
    Renamed DISALLOW_COPY_AND_ASSIGN and DISALLOW_IMPLICIT_CONSTRUCTORS to
    DC_DISALLOW_COPY_AND_ASSIGN and DC_DISALLOW_IMPLICIT_CONSTRUCTORS.

    This makes it easier to use this library in projects that have macros
    with the same name (as is common in Google).

Some refactorings: remove unused static, replace deprecated headers, init member in constructor
    REF: replace deprecated headers
    REF: meaningless static definition in anonymous namespace
    REF: init member in constructor

Fix typo in variable name.

Suppress issue in clang analyzer.
CMake fixes.
    Remove unused CMake file.

Implement ALLOW_CASE_INSENSIBILITY mode for StringToDoubleConverter c…

Remove unnecessary INSTALL_INTERFACE expression.

Use template for CMake installation.

Fix mistake for build interface include dir.

Improve CMake changes.
    Update CMake package generation.

Implement ALLOW_CASE_INSENSIBILITY mode for StringToDoubleConverter class

Add assert and test.

Avoid negative shift.
    When filling in fractional digits in a fixed representation we
    might use all existing digits. When this happens, we can not look
    at the next digit to see if we should round up.
    Before this fix, we tried to shift by a negative amount to see if the
    (non-existing) next bit was set to 1 (requiring the number to be rounded up).
hjmjohnson pushed a commit to hjmjohnson/ITK that referenced this pull request Apr 19, 2026
hjmjohnson pushed a commit that referenced this pull request Apr 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants