Blender V4.3
spreadsheet_column.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
6#include "DNA_space_types.h"
7
8#include "MEM_guardedalloc.h"
9
10#include "BLI_color.hh"
11#include "BLI_cpp_type.hh"
12#include "BLI_hash.hh"
15#include "BLI_string.h"
16#include "BLI_string_ref.hh"
17
18#include "BKE_geometry_set.hh"
19#include "BKE_instances.hh"
20
21#include "spreadsheet_column.hh"
23
25
27{
28 if (type.is<bool>()) {
30 }
31 if (type.is<int8_t>()) {
33 }
34 if (type.is<int>()) {
36 }
37 if (type.is<int2>()) {
39 }
40 if (type.is<float>()) {
42 }
43 if (type.is<float2>()) {
45 }
46 if (type.is<float3>()) {
48 }
49 if (type.is<ColorGeometry4f>()) {
51 }
52 if (type.is<std::string>() || type.is<MStringProperty>()) {
54 }
55 if (type.is<bke::InstanceReference>()) {
57 }
58 if (type.is<ColorGeometry4b>()) {
60 }
61 if (type.is<math::Quaternion>()) {
63 }
64 if (type.is<float4x4>()) {
66 }
67
69}
70
72{
73 SpreadsheetColumnID *column_id = MEM_cnew<SpreadsheetColumnID>(__func__);
74 return column_id;
75}
76
78{
80 new_column_id->name = BLI_strdup(src_column_id->name);
81 return new_column_id;
82}
83
85{
86 if (column_id->name != nullptr) {
87 MEM_freeN(column_id->name);
88 }
89 MEM_freeN(column_id);
90}
91
93{
94 SpreadsheetColumn *column = MEM_cnew<SpreadsheetColumn>(__func__);
95 column->id = column_id;
96 return column;
97}
98
100 const eSpreadsheetColumnValueType data_type,
101 const StringRefNull display_name)
102{
103 column->data_type = data_type;
105 column->display_name = BLI_strdup(display_name.c_str());
106}
107
109{
110 SpreadsheetColumnID *new_column_id = spreadsheet_column_id_copy(src_column->id);
111 SpreadsheetColumn *new_column = spreadsheet_column_new(new_column_id);
112 if (src_column->display_name != nullptr) {
113 new_column->display_name = BLI_strdup(src_column->display_name);
114 }
115 return new_column;
116}
117
119{
122 MEM_freeN(column);
123}
124
125} // namespace blender::ed::spreadsheet
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
Definition string.c:40
eSpreadsheetColumnValueType
@ SPREADSHEET_VALUE_TYPE_INT8
@ SPREADSHEET_VALUE_TYPE_FLOAT
@ SPREADSHEET_VALUE_TYPE_INT32_2D
@ SPREADSHEET_VALUE_TYPE_BYTE_COLOR
@ SPREADSHEET_VALUE_TYPE_UNKNOWN
@ SPREADSHEET_VALUE_TYPE_FLOAT3
@ SPREADSHEET_VALUE_TYPE_BOOL
@ SPREADSHEET_VALUE_TYPE_STRING
@ SPREADSHEET_VALUE_TYPE_QUATERNION
@ SPREADSHEET_VALUE_TYPE_FLOAT4X4
@ SPREADSHEET_VALUE_TYPE_INT32
@ SPREADSHEET_VALUE_TYPE_FLOAT2
@ SPREADSHEET_VALUE_TYPE_COLOR
@ SPREADSHEET_VALUE_TYPE_INSTANCES
Read Guarded memory(de)allocation.
#define MEM_SAFE_FREE(v)
constexpr const char * c_str() const
void MEM_freeN(void *vmemh)
Definition mallocn.cc:105
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