mirror of
https://github.com/ChaiScript/ChaiScript.git
synced 2026-06-15 00:16:17 +08:00
* Fix #458: Support std::string_view interop with ChaiScript strings Register std::string_view as the "string_view" user type with a built-in implicit conversion from std::string, so a ChaiScript string can be passed directly to a C++ function taking std::string_view. Adds the reverse explicit conversion via string(sv) / to_string(sv), plus basic queries (size, length, empty, data) and comparison operators on string_view. String-style methods that take size_t (substr, find, ...) are intentionally not duplicated on string_view: with the implicit conversion in place they would create dispatch ambiguity for calls like string.substr(int, int). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Address review: expand string_view binding with substr/find/[] Adds substr, find/rfind/find_first_of/find_last_of/find_first_not_of/ find_last_not_of, starts_with/ends_with, and operator[] to string_view_type, mirroring string_type's search/substring surface so script authors can traverse a buffer through string_view without allocating. Sharing method names with string_type creates an ambiguity in dispatch_with_conversions when the script call needs arithmetic conversion (e.g. myString.substr(int, int)): both string::substr and string_view::substr match-except-for-arithmetic, and the existing const/non-const tiebreaker doesn't apply. Extend dispatch_with_conversions to prefer the candidate whose first/receiver parameter type exactly matches the actual receiver, mirroring the deprioritization already in dispatch(). With this in place, myString.substr(1, 2) still resolves to string::substr while mySV.substr(1, 2) resolves to string_view::substr (returning a string_view). Updates the doc comment on string_view_type and adds a compiled test that locks in both dispatch directions plus the new search/substring methods. Requested by @lefticus in PR #697 review. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: leftibot <leftibot@users.noreply.github.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| any.hpp | ||
| bad_boxed_cast.hpp | ||
| bind_first.hpp | ||
| bootstrap_stl.hpp | ||
| bootstrap.hpp | ||
| boxed_cast_helper.hpp | ||
| boxed_cast.hpp | ||
| boxed_number.hpp | ||
| boxed_value.hpp | ||
| callable_traits.hpp | ||
| dispatchkit.hpp | ||
| dynamic_object_detail.hpp | ||
| dynamic_object.hpp | ||
| exception_specification.hpp | ||
| function_call_detail.hpp | ||
| function_call.hpp | ||
| function_params.hpp | ||
| function_signature.hpp | ||
| handle_return.hpp | ||
| operators.hpp | ||
| proxy_constructors.hpp | ||
| proxy_functions_detail.hpp | ||
| proxy_functions.hpp | ||
| register_function.hpp | ||
| type_conversions.hpp | ||
| type_info.hpp | ||