Hi Przemek and All,

> I think the first thing should be to define our existing "char" types:
> 
> HB_UCHAR
> HB_SCHAR
> HB_WCHAR
> HB_BYTE / BYTE
> char
> USHORT

I'm having a try to collect what we know about char/byte types:

- HB_UCHAR: Similar to HB_BYTE. Was introduced to avoid signedness problems 
  when using legacy type BYTE. 
- HB_SCHAR: Used in just a few places, signed HB_UCHAR.
- HB_WCHAR: 16-bit UNICODE char (this is the only one I'm certain of)
- HB_BYTE: Similar to HB_UCHAR, non-textual data streams, PCODEs, data stored 
on disk.
- BYTE (deprecated): Similar to HB_BYTE but with non-guaranteed signedness.
- char: generic text, 8-bit or UTF-8, PCODEs (wrongly used). Signedness 
non-guaranteed.
- unsigned char: Similar to HB_UCHAR
- HB_USHORT: Text character in GT API. Maybe used because low level 
  interface may accept 8-16 bit chars. But even then hbapigt.h 
  shouldn't use this type.

- HB_I8: I estimate this won't be used too often in practice.
- HB_U8: Seems to be interchangeable with HB_BYTE/HB_UCHAR, on 
         systems where char is 8 bit, but could be useful 
         for disk structures on systems where it's not.
         This of course needs that we start using those f.e. 
         in RDD code.

Questions:
- Shouldn't we change HB_USHORT to something else in GT API?
- Now that we define our own HB_BYTE, and it's guaranteed to 
  be unsigned, isn't it equivalent to HB_UCHAR? (if not see next)
- What is the difference between HB_BYTE/HB_UCHAR?
  Where should we use which? If they are equivalent, which 
  should be chosen as the "one"?

So far my conclusion is that HB_BYTE is superfluous and 
could be replaced by HB_UCHAR everywhere in code, except 
for disk structures where it should be replaced with HB_U8.
'unsigned char' should also be changed to HB_UCHAR.

Or perhaps the cleanest and simplest way would be to stick 
to HB_BYTE and HB_CHAR (since signedness is now guaranteed) 
for in-memory usage, and HB_U8 for externally stored data, 
and drop HB_UCHAR, HB_SCHAR. BYTE/CHAR are much familiar 
names, and most of or code uses these terms.

Brgds,
Viktor

_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to