We're updating the issue view to help you get more done. 

RFE: C/C++ dependency abstraction

Description

The ICU libraries should be created such that the C only interface is completely
independent
of the C++ runtime.

Bob's original investigation:

A. COMMON

A1. Character set conversion:
resource bundle (ucnv_getDisplayName)
locale (uloc_getDataDirectory)
A2. Resource bundle:
C++ resource bundle
UnicodeString
C++ new / delete
A3. Locale:
resource bundle
A4. Bi-directional:
OK, no C++ dependencies
A5. Character properties:
OK, no C++ dependencies
A6. UnicodeString:
C++ only
A7. Normalize:
C+++ only
A8. Digit list:
C++ only
A9. C++ utils:
C++ only.
A10. Chariter:
C++ only.
A11. Chriter:
C++ only.
A12. Schriter:
C++ only.

B. I18N
ubrk, ucal, ucol, udat, umsg, uniset, unum:
fully depended on C++, implemented in cpp files.

C. CINTLTEST
linked with C++ libs.

D. LIBRARIES
No separate C and C++ libraries

In COMMON the most important dependency is on the resource bundles, which in
turn depends heavily on UnicodeString.

In order to get C APIs not depending on C++, the libraries should be split in a
separate common C library (no compiled cpp), C API (possibly in the common C)
and C++ library. Implementations like BiDi seem obvious.

C tests should only be linked with the C library and C run-time libraries. The
C++ API should make use as much as possible of the common C library to reduce
duplicate implementations in C and C++.

Bob.

Environment

Status

Assignee

Markus Scherer

Reporter

TracBot

Labels

Time Needed

Minutes

tracCreated

Dec 07, 1999, 8:55 PM

tracOwner

markus

tracReporter

hshih@63ab4e4d4e2312f9

tracResolution

wontfix

tracStatus

closed

tracWeeks

0.05

Components

Fix versions

Priority

major