CodePorting.Translator Cs2Cpp
CodePorting.Translator.Cs2Cpp.Framework
string_extra.h
1
2#pragma once
3
4#include <system/string.h>
5#include <system/array.h>
6#include <system/convert.h>
7
8
9namespace System
10{
11namespace StringExtra
12{
13
17ASPOSECPP_SHARED_API String Concat(const ArrayPtr<String>& parts);
22ASPOSECPP_SHARED_API String Concat(const String & str0, const String & str1);
28ASPOSECPP_SHARED_API String Concat(const String & str0, const String & str1, const String & str2);
35ASPOSECPP_SHARED_API String Concat(const String & str0, const String & str1, const String & str2, const String & str3);
40template <typename T>
41std::enable_if_t<IsSmartPtr<T>::value, String> Concat(const ArrayPtr<T>& args)
42{
43 ArrayPtr<String> parts = System::MakeObject<Array<String>>(args->get_Length());
44 std::transform(args->data().begin(), args->data().end(), parts->data().begin(), [](const T& value)
45 {
46 return value->ToString();
47 });
48 return Concat(parts);
49}
50
55template <typename T>
56std::enable_if_t<std::is_arithmetic<T>::value, String> Concat(const ArrayPtr<T>& args)
57{
58 ArrayPtr<String> parts = System::MakeObject<Array<String>>(args->get_Length());
59 std::transform(args->data().begin(), args->data().end(), parts->data().begin(), [](const T& value)
60 {
61 return System::Convert::ToString(value);
62 });
63 return Concat(parts);
64}
65
70template <typename T>
71std::enable_if_t<!IsSmartPtr<T>::value && !std::is_arithmetic<T>::value, String> Concat(const ArrayPtr<T>& args)
72{
73 ArrayPtr<String> parts = System::MakeObject<Array<String>>(args->get_Length());
74 std::transform(args->data().begin(), args->data().end(), parts->data().begin(), [](const T& value)
75 {
76 return value.ToString();
77 });
78 return Concat(parts);
79}
80
81}
82}
83
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: smart_ptr.h:180
auto end() -> decltype(std::declval< Q >().end())
Accessor for end() method of an underling collection. Only compiles if SmartPtr_ is specialization ty...
Definition: smart_ptr.h:838
auto begin() -> decltype(std::declval< Q >().begin())
Accessor for begin() method of an underling collection. Only compiles if SmartPtr_ is specialization ...
Definition: smart_ptr.h:830
String class used across the library. Is a substitute for C# System.String when translating code....
Definition: string.h:122
String Concat(const ArrayPtr< String > &parts)
Concatenates string array.
Definition: db_command.h:9