From a6ffac486f5306ddc1cd7a65ece1419376bc125c Mon Sep 17 00:00:00 2001 From: Georges Younes Date: Thu, 25 May 2017 11:09:03 +0100 Subject: [PATCH 1/2] add crdt size function for pure op based --- include/pure_type.hrl | 10 ++++++++++ src/pure_type.erl | 26 ++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/include/pure_type.hrl b/include/pure_type.hrl index 828c0aa..31b738c 100644 --- a/include/pure_type.hrl +++ b/include/pure_type.hrl @@ -1,3 +1,13 @@ -define(AA, keep_op1_add_op2). -define(AR, keep_op1_dont_add_op2). -define(RA, remove_op1_add_op2). + +-define(AWSET_TYPE, pure_awset). +-define(DWFLAG_TYPE, pure_dwflag). +-define(EWFLAG_TYPE, pure_ewflag). +-define(GCOUNTER_TYPE, pure_gcounter). +-define(GSET_TYPE, pure_gset). +-define(MVREGISTER_TYPE, pure_mvregister). +-define(PNCOUNTER_TYPE, pure_pncounter). +-define(RWSET_TYPE, pure_rwset). +-define(TWOPSET_TYPE, pure_twopset). \ No newline at end of file diff --git a/src/pure_type.erl b/src/pure_type.erl index 5810d47..860d1a7 100644 --- a/src/pure_type.erl +++ b/src/pure_type.erl @@ -23,6 +23,8 @@ -module(pure_type). -author("Georges Younes "). +-include("pure_type.hrl"). + -export_type([pure_type/0, crdt/0, polog/0, @@ -30,6 +32,7 @@ element/0]). -export([reset/2]). +-export([crdt_size/1]). %% Define some initial types. -type pure_type() :: pure_awset | @@ -61,3 +64,26 @@ reset(VV, {Type, {POLog, _Crystal}}) -> POLog ), {Type, {POLog1, Crystal}}. + +-define(AWSET_TYPE, pure_awset). +-define(DWFLAG_TYPE, pure_dwflag). +-define(EWFLAG_TYPE, pure_ewflag). +-define(GCOUNTER_TYPE, pure_gcounter). +-define(GSET_TYPE, pure_gset). +-define(MVREGISTER_TYPE, pure_mvregister). +-define(PNCOUNTER_TYPE, pure_pncounter). +-define(RWSET_TYPE, pure_rwset). +-define(TWOPSET_TYPE, pure_twopset). + +%% @doc Term size. +crdt_size({?AWSET_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?DWFLAG_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?EWFLAG_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?GCOUNTER_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?GSET_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?MVREGISTER_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?RWSET_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?PNCOUNTER_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?TWOPSET_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size(T) -> + erts_debug:flat_size(T). From cd64ab76e549dc718f92486598093b7dc5c8d9a8 Mon Sep 17 00:00:00 2001 From: Georges Younes Date: Thu, 25 May 2017 12:03:40 +0100 Subject: [PATCH 2/2] add fixes --- include/pure_type.hrl | 18 +++++++++--------- src/pure_type.erl | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/include/pure_type.hrl b/include/pure_type.hrl index 31b738c..c227a7e 100644 --- a/include/pure_type.hrl +++ b/include/pure_type.hrl @@ -2,12 +2,12 @@ -define(AR, keep_op1_dont_add_op2). -define(RA, remove_op1_add_op2). --define(AWSET_TYPE, pure_awset). --define(DWFLAG_TYPE, pure_dwflag). --define(EWFLAG_TYPE, pure_ewflag). --define(GCOUNTER_TYPE, pure_gcounter). --define(GSET_TYPE, pure_gset). --define(MVREGISTER_TYPE, pure_mvregister). --define(PNCOUNTER_TYPE, pure_pncounter). --define(RWSET_TYPE, pure_rwset). --define(TWOPSET_TYPE, pure_twopset). \ No newline at end of file +-define(PURE_AWSET_TYPE, pure_awset). +-define(PURE_DWFLAG_TYPE, pure_dwflag). +-define(PURE_EWFLAG_TYPE, pure_ewflag). +-define(PURE_GCOUNTER_TYPE, pure_gcounter). +-define(PURE_GSET_TYPE, pure_gset). +-define(PURE_MVREGISTER_TYPE, pure_mvregister). +-define(PURE_PNCOUNTER_TYPE, pure_pncounter). +-define(PURE_RWSET_TYPE, pure_rwset). +-define(PURE_TWOPSET_TYPE, pure_twopset). \ No newline at end of file diff --git a/src/pure_type.erl b/src/pure_type.erl index 860d1a7..eebe129 100644 --- a/src/pure_type.erl +++ b/src/pure_type.erl @@ -76,14 +76,14 @@ reset(VV, {Type, {POLog, _Crystal}}) -> -define(TWOPSET_TYPE, pure_twopset). %% @doc Term size. -crdt_size({?AWSET_TYPE, CRDT}) -> crdt_size(CRDT); -crdt_size({?DWFLAG_TYPE, CRDT}) -> crdt_size(CRDT); -crdt_size({?EWFLAG_TYPE, CRDT}) -> crdt_size(CRDT); -crdt_size({?GCOUNTER_TYPE, CRDT}) -> crdt_size(CRDT); -crdt_size({?GSET_TYPE, CRDT}) -> crdt_size(CRDT); -crdt_size({?MVREGISTER_TYPE, CRDT}) -> crdt_size(CRDT); -crdt_size({?RWSET_TYPE, CRDT}) -> crdt_size(CRDT); -crdt_size({?PNCOUNTER_TYPE, CRDT}) -> crdt_size(CRDT); -crdt_size({?TWOPSET_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?PURE_AWSET_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?PURE_DWFLAG_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?PURE_EWFLAG_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?PURE_GCOUNTER_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?PURE_GSET_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?PURE_MVREGISTER_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?PURE_RWSET_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?PURE_PNCOUNTER_TYPE, CRDT}) -> crdt_size(CRDT); +crdt_size({?PURE_TWOPSET_TYPE, CRDT}) -> crdt_size(CRDT); crdt_size(T) -> erts_debug:flat_size(T).