-module(glearray_ffi). -export([new/0, get/2, get_or_default/3, set/3, insert/3]). new() -> {}. get(Array, Index) -> case catch element(Index + 1, Array) of {'EXIT', _} -> {error, nil}; E -> {ok, E} end. get_or_default(Array, Index, Default) -> case catch element(Index + 1, Array) of {'EXIT', _} -> Default; E -> E end. set(Array, Index, Value) -> case catch setelement(Index + 1, Array, Value) of {'EXIT', _} -> {error, nil}; A -> {ok, A} end. insert(Array, Index, Value) -> case catch erlang:insert_element(Index + 1, Array, Value) of {'EXIT', _} -> {error, nil}; A -> {ok, A} end.