private import parser::tables
import mixin
import primitive_types
+private import model::serialize_model
redef class ToolContext
# --discover-call-trace
end
# Return a new native string initialized with `txt`
- fun native_string_instance_from_ns(txt: NativeString, len: Int): Instance
+ fun native_string_instance_from_ns(txt: CString, len: Int): Instance
do
var instance = native_string_instance_len(len)
var val = instance.val
end
# Return a new native string initialized of `length`
- fun native_string_instance_len(length: Int): PrimitiveInstance[NativeString]
+ fun native_string_instance_len(length: Int): PrimitiveInstance[CString]
do
- var val = new NativeString(length)
+ var val = new CString(length)
var t = mainmodule.native_string_type
- var instance = new PrimitiveInstance[NativeString](t, val)
+ var instance = new PrimitiveInstance[CString](t, val)
init_instance_primitive(instance)
return instance
end
return v.bool_instance(args[0].mtype == args[1].mtype)
else if pname == "is_same_instance" then
return v.bool_instance(args[0].eq_is(args[1]))
+ else if pname == "class_inheritance_metamodel_json" then
+ return v.native_string_instance(v.mainmodule.flatten_mclass_hierarchy.to_thin_json)
else if pname == "exit" then
exit(args[1].to_i)
abort
else if pname == "round" then
return v.float_instance(args[0].to_f.round)
end
- else if cname == "NativeString" then
+ else if cname == "CString" then
if pname == "new" then
return v.native_string_instance_len(args[1].to_i)
end
- var recvval = args.first.val.as(NativeString)
+ var recvval = args.first.val.as(CString)
if pname == "[]" then
var arg1 = args[1].to_i
return v.byte_instance(recvval[arg1])
recvval[arg1] = args[2].val.as(Byte)
return null
else if pname == "copy_to" then
- # sig= copy_to(dest: NativeString, length: Int, from: Int, to: Int)
- var destval = args[1].val.as(NativeString)
+ # sig= copy_to(dest: CString, length: Int, from: Int, to: Int)
+ var destval = args[1].val.as(CString)
var lenval = args[2].to_i
var fromval = args[3].to_i
var toval = args[4].to_i
var ns = recvval.fast_cstring(args[1].to_i)
return v.native_string_instance(ns.to_s)
else if pname == "fetch_4_chars" then
- return v.int_instance(args[0].val.as(NativeString).fetch_4_chars(args[1].to_i))
+ return v.int_instance(args[0].val.as(CString).fetch_4_chars(args[1].to_i))
else if pname == "fetch_4_hchars" then
- return v.int_instance(args[0].val.as(NativeString).fetch_4_hchars(args[1].to_i))
+ return v.int_instance(args[0].val.as(CString).fetch_4_hchars(args[1].to_i))
else if pname == "utf8_length" then
- return v.int_instance(args[0].val.as(NativeString).utf8_length(args[1].to_i, args[2].to_i))
+ return v.int_instance(args[0].val.as(CString).utf8_length(args[1].to_i, args[2].to_i))
end
- else if pname == "calloc_string" then
- return v.native_string_instance_len(args[1].to_i)
else if cname == "NativeArray" then
if pname == "new" then
var val = new Array[Instance].filled_with(v.null_instance, args[1].to_i)
else if pname == "native_argv" then
var txt = v.arguments[args[1].to_i]
return v.native_string_instance(txt)
- else if pname == "native_argc" then
- return v.int_instance(v.arguments.length)
- else if pname == "native_argv" then
- var txt = v.arguments[args[1].to_i]
- return v.native_string_instance(txt)
else if pname == "lexer_goto" then
return v.int_instance(lexer_goto(args[1].to_i, args[2].to_i))
else if pname == "lexer_accept" then