The Support Kit: Constants and Defined Types

The Support Kit Table of Contents | The Support Kit Index

# Constants and Defined Types

This section lists the constants and types defined by the Support Kit and used throughout the entire Be operating system. Not included here are constants used as `status_t` values (error codes). They're listed in "Error Codes".

## Constants

### Boolean Constants

Declared in: be/support/SupportDefs.h

Constant | Value
--- | ---
`false` | 0
`true` | 1

These constants are defined as values for the `bool` type (described in the next section). The BeOS defines them for C code only. Because they match the boolean symbols that are part of the C++ language, they let you use the same `bool` type and `true` and `false` values when programming in both languages.

See also: `bool`

### Byte Swapping Constants

Declared in: be/support/ByteOrder.h

Constant | Description
--- | ---
`B_SWAP_HOST_TO_LENDIAN` | Convert from host byte order to little endian
`B_SWAP_HOST_TO_BENDIAN` | Convert from host byte order to big endian
`B_SWAP_LENDIAN_TO_HOST` | Convert from little endian to host byte order
`B_SWAP_BENDIAN_TO_HOST` | Convert from big endian to host byte order
`B_SWAP_ALWAYS` | Always convert endianness

These constants define the action to be taken by the `swap_data()` general byte swapping function.

See also: `swap_data()`

### Encoding Conversion Constants

Declared in: be/support/UTF8.h

Constant
`B_ISO1_CONVERSION`
`B_ISO2_CONVERSION`
`B_ISO3_CONVERSION`
`B_ISO4_CONVERSION`
`B_ISO5_CONVERSION`
`B_ISO6_CONVERSION`
`B_ISO7_CONVERSION`
`B_ISO8_CONVERSION`
`B_ISO9_CONVERSION`
`B_ISO10_CONVERSION`
`B_MAC_ROMAN_CONVERSION`
`B_SJIS_CONVERSION`
`B_EUC_CONVERSION`

These constants identify character encodings to the `convert_to_utf8()` and `convert_from_utf8()` functions, which convert text to and from the standard UTF8 character encoding assumed by the BeOS. The identify the source encoding for a conversion to UTF-8 and the destination encoding for a conversion from UTF-8.

See also: `convert_to_utf8()`, the BFont class in the Interface Kit

### Empty String

Declared in: be/support/SupportDefs.h

const char *`B_EMPTY_STRING `

This constant provides a global pointer to an empty string ("").

### URL MIME Types

Declared in: be/support/TypeConstants.h

Constant | Meaning
--- | ---
`B_URL_HTTP` | An HTTP (HyperText Transport Protocol) link
`B_URL_HTTPS` | An HTTPS (HyperText Transport Protocol Secure) link
`B_URL_FTP` | AN FTP (File Transfer Protocol) link
`B_URL_GOPHER` | A Gopher link
`B_URL_MAILTO` | A mailto (email) link
`B_URL_NEWS` | A news (usenet) link
`B_URL_NNTP` | An NNTP (network time protocol) link
`B_URL_TELNET` | A telnet link
`B_URL_RLOGIN` | An rlogin link
`B_URL_TN3270` | A TN3270 link``
`B_URL_WAIS` | A WAIS (Wide Area Information Services) link``
`B_URL_FILE` | A local file link

These are MIME type strings for various URL types. An application can register itself as a handler for one of these types. Once that's done, clicking a link of that type in NetPositive will cause that application to be launched, with a `B_ARGV_RECEIVED` message with the full URL as the second argument.

### NULL and NIL

Declared in: be/support/SupportDefs.h

Constant | Value
--- | ---
`NIL` | 0
`NULL` | 0

These constants represent "empty" values. They're synonyms that can be used interchangeably.

### Type Codes

Declared in: be/support/TypeConstants.h

Constant | Meaning
--- | ---
`B_CHAR_TYPE` | A single character
`B_INT8_TYPE` | An 8-bit integer
`B_INT16_TYPE` | A 16-bit integer
`B_INT32_TYPE` | A 32-bit integer
`B_INT64_TYPE` | A 64-bit integer
`B_UINT8_TYPE` | An unsigned 8-bit integer
`B_UINT16_TYPE` | An unsigned 16-bit integer
`B_UINT32_TYPE` | An unsigned 32-bit integer
`B_UINT64_TYPE` | An unsigned 64-bit integer
`B_FLOAT_TYPE` | A `float`
`B_DOUBLE_TYPE` | A `double`
`B_BOOL_TYPE` | A boolean value (the `bool` type)
`B_OFF_T_TYPE` | An `off_t` value
`B_SIZE_T_TYPE` | A `size_t` value
`B_SSIZE_T_TYPE` | An `ssize_t` value
`B_POINTER_TYPE` | A pointer of some kind (including `void *`)
`B_OBJECT_TYPE` | An object pointer (such as BMessage *)
`B_MESSAGE_TYPE` | A BMessage object (not BMessage *)
`B_MESSENGER_TYPE` | A BMessenger object
`B_POINT_TYPE` | A BPoint object
`B_RECT_TYPE` | A BRect object
`B_PATH_TYPE` | A BPath object
`B_REF_TYPE` | An `entry_ref` structure
`B_RGB_COLOR_TYPE` | An `rgb_color` structure
`B_PATTERN_TYPE` | A `pattern` structure
`B_STRING_TYPE` | A null-terminated character string
`B_MONOCHROME_1_BIT_TYPE` | Raw data for a monochrome bitmap (1 bit/pixel)
`B_GRAYSCALE_8_BIT_TYPE` | Raw data for a grayscale bitmap (8 bits per pixel)
`B_COLOR_8_BIT_TYPE` | Raw bitmap data in the `B_COLOR_8_BIT` color space
`B_RGB_32_BIT_TYPE` | Raw bitmap data in the `B_RGB_32_BIT` color space
`B_TIME_TYPE` | 64-bit microsecond `time_t` data
`B_MEDIA_PARAMETER_TYPE` | A Media Kit parameter.
`B_MEDIA_PARAMETER_WEB_T YPE` | A Media Kit parameter web.
`B_MEDIA_PARAMETER_GROUP _TYPE` | A Media Kit parameter group.
`B_RAW_TYPE` | Raw, untyped data—a stream of bytes
`B_MIME_TYPE` | The type is specified by a MIME string.
`B_ANY_TYPE` | The type can be any type.

These constants describe the types of data held by BMessage objects (the Application Kit) and as resources and file system attributes (the Storage Kit). `B_ANY_TYPE` refers to all types; it indicates that the exact type doesn't matter. `B_MIME_TYPE` indicates that the name of the data in the BMessage is a MIME string that specifies its true data type. The other constants refer only to a particular type. The `type_code` defined type marks where these constants are used in the API.

Applications can define their own type codes for data types not found on this list. All the codes the BeOS defines have values formed by concatenating four uppercase letters into a multicharacter constant. For example, `B_MESSENGER_TYPE` is 'MSNG' and `B_SIZE_T_TYPE` is 'SIZT'.

See also: `type_code`

## Defined Types

### bigtime_t

Declared in: be/support/SupportDefs.h

typedef int64 `bigtime_t`

This type records the time in microseconds as a 64-bit integer. Typically, a `bigtime_t` variable measures the system time, the number of microseconds since 12:00:00 AM January 1, 1970, UTC (Coordinated Universal Time).

See also: `system_time()`

### bool

Declared in: be/support/SupportDefs.h

typedef unsigned char `bool`

The C++ language defines `bool` as its basic boolean type. The BeOS extends the definition to C code, so you can use the same type in both languages. The `true` and `false` constants (listed above) are defined as boolean values.

### Function Pointers

Declared in: be/support/SupportDefs.h

typedef int (*`B_PFI` )() typedef long (*`B_PFL` )() typedef void (*`B_PFV` )()

These types define pointers to functions that return `int`, `long`, and `void` values respectively.

### instantiation_func

Declared in: be/support/Archivable.h

typedef BArchivable *(*`instantiation_func`) `(` BMessage *`)`

This type is a pointer to a function that can instantiate an object from a BMessage archive and return a pointer to the new object. The `Instantiate()` member function of `BArchivable` is such a function.

See also: the BArchivable class, `find_instantiation_func()`

### Integer Types

Declared in: be/support/SupportDefs.h

typedef unsigned char `uchar`
typedef signed char `int8 ` typedef unsigned char `uint8` typedef volatile signed char `vint8` typedef volatile unsigned char `vuint8`
typedef short `int16` typedef unsigned short `uint16` typedef volatile short `vint16` typedef volatile unsigned short `vuint16`
typedef long `int32` typedef unsigned long `uint32` typedef volatile long `vint32` typedef volatile unsigned long `vuint32`
typedef long long `int64` typedef unsigned long long `uint64` typedef volatile long long `vint64` typedef volatile unsigned long long `vuint64`

These type names are defined as convenient shorthands for standard integers of various sizes. They're used in place of `int`, `short`, and `long` throughout the BeOS API.

The number at the end of the type name indicates the size of the integer. For example, a `uint32` is an unsigned 32-bit value. The type is guaranteed to be defined to its stated size for all platforms (thus their exact definitions may vary from platform to platform).

Using these types will make the code you write more portable. They'll help avoid problems as the operating system and your application move to other platforms.

### status_t

Declared in: be/support/SupportDefs.h

typedef int32 `status_t`

This type indicates an error code; it's used mainly for function return values.

See also: "Error Codes"

### type_code

Declared in: be/support/SupportDefs.h

typedef uint32 `type_code`

This type is used for the integer codes that indicate a particular data type. The codes—such as `B_UINT32_TYPE` and `B_MIME_TYPE`—mark the type of data added to a message or stored as a resource and also appear in other contexts.

See also: "Type Codes", the BMessage class in the Application Kit, the BResource class in the Storage Kit

The Support Kit Table of Contents | The Support Kit Index

The Be Book,
...in lovely HTML...
for BeOS Release 5.

Copyright © 2000 Be, Inc. All rights reserved..