Skip to content

Instantly share code, notes, and snippets.

@rhysd
Created December 12, 2015 08:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rhysd/4716003e1cdb22b05275 to your computer and use it in GitHub Desktop.
Save rhysd/4716003e1cdb22b05275 to your computer and use it in GitHub Desktop.
- class Object (4 bytes)
|
+- struct Value (0 bytes)
| |
| +- function Proc(T)
| | |
| | +- function (Array(Crisp::Expr) -> NoReturn)
| | |
| | +- function (Array(Crisp::Expr) -> Crisp::Expr)
| | |
| | +- function (String -> Array(String)?)
| | |
| | +- function (Int32, Int32 -> Int32)
| | |
| | +- function (Pointer(UInt8), Int32, Int32 -> Pointer(Pointer(UInt8)))
| | |
| | +- function (Int32 -> Nil)
| | |
| | +- function (Int32, LibEvent2::EventFlags, Pointer(Void) -> (Nil | Void))
| | |
| | +- function (Signal -> Void)
| | |
| | +- function (Int32 -> Void)
| | |
| | +- function (Pointer(Void) -> Nil)
| | |
| | +- function (Int32, Pointer(UInt8) -> Nil)
| | |
| | +- function (Int32, Pointer(LibC::Addrinfo), Pointer(Void) -> Void)
| | |
| | +- function (Int32, LibEvent2::EventFlags, Pointer(Void) -> Void)
| | |
| | +- function ( -> Nil)
| | |
| | +- function (Pointer(Void), Pointer(Void) -> Nil)
| | |
| | +- function (UInt64 -> Pointer(Void))
| | |
| | +- function ( -> Void)
| | |
| | +- function (Pointer(Void), Pointer(Void) -> Void)
| | |
| | +- function (Pointer(Void) -> Void)
| | |
| | +- function (Pointer(Void), Pointer(Void) -> LibUnwind::ReasonCode)
| |
| +- struct Struct (0 bytes)
| | |
| | +- struct Event::Base (8 bytes)
| | | @base : LibEvent2::EventBase (8 bytes)
| | |
| | +- struct Event::Event (16 bytes)
| | | @event : LibEvent2::Event (8 bytes)
| | | @freed : Bool (0 bytes)
| | |
| | +- struct LibC::Linger (8 bytes)
| | |
| | +- struct LibC::HostEnt (32 bytes)
| | |
| | +- struct LibC::SockAddr (16 bytes)
| | |
| | +- struct LibC::SockAddrUn (106 bytes)
| | |
| | +- struct LibC::SockAddrIn6 (28 bytes)
| | |
| | +- struct LibC::SockAddrIn (16 bytes)
| | |
| | +- struct LibC::Addrinfo (48 bytes)
| | |
| | +- struct LEBReader (8 bytes)
| | | @data : Pointer(UInt8) (8 bytes)
| | |
| | +- struct Time (8 bytes)
| | | @encoded : Int64 (8 bytes)
| | |
| | +- struct LibC::TimeZone (8 bytes)
| | |
| | +- struct LibC::DirEntry (1032 bytes)
| | |
| | +- struct File::Stat (120 bytes)
| | | @stat : LibC::Stat (120 bytes)
| | |
| | +- struct LibC::Stat (120 bytes)
| | |
| | +- struct LibC::Tms (32 bytes)
| | |
| | +- struct LibTermios::Struct (40 bytes)
| | |
| | +- struct String::ToU64Info (16 bytes)
| | | @value : UInt64 (8 bytes)
| | | @negative : Bool (0 bytes)
| | | @invalid : Bool (0 bytes)
| | |
| | +- struct Char::Reader (24 bytes)
| | | @string : String (8 bytes)
| | | @pos : Int32 (4 bytes)
| | | @current_char : Char (4 bytes)
| | | @current_char_width : Int32 (4 bytes)
| | | @end : Bool (0 bytes)
| | |
| | +- generic struct Range(B, E)
| | | |
| | | +- generic struct Range(Int32, Int32) (12 bytes)
| | | @begin : Int32 (4 bytes)
| | | @end : Int32 (4 bytes)
| | | @exclusive : Bool (0 bytes)
| | |
| | +- generic struct Slice(T)
| | | |
| | | +- generic struct Slice(Pointer(UInt8)) (16 bytes)
| | | | @pointer : Pointer(Pointer(UInt8)) (8 bytes)
| | | | @size : Int32 (4 bytes)
| | | |
| | | +- generic struct Slice(UInt8) (16 bytes)
| | | @pointer : Pointer(UInt8) (8 bytes)
| | | @size : Int32 (4 bytes)
| | |
| | +- struct CallStack (16 bytes)
| | | @callstack : Array(Pointer(Void)) (8 bytes)
| | | @backtrace : Array(String)? (8 bytes)
| | |
| | +- struct LibDL::Info (32 bytes)
| | |
| | +- struct LibUnwind::Exception (48 bytes)
| | |
| | +- struct LibC::TimeVal (16 bytes)
| | |
| | +- struct LibC::TimeSpec (16 bytes)
| |
| +- generic struct StaticArray(T, N)
| | |
| | +- generic struct StaticArray(Int8, 256) (256 bytes)
| | | @buffer : Int8 (1 bytes)
| | |
| | +- generic struct StaticArray(UInt8, 4) (4 bytes)
| | | @buffer : UInt8 (1 bytes)
| | |
| | +- generic struct StaticArray(UInt8, 65) (65 bytes)
| | | @buffer : UInt8 (1 bytes)
| | |
| | +- generic struct StaticArray(UInt32, 624) (2496 bytes)
| | | @buffer : UInt32 (4 bytes)
| | |
| | +- generic struct StaticArray(UInt32, 4) (16 bytes)
| | | @buffer : UInt32 (4 bytes)
| | |
| | +- generic struct StaticArray(UInt8, 14) (14 bytes)
| | | @buffer : UInt8 (1 bytes)
| | |
| | +- generic struct StaticArray(UInt8, 104) (104 bytes)
| | | @buffer : UInt8 (1 bytes)
| | |
| | +- generic struct StaticArray(UInt8, 1024) (1024 bytes)
| | | @buffer : UInt8 (1 bytes)
| | |
| | +- generic struct StaticArray(Int32, 2) (8 bytes)
| | | @buffer : Int32 (4 bytes)
| | |
| | +- generic struct StaticArray(Int64, 6) (48 bytes)
| | | @buffer : Int64 (8 bytes)
| | |
| | +- generic struct StaticArray(UInt8, 16) (16 bytes)
| | | @buffer : UInt8 (1 bytes)
| | |
| | +- generic struct StaticArray(Int64, 8) (64 bytes)
| | @buffer : Int64 (8 bytes)
| |
| +- tuple Tuple(T)
| | |
| | +- tuple {Exception+} (8 bytes)
| | |
| | +- tuple {String?} (8 bytes)
| | |
| | +- tuple {UInt64, Symbol} (16 bytes)
| | |
| | +- tuple {Int32, Int32} (8 bytes)
| | |
| | +- tuple {String} (8 bytes)
| | |
| | +- tuple {Int64, String} (16 bytes)
| | |
| | +- tuple {IO::FileDescriptor, IO::FileDescriptor} (16 bytes)
| | |
| | +- tuple {Signal, (Signal -> Void)} (24 bytes)
| | |
| | +- tuple {Pointer(Void), Pointer(Void)} (16 bytes)
| | |
| | +- tuple {UInt64, Int32} (16 bytes)
| | |
| | +- tuple {Int32, Int32, Int32} (12 bytes)
| |
| +- generic struct Pointer(T)
| | |
| | +- struct Pointer(Hash::Entry({UInt64, Symbol}, Bool)?)
| | |
| | +- struct Pointer((Array(Crisp::Expr) -> Crisp::Expr))
| | |
| | +- struct Pointer(Int8)
| | |
| | +- struct Pointer(Regex::MatchData)
| | |
| | +- struct Pointer(Crisp::Expr)
| | |
| | +- struct Pointer(Hash::Entry(String, (Array(Crisp::Expr) -> Crisp::Expr))?)
| | |
| | +- struct Pointer(Hash::Entry(String, Crisp::Expr)?)
| | |
| | +- struct Pointer(( -> Void))
| | |
| | +- struct Pointer(String)
| | |
| | +- struct Pointer(Hash::Entry(Signal, (Signal -> Void))?)
| | |
| | +- struct Pointer((Int32 -> Void))
| | |
| | +- struct Pointer({Pointer(Void), Pointer(Void)})
| | |
| | +- struct Pointer(( -> Nil))
| | |
| | +- struct Pointer(Hash::Entry(Int32, Channel::Buffered(Process::Status?))?)
| | |
| | +- struct Pointer(Hash::Entry(Int32, Process::Status)?)
| | |
| | +- struct Pointer(Fiber)
| | |
| | +- struct Pointer(LibC::HostEnt)
| | |
| | +- struct Pointer(Pointer(LibC::Addrinfo))
| | |
| | +- struct Pointer(LibC::Addrinfo)
| | |
| | +- struct Pointer(LibC::SockAddr)
| | |
| | +- struct Pointer({Int32, Int32, Int32})
| | |
| | +- struct Pointer(UInt32)
| | |
| | +- struct Pointer(LibC::TimeZone)
| | |
| | +- struct Pointer(LibC::DirEntry)
| | |
| | +- struct Pointer(LibC::Dir)
| | |
| | +- struct Pointer(LibC::Stat)
| | |
| | +- struct Pointer(LibC::Tms)
| | |
| | +- struct Pointer(LibTermios::Struct)
| | |
| | +- struct Pointer(Char)
| | |
| | +- struct Pointer(LibC::TimeVal)
| | |
| | +- struct Pointer(StaticArray(Int32, 2))
| | |
| | +- struct Pointer(Int32)
| | |
| | +- struct Pointer(Pointer(UInt8))
| | |
| | +- struct Pointer(UInt64)
| | |
| | +- struct Pointer(LibGC::Finalizer)
| | |
| | +- struct Pointer(LibPThread::Cond)
| | |
| | +- struct Pointer(LibPThread::MutexAttr)
| | |
| | +- struct Pointer(LibPThread::Mutex)
| | |
| | +- struct Pointer(Pointer(Void))
| | |
| | +- struct Pointer(LibPThread::Thread)
| | |
| | +- struct Pointer(LibDL::Info)
| | |
| | +- struct Pointer(UInt8)
| | |
| | +- struct Pointer(LibUnwind::Exception)
| | |
| | +- struct Pointer(Void)
| |
| +- struct Number (0 bytes)
| |
| +- struct Float (0 bytes)
| |
| +- struct Int (0 bytes)
|
+- class Reference (4 bytes)
|
+- class Crisp::Interpreter (32 bytes)
| @printer : Crisp::Printer (8 bytes)
| @evaluator : Crisp::Evaluator (8 bytes)
| @env : Crisp::Env (8 bytes)
|
+- class Crisp::Evaluator (4 bytes)
|
+- class Crisp::Env (24 bytes)
| @outer : Crisp::Env? (8 bytes)
| @data : Hash(String, Crisp::Expr) (8 bytes)
|
+- class Crisp::Reader (24 bytes)
| @tokens : Array(String) (8 bytes)
| @pos : Int32 (4 bytes)
|
+- class Crisp::Expr (48 bytes)
| @val : (Nil | String | Int32 | Bool | Crisp::List | Crisp::Symbol | Crisp::Atom | Crisp::Closure | (Array(Crisp::Expr) -> Crisp::Expr) | Crisp::HashMap | Crisp::Vector) (24 bytes)
| @is_macro : Bool ( 0 bytes)
| @meta : Crisp::Expr? ( 8 bytes)
|
+- class Crisp::Closure (48 bytes)
| @ast : Crisp::Expr ( 8 bytes)
| @params : (Crisp::List | Crisp::Vector) ( 8 bytes)
| @env : Crisp::Env ( 8 bytes)
| @fn : (Array(Crisp::Expr) -> Crisp::Expr) (16 bytes)
|
+- class Crisp::Atom (16 bytes)
| @val : Crisp::Expr (8 bytes)
|
+- class Crisp::Symbol (16 bytes)
| @str : String (8 bytes)
|
+- class Crisp::Printer (8 bytes)
| @print_readably : Bool (0 bytes)
|
+- class Event::SignalHandler (32 bytes)
| @callbacks : Hash(Signal, (Signal -> Void)) ( 8 bytes)
| @pipes : {IO::FileDescriptor, IO::FileDescriptor} (16 bytes)
|
+- class Event::SignalChildHandler (24 bytes)
| @pending : Hash(Int32, Process::Status) (8 bytes)
| @waiting : Hash(Int32, Channel::Buffered(Process::Status?)) (8 bytes)
|
+- generic class Channel(T)
| |
| +- generic class Channel::Buffered(T)
|
+- class Fiber (104 bytes)
| @cr : LibPcl::Coroutine ( 8 bytes)
| @proc : (( -> Nil) | ( -> Void)) (24 bytes)
| @stack : Pointer(Void) ( 8 bytes)
| @stack_top : Pointer(Void) ( 8 bytes)
| @stack_bottom : Pointer(Void) ( 8 bytes)
| @next_fiber : Fiber? ( 8 bytes)
| @prev_fiber : Fiber? ( 8 bytes)
| @resume_event : (Nil | Event::Event) (24 bytes)
|
+- class Regex (40 bytes)
| @options : Regex::Options (4 bytes)
| @source : String (8 bytes)
| @re : LibPCRE::Pcre (8 bytes)
| @extra : LibPCRE::PcreExtra (8 bytes)
| @captures : Int32 (4 bytes)
|
+- class Regex::MatchData (56 bytes)
| @regex : Regex (8 bytes)
| @code : LibPCRE::Pcre (8 bytes)
| @string : String (8 bytes)
| @pos : Int32 (4 bytes)
| @ovector : Pointer(Int32) (8 bytes)
| @size : Int32 (4 bytes)
|
+- class Random::MT19937 (2504 bytes)
| @mt : StaticArray(UInt32, 624) (2496 bytes)
| @mti : Int32 ( 4 bytes)
|
+- class Process::Status (8 bytes)
| @exit_status : Int32 (4 bytes)
|
+- generic class Hash(K, V)
| |
| +- generic class Hash({UInt64, Symbol}, Bool) (40 bytes)
| | @comp : Hash::StandardComparator:Module (4 bytes)
| | @buckets : Pointer(Hash::Entry({UInt64, Symbol}, Bool)?) (8 bytes)
| | @buckets_size : Int32 (4 bytes)
| | @size : Int32 (4 bytes)
| | @block : Nil (0 bytes)
| | @first : Hash::Entry({UInt64, Symbol}, Bool)? (8 bytes)
| | @last : Hash::Entry({UInt64, Symbol}, Bool)? (8 bytes)
| |
| +- generic class Hash(String, (Array(Crisp::Expr) -> Crisp::Expr)) (40 bytes)
| | @comp : Hash::StandardComparator:Module (4 bytes)
| | @buckets : Pointer(Hash::Entry(String, (Array(Crisp::Expr) -> Crisp::Expr))?) (8 bytes)
| | @buckets_size : Int32 (4 bytes)
| | @size : Int32 (4 bytes)
| | @block : Nil (0 bytes)
| | @first : Hash::Entry(String, (Array(Crisp::Expr) -> Crisp::Expr))? (8 bytes)
| | @last : Hash::Entry(String, (Array(Crisp::Expr) -> Crisp::Expr))? (8 bytes)
| |
| +- generic class Hash(String, Crisp::Expr) (40 bytes)
| | @comp : Hash::StandardComparator:Module (4 bytes)
| | @buckets : Pointer(Hash::Entry(String, Crisp::Expr)?) (8 bytes)
| | @buckets_size : Int32 (4 bytes)
| | @size : Int32 (4 bytes)
| | @block : Nil (0 bytes)
| | @first : Hash::Entry(String, Crisp::Expr)? (8 bytes)
| | @last : Hash::Entry(String, Crisp::Expr)? (8 bytes)
| |
| +- generic class Hash(Signal, (Signal -> Void)) (40 bytes)
| | @comp : Hash::StandardComparator:Module (4 bytes)
| | @buckets : Pointer(Hash::Entry(Signal, (Signal -> Void))?) (8 bytes)
| | @buckets_size : Int32 (4 bytes)
| | @size : Int32 (4 bytes)
| | @block : Nil (0 bytes)
| | @first : Hash::Entry(Signal, (Signal -> Void))? (8 bytes)
| | @last : Hash::Entry(Signal, (Signal -> Void))? (8 bytes)
| |
| +- generic class Hash(Int32, Channel::Buffered(Process::Status?)) (24 bytes)
| | @comp : Hash::StandardComparator:Module (4 bytes)
| | @buckets : Pointer(Hash::Entry(Int32, Channel::Buffered(Process::Status?))?) (8 bytes)
| | @buckets_size : Int32 (4 bytes)
| | @size : Int32 (4 bytes)
| | @block : Nil (0 bytes)
| | @first : Nil (0 bytes)
| | @last : Nil (0 bytes)
| |
| +- generic class Hash(Int32, Process::Status) (40 bytes)
| | @comp : Hash::StandardComparator:Module (4 bytes)
| | @buckets : Pointer(Hash::Entry(Int32, Process::Status)?) (8 bytes)
| | @buckets_size : Int32 (4 bytes)
| | @size : Int32 (4 bytes)
| | @block : Nil (0 bytes)
| | @first : Hash::Entry(Int32, Process::Status)? (8 bytes)
| | @last : Hash::Entry(Int32, Process::Status)? (8 bytes)
| |
| +- class Crisp::HashMap (40 bytes)
| @comp : Hash::StandardComparator:Module (4 bytes)
| @buckets : Pointer(Hash::Entry(String, Crisp::Expr)?) (8 bytes)
| @buckets_size : Int32 (4 bytes)
| @size : Int32 (4 bytes)
| @block : Nil (0 bytes)
| @first : Hash::Entry(String, Crisp::Expr)? (8 bytes)
| @last : Hash::Entry(String, Crisp::Expr)? (8 bytes)
|
+- generic class Hash::Entry(K, V)
| |
| +- generic class Hash::Entry({UInt64, Symbol}, Bool) (56 bytes)
| | @key : {UInt64, Symbol} (16 bytes)
| | @next : Hash::Entry({UInt64, Symbol}, Bool)? ( 8 bytes)
| | @value : Bool ( 0 bytes)
| | @fore : Hash::Entry({UInt64, Symbol}, Bool)? ( 8 bytes)
| | @back : Hash::Entry({UInt64, Symbol}, Bool)? ( 8 bytes)
| |
| +- generic class Hash::Entry(String, (Array(Crisp::Expr) -> Crisp::Expr)) (56 bytes)
| | @key : String ( 8 bytes)
| | @value : (Array(Crisp::Expr) -> Crisp::Expr) (16 bytes)
| | @next : Hash::Entry(String, (Array(Crisp::Expr) -> Crisp::Expr))? ( 8 bytes)
| | @fore : Hash::Entry(String, (Array(Crisp::Expr) -> Crisp::Expr))? ( 8 bytes)
| | @back : Hash::Entry(String, (Array(Crisp::Expr) -> Crisp::Expr))? ( 8 bytes)
| |
| +- generic class Hash::Entry(String, Crisp::Expr) (48 bytes)
| | @key : String (8 bytes)
| | @value : Crisp::Expr (8 bytes)
| | @next : Hash::Entry(String, Crisp::Expr)? (8 bytes)
| | @fore : Hash::Entry(String, Crisp::Expr)? (8 bytes)
| | @back : Hash::Entry(String, Crisp::Expr)? (8 bytes)
| |
| +- generic class Hash::Entry(Signal, (Signal -> Void)) (48 bytes)
| | @key : Signal ( 4 bytes)
| | @next : Hash::Entry(Signal, (Signal -> Void))? ( 8 bytes)
| | @value : (Signal -> Void) (16 bytes)
| | @back : Hash::Entry(Signal, (Signal -> Void))? ( 8 bytes)
| | @fore : Hash::Entry(Signal, (Signal -> Void))? ( 8 bytes)
| |
| +- generic class Hash::Entry(Int32, Process::Status) (40 bytes)
| @key : Int32 (4 bytes)
| @value : Process::Status (8 bytes)
| @next : Hash::Entry(Int32, Process::Status)? (8 bytes)
| @fore : Hash::Entry(Int32, Process::Status)? (8 bytes)
| @back : Hash::Entry(Int32, Process::Status)? (8 bytes)
|
+- class String::Builder (32 bytes)
| @buffer : Pointer(UInt8) (8 bytes)
| @bytesize : Int32 (4 bytes)
| @capacity : Int32 (4 bytes)
| @finished : Bool (0 bytes)
|
+- class IO::FileDescriptor (120 bytes)
| . @edge_triggerable : Bool ( 0 bytes)
| . @flush_on_newline : Bool ( 0 bytes)
| . @sync : Bool ( 0 bytes)
| . @closed : Bool ( 0 bytes)
| . @read_timed_out : Bool ( 0 bytes)
| . @write_timed_out : Bool ( 0 bytes)
| . @fd : Int32 ( 4 bytes)
| . @in_buffer_rem : Slice(UInt8) (16 bytes)
| . @out_count : Int32 ( 4 bytes)
| . @read_timeout : Nil ( 0 bytes)
| . @write_timeout : Nil ( 0 bytes)
| . @readers : Array(Fiber) ( 8 bytes)
| . @writers : Array(Fiber) ( 8 bytes)
| . @read_event : (Nil | Event::Event) (24 bytes)
| . @write_event : (Nil | Event::Event) (24 bytes)
| . @out_buffer : Pointer(UInt8)? ( 8 bytes)
| . @in_buffer : Pointer(UInt8)? ( 8 bytes)
| |
| +- class File (128 bytes)
| @path : String (8 bytes)
|
+- class Exception (32 bytes)
| . @message : String? ( 8 bytes)
| . @cause : Nil ( 0 bytes)
| . @callstack : CallStack (16 bytes)
| |
| +- class Crisp::RuntimeException (40 bytes)
| | @thrown : Crisp::Expr (8 bytes)
| |
| +- class Crisp::EvalException (32 bytes)
| |
| +- class Crisp::ParseException (32 bytes)
| |
| +- class Errno (40 bytes)
| | @errno : Int32 (4 bytes)
| |
| +- class IO::Error (32 bytes)
| |
| +- class IO::Timeout (32 bytes)
| |
| +- class DivisionByZero (32 bytes)
| |
| +- class KeyError (32 bytes)
| |
| +- class InvalidByteSequenceError (32 bytes)
| |
| +- class ArgumentError (32 bytes)
| |
| +- class IndexError (32 bytes)
|
+- generic class Array(T)
| |
| +- generic class Array(Regex::MatchData) (24 bytes)
| | @size : Int32 (4 bytes)
| | @capacity : Int32 (4 bytes)
| | @buffer : Pointer(Regex::MatchData) (8 bytes)
| |
| +- generic class Array(Crisp::Expr) (24 bytes)
| | @size : Int32 (4 bytes)
| | @capacity : Int32 (4 bytes)
| | @buffer : Pointer(Crisp::Expr) (8 bytes)
| |
| +- generic class Array(( -> Void)) (24 bytes)
| | @size : Int32 (4 bytes)
| | @capacity : Int32 (4 bytes)
| | @buffer : Pointer(( -> Void)) (8 bytes)
| |
| +- generic class Array(String) (24 bytes)
| | @size : Int32 (4 bytes)
| | @capacity : Int32 (4 bytes)
| | @buffer : Pointer(String) (8 bytes)
| |
| +- generic class Array(Int32) (24 bytes)
| | @size : Int32 (4 bytes)
| | @capacity : Int32 (4 bytes)
| | @buffer : Pointer(Int32) (8 bytes)
| |
| +- generic class Array(( -> Nil)) (24 bytes)
| | @size : Int32 (4 bytes)
| | @capacity : Int32 (4 bytes)
| | @buffer : Pointer(( -> Nil)) (8 bytes)
| |
| +- generic class Array(Fiber) (24 bytes)
| | @size : Int32 (4 bytes)
| | @capacity : Int32 (4 bytes)
| | @buffer : Pointer(Fiber) (8 bytes)
| |
| +- generic class Array(Pointer(Void)) (24 bytes)
| | @size : Int32 (4 bytes)
| | @capacity : Int32 (4 bytes)
| | @buffer : Pointer(Pointer(Void)) (8 bytes)
| |
| +- class Crisp::Vector (24 bytes)
| | @size : Int32 (4 bytes)
| | @capacity : Int32 (4 bytes)
| | @buffer : Pointer(Crisp::Expr) (8 bytes)
| |
| +- class Crisp::List (24 bytes)
| @size : Int32 (4 bytes)
| @capacity : Int32 (4 bytes)
| @buffer : Pointer(Crisp::Expr) (8 bytes)
|
+- class String (16 bytes)
@bytesize : Int32 (4 bytes)
@length : Int32 (4 bytes)
@c : UInt8 (1 bytes)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment