aboutsummaryrefslogtreecommitdiff
path: root/pseudocode-lib/_exp_string.cps
diff options
context:
space:
mode:
Diffstat (limited to 'pseudocode-lib/_exp_string.cps')
-rw-r--r--pseudocode-lib/_exp_string.cps67
1 files changed, 67 insertions, 0 deletions
diff --git a/pseudocode-lib/_exp_string.cps b/pseudocode-lib/_exp_string.cps
new file mode 100644
index 0000000..369e20f
--- /dev/null
+++ b/pseudocode-lib/_exp_string.cps
@@ -0,0 +1,67 @@
+#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_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