Types¶
Note
All Chapel programs automatically use
this module by default.
An explicit use
statement is not necessary.
Functions related to predefined types.
- proc isType(e) param¶
Returns
true
if the argument is a type.
- proc isParam(e) param¶
Returns
true
if the argument is a param.
- proc isPrimitiveType(type t) param¶
Returns
true
if the typet
is a primitive type, as defined by the language specification.
- proc isNumericType(type t) param¶
Returns
true
if the typet
is one the following types, of any width:int
,uint
,real
,imag
,complex
.
- proc isIntegralType(type t) param¶
Returns
true
if the typet
is one the following types, of any width:int
,uint
.
- proc isNothingType(type t) param¶
Returns
true
if the typet
is thenothing
type.
- proc isBoolType(type t) param¶
Returns
true
if the typet
is abool
type, of any width.
- proc isIntType(type t) param¶
Returns
true
if the typet
is anint
type, of any width.
- proc isUintType(type t) param¶
Returns
true
if the typet
is auint
type, of any width.
- proc isRealType(type t) param¶
Returns
true
if the typet
is areal
type, of any width.
- proc isImagType(type t) param¶
Returns
true
if the typet
is animag
type, of any width.
- proc isComplexType(type t) param¶
Returns
true
if the typet
is acomplex
type, of any width.
- proc isStringType(type t) param¶
Returns
true
if the typet
is thestring
type.
- proc isBytesType(type t) param¶
Returns
true
if the typet
is thebytes
type.
- proc isEnumType(type t) param¶
Returns
true
if the typet
is anenum
type.
- proc isClassType(type t) param¶
Return true if
t
is a class type. Otherwise return false.
- proc isRecordType(type t) param¶
Return true if
t
is a record type. Otherwise return false.
- proc isUnionType(type t) param¶
Return true if
t
is a union type. Otherwise return false.
- proc isTupleType(type t) param¶
Returns
true
if its argument is a tuple type.
- proc isRangeType(type t) param¶
Return true if argument
t
is a range type, false otherwise
- proc isDomainType(type t) param¶
Return true if
t
is a domain type. Otherwise return false.
- proc isArrayType(type t) param¶
Return true if
t
is an array type. Otherwise return false.
- proc isDmapType(type t) param¶
Return true if
t
is a domain map type. Otherwise return false.
- proc isSyncType(type t) param¶
Returns true if
t
is a sync type, false otherwise.
- proc isSingleType(type t) param¶
Returns true if
t
is a single type, false otherwise.
- proc isAtomicType(type t) param¶
Returns true if
t
is an atomic type, false otherwise.
- proc isVoidType(type t) param¶
Returns
true
if the typet
is thevoid
type.
- proc isAbstractEnumType(type t) param¶
Returns
true
if the typet
is an abstractenum
type (one in which not all symbols have associated integer values).
- proc isHomogeneousTupleType(type t) param¶
Returns
true
if its argument is a homogeneous tuple type.
- proc isExternUnionType(type t) param¶
Returns
true
if the typet
is an extern union type.
- proc isRefIterType(type t) param¶
Returns
true
if the typet
is a ref iter type.
- proc isPrimitiveValue(e) param¶
Returns
true
if the argument is a value of primitive type.
- proc isNumericValue(e) param¶
Returns
true
if the argument is a value of one the following types:int
,uint
,real
,imag
,complex
.
- proc isIntegralValue(e) param¶
Returns
true
if the argument is a value of one the following types:int
,uint
.
- proc isNothingValue(e) param¶
Returns
true
if the argument is anothing
value (i.e.,none
)
- proc isBoolValue(e) param¶
Returns
true
if the argument is abool
value.
- proc isIntValue(e) param¶
Returns
true
if the argument is aint
value.
- proc isUintValue(e) param¶
Returns
true
if the argument is auint
value.
- proc isRealValue(e) param¶
Returns
true
if the argument is areal
value.
- proc isImagValue(e) param¶
Returns
true
if the argument is aimag
value.
- proc isComplexValue(e) param¶
Returns
true
if the argument is acomplex
value.
- proc isStringValue(e) param¶
Returns
true
if the argument is astring
value.
- proc isBytesValue(e) param¶
Returns
true
if the argument is abytes
value.
- proc isEnumValue(e) param¶
Returns
true
if the argument is aenum
value.
- proc isClassValue(e) param¶
Returns
true
if the argument is a class value
- proc isRecordValue(e) param¶
Returns
true
if the argument is a record value
- proc isUnionValue(e) param¶
Returns
true
if the argument is a union value
- proc isTupleValue(x) param¶
Returns
true
if the argument is a tuple value
- proc isRangeValue(r) param¶
Return true if argument
r
is a range, false otherwise
- proc isDomainValue(e) param¶
Return true if
e
is a domain. Otherwise return false.
- proc isArrayValue(e) param¶
Return true if
e
is an array. Otherwise return false.
- proc isDmapValue(e) param¶
Return true if
e
is a domain map. Otherwise return false.
- proc isSyncValue(x) param¶
Returns
true
if the argument is a sync value
- proc isSingleValue(x) param¶
Returns
true
if the argument is a single value
- proc isAtomicValue(e) param¶
Returns
true
if the argument is an atomic value
- proc isPrimitive(e) param¶
Returns
true
if the argument is a primitive type, as defined by the language specification, or a value of a primitive type.
- proc isNumeric(e) param¶
Returns
true
if the argument is one the following types, of any width:int
,uint
,real
,imag
,complex
, or a value of such a type.
- proc isIntegral(e) param¶
Returns
true
if the argument is one the following types, of any width:int
,uint
, or a value of such a type.
- proc isNothing(e) param¶
Returns
true
if the argument isnone
or thenothing
type. as defined by the language specification.
- proc isBool(e) param¶
Returns
true
if the argument is abool
type or value, of any width.
- proc isInt(e) param¶
Returns
true
if the argument is anint
type or value, of any width.
- proc isUint(e) param¶
Returns
true
if the argument is auint
type or value, of any width.
- proc isReal(e) param¶
Returns
true
if the argument is areal
type or value, of any width.
- proc isImag(e) param¶
Returns
true
if the argument is animag
type or value, of any width.
- proc isComplex(e) param¶
Returns
true
if the argument is acomplex
type or value, of any width.
- proc isString(e) param¶
Returns
true
if the argument is a string or thestring
type.
- proc isBytes(e) param¶
Returns
true
if the argument is a bytes or thebytes
type.
- proc isEnum(e) param¶
Returns
true
if the argument is anenum
type or value, of any width.
- proc isClass(e) param¶
Returns
true
if the argument is a class type or value that is not anextern
class, or when the argument isnil
.
- proc isRecord(e) param¶
Returns
true
if the argument is a record type or value.
- proc isUnion(e) param¶
Returns
true
if the argument is a union type or value.
- proc isTuple(e) param¶
Returns
true
if the argument is a tuple type or value.
- proc isRange(e) param¶
Returns
true
if the argument is a range type or value.
- proc isDomain(e) param¶
Returns
true
if the argument is a domain or a domain type.
- proc isArray(e) param¶
Returns
true
if the argument is an array or an array type.
- proc isDmap(e) param¶
Returns
true
if the argument is a domain map or a domain map type.
- proc isSync(e) param¶
Returns
true
if the argument is async
type or async
variable.
- proc isSingle(e) param¶
Returns
true
if the argument is asingle
type or asingle
variable.
- proc isAtomic(e) param¶
Returns
true
if the argument is anatomic
type or anatomic
variable.
- proc isHomogeneousTuple(e) param¶
Returns
true
if the argument is a homogeneous tuple. The argument must be a tuple or any type.
- proc isGeneric(e) param¶
Returns
true
if the argument is a generic type, andfalse
otherwise.
- proc isOwnedClass(e) param¶
Returns
true
if the argument is anowned
class type.
Returns
true
if the argument is ashared
class type.
- proc isUnmanagedClass(e) param¶
Returns
true
if the argument is aunmanaged
class type.
- proc isBorrowedClass(e) param¶
Returns
true
if the argument is aborrowed
class type.
- proc isNilableClass(e) param¶
Returns
true
if the argument is a class type that can storenil
.
- proc isNonNilableClass(e) param¶
Returns
true
if the argument is a class type that cannot storenil
.
- proc isCopyable(e) param¶
Returns
true
if the argument is a type or an expression of a type that can be copy-initialized andfalse
otherwise.Note that even if this function returns
true
, it might be the case that the type only supports copy-initialization from mutable values.owned
is an example of a type with that behavior.See also the specification section Copy Initialization of Records.
- proc isConstCopyable(e) param¶
Returns
true
if the argument is a type or an expression of a type that can be copy-initialized from aconst
value andfalse
otherwise.Returns
false
forowned
because copy-initialization for that type leaves the source argument storingnil
.See also the specification section Copy Initialization of Records.
- proc isAssignable(e) param¶
Returns
true
if the argument is a type or expression of a type that can be assigned from another value andfalse
otherwise.Note that even if this function returns
true
, it might be the case that the type only supports assignment from mutable values.owned
is an example of a type with that behavior.See also the specification section Record Assignment.
- proc isConstAssignable(e) param¶
Returns
true
if the argument is a type or expression of a type that can be assigned from aconst
value andfalse
otherwise.Returns
false
forowned
because assignment for that type leaves the source argument storingnil
.See also the specification section Record Assignment.
- proc isDefaultInitializable(e) param¶
Returns
true
if the argument is a type or expression of a type that can be default initialized andfalse
otherwise.Returns
false
for non-nilable class types because these types do not have a default value.See also the specification section Default Initialization.
- proc toNilableIfClassType(type arg) type¶
If the argument is a class type, returns its nilable version like
arg?
. Otherwise returns the argument unchanged.
- proc numBits(type t) param where t == bool¶
Returns the number of bits used to store the values of type
t
. This is available for all numeric types and fixed-widthbool
types. It is not available for default-widthbool
.
- proc numBytes(type t) param¶
Returns the number of bytes used to store the values of type
t
. This is available for all numeric types and fixed-widthbool
types. It is not available for default-widthbool
.
- proc min(type t) param where isBool(t)¶
Returns the minimum value the type
t
can store.t
can be one of the following types, of any width:bool
,int
,uint
,real
,imag
,complex
. Whent
is abool
type, it returnsfalse
. Whent
isreal
,imag
, orcomplex
type, it is a non-param
function.
- proc max(type t) param where isBool(t)¶
Returns the maximum value the type
t
can store.t
can be one of the following types, of any width:bool
,int
,uint
,real
,imag
,complex
. Whent
is abool
type, it returnstrue
. Whent
is areal
,imag
, orcomplex
type, it is a non-param
function.
- proc integral.safeCast(type T: integral) : T¶
Warning
integral.safeCast() is unstable and its behavior may change in the future
The following
safeCast()
methods returnthis
cast to the typeT
. At present, these halt the program ifthis
cannot be represented byT
, for example(-1).safeCast(uint)
or256.safeCast(uint(8))
.These methods perform the minimum number of runtime checks. For example, when casting from
uint(8)
touint(64)
, no checks at all will be done.
- proc integral.safeCast(type T: bool)
Warning
integral.safeCast() is unstable and its behavior may change in the future
- proc bool.safeCast(type T: integral)¶
Warning
bool.safeCast() is unstable and its behavior may change in the future
- proc bool.safeCast(type T: bool)
Warning
bool.safeCast() is unstable and its behavior may change in the future
- proc isCoercible(type from, type to) param¶
Returns
true
if the typefrom
is coercible to the typeto
, or ifisSubtype(from, to)
would returntrue
. See Implicit Conversions for Function Calls.
- proc isSubtype(type sub, type sup) param¶
Returns
true
if the typesub
is a subtype of the typesup
. See also Implicit Subtype Conversions.In particular, returns
true
in any of these cases:sub
is the same type assup
sub
is an instantiation of a generic typesup
sub
is a class type inheriting fromsup
sub
is non-nilable class type andsup
is the nilable version of the same class type
- proc isProperSubtype(type sub, type sup) param¶
Similar to
isSubtype
but returnsfalse
ifsub
andsup
refer to the same type.
- operator <(type a, type b) param¶
Warning
< operator is deprecated when comparing types; use isProperSubtype() instead
- Returns:
isProperSubtype(a,b)
- operator <=(type a, type b) param¶
Warning
<= operator is deprecated when comparing types; use isSubtype() instead
- Returns:
isSubtype(a,b)
- operator >(type a, type b) param¶
Warning
> operator is deprecated when comparing types; use isProperSubtype() instead
- Returns:
isProperSubtype(b,a)
- operator >=(type a, type b) param¶
Warning
>= operator is deprecated when comparing types; use isSubtype() instead
- Returns:
isSubtype(b,a)