Blender  V3.3
spreadsheet_column.cc
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #include "DNA_space_types.h"
4 
5 #include "MEM_guardedalloc.h"
6 
7 #include "BLI_color.hh"
8 #include "BLI_cpp_type.hh"
9 #include "BLI_hash.hh"
10 #include "BLI_math_vec_types.hh"
11 #include "BLI_string.h"
12 #include "BLI_string_ref.hh"
13 
14 #include "BKE_geometry_set.hh"
15 
16 #include "spreadsheet_column.hh"
18 
19 namespace blender::ed::spreadsheet {
20 
22 {
23  if (type.is<bool>()) {
25  }
26  if (type.is<int8_t>()) {
28  }
29  if (type.is<int>()) {
31  }
32  if (type.is<float>()) {
34  }
35  if (type.is<float2>()) {
37  }
38  if (type.is<float3>()) {
40  }
41  if (type.is<ColorGeometry4f>()) {
43  }
44  if (type.is<std::string>()) {
46  }
47  if (type.is<InstanceReference>()) {
49  }
50  if (type.is<ColorGeometry4b>()) {
52  }
53 
55 }
56 
58 {
59  SpreadsheetColumnID *column_id = MEM_cnew<SpreadsheetColumnID>(__func__);
60  return column_id;
61 }
62 
64 {
66  new_column_id->name = BLI_strdup(src_column_id->name);
67  return new_column_id;
68 }
69 
71 {
72  if (column_id->name != nullptr) {
73  MEM_freeN(column_id->name);
74  }
75  MEM_freeN(column_id);
76 }
77 
79 {
80  SpreadsheetColumn *column = MEM_cnew<SpreadsheetColumn>(__func__);
81  column->id = column_id;
82  return column;
83 }
84 
86  const eSpreadsheetColumnValueType data_type,
87  const StringRefNull display_name)
88 {
89  column->data_type = data_type;
90  MEM_SAFE_FREE(column->display_name);
91  column->display_name = BLI_strdup(display_name.c_str());
92 }
93 
95 {
96  SpreadsheetColumnID *new_column_id = spreadsheet_column_id_copy(src_column->id);
97  SpreadsheetColumn *new_column = spreadsheet_column_new(new_column_id);
98  if (src_column->display_name != nullptr) {
99  new_column->display_name = BLI_strdup(src_column->display_name);
100  }
101  return new_column;
102 }
103 
105 {
107  MEM_SAFE_FREE(column->display_name);
108  MEM_freeN(column);
109 }
110 
111 } // namespace blender::ed::spreadsheet
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
Definition: string.c:42
eSpreadsheetColumnValueType
@ SPREADSHEET_VALUE_TYPE_INT8
@ SPREADSHEET_VALUE_TYPE_FLOAT
@ SPREADSHEET_VALUE_TYPE_BYTE_COLOR
@ SPREADSHEET_VALUE_TYPE_UNKNOWN
@ SPREADSHEET_VALUE_TYPE_FLOAT3
@ SPREADSHEET_VALUE_TYPE_BOOL
@ SPREADSHEET_VALUE_TYPE_STRING
@ SPREADSHEET_VALUE_TYPE_INT32
@ SPREADSHEET_VALUE_TYPE_FLOAT2
@ SPREADSHEET_VALUE_TYPE_COLOR
@ SPREADSHEET_VALUE_TYPE_INSTANCES
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Read Guarded memory(de)allocation.
#define MEM_SAFE_FREE(v)
constexpr const char * c_str() const
void(* MEM_freeN)(void *vmemh)
Definition: mallocn.c:27
SpreadsheetColumn * spreadsheet_column_new(SpreadsheetColumnID *column_id)
SpreadsheetColumnID * spreadsheet_column_id_new()
void spreadsheet_column_free(SpreadsheetColumn *column)
eSpreadsheetColumnValueType cpp_type_to_column_type(const CPPType &type)
void spreadsheet_column_id_free(SpreadsheetColumnID *column_id)
void spreadsheet_column_assign_runtime_data(SpreadsheetColumn *column, const eSpreadsheetColumnValueType data_type, const StringRefNull display_name)
SpreadsheetColumnID * spreadsheet_column_id_copy(const SpreadsheetColumnID *src_column_id)
SpreadsheetColumn * spreadsheet_column_copy(const SpreadsheetColumn *src_column)
signed char int8_t
Definition: stdint.h:75
SpreadsheetColumnID * id