eigenlldb.EigenSparseMatrixChildProvider Class Reference

Public Member Functions

def __init__ (self, valobj, internal_dict)
 
def num_children (self)
 
def get_child_index (self, name)
 
def get_child_at_index (self, index)
 
def update (self)
 

Private Member Functions

def _child_name (self, outer_index, inner_index)
 

Private Attributes

 _valobj
 
 _scalar_type
 
 _scalar_size
 
 _index_type
 
 _index_size
 
 _row_major
 
 _outer_size
 
 _values
 
 _inner_indices
 
 _outer_starts
 
 _inner_nnzs
 
 _compressed
 
 _child_indices
 
 _nnz
 

Constructor & Destructor Documentation

◆ __init__()

def eigenlldb.EigenSparseMatrixChildProvider.__init__ (   self,
  valobj,
  internal_dict 
)
134  def __init__(self, valobj, internal_dict):
135  self._valobj = valobj
136  valtype = valobj.GetType().GetCanonicalType()
137  scalar_type = valtype.GetTemplateArgumentType(0)
138  if not scalar_type.IsValid():
139  # In the case that scalar_type is invalid on LLDB 9.0 on Windows with CLion
140  data = valobj.GetChildMemberWithName("m_data")
141  values = data.GetChildMemberWithName("m_values")
142  scalar_type = values.GetType().GetPointeeType()
143  self._scalar_type = scalar_type
144  self._scalar_size = scalar_type.GetByteSize()
145 
146  index_type = valtype.GetTemplateArgumentType(2)
147  if not index_type.IsValid():
148  # In the case that scalar_type is invalid on LLDB 9.0 on Windows with CLion
149  outer_starts = valobj.GetChildMemberWithName("m_outerIndex")
150  index_type = outer_starts.GetType().GetPointeeType()
151  self._index_type = index_type
152  self._index_size = index_type.GetByteSize()
153 
154  name = valtype.GetName()
155  template_begin = name.find("<")
156  template_end = name.find(">")
157  template_args = name[(template_begin + 1):template_end].split(",")
158  self._row_major = (int(template_args[1]) & 1) != 0
159 
return int(ret)+1
void split(const DoubleVector &in_vector, Vector< DoubleVector * > &out_vector_pt)
Definition: double_vector.cc:1413

Member Function Documentation

◆ _child_name()

def eigenlldb.EigenSparseMatrixChildProvider._child_name (   self,
  outer_index,
  inner_index 
)
private
230  def _child_name(self, outer_index, inner_index):
231  if self._row_major:
232  return "[{0},{1}]".format(outer_index, inner_index)
233  else:
234  return "[{1},{0}]".format(outer_index, inner_index)
std::string format(const std::string &str, const std::vector< std::string > &find, const std::vector< std::string > &replace)
Definition: openglsupport.cpp:217

References eigenlldb.EigenMatrixChildProvider._row_major, eigenlldb.EigenSparseMatrixChildProvider._row_major, and format().

◆ get_child_at_index()

def eigenlldb.EigenSparseMatrixChildProvider.get_child_at_index (   self,
  index 
)
166  def get_child_at_index(self, index):
167  if index == 0:
168  name = "rows" if self._row_major else "cols"
169  return self._valobj.GetChildMemberWithName("m_outerSize") \
170  .CreateChildAtOffset(name, 0, self._index_type)
171  elif index == 1:
172  name = "cols" if self._row_major else "rows"
173  return self._valobj.GetChildMemberWithName("m_innerSize") \
174  .CreateChildAtOffset(name, 0, self._index_type)
175  else:
176  index = index - 2
177  outer_index = bisect.bisect_right(self._child_indices, index) - 1
178  total_nnzs = self._child_indices[outer_index]
179  if self._compressed:
180  item_index = index
181  inner_index = self._inner_indices \
182  .CreateChildAtOffset("", item_index * self._index_size, self._index_type) \
183  .GetValueAsUnsigned()
184  return self._values \
185  .CreateChildAtOffset(self._child_name(outer_index, inner_index),
186  item_index * self._scalar_size,
187  self._scalar_type)
188  else:
189  index_begin = self._outer_starts \
190  .CreateChildAtOffset("", outer_index * self._index_size, self._index_type) \
191  .GetValueAsUnsigned()
192  item_index = index - total_nnzs + index_begin
193  inner_index = self._inner_indices \
194  .CreateChildAtOffset("", item_index * self._index_size, self._index_type) \
195  .GetValueAsUnsigned()
196  return self._values \
197  .CreateChildAtOffset(self._child_name(outer_index, inner_index),
198  item_index * self._scalar_size,
199  self._scalar_type)
200 

◆ get_child_index()

def eigenlldb.EigenSparseMatrixChildProvider.get_child_index (   self,
  name 
)
163  def get_child_index(self, name):
164  pass
165 

◆ num_children()

def eigenlldb.EigenSparseMatrixChildProvider.num_children (   self)
160  def num_children(self):
161  return self._nnz + 2
162 

References eigenlldb.EigenSparseMatrixChildProvider._nnz.

◆ update()

def eigenlldb.EigenSparseMatrixChildProvider.update (   self)
201  def update(self):
202  valobj = self._valobj
203  self._outer_size = valobj.GetChildMemberWithName("m_outerSize").GetValueAsUnsigned()
204  data = valobj.GetChildMemberWithName("m_data")
205  self._values = data.GetChildMemberWithName("m_values")
206  self._inner_indices = data.GetChildMemberWithName("m_indices")
207  self._outer_starts = valobj.GetChildMemberWithName("m_outerIndex")
208  self._inner_nnzs = valobj.GetChildMemberWithName("m_innerNonZeros")
209 
210  self._compressed = self._inner_nnzs.GetValueAsUnsigned() == 0
211 
212  total_nnzs = 0
213  child_indices = [0]
214  for outer_index in range(self._outer_size):
215  if self._compressed:
216  index_end = self._outer_starts \
217  .CreateChildAtOffset("", (outer_index + 1) * self._index_size, self._index_type) \
218  .GetValueAsUnsigned()
219  total_nnzs = index_end
220  child_indices.append(total_nnzs)
221  else:
222  nnzs = self._inner_nnzs \
223  .CreateChildAtOffset("", outer_index * self._index_size, self._index_type) \
224  .GetValueAsUnsigned()
225  total_nnzs = total_nnzs + nnzs
226  child_indices.append(total_nnzs)
227  self._child_indices = child_indices
228  self._nnz = total_nnzs
229 

References eigenlldb.EigenMatrixChildProvider._valobj, and eigenlldb.EigenSparseMatrixChildProvider._valobj.

Referenced by smc.smc.recursiveBayesian().

Member Data Documentation

◆ _child_indices

eigenlldb.EigenSparseMatrixChildProvider._child_indices
private

◆ _compressed

eigenlldb.EigenSparseMatrixChildProvider._compressed
private

◆ _index_size

eigenlldb.EigenSparseMatrixChildProvider._index_size
private

◆ _index_type

eigenlldb.EigenSparseMatrixChildProvider._index_type
private

◆ _inner_indices

eigenlldb.EigenSparseMatrixChildProvider._inner_indices
private

◆ _inner_nnzs

eigenlldb.EigenSparseMatrixChildProvider._inner_nnzs
private

◆ _nnz

eigenlldb.EigenSparseMatrixChildProvider._nnz
private

◆ _outer_size

eigenlldb.EigenSparseMatrixChildProvider._outer_size
private

◆ _outer_starts

eigenlldb.EigenSparseMatrixChildProvider._outer_starts
private

◆ _row_major

eigenlldb.EigenSparseMatrixChildProvider._row_major
private

◆ _scalar_size

eigenlldb.EigenSparseMatrixChildProvider._scalar_size
private

◆ _scalar_type

eigenlldb.EigenSparseMatrixChildProvider._scalar_type
private

◆ _valobj

◆ _values

eigenlldb.EigenSparseMatrixChildProvider._values
private

The documentation for this class was generated from the following file: