| 
									
										
										
										
											2011-02-17 05:57:18 +00:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2002-10-12 11:37:38 +00: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-01-07 19:13:47 +00:00
										 |  |  |  * of the License, or (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2002-10-12 11:37:38 +00: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 13:34:04 +00:00
										 |  |  |  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 
					
						
							| 
									
										
										
										
											2002-10-12 11:37:38 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. | 
					
						
							|  |  |  |  * All rights reserved. | 
					
						
							| 
									
										
										
										
											2011-02-17 05:57:18 +00:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-18 08:08:12 +11:00
										 |  |  | /** \file
 | 
					
						
							|  |  |  |  * \ingroup DNA | 
					
						
							|  |  |  |  * \page makesdna makesdna | 
					
						
							| 
									
										
										
										
											2002-10-12 11:37:38 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2011-02-17 16:17:40 +00:00
										 |  |  |  * \section aboutdna About the DNA module | 
					
						
							| 
									
										
										
										
											2002-10-12 11:37:38 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * The DNA module holds all type definitions that are serialized in a | 
					
						
							|  |  |  |  * blender file. There is an executable that scans all files, looking | 
					
						
							| 
									
										
										
										
											2011-02-17 05:57:18 +00:00
										 |  |  |  * for struct-s to serialize (hence sdna: Struct \ref DNA). From this | 
					
						
							| 
									
										
										
										
											2002-10-12 11:37:38 +00:00
										 |  |  |  * information, it builds a file with numbers that encode the format, | 
					
						
							| 
									
										
										
										
											2019-08-18 04:11:50 +10:00
										 |  |  |  * the names of variables, and the place to look for them. | 
					
						
							| 
									
										
										
										
											2002-10-12 11:37:38 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2011-02-17 16:17:40 +00:00
										 |  |  |  * \section dnaissues Known issues with DNA | 
					
						
							| 
									
										
										
										
											2002-10-12 11:37:38 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * - Function pointers: | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *   Because of historical reasons, some function pointers were | 
					
						
							|  |  |  |  *   untyped. The parser/dna generator has been modified to explicitly | 
					
						
							|  |  |  |  *   handle these special cases. Most pointers have been given proper | 
					
						
							| 
									
										
										
										
											2011-02-17 05:57:18 +00:00
										 |  |  |  *   proto's by now. DNA_space_types.h::Spacefile::returnfunc may still | 
					
						
							| 
									
										
										
										
											2010-04-25 15:24:18 +00:00
										 |  |  |  *   be badly defined. The reason for this is that it is called with | 
					
						
							| 
									
										
										
										
											2002-10-12 11:37:38 +00:00
										 |  |  |  *   different types of arguments. It takes a char* at this moment... | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2015-05-08 06:46:16 +10:00
										 |  |  |  * - Ignoring structs: | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *   Sometimes we need to define structs in DNA which aren't written | 
					
						
							|  |  |  |  *   to disk, and can be excluded from blend file DNA string. | 
					
						
							|  |  |  |  *   in this case, add two '#' chars directly before the struct. eg. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *   \code{.c} | 
					
						
							|  |  |  |  *   # | 
					
						
							|  |  |  |  *   # | 
					
						
							|  |  |  |  *   typedef struct MyStruct { | 
					
						
							|  |  |  |  *       int value; | 
					
						
							|  |  |  |  *   } MyStruct; | 
					
						
							|  |  |  |  *   \endcode | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *   Ignored structs can only be referred to from non-ignored structs | 
					
						
							|  |  |  |  *   when referred to as a pointer (where they're usually allocated | 
					
						
							|  |  |  |  *   and cleared in ``readfile.c``). | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2011-02-17 05:57:18 +00:00
										 |  |  |  * - %Path to the header files | 
					
						
							| 
									
										
										
										
											2002-10-12 11:37:38 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  *   Also because of historical reasons, there is a path prefix to the | 
					
						
							|  |  |  |  *   headers that need to be scanned. This is the BASE_HEADER | 
					
						
							|  |  |  |  *   define. If you change the file-layout for DNA, you will probably | 
					
						
							|  |  |  |  *   have to change this (Not very flexible, but it is hardly ever | 
					
						
							|  |  |  |  *   changed. Sorry.). | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2011-02-17 16:17:40 +00:00
										 |  |  |  * \section dnadependencies Dependencies | 
					
						
							| 
									
										
										
										
											2002-10-12 11:37:38 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * DNA has no external dependencies (except for a few system | 
					
						
							|  |  |  |  * includes). | 
					
						
							| 
									
										
										
										
											2012-03-09 18:28:30 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2011-02-17 16:17:40 +00:00
										 |  |  |  * \section dnanote NOTE | 
					
						
							| 
									
										
										
										
											2012-03-09 18:28:30 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2011-12-28 11:08:38 +00:00
										 |  |  |  * PLEASE READ INSTRUCTIONS ABOUT ADDING VARIABLES IN 'DNA' STRUCTS IN | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * intern/dna_genfile.c | 
					
						
							|  |  |  |  * (ton) | 
					
						
							| 
									
										
										
										
											2011-02-17 16:17:40 +00:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2003-06-23 12:28:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-12 11:37:38 +00:00
										 |  |  | /* This file has intentionally no definitions or implementation. */ |