CONCEPT
        lpctypes

INTRODUCTION
        An lpctype variable stores an LPC type like int or string*.
        They are mainly used in the check_types() efun, but also for
        introspection with functionlist() and variable_list().

DEFINITION
        An lpctype literal can be created either by writing the type
        in brackets or using the decltype(LPC) operator:

            lpctype t1 = [int];
            lpctype t2 = decltype(t1);    /* t2 will be [lpctype] */

        The type in brackets can be any type declaration, similar to
        the type declarations of variable or function result.

OPERATIONS
        lpctypes support the following operations:

        t1 | t2

            Create a union type of both types.

        t1 & t2

            Create the intersection of both types. If the intersection
            is empty [void] will be returned.

        t1 in t2

            Yields 1 if t1 is a subset of t2.

EXAMPLE
        void process(mixed value)
        {
            if (check_type(value, [int|float]))
                process_number(value);
            else
                process_anything(value);
        }

HISTORY
        The type was introduced in LDMud 3.6.7.

SEE ALSO
        check_types(E), decltype(LPC)