@@ -14,12 +14,16 @@ module sourcery_string_m
1414 generic :: string = > as_character
1515 procedure :: is_allocated
1616 procedure :: get_json_key
17- procedure , private :: &
18- get_json_integer_array, get_json_logical, get_json_integer, get_json_string, get_json_real
17+ generic :: operator ( /= ) = > string_t_ne_string_t, string_t_ne_character, character_ne_string_t
18+ generic :: operator (==) = > string_t_eq_string_t, string_t_eq_character, character_eq_string_t
1919 generic :: get_json_value = > &
2020 get_json_integer_array, get_json_logical, get_json_integer, get_json_string, get_json_real
21- procedure , private :: equivalent
22- generic :: operator (==) = > equivalent
21+ procedure , private :: &
22+ get_json_integer_array, get_json_logical, get_json_integer, get_json_string, get_json_real
23+ procedure , private :: string_t_ne_string_t, string_t_ne_character
24+ procedure , private , pass(rhs) :: character_ne_string_t
25+ procedure , private :: string_t_eq_string_t, string_t_eq_character
26+ procedure , private , pass(rhs) :: character_eq_string_t
2327 end type
2428
2529 interface string_t
@@ -92,10 +96,44 @@ pure module function get_json_integer_array(self, key, mold) result(value_)
9296 integer , allocatable :: value_(:)
9397 end function
9498
95- elemental module function equivalent(lhs, rhs) result(lhs_eqv_rhs)
99+ elemental module function string_t_eq_string_t(lhs, rhs) result(lhs_eq_rhs)
100+ implicit none
101+ class(string_t), intent (in ) :: lhs, rhs
102+ logical lhs_eq_rhs
103+ end function
104+
105+ elemental module function string_t_eq_character(lhs, rhs) result(lhs_eq_rhs)
106+ implicit none
107+ class(string_t), intent (in ) :: lhs
108+ character (len=* ), intent (in ) :: rhs
109+ logical lhs_eq_rhs
110+ end function
111+
112+ elemental module function character_eq_string_t(lhs, rhs) result(lhs_eq_rhs)
113+ implicit none
114+ class(string_t), intent (in ) :: rhs
115+ character (len=* ), intent (in ) :: lhs
116+ logical lhs_eq_rhs
117+ end function
118+
119+ elemental module function string_t_ne_string_t(lhs, rhs) result(lhs_ne_rhs)
96120 implicit none
97121 class(string_t), intent (in ) :: lhs, rhs
98- logical lhs_eqv_rhs
122+ logical lhs_ne_rhs
123+ end function
124+
125+ elemental module function string_t_ne_character(lhs, rhs) result(lhs_ne_rhs)
126+ implicit none
127+ class(string_t), intent (in ) :: lhs
128+ character (len=* ), intent (in ) :: rhs
129+ logical lhs_ne_rhs
130+ end function
131+
132+ elemental module function character_ne_string_t(lhs, rhs) result(lhs_ne_rhs)
133+ implicit none
134+ class(string_t), intent (in ) :: rhs
135+ character (len=* ), intent (in ) :: lhs
136+ logical lhs_ne_rhs
99137 end function
100138
101139 end interface
0 commit comments