View Issue Details

IDProjectCategoryView StatusLast Update
0025308Open CASCADEOCCT:Codingpublic2023-08-01 15:09
Reporterkgv Assigned Toszy  
PrioritynormalSeverityintegration request 
Status newResolutionopen 
Target VersionUnscheduled 
Summary0025308: TCollection_ExtendedString, NCollection_String - merge classes for string management
DescriptionThere are several classes for string management with different capabilities but similar usage scenarios:
- TCollection_AsciiString. Main class for strings management in OCCT.
  NULL-terminated.
  Assumes fixed-length 1 byte long characters.
  Provides formatting tools (LeftAdjust/RightAdjust/LowerCase/Capitalize/UpperCase).
  Provides sub-string search tools.
  Does not aware of UTF-8, but can transparently store such strings.
- TCollection_HAsciiString. Wrapper for TCollection_AsciiString for smart pointer creation.
- TCollection_ExtendedString. This class has been originally designed to store wide (UNICODE) strings in OCCT, mostly used in OCAF persistence, but rarely outside.
  NULL-terminated.
  Assumes fixed-length 2 bytes long characters.
  Defines Standard_ExtCharacter as short, should be converted explicitly to wchar_t on Windows.
  Provides formatting tools (LeftAdjust/RightAdjust/LowerCase/Capitalize/UpperCase).
  Provides sub-string search tools.
  Expect string in UTF-16 encoding, but unaware of surrogate pairs.
  Has constructor from UTF-8 string (isMultiByte flag).
- TCollection_HExtendedString. Wrapper for TCollection_ExtendedString for smart pointer creation.
- NCollection_UtfString. Template class for UNICODE strings. Currently used in visualization for text rendering and interaction with FreeType.
  NULL-terminated.
  Assumes multibyte UNICODE characters (UTF8, UTF-16 or UTF32).
  Stores length (in UNICODE characters) and buffer size.
  Provides iterator NCollection_UtfIterator for efficient multibyte string processing (as alternative to accessing character by index).
  Provides methods to convert UNICODE string from/to system locale and between UNICODE variants (UTF-8/UTF-16/UTF-32).
  Does not provide string formatting capabilities.

It is considered to revise these classes to eliminate code duplication.

In addition, methods of class Resource_Unicode should be revised.
TagsNo tags attached.
Test case number

Relationships

related to 0022484 closedbugmaster UNICODE characters support. 
parent of 0027676 closedbugmaster Foundation Classes - define Standard_ExtCharacter, Standard_Utf16Char using C++11 types char16_t 
related to 0027838 closedkgv Foundation Classes - support wchar_t* input within TCollection_AsciiString and TCollection_ExtendedString 

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2014-10-01 13:12 kgv New Issue
2014-10-01 13:12 kgv Assigned To => kgv
2014-10-01 13:12 kgv Assigned To kgv => pdn
2014-10-01 13:12 kgv Relationship added related to 0022484
2014-12-03 11:48 kgv Description Updated
2016-07-14 10:44 kgv Relationship added parent of 0027676
2016-09-04 14:35 kgv Relationship added related to 0027838
2016-11-03 17:38 abv Target Version 7.1.0 => 7.2.0
2017-07-20 12:29 kgv Target Version 7.2.0 => 7.4.0
2019-07-10 19:27 abv Target Version 7.4.0 => 7.5.0
2020-09-11 15:34 utverdov Target Version 7.5.0 => 7.6.0
2021-02-18 12:44 bugmaster Assigned To pdn => szy
2021-08-24 14:59 kgv Target Version 7.6.0 => 7.7.0
2022-08-17 12:01 kgv Target Version 7.7.0 => 7.8.0
2023-08-01 15:09 dpasukhi Target Version 7.8.0 => Unscheduled