// /*-------------------------------------------------------------------*\ // | Concrete Instance : Conversion_Operations // |*-------------------------------------------------------------------*| // | Description: // | // | Operations converting between foundation components and raw types // | With some exceptions, these conversion operations provide: // | foundation component --> foundation component // | foundation component --> corresponding raw C++ type // | Note that raw C++ type --> foundation component conversion is // | implemented as a constructor in each of the foundation components // \*-------------------------------------------------------------------*/ #ifndef CONVERT_H #define CONVERT_H 1 //------------------------------------------------------------------------- // Convertibility testing global_function Boolean Can_Convert_To_Character (preserves Integer x); global_function Boolean Can_Convert_To_Integer (preserves Real x); global_function Boolean Can_Convert_To_Boolean (preserves Text x); global_function Boolean Can_Convert_To_Character (preserves Text x); global_function Boolean Can_Convert_To_Integer (preserves Text x); global_function Boolean Can_Convert_To_Real (preserves Text x); //------------------------------------------------------------------------- // Foundation types -> raw C++ types // // Boolean and Text have their conversion to int and char*, respectively, // implemented as member operations. The former is required for // conditional statements to work, and the latter for efficiency in // interfaces to standard C/C++ library operations. global_function char To_char (preserves Character x); global_function char To_char (preserves Text x); global_function int To_int (preserves Character x); // for "case_select" stmt global_function int To_int (preserves Integer x); global_function int To_int (preserves Text x); global_function double To_double (preserves Real x); global_function double To_double (preserves Text x); //------------------------------------------------------------------------- // Raw C++ types -> foundation types // // See also constructors for foundation types from their underlying // raw C++ representation types, e.g., int -> Integer. The following // are separate to avoid automatic conversions. global_function Character To_Character (preserves int x); global_function Integer To_Integer (preserves char x); global_function Integer To_Integer (preserves double x); global_function Real To_Real (preserves int x); global_function Text To_Text (preserves char x); global_function Text To_Text (preserves int x); global_function Text To_Text ( preserves double x, preserves int precision = 6, preserves int science_format = false ); //------------------------------------------------------------------------- // Foundation types -> foundation types global_function Boolean To_Boolean (preserves Text x); global_function Character To_Character (preserves Integer x); global_function Character To_Character (preserves Text x); global_function Integer To_Integer (preserves Character x); global_function Integer To_Integer (preserves Real x); global_function Integer To_Integer (preserves Text x); global_function Real To_Real (preserves Integer x); global_function Real To_Real (preserves Text x); global_function Text To_Text (preserves Boolean x); global_function Text To_Text (preserves Character x); global_function Text To_Text (preserves Integer x); global_function Text To_Text ( preserves Real x, preserves Integer precision = 6, preserves Boolean science_format = false ); #endif // CONVERT_H