Current section
Files
Jump to
Current section
Files
src/sketch/lustre/internals/sketch_global_ffi.erl
-module(sketch_global_ffi).
-export([set_stylesheet/1, set_current_stylesheet/1, get_stylesheet/0,
dismiss_current_stylesheet/0, teardown_stylesheet/1]).
create_cache(Name) ->
Exists = ets:whereis(Name),
case Exists of
undefined ->
ets:new(Name, [set, public, named_table]);
_ ->
ok
end.
set_stylesheet(Stylesheet) ->
create_cache(cache_manager),
Id = element(3, Stylesheet),
ets:insert(cache_manager, {Id, Stylesheet}),
{ok, Stylesheet}.
teardown_stylesheet(Stylesheet) ->
create_cache(cache_manager),
Id = element(3, Stylesheet),
ets:delete(cache_manager, Id),
{ok, nil}.
set_current_stylesheet(Stylesheet) ->
create_cache(view_manager),
Id = element(3, Stylesheet),
ets:insert(view_manager, {self(), Id}),
{ok, Stylesheet}.
dismiss_current_stylesheet() ->
create_cache(view_manager),
ets:delete(view_manager, self()),
{ok, nil}.
get_stylesheet() ->
case ets:lookup(view_manager, self()) of
[{_, Id}] ->
case ets:lookup(cache_manager, Id) of
[{_, Stylesheet}] ->
{ok, Stylesheet};
_ ->
{error, nil}
end;
_ ->
{error, nil}
end.