1 /* ScummVM - Graphic Adventure Engine
2 *
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 *
21 */
22
23 #include "ags/plugins/core/string.h"
24 #include "ags/engine/ac/string.h"
25 #include "ags/engine/ac/math.h"
26
27 namespace AGS3 {
28 namespace Plugins {
29 namespace Core {
30
AGS_EngineStartup(IAGSEngine * engine)31 void String::AGS_EngineStartup(IAGSEngine *engine) {
32 ScriptContainer::AGS_EngineStartup(engine);
33
34 SCRIPT_METHOD(String::IsNullOrEmpty^1, String::IsNullOrEmpty);
35 SCRIPT_METHOD(String::Append^1, String::Append);
36 SCRIPT_METHOD(String::AppendChar^1, String::AppendChar);
37 SCRIPT_METHOD(String::CompareTo^2, String::CompareTo);
38 SCRIPT_METHOD(String::Contains^1, String::StrContains);
39 SCRIPT_METHOD(String::Copy^0, String::Copy);
40 SCRIPT_METHOD(String::EndsWith^2, String::EndsWith);
41 SCRIPT_METHOD(String::Format^101, String::ScPl_String_Format);
42 SCRIPT_METHOD(String::IndexOf^1, String::StrContains);
43 SCRIPT_METHOD(String::LowerCase^0, String::LowerCase);
44 SCRIPT_METHOD(String::Replace^3, String::Replace);
45 SCRIPT_METHOD(String::ReplaceCharAt^2, String::ReplaceCharAt);
46 SCRIPT_METHOD(String::StartsWith^2, String::StartsWith);
47 SCRIPT_METHOD(String::Substring^2, String::Substring);
48 SCRIPT_METHOD(String::Truncate^1, String::Truncate);
49 SCRIPT_METHOD(String::UpperCase^0, String::UpperCase);
50 SCRIPT_METHOD(String::get_AsFloat, String::StringToFloat);
51 SCRIPT_METHOD(String::get_AsInt, String::StringToInt);
52 SCRIPT_METHOD(String::geti_Chars, String::GetChars);
53 SCRIPT_METHOD(String::get_Length, String::strlen);
54 }
55
IsNullOrEmpty(ScriptMethodParams & params)56 void String::IsNullOrEmpty(ScriptMethodParams ¶ms) {
57 PARAMS1(const char *, str);
58 params._result = AGS3::String_IsNullOrEmpty(str);
59 }
60
Append(ScriptMethodParams & params)61 void String::Append(ScriptMethodParams ¶ms) {
62 PARAMS2(const char *, str, const char *, extrabit);
63 params._result = AGS3::String_Append(str, extrabit);
64 }
65
AppendChar(ScriptMethodParams & params)66 void String::AppendChar(ScriptMethodParams ¶ms) {
67 PARAMS2(const char *, str, char, extraOne);
68 params._result = AGS3::String_AppendChar(str, extraOne);
69 }
70
CompareTo(ScriptMethodParams & params)71 void String::CompareTo(ScriptMethodParams ¶ms) {
72 PARAMS3(const char *, str1, const char *, str2, bool, caseSensitive);
73 params._result = AGS3::String_CompareTo(str1, str2, caseSensitive);
74 }
75
StrContains(ScriptMethodParams & params)76 void String::StrContains(ScriptMethodParams ¶ms) {
77 PARAMS2(const char *, s1, const char *, s2);
78 params._result = AGS3::StrContains(s1, s2);
79 }
80
Copy(ScriptMethodParams & params)81 void String::Copy(ScriptMethodParams ¶ms) {
82 PARAMS1(const char *, str);
83 params._result = AGS3::String_Copy(str);
84 }
85
EndsWith(ScriptMethodParams & params)86 void String::EndsWith(ScriptMethodParams ¶ms) {
87 PARAMS3(const char *, s1, const char *, s2, bool, caseSensitive);
88 params._result = AGS3::String_EndsWith(s1, s2, caseSensitive);
89 }
90
ScPl_String_Format(ScriptMethodParams & params)91 void String::ScPl_String_Format(ScriptMethodParams ¶ms) {
92 Common::String text = params.format(0);
93 params._result = AGS3::CreateNewScriptString(text.c_str());
94 }
95
LowerCase(ScriptMethodParams & params)96 void String::LowerCase(ScriptMethodParams ¶ms) {
97 PARAMS1(const char *, str);
98 params._result = AGS3::String_LowerCase(str);
99 }
100
Replace(ScriptMethodParams & params)101 void String::Replace(ScriptMethodParams ¶ms) {
102 PARAMS4(const char *, thisString, const char *, lookForText, const char *, replaceWithText, bool, caseSensitive);
103 params._result = AGS3::String_Replace(thisString, lookForText, replaceWithText, caseSensitive);
104 }
105
ReplaceCharAt(ScriptMethodParams & params)106 void String::ReplaceCharAt(ScriptMethodParams ¶ms) {
107 PARAMS3(const char *, thisString, int, index, char, newChar);
108 params._result = AGS3::String_ReplaceCharAt(thisString, index, newChar);
109 }
110
StartsWith(ScriptMethodParams & params)111 void String::StartsWith(ScriptMethodParams ¶ms) {
112 PARAMS3(const char *, thisString, const char *, checkForString, bool, caseSensitive);
113 params._result = AGS3::String_StartsWith(thisString, checkForString, caseSensitive);
114 }
115
Substring(ScriptMethodParams & params)116 void String::Substring(ScriptMethodParams ¶ms) {
117 PARAMS3(const char *, thisString, int, index, int, length);
118 params._result = AGS3::String_Substring(thisString, index, length);
119 }
120
Truncate(ScriptMethodParams & params)121 void String::Truncate(ScriptMethodParams ¶ms) {
122 PARAMS2(const char *, thisString, int, length);
123 params._result = AGS3::String_Truncate(thisString, length);
124 }
125
UpperCase(ScriptMethodParams & params)126 void String::UpperCase(ScriptMethodParams ¶ms) {
127 PARAMS1(const char *, str);
128 params._result = AGS3::String_UpperCase(str);
129 }
130
StringToFloat(ScriptMethodParams & params)131 void String::StringToFloat(ScriptMethodParams ¶ms) {
132 PARAMS1(const char *, value);
133 params._result = AGS3::StringToFloat(value);
134 }
135
StringToInt(ScriptMethodParams & params)136 void String::StringToInt(ScriptMethodParams ¶ms) {
137 PARAMS1(const char *, value);
138 params._result = AGS3::StringToInt(value);
139 }
140
GetChars(ScriptMethodParams & params)141 void String::GetChars(ScriptMethodParams ¶ms) {
142 PARAMS2(const char *, texx, int, index);
143 params._result = AGS3::String_GetChars(texx, index);
144 }
145
strlen(ScriptMethodParams & params)146 void String::strlen(ScriptMethodParams ¶ms) {
147 PARAMS1(const char *, s);
148 params._result = ::strlen(s);
149 }
150
151 } // namespace Core
152 } // namespace Plugins
153 } // namespace AGS3
154