aboutsummaryrefslogtreecommitdiff
path: root/pseudocode-lib/_exp_string.cps
blob: 369e20fd1f2021ed19367161ad72fcf6346fdc80 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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