#LIB INCLUDE_OBJ "_exp_string.o" TYPE _EXP_STRING_HANDLE = C_TYPE("void*") TYPE _EXP_STRING_C_INTEGER = C_TYPE("long long") EXTERN "C" EXTERN_FUNCTION _exp_string_impl_new() RETURNS _EXP_STRING_HANDLE EXTERN "C" EXTERN_FUNCTION _exp_string_impl_copy(_EXP_STRING_HANDLE) RETURNS _EXP_STRING_HANDLE EXTERN "C" EXTERN_FUNCTION _exp_string_impl_from_cstr(C_STRING) RETURNS _EXP_STRING_HANDLE EXTERN "C" EXTERN_FUNCTION _exp_string_impl_from_count_char(_EXP_STRING_C_INTEGER, C_CHAR) RETURNS _EXP_STRING_HANDLE EXTERN "C" EXTERN_PROCEDURE _exp_string_impl_delete(_EXP_STRING_HANDLE) EXTERN "C" EXTERN_PROCEDURE _exp_string_impl_assign(_EXP_STRING_HANDLE, _EXP_STRING_HANDLE) EXTERN "C" EXTERN_PROCEDURE _exp_string_impl_assign_cstr(_EXP_STRING_HANDLE, C_STRING) EXTERN "C" EXTERN_PROCEDURE _exp_string_impl_concat(_EXP_STRING_HANDLE, _EXP_STRING_HANDLE, _EXP_STRING_HANDLE) EXTERN "C" EXTERN_PROCEDURE _exp_string_impl_from_int(_EXP_STRING_HANDLE, _EXP_STRING_C_INTEGER) EXTERN "C" EXTERN_PROCEDURE _exp_string_impl_from_real(_EXP_STRING_HANDLE, C_DOUBLE) EXTERN "C" EXTERN_FUNCTION _exp_string_impl_to_real(_EXP_STRING_HANDLE) RETURNS C_DOUBLE EXTERN "C" EXTERN_FUNCTION _exp_string_impl_length(_EXP_STRING_HANDLE) RETURNS _EXP_STRING_C_INTEGER EXTERN "C" EXTERN_PROCEDURE _exp_string_impl_left(_EXP_STRING_HANDLE, _EXP_STRING_HANDLE, _EXP_STRING_C_INTEGER) EXTERN "C" EXTERN_PROCEDURE _exp_string_impl_right(_EXP_STRING_HANDLE, _EXP_STRING_HANDLE, _EXP_STRING_C_INTEGER) EXTERN "C" EXTERN_PROCEDURE _exp_string_impl_mid(_EXP_STRING_HANDLE, _EXP_STRING_HANDLE, _EXP_STRING_C_INTEGER, _EXP_STRING_C_INTEGER) EXTERN "C" EXTERN_PROCEDURE _exp_string_impl_lcase(_EXP_STRING_HANDLE, _EXP_STRING_HANDLE) EXTERN "C" EXTERN_FUNCTION _exp_string_impl_lcase_char(C_CHAR) RETURNS C_CHAR EXTERN "C" EXTERN_PROCEDURE _exp_string_impl_ucase(_EXP_STRING_HANDLE, _EXP_STRING_HANDLE) EXTERN "C" EXTERN_FUNCTION _exp_string_impl_ucase_char(C_CHAR) RETURNS C_CHAR EXTERN "C" EXTERN_FUNCTION _exp_string_impl_asc(_EXP_STRING_HANDLE) RETURNS _EXP_STRING_C_INTEGER EXTERN "C" EXTERN_FUNCTION _exp_string_impl_asc_char(C_CHAR) RETURNS _EXP_STRING_C_INTEGER EXTERN "C" EXTERN_PROCEDURE _exp_string_impl_output(_EXP_STRING_HANDLE) CLASS _EXP_STRING PUBLIC _HANDLE : _EXP_STRING_HANDLE OVERLOAD PROCEDURE NEW() _HANDLE <- _exp_string_impl_new() ENDPROCEDURE OVERLOAD PROCEDURE NEW(BYREF Other : _EXP_STRING) _HANDLE <- _exp_string_impl_copy(Other._HANDLE) ENDPROCEDURE OVERLOAD PROCEDURE NEW(Text : C_STRING) _HANDLE <- _exp_string_impl_from_cstr(Text) ENDPROCEDURE OVERLOAD PROCEDURE NEW(Count : INTEGER, Ch : C_CHAR) _HANDLE <- _exp_string_impl_from_count_char((_EXP_STRING_C_INTEGER)Count, Ch) ENDPROCEDURE PROCEDURE DELETE() CALL _exp_string_impl_delete(_HANDLE) ENDPROCEDURE OVERLOAD PROCEDURE OPERATOR<-(BYREF Other : _EXP_STRING) CALL _exp_string_impl_assign(_HANDLE, Other._HANDLE) ENDPROCEDURE OVERLOAD PROCEDURE OPERATOR<-(Text : C_STRING) CALL _exp_string_impl_assign_cstr(_HANDLE, Text) ENDPROCEDURE ENDCLASS OVERLOAD FUNCTION OPERATOR&(A : _EXP_STRING, B : _EXP_STRING) RETURNS _EXP_STRING DECLARE Result : _EXP_STRING CALL _exp_string_impl_concat(Result._HANDLE, A._HANDLE, B._HANDLE) RETURN Result ENDFUNCTION OVERLOAD FUNCTION _EXP_STRING_NUM_TO_STR(Number : INTEGER) RETURNS _EXP_STRING DECLARE Result : _EXP_STRING CALL _exp_string_impl_from_int(Result._HANDLE, (_EXP_STRING_C_INTEGER)Number) RETURN Result ENDFUNCTION OVERLOAD FUNCTION _EXP_STRING_NUM_TO_STR(Number : REAL) RETURNS _EXP_STRING DECLARE Result : _EXP_STRING CALL _exp_string_impl_from_real(Result._HANDLE, (C_DOUBLE)Number) RETURN Result ENDFUNCTION FUNCTION _EXP_STRING_STR_TO_NUM(S : _EXP_STRING) RETURNS REAL RETURN (REAL)_exp_string_impl_to_real(S._HANDLE) ENDFUNCTION FUNCTION _EXP_STRING_LENGTH(S : _EXP_STRING) RETURNS INTEGER RETURN (INTEGER)_exp_string_impl_length(S._HANDLE) ENDFUNCTION PROCEDURE _EXP_STRING_OUTPUT(S : _EXP_STRING) CALL _exp_string_impl_output(S._HANDLE) ENDPROCEDURE FUNCTION _EXP_STRING_LEFT(S : _EXP_STRING, Count : INTEGER) RETURNS _EXP_STRING DECLARE Result : _EXP_STRING CALL _exp_string_impl_left(Result._HANDLE, S._HANDLE, (_EXP_STRING_C_INTEGER)Count) RETURN Result ENDFUNCTION FUNCTION _EXP_STRING_RIGHT(S : _EXP_STRING, Count : INTEGER) RETURNS _EXP_STRING DECLARE Result : _EXP_STRING CALL _exp_string_impl_right(Result._HANDLE, S._HANDLE, (_EXP_STRING_C_INTEGER)Count) RETURN Result ENDFUNCTION FUNCTION _EXP_STRING_MID(S : _EXP_STRING, Start : INTEGER, Count : INTEGER) RETURNS _EXP_STRING DECLARE Result : _EXP_STRING CALL _exp_string_impl_mid(Result._HANDLE, S._HANDLE, (_EXP_STRING_C_INTEGER)Start, (_EXP_STRING_C_INTEGER)Count) RETURN Result ENDFUNCTION OVERLOAD FUNCTION _EXP_STRING_LCASE(S : _EXP_STRING) RETURNS _EXP_STRING DECLARE Result : _EXP_STRING CALL _exp_string_impl_lcase(Result._HANDLE, S._HANDLE) RETURN Result ENDFUNCTION OVERLOAD FUNCTION _EXP_STRING_LCASE(Ch : CHAR) RETURNS CHAR RETURN (CHAR)_exp_string_impl_lcase_char((C_CHAR)Ch) ENDFUNCTION OVERLOAD FUNCTION _EXP_STRING_UCASE(S : _EXP_STRING) RETURNS _EXP_STRING DECLARE Result : _EXP_STRING CALL _exp_string_impl_ucase(Result._HANDLE, S._HANDLE) RETURN Result ENDFUNCTION OVERLOAD FUNCTION _EXP_STRING_UCASE(Ch : CHAR) RETURNS CHAR RETURN (CHAR)_exp_string_impl_ucase_char((C_CHAR)Ch) ENDFUNCTION OVERLOAD FUNCTION _EXP_STRING_ASC(S : _EXP_STRING) RETURNS INTEGER RETURN (INTEGER)_exp_string_impl_asc(S._HANDLE) ENDFUNCTION OVERLOAD FUNCTION _EXP_STRING_ASC(Ch : CHAR) RETURNS INTEGER RETURN (INTEGER)_exp_string_impl_asc_char((C_CHAR)Ch) ENDFUNCTION