Skip to content

Commit

Permalink
Make object & array classes like stl containers
Browse files Browse the repository at this point in the history
  • Loading branch information
alicealys committed Nov 9, 2023
1 parent 344e51a commit 9202fed
Show file tree
Hide file tree
Showing 14 changed files with 490 additions and 204 deletions.
4 changes: 2 additions & 2 deletions src/component/command.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ namespace command

for (auto i = 0; i < params.size(); i++)
{
array.push(params[i]);
array.emplace_back(params[i]);
}

function({array.get_raw()});
Expand All @@ -313,7 +313,7 @@ namespace command

for (auto i = 0; i < params.size(); i++)
{
array.push(params[i]);
array.emplace_back(params[i]);
}

function(player, {array});
Expand Down
70 changes: 61 additions & 9 deletions src/component/gsc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -596,15 +596,7 @@ namespace gsc

function::add("getstructkeys", [](const scripting::object& obj)
{
const auto keys = obj.get_keys();
scripting::array result;

for (const auto& key : keys)
{
result.push(key);
}

return result;
return obj.get_keys();
});

function::add("isfunctionptr", [](const scripting::script_value& value)
Expand Down Expand Up @@ -694,6 +686,66 @@ namespace gsc
const auto func = iter->second.actionFunc;
hooked_builtins.erase(func);
});

function::add("scripting::test", [](const scripting::object& object)
{
std::unordered_map<std::string, std::string> map;

for (auto i = map.begin(); i != map.end(); i++)
{
const auto b = *i;
}

auto iter = object.find("value");
if (iter != object.end())
{
iter->second = "balls";
auto t = iter->second.type_name();
printf("aaaaa %s\n", t.data());
}

auto begin = object.begin();
auto end = object.end();
printf("begin == end %i\n", begin == end);

for (auto i = object.begin(); i != object.end(); ++i)
{
printf("key: %s\n", i->first.data());
}

for (const auto& [key, value] : object)
{
auto str = value.to_string();
printf("%s = %s\n", key.data(), str.data());
}
});

function::add("scripting::test2", [](const scripting::array& object)
{
auto iter = object.find("value");
if (iter != object.end())
{
iter->second = "balls";
auto t = iter->second.type_name();
printf("aaaaa %s\n", t.data());
}

auto begin = object.begin();
auto end = object.end();
printf("begin == end %i\n", begin == end);

for (auto i = object.begin(); i != object.end(); ++i)
{
printf("key: %s\n", i->first.to_string().data());
}

for (const auto& [key, value] : object)
{
auto str = value.to_string();
auto key_str = key.to_string();
printf("%s = %s\n", key_str.data(), str.data());
}
});
}
};
}
Expand Down
28 changes: 13 additions & 15 deletions src/component/http.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@ namespace http
scripting::script_value http_post(const std::string& url, const std::string& data, const scripting::array& headers_array)
{
utils::http::headers headers;
for (const auto& key : headers_array.get_keys())
for (const auto& [key, value] : headers_array)
{
const auto value = headers_array[key];
if (!key.is<std::string>() || !value.is<std::string>())
{
continue;
}

headers[key.as<std::string>()] = value.as<std::string>();
const auto key_str = key.as<std::string>();
headers[key_str] = value.as<std::string>();
}

const scripting::object object{};
Expand Down Expand Up @@ -125,19 +125,18 @@ namespace http

if (fields.is<scripting::array>())
{
const auto fields_ = fields.as<scripting::array>();
const auto keys = fields_.get_keys();
const auto fields_arr = fields.as<scripting::array>();

for (const auto& key : keys)
for (const auto& [key, value] : fields_arr)
{
if (!key.is<std::string>())
{
continue;
}

const auto key_ = key.as<std::string>();
const auto value = fields_[key].to_string();
fields_string += key_ + "=" + value + "&";
const auto key_str = key.as<std::string>();
const auto value_str = value.to_string();
fields_string += std::format("{}={}", key_str, value_str);
}

}
Expand All @@ -149,20 +148,19 @@ namespace http

if (headers.is<scripting::array>())
{
const auto headers_ = headers.as<scripting::array>();
const auto keys = headers_.get_keys();
const auto headers_arr = headers.as<scripting::array>();

for (const auto& key : keys)
for (const auto& [key, value] : headers_arr)
{
if (!key.is<std::string>())
{
continue;
}

const auto key_ = key.as<std::string>();
const auto value = headers_[key].to_string();
const auto key_str = key.as<std::string>();
const auto value_str = value.to_string();

headers_map[key_] = value;
headers_map[key_str] = value_str;
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/component/json.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ namespace json

for (const auto& [key, value] : obj.items())
{
array.push(json_to_gsc(value));
array.emplace_back(json_to_gsc(value));
}

return array.get_raw();
Expand Down
4 changes: 2 additions & 2 deletions src/component/mysql.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ namespace mysql
row_arr[field_name] = field_to_value(field, row);
}

result_arr.push(row_arr);
result_arr.emplace_back(row_arr);
}

mysql_free_result(meta);
Expand Down Expand Up @@ -152,7 +152,7 @@ namespace mysql
row_arr[field_str] = value;
}

result_arr.push(row_arr);
result_arr.emplace_back(row_arr);
}

return result_arr;
Expand Down
9 changes: 2 additions & 7 deletions src/component/notifies.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -172,14 +172,9 @@ namespace notifies
if (arg.is<scripting::array>())
{
const auto arr = arg.as<scripting::array>();
for (auto o = 0u; o < arr.size(); o++)
for (const auto& [key, value] : arr)
{
if (!arr[o].is<std::string>())
{
continue;
}

const auto str = arr[o].as<std::string>();
const auto str = value.as<std::string>();
notifies.insert(game::SL_GetString(str.data(), 0));
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/component/string.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ namespace string
{
for (const auto& s : match)
{
array_match.push((s.str()));
array_match.emplace_back((s.str()));
}
}

Expand Down
Loading

0 comments on commit 9202fed

Please sign in to comment.