static int alphabet_lua_delete(lua_State *L) { GtAlphabet **alpha; alpha = check_alphabet(L, 1); gt_alphabet_delete(*alpha); return 0; }
static int alphabet_lua_size(lua_State *L) { GtAlphabet **alpha; unsigned int size; alpha = check_alphabet(L, 1); size = gt_alphabet_size(*alpha); lua_pushinteger(L, size); return 1; }
static int alphabet_lua_add_wildcard(lua_State *L) { GtAlphabet **alpha; const char *wildcard; alpha = check_alphabet(L, 1); wildcard = luaL_checkstring(L, 2); luaL_argcheck(L, strlen(wildcard) == 1, 2, "wildcard string must have length 0"); gt_alphabet_add_wildcard(*alpha, wildcard[0]); return 0; }
static int alphabet_lua_add_mapping(lua_State *L) { GtAlphabet **alpha; const char *characters; alpha = check_alphabet(L, 1); characters = luaL_checkstring(L, 2); luaL_argcheck(L, strlen(characters), 2, "mapping must contain at least one character"); gt_alphabet_add_mapping(*alpha, characters); return 0; }
static int alphabet_lua_decode(lua_State *L) { GtAlphabet **alpha; unsigned int code; char character; alpha = check_alphabet(L, 1); code = luaL_checkinteger(L, 2); /* XXX: too restrictive, does not consider wildcards */ luaL_argcheck(L, code < gt_alphabet_size(*alpha), 2, "invalid code"); character = gt_alphabet_decode(*alpha, code); lua_pushlstring(L, &character, 1); return 1; }
static int encseq_builder_lua_new(lua_State *L) { GtEncseqBuilder **builder; GtAlphabet **alpha; builder = lua_newuserdata(L, sizeof (GtEncseqBuilder*)); alpha = check_alphabet(L, 1); gt_assert(builder && *alpha); *builder = gt_encseq_builder_new(*alpha); gt_assert(*builder); luaL_getmetatable(L, ENCSEQ_BUILDER_METATABLE); lua_setmetatable(L, -2); return 1; }
// ========= // Constructor-0 Tape::Tape ( const vector<symbol_t>& empty_symbols_alphabet_i, const vector<symbol_t>& internal_alphabet_i, const vector<symbol_t>& input_alphabet_i, const string& msg_i ) : empty_symbols_alphabet_ (empty_symbols_alphabet_i), internal_alphabet_ (internal_alphabet_i), input_alphabet_ (input_alphabet_i), position_ (0), max_symbol_size_ (0) { IF_NOT_EMPTY (msg_i, 3, '='); check_results_ = check_alphabet (); set_max_symbol_size_ (); //show_alphabet ("Tape constructed"); }