| 
									
										
										
										
											2012-07-14 05:54:48 +08:00
										 |  |  | /* ----------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  * GTSAM Copyright 2010, Georgia Tech Research Corporation,  | 
					
						
							|  |  |  |  * Atlanta, Georgia 30332-0415 | 
					
						
							|  |  |  |  * All Rights Reserved | 
					
						
							|  |  |  |  * Authors: Frank Dellaert, et al. (see THANKS for the full author list) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  * See LICENSE for the license information | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  * -------------------------------------------------------------------------- */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * @file Class.h | 
					
						
							|  |  |  |  * @brief describe the C++ class that is being wrapped | 
					
						
							|  |  |  |  * @author Frank Dellaert | 
					
						
							|  |  |  |  * @author Andrew Melim | 
					
						
							|  |  |  |  * @author Richard Roberts | 
					
						
							|  |  |  |  **/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <map>
 | 
					
						
							|  |  |  | #include <string>
 | 
					
						
							|  |  |  | #include <vector>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "ForwardDeclaration.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace wrap { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-02 22:40:07 +08:00
										 |  |  |   // Forward declarations
 | 
					
						
							|  |  |  |   struct Class; | 
					
						
							|  |  |  |    | 
					
						
							| 
									
										
										
										
											2012-07-14 05:54:48 +08:00
										 |  |  | /** Attributes about valid classes, both for classes defined in this module and
 | 
					
						
							|  |  |  |  * also those forward-declared from others.  At the moment this only contains | 
					
						
							|  |  |  |  * whether the class is virtual, which is used to know how to copy the class, | 
					
						
							|  |  |  |  * and whether to try to convert it to a more derived type upon returning it. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | struct TypeAttributes { | 
					
						
							| 
									
										
										
										
											2012-10-02 22:40:07 +08:00
										 |  |  |   bool isVirtual; | 
					
						
							|  |  |  |   TypeAttributes() : isVirtual(false) {} | 
					
						
							|  |  |  |   TypeAttributes(bool isVirtual) : isVirtual(isVirtual) {} | 
					
						
							| 
									
										
										
										
											2012-07-14 05:54:48 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** Map of type names to attributes. */ | 
					
						
							|  |  |  | class TypeAttributesTable : public std::map<std::string, TypeAttributes> { | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2012-10-02 22:40:07 +08:00
										 |  |  |   TypeAttributesTable() {} | 
					
						
							| 
									
										
										
										
											2012-07-14 05:54:48 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-02 22:40:07 +08:00
										 |  |  |   void addClasses(const std::vector<Class>& classes); | 
					
						
							|  |  |  |   void addForwardDeclarations(const std::vector<ForwardDeclaration>& forwardDecls); | 
					
						
							| 
									
										
										
										
											2012-07-14 05:54:48 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-02 22:40:07 +08:00
										 |  |  |   void checkValidity(const std::vector<Class>& classes) const; | 
					
						
							| 
									
										
										
										
											2012-07-14 05:54:48 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |