2011-02-17 06:57:18 +01:00
|
|
|
/*
|
2008-04-17 00:40:48 +02:00
|
|
|
* ***** BEGIN GPL LICENSE BLOCK *****
|
2006-11-11 17:38:37 +01:00
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 2
|
2008-04-17 00:40:48 +02:00
|
|
|
* of the License, or (at your option) any later version.
|
2006-11-11 17:38:37 +01:00
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software Foundation,
|
2010-02-12 14:34:04 +01:00
|
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
2006-11-11 17:38:37 +01:00
|
|
|
*
|
|
|
|
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* The Original Code is: all of this file.
|
|
|
|
*
|
|
|
|
* Contributor(s): none yet.
|
|
|
|
*
|
2008-04-17 00:40:48 +02:00
|
|
|
* ***** END GPL LICENSE BLOCK *****
|
2006-11-11 17:38:37 +01:00
|
|
|
*/
|
2008-07-04 19:59:16 +02:00
|
|
|
|
2011-02-17 21:48:12 +01:00
|
|
|
/** \file DNA_customdata_types.h
|
2011-02-17 06:57:18 +01:00
|
|
|
* \ingroup DNA
|
2013-03-02 08:27:19 +01:00
|
|
|
*
|
|
|
|
* Used for custom mesh data types (stored per vert/edge/loop/face)
|
2011-02-17 06:57:18 +01:00
|
|
|
*/
|
|
|
|
|
2012-02-17 19:59:41 +01:00
|
|
|
#ifndef __DNA_CUSTOMDATA_TYPES_H__
|
|
|
|
#define __DNA_CUSTOMDATA_TYPES_H__
|
2006-11-11 17:38:37 +01:00
|
|
|
|
2010-10-05 02:05:14 +02:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2011-02-17 06:57:18 +01:00
|
|
|
/** descriptor and storage for a custom data layer */
|
2006-11-11 17:38:37 +01:00
|
|
|
typedef struct CustomDataLayer {
|
2019-01-07 12:19:13 +01:00
|
|
|
/** Type of data in layer. */
|
|
|
|
int type;
|
|
|
|
/** In editmode, offset of layer in block. */
|
|
|
|
int offset;
|
|
|
|
/** General purpose flag. */
|
|
|
|
int flag;
|
|
|
|
/** Number of the active layer of this type. */
|
|
|
|
int active;
|
|
|
|
/** Number of the layer to rende.r*/
|
|
|
|
int active_rnd;
|
|
|
|
/** Number of the layer to rende.r*/
|
|
|
|
int active_clone;
|
|
|
|
/** Number of the layer to rende.r*/
|
|
|
|
int active_mask;
|
|
|
|
/** Shape keyblock unique id referenc.e*/
|
|
|
|
int uid;
|
|
|
|
/** Layer name, MAX_CUSTOMDATA_LAYER_NAME. */
|
|
|
|
char name[64];
|
|
|
|
/** Layer data. */
|
|
|
|
void *data;
|
2006-11-11 17:38:37 +01:00
|
|
|
} CustomDataLayer;
|
|
|
|
|
2012-01-11 09:51:06 +01:00
|
|
|
#define MAX_CUSTOMDATA_LAYER_NAME 64
|
|
|
|
|
2009-11-25 15:27:50 +01:00
|
|
|
typedef struct CustomDataExternal {
|
2019-01-07 12:19:13 +01:00
|
|
|
/** FILE_MAX. */
|
|
|
|
char filename[1024];
|
2009-11-25 15:27:50 +01:00
|
|
|
} CustomDataExternal;
|
|
|
|
|
2011-02-17 06:57:18 +01:00
|
|
|
/** structure which stores custom element data associated with mesh elements
|
2012-03-08 05:12:11 +01:00
|
|
|
* (vertices, edges or faces). The custom data is organized into a series of
|
2006-12-12 22:29:09 +01:00
|
|
|
* layers, each with a data type (e.g. MTFace, MDeformVert, etc.). */
|
2006-11-11 17:38:37 +01:00
|
|
|
typedef struct CustomData {
|
2019-01-07 12:19:13 +01:00
|
|
|
/** CustomDataLayers, ordered by type. */
|
|
|
|
CustomDataLayer *layers;
|
|
|
|
/**
|
|
|
|
* runtime only! - maps types to indices of first layer of that type,
|
|
|
|
* MUST be >= CD_NUMTYPES, but we cant use a define here.
|
|
|
|
* Correct size is ensured in CustomData_update_typemap assert().
|
|
|
|
*/
|
|
|
|
int typemap[42];
|
Add Custom Loop Normals.
This is the core code for it, tools (datatransfer and modifier) will come in next commits).
RNA api is already there, though.
See the code for details, but basically, we define, for each 'smooth fan'
(which is a set of adjacent loops around a same vertex that are smooth, i.e. have a single same normal),
a 'loop normal space' (or lnor space), using auto-computed normal and relevant edges, and store
custom normal as two angular factors inside that space. This allows to have custom normals
'following' deformations of the geometry, and to only save two shorts per loop in new clnor CDLayer.
Normal manipulation (editing, mixing, interpolating, etc.) shall always happen with plain 3D vectors normals,
and be converted back into storage format at the end.
Clnor computation has also been threaded (at least for Mesh case, not for BMesh), since the process can
be rather heavy with high poly meshes.
Also, bumping subversion, and fix mess in 2.70 versioning code.
2015-02-05 14:24:48 +01:00
|
|
|
int pad_i1;
|
2019-01-07 12:19:13 +01:00
|
|
|
/** Number of layers, size of layers array. */
|
|
|
|
int totlayer, maxlayer;
|
|
|
|
/** In editmode, total size of all data layers. */
|
|
|
|
int totsize;
|
|
|
|
/** (BMesh Only): Memory pool for allocation of blocks. */
|
|
|
|
struct BLI_mempool *pool;
|
|
|
|
/** External file storing customdata layers. */
|
|
|
|
CustomDataExternal *external;
|
2006-11-11 17:38:37 +01:00
|
|
|
} CustomData;
|
|
|
|
|
Added custom vertex/edge/face data for meshes:
All data layers, including MVert/MEdge/MFace, are now managed as custom
data layers. The pointers like Mesh.mvert, Mesh.dvert or Mesh.mcol are
still used of course, but allocating, copying or freeing these arrays
should be done through the CustomData API.
Work in progress documentation on this is here:
http://mediawiki.blender.org/index.php/BlenderDev/BlenderArchitecture/CustomData
Replaced TFace by MTFace:
This is the same struct, except that it does not contain color, that now
always stays separated in MCol. This was not a good design decision to
begin with, and it is needed for adding multiple color layers later. Note
that this does mean older Blender versions will not be able to read UV
coordinates from the next release, due to an SDNA limitation.
Removed DispListMesh:
This now fully replaced by DerivedMesh. To provide access to arrays of
vertices, edges and faces, like DispListMesh does. The semantics of the
DerivedMesh.getVertArray() and similar functions were changed to return
a pointer to an array if one exists, or otherwise allocate a temporary
one. On releasing the DerivedMesh, this temporary array will be removed
automatically.
Removed ssDM and meshDM DerivedMesh backends:
The ssDM backend was for DispListMesh, so that became obsolete automatically.
The meshDM backend was replaced by the custom data backend, that now figures
out which layers need to be modified, and only duplicates those.
This changes code in many places, and overall removes 2514 lines of code.
So, there's a good chance this might break some stuff, although I've been
testing it for a few days now. The good news is, adding multiple color and
uv layers should now become easy.
2006-11-20 05:28:02 +01:00
|
|
|
/* CustomData.type */
|
2015-01-24 13:25:49 +01:00
|
|
|
typedef enum CustomDataType {
|
2016-05-22 18:24:53 +02:00
|
|
|
/* Used by GLSL attributes in the cases when we need a delayed CD type
|
|
|
|
* assignment (in the cases when we don't know in advance which layer
|
|
|
|
* we are addressing).
|
|
|
|
*/
|
|
|
|
CD_AUTO_FROM_NAME = -1,
|
|
|
|
|
2013-09-10 15:13:04 +02:00
|
|
|
CD_MVERT = 0,
|
2015-07-10 08:47:39 +02:00
|
|
|
#ifdef DNA_DEPRECATED
|
2013-09-10 15:13:04 +02:00
|
|
|
CD_MSTICKY = 1, /* DEPRECATED */
|
2015-07-10 08:47:39 +02:00
|
|
|
#endif
|
2013-09-10 15:13:04 +02:00
|
|
|
CD_MDEFORMVERT = 2,
|
|
|
|
CD_MEDGE = 3,
|
|
|
|
CD_MFACE = 4,
|
|
|
|
CD_MTFACE = 5,
|
|
|
|
CD_MCOL = 6,
|
|
|
|
CD_ORIGINDEX = 7,
|
|
|
|
CD_NORMAL = 8,
|
2017-05-30 09:58:24 +02:00
|
|
|
CD_FACEMAP = 9, /* exclusive face group, each face can only be part of one */
|
2013-09-10 15:13:04 +02:00
|
|
|
CD_PROP_FLT = 10,
|
|
|
|
CD_PROP_INT = 11,
|
|
|
|
CD_PROP_STR = 12,
|
|
|
|
CD_ORIGSPACE = 13, /* for modifier stack face location mapping */
|
|
|
|
CD_ORCO = 14,
|
2017-05-25 07:11:00 +02:00
|
|
|
/* CD_MTEXPOLY = 15, */ /* deprecated */
|
2013-09-10 15:13:04 +02:00
|
|
|
CD_MLOOPUV = 16,
|
|
|
|
CD_MLOOPCOL = 17,
|
|
|
|
CD_TANGENT = 18,
|
|
|
|
CD_MDISPS = 19,
|
|
|
|
CD_PREVIEW_MCOL = 20, /* for displaying weightpaint colors */
|
2015-07-10 08:47:39 +02:00
|
|
|
/* CD_ID_MCOL = 21, */
|
2015-07-16 19:36:03 +02:00
|
|
|
CD_TEXTURE_MLOOPCOL = 22,
|
2013-09-10 15:13:04 +02:00
|
|
|
CD_CLOTH_ORCO = 23,
|
|
|
|
CD_RECAST = 24,
|
2011-12-28 14:11:46 +01:00
|
|
|
|
|
|
|
/* BMESH ONLY START */
|
2013-09-10 15:13:04 +02:00
|
|
|
CD_MPOLY = 25,
|
|
|
|
CD_MLOOP = 26,
|
|
|
|
CD_SHAPE_KEYINDEX = 27,
|
|
|
|
CD_SHAPEKEY = 28,
|
|
|
|
CD_BWEIGHT = 29,
|
|
|
|
CD_CREASE = 30,
|
|
|
|
CD_ORIGSPACE_MLOOP = 31,
|
|
|
|
CD_PREVIEW_MLOOPCOL = 32,
|
|
|
|
CD_BM_ELEM_PYPTR = 33,
|
2011-12-28 14:11:46 +01:00
|
|
|
/* BMESH ONLY END */
|
|
|
|
|
2013-09-10 15:13:04 +02:00
|
|
|
CD_PAINT_MASK = 34,
|
|
|
|
CD_GRID_PAINT_MASK = 35,
|
|
|
|
CD_MVERT_SKIN = 36,
|
|
|
|
CD_FREESTYLE_EDGE = 37,
|
|
|
|
CD_FREESTYLE_FACE = 38,
|
2014-01-11 11:31:44 +01:00
|
|
|
CD_MLOOPTANGENT = 39,
|
2014-04-13 12:18:51 +02:00
|
|
|
CD_TESSLOOPNORMAL = 40,
|
Add Custom Loop Normals.
This is the core code for it, tools (datatransfer and modifier) will come in next commits).
RNA api is already there, though.
See the code for details, but basically, we define, for each 'smooth fan'
(which is a set of adjacent loops around a same vertex that are smooth, i.e. have a single same normal),
a 'loop normal space' (or lnor space), using auto-computed normal and relevant edges, and store
custom normal as two angular factors inside that space. This allows to have custom normals
'following' deformations of the geometry, and to only save two shorts per loop in new clnor CDLayer.
Normal manipulation (editing, mixing, interpolating, etc.) shall always happen with plain 3D vectors normals,
and be converted back into storage format at the end.
Clnor computation has also been threaded (at least for Mesh case, not for BMesh), since the process can
be rather heavy with high poly meshes.
Also, bumping subversion, and fix mess in 2.70 versioning code.
2015-02-05 14:24:48 +01:00
|
|
|
CD_CUSTOMLOOPNORMAL = 41,
|
2014-04-16 04:31:02 +02:00
|
|
|
|
Add Custom Loop Normals.
This is the core code for it, tools (datatransfer and modifier) will come in next commits).
RNA api is already there, though.
See the code for details, but basically, we define, for each 'smooth fan'
(which is a set of adjacent loops around a same vertex that are smooth, i.e. have a single same normal),
a 'loop normal space' (or lnor space), using auto-computed normal and relevant edges, and store
custom normal as two angular factors inside that space. This allows to have custom normals
'following' deformations of the geometry, and to only save two shorts per loop in new clnor CDLayer.
Normal manipulation (editing, mixing, interpolating, etc.) shall always happen with plain 3D vectors normals,
and be converted back into storage format at the end.
Clnor computation has also been threaded (at least for Mesh case, not for BMesh), since the process can
be rather heavy with high poly meshes.
Also, bumping subversion, and fix mess in 2.70 versioning code.
2015-02-05 14:24:48 +01:00
|
|
|
CD_NUMTYPES = 42
|
2015-01-24 13:25:49 +01:00
|
|
|
} CustomDataType;
|
Added custom vertex/edge/face data for meshes:
All data layers, including MVert/MEdge/MFace, are now managed as custom
data layers. The pointers like Mesh.mvert, Mesh.dvert or Mesh.mcol are
still used of course, but allocating, copying or freeing these arrays
should be done through the CustomData API.
Work in progress documentation on this is here:
http://mediawiki.blender.org/index.php/BlenderDev/BlenderArchitecture/CustomData
Replaced TFace by MTFace:
This is the same struct, except that it does not contain color, that now
always stays separated in MCol. This was not a good design decision to
begin with, and it is needed for adding multiple color layers later. Note
that this does mean older Blender versions will not be able to read UV
coordinates from the next release, due to an SDNA limitation.
Removed DispListMesh:
This now fully replaced by DerivedMesh. To provide access to arrays of
vertices, edges and faces, like DispListMesh does. The semantics of the
DerivedMesh.getVertArray() and similar functions were changed to return
a pointer to an array if one exists, or otherwise allocate a temporary
one. On releasing the DerivedMesh, this temporary array will be removed
automatically.
Removed ssDM and meshDM DerivedMesh backends:
The ssDM backend was for DispListMesh, so that became obsolete automatically.
The meshDM backend was replaced by the custom data backend, that now figures
out which layers need to be modified, and only duplicates those.
This changes code in many places, and overall removes 2514 lines of code.
So, there's a good chance this might break some stuff, although I've been
testing it for a few days now. The good news is, adding multiple color and
uv layers should now become easy.
2006-11-20 05:28:02 +01:00
|
|
|
|
2006-12-05 18:42:03 +01:00
|
|
|
/* Bits for CustomDataMask */
|
2013-09-12 22:43:29 +02:00
|
|
|
#define CD_MASK_MVERT (1 << CD_MVERT)
|
2015-07-10 08:47:39 +02:00
|
|
|
// #define CD_MASK_MSTICKY (1 << CD_MSTICKY) /* DEPRECATED */
|
2013-09-12 22:43:29 +02:00
|
|
|
#define CD_MASK_MDEFORMVERT (1 << CD_MDEFORMVERT)
|
|
|
|
#define CD_MASK_MEDGE (1 << CD_MEDGE)
|
|
|
|
#define CD_MASK_MFACE (1 << CD_MFACE)
|
|
|
|
#define CD_MASK_MTFACE (1 << CD_MTFACE)
|
|
|
|
#define CD_MASK_MCOL (1 << CD_MCOL)
|
|
|
|
#define CD_MASK_ORIGINDEX (1 << CD_ORIGINDEX)
|
|
|
|
#define CD_MASK_NORMAL (1 << CD_NORMAL)
|
2017-05-30 09:58:24 +02:00
|
|
|
#define CD_MASK_FACEMAP (1 << CD_FACEMAP)
|
2013-09-12 22:43:29 +02:00
|
|
|
#define CD_MASK_PROP_FLT (1 << CD_PROP_FLT)
|
|
|
|
#define CD_MASK_PROP_INT (1 << CD_PROP_INT)
|
|
|
|
#define CD_MASK_PROP_STR (1 << CD_PROP_STR)
|
|
|
|
#define CD_MASK_ORIGSPACE (1 << CD_ORIGSPACE)
|
|
|
|
#define CD_MASK_ORCO (1 << CD_ORCO)
|
2017-05-25 07:11:00 +02:00
|
|
|
// #define CD_MASK_MTEXPOLY (1 << CD_MTEXPOLY) /* DEPRECATED */
|
2013-09-12 22:43:29 +02:00
|
|
|
#define CD_MASK_MLOOPUV (1 << CD_MLOOPUV)
|
|
|
|
#define CD_MASK_MLOOPCOL (1 << CD_MLOOPCOL)
|
|
|
|
#define CD_MASK_TANGENT (1 << CD_TANGENT)
|
|
|
|
#define CD_MASK_MDISPS (1 << CD_MDISPS)
|
|
|
|
#define CD_MASK_PREVIEW_MCOL (1 << CD_PREVIEW_MCOL)
|
|
|
|
#define CD_MASK_CLOTH_ORCO (1 << CD_CLOTH_ORCO)
|
|
|
|
#define CD_MASK_RECAST (1 << CD_RECAST)
|
2011-12-28 14:11:46 +01:00
|
|
|
|
|
|
|
/* BMESH ONLY START */
|
2013-09-12 22:43:29 +02:00
|
|
|
#define CD_MASK_MPOLY (1 << CD_MPOLY)
|
|
|
|
#define CD_MASK_MLOOP (1 << CD_MLOOP)
|
|
|
|
#define CD_MASK_SHAPE_KEYINDEX (1 << CD_SHAPE_KEYINDEX)
|
|
|
|
#define CD_MASK_SHAPEKEY (1 << CD_SHAPEKEY)
|
|
|
|
#define CD_MASK_BWEIGHT (1 << CD_BWEIGHT)
|
|
|
|
#define CD_MASK_CREASE (1 << CD_CREASE)
|
|
|
|
#define CD_MASK_ORIGSPACE_MLOOP (1LL << CD_ORIGSPACE_MLOOP)
|
|
|
|
#define CD_MASK_PREVIEW_MLOOPCOL (1LL << CD_PREVIEW_MLOOPCOL)
|
|
|
|
#define CD_MASK_BM_ELEM_PYPTR (1LL << CD_BM_ELEM_PYPTR)
|
2011-12-28 14:11:46 +01:00
|
|
|
/* BMESH ONLY END */
|
2006-12-05 18:42:03 +01:00
|
|
|
|
2013-09-12 22:43:29 +02:00
|
|
|
#define CD_MASK_PAINT_MASK (1LL << CD_PAINT_MASK)
|
|
|
|
#define CD_MASK_GRID_PAINT_MASK (1LL << CD_GRID_PAINT_MASK)
|
|
|
|
#define CD_MASK_MVERT_SKIN (1LL << CD_MVERT_SKIN)
|
|
|
|
#define CD_MASK_FREESTYLE_EDGE (1LL << CD_FREESTYLE_EDGE)
|
|
|
|
#define CD_MASK_FREESTYLE_FACE (1LL << CD_FREESTYLE_FACE)
|
2014-04-13 12:18:51 +02:00
|
|
|
#define CD_MASK_MLOOPTANGENT (1LL << CD_MLOOPTANGENT)
|
|
|
|
#define CD_MASK_TESSLOOPNORMAL (1LL << CD_TESSLOOPNORMAL)
|
Add Custom Loop Normals.
This is the core code for it, tools (datatransfer and modifier) will come in next commits).
RNA api is already there, though.
See the code for details, but basically, we define, for each 'smooth fan'
(which is a set of adjacent loops around a same vertex that are smooth, i.e. have a single same normal),
a 'loop normal space' (or lnor space), using auto-computed normal and relevant edges, and store
custom normal as two angular factors inside that space. This allows to have custom normals
'following' deformations of the geometry, and to only save two shorts per loop in new clnor CDLayer.
Normal manipulation (editing, mixing, interpolating, etc.) shall always happen with plain 3D vectors normals,
and be converted back into storage format at the end.
Clnor computation has also been threaded (at least for Mesh case, not for BMesh), since the process can
be rather heavy with high poly meshes.
Also, bumping subversion, and fix mess in 2.70 versioning code.
2015-02-05 14:24:48 +01:00
|
|
|
#define CD_MASK_CUSTOMLOOPNORMAL (1LL << CD_CUSTOMLOOPNORMAL)
|
2012-05-10 22:33:24 +02:00
|
|
|
|
Added custom vertex/edge/face data for meshes:
All data layers, including MVert/MEdge/MFace, are now managed as custom
data layers. The pointers like Mesh.mvert, Mesh.dvert or Mesh.mcol are
still used of course, but allocating, copying or freeing these arrays
should be done through the CustomData API.
Work in progress documentation on this is here:
http://mediawiki.blender.org/index.php/BlenderDev/BlenderArchitecture/CustomData
Replaced TFace by MTFace:
This is the same struct, except that it does not contain color, that now
always stays separated in MCol. This was not a good design decision to
begin with, and it is needed for adding multiple color layers later. Note
that this does mean older Blender versions will not be able to read UV
coordinates from the next release, due to an SDNA limitation.
Removed DispListMesh:
This now fully replaced by DerivedMesh. To provide access to arrays of
vertices, edges and faces, like DispListMesh does. The semantics of the
DerivedMesh.getVertArray() and similar functions were changed to return
a pointer to an array if one exists, or otherwise allocate a temporary
one. On releasing the DerivedMesh, this temporary array will be removed
automatically.
Removed ssDM and meshDM DerivedMesh backends:
The ssDM backend was for DispListMesh, so that became obsolete automatically.
The meshDM backend was replaced by the custom data backend, that now figures
out which layers need to be modified, and only duplicates those.
This changes code in many places, and overall removes 2514 lines of code.
So, there's a good chance this might break some stuff, although I've been
testing it for a few days now. The good news is, adding multiple color and
uv layers should now become easy.
2006-11-20 05:28:02 +01:00
|
|
|
/* CustomData.flag */
|
2013-09-10 15:13:04 +02:00
|
|
|
enum {
|
|
|
|
/* Indicates layer should not be copied by CustomData_from_template or CustomData_copy_data */
|
|
|
|
CD_FLAG_NOCOPY = (1 << 0),
|
|
|
|
/* Indicates layer should not be freed (for layers backed by external data) */
|
|
|
|
CD_FLAG_NOFREE = (1 << 1),
|
|
|
|
/* Indicates the layer is only temporary, also implies no copy */
|
|
|
|
CD_FLAG_TEMPORARY = ((1 << 2) | CD_FLAG_NOCOPY),
|
|
|
|
/* Indicates the layer is stored in an external file */
|
|
|
|
CD_FLAG_EXTERNAL = (1 << 3),
|
|
|
|
/* Indicates external data is read into memory */
|
|
|
|
CD_FLAG_IN_MEMORY = (1 << 4),
|
|
|
|
};
|
2006-11-11 17:38:37 +01:00
|
|
|
|
2006-12-21 14:47:27 +01:00
|
|
|
/* Limits */
|
2013-09-10 15:13:04 +02:00
|
|
|
#define MAX_MTFACE 8
|
|
|
|
#define MAX_MCOL 8
|
2006-12-21 14:47:27 +01:00
|
|
|
|
2014-04-16 04:31:02 +02:00
|
|
|
#define DYNTOPO_NODE_NONE -1
|
|
|
|
|
2015-07-21 12:02:11 +02:00
|
|
|
#define CD_TEMP_CHUNK_SIZE 128
|
|
|
|
|
2010-10-05 02:05:14 +02:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2013-03-02 08:27:19 +01:00
|
|
|
#endif /* __DNA_CUSTOMDATA_TYPES_H__ */
|