mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-14 11:47:15 +01:00
66d1110733
Moved the constants in IRC module into their own source and implemented a faster method of registering them. Various other minor changes and adjustments. Some of them in order to comply with the new API distribution system.
133 lines
4.5 KiB
C++
133 lines
4.5 KiB
C++
// ------------------------------------------------------------------------------------------------
|
|
#include "Common.hpp"
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
#include <cstdlib>
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
namespace SqMod {
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
static SQInteger SqGetNick(HSQUIRRELVM vm)
|
|
{
|
|
// Attempt to retrieve the value from the stack as a string
|
|
StackStrF val(vm, 2);
|
|
// Have we failed to retrieve the string?
|
|
if (SQ_FAILED(val.mRes))
|
|
{
|
|
return val.mRes; // Propagate the error!
|
|
}
|
|
// Attempt to retrieve the nickname
|
|
irc_target_get_nick(val.mPtr, GetTempBuff(), GetTempBuffSize());
|
|
// Push the resulted value on the stack
|
|
sq_pushstring(vm, GetTempBuff(), -1);
|
|
// Specify that this function returned a value
|
|
return 1;
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
static SQInteger SqGetHost(HSQUIRRELVM vm)
|
|
{
|
|
// Attempt to retrieve the value from the stack as a string
|
|
StackStrF val(vm, 2);
|
|
// Have we failed to retrieve the string?
|
|
if (SQ_FAILED(val.mRes))
|
|
{
|
|
return val.mRes; // Propagate the error!
|
|
}
|
|
// Attempt to retrieve the host
|
|
irc_target_get_host(val.mPtr, GetTempBuff(), GetTempBuffSize());
|
|
// Push the resulted value on the stack
|
|
sq_pushstring(vm, GetTempBuff(), -1);
|
|
// Specify that this function returned a value
|
|
return 1;
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
static SQInteger SqStripColorFromMIRC(HSQUIRRELVM vm)
|
|
{
|
|
// Attempt to retrieve the value from the stack as a string
|
|
StackStrF val(vm, 2);
|
|
// Have we failed to retrieve the string?
|
|
if (SQ_FAILED(val.mRes))
|
|
{
|
|
return val.mRes; // Propagate the error!
|
|
}
|
|
// Attempt to strip the colors
|
|
CStr str = irc_color_strip_from_mirc(val.mPtr);
|
|
// Could the IRC library allocate memory?
|
|
if (!str)
|
|
{
|
|
return sq_throwerror(vm, _SC("Unable to allocate memory"));
|
|
}
|
|
// Push the resulted value on the stack
|
|
sq_pushstring(vm, str, -1);
|
|
// Free the memory allocated by the IRC library
|
|
std::free(str);
|
|
// Specify that this function returned a value
|
|
return 1;
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
static SQInteger SqConvertColorFromMIRC(HSQUIRRELVM vm)
|
|
{
|
|
// Attempt to retrieve the value from the stack as a string
|
|
StackStrF val(vm, 2);
|
|
// Have we failed to retrieve the string?
|
|
if (SQ_FAILED(val.mRes))
|
|
{
|
|
return val.mRes; // Propagate the error!
|
|
}
|
|
// Attempt to convert the colors
|
|
CStr str = irc_color_convert_from_mirc(val.mPtr);
|
|
// Could the IRC library allocate memory?
|
|
if (!str)
|
|
{
|
|
return sq_throwerror(vm, _SC("Unable to allocate memory"));
|
|
}
|
|
// Push the resulted value on the stack
|
|
sq_pushstring(vm, str, -1);
|
|
// Free the memory allocated by the IRC library
|
|
std::free(str);
|
|
// Specify that this function returned a value
|
|
return 1;
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
static SQInteger SqConvertColorToMIRC(HSQUIRRELVM vm)
|
|
{
|
|
// Attempt to retrieve the value from the stack as a string
|
|
StackStrF val(vm, 2);
|
|
// Have we failed to retrieve the string?
|
|
if (SQ_FAILED(val.mRes))
|
|
{
|
|
return val.mRes; // Propagate the error!
|
|
}
|
|
// Attempt to convert the colors
|
|
CStr str = irc_color_convert_to_mirc(val.mPtr);
|
|
// Could the IRC library allocate memory?
|
|
if (!str)
|
|
{
|
|
return sq_throwerror(vm, _SC("Unable to allocate memory"));
|
|
}
|
|
// Push the resulted value on the stack
|
|
sq_pushstring(vm, str, -1);
|
|
// Free the memory allocated by the IRC library
|
|
std::free(str);
|
|
// Specify that this function returned a value
|
|
return 1;
|
|
}
|
|
|
|
// ================================================================================================
|
|
void Register_Common(Table & ircns)
|
|
{
|
|
ircns.Func(_SC("GetErrStr"), &irc_strerror);
|
|
ircns.SquirrelFunc(_SC("GetNick"), &SqGetNick);
|
|
ircns.SquirrelFunc(_SC("GetHost"), &SqGetHost);
|
|
ircns.SquirrelFunc(_SC("StripColorFromMIRC"), &SqStripColorFromMIRC);
|
|
ircns.SquirrelFunc(_SC("ConvertColorFromMIRC"), &SqConvertColorFromMIRC);
|
|
ircns.SquirrelFunc(_SC("ConvertColorToMIRC"), &SqConvertColorToMIRC);
|
|
}
|
|
|
|
} // Namespace:: SqMod
|