MCPcopy Create free account
hub / github.com/RedisGraph/RedisGraph / RG_Matrix_removeEntry_UINT64

Function RG_Matrix_removeEntry_UINT64

src/graph/rg_matrix/rg_remove_entry.c:76–154  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

74}
75
76GrB_Info RG_Matrix_removeEntry_UINT64
77(
78 RG_Matrix C, // matrix to remove entry from
79 GrB_Index i, // row index
80 GrB_Index j, // column index
81 uint64_t v, // value to remove
82 bool *entry_deleted // is entry deleted
83) {
84 ASSERT(C);
85 ASSERT(entry_deleted != NULL);
86 RG_Matrix_checkBounds(C, i, j);
87
88 uint64_t m_x;
89 uint64_t dp_x;
90 GrB_Info info;
91 GrB_Type type;
92 bool in_m = false;
93 GrB_Matrix m = RG_MATRIX_M(C);
94 GrB_Matrix dp = RG_MATRIX_DELTA_PLUS(C);
95 GrB_Matrix dm = RG_MATRIX_DELTA_MINUS(C);
96
97 *entry_deleted = false;
98
99
100#ifdef RG_DEBUG
101 info = GxB_Matrix_type(&type, m);
102 ASSERT(info == GrB_SUCCESS);
103 ASSERT(type == GrB_UINT64);
104
105 bool dm_x;
106 info = GrB_Matrix_extractElement(&dm_x, dm, i, j);
107 ASSERT(info == GrB_NO_VALUE);
108#endif
109
110 // entry should exists in either delta-plus or main
111 // locate entry
112 info = GrB_Matrix_extractElement(&m_x, m, i, j);
113 in_m = (info == GrB_SUCCESS);
114
115 //--------------------------------------------------------------------------
116 // entry exists in 'M'
117 //--------------------------------------------------------------------------
118
119 if(in_m) {
120 if(SINGLE_EDGE(m_x)) {
121 *entry_deleted = true;
122 // mark deletion in delta minus
123 info = GrB_Matrix_setElement(dm, true, i, j);
124 ASSERT(info == GrB_SUCCESS);
125 info = RG_Matrix_removeElement_BOOL(C->transposed, j, i);
126 ASSERT(info == GrB_SUCCESS)
127 RG_Matrix_setDirty(C);
128 } else {
129 info = _removeElementMultiVal(m, i, j, v);
130 ASSERT(info == GrB_SUCCESS);
131 }
132 return info;
133 }

Callers 3

Graph_DeleteEdgesFunction · 0.85
test_RGMatrix_del_entryFunction · 0.85

Calls 6

RG_Matrix_checkBoundsFunction · 0.85
GxB_Matrix_typeFunction · 0.85
RG_Matrix_setDirtyFunction · 0.85
_removeElementMultiValFunction · 0.85
GrB_Matrix_removeElementFunction · 0.85

Tested by 2

test_RGMatrix_del_entryFunction · 0.68