Merge remote-tracking branch 'origin/master' into blender2.8
[blender.git] / source / blender / makesdna / DNA_sdna_types.h
index 5726837a7230fee9682ed9e6c7006d1ebae20889..27d18e496345069ffaf4d05532012bd7c081089c 100644 (file)
@@ -1,8 +1,4 @@
-/**
- * blenlib/DNA_sdna.h (mar-2001 nzc)
- *     
- * $Id$ 
- *
+/*
  * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +13,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
  *
  * ***** END GPL LICENSE BLOCK *****
  */
-#ifndef DNA_SDNA_H
-#define DNA_SDNA_H
+/**
+ * \file DNA_sdna_types.h
+ * \ingroup DNA
+ */
+
+#ifndef __DNA_SDNA_TYPES_H__
+#define __DNA_SDNA_TYPES_H__
 
 #
 #
 typedef struct SDNA {
-       char *data;                     /* full copy of 'encoded' data */
+       const char *data;       /* full copy of 'encoded' data (when data_alloc is set, otherwise borrowed). */
        int datalen;            /* length of data */
+       bool data_alloc;
 
        int nr_names;           /* total number of struct members */
-       char **names;           /* struct member names */
+       const char **names;     /* struct member names */
 
        int pointerlen;         /* size of a pointer in bytes */
 
        int nr_types;           /* number of basic types + struct types */
-       char **types;           /* type names */
+       const char **types;     /* type names */
        short *typelens;        /* type lengths */
 
        int nr_structs;         /* number of struct types */
-       short **structs;        /* sp= structs[a] is the adress of a struct definintion
-                                  sp[0] is struct type number, sp[1] amount of members
+       short **structs;        /* sp = structs[a] is the address of a struct definition
+                            * sp[0] is struct type number, sp[1] amount of members
+                            *
+                            * (sp[2], sp[3]), (sp[4], sp[5]), .. are the member
+                            * type and name numbers respectively */
 
-                                                  (sp[2], sp[3]), (sp[4], sp[5]), .. are the member
-                                                  type and name numbers respectively */
-       
-               /* wrong place for this really, its a simple
-                * cache for findstruct_nr.
-                */
-       int lastfind;
+       struct GHash *structs_map; /* ghash for faster lookups,
+                                   * requires WITH_DNA_GHASH to be used for now */
 } SDNA;
 
 #
 #
 typedef struct BHead {
        int code, len;
-       void *old;
+       const void *old;
        int SDNAnr, nr;
 } BHead;
 #
@@ -77,14 +77,8 @@ typedef struct BHead4 {
 #
 typedef struct BHead8 {
        int code, len;
-#if defined(WIN32) && !defined(FREE_WINDOWS)
-       /* This is a compiler type! */
-       __int64 old;
-#else
-       long long old;
-#endif 
+       int64_t old;
        int SDNAnr, nr;
 } BHead8;
 
 #endif
-