summaryrefslogtreecommitdiff
path: root/bos-object-id.sh
blob: 2026506a952eedf18a48aa53e3396c01c50ccd88 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!bash 
## object identity 
 
# objects are values, so they're stored in variables! 
# 
# the shape of that value is… a call to bos_invoke curry-ed on class and 
# id, so that `$my_obj the-method 1 2` is equivalent to `bos_invoke 
# TheClass $the_obj_id the-method 1 2` 
function bos-object-id/pack-self-into() {
    local class="$1"
    local self_id="$2"
    local -n result="$3"
    result="bos-dispatch/invoke $class $self_id"
}
 
# get class and object id from a $self string 
function bos-object/unpack-self-into() {
    local self="$1"
    local -n class="$2"
    local -n id="$2"
    local _
    read -r _ class id <<<"$self"
}