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);
40ASPOSECPP_SHARED_API String Concat(const SharedPtr<Object>& arg0, const SharedPtr<Object>& arg1);
46ASPOSECPP_SHARED_API String Concat(const SharedPtr<Object>& arg0, const SharedPtr<Object>& arg1,
47 const SharedPtr<Object>& arg2);
52template <typename T>
53std::enable_if_t<IsSmartPtr<T>::value, String> Concat(const ArrayPtr<T>& args)
54{
55 ArrayPtr<String> parts = System::MakeObject<Array<String>>(args->get_Length());
56 std::transform(args->data().begin(), args->data().end(), parts->data().begin(), [](const T& value)
57 {
58 return value->ToString();
59 });
60 return Concat(parts);
61}
62
67template <typename T>
68std::enable_if_t<std::is_arithmetic<T>::value, String> Concat(const ArrayPtr<T>& args)
69{
70 ArrayPtr<String> parts = System::MakeObject<Array<String>>(args->get_Length());
71 std::transform(args->data().begin(), args->data().end(), parts->data().begin(), [](const T& value)
72 {
73 return System::Convert::ToString(value);
74 });
75 return Concat(parts);
76}
77
82template <typename T>
83std::enable_if_t<!IsSmartPtr<T>::value && !std::is_arithmetic<T>::value, String> Concat(const ArrayPtr<T>& args)
84{
85 ArrayPtr<String> parts = System::MakeObject<Array<String>>(args->get_Length());
86 std::transform(args->data().begin(), args->data().end(), parts->data().begin(), [](const T& value)
87 {
88 return value.ToString();
89 });
90 return Concat(parts);
91}
92
93}
94}
95
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:125
String Concat(const ArrayPtr< String > &parts)
Concatenates string array.
Definition: db_command.h:9