25#include <simgear/nasal/cppbind/from_nasal.hxx>
26#include <simgear/nasal/cppbind/Ghost.hxx>
27#include <simgear/nasal/cppbind/NasalHash.hxx>
28#include <simgear/nasal/cppbind/NasalString.hxx>
36static naRef
f_compare(
const nasal::CallContext& ctx)
38 nasal::String str = ctx.from_nasal<nasal::String>(ctx.me),
39 rhs = ctx.requireArg<nasal::String>(ctx.argc > 1 ? 2 : 0);
40 size_t pos = ctx.argc > 1 ? ctx.requireArg<
int>(1) : 0;
41 size_t len = ctx.argc > 1 ? ctx.requireArg<
int>(2) : 0;
44 len = nasal::String::npos;
46 return naNum( str.compare(pos, len, rhs) );
54 nasal::String str = ctx.from_nasal<nasal::String>(ctx.me),
55 rhs = ctx.requireArg<nasal::String>(0);
57 return naNum( str.starts_with(rhs) );
65 nasal::String str = ctx.from_nasal<nasal::String>(ctx.me),
66 rhs = ctx.requireArg<nasal::String>(0);
68 return naNum( str.ends_with(rhs) );
76 if( pos == nasal::String::npos )
87static naRef
f_find(
const nasal::CallContext& ctx)
89 nasal::String str = ctx.from_nasal<nasal::String>(ctx.me),
90 find = ctx.requireArg<nasal::String>(0);
91 size_t pos = ctx.getArg<
int>(1, 0);
93 if( find.size() != 1 )
94 ctx.runtimeError(
"string::find: single character expected");
106 nasal::String str = ctx.from_nasal<nasal::String>(ctx.me),
107 find = ctx.requireArg<nasal::String>(0);
108 size_t pos = ctx.getArg<
int>(1, 0);
120 nasal::String str = ctx.from_nasal<nasal::String>(ctx.me),
121 find = ctx.requireArg<nasal::String>(0);
122 size_t pos = ctx.getArg<
int>(1, 0);
124 return pos_to_nasal( str.find_first_not_of(find, pos) );
130 nasal::Hash string_module(
string, c);
135 string_module.set(
"find",
f_find);
static naRef f_find(const nasal::CallContext &ctx)
Find first occurrence of single character.
naRef pos_to_nasal(size_t pos)
Helper to convert size_t position/npos to Nasal conventions (-1 == npos)
static naRef f_find_first_of(const nasal::CallContext &ctx)
Find first character of a string occurring in this string.
naRef initNasalString(naRef globals, naRef string, naContext c)
static naRef f_starts_with(const nasal::CallContext &ctx)
Check whether string starts with other string.
static naRef f_ends_with(const nasal::CallContext &ctx)
Check whether string ends with other string.
static naRef f_find_first_not_of(const nasal::CallContext &ctx)
Find first character of this string not occurring in the other string.
static naRef f_compare(const nasal::CallContext &ctx)
Compare (sub)string with other string.