Next: caf_deregister_t, Previous: caf_token_t, Up: Type and enum ABI Documentation

#### 7.1.2 `caf_register_t`

Indicates which kind of coarray variable should be registered.

    typedef enum caf_register_t {
      CAF_REGTYPE_COARRAY_STATIC,
      CAF_REGTYPE_COARRAY_ALLOC,
      CAF_REGTYPE_LOCK_STATIC,
      CAF_REGTYPE_LOCK_ALLOC,
      CAF_REGTYPE_CRITICAL,
      CAF_REGTYPE_EVENT_STATIC,
      CAF_REGTYPE_EVENT_ALLOC,
      CAF_REGTYPE_COARRAY_ALLOC_REGISTER_ONLY,
      CAF_REGTYPE_COARRAY_ALLOC_ALLOCATE_ONLY
    }
    caf_register_t;

The values `CAF_REGTYPE_COARRAY_ALLOC_REGISTER_ONLY` and `CAF_REGTYPE_COARRAY_ALLOC_ALLOCATE_ONLY` are for allocatable components in derived type coarrays only. The first one sets up the token without allocating memory for allocatable component. The latter one only allocates the memory for an allocatable component in a derived type coarray. The token needs to be setup previously by the REGISTER_ONLY. This allows to have allocatable components un-allocated on some images. The status whether an allocatable component is allocated on a remote image can be queried by `_caf_is_present` which used internally by the `ALLOCATED` intrinsic.