GPencil: Fix unreported unable to deselect when masking is OFF
[blender.git] / source / blender / makesdna / DNA_sdna_types.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  */
19 /** \file
20  * \ingroup DNA
21  */
22
23 #ifndef __DNA_SDNA_TYPES_H__
24 #define __DNA_SDNA_TYPES_H__
25
26 struct MemArena;
27
28 #
29 #
30 typedef struct SDNA {
31   /** Full copy of 'encoded' data (when data_alloc is set, otherwise borrowed). */
32   const char *data;
33   /** Length of data. */
34   int data_len;
35   bool data_alloc;
36
37   /** Total number of struct members. */
38   int names_len, names_len_alloc;
39   /** Struct member names. */
40   const char **names;
41   /** Result of #DNA_elem_array_size (aligned with #names). */
42   short *names_array_len;
43
44   /** Size of a pointer in bytes. */
45   int pointer_size;
46
47   /** Type names. */
48   const char **types;
49   /** Number of basic types + struct types. */
50   int types_len;
51
52   /** Type lengths. */
53   short *types_size;
54
55   /**
56    * sp = structs[a] is the address of a struct definition
57    * sp[0] is struct type number, sp[1] amount of members
58    *
59    * (sp[2], sp[3]), (sp[4], sp[5]), .. are the member
60    * type and name numbers respectively.
61    */
62   short **structs;
63   /** Number of struct types. */
64   int structs_len;
65
66   /** #GHash for faster lookups, requires WITH_DNA_GHASH to be used for now. */
67   struct GHash *structs_map;
68
69   /** Temporary memory currently only used for version patching DNA. */
70   struct MemArena *mem_arena;
71   /** Runtime versions of data stored in DNA, lazy initialized,
72    * only different when renaming is done. */
73   struct {
74     /** Aligned with #SDNA.names, same pointers when unchanged. */
75     const char **names;
76     /** Aligned with #SDNA.types, same pointers when unchanged. */
77     const char **types;
78     /** A version of #SDNA.structs_map that uses #SDNA.alias.types for it's keys. */
79     struct GHash *structs_map;
80   } alias;
81 } SDNA;
82
83 #
84 #
85 typedef struct BHead {
86   int code, len;
87   const void *old;
88   int SDNAnr, nr;
89 } BHead;
90 #
91 #
92 typedef struct BHead4 {
93   int code, len;
94   int old;
95   int SDNAnr, nr;
96 } BHead4;
97 #
98 #
99 typedef struct BHead8 {
100   int code, len;
101   int64_t old;
102   int SDNAnr, nr;
103 } BHead8;
104
105 #endif