LBPP Support Types ------------------ Scope This document defines the types support by LBPP. Native types are ones that require no conversion to work with the LBPP functions. External types are types that have a define conversion which can therefore can be used through LBPP. Native Types string - The native LBPP string is in many ways superior to most string implementations. This is due to the fact that is a native type and is not implemented on top of another type (such as a character array in C). Native strings are not guarenteed to be NULL terminated, have a constant time size, and are referenced counted so assigning string A to string B will only force a copy if either string A or string B's content is modified. This means that strings can be passed by value with a great deal of efficency. double - A double is a double precision real number. A double precision number was decided to be used as the native number representation due to the fact that it offers the greatest deal of flexibility and the fact that most CPUs are optimized to support double precision over single precision. Just because the internal representation is a double, does not limit LBPP to optimizing variables to really be a integer value. This is atleast not guarenteed within second degree scope and when functions results are implemented using another type. handle - A handle is a reference to an open object. Handles are capable of both input and output Native Type Modifiers & - pass by reference External Types byte short integer long single double External Type Modifiers &type - reference type[] - as vector type[][] - as matrix Explicit Type Modifiers $ - string Statement Argument Modifiers ? - optional * - repeating from 0-n times + - repeating from 1-n times