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 &params) {
57 	PARAMS1(const char *, str);
58 	params._result = AGS3::String_IsNullOrEmpty(str);
59 }
60 
Append(ScriptMethodParams & params)61 void String::Append(ScriptMethodParams &params) {
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 &params) {
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 &params) {
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 &params) {
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 &params) {
82 	PARAMS1(const char *, str);
83 	params._result = AGS3::String_Copy(str);
84 }
85 
EndsWith(ScriptMethodParams & params)86 void String::EndsWith(ScriptMethodParams &params) {
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 &params) {
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 &params) {
97 	PARAMS1(const char *, str);
98 	params._result = AGS3::String_LowerCase(str);
99 }
100 
Replace(ScriptMethodParams & params)101 void String::Replace(ScriptMethodParams &params) {
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 &params) {
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 &params) {
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 &params) {
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 &params) {
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 &params) {
127 	PARAMS1(const char *, str);
128 	params._result = AGS3::String_UpperCase(str);
129 }
130 
StringToFloat(ScriptMethodParams & params)131 void String::StringToFloat(ScriptMethodParams &params) {
132 	PARAMS1(const char *, value);
133 	params._result = AGS3::StringToFloat(value);
134 }
135 
StringToInt(ScriptMethodParams & params)136 void String::StringToInt(ScriptMethodParams &params) {
137 	PARAMS1(const char *, value);
138 	params._result = AGS3::StringToInt(value);
139 }
140 
GetChars(ScriptMethodParams & params)141 void String::GetChars(ScriptMethodParams &params) {
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 &params) {
147 	PARAMS1(const char *, s);
148 	params._result = ::strlen(s);
149 }
150 
151 } // namespace Core
152 } // namespace Plugins
153 } // namespace AGS3
154