From 91b33c40636e6e31ab103ddd0e8a89c592c0ad9e Mon Sep 17 00:00:00 2001 From: bloeys Date: Sat, 13 Nov 2021 08:10:46 +0400 Subject: [PATCH] Bism Allah - A good start :) --- .gitignore | 4 +- README.md | 21 +- aig/aig.go | 6642 ++++++++++++ aig/aig.i | 181 + aig/aig_wrap.cxx | 9228 +++++++++++++++++ aig/assimp/.editorconfig | 8 + aig/assimp/BaseImporter.h | 418 + aig/assimp/Bitmap.h | 125 + aig/assimp/BlobIOSystem.h | 338 + aig/assimp/ByteSwapper.h | 287 + aig/assimp/Compiler/poppack1.h | 22 + aig/assimp/Compiler/pstdint.h | 912 ++ aig/assimp/Compiler/pushpack1.h | 43 + aig/assimp/CreateAnimMesh.h | 58 + aig/assimp/DefaultIOStream.h | 140 + aig/assimp/DefaultIOSystem.h | 93 + aig/assimp/DefaultLogger.hpp | 188 + aig/assimp/Defines.h | 49 + aig/assimp/Exceptional.h | 125 + aig/assimp/Exporter.hpp | 505 + aig/assimp/GenericProperty.h | 133 + aig/assimp/Hash.h | 118 + aig/assimp/IOStream.hpp | 142 + aig/assimp/IOStreamBuffer.h | 355 + aig/assimp/IOSystem.hpp | 357 + aig/assimp/Importer.hpp | 659 ++ aig/assimp/LineSplitter.h | 285 + aig/assimp/LogAux.h | 131 + aig/assimp/LogStream.hpp | 111 + aig/assimp/Logger.hpp | 305 + aig/assimp/Macros.h | 49 + aig/assimp/MathFunctions.h | 86 + aig/assimp/MemoryIOWrapper.h | 244 + aig/assimp/NullLogger.hpp | 99 + aig/assimp/ParsingUtils.h | 259 + aig/assimp/Profiler.h | 99 + aig/assimp/ProgressHandler.hpp | 145 + aig/assimp/RemoveComments.h | 91 + aig/assimp/SGSpatialSort.h | 150 + aig/assimp/SceneCombiner.h | 403 + aig/assimp/SkeletonMeshBuilder.h | 125 + aig/assimp/SmoothingGroups.h | 108 + aig/assimp/SmoothingGroups.inl | 138 + aig/assimp/SpatialSort.h | 174 + aig/assimp/StandardShapes.h | 200 + aig/assimp/StreamReader.h | 343 + aig/assimp/StreamWriter.h | 303 + aig/assimp/StringComparison.h | 233 + aig/assimp/StringUtils.h | 143 + aig/assimp/Subdivision.h | 131 + aig/assimp/TinyFormatter.h | 166 + aig/assimp/Vertex.h | 348 + aig/assimp/XMLTools.h | 83 + aig/assimp/ZipArchiveIOSystem.h | 87 + aig/assimp/aabb.h | 76 + aig/assimp/ai_assert.h | 57 + aig/assimp/anim.h | 577 ++ aig/assimp/camera.h | 221 + aig/assimp/cexport.h | 261 + aig/assimp/cfileio.h | 138 + aig/assimp/cimport.h | 565 + aig/assimp/color4.h | 104 + aig/assimp/color4.inl | 209 + aig/assimp/config.h | 1018 ++ aig/assimp/config.h.in | 1018 ++ aig/assimp/defs.h | 310 + aig/assimp/fast_atof.h | 373 + aig/assimp/importerdesc.h | 146 + aig/assimp/irrXMLWrapper.h | 149 + aig/assimp/light.h | 259 + aig/assimp/material.h | 1600 +++ aig/assimp/material.inl | 390 + aig/assimp/matrix3x3.h | 183 + aig/assimp/matrix3x3.inl | 357 + aig/assimp/matrix4x4.h | 280 + aig/assimp/matrix4x4.inl | 685 ++ aig/assimp/mesh.h | 859 ++ aig/assimp/metadata.h | 380 + aig/assimp/pbrmaterial.h | 77 + .../port/AndroidJNI/AndroidJNIIOSystem.h | 92 + aig/assimp/postprocess.h | 684 ++ aig/assimp/qnan.h | 165 + aig/assimp/quaternion.h | 130 + aig/assimp/quaternion.inl | 286 + aig/assimp/scene.h | 425 + aig/assimp/texture.h | 227 + aig/assimp/types.h | 541 + aig/assimp/vector2.h | 107 + aig/assimp/vector2.inl | 244 + aig/assimp/vector3.h | 146 + aig/assimp/vector3.inl | 309 + aig/assimp/version.h | 115 + aig/irrxml/irrXML.h | 547 + aig/zlib/zconf.h | 536 + aig/zlib/zlib.h | 1917 ++++ go.mod | 3 + main.go | 28 + 97 files changed, 42982 insertions(+), 2 deletions(-) create mode 100755 aig/aig.go create mode 100755 aig/aig.i create mode 100755 aig/aig_wrap.cxx create mode 100755 aig/assimp/.editorconfig create mode 100755 aig/assimp/BaseImporter.h create mode 100755 aig/assimp/Bitmap.h create mode 100755 aig/assimp/BlobIOSystem.h create mode 100755 aig/assimp/ByteSwapper.h create mode 100755 aig/assimp/Compiler/poppack1.h create mode 100755 aig/assimp/Compiler/pstdint.h create mode 100755 aig/assimp/Compiler/pushpack1.h create mode 100755 aig/assimp/CreateAnimMesh.h create mode 100755 aig/assimp/DefaultIOStream.h create mode 100755 aig/assimp/DefaultIOSystem.h create mode 100755 aig/assimp/DefaultLogger.hpp create mode 100755 aig/assimp/Defines.h create mode 100755 aig/assimp/Exceptional.h create mode 100755 aig/assimp/Exporter.hpp create mode 100755 aig/assimp/GenericProperty.h create mode 100755 aig/assimp/Hash.h create mode 100755 aig/assimp/IOStream.hpp create mode 100755 aig/assimp/IOStreamBuffer.h create mode 100755 aig/assimp/IOSystem.hpp create mode 100755 aig/assimp/Importer.hpp create mode 100755 aig/assimp/LineSplitter.h create mode 100755 aig/assimp/LogAux.h create mode 100755 aig/assimp/LogStream.hpp create mode 100755 aig/assimp/Logger.hpp create mode 100755 aig/assimp/Macros.h create mode 100755 aig/assimp/MathFunctions.h create mode 100755 aig/assimp/MemoryIOWrapper.h create mode 100755 aig/assimp/NullLogger.hpp create mode 100755 aig/assimp/ParsingUtils.h create mode 100755 aig/assimp/Profiler.h create mode 100755 aig/assimp/ProgressHandler.hpp create mode 100755 aig/assimp/RemoveComments.h create mode 100755 aig/assimp/SGSpatialSort.h create mode 100755 aig/assimp/SceneCombiner.h create mode 100755 aig/assimp/SkeletonMeshBuilder.h create mode 100755 aig/assimp/SmoothingGroups.h create mode 100755 aig/assimp/SmoothingGroups.inl create mode 100755 aig/assimp/SpatialSort.h create mode 100755 aig/assimp/StandardShapes.h create mode 100755 aig/assimp/StreamReader.h create mode 100755 aig/assimp/StreamWriter.h create mode 100755 aig/assimp/StringComparison.h create mode 100755 aig/assimp/StringUtils.h create mode 100755 aig/assimp/Subdivision.h create mode 100755 aig/assimp/TinyFormatter.h create mode 100755 aig/assimp/Vertex.h create mode 100755 aig/assimp/XMLTools.h create mode 100755 aig/assimp/ZipArchiveIOSystem.h create mode 100755 aig/assimp/aabb.h create mode 100755 aig/assimp/ai_assert.h create mode 100755 aig/assimp/anim.h create mode 100755 aig/assimp/camera.h create mode 100755 aig/assimp/cexport.h create mode 100755 aig/assimp/cfileio.h create mode 100755 aig/assimp/cimport.h create mode 100755 aig/assimp/color4.h create mode 100755 aig/assimp/color4.inl create mode 100755 aig/assimp/config.h create mode 100755 aig/assimp/config.h.in create mode 100755 aig/assimp/defs.h create mode 100755 aig/assimp/fast_atof.h create mode 100755 aig/assimp/importerdesc.h create mode 100755 aig/assimp/irrXMLWrapper.h create mode 100755 aig/assimp/light.h create mode 100755 aig/assimp/material.h create mode 100755 aig/assimp/material.inl create mode 100755 aig/assimp/matrix3x3.h create mode 100755 aig/assimp/matrix3x3.inl create mode 100755 aig/assimp/matrix4x4.h create mode 100755 aig/assimp/matrix4x4.inl create mode 100755 aig/assimp/mesh.h create mode 100755 aig/assimp/metadata.h create mode 100755 aig/assimp/pbrmaterial.h create mode 100755 aig/assimp/port/AndroidJNI/AndroidJNIIOSystem.h create mode 100755 aig/assimp/postprocess.h create mode 100755 aig/assimp/qnan.h create mode 100755 aig/assimp/quaternion.h create mode 100755 aig/assimp/quaternion.inl create mode 100755 aig/assimp/scene.h create mode 100755 aig/assimp/texture.h create mode 100755 aig/assimp/types.h create mode 100755 aig/assimp/vector2.h create mode 100755 aig/assimp/vector2.inl create mode 100755 aig/assimp/vector3.h create mode 100755 aig/assimp/vector3.inl create mode 100755 aig/assimp/version.h create mode 100755 aig/irrxml/irrXML.h create mode 100755 aig/zlib/zconf.h create mode 100755 aig/zlib/zlib.h create mode 100755 go.mod create mode 100755 main.go diff --git a/.gitignore b/.gitignore index 66fd13c..686fad0 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,6 @@ *.out # Dependency directories (remove the comment below to include it) -# vendor/ +vendor/ +*.a +*.obj \ No newline at end of file diff --git a/README.md b/README.md index 232e15c..c4e8e75 100644 --- a/README.md +++ b/README.md @@ -1 +1,20 @@ -# assimp-go \ No newline at end of file +# assimp-go + +## Developing assimp-go + +`#cgo LDFLAGS: -L ./staticLibs -l zlibstatic -l IrrXML -l assimp` + +We link against static assimp libraries that are built for each platform and added to the `aig/lib` package. +Depending on the platform we select one of them and link against it when doing `go build`. + +**Windows**: + +> Note: You must compile with the same C/C++ compiler you use with Go (e.g. if you use MinGW with Go, then compile assimp with MinGW by sepcifying the correct `-G` option) + +> Note: If you get compilation errors with things like `File too big` or `can't write 166 bytes to section` then cmake isn't detecting you are using MinGW, so add this flag `-D CMAKE_COMPILER_IS_MINGW=TRUE` + +Now assuming you are using MinGW on windows: + +- Clone wanted release of assimp and run `cmake CMakeLists.txt -D BUILD_SHARED_LIBS=OFF -D ASSIMP_BUILD_ZLIB=ON -D ASSIMP_BUILD_ASSIMP_TOOLS=OFF -D ASSIMP_BUILD_TESTS=OFF -G "MinGW Makefiles"` in the root folder +- Run `cmake --build . --parallel 6` +- Copy the generated `*.lib` file into `aig/lib` diff --git a/aig/aig.go b/aig/aig.go new file mode 100755 index 0000000..34d71f1 --- /dev/null +++ b/aig/aig.go @@ -0,0 +1,6642 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.2 + * + * This file is not intended to be easily readable and contains a number of + * coding conventions designed to improve portability and efficiency. Do not make + * changes to this file unless you know what you are doing--modify the SWIG + * interface file instead. + * ----------------------------------------------------------------------------- */ + +// source: aig\aig.i + +package aig + +/* +#cgo LDFLAGS: -L ./staticLibs -l zlibstatic -l IrrXML -l assimp + +#define intgo swig_intgo +typedef void *swig_voidp; + +#include + + +typedef long long intgo; +typedef unsigned long long uintgo; + + + +typedef struct { char *p; intgo n; } _gostring_; +typedef struct { void* array; intgo len; intgo cap; } _goslice_; + + +typedef void* swig_type_1; +typedef void* swig_type_2; +typedef _gostring_ swig_type_3; +typedef _gostring_ swig_type_4; +typedef _gostring_ swig_type_5; +typedef _gostring_ swig_type_6; +typedef _gostring_ swig_type_7; +typedef _gostring_ swig_type_8; +typedef _gostring_ swig_type_9; +typedef _gostring_ swig_type_10; +typedef _gostring_ swig_type_11; +typedef _gostring_ swig_type_12; +typedef _gostring_ swig_type_13; +typedef _gostring_ swig_type_14; +typedef _gostring_ swig_type_15; +typedef _gostring_ swig_type_16; +typedef _gostring_ swig_type_17; +typedef _gostring_ swig_type_18; +typedef long long swig_type_19; +typedef long long swig_type_20; +typedef _gostring_ swig_type_21; +typedef _gostring_ swig_type_22; +typedef _gostring_ swig_type_23; +typedef _gostring_ swig_type_24; +typedef _gostring_ swig_type_25; +typedef _gostring_ swig_type_26; +typedef long long swig_type_27; +typedef long long swig_type_28; +typedef long long swig_type_29; +typedef long long swig_type_30; +typedef _gostring_ swig_type_31; +typedef _gostring_ swig_type_32; +typedef void* swig_type_33; +typedef void* swig_type_34; +typedef void* swig_type_35; +typedef void* swig_type_36; +typedef long long swig_type_37; +typedef long long swig_type_38; +typedef long long swig_type_39; +typedef long long swig_type_40; +typedef long long swig_type_41; +typedef long long swig_type_42; +typedef _gostring_ swig_type_43; +typedef long long swig_type_44; +typedef long long swig_type_45; +typedef long long swig_type_46; +typedef void* swig_type_47; +typedef void* swig_type_48; +typedef long long swig_type_49; +typedef long long swig_type_50; +typedef long long swig_type_51; +typedef long long swig_type_52; +typedef long long swig_type_53; +typedef long long swig_type_54; +typedef _gostring_ swig_type_55; +typedef long long swig_type_56; +typedef long long swig_type_57; +typedef long long swig_type_58; +typedef long long swig_type_59; +typedef long long swig_type_60; +typedef long long swig_type_61; +typedef _gostring_ swig_type_62; +typedef _gostring_ swig_type_63; +typedef _gostring_ swig_type_64; +typedef _gostring_ swig_type_65; +typedef _gostring_ swig_type_66; +typedef long long swig_type_67; +typedef long long swig_type_68; +typedef long long swig_type_69; +typedef long long swig_type_70; +typedef long long swig_type_71; +typedef long long swig_type_72; +typedef long long swig_type_73; +typedef long long swig_type_74; +typedef long long swig_type_75; +typedef long long swig_type_76; +typedef _gostring_ swig_type_77; +typedef _gostring_ swig_type_78; +typedef _gostring_ swig_type_79; +typedef _gostring_ swig_type_80; +typedef _gostring_ swig_type_81; +typedef _gostring_ swig_type_82; +typedef _gostring_ swig_type_83; +typedef long long swig_type_84; +typedef long long swig_type_85; +typedef long long swig_type_86; +typedef long long swig_type_87; +typedef long long swig_type_88; +typedef long long swig_type_89; +typedef _gostring_ swig_type_90; +typedef long long swig_type_91; +typedef _gostring_ swig_type_92; +typedef _gostring_ swig_type_93; +typedef _gostring_ swig_type_94; +typedef _gostring_ swig_type_95; +typedef long long swig_type_96; +typedef long long swig_type_97; +typedef long long swig_type_98; +typedef long long swig_type_99; +typedef long long swig_type_100; +typedef long long swig_type_101; +typedef long long swig_type_102; +typedef long long swig_type_103; +typedef long long swig_type_104; +typedef long long swig_type_105; +typedef long long swig_type_106; +typedef long long swig_type_107; +typedef long long swig_type_108; +typedef long long swig_type_109; +typedef long long swig_type_110; +typedef long long swig_type_111; +typedef long long swig_type_112; +typedef long long swig_type_113; +typedef long long swig_type_114; +typedef long long swig_type_115; +typedef long long swig_type_116; +typedef long long swig_type_117; +typedef long long swig_type_118; +typedef long long swig_type_119; +typedef long long swig_type_120; +typedef long long swig_type_121; +typedef long long swig_type_122; +typedef long long swig_type_123; +typedef long long swig_type_124; +typedef long long swig_type_125; +typedef long long swig_type_126; +typedef long long swig_type_127; +typedef long long swig_type_128; +typedef long long swig_type_129; +typedef long long swig_type_130; +typedef long long swig_type_131; +typedef long long swig_type_132; +typedef long long swig_type_133; +typedef long long swig_type_134; +typedef long long swig_type_135; +typedef long long swig_type_136; +typedef long long swig_type_137; +typedef long long swig_type_138; +typedef long long swig_type_139; +typedef long long swig_type_140; +typedef long long swig_type_141; +typedef long long swig_type_142; +typedef long long swig_type_143; +typedef long long swig_type_144; +typedef long long swig_type_145; +typedef long long swig_type_146; +typedef long long swig_type_147; +typedef long long swig_type_148; +typedef long long swig_type_149; +typedef long long swig_type_150; +typedef long long swig_type_151; +typedef long long swig_type_152; +typedef long long swig_type_153; +typedef long long swig_type_154; +typedef long long swig_type_155; +typedef long long swig_type_156; +typedef long long swig_type_157; +typedef long long swig_type_158; +typedef long long swig_type_159; +typedef long long swig_type_160; +typedef long long swig_type_161; +typedef long long swig_type_162; +typedef long long swig_type_163; +typedef long long swig_type_164; +typedef long long swig_type_165; +typedef long long swig_type_166; +typedef long long swig_type_167; +typedef long long swig_type_168; +typedef long long swig_type_169; +typedef long long swig_type_170; +typedef long long swig_type_171; +extern void _wrap_Swig_free_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_Swig_malloc_aig_29567bba180e4e84(swig_intgo arg1); +extern void _wrap_aiLogStream_callback_set_aig_29567bba180e4e84(uintptr_t arg1, swig_type_1 arg2); +extern swig_type_2 _wrap_aiLogStream_callback_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiLogStream_user_set_aig_29567bba180e4e84(uintptr_t arg1, swig_type_3 arg2); +extern swig_type_4 _wrap_aiLogStream_user_get_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiLogStream_aig_29567bba180e4e84(void); +extern void _wrap_delete_aiLogStream_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiPropertyStore_sentinel_set_aig_29567bba180e4e84(uintptr_t arg1, char arg2); +extern char _wrap_aiPropertyStore_sentinel_get_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiPropertyStore_aig_29567bba180e4e84(void); +extern void _wrap_delete_aiPropertyStore_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiImportFile_aig_29567bba180e4e84(swig_type_5 arg1, swig_intgo arg2); +extern uintptr_t _wrap_aiImportFileEx_aig_29567bba180e4e84(swig_type_6 arg1, swig_intgo arg2, uintptr_t arg3); +extern uintptr_t _wrap_aiImportFileExWithProperties_aig_29567bba180e4e84(swig_type_7 arg1, swig_intgo arg2, uintptr_t arg3, uintptr_t arg4); +extern uintptr_t _wrap_aiImportFileFromMemory_aig_29567bba180e4e84(swig_type_8 arg1, swig_intgo arg2, swig_intgo arg3, swig_type_9 arg4); +extern uintptr_t _wrap_aiImportFileFromMemoryWithProperties_aig_29567bba180e4e84(swig_type_10 arg1, swig_intgo arg2, swig_intgo arg3, swig_type_11 arg4, uintptr_t arg5); +extern uintptr_t _wrap_aiApplyPostProcessing_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern uintptr_t _wrap_aiGetPredefinedLogStream_aig_29567bba180e4e84(swig_intgo arg1, swig_type_12 arg2); +extern void _wrap_aiAttachLogStream_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiEnableVerboseLogging_aig_29567bba180e4e84(swig_intgo arg1); +extern swig_intgo _wrap_aiDetachLogStream_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiDetachAllLogStreams_aig_29567bba180e4e84(void); +extern void _wrap_aiReleaseImport_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_13 _wrap_aiGetErrorString_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_aiIsExtensionSupported_aig_29567bba180e4e84(swig_type_14 arg1); +extern void _wrap_aiGetExtensionList_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiGetMemoryRequirements_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiCreatePropertyStore_aig_29567bba180e4e84(void); +extern void _wrap_aiReleasePropertyStore_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiSetImportPropertyInteger_aig_29567bba180e4e84(uintptr_t arg1, swig_type_15 arg2, swig_intgo arg3); +extern void _wrap_aiSetImportPropertyFloat_aig_29567bba180e4e84(uintptr_t arg1, swig_type_16 arg2, uintptr_t arg3); +extern void _wrap_aiSetImportPropertyString_aig_29567bba180e4e84(uintptr_t arg1, swig_type_17 arg2, uintptr_t arg3); +extern void _wrap_aiSetImportPropertyMatrix_aig_29567bba180e4e84(uintptr_t arg1, swig_type_18 arg2, uintptr_t arg3); +extern void _wrap_aiCreateQuaternionFromMatrix_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern void _wrap_aiDecomposeMatrix_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4); +extern void _wrap_aiTransposeMatrix4_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiTransposeMatrix3_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiTransformVecByMatrix3_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern void _wrap_aiTransformVecByMatrix4_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern void _wrap_aiMultiplyMatrix4_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern void _wrap_aiMultiplyMatrix3_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern void _wrap_aiIdentityMatrix3_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiIdentityMatrix4_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_19 _wrap_aiGetImportFormatCount_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_aiGetImportFormatDescription_aig_29567bba180e4e84(swig_type_20 arg1); +extern void _wrap_aiNode_mName_set_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiNode_mName_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiNode_mTransformation_set_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiNode_mTransformation_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiNode_mParent_set_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiNode_mParent_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiNode_mNumChildren_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiNode_mNumChildren_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiNode_mNumMeshes_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiNode_mNumMeshes_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiNode_mMetaData_set_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiNode_mMetaData_get_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiNode__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiNode__SWIG_1_aig_29567bba180e4e84(swig_type_21 arg1); +extern void _wrap_delete_aiNode_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiNode_FindNode__SWIG_0_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiNode_FindNode__SWIG_1_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiNode_FindNode__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1, swig_type_22 arg2); +extern uintptr_t _wrap_aiNode_FindNode__SWIG_3_aig_29567bba180e4e84(uintptr_t arg1, swig_type_23 arg2); +extern void _wrap_aiNode_addChildren_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern uintptr_t _wrap_aiNode_mChildren_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiNode_mMeshes_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiScene_mFlags_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiScene_mFlags_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiScene_mRootNode_set_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiScene_mRootNode_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiScene_mNumMeshes_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiScene_mNumMeshes_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiScene_mNumMaterials_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiScene_mNumMaterials_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiScene_mNumAnimations_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiScene_mNumAnimations_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiScene_mNumTextures_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiScene_mNumTextures_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiScene_mNumLights_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiScene_mNumLights_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiScene_mNumCameras_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiScene_mNumCameras_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiScene_mMetaData_set_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiScene_mMetaData_get_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiScene_aig_29567bba180e4e84(void); +extern void _wrap_delete_aiScene_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiScene_HasMeshes_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiScene_HasMaterials_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiScene_HasLights_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiScene_HasTextures_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiScene_HasCameras_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiScene_HasAnimations_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_24 _wrap_aiScene_GetShortFilename_aig_29567bba180e4e84(swig_type_25 arg1); +extern uintptr_t _wrap_aiScene_GetEmbeddedTexture_aig_29567bba180e4e84(uintptr_t arg1, swig_type_26 arg2); +extern void _wrap_aiScene_mPrivate_set_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiScene_mPrivate_get_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiScene_mAnimations_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiScene_mCameras_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiScene_mLights_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiScene_mMaterials_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiScene_mMeshes_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiScene_mTextures_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiFace_mNumIndices_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiFace_mNumIndices_get_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiFace__SWIG_0_aig_29567bba180e4e84(void); +extern void _wrap_delete_aiFace_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiFace__SWIG_1_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiFace_mIndices_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiVertexWeight_mVertexId_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiVertexWeight_mVertexId_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiVertexWeight_mWeight_set_aig_29567bba180e4e84(uintptr_t arg1, float arg2); +extern float _wrap_aiVertexWeight_mWeight_get_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiVertexWeight__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiVertexWeight__SWIG_1_aig_29567bba180e4e84(swig_intgo arg1, float arg2); +extern void _wrap_delete_aiVertexWeight_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiBone_mName_set_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiBone_mName_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiBone_mNumWeights_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiBone_mNumWeights_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiBone_mOffsetMatrix_set_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiBone_mOffsetMatrix_get_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiBone__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiBone__SWIG_1_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_delete_aiBone_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiBone_mWeights_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_aiPrimitiveType_POINT_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_aiPrimitiveType_LINE_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_aiPrimitiveType_TRIANGLE_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_aiPrimitiveType_POLYGON_aig_29567bba180e4e84(void); +extern void _wrap_aiAnimMesh_mName_set_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiAnimMesh_mName_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiAnimMesh_mNumVertices_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiAnimMesh_mNumVertices_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiAnimMesh_mWeight_set_aig_29567bba180e4e84(uintptr_t arg1, float arg2); +extern float _wrap_aiAnimMesh_mWeight_get_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiAnimMesh_aig_29567bba180e4e84(void); +extern void _wrap_delete_aiAnimMesh_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiAnimMesh_HasPositions_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiAnimMesh_HasNormals_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiAnimMesh_HasTangentsAndBitangents_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiAnimMesh_HasVertexColors_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern _Bool _wrap_aiAnimMesh_HasTextureCoords_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern uintptr_t _wrap_aiAnimMesh_mVertices_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiAnimMesh_mNormals_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiAnimMesh_mTangents_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiAnimMesh_mBitangents_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiAnimMesh_mTextureCoords_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiAnimMesh_mColors_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_aiMorphingMethod_VERTEX_BLEND_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_aiMorphingMethod_MORPH_NORMALIZED_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_aiMorphingMethod_MORPH_RELATIVE_aig_29567bba180e4e84(void); +extern void _wrap_aiMesh_mPrimitiveTypes_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiMesh_mPrimitiveTypes_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMesh_mNumVertices_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiMesh_mNumVertices_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMesh_mNumFaces_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiMesh_mNumFaces_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMesh_mNumBones_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiMesh_mNumBones_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMesh_mMaterialIndex_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiMesh_mMaterialIndex_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMesh_mName_set_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiMesh_mName_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMesh_mNumAnimMeshes_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiMesh_mNumAnimMeshes_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMesh_mMethod_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiMesh_mMethod_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMesh_mAABB_set_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiMesh_mAABB_get_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiMesh_aig_29567bba180e4e84(void); +extern void _wrap_delete_aiMesh_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiMesh_HasPositions_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiMesh_HasFaces_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiMesh_HasNormals_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiMesh_HasTangentsAndBitangents_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiMesh_HasVertexColors_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern _Bool _wrap_aiMesh_HasTextureCoords_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_aiMesh_GetNumUVChannels_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_aiMesh_GetNumColorChannels_aig_29567bba180e4e84(uintptr_t arg1); +extern _Bool _wrap_aiMesh_HasBones_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiMesh_mAnimMeshes_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiMesh_mBones_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiMesh_mNumUVComponents_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiMesh_mVertices_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiMesh_mNormals_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiMesh_mTangents_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiMesh_mBitangents_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiMesh_mFaces_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiMesh_mTextureCoords_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_aiMesh_mColors_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_z_stream_next_in_set_aig_29567bba180e4e84(uintptr_t arg1, swig_voidp arg2); +extern swig_voidp _wrap_z_stream_next_in_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_z_stream_avail_in_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_z_stream_avail_in_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_z_stream_total_in_set_aig_29567bba180e4e84(uintptr_t arg1, swig_type_27 arg2); +extern swig_type_28 _wrap_z_stream_total_in_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_z_stream_next_out_set_aig_29567bba180e4e84(uintptr_t arg1, swig_voidp arg2); +extern swig_voidp _wrap_z_stream_next_out_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_z_stream_avail_out_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_z_stream_avail_out_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_z_stream_total_out_set_aig_29567bba180e4e84(uintptr_t arg1, swig_type_29 arg2); +extern swig_type_30 _wrap_z_stream_total_out_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_z_stream_msg_set_aig_29567bba180e4e84(uintptr_t arg1, swig_type_31 arg2); +extern swig_type_32 _wrap_z_stream_msg_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_z_stream_state_set_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_z_stream_state_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_z_stream_zalloc_set_aig_29567bba180e4e84(uintptr_t arg1, swig_type_33 arg2); +extern swig_type_34 _wrap_z_stream_zalloc_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_z_stream_zfree_set_aig_29567bba180e4e84(uintptr_t arg1, swig_type_35 arg2); +extern swig_type_36 _wrap_z_stream_zfree_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_z_stream_opaque_set_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_z_stream_opaque_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_z_stream_data_type_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_z_stream_data_type_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_z_stream_adler_set_aig_29567bba180e4e84(uintptr_t arg1, swig_type_37 arg2); +extern swig_type_38 _wrap_z_stream_adler_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_z_stream_reserved_set_aig_29567bba180e4e84(uintptr_t arg1, swig_type_39 arg2); +extern swig_type_40 _wrap_z_stream_reserved_get_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_z_stream_aig_29567bba180e4e84(void); +extern void _wrap_delete_z_stream_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_gz_header_text_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_gz_header_text_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_gz_header_time_set_aig_29567bba180e4e84(uintptr_t arg1, swig_type_41 arg2); +extern swig_type_42 _wrap_gz_header_time_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_gz_header_xflags_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_gz_header_xflags_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_gz_header_os_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_gz_header_os_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_gz_header_extra_set_aig_29567bba180e4e84(uintptr_t arg1, swig_voidp arg2); +extern swig_voidp _wrap_gz_header_extra_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_gz_header_extra_len_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_gz_header_extra_len_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_gz_header_extra_max_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_gz_header_extra_max_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_gz_header_name_set_aig_29567bba180e4e84(uintptr_t arg1, swig_voidp arg2); +extern swig_voidp _wrap_gz_header_name_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_gz_header_name_max_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_gz_header_name_max_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_gz_header_comment_set_aig_29567bba180e4e84(uintptr_t arg1, swig_voidp arg2); +extern swig_voidp _wrap_gz_header_comment_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_gz_header_comm_max_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_gz_header_comm_max_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_gz_header_hcrc_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_gz_header_hcrc_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_gz_header_done_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_gz_header_done_get_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_gz_header_aig_29567bba180e4e84(void); +extern void _wrap_delete_gz_header_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_Z_ERRNO_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_Z_STREAM_ERROR_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_Z_DATA_ERROR_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_Z_MEM_ERROR_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_Z_BUF_ERROR_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_Z_VERSION_ERROR_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_Z_DEFAULT_COMPRESSION_aig_29567bba180e4e84(void); +extern swig_type_43 _wrap_zlibVersion_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_deflate_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_deflateEnd_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_inflate_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_inflateEnd_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_deflateSetDictionary_aig_29567bba180e4e84(uintptr_t arg1, swig_voidp arg2, swig_intgo arg3); +extern swig_intgo _wrap_deflateGetDictionary_aig_29567bba180e4e84(uintptr_t arg1, swig_voidp arg2, swig_voidp arg3); +extern swig_intgo _wrap_deflateCopy_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern swig_intgo _wrap_deflateReset_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_deflateParams_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, swig_intgo arg3); +extern swig_intgo _wrap_deflateTune_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, swig_intgo arg3, swig_intgo arg4, swig_intgo arg5); +extern swig_type_44 _wrap_deflateBound_aig_29567bba180e4e84(uintptr_t arg1, swig_type_45 arg2); +extern swig_intgo _wrap_deflatePending_aig_29567bba180e4e84(uintptr_t arg1, swig_voidp arg2, swig_voidp arg3); +extern swig_intgo _wrap_deflatePrime_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, swig_intgo arg3); +extern swig_intgo _wrap_deflateSetHeader_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern swig_intgo _wrap_inflateSetDictionary_aig_29567bba180e4e84(uintptr_t arg1, swig_voidp arg2, swig_intgo arg3); +extern swig_intgo _wrap_inflateGetDictionary_aig_29567bba180e4e84(uintptr_t arg1, swig_voidp arg2, swig_voidp arg3); +extern swig_intgo _wrap_inflateSync_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_inflateCopy_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern swig_intgo _wrap_inflateReset_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_inflateReset2_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_inflatePrime_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, swig_intgo arg3); +extern swig_type_46 _wrap_inflateMark_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_inflateGetHeader_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern swig_intgo _wrap_inflateBack_aig_29567bba180e4e84(uintptr_t arg1, swig_type_47 arg2, uintptr_t arg3, swig_type_48 arg4, uintptr_t arg5); +extern swig_intgo _wrap_inflateBackEnd_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_49 _wrap_zlibCompileFlags_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_compress_aig_29567bba180e4e84(swig_voidp arg1, swig_voidp arg2, swig_voidp arg3, swig_type_50 arg4); +extern swig_intgo _wrap_compress2_aig_29567bba180e4e84(swig_voidp arg1, swig_voidp arg2, swig_voidp arg3, swig_type_51 arg4, swig_intgo arg5); +extern swig_type_52 _wrap_compressBound_aig_29567bba180e4e84(swig_type_53 arg1); +extern swig_intgo _wrap_uncompress_aig_29567bba180e4e84(swig_voidp arg1, swig_voidp arg2, swig_voidp arg3, swig_type_54 arg4); +extern swig_intgo _wrap_uncompress2_aig_29567bba180e4e84(swig_voidp arg1, swig_voidp arg2, swig_voidp arg3, swig_voidp arg4); +extern uintptr_t _wrap_gzdopen_aig_29567bba180e4e84(swig_intgo arg1, swig_type_55 arg2); +extern swig_intgo _wrap_gzbuffer_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_gzsetparams_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, swig_intgo arg3); +extern swig_intgo _wrap_gzread_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2, swig_intgo arg3); +extern swig_type_56 _wrap_gzfread_aig_29567bba180e4e84(uintptr_t arg1, swig_type_57 arg2, swig_type_58 arg3, uintptr_t arg4); +extern swig_intgo _wrap_gzwrite_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2, swig_intgo arg3); +extern swig_type_59 _wrap_gzfwrite_aig_29567bba180e4e84(uintptr_t arg1, swig_type_60 arg2, swig_type_61 arg3, uintptr_t arg4); +extern swig_intgo _wrap_gzprintf_aig_29567bba180e4e84(uintptr_t arg1, swig_type_62 arg2); +extern swig_intgo _wrap_gzputs_aig_29567bba180e4e84(uintptr_t arg1, swig_type_63 arg2); +extern swig_type_64 _wrap_gzgets_aig_29567bba180e4e84(uintptr_t arg1, swig_type_65 arg2, swig_intgo arg3); +extern swig_intgo _wrap_gzputc_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_gzgetc_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_gzungetc_aig_29567bba180e4e84(swig_intgo arg1, uintptr_t arg2); +extern swig_intgo _wrap_gzflush_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_gzrewind_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_gzeof_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_gzdirect_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_gzclose_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_gzclose_r_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_gzclose_w_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_66 _wrap_gzerror_aig_29567bba180e4e84(uintptr_t arg1, swig_voidp arg2); +extern void _wrap_gzclearerr_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_67 _wrap_adler32_aig_29567bba180e4e84(swig_type_68 arg1, swig_voidp arg2, swig_intgo arg3); +extern swig_type_69 _wrap_adler32_z_aig_29567bba180e4e84(swig_type_70 arg1, swig_voidp arg2, swig_type_71 arg3); +extern swig_type_72 _wrap_crc32_aig_29567bba180e4e84(swig_type_73 arg1, swig_voidp arg2, swig_intgo arg3); +extern swig_type_74 _wrap_crc32_z_aig_29567bba180e4e84(swig_type_75 arg1, swig_voidp arg2, swig_type_76 arg3); +extern swig_intgo _wrap_deflateInit__aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, swig_type_77 arg3, swig_intgo arg4); +extern swig_intgo _wrap_inflateInit__aig_29567bba180e4e84(uintptr_t arg1, swig_type_78 arg2, swig_intgo arg3); +extern swig_intgo _wrap_deflateInit2__aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, swig_intgo arg3, swig_intgo arg4, swig_intgo arg5, swig_intgo arg6, swig_type_79 arg7, swig_intgo arg8); +extern swig_intgo _wrap_inflateInit2__aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, swig_type_80 arg3, swig_intgo arg4); +extern swig_intgo _wrap_inflateBackInit__aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, swig_voidp arg3, swig_type_81 arg4, swig_intgo arg5); +extern void _wrap_gzFile_s_have_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_gzFile_s_have_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_gzFile_s_next_set_aig_29567bba180e4e84(uintptr_t arg1, swig_voidp arg2); +extern swig_voidp _wrap_gzFile_s_next_get_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_gzFile_s_pos_set_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_gzFile_s_pos_get_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_gzFile_s_aig_29567bba180e4e84(void); +extern void _wrap_delete_gzFile_s_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_gzgetc__aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_gzopen_aig_29567bba180e4e84(swig_type_82 arg1, swig_type_83 arg2); +extern uintptr_t _wrap_gzseek_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2, swig_intgo arg3); +extern uintptr_t _wrap_gztell_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_gzoffset_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_84 _wrap_adler32_combine_aig_29567bba180e4e84(swig_type_85 arg1, swig_type_86 arg2, uintptr_t arg3); +extern swig_type_87 _wrap_crc32_combine_aig_29567bba180e4e84(swig_type_88 arg1, swig_type_89 arg2, uintptr_t arg3); +extern swig_type_90 _wrap_zError_aig_29567bba180e4e84(swig_intgo arg1); +extern swig_intgo _wrap_inflateSyncPoint_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_voidp _wrap_get_crc_table_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_inflateUndermine_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_inflateValidate_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_type_91 _wrap_inflateCodesUsed_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_inflateResetKeep_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_deflateResetKeep_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_gzvprintf_aig_29567bba180e4e84(uintptr_t arg1, swig_type_92 arg2, uintptr_t arg3); +extern swig_intgo _wrap_ETF_ASCII_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_ETF_UTF8_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_ETF_UTF16_BE_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_ETF_UTF16_LE_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_ETF_UTF32_BE_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_ETF_UTF32_LE_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_EXN_NONE_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_EXN_ELEMENT_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_EXN_ELEMENT_END_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_EXN_TEXT_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_EXN_COMMENT_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_EXN_CDATA_aig_29567bba180e4e84(void); +extern swig_intgo _wrap_EXN_UNKNOWN_aig_29567bba180e4e84(void); +extern void _wrap_delete_IFileReadCallBack_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_intgo _wrap_IFileReadCallBack_read_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2, swig_intgo arg3); +extern swig_intgo _wrap_IFileReadCallBack_getSize_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_IXMLBase_aig_29567bba180e4e84(void); +extern void _wrap_delete_IXMLBase_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_createIrrXMLReader__SWIG_0_aig_29567bba180e4e84(swig_type_93 arg1); +extern uintptr_t _wrap_createIrrXMLReader__SWIG_1_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_createIrrXMLReader__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_createIrrXMLReaderUTF16__SWIG_0_aig_29567bba180e4e84(swig_type_94 arg1); +extern uintptr_t _wrap_createIrrXMLReaderUTF16__SWIG_1_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_createIrrXMLReaderUTF16__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_createIrrXMLReaderUTF32__SWIG_0_aig_29567bba180e4e84(swig_type_95 arg1); +extern uintptr_t _wrap_createIrrXMLReaderUTF32__SWIG_1_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_createIrrXMLReaderUTF32__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_UintVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_UintVector__SWIG_1_aig_29567bba180e4e84(swig_type_96 arg1); +extern uintptr_t _wrap_new_UintVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_97 _wrap_UintVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_98 _wrap_UintVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_UintVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_99 arg2); +extern _Bool _wrap_UintVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_UintVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_UintVector_add_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern swig_intgo _wrap_UintVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_UintVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, swig_intgo arg3); +extern void _wrap_delete_UintVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiAnimationVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiAnimationVector__SWIG_1_aig_29567bba180e4e84(swig_type_100 arg1); +extern uintptr_t _wrap_new_aiAnimationVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_101 _wrap_aiAnimationVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_102 _wrap_aiAnimationVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiAnimationVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_103 arg2); +extern _Bool _wrap_aiAnimationVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiAnimationVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiAnimationVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiAnimationVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiAnimationVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiAnimationVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiAnimMeshVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiAnimMeshVector__SWIG_1_aig_29567bba180e4e84(swig_type_104 arg1); +extern uintptr_t _wrap_new_aiAnimMeshVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_105 _wrap_aiAnimMeshVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_106 _wrap_aiAnimMeshVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiAnimMeshVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_107 arg2); +extern _Bool _wrap_aiAnimMeshVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiAnimMeshVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiAnimMeshVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiAnimMeshVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiAnimMeshVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiAnimMeshVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiBonesVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiBonesVector__SWIG_1_aig_29567bba180e4e84(swig_type_108 arg1); +extern uintptr_t _wrap_new_aiBonesVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_109 _wrap_aiBonesVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_110 _wrap_aiBonesVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiBonesVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_111 arg2); +extern _Bool _wrap_aiBonesVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiBonesVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiBonesVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiBonesVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiBonesVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiBonesVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiCameraVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiCameraVector__SWIG_1_aig_29567bba180e4e84(swig_type_112 arg1); +extern uintptr_t _wrap_new_aiCameraVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_113 _wrap_aiCameraVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_114 _wrap_aiCameraVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiCameraVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_115 arg2); +extern _Bool _wrap_aiCameraVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiCameraVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiCameraVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiCameraVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiCameraVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiCameraVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiColor4DVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiColor4DVector__SWIG_1_aig_29567bba180e4e84(swig_type_116 arg1); +extern uintptr_t _wrap_new_aiColor4DVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_117 _wrap_aiColor4DVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_118 _wrap_aiColor4DVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiColor4DVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_119 arg2); +extern _Bool _wrap_aiColor4DVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiColor4DVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiColor4DVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiColor4DVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiColor4DVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiColor4DVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiColor4DVectorVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiColor4DVectorVector__SWIG_1_aig_29567bba180e4e84(swig_type_120 arg1); +extern uintptr_t _wrap_new_aiColor4DVectorVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_121 _wrap_aiColor4DVectorVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_122 _wrap_aiColor4DVectorVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiColor4DVectorVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_123 arg2); +extern _Bool _wrap_aiColor4DVectorVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiColor4DVectorVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiColor4DVectorVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiColor4DVectorVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiColor4DVectorVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiColor4DVectorVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiFaceVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiFaceVector__SWIG_1_aig_29567bba180e4e84(swig_type_124 arg1); +extern uintptr_t _wrap_new_aiFaceVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_125 _wrap_aiFaceVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_126 _wrap_aiFaceVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiFaceVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_127 arg2); +extern _Bool _wrap_aiFaceVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiFaceVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiFaceVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiFaceVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiFaceVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiFaceVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiLightVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiLightVector__SWIG_1_aig_29567bba180e4e84(swig_type_128 arg1); +extern uintptr_t _wrap_new_aiLightVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_129 _wrap_aiLightVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_130 _wrap_aiLightVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiLightVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_131 arg2); +extern _Bool _wrap_aiLightVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiLightVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiLightVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiLightVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiLightVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiLightVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiMaterialVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiMaterialVector__SWIG_1_aig_29567bba180e4e84(swig_type_132 arg1); +extern uintptr_t _wrap_new_aiMaterialVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_133 _wrap_aiMaterialVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_134 _wrap_aiMaterialVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMaterialVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_135 arg2); +extern _Bool _wrap_aiMaterialVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMaterialVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMaterialVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiMaterialVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiMaterialVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiMaterialVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiMaterialPropertyVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiMaterialPropertyVector__SWIG_1_aig_29567bba180e4e84(swig_type_136 arg1); +extern uintptr_t _wrap_new_aiMaterialPropertyVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_137 _wrap_aiMaterialPropertyVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_138 _wrap_aiMaterialPropertyVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMaterialPropertyVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_139 arg2); +extern _Bool _wrap_aiMaterialPropertyVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMaterialPropertyVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMaterialPropertyVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiMaterialPropertyVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiMaterialPropertyVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiMaterialPropertyVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiMeshAnimVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiMeshAnimVector__SWIG_1_aig_29567bba180e4e84(swig_type_140 arg1); +extern uintptr_t _wrap_new_aiMeshAnimVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_141 _wrap_aiMeshAnimVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_142 _wrap_aiMeshAnimVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMeshAnimVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_143 arg2); +extern _Bool _wrap_aiMeshAnimVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMeshAnimVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMeshAnimVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiMeshAnimVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiMeshAnimVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiMeshAnimVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiMeshVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiMeshVector__SWIG_1_aig_29567bba180e4e84(swig_type_144 arg1); +extern uintptr_t _wrap_new_aiMeshVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_145 _wrap_aiMeshVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_146 _wrap_aiMeshVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMeshVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_147 arg2); +extern _Bool _wrap_aiMeshVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMeshVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiMeshVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiMeshVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiMeshVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiMeshVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiNodeVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiNodeVector__SWIG_1_aig_29567bba180e4e84(swig_type_148 arg1); +extern uintptr_t _wrap_new_aiNodeVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_149 _wrap_aiNodeVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_150 _wrap_aiNodeVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiNodeVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_151 arg2); +extern _Bool _wrap_aiNodeVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiNodeVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiNodeVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiNodeVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiNodeVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiNodeVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiNodeAnimVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiNodeAnimVector__SWIG_1_aig_29567bba180e4e84(swig_type_152 arg1); +extern uintptr_t _wrap_new_aiNodeAnimVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_153 _wrap_aiNodeAnimVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_154 _wrap_aiNodeAnimVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiNodeAnimVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_155 arg2); +extern _Bool _wrap_aiNodeAnimVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiNodeAnimVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiNodeAnimVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiNodeAnimVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiNodeAnimVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiNodeAnimVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiTextureVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiTextureVector__SWIG_1_aig_29567bba180e4e84(swig_type_156 arg1); +extern uintptr_t _wrap_new_aiTextureVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_157 _wrap_aiTextureVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_158 _wrap_aiTextureVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiTextureVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_159 arg2); +extern _Bool _wrap_aiTextureVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiTextureVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiTextureVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiTextureVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiTextureVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiTextureVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiVector3DVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiVector3DVector__SWIG_1_aig_29567bba180e4e84(swig_type_160 arg1); +extern uintptr_t _wrap_new_aiVector3DVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_161 _wrap_aiVector3DVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_162 _wrap_aiVector3DVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiVector3DVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_163 arg2); +extern _Bool _wrap_aiVector3DVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiVector3DVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiVector3DVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiVector3DVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiVector3DVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiVector3DVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiVector3DVectorVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiVector3DVectorVector__SWIG_1_aig_29567bba180e4e84(swig_type_164 arg1); +extern uintptr_t _wrap_new_aiVector3DVectorVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_165 _wrap_aiVector3DVectorVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_166 _wrap_aiVector3DVectorVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiVector3DVectorVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_167 arg2); +extern _Bool _wrap_aiVector3DVectorVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiVector3DVectorVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiVector3DVectorVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiVector3DVectorVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiVector3DVectorVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiVector3DVectorVector_aig_29567bba180e4e84(uintptr_t arg1); +extern uintptr_t _wrap_new_aiVertexWeightVector__SWIG_0_aig_29567bba180e4e84(void); +extern uintptr_t _wrap_new_aiVertexWeightVector__SWIG_1_aig_29567bba180e4e84(swig_type_168 arg1); +extern uintptr_t _wrap_new_aiVertexWeightVector__SWIG_2_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_169 _wrap_aiVertexWeightVector_size_aig_29567bba180e4e84(uintptr_t arg1); +extern swig_type_170 _wrap_aiVertexWeightVector_capacity_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiVertexWeightVector_reserve_aig_29567bba180e4e84(uintptr_t arg1, swig_type_171 arg2); +extern _Bool _wrap_aiVertexWeightVector_isEmpty_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiVertexWeightVector_clear_aig_29567bba180e4e84(uintptr_t arg1); +extern void _wrap_aiVertexWeightVector_add_aig_29567bba180e4e84(uintptr_t arg1, uintptr_t arg2); +extern uintptr_t _wrap_aiVertexWeightVector_get_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2); +extern void _wrap_aiVertexWeightVector_set_aig_29567bba180e4e84(uintptr_t arg1, swig_intgo arg2, uintptr_t arg3); +extern void _wrap_delete_aiVertexWeightVector_aig_29567bba180e4e84(uintptr_t arg1); +#undef intgo +*/ +import "C" + +import ( + _ "runtime/cgo" + "sync" + "unsafe" +) + +type _ unsafe.Pointer + +var Swig_escape_always_false bool +var Swig_escape_val interface{} + +type _swig_fnptr *byte +type _swig_memberptr *byte + +type _ sync.Mutex + +type swig_gostring struct { + p uintptr + n int +} + +func swigCopyString(s string) string { + p := *(*swig_gostring)(unsafe.Pointer(&s)) + r := string((*[0x7fffffff]byte)(unsafe.Pointer(p.p))[:p.n]) + Swig_free(p.p) + return r +} + +func Swig_free(arg1 uintptr) { + _swig_i_0 := arg1 + C._wrap_Swig_free_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func Swig_malloc(arg1 int) (_swig_ret uintptr) { + var swig_r uintptr + _swig_i_0 := arg1 + swig_r = (uintptr)(C._wrap_Swig_malloc_aig_29567bba180e4e84(C.swig_intgo(_swig_i_0))) + return swig_r +} + +type SwigcptrAiLogStream uintptr + +func (p SwigcptrAiLogStream) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiLogStream) SwigIsAiLogStream() { +} + +func (arg1 SwigcptrAiLogStream) SetCallback(arg2 _swig_fnptr) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiLogStream_callback_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_1(_swig_i_1)) +} + +func (arg1 SwigcptrAiLogStream) GetCallback() (_swig_ret _swig_fnptr) { + var swig_r _swig_fnptr + _swig_i_0 := arg1 + swig_r = (_swig_fnptr)(C._wrap_aiLogStream_callback_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiLogStream) SetUser(arg2 string) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiLogStream_user_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), *(*C.swig_type_3)(unsafe.Pointer(&_swig_i_1))) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } +} + +func (arg1 SwigcptrAiLogStream) GetUser() (_swig_ret string) { + var swig_r string + _swig_i_0 := arg1 + swig_r_p := C._wrap_aiLogStream_user_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) + swig_r = *(*string)(unsafe.Pointer(&swig_r_p)) + var swig_r_1 string + swig_r_1 = swigCopyString(swig_r) + return swig_r_1 +} + +func NewAiLogStream() (_swig_ret AiLogStream) { + var swig_r AiLogStream + swig_r = (AiLogStream)(SwigcptrAiLogStream(C._wrap_new_aiLogStream_aig_29567bba180e4e84())) + return swig_r +} + +func DeleteAiLogStream(arg1 AiLogStream) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiLogStream_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiLogStream interface { + Swigcptr() uintptr + SwigIsAiLogStream() + SetCallback(arg2 _swig_fnptr) + GetCallback() (_swig_ret _swig_fnptr) + SetUser(arg2 string) + GetUser() (_swig_ret string) +} + +type SwigcptrAiPropertyStore uintptr + +func (p SwigcptrAiPropertyStore) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiPropertyStore) SwigIsAiPropertyStore() { +} + +func (arg1 SwigcptrAiPropertyStore) SetSentinel(arg2 byte) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiPropertyStore_sentinel_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.char(_swig_i_1)) +} + +func (arg1 SwigcptrAiPropertyStore) GetSentinel() (_swig_ret byte) { + var swig_r byte + _swig_i_0 := arg1 + swig_r = (byte)(C._wrap_aiPropertyStore_sentinel_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func NewAiPropertyStore() (_swig_ret AiPropertyStore) { + var swig_r AiPropertyStore + swig_r = (AiPropertyStore)(SwigcptrAiPropertyStore(C._wrap_new_aiPropertyStore_aig_29567bba180e4e84())) + return swig_r +} + +func DeleteAiPropertyStore(arg1 AiPropertyStore) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiPropertyStore_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiPropertyStore interface { + Swigcptr() uintptr + SwigIsAiPropertyStore() + SetSentinel(arg2 byte) + GetSentinel() (_swig_ret byte) +} + +const AI_FALSE int = 0 +const AI_TRUE int = 1 + +func AiImportFile(arg1 string, arg2 uint) (_swig_ret AiScene) { + var swig_r AiScene + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiScene)(SwigcptrAiScene(C._wrap_aiImportFile_aig_29567bba180e4e84(*(*C.swig_type_5)(unsafe.Pointer(&_swig_i_0)), C.swig_intgo(_swig_i_1)))) + if Swig_escape_always_false { + Swig_escape_val = arg1 + } + return swig_r +} + +func AiImportFileEx(arg1 string, arg2 uint, arg3 AiFileIO) (_swig_ret AiScene) { + var swig_r AiScene + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + swig_r = (AiScene)(SwigcptrAiScene(C._wrap_aiImportFileEx_aig_29567bba180e4e84(*(*C.swig_type_6)(unsafe.Pointer(&_swig_i_0)), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)))) + if Swig_escape_always_false { + Swig_escape_val = arg1 + } + return swig_r +} + +func AiImportFileExWithProperties(arg1 string, arg2 uint, arg3 AiFileIO, arg4 AiPropertyStore) (_swig_ret AiScene) { + var swig_r AiScene + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + _swig_i_3 := arg4.Swigcptr() + swig_r = (AiScene)(SwigcptrAiScene(C._wrap_aiImportFileExWithProperties_aig_29567bba180e4e84(*(*C.swig_type_7)(unsafe.Pointer(&_swig_i_0)), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2), C.uintptr_t(_swig_i_3)))) + if Swig_escape_always_false { + Swig_escape_val = arg1 + } + return swig_r +} + +func AiImportFileFromMemory(arg1 string, arg2 uint, arg3 uint, arg4 string) (_swig_ret AiScene) { + var swig_r AiScene + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3 + _swig_i_3 := arg4 + swig_r = (AiScene)(SwigcptrAiScene(C._wrap_aiImportFileFromMemory_aig_29567bba180e4e84(*(*C.swig_type_8)(unsafe.Pointer(&_swig_i_0)), C.swig_intgo(_swig_i_1), C.swig_intgo(_swig_i_2), *(*C.swig_type_9)(unsafe.Pointer(&_swig_i_3))))) + if Swig_escape_always_false { + Swig_escape_val = arg1 + } + if Swig_escape_always_false { + Swig_escape_val = arg4 + } + return swig_r +} + +func AiImportFileFromMemoryWithProperties(arg1 string, arg2 uint, arg3 uint, arg4 string, arg5 AiPropertyStore) (_swig_ret AiScene) { + var swig_r AiScene + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3 + _swig_i_3 := arg4 + _swig_i_4 := arg5.Swigcptr() + swig_r = (AiScene)(SwigcptrAiScene(C._wrap_aiImportFileFromMemoryWithProperties_aig_29567bba180e4e84(*(*C.swig_type_10)(unsafe.Pointer(&_swig_i_0)), C.swig_intgo(_swig_i_1), C.swig_intgo(_swig_i_2), *(*C.swig_type_11)(unsafe.Pointer(&_swig_i_3)), C.uintptr_t(_swig_i_4)))) + if Swig_escape_always_false { + Swig_escape_val = arg1 + } + if Swig_escape_always_false { + Swig_escape_val = arg4 + } + return swig_r +} + +func AiApplyPostProcessing(arg1 AiScene, arg2 uint) (_swig_ret AiScene) { + var swig_r AiScene + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + swig_r = (AiScene)(SwigcptrAiScene(C._wrap_aiApplyPostProcessing_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func AiGetPredefinedLogStream(arg1 AiDefaultLogStream, arg2 string) (_swig_ret AiLogStream) { + var swig_r AiLogStream + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiLogStream)(SwigcptrAiLogStream(C._wrap_aiGetPredefinedLogStream_aig_29567bba180e4e84(C.swig_intgo(_swig_i_0), *(*C.swig_type_12)(unsafe.Pointer(&_swig_i_1))))) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } + return swig_r +} + +func AiAttachLogStream(arg1 AiLogStream) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_aiAttachLogStream_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func AiEnableVerboseLogging(arg1 int) { + _swig_i_0 := arg1 + C._wrap_aiEnableVerboseLogging_aig_29567bba180e4e84(C.swig_intgo(_swig_i_0)) +} + +func AiDetachLogStream(arg1 AiLogStream) (_swig_ret AiReturn) { + var swig_r AiReturn + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiReturn)(C._wrap_aiDetachLogStream_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func AiDetachAllLogStreams() { + C._wrap_aiDetachAllLogStreams_aig_29567bba180e4e84() +} + +func AiReleaseImport(arg1 AiScene) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_aiReleaseImport_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func AiGetErrorString() (_swig_ret string) { + var swig_r string + swig_r_p := C._wrap_aiGetErrorString_aig_29567bba180e4e84() + swig_r = *(*string)(unsafe.Pointer(&swig_r_p)) + var swig_r_1 string + swig_r_1 = swigCopyString(swig_r) + return swig_r_1 +} + +func AiIsExtensionSupported(arg1 string) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1 + swig_r = (int)(C._wrap_aiIsExtensionSupported_aig_29567bba180e4e84(*(*C.swig_type_14)(unsafe.Pointer(&_swig_i_0)))) + if Swig_escape_always_false { + Swig_escape_val = arg1 + } + return swig_r +} + +func AiGetExtensionList(arg1 AiString) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_aiGetExtensionList_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func AiGetMemoryRequirements(arg1 AiScene, arg2 AiMemoryInfo) { + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiGetMemoryRequirements_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func AiCreatePropertyStore() (_swig_ret AiPropertyStore) { + var swig_r AiPropertyStore + swig_r = (AiPropertyStore)(SwigcptrAiPropertyStore(C._wrap_aiCreatePropertyStore_aig_29567bba180e4e84())) + return swig_r +} + +func AiReleasePropertyStore(arg1 AiPropertyStore) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_aiReleasePropertyStore_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func AiSetImportPropertyInteger(arg1 AiPropertyStore, arg2 string, arg3 int) { + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + C._wrap_aiSetImportPropertyInteger_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), *(*C.swig_type_15)(unsafe.Pointer(&_swig_i_1)), C.swig_intgo(_swig_i_2)) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } +} + +func AiSetImportPropertyFloat(arg1 AiPropertyStore, arg2 string, arg3 Ai_real) { + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiSetImportPropertyFloat_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), *(*C.swig_type_16)(unsafe.Pointer(&_swig_i_1)), C.uintptr_t(_swig_i_2)) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } +} + +func AiSetImportPropertyString(arg1 AiPropertyStore, arg2 string, arg3 AiString) { + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiSetImportPropertyString_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), *(*C.swig_type_17)(unsafe.Pointer(&_swig_i_1)), C.uintptr_t(_swig_i_2)) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } +} + +func AiSetImportPropertyMatrix(arg1 AiPropertyStore, arg2 string, arg3 AiMatrix4x4) { + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiSetImportPropertyMatrix_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), *(*C.swig_type_18)(unsafe.Pointer(&_swig_i_1)), C.uintptr_t(_swig_i_2)) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } +} + +func AiCreateQuaternionFromMatrix(arg1 AiQuaternion, arg2 AiMatrix3x3) { + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiCreateQuaternionFromMatrix_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func AiDecomposeMatrix(arg1 AiMatrix4x4, arg2 AiVector3D, arg3 AiQuaternion, arg4 AiVector3D) { + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2.Swigcptr() + _swig_i_2 := arg3.Swigcptr() + _swig_i_3 := arg4.Swigcptr() + C._wrap_aiDecomposeMatrix_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1), C.uintptr_t(_swig_i_2), C.uintptr_t(_swig_i_3)) +} + +func AiTransposeMatrix4(arg1 AiMatrix4x4) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_aiTransposeMatrix4_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func AiTransposeMatrix3(arg1 AiMatrix3x3) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_aiTransposeMatrix3_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func AiTransformVecByMatrix3(arg1 AiVector3D, arg2 AiMatrix3x3) { + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiTransformVecByMatrix3_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func AiTransformVecByMatrix4(arg1 AiVector3D, arg2 AiMatrix4x4) { + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiTransformVecByMatrix4_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func AiMultiplyMatrix4(arg1 AiMatrix4x4, arg2 AiMatrix4x4) { + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiMultiplyMatrix4_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func AiMultiplyMatrix3(arg1 AiMatrix3x3, arg2 AiMatrix3x3) { + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiMultiplyMatrix3_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func AiIdentityMatrix3(arg1 AiMatrix3x3) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_aiIdentityMatrix3_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func AiIdentityMatrix4(arg1 AiMatrix4x4) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_aiIdentityMatrix4_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func AiGetImportFormatCount() (_swig_ret int64) { + var swig_r int64 + swig_r = (int64)(C._wrap_aiGetImportFormatCount_aig_29567bba180e4e84()) + return swig_r +} + +func AiGetImportFormatDescription(arg1 int64) (_swig_ret AiImporterDesc) { + var swig_r AiImporterDesc + _swig_i_0 := arg1 + swig_r = (AiImporterDesc)(SwigcptrAiImporterDesc(C._wrap_aiGetImportFormatDescription_aig_29567bba180e4e84(C.swig_type_20(_swig_i_0)))) + return swig_r +} + +type SwigcptrAiNode uintptr + +func (p SwigcptrAiNode) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiNode) SwigIsAiNode() { +} + +func (arg1 SwigcptrAiNode) SetMName(arg2 AiString) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiNode_mName_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiNode) GetMName() (_swig_ret AiString) { + var swig_r AiString + _swig_i_0 := arg1 + swig_r = (AiString)(SwigcptrAiString(C._wrap_aiNode_mName_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiNode) SetMTransformation(arg2 AiMatrix4x4) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiNode_mTransformation_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiNode) GetMTransformation() (_swig_ret AiMatrix4x4) { + var swig_r AiMatrix4x4 + _swig_i_0 := arg1 + swig_r = (AiMatrix4x4)(SwigcptrAiMatrix4x4(C._wrap_aiNode_mTransformation_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiNode) SetMParent(arg2 AiNode) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiNode_mParent_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiNode) GetMParent() (_swig_ret AiNode) { + var swig_r AiNode + _swig_i_0 := arg1 + swig_r = (AiNode)(SwigcptrAiNode(C._wrap_aiNode_mParent_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiNode) SetMNumChildren(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiNode_mNumChildren_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiNode) GetMNumChildren() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiNode_mNumChildren_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiNode) SetMNumMeshes(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiNode_mNumMeshes_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiNode) GetMNumMeshes() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiNode_mNumMeshes_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiNode) SetMMetaData(arg2 AiMetadata) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiNode_mMetaData_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiNode) GetMMetaData() (_swig_ret AiMetadata) { + var swig_r AiMetadata + _swig_i_0 := arg1 + swig_r = (AiMetadata)(SwigcptrAiMetadata(C._wrap_aiNode_mMetaData_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiNode__SWIG_0() (_swig_ret AiNode) { + var swig_r AiNode + swig_r = (AiNode)(SwigcptrAiNode(C._wrap_new_aiNode__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiNode__SWIG_1(arg1 string) (_swig_ret AiNode) { + var swig_r AiNode + _swig_i_0 := arg1 + swig_r = (AiNode)(SwigcptrAiNode(C._wrap_new_aiNode__SWIG_1_aig_29567bba180e4e84(*(*C.swig_type_21)(unsafe.Pointer(&_swig_i_0))))) + if Swig_escape_always_false { + Swig_escape_val = arg1 + } + return swig_r +} + +func NewAiNode(a ...interface{}) AiNode { + argc := len(a) + if argc == 0 { + return NewAiNode__SWIG_0() + } + if argc == 1 { + return NewAiNode__SWIG_1(a[0].(string)) + } + panic("No match for overloaded function call") +} + +func DeleteAiNode(arg1 AiNode) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiNode_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiNode) FindNode__SWIG_0(arg2 AiString) (_swig_ret AiNode) { + var swig_r AiNode + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + swig_r = (AiNode)(SwigcptrAiNode(C._wrap_aiNode_FindNode__SWIG_0_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiNode) FindNode__SWIG_1(arg2 AiString) (_swig_ret AiNode) { + var swig_r AiNode + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + swig_r = (AiNode)(SwigcptrAiNode(C._wrap_aiNode_FindNode__SWIG_1_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiNode) FindNode__SWIG_2(arg2 string) (_swig_ret AiNode) { + var swig_r AiNode + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiNode)(SwigcptrAiNode(C._wrap_aiNode_FindNode__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), *(*C.swig_type_22)(unsafe.Pointer(&_swig_i_1))))) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } + return swig_r +} + +func (arg1 SwigcptrAiNode) FindNode__SWIG_3(arg2 string) (_swig_ret AiNode) { + var swig_r AiNode + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiNode)(SwigcptrAiNode(C._wrap_aiNode_FindNode__SWIG_3_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), *(*C.swig_type_23)(unsafe.Pointer(&_swig_i_1))))) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } + return swig_r +} + +func (p SwigcptrAiNode) FindNode(a ...interface{}) interface{} { + argc := len(a) + if argc == 1 { + if _, ok := a[0].(SwigcptrAiString); !ok { + goto check_1 + } + return p.FindNode__SWIG_0(a[0].(AiString)) + } +check_1: + if argc == 1 { + if _, ok := a[0].(SwigcptrAiString); !ok { + goto check_2 + } + return p.FindNode__SWIG_1(a[0].(AiString)) + } +check_2: + if argc == 1 { + return p.FindNode__SWIG_2(a[0].(string)) + } + if argc == 1 { + return p.FindNode__SWIG_3(a[0].(string)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiNode) AddChildren(arg2 uint, arg3 AiNode) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiNode_addChildren_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func (arg1 SwigcptrAiNode) MChildren() (_swig_ret AiNodeVector) { + var swig_r AiNodeVector + _swig_i_0 := arg1 + swig_r = (AiNodeVector)(SwigcptrAiNodeVector(C._wrap_aiNode_mChildren_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiNode) MMeshes() (_swig_ret UintVector) { + var swig_r UintVector + _swig_i_0 := arg1 + swig_r = (UintVector)(SwigcptrUintVector(C._wrap_aiNode_mMeshes_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +type AiNode interface { + Swigcptr() uintptr + SwigIsAiNode() + SetMName(arg2 AiString) + GetMName() (_swig_ret AiString) + SetMTransformation(arg2 AiMatrix4x4) + GetMTransformation() (_swig_ret AiMatrix4x4) + SetMParent(arg2 AiNode) + GetMParent() (_swig_ret AiNode) + SetMNumChildren(arg2 uint) + GetMNumChildren() (_swig_ret uint) + SetMNumMeshes(arg2 uint) + GetMNumMeshes() (_swig_ret uint) + SetMMetaData(arg2 AiMetadata) + GetMMetaData() (_swig_ret AiMetadata) + FindNode(a ...interface{}) interface{} + AddChildren(arg2 uint, arg3 AiNode) + MChildren() (_swig_ret AiNodeVector) + MMeshes() (_swig_ret UintVector) +} + +const AI_SCENE_FLAGS_INCOMPLETE int = 0x1 +const AI_SCENE_FLAGS_VALIDATED int = 0x2 +const AI_SCENE_FLAGS_VALIDATION_WARNING int = 0x4 +const AI_SCENE_FLAGS_NON_VERBOSE_FORMAT int = 0x8 +const AI_SCENE_FLAGS_TERRAIN int = 0x10 +const AI_SCENE_FLAGS_ALLOW_SHARED int = 0x20 + +type SwigcptrAiScene uintptr + +func (p SwigcptrAiScene) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiScene) SwigIsAiScene() { +} + +func (arg1 SwigcptrAiScene) SetMFlags(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiScene_mFlags_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiScene) GetMFlags() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiScene_mFlags_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiScene) SetMRootNode(arg2 AiNode) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiScene_mRootNode_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiScene) GetMRootNode() (_swig_ret AiNode) { + var swig_r AiNode + _swig_i_0 := arg1 + swig_r = (AiNode)(SwigcptrAiNode(C._wrap_aiScene_mRootNode_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiScene) SetMNumMeshes(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiScene_mNumMeshes_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiScene) GetMNumMeshes() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiScene_mNumMeshes_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiScene) SetMNumMaterials(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiScene_mNumMaterials_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiScene) GetMNumMaterials() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiScene_mNumMaterials_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiScene) SetMNumAnimations(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiScene_mNumAnimations_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiScene) GetMNumAnimations() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiScene_mNumAnimations_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiScene) SetMNumTextures(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiScene_mNumTextures_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiScene) GetMNumTextures() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiScene_mNumTextures_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiScene) SetMNumLights(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiScene_mNumLights_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiScene) GetMNumLights() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiScene_mNumLights_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiScene) SetMNumCameras(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiScene_mNumCameras_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiScene) GetMNumCameras() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiScene_mNumCameras_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiScene) SetMMetaData(arg2 AiMetadata) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiScene_mMetaData_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiScene) GetMMetaData() (_swig_ret AiMetadata) { + var swig_r AiMetadata + _swig_i_0 := arg1 + swig_r = (AiMetadata)(SwigcptrAiMetadata(C._wrap_aiScene_mMetaData_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiScene() (_swig_ret AiScene) { + var swig_r AiScene + swig_r = (AiScene)(SwigcptrAiScene(C._wrap_new_aiScene_aig_29567bba180e4e84())) + return swig_r +} + +func DeleteAiScene(arg1 AiScene) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiScene_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiScene) HasMeshes() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiScene_HasMeshes_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiScene) HasMaterials() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiScene_HasMaterials_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiScene) HasLights() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiScene_HasLights_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiScene) HasTextures() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiScene_HasTextures_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiScene) HasCameras() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiScene_HasCameras_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiScene) HasAnimations() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiScene_HasAnimations_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func AiSceneGetShortFilename(arg1 string) (_swig_ret string) { + var swig_r string + _swig_i_0 := arg1 + swig_r_p := C._wrap_aiScene_GetShortFilename_aig_29567bba180e4e84(*(*C.swig_type_25)(unsafe.Pointer(&_swig_i_0))) + swig_r = *(*string)(unsafe.Pointer(&swig_r_p)) + if Swig_escape_always_false { + Swig_escape_val = arg1 + } + var swig_r_1 string + swig_r_1 = swigCopyString(swig_r) + return swig_r_1 +} + +func (arg1 SwigcptrAiScene) GetEmbeddedTexture(arg2 string) (_swig_ret AiTexture) { + var swig_r AiTexture + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiTexture)(SwigcptrAiTexture(C._wrap_aiScene_GetEmbeddedTexture_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), *(*C.swig_type_26)(unsafe.Pointer(&_swig_i_1))))) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } + return swig_r +} + +func (arg1 SwigcptrAiScene) SetMPrivate(arg2 uintptr) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiScene_mPrivate_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiScene) GetMPrivate() (_swig_ret uintptr) { + var swig_r uintptr + _swig_i_0 := arg1 + swig_r = (uintptr)(C._wrap_aiScene_mPrivate_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiScene) MAnimations() (_swig_ret AiAnimationVector) { + var swig_r AiAnimationVector + _swig_i_0 := arg1 + swig_r = (AiAnimationVector)(SwigcptrAiAnimationVector(C._wrap_aiScene_mAnimations_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiScene) MCameras() (_swig_ret AiCameraVector) { + var swig_r AiCameraVector + _swig_i_0 := arg1 + swig_r = (AiCameraVector)(SwigcptrAiCameraVector(C._wrap_aiScene_mCameras_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiScene) MLights() (_swig_ret AiLightVector) { + var swig_r AiLightVector + _swig_i_0 := arg1 + swig_r = (AiLightVector)(SwigcptrAiLightVector(C._wrap_aiScene_mLights_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiScene) MMaterials() (_swig_ret AiMaterialVector) { + var swig_r AiMaterialVector + _swig_i_0 := arg1 + swig_r = (AiMaterialVector)(SwigcptrAiMaterialVector(C._wrap_aiScene_mMaterials_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiScene) MMeshes() (_swig_ret AiMeshVector) { + var swig_r AiMeshVector + _swig_i_0 := arg1 + swig_r = (AiMeshVector)(SwigcptrAiMeshVector(C._wrap_aiScene_mMeshes_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiScene) MTextures() (_swig_ret AiTextureVector) { + var swig_r AiTextureVector + _swig_i_0 := arg1 + swig_r = (AiTextureVector)(SwigcptrAiTextureVector(C._wrap_aiScene_mTextures_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +type AiScene interface { + Swigcptr() uintptr + SwigIsAiScene() + SetMFlags(arg2 uint) + GetMFlags() (_swig_ret uint) + SetMRootNode(arg2 AiNode) + GetMRootNode() (_swig_ret AiNode) + SetMNumMeshes(arg2 uint) + GetMNumMeshes() (_swig_ret uint) + SetMNumMaterials(arg2 uint) + GetMNumMaterials() (_swig_ret uint) + SetMNumAnimations(arg2 uint) + GetMNumAnimations() (_swig_ret uint) + SetMNumTextures(arg2 uint) + GetMNumTextures() (_swig_ret uint) + SetMNumLights(arg2 uint) + GetMNumLights() (_swig_ret uint) + SetMNumCameras(arg2 uint) + GetMNumCameras() (_swig_ret uint) + SetMMetaData(arg2 AiMetadata) + GetMMetaData() (_swig_ret AiMetadata) + HasMeshes() (_swig_ret bool) + HasMaterials() (_swig_ret bool) + HasLights() (_swig_ret bool) + HasTextures() (_swig_ret bool) + HasCameras() (_swig_ret bool) + HasAnimations() (_swig_ret bool) + GetEmbeddedTexture(arg2 string) (_swig_ret AiTexture) + SetMPrivate(arg2 uintptr) + GetMPrivate() (_swig_ret uintptr) + MAnimations() (_swig_ret AiAnimationVector) + MCameras() (_swig_ret AiCameraVector) + MLights() (_swig_ret AiLightVector) + MMaterials() (_swig_ret AiMaterialVector) + MMeshes() (_swig_ret AiMeshVector) + MTextures() (_swig_ret AiTextureVector) +} + +const AI_MAX_FACE_INDICES int = 0x7fff +const AI_MAX_BONE_WEIGHTS int = 0x7fffffff +const AI_MAX_VERTICES int = 0x7fffffff +const AI_MAX_FACES int = 0x7fffffff +const AI_MAX_NUMBER_OF_COLOR_SETS int = 0x8 +const AI_MAX_NUMBER_OF_TEXTURECOORDS int = 0x8 + +type SwigcptrAiFace uintptr + +func (p SwigcptrAiFace) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiFace) SwigIsAiFace() { +} + +func (arg1 SwigcptrAiFace) SetMNumIndices(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiFace_mNumIndices_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiFace) GetMNumIndices() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiFace_mNumIndices_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func NewAiFace__SWIG_0() (_swig_ret AiFace) { + var swig_r AiFace + swig_r = (AiFace)(SwigcptrAiFace(C._wrap_new_aiFace__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func DeleteAiFace(arg1 AiFace) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiFace_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func NewAiFace__SWIG_1(arg1 AiFace) (_swig_ret AiFace) { + var swig_r AiFace + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiFace)(SwigcptrAiFace(C._wrap_new_aiFace__SWIG_1_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiFace(a ...interface{}) AiFace { + argc := len(a) + if argc == 0 { + return NewAiFace__SWIG_0() + } + if argc == 1 { + return NewAiFace__SWIG_1(a[0].(AiFace)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiFace) MIndices() (_swig_ret UintVector) { + var swig_r UintVector + _swig_i_0 := arg1 + swig_r = (UintVector)(SwigcptrUintVector(C._wrap_aiFace_mIndices_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +type AiFace interface { + Swigcptr() uintptr + SwigIsAiFace() + SetMNumIndices(arg2 uint) + GetMNumIndices() (_swig_ret uint) + MIndices() (_swig_ret UintVector) +} + +type SwigcptrAiVertexWeight uintptr + +func (p SwigcptrAiVertexWeight) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiVertexWeight) SwigIsAiVertexWeight() { +} + +func (arg1 SwigcptrAiVertexWeight) SetMVertexId(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiVertexWeight_mVertexId_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiVertexWeight) GetMVertexId() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiVertexWeight_mVertexId_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiVertexWeight) SetMWeight(arg2 float32) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiVertexWeight_mWeight_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.float(_swig_i_1)) +} + +func (arg1 SwigcptrAiVertexWeight) GetMWeight() (_swig_ret float32) { + var swig_r float32 + _swig_i_0 := arg1 + swig_r = (float32)(C._wrap_aiVertexWeight_mWeight_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func NewAiVertexWeight__SWIG_0() (_swig_ret AiVertexWeight) { + var swig_r AiVertexWeight + swig_r = (AiVertexWeight)(SwigcptrAiVertexWeight(C._wrap_new_aiVertexWeight__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiVertexWeight__SWIG_1(arg1 uint, arg2 float32) (_swig_ret AiVertexWeight) { + var swig_r AiVertexWeight + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiVertexWeight)(SwigcptrAiVertexWeight(C._wrap_new_aiVertexWeight__SWIG_1_aig_29567bba180e4e84(C.swig_intgo(_swig_i_0), C.float(_swig_i_1)))) + return swig_r +} + +func NewAiVertexWeight(a ...interface{}) AiVertexWeight { + argc := len(a) + if argc == 0 { + return NewAiVertexWeight__SWIG_0() + } + if argc == 2 { + return NewAiVertexWeight__SWIG_1(a[0].(uint), a[1].(float32)) + } + panic("No match for overloaded function call") +} + +func DeleteAiVertexWeight(arg1 AiVertexWeight) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiVertexWeight_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiVertexWeight interface { + Swigcptr() uintptr + SwigIsAiVertexWeight() + SetMVertexId(arg2 uint) + GetMVertexId() (_swig_ret uint) + SetMWeight(arg2 float32) + GetMWeight() (_swig_ret float32) +} + +type SwigcptrAiBone uintptr + +func (p SwigcptrAiBone) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiBone) SwigIsAiBone() { +} + +func (arg1 SwigcptrAiBone) SetMName(arg2 AiString) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiBone_mName_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiBone) GetMName() (_swig_ret AiString) { + var swig_r AiString + _swig_i_0 := arg1 + swig_r = (AiString)(SwigcptrAiString(C._wrap_aiBone_mName_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiBone) SetMNumWeights(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiBone_mNumWeights_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiBone) GetMNumWeights() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiBone_mNumWeights_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiBone) SetMOffsetMatrix(arg2 AiMatrix4x4) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiBone_mOffsetMatrix_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiBone) GetMOffsetMatrix() (_swig_ret AiMatrix4x4) { + var swig_r AiMatrix4x4 + _swig_i_0 := arg1 + swig_r = (AiMatrix4x4)(SwigcptrAiMatrix4x4(C._wrap_aiBone_mOffsetMatrix_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiBone__SWIG_0() (_swig_ret AiBone) { + var swig_r AiBone + swig_r = (AiBone)(SwigcptrAiBone(C._wrap_new_aiBone__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiBone__SWIG_1(arg1 AiBone) (_swig_ret AiBone) { + var swig_r AiBone + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiBone)(SwigcptrAiBone(C._wrap_new_aiBone__SWIG_1_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiBone(a ...interface{}) AiBone { + argc := len(a) + if argc == 0 { + return NewAiBone__SWIG_0() + } + if argc == 1 { + return NewAiBone__SWIG_1(a[0].(AiBone)) + } + panic("No match for overloaded function call") +} + +func DeleteAiBone(arg1 AiBone) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiBone_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiBone) MWeights() (_swig_ret AiVertexWeightVector) { + var swig_r AiVertexWeightVector + _swig_i_0 := arg1 + swig_r = (AiVertexWeightVector)(SwigcptrAiVertexWeightVector(C._wrap_aiBone_mWeights_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +type AiBone interface { + Swigcptr() uintptr + SwigIsAiBone() + SetMName(arg2 AiString) + GetMName() (_swig_ret AiString) + SetMNumWeights(arg2 uint) + GetMNumWeights() (_swig_ret uint) + SetMOffsetMatrix(arg2 AiMatrix4x4) + GetMOffsetMatrix() (_swig_ret AiMatrix4x4) + MWeights() (_swig_ret AiVertexWeightVector) +} + +type AiPrimitiveType int + +func _swig_getaiPrimitiveType_POINT() (_swig_ret AiPrimitiveType) { + var swig_r AiPrimitiveType + swig_r = (AiPrimitiveType)(C._wrap_aiPrimitiveType_POINT_aig_29567bba180e4e84()) + return swig_r +} + +var AiPrimitiveType_POINT AiPrimitiveType = _swig_getaiPrimitiveType_POINT() + +func _swig_getaiPrimitiveType_LINE() (_swig_ret AiPrimitiveType) { + var swig_r AiPrimitiveType + swig_r = (AiPrimitiveType)(C._wrap_aiPrimitiveType_LINE_aig_29567bba180e4e84()) + return swig_r +} + +var AiPrimitiveType_LINE AiPrimitiveType = _swig_getaiPrimitiveType_LINE() + +func _swig_getaiPrimitiveType_TRIANGLE() (_swig_ret AiPrimitiveType) { + var swig_r AiPrimitiveType + swig_r = (AiPrimitiveType)(C._wrap_aiPrimitiveType_TRIANGLE_aig_29567bba180e4e84()) + return swig_r +} + +var AiPrimitiveType_TRIANGLE AiPrimitiveType = _swig_getaiPrimitiveType_TRIANGLE() + +func _swig_getaiPrimitiveType_POLYGON() (_swig_ret AiPrimitiveType) { + var swig_r AiPrimitiveType + swig_r = (AiPrimitiveType)(C._wrap_aiPrimitiveType_POLYGON_aig_29567bba180e4e84()) + return swig_r +} + +var AiPrimitiveType_POLYGON AiPrimitiveType = _swig_getaiPrimitiveType_POLYGON() + +type SwigcptrAiAnimMesh uintptr + +func (p SwigcptrAiAnimMesh) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiAnimMesh) SwigIsAiAnimMesh() { +} + +func (arg1 SwigcptrAiAnimMesh) SetMName(arg2 AiString) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiAnimMesh_mName_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiAnimMesh) GetMName() (_swig_ret AiString) { + var swig_r AiString + _swig_i_0 := arg1 + swig_r = (AiString)(SwigcptrAiString(C._wrap_aiAnimMesh_mName_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMesh) SetMNumVertices(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiAnimMesh_mNumVertices_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiAnimMesh) GetMNumVertices() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiAnimMesh_mNumVertices_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMesh) SetMWeight(arg2 float32) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiAnimMesh_mWeight_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.float(_swig_i_1)) +} + +func (arg1 SwigcptrAiAnimMesh) GetMWeight() (_swig_ret float32) { + var swig_r float32 + _swig_i_0 := arg1 + swig_r = (float32)(C._wrap_aiAnimMesh_mWeight_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func NewAiAnimMesh() (_swig_ret AiAnimMesh) { + var swig_r AiAnimMesh + swig_r = (AiAnimMesh)(SwigcptrAiAnimMesh(C._wrap_new_aiAnimMesh_aig_29567bba180e4e84())) + return swig_r +} + +func DeleteAiAnimMesh(arg1 AiAnimMesh) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiAnimMesh_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiAnimMesh) HasPositions() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiAnimMesh_HasPositions_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMesh) HasNormals() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiAnimMesh_HasNormals_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMesh) HasTangentsAndBitangents() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiAnimMesh_HasTangentsAndBitangents_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMesh) HasVertexColors(arg2 uint) (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (bool)(C._wrap_aiAnimMesh_HasVertexColors_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMesh) HasTextureCoords(arg2 uint) (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (bool)(C._wrap_aiAnimMesh_HasTextureCoords_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMesh) MVertices() (_swig_ret AiVector3DVector) { + var swig_r AiVector3DVector + _swig_i_0 := arg1 + swig_r = (AiVector3DVector)(SwigcptrAiVector3DVector(C._wrap_aiAnimMesh_mVertices_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMesh) MNormals() (_swig_ret AiVector3DVector) { + var swig_r AiVector3DVector + _swig_i_0 := arg1 + swig_r = (AiVector3DVector)(SwigcptrAiVector3DVector(C._wrap_aiAnimMesh_mNormals_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMesh) MTangents() (_swig_ret AiVector3DVector) { + var swig_r AiVector3DVector + _swig_i_0 := arg1 + swig_r = (AiVector3DVector)(SwigcptrAiVector3DVector(C._wrap_aiAnimMesh_mTangents_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMesh) MBitangents() (_swig_ret AiVector3DVector) { + var swig_r AiVector3DVector + _swig_i_0 := arg1 + swig_r = (AiVector3DVector)(SwigcptrAiVector3DVector(C._wrap_aiAnimMesh_mBitangents_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMesh) MTextureCoords() (_swig_ret AiVector3DVectorVector) { + var swig_r AiVector3DVectorVector + _swig_i_0 := arg1 + swig_r = (AiVector3DVectorVector)(SwigcptrAiVector3DVectorVector(C._wrap_aiAnimMesh_mTextureCoords_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMesh) MColors() (_swig_ret AiColor4DVectorVector) { + var swig_r AiColor4DVectorVector + _swig_i_0 := arg1 + swig_r = (AiColor4DVectorVector)(SwigcptrAiColor4DVectorVector(C._wrap_aiAnimMesh_mColors_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +type AiAnimMesh interface { + Swigcptr() uintptr + SwigIsAiAnimMesh() + SetMName(arg2 AiString) + GetMName() (_swig_ret AiString) + SetMNumVertices(arg2 uint) + GetMNumVertices() (_swig_ret uint) + SetMWeight(arg2 float32) + GetMWeight() (_swig_ret float32) + HasPositions() (_swig_ret bool) + HasNormals() (_swig_ret bool) + HasTangentsAndBitangents() (_swig_ret bool) + HasVertexColors(arg2 uint) (_swig_ret bool) + HasTextureCoords(arg2 uint) (_swig_ret bool) + MVertices() (_swig_ret AiVector3DVector) + MNormals() (_swig_ret AiVector3DVector) + MTangents() (_swig_ret AiVector3DVector) + MBitangents() (_swig_ret AiVector3DVector) + MTextureCoords() (_swig_ret AiVector3DVectorVector) + MColors() (_swig_ret AiColor4DVectorVector) +} + +type AiMorphingMethod int + +func _swig_getaiMorphingMethod_VERTEX_BLEND() (_swig_ret AiMorphingMethod) { + var swig_r AiMorphingMethod + swig_r = (AiMorphingMethod)(C._wrap_aiMorphingMethod_VERTEX_BLEND_aig_29567bba180e4e84()) + return swig_r +} + +var AiMorphingMethod_VERTEX_BLEND AiMorphingMethod = _swig_getaiMorphingMethod_VERTEX_BLEND() + +func _swig_getaiMorphingMethod_MORPH_NORMALIZED() (_swig_ret AiMorphingMethod) { + var swig_r AiMorphingMethod + swig_r = (AiMorphingMethod)(C._wrap_aiMorphingMethod_MORPH_NORMALIZED_aig_29567bba180e4e84()) + return swig_r +} + +var AiMorphingMethod_MORPH_NORMALIZED AiMorphingMethod = _swig_getaiMorphingMethod_MORPH_NORMALIZED() + +func _swig_getaiMorphingMethod_MORPH_RELATIVE() (_swig_ret AiMorphingMethod) { + var swig_r AiMorphingMethod + swig_r = (AiMorphingMethod)(C._wrap_aiMorphingMethod_MORPH_RELATIVE_aig_29567bba180e4e84()) + return swig_r +} + +var AiMorphingMethod_MORPH_RELATIVE AiMorphingMethod = _swig_getaiMorphingMethod_MORPH_RELATIVE() + +type SwigcptrAiMesh uintptr + +func (p SwigcptrAiMesh) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiMesh) SwigIsAiMesh() { +} + +func (arg1 SwigcptrAiMesh) SetMPrimitiveTypes(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiMesh_mPrimitiveTypes_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiMesh) GetMPrimitiveTypes() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiMesh_mPrimitiveTypes_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) SetMNumVertices(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiMesh_mNumVertices_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiMesh) GetMNumVertices() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiMesh_mNumVertices_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) SetMNumFaces(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiMesh_mNumFaces_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiMesh) GetMNumFaces() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiMesh_mNumFaces_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) SetMNumBones(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiMesh_mNumBones_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiMesh) GetMNumBones() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiMesh_mNumBones_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) SetMMaterialIndex(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiMesh_mMaterialIndex_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiMesh) GetMMaterialIndex() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiMesh_mMaterialIndex_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) SetMName(arg2 AiString) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiMesh_mName_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiMesh) GetMName() (_swig_ret AiString) { + var swig_r AiString + _swig_i_0 := arg1 + swig_r = (AiString)(SwigcptrAiString(C._wrap_aiMesh_mName_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) SetMNumAnimMeshes(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiMesh_mNumAnimMeshes_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiMesh) GetMNumAnimMeshes() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiMesh_mNumAnimMeshes_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) SetMMethod(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiMesh_mMethod_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrAiMesh) GetMMethod() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiMesh_mMethod_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) SetMAABB(arg2 AiAABB) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiMesh_mAABB_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiMesh) GetMAABB() (_swig_ret AiAABB) { + var swig_r AiAABB + _swig_i_0 := arg1 + swig_r = (AiAABB)(SwigcptrAiAABB(C._wrap_aiMesh_mAABB_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiMesh() (_swig_ret AiMesh) { + var swig_r AiMesh + swig_r = (AiMesh)(SwigcptrAiMesh(C._wrap_new_aiMesh_aig_29567bba180e4e84())) + return swig_r +} + +func DeleteAiMesh(arg1 AiMesh) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiMesh_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiMesh) HasPositions() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiMesh_HasPositions_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) HasFaces() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiMesh_HasFaces_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) HasNormals() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiMesh_HasNormals_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) HasTangentsAndBitangents() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiMesh_HasTangentsAndBitangents_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) HasVertexColors(arg2 uint) (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (bool)(C._wrap_aiMesh_HasVertexColors_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) HasTextureCoords(arg2 uint) (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (bool)(C._wrap_aiMesh_HasTextureCoords_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) GetNumUVChannels() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiMesh_GetNumUVChannels_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) GetNumColorChannels() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_aiMesh_GetNumColorChannels_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) HasBones() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiMesh_HasBones_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) MAnimMeshes() (_swig_ret AiAnimMeshVector) { + var swig_r AiAnimMeshVector + _swig_i_0 := arg1 + swig_r = (AiAnimMeshVector)(SwigcptrAiAnimMeshVector(C._wrap_aiMesh_mAnimMeshes_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) MBones() (_swig_ret AiBonesVector) { + var swig_r AiBonesVector + _swig_i_0 := arg1 + swig_r = (AiBonesVector)(SwigcptrAiBonesVector(C._wrap_aiMesh_mBones_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) MNumUVComponents() (_swig_ret UintVector) { + var swig_r UintVector + _swig_i_0 := arg1 + swig_r = (UintVector)(SwigcptrUintVector(C._wrap_aiMesh_mNumUVComponents_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) MVertices() (_swig_ret AiVector3DVector) { + var swig_r AiVector3DVector + _swig_i_0 := arg1 + swig_r = (AiVector3DVector)(SwigcptrAiVector3DVector(C._wrap_aiMesh_mVertices_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) MNormals() (_swig_ret AiVector3DVector) { + var swig_r AiVector3DVector + _swig_i_0 := arg1 + swig_r = (AiVector3DVector)(SwigcptrAiVector3DVector(C._wrap_aiMesh_mNormals_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) MTangents() (_swig_ret AiVector3DVector) { + var swig_r AiVector3DVector + _swig_i_0 := arg1 + swig_r = (AiVector3DVector)(SwigcptrAiVector3DVector(C._wrap_aiMesh_mTangents_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) MBitangents() (_swig_ret AiVector3DVector) { + var swig_r AiVector3DVector + _swig_i_0 := arg1 + swig_r = (AiVector3DVector)(SwigcptrAiVector3DVector(C._wrap_aiMesh_mBitangents_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) MFaces() (_swig_ret AiFaceVector) { + var swig_r AiFaceVector + _swig_i_0 := arg1 + swig_r = (AiFaceVector)(SwigcptrAiFaceVector(C._wrap_aiMesh_mFaces_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) MTextureCoords() (_swig_ret AiVector3DVectorVector) { + var swig_r AiVector3DVectorVector + _swig_i_0 := arg1 + swig_r = (AiVector3DVectorVector)(SwigcptrAiVector3DVectorVector(C._wrap_aiMesh_mTextureCoords_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrAiMesh) MColors() (_swig_ret AiColor4DVectorVector) { + var swig_r AiColor4DVectorVector + _swig_i_0 := arg1 + swig_r = (AiColor4DVectorVector)(SwigcptrAiColor4DVectorVector(C._wrap_aiMesh_mColors_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +type AiMesh interface { + Swigcptr() uintptr + SwigIsAiMesh() + SetMPrimitiveTypes(arg2 uint) + GetMPrimitiveTypes() (_swig_ret uint) + SetMNumVertices(arg2 uint) + GetMNumVertices() (_swig_ret uint) + SetMNumFaces(arg2 uint) + GetMNumFaces() (_swig_ret uint) + SetMNumBones(arg2 uint) + GetMNumBones() (_swig_ret uint) + SetMMaterialIndex(arg2 uint) + GetMMaterialIndex() (_swig_ret uint) + SetMName(arg2 AiString) + GetMName() (_swig_ret AiString) + SetMNumAnimMeshes(arg2 uint) + GetMNumAnimMeshes() (_swig_ret uint) + SetMMethod(arg2 uint) + GetMMethod() (_swig_ret uint) + SetMAABB(arg2 AiAABB) + GetMAABB() (_swig_ret AiAABB) + HasPositions() (_swig_ret bool) + HasFaces() (_swig_ret bool) + HasNormals() (_swig_ret bool) + HasTangentsAndBitangents() (_swig_ret bool) + HasVertexColors(arg2 uint) (_swig_ret bool) + HasTextureCoords(arg2 uint) (_swig_ret bool) + GetNumUVChannels() (_swig_ret uint) + GetNumColorChannels() (_swig_ret uint) + HasBones() (_swig_ret bool) + MAnimMeshes() (_swig_ret AiAnimMeshVector) + MBones() (_swig_ret AiBonesVector) + MNumUVComponents() (_swig_ret UintVector) + MVertices() (_swig_ret AiVector3DVector) + MNormals() (_swig_ret AiVector3DVector) + MTangents() (_swig_ret AiVector3DVector) + MBitangents() (_swig_ret AiVector3DVector) + MFaces() (_swig_ret AiFaceVector) + MTextureCoords() (_swig_ret AiVector3DVectorVector) + MColors() (_swig_ret AiColor4DVectorVector) +} + +const MAX_MEM_LEVEL int = 9 +const MAX_WBITS int = 15 +const SEEK_SET int = 0 +const SEEK_CUR int = 1 +const SEEK_END int = 2 +const ZLIB_VERSION string = "1.2.11.1-motley" +const ZLIB_VERNUM int = 0x12b1 +const ZLIB_VER_MAJOR int = 1 +const ZLIB_VER_MINOR int = 2 +const ZLIB_VER_REVISION int = 11 +const ZLIB_VER_SUBREVISION int = 1 + +type SwigcptrZ_stream uintptr + +func (p SwigcptrZ_stream) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrZ_stream) SwigIsZ_stream() { +} + +func (arg1 SwigcptrZ_stream) SetNext_in(arg2 *byte) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_z_stream_next_in_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_voidp(_swig_i_1)) +} + +func (arg1 SwigcptrZ_stream) GetNext_in() (_swig_ret *byte) { + var swig_r *byte + _swig_i_0 := arg1 + swig_r = (*byte)(C._wrap_z_stream_next_in_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrZ_stream) SetAvail_in(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_z_stream_avail_in_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrZ_stream) GetAvail_in() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_z_stream_avail_in_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrZ_stream) SetTotal_in(arg2 uint64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_z_stream_total_in_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_27(_swig_i_1)) +} + +func (arg1 SwigcptrZ_stream) GetTotal_in() (_swig_ret uint64) { + var swig_r uint64 + _swig_i_0 := arg1 + swig_r = (uint64)(C._wrap_z_stream_total_in_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrZ_stream) SetNext_out(arg2 *byte) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_z_stream_next_out_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_voidp(_swig_i_1)) +} + +func (arg1 SwigcptrZ_stream) GetNext_out() (_swig_ret *byte) { + var swig_r *byte + _swig_i_0 := arg1 + swig_r = (*byte)(C._wrap_z_stream_next_out_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrZ_stream) SetAvail_out(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_z_stream_avail_out_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrZ_stream) GetAvail_out() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_z_stream_avail_out_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrZ_stream) SetTotal_out(arg2 uint64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_z_stream_total_out_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_29(_swig_i_1)) +} + +func (arg1 SwigcptrZ_stream) GetTotal_out() (_swig_ret uint64) { + var swig_r uint64 + _swig_i_0 := arg1 + swig_r = (uint64)(C._wrap_z_stream_total_out_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrZ_stream) SetMsg(arg2 string) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_z_stream_msg_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), *(*C.swig_type_31)(unsafe.Pointer(&_swig_i_1))) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } +} + +func (arg1 SwigcptrZ_stream) GetMsg() (_swig_ret string) { + var swig_r string + _swig_i_0 := arg1 + swig_r_p := C._wrap_z_stream_msg_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) + swig_r = *(*string)(unsafe.Pointer(&swig_r_p)) + var swig_r_1 string + swig_r_1 = swigCopyString(swig_r) + return swig_r_1 +} + +func (arg1 SwigcptrZ_stream) SetState(arg2 Internal_state) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_z_stream_state_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrZ_stream) GetState() (_swig_ret Internal_state) { + var swig_r Internal_state + _swig_i_0 := arg1 + swig_r = (Internal_state)(SwigcptrInternal_state(C._wrap_z_stream_state_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func (arg1 SwigcptrZ_stream) SetZalloc(arg2 _swig_fnptr) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_z_stream_zalloc_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_33(_swig_i_1)) +} + +func (arg1 SwigcptrZ_stream) GetZalloc() (_swig_ret _swig_fnptr) { + var swig_r _swig_fnptr + _swig_i_0 := arg1 + swig_r = (_swig_fnptr)(C._wrap_z_stream_zalloc_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrZ_stream) SetZfree(arg2 _swig_fnptr) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_z_stream_zfree_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_35(_swig_i_1)) +} + +func (arg1 SwigcptrZ_stream) GetZfree() (_swig_ret _swig_fnptr) { + var swig_r _swig_fnptr + _swig_i_0 := arg1 + swig_r = (_swig_fnptr)(C._wrap_z_stream_zfree_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrZ_stream) SetOpaque(arg2 uintptr) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_z_stream_opaque_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrZ_stream) GetOpaque() (_swig_ret uintptr) { + var swig_r uintptr + _swig_i_0 := arg1 + swig_r = (uintptr)(C._wrap_z_stream_opaque_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrZ_stream) SetData_type(arg2 int) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_z_stream_data_type_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrZ_stream) GetData_type() (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1 + swig_r = (int)(C._wrap_z_stream_data_type_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrZ_stream) SetAdler(arg2 uint64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_z_stream_adler_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_37(_swig_i_1)) +} + +func (arg1 SwigcptrZ_stream) GetAdler() (_swig_ret uint64) { + var swig_r uint64 + _swig_i_0 := arg1 + swig_r = (uint64)(C._wrap_z_stream_adler_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrZ_stream) SetReserved(arg2 uint64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_z_stream_reserved_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_39(_swig_i_1)) +} + +func (arg1 SwigcptrZ_stream) GetReserved() (_swig_ret uint64) { + var swig_r uint64 + _swig_i_0 := arg1 + swig_r = (uint64)(C._wrap_z_stream_reserved_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func NewZ_stream() (_swig_ret Z_stream) { + var swig_r Z_stream + swig_r = (Z_stream)(SwigcptrZ_stream(C._wrap_new_z_stream_aig_29567bba180e4e84())) + return swig_r +} + +func DeleteZ_stream(arg1 Z_stream) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_z_stream_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type Z_stream interface { + Swigcptr() uintptr + SwigIsZ_stream() + SetNext_in(arg2 *byte) + GetNext_in() (_swig_ret *byte) + SetAvail_in(arg2 uint) + GetAvail_in() (_swig_ret uint) + SetTotal_in(arg2 uint64) + GetTotal_in() (_swig_ret uint64) + SetNext_out(arg2 *byte) + GetNext_out() (_swig_ret *byte) + SetAvail_out(arg2 uint) + GetAvail_out() (_swig_ret uint) + SetTotal_out(arg2 uint64) + GetTotal_out() (_swig_ret uint64) + SetMsg(arg2 string) + GetMsg() (_swig_ret string) + SetState(arg2 Internal_state) + GetState() (_swig_ret Internal_state) + SetZalloc(arg2 _swig_fnptr) + GetZalloc() (_swig_ret _swig_fnptr) + SetZfree(arg2 _swig_fnptr) + GetZfree() (_swig_ret _swig_fnptr) + SetOpaque(arg2 uintptr) + GetOpaque() (_swig_ret uintptr) + SetData_type(arg2 int) + GetData_type() (_swig_ret int) + SetAdler(arg2 uint64) + GetAdler() (_swig_ret uint64) + SetReserved(arg2 uint64) + GetReserved() (_swig_ret uint64) +} + +type SwigcptrGz_header uintptr + +func (p SwigcptrGz_header) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrGz_header) SwigIsGz_header() { +} + +func (arg1 SwigcptrGz_header) SetText(arg2 int) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_gz_header_text_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrGz_header) GetText() (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1 + swig_r = (int)(C._wrap_gz_header_text_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrGz_header) SetTime(arg2 uint64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_gz_header_time_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_41(_swig_i_1)) +} + +func (arg1 SwigcptrGz_header) GetTime() (_swig_ret uint64) { + var swig_r uint64 + _swig_i_0 := arg1 + swig_r = (uint64)(C._wrap_gz_header_time_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrGz_header) SetXflags(arg2 int) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_gz_header_xflags_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrGz_header) GetXflags() (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1 + swig_r = (int)(C._wrap_gz_header_xflags_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrGz_header) SetOs(arg2 int) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_gz_header_os_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrGz_header) GetOs() (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1 + swig_r = (int)(C._wrap_gz_header_os_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrGz_header) SetExtra(arg2 *byte) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_gz_header_extra_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_voidp(_swig_i_1)) +} + +func (arg1 SwigcptrGz_header) GetExtra() (_swig_ret *byte) { + var swig_r *byte + _swig_i_0 := arg1 + swig_r = (*byte)(C._wrap_gz_header_extra_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrGz_header) SetExtra_len(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_gz_header_extra_len_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrGz_header) GetExtra_len() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_gz_header_extra_len_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrGz_header) SetExtra_max(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_gz_header_extra_max_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrGz_header) GetExtra_max() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_gz_header_extra_max_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrGz_header) SetName(arg2 *byte) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_gz_header_name_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_voidp(_swig_i_1)) +} + +func (arg1 SwigcptrGz_header) GetName() (_swig_ret *byte) { + var swig_r *byte + _swig_i_0 := arg1 + swig_r = (*byte)(C._wrap_gz_header_name_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrGz_header) SetName_max(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_gz_header_name_max_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrGz_header) GetName_max() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_gz_header_name_max_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrGz_header) SetComment(arg2 *byte) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_gz_header_comment_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_voidp(_swig_i_1)) +} + +func (arg1 SwigcptrGz_header) GetComment() (_swig_ret *byte) { + var swig_r *byte + _swig_i_0 := arg1 + swig_r = (*byte)(C._wrap_gz_header_comment_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrGz_header) SetComm_max(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_gz_header_comm_max_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrGz_header) GetComm_max() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_gz_header_comm_max_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrGz_header) SetHcrc(arg2 int) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_gz_header_hcrc_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrGz_header) GetHcrc() (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1 + swig_r = (int)(C._wrap_gz_header_hcrc_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrGz_header) SetDone(arg2 int) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_gz_header_done_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrGz_header) GetDone() (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1 + swig_r = (int)(C._wrap_gz_header_done_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func NewGz_header() (_swig_ret Gz_header) { + var swig_r Gz_header + swig_r = (Gz_header)(SwigcptrGz_header(C._wrap_new_gz_header_aig_29567bba180e4e84())) + return swig_r +} + +func DeleteGz_header(arg1 Gz_header) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_gz_header_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type Gz_header interface { + Swigcptr() uintptr + SwigIsGz_header() + SetText(arg2 int) + GetText() (_swig_ret int) + SetTime(arg2 uint64) + GetTime() (_swig_ret uint64) + SetXflags(arg2 int) + GetXflags() (_swig_ret int) + SetOs(arg2 int) + GetOs() (_swig_ret int) + SetExtra(arg2 *byte) + GetExtra() (_swig_ret *byte) + SetExtra_len(arg2 uint) + GetExtra_len() (_swig_ret uint) + SetExtra_max(arg2 uint) + GetExtra_max() (_swig_ret uint) + SetName(arg2 *byte) + GetName() (_swig_ret *byte) + SetName_max(arg2 uint) + GetName_max() (_swig_ret uint) + SetComment(arg2 *byte) + GetComment() (_swig_ret *byte) + SetComm_max(arg2 uint) + GetComm_max() (_swig_ret uint) + SetHcrc(arg2 int) + GetHcrc() (_swig_ret int) + SetDone(arg2 int) + GetDone() (_swig_ret int) +} + +const Z_NO_FLUSH int = 0 +const Z_PARTIAL_FLUSH int = 1 +const Z_SYNC_FLUSH int = 2 +const Z_FULL_FLUSH int = 3 +const Z_FINISH int = 4 +const Z_BLOCK int = 5 +const Z_TREES int = 6 +const Z_OK int = 0 +const Z_STREAM_END int = 1 +const Z_NEED_DICT int = 2 + +func _swig_getZ_ERRNO() (_swig_ret int) { + var swig_r int + swig_r = (int)(C._wrap_Z_ERRNO_aig_29567bba180e4e84()) + return swig_r +} + +var Z_ERRNO int = _swig_getZ_ERRNO() + +func _swig_getZ_STREAM_ERROR() (_swig_ret int) { + var swig_r int + swig_r = (int)(C._wrap_Z_STREAM_ERROR_aig_29567bba180e4e84()) + return swig_r +} + +var Z_STREAM_ERROR int = _swig_getZ_STREAM_ERROR() + +func _swig_getZ_DATA_ERROR() (_swig_ret int) { + var swig_r int + swig_r = (int)(C._wrap_Z_DATA_ERROR_aig_29567bba180e4e84()) + return swig_r +} + +var Z_DATA_ERROR int = _swig_getZ_DATA_ERROR() + +func _swig_getZ_MEM_ERROR() (_swig_ret int) { + var swig_r int + swig_r = (int)(C._wrap_Z_MEM_ERROR_aig_29567bba180e4e84()) + return swig_r +} + +var Z_MEM_ERROR int = _swig_getZ_MEM_ERROR() + +func _swig_getZ_BUF_ERROR() (_swig_ret int) { + var swig_r int + swig_r = (int)(C._wrap_Z_BUF_ERROR_aig_29567bba180e4e84()) + return swig_r +} + +var Z_BUF_ERROR int = _swig_getZ_BUF_ERROR() + +func _swig_getZ_VERSION_ERROR() (_swig_ret int) { + var swig_r int + swig_r = (int)(C._wrap_Z_VERSION_ERROR_aig_29567bba180e4e84()) + return swig_r +} + +var Z_VERSION_ERROR int = _swig_getZ_VERSION_ERROR() + +const Z_NO_COMPRESSION int = 0 +const Z_BEST_SPEED int = 1 +const Z_BEST_COMPRESSION int = 9 + +func _swig_getZ_DEFAULT_COMPRESSION() (_swig_ret int) { + var swig_r int + swig_r = (int)(C._wrap_Z_DEFAULT_COMPRESSION_aig_29567bba180e4e84()) + return swig_r +} + +var Z_DEFAULT_COMPRESSION int = _swig_getZ_DEFAULT_COMPRESSION() + +const Z_FILTERED int = 1 +const Z_HUFFMAN_ONLY int = 2 +const Z_RLE int = 3 +const Z_FIXED int = 4 +const Z_DEFAULT_STRATEGY int = 0 +const Z_BINARY int = 0 +const Z_TEXT int = 1 +const Z_ASCII int = 1 +const Z_UNKNOWN int = 2 +const Z_DEFLATED int = 8 +const Z_NULL int = 0 + +func ZlibVersion() (_swig_ret string) { + var swig_r string + swig_r_p := C._wrap_zlibVersion_aig_29567bba180e4e84() + swig_r = *(*string)(unsafe.Pointer(&swig_r_p)) + var swig_r_1 string + swig_r_1 = swigCopyString(swig_r) + return swig_r_1 +} + +func Deflate(arg1 Z_stream, arg2 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + swig_r = (int)(C._wrap_deflate_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1))) + return swig_r +} + +func DeflateEnd(arg1 Z_stream) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_deflateEnd_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func Inflate(arg1 Z_stream, arg2 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + swig_r = (int)(C._wrap_inflate_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1))) + return swig_r +} + +func InflateEnd(arg1 Z_stream) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_inflateEnd_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func DeflateSetDictionary(arg1 Z_stream, arg2 *byte, arg3 uint) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (int)(C._wrap_deflateSetDictionary_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_voidp(_swig_i_1), C.swig_intgo(_swig_i_2))) + return swig_r +} + +func DeflateGetDictionary(arg1 Z_stream, arg2 *byte, arg3 *uint) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (int)(C._wrap_deflateGetDictionary_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_voidp(_swig_i_1), C.swig_voidp(_swig_i_2))) + return swig_r +} + +func DeflateCopy(arg1 Z_stream, arg2 Z_stream) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2.Swigcptr() + swig_r = (int)(C._wrap_deflateCopy_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1))) + return swig_r +} + +func DeflateReset(arg1 Z_stream) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_deflateReset_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func DeflateParams(arg1 Z_stream, arg2 int, arg3 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (int)(C._wrap_deflateParams_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.swig_intgo(_swig_i_2))) + return swig_r +} + +func DeflateTune(arg1 Z_stream, arg2 int, arg3 int, arg4 int, arg5 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + _swig_i_3 := arg4 + _swig_i_4 := arg5 + swig_r = (int)(C._wrap_deflateTune_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.swig_intgo(_swig_i_2), C.swig_intgo(_swig_i_3), C.swig_intgo(_swig_i_4))) + return swig_r +} + +func DeflateBound(arg1 Z_stream, arg2 uint64) (_swig_ret uint64) { + var swig_r uint64 + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + swig_r = (uint64)(C._wrap_deflateBound_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_45(_swig_i_1))) + return swig_r +} + +func DeflatePending(arg1 Z_stream, arg2 *uint, arg3 *int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (int)(C._wrap_deflatePending_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_voidp(_swig_i_1), C.swig_voidp(_swig_i_2))) + return swig_r +} + +func DeflatePrime(arg1 Z_stream, arg2 int, arg3 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (int)(C._wrap_deflatePrime_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.swig_intgo(_swig_i_2))) + return swig_r +} + +func DeflateSetHeader(arg1 Z_stream, arg2 Gz_header) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2.Swigcptr() + swig_r = (int)(C._wrap_deflateSetHeader_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1))) + return swig_r +} + +func InflateSetDictionary(arg1 Z_stream, arg2 *byte, arg3 uint) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (int)(C._wrap_inflateSetDictionary_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_voidp(_swig_i_1), C.swig_intgo(_swig_i_2))) + return swig_r +} + +func InflateGetDictionary(arg1 Z_stream, arg2 *byte, arg3 *uint) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (int)(C._wrap_inflateGetDictionary_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_voidp(_swig_i_1), C.swig_voidp(_swig_i_2))) + return swig_r +} + +func InflateSync(arg1 Z_stream) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_inflateSync_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func InflateCopy(arg1 Z_stream, arg2 Z_stream) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2.Swigcptr() + swig_r = (int)(C._wrap_inflateCopy_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1))) + return swig_r +} + +func InflateReset(arg1 Z_stream) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_inflateReset_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func InflateReset2(arg1 Z_stream, arg2 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + swig_r = (int)(C._wrap_inflateReset2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1))) + return swig_r +} + +func InflatePrime(arg1 Z_stream, arg2 int, arg3 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (int)(C._wrap_inflatePrime_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.swig_intgo(_swig_i_2))) + return swig_r +} + +func InflateMark(arg1 Z_stream) (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1.Swigcptr() + swig_r = (int64)(C._wrap_inflateMark_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func InflateGetHeader(arg1 Z_stream, arg2 Gz_header) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2.Swigcptr() + swig_r = (int)(C._wrap_inflateGetHeader_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1))) + return swig_r +} + +func InflateBack(arg1 Z_stream, arg2 _swig_fnptr, arg3 uintptr, arg4 _swig_fnptr, arg5 uintptr) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + _swig_i_3 := arg4 + _swig_i_4 := arg5 + swig_r = (int)(C._wrap_inflateBack_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_47(_swig_i_1), C.uintptr_t(_swig_i_2), C.swig_type_48(_swig_i_3), C.uintptr_t(_swig_i_4))) + return swig_r +} + +func InflateBackEnd(arg1 Z_stream) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_inflateBackEnd_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func ZlibCompileFlags() (_swig_ret uint64) { + var swig_r uint64 + swig_r = (uint64)(C._wrap_zlibCompileFlags_aig_29567bba180e4e84()) + return swig_r +} + +func Compress(arg1 *byte, arg2 *uint64, arg3 *byte, arg4 uint64) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3 + _swig_i_3 := arg4 + swig_r = (int)(C._wrap_compress_aig_29567bba180e4e84(C.swig_voidp(_swig_i_0), C.swig_voidp(_swig_i_1), C.swig_voidp(_swig_i_2), C.swig_type_50(_swig_i_3))) + return swig_r +} + +func Compress2(arg1 *byte, arg2 *uint64, arg3 *byte, arg4 uint64, arg5 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3 + _swig_i_3 := arg4 + _swig_i_4 := arg5 + swig_r = (int)(C._wrap_compress2_aig_29567bba180e4e84(C.swig_voidp(_swig_i_0), C.swig_voidp(_swig_i_1), C.swig_voidp(_swig_i_2), C.swig_type_51(_swig_i_3), C.swig_intgo(_swig_i_4))) + return swig_r +} + +func CompressBound(arg1 uint64) (_swig_ret uint64) { + var swig_r uint64 + _swig_i_0 := arg1 + swig_r = (uint64)(C._wrap_compressBound_aig_29567bba180e4e84(C.swig_type_53(_swig_i_0))) + return swig_r +} + +func Uncompress(arg1 *byte, arg2 *uint64, arg3 *byte, arg4 uint64) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3 + _swig_i_3 := arg4 + swig_r = (int)(C._wrap_uncompress_aig_29567bba180e4e84(C.swig_voidp(_swig_i_0), C.swig_voidp(_swig_i_1), C.swig_voidp(_swig_i_2), C.swig_type_54(_swig_i_3))) + return swig_r +} + +func Uncompress2(arg1 *byte, arg2 *uint64, arg3 *byte, arg4 *uint64) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3 + _swig_i_3 := arg4 + swig_r = (int)(C._wrap_uncompress2_aig_29567bba180e4e84(C.swig_voidp(_swig_i_0), C.swig_voidp(_swig_i_1), C.swig_voidp(_swig_i_2), C.swig_voidp(_swig_i_3))) + return swig_r +} + +func Gzdopen(arg1 int, arg2 string) (_swig_ret GzFile_s) { + var swig_r GzFile_s + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (GzFile_s)(SwigcptrGzFile_s(C._wrap_gzdopen_aig_29567bba180e4e84(C.swig_intgo(_swig_i_0), *(*C.swig_type_55)(unsafe.Pointer(&_swig_i_1))))) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } + return swig_r +} + +func Gzbuffer(arg1 GzFile_s, arg2 uint) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + swig_r = (int)(C._wrap_gzbuffer_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1))) + return swig_r +} + +func Gzsetparams(arg1 GzFile_s, arg2 int, arg3 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (int)(C._wrap_gzsetparams_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.swig_intgo(_swig_i_2))) + return swig_r +} + +func Gzread(arg1 GzFile_s, arg2 uintptr, arg3 uint) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (int)(C._wrap_gzread_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1), C.swig_intgo(_swig_i_2))) + return swig_r +} + +func Gzfread(arg1 uintptr, arg2 int64, arg3 int64, arg4 GzFile_s) (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3 + _swig_i_3 := arg4.Swigcptr() + swig_r = (int64)(C._wrap_gzfread_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_57(_swig_i_1), C.swig_type_58(_swig_i_2), C.uintptr_t(_swig_i_3))) + return swig_r +} + +func Gzwrite(arg1 GzFile_s, arg2 uintptr, arg3 uint) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (int)(C._wrap_gzwrite_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1), C.swig_intgo(_swig_i_2))) + return swig_r +} + +func Gzfwrite(arg1 uintptr, arg2 int64, arg3 int64, arg4 GzFile_s) (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3 + _swig_i_3 := arg4.Swigcptr() + swig_r = (int64)(C._wrap_gzfwrite_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_60(_swig_i_1), C.swig_type_61(_swig_i_2), C.uintptr_t(_swig_i_3))) + return swig_r +} + +func Gzprintf(arg1 GzFile_s, arg2 string) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + swig_r = (int)(C._wrap_gzprintf_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), *(*C.swig_type_62)(unsafe.Pointer(&_swig_i_1)))) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } + return swig_r +} + +func Gzputs(arg1 GzFile_s, arg2 string) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + swig_r = (int)(C._wrap_gzputs_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), *(*C.swig_type_63)(unsafe.Pointer(&_swig_i_1)))) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } + return swig_r +} + +func Gzgets(arg1 GzFile_s, arg2 string, arg3 int) (_swig_ret string) { + var swig_r string + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r_p := C._wrap_gzgets_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), *(*C.swig_type_65)(unsafe.Pointer(&_swig_i_1)), C.swig_intgo(_swig_i_2)) + swig_r = *(*string)(unsafe.Pointer(&swig_r_p)) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } + var swig_r_1 string + swig_r_1 = swigCopyString(swig_r) + return swig_r_1 +} + +func Gzputc(arg1 GzFile_s, arg2 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + swig_r = (int)(C._wrap_gzputc_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1))) + return swig_r +} + +func Gzgetc(arg1 GzFile_s) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_gzgetc_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func Gzungetc(arg1 int, arg2 GzFile_s) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + swig_r = (int)(C._wrap_gzungetc_aig_29567bba180e4e84(C.swig_intgo(_swig_i_0), C.uintptr_t(_swig_i_1))) + return swig_r +} + +func Gzflush(arg1 GzFile_s, arg2 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + swig_r = (int)(C._wrap_gzflush_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1))) + return swig_r +} + +func Gzrewind(arg1 GzFile_s) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_gzrewind_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func Gzeof(arg1 GzFile_s) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_gzeof_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func Gzdirect(arg1 GzFile_s) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_gzdirect_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func Gzclose(arg1 GzFile_s) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_gzclose_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func Gzclose_r(arg1 GzFile_s) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_gzclose_r_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func Gzclose_w(arg1 GzFile_s) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_gzclose_w_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func Gzerror(arg1 GzFile_s, arg2 *int) (_swig_ret string) { + var swig_r string + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + swig_r_p := C._wrap_gzerror_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_voidp(_swig_i_1)) + swig_r = *(*string)(unsafe.Pointer(&swig_r_p)) + var swig_r_1 string + swig_r_1 = swigCopyString(swig_r) + return swig_r_1 +} + +func Gzclearerr(arg1 GzFile_s) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_gzclearerr_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func Adler32(arg1 uint64, arg2 *byte, arg3 uint) (_swig_ret uint64) { + var swig_r uint64 + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (uint64)(C._wrap_adler32_aig_29567bba180e4e84(C.swig_type_68(_swig_i_0), C.swig_voidp(_swig_i_1), C.swig_intgo(_swig_i_2))) + return swig_r +} + +func Adler32_z(arg1 uint64, arg2 *byte, arg3 int64) (_swig_ret uint64) { + var swig_r uint64 + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (uint64)(C._wrap_adler32_z_aig_29567bba180e4e84(C.swig_type_70(_swig_i_0), C.swig_voidp(_swig_i_1), C.swig_type_71(_swig_i_2))) + return swig_r +} + +func Crc32(arg1 uint64, arg2 *byte, arg3 uint) (_swig_ret uint64) { + var swig_r uint64 + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (uint64)(C._wrap_crc32_aig_29567bba180e4e84(C.swig_type_73(_swig_i_0), C.swig_voidp(_swig_i_1), C.swig_intgo(_swig_i_2))) + return swig_r +} + +func Crc32_z(arg1 uint64, arg2 *byte, arg3 int64) (_swig_ret uint64) { + var swig_r uint64 + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (uint64)(C._wrap_crc32_z_aig_29567bba180e4e84(C.swig_type_75(_swig_i_0), C.swig_voidp(_swig_i_1), C.swig_type_76(_swig_i_2))) + return swig_r +} + +func DeflateInit_(arg1 Z_stream, arg2 int, arg3 string, arg4 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + _swig_i_3 := arg4 + swig_r = (int)(C._wrap_deflateInit__aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), *(*C.swig_type_77)(unsafe.Pointer(&_swig_i_2)), C.swig_intgo(_swig_i_3))) + if Swig_escape_always_false { + Swig_escape_val = arg3 + } + return swig_r +} + +func InflateInit_(arg1 Z_stream, arg2 string, arg3 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (int)(C._wrap_inflateInit__aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), *(*C.swig_type_78)(unsafe.Pointer(&_swig_i_1)), C.swig_intgo(_swig_i_2))) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } + return swig_r +} + +func DeflateInit2_(arg1 Z_stream, arg2 int, arg3 int, arg4 int, arg5 int, arg6 int, arg7 string, arg8 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + _swig_i_3 := arg4 + _swig_i_4 := arg5 + _swig_i_5 := arg6 + _swig_i_6 := arg7 + _swig_i_7 := arg8 + swig_r = (int)(C._wrap_deflateInit2__aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.swig_intgo(_swig_i_2), C.swig_intgo(_swig_i_3), C.swig_intgo(_swig_i_4), C.swig_intgo(_swig_i_5), *(*C.swig_type_79)(unsafe.Pointer(&_swig_i_6)), C.swig_intgo(_swig_i_7))) + if Swig_escape_always_false { + Swig_escape_val = arg7 + } + return swig_r +} + +func InflateInit2_(arg1 Z_stream, arg2 int, arg3 string, arg4 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + _swig_i_3 := arg4 + swig_r = (int)(C._wrap_inflateInit2__aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), *(*C.swig_type_80)(unsafe.Pointer(&_swig_i_2)), C.swig_intgo(_swig_i_3))) + if Swig_escape_always_false { + Swig_escape_val = arg3 + } + return swig_r +} + +func InflateBackInit_(arg1 Z_stream, arg2 int, arg3 *byte, arg4 string, arg5 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3 + _swig_i_3 := arg4 + _swig_i_4 := arg5 + swig_r = (int)(C._wrap_inflateBackInit__aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.swig_voidp(_swig_i_2), *(*C.swig_type_81)(unsafe.Pointer(&_swig_i_3)), C.swig_intgo(_swig_i_4))) + if Swig_escape_always_false { + Swig_escape_val = arg4 + } + return swig_r +} + +type SwigcptrGzFile_s uintptr + +func (p SwigcptrGzFile_s) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrGzFile_s) SwigIsGzFile_s() { +} + +func (arg1 SwigcptrGzFile_s) SetHave(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_gzFile_s_have_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrGzFile_s) GetHave() (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + swig_r = (uint)(C._wrap_gzFile_s_have_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrGzFile_s) SetNext(arg2 *byte) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_gzFile_s_next_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_voidp(_swig_i_1)) +} + +func (arg1 SwigcptrGzFile_s) GetNext() (_swig_ret *byte) { + var swig_r *byte + _swig_i_0 := arg1 + swig_r = (*byte)(C._wrap_gzFile_s_next_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrGzFile_s) SetPos(arg2 Off_t) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_gzFile_s_pos_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrGzFile_s) GetPos() (_swig_ret Off_t) { + var swig_r Off_t + _swig_i_0 := arg1 + swig_r = (Off_t)(SwigcptrOff_t(C._wrap_gzFile_s_pos_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewGzFile_s() (_swig_ret GzFile_s) { + var swig_r GzFile_s + swig_r = (GzFile_s)(SwigcptrGzFile_s(C._wrap_new_gzFile_s_aig_29567bba180e4e84())) + return swig_r +} + +func DeleteGzFile_s(arg1 GzFile_s) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_gzFile_s_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type GzFile_s interface { + Swigcptr() uintptr + SwigIsGzFile_s() + SetHave(arg2 uint) + GetHave() (_swig_ret uint) + SetNext(arg2 *byte) + GetNext() (_swig_ret *byte) + SetPos(arg2 Off_t) + GetPos() (_swig_ret Off_t) +} + +func Gzgetc_(arg1 GzFile_s) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_gzgetc__aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func Gzopen(arg1 string, arg2 string) (_swig_ret GzFile_s) { + var swig_r GzFile_s + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (GzFile_s)(SwigcptrGzFile_s(C._wrap_gzopen_aig_29567bba180e4e84(*(*C.swig_type_82)(unsafe.Pointer(&_swig_i_0)), *(*C.swig_type_83)(unsafe.Pointer(&_swig_i_1))))) + if Swig_escape_always_false { + Swig_escape_val = arg1 + } + if Swig_escape_always_false { + Swig_escape_val = arg2 + } + return swig_r +} + +func Gzseek(arg1 GzFile_s, arg2 Off_t, arg3 int) (_swig_ret Off_t) { + var swig_r Off_t + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2.Swigcptr() + _swig_i_2 := arg3 + swig_r = (Off_t)(SwigcptrOff_t(C._wrap_gzseek_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1), C.swig_intgo(_swig_i_2)))) + return swig_r +} + +func Gztell(arg1 GzFile_s) (_swig_ret Off_t) { + var swig_r Off_t + _swig_i_0 := arg1.Swigcptr() + swig_r = (Off_t)(SwigcptrOff_t(C._wrap_gztell_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func Gzoffset(arg1 GzFile_s) (_swig_ret Off_t) { + var swig_r Off_t + _swig_i_0 := arg1.Swigcptr() + swig_r = (Off_t)(SwigcptrOff_t(C._wrap_gzoffset_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func Adler32_combine(arg1 uint64, arg2 uint64, arg3 Off_t) (_swig_ret uint64) { + var swig_r uint64 + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + swig_r = (uint64)(C._wrap_adler32_combine_aig_29567bba180e4e84(C.swig_type_85(_swig_i_0), C.swig_type_86(_swig_i_1), C.uintptr_t(_swig_i_2))) + return swig_r +} + +func Crc32_combine(arg1 uint64, arg2 uint64, arg3 Off_t) (_swig_ret uint64) { + var swig_r uint64 + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + swig_r = (uint64)(C._wrap_crc32_combine_aig_29567bba180e4e84(C.swig_type_88(_swig_i_0), C.swig_type_89(_swig_i_1), C.uintptr_t(_swig_i_2))) + return swig_r +} + +func ZError(arg1 int) (_swig_ret string) { + var swig_r string + _swig_i_0 := arg1 + swig_r_p := C._wrap_zError_aig_29567bba180e4e84(C.swig_intgo(_swig_i_0)) + swig_r = *(*string)(unsafe.Pointer(&swig_r_p)) + var swig_r_1 string + swig_r_1 = swigCopyString(swig_r) + return swig_r_1 +} + +func InflateSyncPoint(arg1 Z_stream) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_inflateSyncPoint_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func Get_crc_table() (_swig_ret *uint64) { + var swig_r *uint64 + swig_r = (*uint64)(C._wrap_get_crc_table_aig_29567bba180e4e84()) + return swig_r +} + +func InflateUndermine(arg1 Z_stream, arg2 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + swig_r = (int)(C._wrap_inflateUndermine_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1))) + return swig_r +} + +func InflateValidate(arg1 Z_stream, arg2 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + swig_r = (int)(C._wrap_inflateValidate_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1))) + return swig_r +} + +func InflateCodesUsed(arg1 Z_stream) (_swig_ret uint64) { + var swig_r uint64 + _swig_i_0 := arg1.Swigcptr() + swig_r = (uint64)(C._wrap_inflateCodesUsed_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func InflateResetKeep(arg1 Z_stream) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_inflateResetKeep_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func DeflateResetKeep(arg1 Z_stream) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + swig_r = (int)(C._wrap_deflateResetKeep_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func Gzvprintf(arg1 GzFile_s, arg2 string, arg3 Va_list) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1.Swigcptr() + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + swig_r = (int)(C._wrap_gzvprintf_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), *(*C.swig_type_92)(unsafe.Pointer(&_swig_i_1)), C.uintptr_t(_swig_i_2))) + if Swig_escape_always_false { + Swig_escape_val = arg2 + } + return swig_r +} + +type IrrIoETEXT_FORMAT int + +func _swig_getETF_ASCII() (_swig_ret IrrIoETEXT_FORMAT) { + var swig_r IrrIoETEXT_FORMAT + swig_r = (IrrIoETEXT_FORMAT)(C._wrap_ETF_ASCII_aig_29567bba180e4e84()) + return swig_r +} + +var ETF_ASCII IrrIoETEXT_FORMAT = _swig_getETF_ASCII() + +func _swig_getETF_UTF8() (_swig_ret IrrIoETEXT_FORMAT) { + var swig_r IrrIoETEXT_FORMAT + swig_r = (IrrIoETEXT_FORMAT)(C._wrap_ETF_UTF8_aig_29567bba180e4e84()) + return swig_r +} + +var ETF_UTF8 IrrIoETEXT_FORMAT = _swig_getETF_UTF8() + +func _swig_getETF_UTF16_BE() (_swig_ret IrrIoETEXT_FORMAT) { + var swig_r IrrIoETEXT_FORMAT + swig_r = (IrrIoETEXT_FORMAT)(C._wrap_ETF_UTF16_BE_aig_29567bba180e4e84()) + return swig_r +} + +var ETF_UTF16_BE IrrIoETEXT_FORMAT = _swig_getETF_UTF16_BE() + +func _swig_getETF_UTF16_LE() (_swig_ret IrrIoETEXT_FORMAT) { + var swig_r IrrIoETEXT_FORMAT + swig_r = (IrrIoETEXT_FORMAT)(C._wrap_ETF_UTF16_LE_aig_29567bba180e4e84()) + return swig_r +} + +var ETF_UTF16_LE IrrIoETEXT_FORMAT = _swig_getETF_UTF16_LE() + +func _swig_getETF_UTF32_BE() (_swig_ret IrrIoETEXT_FORMAT) { + var swig_r IrrIoETEXT_FORMAT + swig_r = (IrrIoETEXT_FORMAT)(C._wrap_ETF_UTF32_BE_aig_29567bba180e4e84()) + return swig_r +} + +var ETF_UTF32_BE IrrIoETEXT_FORMAT = _swig_getETF_UTF32_BE() + +func _swig_getETF_UTF32_LE() (_swig_ret IrrIoETEXT_FORMAT) { + var swig_r IrrIoETEXT_FORMAT + swig_r = (IrrIoETEXT_FORMAT)(C._wrap_ETF_UTF32_LE_aig_29567bba180e4e84()) + return swig_r +} + +var ETF_UTF32_LE IrrIoETEXT_FORMAT = _swig_getETF_UTF32_LE() + +type IrrIoEXML_NODE int + +func _swig_getEXN_NONE() (_swig_ret IrrIoEXML_NODE) { + var swig_r IrrIoEXML_NODE + swig_r = (IrrIoEXML_NODE)(C._wrap_EXN_NONE_aig_29567bba180e4e84()) + return swig_r +} + +var EXN_NONE IrrIoEXML_NODE = _swig_getEXN_NONE() + +func _swig_getEXN_ELEMENT() (_swig_ret IrrIoEXML_NODE) { + var swig_r IrrIoEXML_NODE + swig_r = (IrrIoEXML_NODE)(C._wrap_EXN_ELEMENT_aig_29567bba180e4e84()) + return swig_r +} + +var EXN_ELEMENT IrrIoEXML_NODE = _swig_getEXN_ELEMENT() + +func _swig_getEXN_ELEMENT_END() (_swig_ret IrrIoEXML_NODE) { + var swig_r IrrIoEXML_NODE + swig_r = (IrrIoEXML_NODE)(C._wrap_EXN_ELEMENT_END_aig_29567bba180e4e84()) + return swig_r +} + +var EXN_ELEMENT_END IrrIoEXML_NODE = _swig_getEXN_ELEMENT_END() + +func _swig_getEXN_TEXT() (_swig_ret IrrIoEXML_NODE) { + var swig_r IrrIoEXML_NODE + swig_r = (IrrIoEXML_NODE)(C._wrap_EXN_TEXT_aig_29567bba180e4e84()) + return swig_r +} + +var EXN_TEXT IrrIoEXML_NODE = _swig_getEXN_TEXT() + +func _swig_getEXN_COMMENT() (_swig_ret IrrIoEXML_NODE) { + var swig_r IrrIoEXML_NODE + swig_r = (IrrIoEXML_NODE)(C._wrap_EXN_COMMENT_aig_29567bba180e4e84()) + return swig_r +} + +var EXN_COMMENT IrrIoEXML_NODE = _swig_getEXN_COMMENT() + +func _swig_getEXN_CDATA() (_swig_ret IrrIoEXML_NODE) { + var swig_r IrrIoEXML_NODE + swig_r = (IrrIoEXML_NODE)(C._wrap_EXN_CDATA_aig_29567bba180e4e84()) + return swig_r +} + +var EXN_CDATA IrrIoEXML_NODE = _swig_getEXN_CDATA() + +func _swig_getEXN_UNKNOWN() (_swig_ret IrrIoEXML_NODE) { + var swig_r IrrIoEXML_NODE + swig_r = (IrrIoEXML_NODE)(C._wrap_EXN_UNKNOWN_aig_29567bba180e4e84()) + return swig_r +} + +var EXN_UNKNOWN IrrIoEXML_NODE = _swig_getEXN_UNKNOWN() + +type SwigcptrIFileReadCallBack uintptr + +func (p SwigcptrIFileReadCallBack) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrIFileReadCallBack) SwigIsIFileReadCallBack() { +} + +func DeleteIFileReadCallBack(arg1 IFileReadCallBack) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_IFileReadCallBack_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrIFileReadCallBack) Read(arg2 uintptr, arg3 int) (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3 + swig_r = (int)(C._wrap_IFileReadCallBack_read_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1), C.swig_intgo(_swig_i_2))) + return swig_r +} + +func (arg1 SwigcptrIFileReadCallBack) GetSize() (_swig_ret int) { + var swig_r int + _swig_i_0 := arg1 + swig_r = (int)(C._wrap_IFileReadCallBack_getSize_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +type IFileReadCallBack interface { + Swigcptr() uintptr + SwigIsIFileReadCallBack() + Read(arg2 uintptr, arg3 int) (_swig_ret int) + GetSize() (_swig_ret int) +} + +type SwigcptrIXMLBase uintptr + +func (p SwigcptrIXMLBase) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrIXMLBase) SwigIsIXMLBase() { +} + +func NewIXMLBase() (_swig_ret IXMLBase) { + var swig_r IXMLBase + swig_r = (IXMLBase)(SwigcptrIXMLBase(C._wrap_new_IXMLBase_aig_29567bba180e4e84())) + return swig_r +} + +func DeleteIXMLBase(arg1 IXMLBase) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_IXMLBase_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type IXMLBase interface { + Swigcptr() uintptr + SwigIsIXMLBase() +} + +func CreateIrrXMLReader__SWIG_0(arg1 string) (_swig_ret Irr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_) { + var swig_r Irr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_ + _swig_i_0 := arg1 + swig_r = (Irr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_)(SwigcptrIrr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_(C._wrap_createIrrXMLReader__SWIG_0_aig_29567bba180e4e84(*(*C.swig_type_93)(unsafe.Pointer(&_swig_i_0))))) + if Swig_escape_always_false { + Swig_escape_val = arg1 + } + return swig_r +} + +func CreateIrrXMLReader__SWIG_1(arg1 FILE) (_swig_ret Irr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_) { + var swig_r Irr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_ + _swig_i_0 := arg1.Swigcptr() + swig_r = (Irr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_)(SwigcptrIrr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_(C._wrap_createIrrXMLReader__SWIG_1_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func CreateIrrXMLReader__SWIG_2(arg1 IFileReadCallBack) (_swig_ret Irr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_) { + var swig_r Irr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_ + _swig_i_0 := arg1.Swigcptr() + swig_r = (Irr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_)(SwigcptrIrr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_(C._wrap_createIrrXMLReader__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func CreateIrrXMLReader(a ...interface{}) Irr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_ { + argc := len(a) + if argc == 1 { + if _, ok := a[0].(SwigcptrFILE); !ok { + goto check_1 + } + return CreateIrrXMLReader__SWIG_1(a[0].(FILE)) + } +check_1: + if argc == 1 { + if _, ok := a[0].(SwigcptrIFileReadCallBack); !ok { + goto check_2 + } + return CreateIrrXMLReader__SWIG_2(a[0].(IFileReadCallBack)) + } +check_2: + if argc == 1 { + return CreateIrrXMLReader__SWIG_0(a[0].(string)) + } + panic("No match for overloaded function call") +} + +func CreateIrrXMLReaderUTF16__SWIG_0(arg1 string) (_swig_ret Irr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_) { + var swig_r Irr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_ + _swig_i_0 := arg1 + swig_r = (Irr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_)(SwigcptrIrr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_(C._wrap_createIrrXMLReaderUTF16__SWIG_0_aig_29567bba180e4e84(*(*C.swig_type_94)(unsafe.Pointer(&_swig_i_0))))) + if Swig_escape_always_false { + Swig_escape_val = arg1 + } + return swig_r +} + +func CreateIrrXMLReaderUTF16__SWIG_1(arg1 FILE) (_swig_ret Irr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_) { + var swig_r Irr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_ + _swig_i_0 := arg1.Swigcptr() + swig_r = (Irr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_)(SwigcptrIrr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_(C._wrap_createIrrXMLReaderUTF16__SWIG_1_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func CreateIrrXMLReaderUTF16__SWIG_2(arg1 IFileReadCallBack) (_swig_ret Irr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_) { + var swig_r Irr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_ + _swig_i_0 := arg1.Swigcptr() + swig_r = (Irr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_)(SwigcptrIrr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_(C._wrap_createIrrXMLReaderUTF16__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func CreateIrrXMLReaderUTF16(a ...interface{}) Irr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_ { + argc := len(a) + if argc == 1 { + if _, ok := a[0].(SwigcptrFILE); !ok { + goto check_1 + } + return CreateIrrXMLReaderUTF16__SWIG_1(a[0].(FILE)) + } +check_1: + if argc == 1 { + if _, ok := a[0].(SwigcptrIFileReadCallBack); !ok { + goto check_2 + } + return CreateIrrXMLReaderUTF16__SWIG_2(a[0].(IFileReadCallBack)) + } +check_2: + if argc == 1 { + return CreateIrrXMLReaderUTF16__SWIG_0(a[0].(string)) + } + panic("No match for overloaded function call") +} + +func CreateIrrXMLReaderUTF32__SWIG_0(arg1 string) (_swig_ret Irr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_) { + var swig_r Irr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_ + _swig_i_0 := arg1 + swig_r = (Irr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_)(SwigcptrIrr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_(C._wrap_createIrrXMLReaderUTF32__SWIG_0_aig_29567bba180e4e84(*(*C.swig_type_95)(unsafe.Pointer(&_swig_i_0))))) + if Swig_escape_always_false { + Swig_escape_val = arg1 + } + return swig_r +} + +func CreateIrrXMLReaderUTF32__SWIG_1(arg1 FILE) (_swig_ret Irr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_) { + var swig_r Irr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_ + _swig_i_0 := arg1.Swigcptr() + swig_r = (Irr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_)(SwigcptrIrr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_(C._wrap_createIrrXMLReaderUTF32__SWIG_1_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func CreateIrrXMLReaderUTF32__SWIG_2(arg1 IFileReadCallBack) (_swig_ret Irr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_) { + var swig_r Irr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_ + _swig_i_0 := arg1.Swigcptr() + swig_r = (Irr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_)(SwigcptrIrr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_(C._wrap_createIrrXMLReaderUTF32__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func CreateIrrXMLReaderUTF32(a ...interface{}) Irr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_ { + argc := len(a) + if argc == 1 { + if _, ok := a[0].(SwigcptrFILE); !ok { + goto check_1 + } + return CreateIrrXMLReaderUTF32__SWIG_1(a[0].(FILE)) + } +check_1: + if argc == 1 { + if _, ok := a[0].(SwigcptrIFileReadCallBack); !ok { + goto check_2 + } + return CreateIrrXMLReaderUTF32__SWIG_2(a[0].(IFileReadCallBack)) + } +check_2: + if argc == 1 { + return CreateIrrXMLReaderUTF32__SWIG_0(a[0].(string)) + } + panic("No match for overloaded function call") +} + +type SwigcptrUintVector uintptr + +func (p SwigcptrUintVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrUintVector) SwigIsUintVector() { +} + +func NewUintVector__SWIG_0() (_swig_ret UintVector) { + var swig_r UintVector + swig_r = (UintVector)(SwigcptrUintVector(C._wrap_new_UintVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewUintVector__SWIG_1(arg1 int64) (_swig_ret UintVector) { + var swig_r UintVector + _swig_i_0 := arg1 + swig_r = (UintVector)(SwigcptrUintVector(C._wrap_new_UintVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_96(_swig_i_0)))) + return swig_r +} + +func NewUintVector__SWIG_2(arg1 UintVector) (_swig_ret UintVector) { + var swig_r UintVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (UintVector)(SwigcptrUintVector(C._wrap_new_UintVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewUintVector(a ...interface{}) UintVector { + argc := len(a) + if argc == 0 { + return NewUintVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewUintVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewUintVector__SWIG_2(a[0].(UintVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrUintVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_UintVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrUintVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_UintVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrUintVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_UintVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_99(_swig_i_1)) +} + +func (arg1 SwigcptrUintVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_UintVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrUintVector) Clear() { + _swig_i_0 := arg1 + C._wrap_UintVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrUintVector) Add(arg2 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_UintVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)) +} + +func (arg1 SwigcptrUintVector) Get(arg2 int) (_swig_ret uint) { + var swig_r uint + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (uint)(C._wrap_UintVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1))) + return swig_r +} + +func (arg1 SwigcptrUintVector) Set(arg2 int, arg3 uint) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3 + C._wrap_UintVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.swig_intgo(_swig_i_2)) +} + +func DeleteUintVector(arg1 UintVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_UintVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type UintVector interface { + Swigcptr() uintptr + SwigIsUintVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 uint) + Get(arg2 int) (_swig_ret uint) + Set(arg2 int, arg3 uint) +} + +type SwigcptrAiAnimationVector uintptr + +func (p SwigcptrAiAnimationVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiAnimationVector) SwigIsAiAnimationVector() { +} + +func NewAiAnimationVector__SWIG_0() (_swig_ret AiAnimationVector) { + var swig_r AiAnimationVector + swig_r = (AiAnimationVector)(SwigcptrAiAnimationVector(C._wrap_new_aiAnimationVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiAnimationVector__SWIG_1(arg1 int64) (_swig_ret AiAnimationVector) { + var swig_r AiAnimationVector + _swig_i_0 := arg1 + swig_r = (AiAnimationVector)(SwigcptrAiAnimationVector(C._wrap_new_aiAnimationVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_100(_swig_i_0)))) + return swig_r +} + +func NewAiAnimationVector__SWIG_2(arg1 AiAnimationVector) (_swig_ret AiAnimationVector) { + var swig_r AiAnimationVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiAnimationVector)(SwigcptrAiAnimationVector(C._wrap_new_aiAnimationVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiAnimationVector(a ...interface{}) AiAnimationVector { + argc := len(a) + if argc == 0 { + return NewAiAnimationVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiAnimationVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiAnimationVector__SWIG_2(a[0].(AiAnimationVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiAnimationVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiAnimationVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiAnimationVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiAnimationVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiAnimationVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiAnimationVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_103(_swig_i_1)) +} + +func (arg1 SwigcptrAiAnimationVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiAnimationVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiAnimationVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiAnimationVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiAnimationVector) Add(arg2 AiAnimation) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiAnimationVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiAnimationVector) Get(arg2 int) (_swig_ret AiAnimation) { + var swig_r AiAnimation + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiAnimation)(SwigcptrAiAnimation(C._wrap_aiAnimationVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiAnimationVector) Set(arg2 int, arg3 AiAnimation) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiAnimationVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiAnimationVector(arg1 AiAnimationVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiAnimationVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiAnimationVector interface { + Swigcptr() uintptr + SwigIsAiAnimationVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiAnimation) + Get(arg2 int) (_swig_ret AiAnimation) + Set(arg2 int, arg3 AiAnimation) +} + +type SwigcptrAiAnimMeshVector uintptr + +func (p SwigcptrAiAnimMeshVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiAnimMeshVector) SwigIsAiAnimMeshVector() { +} + +func NewAiAnimMeshVector__SWIG_0() (_swig_ret AiAnimMeshVector) { + var swig_r AiAnimMeshVector + swig_r = (AiAnimMeshVector)(SwigcptrAiAnimMeshVector(C._wrap_new_aiAnimMeshVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiAnimMeshVector__SWIG_1(arg1 int64) (_swig_ret AiAnimMeshVector) { + var swig_r AiAnimMeshVector + _swig_i_0 := arg1 + swig_r = (AiAnimMeshVector)(SwigcptrAiAnimMeshVector(C._wrap_new_aiAnimMeshVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_104(_swig_i_0)))) + return swig_r +} + +func NewAiAnimMeshVector__SWIG_2(arg1 AiAnimMeshVector) (_swig_ret AiAnimMeshVector) { + var swig_r AiAnimMeshVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiAnimMeshVector)(SwigcptrAiAnimMeshVector(C._wrap_new_aiAnimMeshVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiAnimMeshVector(a ...interface{}) AiAnimMeshVector { + argc := len(a) + if argc == 0 { + return NewAiAnimMeshVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiAnimMeshVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiAnimMeshVector__SWIG_2(a[0].(AiAnimMeshVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiAnimMeshVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiAnimMeshVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMeshVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiAnimMeshVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMeshVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiAnimMeshVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_107(_swig_i_1)) +} + +func (arg1 SwigcptrAiAnimMeshVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiAnimMeshVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMeshVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiAnimMeshVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiAnimMeshVector) Add(arg2 AiAnimMesh) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiAnimMeshVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiAnimMeshVector) Get(arg2 int) (_swig_ret AiAnimMesh) { + var swig_r AiAnimMesh + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiAnimMesh)(SwigcptrAiAnimMesh(C._wrap_aiAnimMeshVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiAnimMeshVector) Set(arg2 int, arg3 AiAnimMesh) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiAnimMeshVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiAnimMeshVector(arg1 AiAnimMeshVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiAnimMeshVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiAnimMeshVector interface { + Swigcptr() uintptr + SwigIsAiAnimMeshVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiAnimMesh) + Get(arg2 int) (_swig_ret AiAnimMesh) + Set(arg2 int, arg3 AiAnimMesh) +} + +type SwigcptrAiBonesVector uintptr + +func (p SwigcptrAiBonesVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiBonesVector) SwigIsAiBonesVector() { +} + +func NewAiBonesVector__SWIG_0() (_swig_ret AiBonesVector) { + var swig_r AiBonesVector + swig_r = (AiBonesVector)(SwigcptrAiBonesVector(C._wrap_new_aiBonesVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiBonesVector__SWIG_1(arg1 int64) (_swig_ret AiBonesVector) { + var swig_r AiBonesVector + _swig_i_0 := arg1 + swig_r = (AiBonesVector)(SwigcptrAiBonesVector(C._wrap_new_aiBonesVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_108(_swig_i_0)))) + return swig_r +} + +func NewAiBonesVector__SWIG_2(arg1 AiBonesVector) (_swig_ret AiBonesVector) { + var swig_r AiBonesVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiBonesVector)(SwigcptrAiBonesVector(C._wrap_new_aiBonesVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiBonesVector(a ...interface{}) AiBonesVector { + argc := len(a) + if argc == 0 { + return NewAiBonesVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiBonesVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiBonesVector__SWIG_2(a[0].(AiBonesVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiBonesVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiBonesVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiBonesVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiBonesVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiBonesVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiBonesVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_111(_swig_i_1)) +} + +func (arg1 SwigcptrAiBonesVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiBonesVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiBonesVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiBonesVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiBonesVector) Add(arg2 AiBone) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiBonesVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiBonesVector) Get(arg2 int) (_swig_ret AiBone) { + var swig_r AiBone + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiBone)(SwigcptrAiBone(C._wrap_aiBonesVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiBonesVector) Set(arg2 int, arg3 AiBone) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiBonesVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiBonesVector(arg1 AiBonesVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiBonesVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiBonesVector interface { + Swigcptr() uintptr + SwigIsAiBonesVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiBone) + Get(arg2 int) (_swig_ret AiBone) + Set(arg2 int, arg3 AiBone) +} + +type SwigcptrAiCameraVector uintptr + +func (p SwigcptrAiCameraVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiCameraVector) SwigIsAiCameraVector() { +} + +func NewAiCameraVector__SWIG_0() (_swig_ret AiCameraVector) { + var swig_r AiCameraVector + swig_r = (AiCameraVector)(SwigcptrAiCameraVector(C._wrap_new_aiCameraVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiCameraVector__SWIG_1(arg1 int64) (_swig_ret AiCameraVector) { + var swig_r AiCameraVector + _swig_i_0 := arg1 + swig_r = (AiCameraVector)(SwigcptrAiCameraVector(C._wrap_new_aiCameraVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_112(_swig_i_0)))) + return swig_r +} + +func NewAiCameraVector__SWIG_2(arg1 AiCameraVector) (_swig_ret AiCameraVector) { + var swig_r AiCameraVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiCameraVector)(SwigcptrAiCameraVector(C._wrap_new_aiCameraVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiCameraVector(a ...interface{}) AiCameraVector { + argc := len(a) + if argc == 0 { + return NewAiCameraVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiCameraVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiCameraVector__SWIG_2(a[0].(AiCameraVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiCameraVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiCameraVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiCameraVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiCameraVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiCameraVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiCameraVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_115(_swig_i_1)) +} + +func (arg1 SwigcptrAiCameraVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiCameraVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiCameraVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiCameraVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiCameraVector) Add(arg2 AiCamera) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiCameraVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiCameraVector) Get(arg2 int) (_swig_ret AiCamera) { + var swig_r AiCamera + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiCamera)(SwigcptrAiCamera(C._wrap_aiCameraVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiCameraVector) Set(arg2 int, arg3 AiCamera) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiCameraVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiCameraVector(arg1 AiCameraVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiCameraVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiCameraVector interface { + Swigcptr() uintptr + SwigIsAiCameraVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiCamera) + Get(arg2 int) (_swig_ret AiCamera) + Set(arg2 int, arg3 AiCamera) +} + +type SwigcptrAiColor4DVector uintptr + +func (p SwigcptrAiColor4DVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiColor4DVector) SwigIsAiColor4DVector() { +} + +func NewAiColor4DVector__SWIG_0() (_swig_ret AiColor4DVector) { + var swig_r AiColor4DVector + swig_r = (AiColor4DVector)(SwigcptrAiColor4DVector(C._wrap_new_aiColor4DVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiColor4DVector__SWIG_1(arg1 int64) (_swig_ret AiColor4DVector) { + var swig_r AiColor4DVector + _swig_i_0 := arg1 + swig_r = (AiColor4DVector)(SwigcptrAiColor4DVector(C._wrap_new_aiColor4DVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_116(_swig_i_0)))) + return swig_r +} + +func NewAiColor4DVector__SWIG_2(arg1 AiColor4DVector) (_swig_ret AiColor4DVector) { + var swig_r AiColor4DVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiColor4DVector)(SwigcptrAiColor4DVector(C._wrap_new_aiColor4DVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiColor4DVector(a ...interface{}) AiColor4DVector { + argc := len(a) + if argc == 0 { + return NewAiColor4DVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiColor4DVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiColor4DVector__SWIG_2(a[0].(AiColor4DVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiColor4DVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiColor4DVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiColor4DVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiColor4DVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiColor4DVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiColor4DVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_119(_swig_i_1)) +} + +func (arg1 SwigcptrAiColor4DVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiColor4DVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiColor4DVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiColor4DVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiColor4DVector) Add(arg2 AiColor4D) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiColor4DVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiColor4DVector) Get(arg2 int) (_swig_ret AiColor4D) { + var swig_r AiColor4D + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiColor4D)(SwigcptrAiColor4D(C._wrap_aiColor4DVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiColor4DVector) Set(arg2 int, arg3 AiColor4D) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiColor4DVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiColor4DVector(arg1 AiColor4DVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiColor4DVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiColor4DVector interface { + Swigcptr() uintptr + SwigIsAiColor4DVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiColor4D) + Get(arg2 int) (_swig_ret AiColor4D) + Set(arg2 int, arg3 AiColor4D) +} + +type SwigcptrAiColor4DVectorVector uintptr + +func (p SwigcptrAiColor4DVectorVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiColor4DVectorVector) SwigIsAiColor4DVectorVector() { +} + +func NewAiColor4DVectorVector__SWIG_0() (_swig_ret AiColor4DVectorVector) { + var swig_r AiColor4DVectorVector + swig_r = (AiColor4DVectorVector)(SwigcptrAiColor4DVectorVector(C._wrap_new_aiColor4DVectorVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiColor4DVectorVector__SWIG_1(arg1 int64) (_swig_ret AiColor4DVectorVector) { + var swig_r AiColor4DVectorVector + _swig_i_0 := arg1 + swig_r = (AiColor4DVectorVector)(SwigcptrAiColor4DVectorVector(C._wrap_new_aiColor4DVectorVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_120(_swig_i_0)))) + return swig_r +} + +func NewAiColor4DVectorVector__SWIG_2(arg1 AiColor4DVectorVector) (_swig_ret AiColor4DVectorVector) { + var swig_r AiColor4DVectorVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiColor4DVectorVector)(SwigcptrAiColor4DVectorVector(C._wrap_new_aiColor4DVectorVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiColor4DVectorVector(a ...interface{}) AiColor4DVectorVector { + argc := len(a) + if argc == 0 { + return NewAiColor4DVectorVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiColor4DVectorVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiColor4DVectorVector__SWIG_2(a[0].(AiColor4DVectorVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiColor4DVectorVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiColor4DVectorVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiColor4DVectorVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiColor4DVectorVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiColor4DVectorVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiColor4DVectorVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_123(_swig_i_1)) +} + +func (arg1 SwigcptrAiColor4DVectorVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiColor4DVectorVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiColor4DVectorVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiColor4DVectorVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiColor4DVectorVector) Add(arg2 AiColor4DVector) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiColor4DVectorVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiColor4DVectorVector) Get(arg2 int) (_swig_ret AiColor4DVector) { + var swig_r AiColor4DVector + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiColor4DVector)(SwigcptrAiColor4DVector(C._wrap_aiColor4DVectorVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiColor4DVectorVector) Set(arg2 int, arg3 AiColor4DVector) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiColor4DVectorVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiColor4DVectorVector(arg1 AiColor4DVectorVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiColor4DVectorVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiColor4DVectorVector interface { + Swigcptr() uintptr + SwigIsAiColor4DVectorVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiColor4DVector) + Get(arg2 int) (_swig_ret AiColor4DVector) + Set(arg2 int, arg3 AiColor4DVector) +} + +type SwigcptrAiFaceVector uintptr + +func (p SwigcptrAiFaceVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiFaceVector) SwigIsAiFaceVector() { +} + +func NewAiFaceVector__SWIG_0() (_swig_ret AiFaceVector) { + var swig_r AiFaceVector + swig_r = (AiFaceVector)(SwigcptrAiFaceVector(C._wrap_new_aiFaceVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiFaceVector__SWIG_1(arg1 int64) (_swig_ret AiFaceVector) { + var swig_r AiFaceVector + _swig_i_0 := arg1 + swig_r = (AiFaceVector)(SwigcptrAiFaceVector(C._wrap_new_aiFaceVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_124(_swig_i_0)))) + return swig_r +} + +func NewAiFaceVector__SWIG_2(arg1 AiFaceVector) (_swig_ret AiFaceVector) { + var swig_r AiFaceVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiFaceVector)(SwigcptrAiFaceVector(C._wrap_new_aiFaceVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiFaceVector(a ...interface{}) AiFaceVector { + argc := len(a) + if argc == 0 { + return NewAiFaceVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiFaceVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiFaceVector__SWIG_2(a[0].(AiFaceVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiFaceVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiFaceVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiFaceVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiFaceVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiFaceVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiFaceVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_127(_swig_i_1)) +} + +func (arg1 SwigcptrAiFaceVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiFaceVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiFaceVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiFaceVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiFaceVector) Add(arg2 AiFace) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiFaceVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiFaceVector) Get(arg2 int) (_swig_ret AiFace) { + var swig_r AiFace + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiFace)(SwigcptrAiFace(C._wrap_aiFaceVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiFaceVector) Set(arg2 int, arg3 AiFace) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiFaceVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiFaceVector(arg1 AiFaceVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiFaceVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiFaceVector interface { + Swigcptr() uintptr + SwigIsAiFaceVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiFace) + Get(arg2 int) (_swig_ret AiFace) + Set(arg2 int, arg3 AiFace) +} + +type SwigcptrAiLightVector uintptr + +func (p SwigcptrAiLightVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiLightVector) SwigIsAiLightVector() { +} + +func NewAiLightVector__SWIG_0() (_swig_ret AiLightVector) { + var swig_r AiLightVector + swig_r = (AiLightVector)(SwigcptrAiLightVector(C._wrap_new_aiLightVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiLightVector__SWIG_1(arg1 int64) (_swig_ret AiLightVector) { + var swig_r AiLightVector + _swig_i_0 := arg1 + swig_r = (AiLightVector)(SwigcptrAiLightVector(C._wrap_new_aiLightVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_128(_swig_i_0)))) + return swig_r +} + +func NewAiLightVector__SWIG_2(arg1 AiLightVector) (_swig_ret AiLightVector) { + var swig_r AiLightVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiLightVector)(SwigcptrAiLightVector(C._wrap_new_aiLightVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiLightVector(a ...interface{}) AiLightVector { + argc := len(a) + if argc == 0 { + return NewAiLightVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiLightVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiLightVector__SWIG_2(a[0].(AiLightVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiLightVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiLightVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiLightVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiLightVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiLightVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiLightVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_131(_swig_i_1)) +} + +func (arg1 SwigcptrAiLightVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiLightVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiLightVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiLightVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiLightVector) Add(arg2 AiLight) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiLightVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiLightVector) Get(arg2 int) (_swig_ret AiLight) { + var swig_r AiLight + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiLight)(SwigcptrAiLight(C._wrap_aiLightVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiLightVector) Set(arg2 int, arg3 AiLight) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiLightVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiLightVector(arg1 AiLightVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiLightVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiLightVector interface { + Swigcptr() uintptr + SwigIsAiLightVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiLight) + Get(arg2 int) (_swig_ret AiLight) + Set(arg2 int, arg3 AiLight) +} + +type SwigcptrAiMaterialVector uintptr + +func (p SwigcptrAiMaterialVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiMaterialVector) SwigIsAiMaterialVector() { +} + +func NewAiMaterialVector__SWIG_0() (_swig_ret AiMaterialVector) { + var swig_r AiMaterialVector + swig_r = (AiMaterialVector)(SwigcptrAiMaterialVector(C._wrap_new_aiMaterialVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiMaterialVector__SWIG_1(arg1 int64) (_swig_ret AiMaterialVector) { + var swig_r AiMaterialVector + _swig_i_0 := arg1 + swig_r = (AiMaterialVector)(SwigcptrAiMaterialVector(C._wrap_new_aiMaterialVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_132(_swig_i_0)))) + return swig_r +} + +func NewAiMaterialVector__SWIG_2(arg1 AiMaterialVector) (_swig_ret AiMaterialVector) { + var swig_r AiMaterialVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiMaterialVector)(SwigcptrAiMaterialVector(C._wrap_new_aiMaterialVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiMaterialVector(a ...interface{}) AiMaterialVector { + argc := len(a) + if argc == 0 { + return NewAiMaterialVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiMaterialVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiMaterialVector__SWIG_2(a[0].(AiMaterialVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiMaterialVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiMaterialVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMaterialVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiMaterialVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMaterialVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiMaterialVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_135(_swig_i_1)) +} + +func (arg1 SwigcptrAiMaterialVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiMaterialVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMaterialVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiMaterialVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiMaterialVector) Add(arg2 AiMaterial) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiMaterialVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiMaterialVector) Get(arg2 int) (_swig_ret AiMaterial) { + var swig_r AiMaterial + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiMaterial)(SwigcptrAiMaterial(C._wrap_aiMaterialVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiMaterialVector) Set(arg2 int, arg3 AiMaterial) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiMaterialVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiMaterialVector(arg1 AiMaterialVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiMaterialVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiMaterialVector interface { + Swigcptr() uintptr + SwigIsAiMaterialVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiMaterial) + Get(arg2 int) (_swig_ret AiMaterial) + Set(arg2 int, arg3 AiMaterial) +} + +type SwigcptrAiMaterialPropertyVector uintptr + +func (p SwigcptrAiMaterialPropertyVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiMaterialPropertyVector) SwigIsAiMaterialPropertyVector() { +} + +func NewAiMaterialPropertyVector__SWIG_0() (_swig_ret AiMaterialPropertyVector) { + var swig_r AiMaterialPropertyVector + swig_r = (AiMaterialPropertyVector)(SwigcptrAiMaterialPropertyVector(C._wrap_new_aiMaterialPropertyVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiMaterialPropertyVector__SWIG_1(arg1 int64) (_swig_ret AiMaterialPropertyVector) { + var swig_r AiMaterialPropertyVector + _swig_i_0 := arg1 + swig_r = (AiMaterialPropertyVector)(SwigcptrAiMaterialPropertyVector(C._wrap_new_aiMaterialPropertyVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_136(_swig_i_0)))) + return swig_r +} + +func NewAiMaterialPropertyVector__SWIG_2(arg1 AiMaterialPropertyVector) (_swig_ret AiMaterialPropertyVector) { + var swig_r AiMaterialPropertyVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiMaterialPropertyVector)(SwigcptrAiMaterialPropertyVector(C._wrap_new_aiMaterialPropertyVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiMaterialPropertyVector(a ...interface{}) AiMaterialPropertyVector { + argc := len(a) + if argc == 0 { + return NewAiMaterialPropertyVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiMaterialPropertyVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiMaterialPropertyVector__SWIG_2(a[0].(AiMaterialPropertyVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiMaterialPropertyVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiMaterialPropertyVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMaterialPropertyVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiMaterialPropertyVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMaterialPropertyVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiMaterialPropertyVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_139(_swig_i_1)) +} + +func (arg1 SwigcptrAiMaterialPropertyVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiMaterialPropertyVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMaterialPropertyVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiMaterialPropertyVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiMaterialPropertyVector) Add(arg2 AiMaterialProperty) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiMaterialPropertyVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiMaterialPropertyVector) Get(arg2 int) (_swig_ret AiMaterialProperty) { + var swig_r AiMaterialProperty + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiMaterialProperty)(SwigcptrAiMaterialProperty(C._wrap_aiMaterialPropertyVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiMaterialPropertyVector) Set(arg2 int, arg3 AiMaterialProperty) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiMaterialPropertyVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiMaterialPropertyVector(arg1 AiMaterialPropertyVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiMaterialPropertyVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiMaterialPropertyVector interface { + Swigcptr() uintptr + SwigIsAiMaterialPropertyVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiMaterialProperty) + Get(arg2 int) (_swig_ret AiMaterialProperty) + Set(arg2 int, arg3 AiMaterialProperty) +} + +type SwigcptrAiMeshAnimVector uintptr + +func (p SwigcptrAiMeshAnimVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiMeshAnimVector) SwigIsAiMeshAnimVector() { +} + +func NewAiMeshAnimVector__SWIG_0() (_swig_ret AiMeshAnimVector) { + var swig_r AiMeshAnimVector + swig_r = (AiMeshAnimVector)(SwigcptrAiMeshAnimVector(C._wrap_new_aiMeshAnimVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiMeshAnimVector__SWIG_1(arg1 int64) (_swig_ret AiMeshAnimVector) { + var swig_r AiMeshAnimVector + _swig_i_0 := arg1 + swig_r = (AiMeshAnimVector)(SwigcptrAiMeshAnimVector(C._wrap_new_aiMeshAnimVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_140(_swig_i_0)))) + return swig_r +} + +func NewAiMeshAnimVector__SWIG_2(arg1 AiMeshAnimVector) (_swig_ret AiMeshAnimVector) { + var swig_r AiMeshAnimVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiMeshAnimVector)(SwigcptrAiMeshAnimVector(C._wrap_new_aiMeshAnimVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiMeshAnimVector(a ...interface{}) AiMeshAnimVector { + argc := len(a) + if argc == 0 { + return NewAiMeshAnimVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiMeshAnimVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiMeshAnimVector__SWIG_2(a[0].(AiMeshAnimVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiMeshAnimVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiMeshAnimVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMeshAnimVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiMeshAnimVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMeshAnimVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiMeshAnimVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_143(_swig_i_1)) +} + +func (arg1 SwigcptrAiMeshAnimVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiMeshAnimVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMeshAnimVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiMeshAnimVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiMeshAnimVector) Add(arg2 AiMeshAnim) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiMeshAnimVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiMeshAnimVector) Get(arg2 int) (_swig_ret AiMeshAnim) { + var swig_r AiMeshAnim + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiMeshAnim)(SwigcptrAiMeshAnim(C._wrap_aiMeshAnimVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiMeshAnimVector) Set(arg2 int, arg3 AiMeshAnim) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiMeshAnimVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiMeshAnimVector(arg1 AiMeshAnimVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiMeshAnimVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiMeshAnimVector interface { + Swigcptr() uintptr + SwigIsAiMeshAnimVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiMeshAnim) + Get(arg2 int) (_swig_ret AiMeshAnim) + Set(arg2 int, arg3 AiMeshAnim) +} + +type SwigcptrAiMeshVector uintptr + +func (p SwigcptrAiMeshVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiMeshVector) SwigIsAiMeshVector() { +} + +func NewAiMeshVector__SWIG_0() (_swig_ret AiMeshVector) { + var swig_r AiMeshVector + swig_r = (AiMeshVector)(SwigcptrAiMeshVector(C._wrap_new_aiMeshVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiMeshVector__SWIG_1(arg1 int64) (_swig_ret AiMeshVector) { + var swig_r AiMeshVector + _swig_i_0 := arg1 + swig_r = (AiMeshVector)(SwigcptrAiMeshVector(C._wrap_new_aiMeshVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_144(_swig_i_0)))) + return swig_r +} + +func NewAiMeshVector__SWIG_2(arg1 AiMeshVector) (_swig_ret AiMeshVector) { + var swig_r AiMeshVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiMeshVector)(SwigcptrAiMeshVector(C._wrap_new_aiMeshVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiMeshVector(a ...interface{}) AiMeshVector { + argc := len(a) + if argc == 0 { + return NewAiMeshVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiMeshVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiMeshVector__SWIG_2(a[0].(AiMeshVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiMeshVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiMeshVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMeshVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiMeshVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMeshVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiMeshVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_147(_swig_i_1)) +} + +func (arg1 SwigcptrAiMeshVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiMeshVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiMeshVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiMeshVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiMeshVector) Add(arg2 AiMesh) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiMeshVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiMeshVector) Get(arg2 int) (_swig_ret AiMesh) { + var swig_r AiMesh + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiMesh)(SwigcptrAiMesh(C._wrap_aiMeshVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiMeshVector) Set(arg2 int, arg3 AiMesh) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiMeshVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiMeshVector(arg1 AiMeshVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiMeshVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiMeshVector interface { + Swigcptr() uintptr + SwigIsAiMeshVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiMesh) + Get(arg2 int) (_swig_ret AiMesh) + Set(arg2 int, arg3 AiMesh) +} + +type SwigcptrAiNodeVector uintptr + +func (p SwigcptrAiNodeVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiNodeVector) SwigIsAiNodeVector() { +} + +func NewAiNodeVector__SWIG_0() (_swig_ret AiNodeVector) { + var swig_r AiNodeVector + swig_r = (AiNodeVector)(SwigcptrAiNodeVector(C._wrap_new_aiNodeVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiNodeVector__SWIG_1(arg1 int64) (_swig_ret AiNodeVector) { + var swig_r AiNodeVector + _swig_i_0 := arg1 + swig_r = (AiNodeVector)(SwigcptrAiNodeVector(C._wrap_new_aiNodeVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_148(_swig_i_0)))) + return swig_r +} + +func NewAiNodeVector__SWIG_2(arg1 AiNodeVector) (_swig_ret AiNodeVector) { + var swig_r AiNodeVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiNodeVector)(SwigcptrAiNodeVector(C._wrap_new_aiNodeVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiNodeVector(a ...interface{}) AiNodeVector { + argc := len(a) + if argc == 0 { + return NewAiNodeVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiNodeVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiNodeVector__SWIG_2(a[0].(AiNodeVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiNodeVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiNodeVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiNodeVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiNodeVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiNodeVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiNodeVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_151(_swig_i_1)) +} + +func (arg1 SwigcptrAiNodeVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiNodeVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiNodeVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiNodeVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiNodeVector) Add(arg2 AiNode) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiNodeVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiNodeVector) Get(arg2 int) (_swig_ret AiNode) { + var swig_r AiNode + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiNode)(SwigcptrAiNode(C._wrap_aiNodeVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiNodeVector) Set(arg2 int, arg3 AiNode) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiNodeVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiNodeVector(arg1 AiNodeVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiNodeVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiNodeVector interface { + Swigcptr() uintptr + SwigIsAiNodeVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiNode) + Get(arg2 int) (_swig_ret AiNode) + Set(arg2 int, arg3 AiNode) +} + +type SwigcptrAiNodeAnimVector uintptr + +func (p SwigcptrAiNodeAnimVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiNodeAnimVector) SwigIsAiNodeAnimVector() { +} + +func NewAiNodeAnimVector__SWIG_0() (_swig_ret AiNodeAnimVector) { + var swig_r AiNodeAnimVector + swig_r = (AiNodeAnimVector)(SwigcptrAiNodeAnimVector(C._wrap_new_aiNodeAnimVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiNodeAnimVector__SWIG_1(arg1 int64) (_swig_ret AiNodeAnimVector) { + var swig_r AiNodeAnimVector + _swig_i_0 := arg1 + swig_r = (AiNodeAnimVector)(SwigcptrAiNodeAnimVector(C._wrap_new_aiNodeAnimVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_152(_swig_i_0)))) + return swig_r +} + +func NewAiNodeAnimVector__SWIG_2(arg1 AiNodeAnimVector) (_swig_ret AiNodeAnimVector) { + var swig_r AiNodeAnimVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiNodeAnimVector)(SwigcptrAiNodeAnimVector(C._wrap_new_aiNodeAnimVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiNodeAnimVector(a ...interface{}) AiNodeAnimVector { + argc := len(a) + if argc == 0 { + return NewAiNodeAnimVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiNodeAnimVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiNodeAnimVector__SWIG_2(a[0].(AiNodeAnimVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiNodeAnimVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiNodeAnimVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiNodeAnimVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiNodeAnimVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiNodeAnimVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiNodeAnimVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_155(_swig_i_1)) +} + +func (arg1 SwigcptrAiNodeAnimVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiNodeAnimVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiNodeAnimVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiNodeAnimVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiNodeAnimVector) Add(arg2 AiNodeAnim) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiNodeAnimVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiNodeAnimVector) Get(arg2 int) (_swig_ret AiNodeAnim) { + var swig_r AiNodeAnim + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiNodeAnim)(SwigcptrAiNodeAnim(C._wrap_aiNodeAnimVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiNodeAnimVector) Set(arg2 int, arg3 AiNodeAnim) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiNodeAnimVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiNodeAnimVector(arg1 AiNodeAnimVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiNodeAnimVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiNodeAnimVector interface { + Swigcptr() uintptr + SwigIsAiNodeAnimVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiNodeAnim) + Get(arg2 int) (_swig_ret AiNodeAnim) + Set(arg2 int, arg3 AiNodeAnim) +} + +type SwigcptrAiTextureVector uintptr + +func (p SwigcptrAiTextureVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiTextureVector) SwigIsAiTextureVector() { +} + +func NewAiTextureVector__SWIG_0() (_swig_ret AiTextureVector) { + var swig_r AiTextureVector + swig_r = (AiTextureVector)(SwigcptrAiTextureVector(C._wrap_new_aiTextureVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiTextureVector__SWIG_1(arg1 int64) (_swig_ret AiTextureVector) { + var swig_r AiTextureVector + _swig_i_0 := arg1 + swig_r = (AiTextureVector)(SwigcptrAiTextureVector(C._wrap_new_aiTextureVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_156(_swig_i_0)))) + return swig_r +} + +func NewAiTextureVector__SWIG_2(arg1 AiTextureVector) (_swig_ret AiTextureVector) { + var swig_r AiTextureVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiTextureVector)(SwigcptrAiTextureVector(C._wrap_new_aiTextureVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiTextureVector(a ...interface{}) AiTextureVector { + argc := len(a) + if argc == 0 { + return NewAiTextureVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiTextureVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiTextureVector__SWIG_2(a[0].(AiTextureVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiTextureVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiTextureVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiTextureVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiTextureVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiTextureVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiTextureVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_159(_swig_i_1)) +} + +func (arg1 SwigcptrAiTextureVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiTextureVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiTextureVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiTextureVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiTextureVector) Add(arg2 AiTexture) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiTextureVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiTextureVector) Get(arg2 int) (_swig_ret AiTexture) { + var swig_r AiTexture + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiTexture)(SwigcptrAiTexture(C._wrap_aiTextureVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiTextureVector) Set(arg2 int, arg3 AiTexture) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiTextureVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiTextureVector(arg1 AiTextureVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiTextureVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiTextureVector interface { + Swigcptr() uintptr + SwigIsAiTextureVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiTexture) + Get(arg2 int) (_swig_ret AiTexture) + Set(arg2 int, arg3 AiTexture) +} + +type SwigcptrAiVector3DVector uintptr + +func (p SwigcptrAiVector3DVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiVector3DVector) SwigIsAiVector3DVector() { +} + +func NewAiVector3DVector__SWIG_0() (_swig_ret AiVector3DVector) { + var swig_r AiVector3DVector + swig_r = (AiVector3DVector)(SwigcptrAiVector3DVector(C._wrap_new_aiVector3DVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiVector3DVector__SWIG_1(arg1 int64) (_swig_ret AiVector3DVector) { + var swig_r AiVector3DVector + _swig_i_0 := arg1 + swig_r = (AiVector3DVector)(SwigcptrAiVector3DVector(C._wrap_new_aiVector3DVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_160(_swig_i_0)))) + return swig_r +} + +func NewAiVector3DVector__SWIG_2(arg1 AiVector3DVector) (_swig_ret AiVector3DVector) { + var swig_r AiVector3DVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiVector3DVector)(SwigcptrAiVector3DVector(C._wrap_new_aiVector3DVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiVector3DVector(a ...interface{}) AiVector3DVector { + argc := len(a) + if argc == 0 { + return NewAiVector3DVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiVector3DVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiVector3DVector__SWIG_2(a[0].(AiVector3DVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiVector3DVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiVector3DVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiVector3DVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiVector3DVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiVector3DVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiVector3DVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_163(_swig_i_1)) +} + +func (arg1 SwigcptrAiVector3DVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiVector3DVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiVector3DVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiVector3DVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiVector3DVector) Add(arg2 AiVector3D) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiVector3DVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiVector3DVector) Get(arg2 int) (_swig_ret AiVector3D) { + var swig_r AiVector3D + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiVector3D)(SwigcptrAiVector3D(C._wrap_aiVector3DVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiVector3DVector) Set(arg2 int, arg3 AiVector3D) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiVector3DVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiVector3DVector(arg1 AiVector3DVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiVector3DVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiVector3DVector interface { + Swigcptr() uintptr + SwigIsAiVector3DVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiVector3D) + Get(arg2 int) (_swig_ret AiVector3D) + Set(arg2 int, arg3 AiVector3D) +} + +type SwigcptrAiVector3DVectorVector uintptr + +func (p SwigcptrAiVector3DVectorVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiVector3DVectorVector) SwigIsAiVector3DVectorVector() { +} + +func NewAiVector3DVectorVector__SWIG_0() (_swig_ret AiVector3DVectorVector) { + var swig_r AiVector3DVectorVector + swig_r = (AiVector3DVectorVector)(SwigcptrAiVector3DVectorVector(C._wrap_new_aiVector3DVectorVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiVector3DVectorVector__SWIG_1(arg1 int64) (_swig_ret AiVector3DVectorVector) { + var swig_r AiVector3DVectorVector + _swig_i_0 := arg1 + swig_r = (AiVector3DVectorVector)(SwigcptrAiVector3DVectorVector(C._wrap_new_aiVector3DVectorVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_164(_swig_i_0)))) + return swig_r +} + +func NewAiVector3DVectorVector__SWIG_2(arg1 AiVector3DVectorVector) (_swig_ret AiVector3DVectorVector) { + var swig_r AiVector3DVectorVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiVector3DVectorVector)(SwigcptrAiVector3DVectorVector(C._wrap_new_aiVector3DVectorVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiVector3DVectorVector(a ...interface{}) AiVector3DVectorVector { + argc := len(a) + if argc == 0 { + return NewAiVector3DVectorVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiVector3DVectorVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiVector3DVectorVector__SWIG_2(a[0].(AiVector3DVectorVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiVector3DVectorVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiVector3DVectorVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiVector3DVectorVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiVector3DVectorVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiVector3DVectorVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiVector3DVectorVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_167(_swig_i_1)) +} + +func (arg1 SwigcptrAiVector3DVectorVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiVector3DVectorVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiVector3DVectorVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiVector3DVectorVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiVector3DVectorVector) Add(arg2 AiVector3DVector) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiVector3DVectorVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiVector3DVectorVector) Get(arg2 int) (_swig_ret AiVector3DVector) { + var swig_r AiVector3DVector + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiVector3DVector)(SwigcptrAiVector3DVector(C._wrap_aiVector3DVectorVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiVector3DVectorVector) Set(arg2 int, arg3 AiVector3DVector) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiVector3DVectorVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiVector3DVectorVector(arg1 AiVector3DVectorVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiVector3DVectorVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiVector3DVectorVector interface { + Swigcptr() uintptr + SwigIsAiVector3DVectorVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiVector3DVector) + Get(arg2 int) (_swig_ret AiVector3DVector) + Set(arg2 int, arg3 AiVector3DVector) +} + +type SwigcptrAiVertexWeightVector uintptr + +func (p SwigcptrAiVertexWeightVector) Swigcptr() uintptr { + return (uintptr)(p) +} + +func (p SwigcptrAiVertexWeightVector) SwigIsAiVertexWeightVector() { +} + +func NewAiVertexWeightVector__SWIG_0() (_swig_ret AiVertexWeightVector) { + var swig_r AiVertexWeightVector + swig_r = (AiVertexWeightVector)(SwigcptrAiVertexWeightVector(C._wrap_new_aiVertexWeightVector__SWIG_0_aig_29567bba180e4e84())) + return swig_r +} + +func NewAiVertexWeightVector__SWIG_1(arg1 int64) (_swig_ret AiVertexWeightVector) { + var swig_r AiVertexWeightVector + _swig_i_0 := arg1 + swig_r = (AiVertexWeightVector)(SwigcptrAiVertexWeightVector(C._wrap_new_aiVertexWeightVector__SWIG_1_aig_29567bba180e4e84(C.swig_type_168(_swig_i_0)))) + return swig_r +} + +func NewAiVertexWeightVector__SWIG_2(arg1 AiVertexWeightVector) (_swig_ret AiVertexWeightVector) { + var swig_r AiVertexWeightVector + _swig_i_0 := arg1.Swigcptr() + swig_r = (AiVertexWeightVector)(SwigcptrAiVertexWeightVector(C._wrap_new_aiVertexWeightVector__SWIG_2_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)))) + return swig_r +} + +func NewAiVertexWeightVector(a ...interface{}) AiVertexWeightVector { + argc := len(a) + if argc == 0 { + return NewAiVertexWeightVector__SWIG_0() + } + if argc == 1 { + if _, ok := a[0].(int64); !ok { + goto check_2 + } + return NewAiVertexWeightVector__SWIG_1(a[0].(int64)) + } +check_2: + if argc == 1 { + return NewAiVertexWeightVector__SWIG_2(a[0].(AiVertexWeightVector)) + } + panic("No match for overloaded function call") +} + +func (arg1 SwigcptrAiVertexWeightVector) Size() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiVertexWeightVector_size_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiVertexWeightVector) Capacity() (_swig_ret int64) { + var swig_r int64 + _swig_i_0 := arg1 + swig_r = (int64)(C._wrap_aiVertexWeightVector_capacity_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiVertexWeightVector) Reserve(arg2 int64) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + C._wrap_aiVertexWeightVector_reserve_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_type_171(_swig_i_1)) +} + +func (arg1 SwigcptrAiVertexWeightVector) IsEmpty() (_swig_ret bool) { + var swig_r bool + _swig_i_0 := arg1 + swig_r = (bool)(C._wrap_aiVertexWeightVector_isEmpty_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0))) + return swig_r +} + +func (arg1 SwigcptrAiVertexWeightVector) Clear() { + _swig_i_0 := arg1 + C._wrap_aiVertexWeightVector_clear_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +func (arg1 SwigcptrAiVertexWeightVector) Add(arg2 AiVertexWeight) { + _swig_i_0 := arg1 + _swig_i_1 := arg2.Swigcptr() + C._wrap_aiVertexWeightVector_add_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.uintptr_t(_swig_i_1)) +} + +func (arg1 SwigcptrAiVertexWeightVector) Get(arg2 int) (_swig_ret AiVertexWeight) { + var swig_r AiVertexWeight + _swig_i_0 := arg1 + _swig_i_1 := arg2 + swig_r = (AiVertexWeight)(SwigcptrAiVertexWeight(C._wrap_aiVertexWeightVector_get_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1)))) + return swig_r +} + +func (arg1 SwigcptrAiVertexWeightVector) Set(arg2 int, arg3 AiVertexWeight) { + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3.Swigcptr() + C._wrap_aiVertexWeightVector_set_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0), C.swig_intgo(_swig_i_1), C.uintptr_t(_swig_i_2)) +} + +func DeleteAiVertexWeightVector(arg1 AiVertexWeightVector) { + _swig_i_0 := arg1.Swigcptr() + C._wrap_delete_aiVertexWeightVector_aig_29567bba180e4e84(C.uintptr_t(_swig_i_0)) +} + +type AiVertexWeightVector interface { + Swigcptr() uintptr + SwigIsAiVertexWeightVector() + Size() (_swig_ret int64) + Capacity() (_swig_ret int64) + Reserve(arg2 int64) + IsEmpty() (_swig_ret bool) + Clear() + Add(arg2 AiVertexWeight) + Get(arg2 int) (_swig_ret AiVertexWeight) + Set(arg2 int, arg3 AiVertexWeight) +} + +type AiDefaultLogStream int +type AiReturn int + +type SwigcptrInternal_state uintptr +type Internal_state interface { + Swigcptr() uintptr +} + +func (p SwigcptrInternal_state) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiVector3D uintptr +type AiVector3D interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiVector3D) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrVa_list uintptr +type Va_list interface { + Swigcptr() uintptr +} + +func (p SwigcptrVa_list) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiColor4D uintptr +type AiColor4D interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiColor4D) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiImporterDesc uintptr +type AiImporterDesc interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiImporterDesc) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrIrr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_ uintptr +type Irr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_ interface { + Swigcptr() uintptr +} + +func (p SwigcptrIrr_io_IIrrXMLReader_Sl_unsigned_SS_long_Sc_irr_io_IXMLBase_Sg_) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrFILE uintptr +type FILE interface { + Swigcptr() uintptr +} + +func (p SwigcptrFILE) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrIrr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_ uintptr +type Irr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_ interface { + Swigcptr() uintptr +} + +func (p SwigcptrIrr_io_IIrrXMLReader_Sl_char_Sc_irr_io_IXMLBase_Sg_) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiTexture uintptr +type AiTexture interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiTexture) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAi_real uintptr +type Ai_real interface { + Swigcptr() uintptr +} + +func (p SwigcptrAi_real) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiMaterial uintptr +type AiMaterial interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiMaterial) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiMeshAnim uintptr +type AiMeshAnim interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiMeshAnim) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiMemoryInfo uintptr +type AiMemoryInfo interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiMemoryInfo) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiAnimation uintptr +type AiAnimation interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiAnimation) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiMatrix4x4 uintptr +type AiMatrix4x4 interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiMatrix4x4) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiLight uintptr +type AiLight interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiLight) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrOff_t uintptr +type Off_t interface { + Swigcptr() uintptr +} + +func (p SwigcptrOff_t) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiCamera uintptr +type AiCamera interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiCamera) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiAABB uintptr +type AiAABB interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiAABB) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiMaterialProperty uintptr +type AiMaterialProperty interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiMaterialProperty) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiNodeAnim uintptr +type AiNodeAnim interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiNodeAnim) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiString uintptr +type AiString interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiString) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiFileIO uintptr +type AiFileIO interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiFileIO) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiMatrix3x3 uintptr +type AiMatrix3x3 interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiMatrix3x3) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrIrr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_ uintptr +type Irr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_ interface { + Swigcptr() uintptr +} + +func (p SwigcptrIrr_io_IIrrXMLReader_Sl_unsigned_SS_short_Sc_irr_io_IXMLBase_Sg_) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiMetadata uintptr +type AiMetadata interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiMetadata) Swigcptr() uintptr { + return uintptr(p) +} + +type SwigcptrAiQuaternion uintptr +type AiQuaternion interface { + Swigcptr() uintptr +} + +func (p SwigcptrAiQuaternion) Swigcptr() uintptr { + return uintptr(p) +} diff --git a/aig/aig.i b/aig/aig.i new file mode 100755 index 0000000..08a2e8e --- /dev/null +++ b/aig/aig.i @@ -0,0 +1,181 @@ +%module aig + +//NOTE: Add this above the 'C' package in aig_wrap.go `#cgo LDFLAGS: -L lib -l assimp` + +// SWIG helpers for std::string and std::vector wrapping. +%include +%include + +//Needed defines +#define AI_NO_EXCEPT noexcept +#define C_STRUCT struct +#define AI_FORCE_INLINE inline +#define C_ENUM enum +#define ASSIMP_API +#define PACK_STRUCT + +//Macros +%define ASSIMP_ARRAY(CLASS, TYPE, NAME, LENGTH) +%newobject CLASS::NAME; +%extend CLASS { + std::vector *NAME() const { + std::vector *result = new std::vector; + result->reserve(LENGTH); + + for (unsigned int i = 0; i < LENGTH; ++i) { + result->push_back($self->NAME[i]); + } + + return result; + } +} +%ignore CLASS::NAME; +%enddef + +%define ASSIMP_POINTER_ARRAY(CLASS, TYPE, NAME, LENGTH) +%newobject CLASS::NAME; +%extend CLASS { + std::vector *NAME() const { + std::vector *result = new std::vector; + result->reserve(LENGTH); + + TYPE *currentValue = $self->NAME; + TYPE *valueLimit = $self->NAME + LENGTH; + while (currentValue < valueLimit) { + result->push_back(currentValue); + ++currentValue; + } + + return result; + } +} +%ignore CLASS::NAME; +%enddef + +%define ASSIMP_POINTER_ARRAY_ARRAY(CLASS, TYPE, NAME, OUTER_LENGTH, INNER_LENGTH) +%newobject CLASS::NAME; +%extend CLASS { + std::vector > *NAME() const { + std::vector > *result = new std::vector >; + result->reserve(OUTER_LENGTH); + + for (unsigned int i = 0; i < OUTER_LENGTH; ++i) { + std::vector currentElements; + + if ($self->NAME[i] != 0) { + currentElements.reserve(INNER_LENGTH); + + TYPE *currentValue = $self->NAME[i]; + TYPE *valueLimit = $self->NAME[i] + INNER_LENGTH; + while (currentValue < valueLimit) { + currentElements.push_back(currentValue); + ++currentValue; + } + } + + result->push_back(currentElements); + } + + return result; + } +} +%ignore CLASS::NAME; +%enddef + +%{ + #include "assimp/cimport.h" + #include "assimp/scene.h" + #include "assimp/mesh.h" + + #include "zlib/zconf.h" + #include "zlib/zlib.h" + + #include "irrxml/irrXML.h" + + // #include "assimp/types.h" + // #include "assimp/texture.h" + // #include "assimp/light.h" + // #include "assimp/camera.h" + // #include "assimp/material.h" + // #include "assimp/anim.h" + // #include "assimp/metadata.h" + // #include "assimp/postprocess.h" +%} + +//aiScene macros +ASSIMP_ARRAY(aiScene, aiAnimation*, mAnimations, $self->mNumAnimations); +ASSIMP_ARRAY(aiScene, aiCamera*, mCameras, $self->mNumCameras); +ASSIMP_ARRAY(aiScene, aiLight*, mLights, $self->mNumLights); +ASSIMP_ARRAY(aiScene, aiMaterial*, mMaterials, $self->mNumMaterials); +ASSIMP_ARRAY(aiScene, aiMesh*, mMeshes, $self->mNumMeshes); +ASSIMP_ARRAY(aiScene, aiTexture*, mTextures, $self->mNumTextures); + +ASSIMP_ARRAY(aiNode, aiNode*, mChildren, $self->mNumChildren); +ASSIMP_ARRAY(aiNode, unsigned int, mMeshes, $self->mNumMeshes); + +//aiMesh macros +ASSIMP_ARRAY(aiFace, unsigned int, mIndices, $self->mNumIndices); + +ASSIMP_POINTER_ARRAY(aiBone, aiVertexWeight, mWeights, $self->mNumWeights); + +ASSIMP_POINTER_ARRAY(aiAnimMesh, aiVector3D, mVertices, $self->mNumVertices); +ASSIMP_POINTER_ARRAY(aiAnimMesh, aiVector3D, mNormals, $self->mNumVertices); +ASSIMP_POINTER_ARRAY(aiAnimMesh, aiVector3D, mTangents, $self->mNumVertices); +ASSIMP_POINTER_ARRAY(aiAnimMesh, aiVector3D, mBitangents, $self->mNumVertices); +ASSIMP_POINTER_ARRAY_ARRAY(aiAnimMesh, aiVector3D, mTextureCoords, AI_MAX_NUMBER_OF_TEXTURECOORDS, $self->mNumVertices); +ASSIMP_POINTER_ARRAY_ARRAY(aiAnimMesh, aiColor4D, mColors, AI_MAX_NUMBER_OF_COLOR_SETS, $self->mNumVertices); + +ASSIMP_ARRAY(aiMesh, aiAnimMesh*, mAnimMeshes, $self->mNumAnimMeshes); +ASSIMP_ARRAY(aiMesh, aiBone*, mBones, $self->mNumBones); +ASSIMP_ARRAY(aiMesh, unsigned int, mNumUVComponents, AI_MAX_NUMBER_OF_TEXTURECOORDS); +ASSIMP_POINTER_ARRAY(aiMesh, aiVector3D, mVertices, $self->mNumVertices); +ASSIMP_POINTER_ARRAY(aiMesh, aiVector3D, mNormals, $self->mNumVertices); +ASSIMP_POINTER_ARRAY(aiMesh, aiVector3D, mTangents, $self->mNumVertices); +ASSIMP_POINTER_ARRAY(aiMesh, aiVector3D, mBitangents, $self->mNumVertices); +ASSIMP_POINTER_ARRAY(aiMesh, aiFace, mFaces, $self->mNumFaces); +ASSIMP_POINTER_ARRAY_ARRAY(aiMesh, aiVector3D, mTextureCoords, AI_MAX_NUMBER_OF_TEXTURECOORDS, $self->mNumVertices); +ASSIMP_POINTER_ARRAY_ARRAY(aiMesh, aiColor4D, mColors, AI_MAX_NUMBER_OF_COLOR_SETS, $self->mNumVertices); + +//Final includes +%include "assimp/cimport.h" // Plain-C interface +%include "assimp/scene.h" // Output data structure +%include "assimp/mesh.h" + +%include "zlib/zconf.h" +%include "zlib/zlib.h" + +%include "irrxml/irrXML.h" + +// %include "assimp/types.h" +// %include "assimp/texture.h" +// %include "assimp/light.h" +// %include "assimp/camera.h" +// %include "assimp/material.h" +// %include "assimp/anim.h" +// %include "assimp/metadata.h" +// %include "assimp/postprocess.h" + +// We have to "instantiate" the templates used by the ASSSIMP_*_ARRAY macros +// here at the end to avoid running into forward reference issues (SWIG would +// spit out the helper functions before the header includes for the element +// types otherwise). + +%template(UintVector) std::vector; +%template(aiAnimationVector) std::vector; +%template(aiAnimMeshVector) std::vector; +%template(aiBonesVector) std::vector; +%template(aiCameraVector) std::vector; +%template(aiColor4DVector) std::vector; +%template(aiColor4DVectorVector) std::vector >; +%template(aiFaceVector) std::vector; +%template(aiLightVector) std::vector; +%template(aiMaterialVector) std::vector; +%template(aiMaterialPropertyVector) std::vector; +%template(aiMeshAnimVector) std::vector; +%template(aiMeshVector) std::vector; +%template(aiNodeVector) std::vector; +%template(aiNodeAnimVector) std::vector; +%template(aiTextureVector) std::vector; +%template(aiVector3DVector) std::vector; +%template(aiVector3DVectorVector) std::vector >; +%template(aiVertexWeightVector) std::vector; diff --git a/aig/aig_wrap.cxx b/aig/aig_wrap.cxx new file mode 100755 index 0000000..cd6f2d2 --- /dev/null +++ b/aig/aig_wrap.cxx @@ -0,0 +1,9228 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.2 + * + * This file is not intended to be easily readable and contains a number of + * coding conventions designed to improve portability and efficiency. Do not make + * changes to this file unless you know what you are doing--modify the SWIG + * interface file instead. + * ----------------------------------------------------------------------------- */ + +// source: aig\aig.i + +#define SWIGMODULE aig + +#ifdef __cplusplus +/* SwigValueWrapper is described in swig.swg */ +template class SwigValueWrapper { + struct SwigMovePointer { + T *ptr; + SwigMovePointer(T *p) : ptr(p) { } + ~SwigMovePointer() { delete ptr; } + SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; } + } pointer; + SwigValueWrapper& operator=(const SwigValueWrapper& rhs); + SwigValueWrapper(const SwigValueWrapper& rhs); +public: + SwigValueWrapper() : pointer(0) { } + SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; } + operator T&() const { return *pointer.ptr; } + T *operator&() { return pointer.ptr; } +}; + +template T SwigValueInit() { + return T(); +} +#endif + +/* ----------------------------------------------------------------------------- + * This section contains generic SWIG labels for method/variable + * declarations/attributes, and other compiler dependent labels. + * ----------------------------------------------------------------------------- */ + +/* template workaround for compilers that cannot correctly implement the C++ standard */ +#ifndef SWIGTEMPLATEDISAMBIGUATOR +# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) +# define SWIGTEMPLATEDISAMBIGUATOR template +# elif defined(__HP_aCC) +/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ +/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ +# define SWIGTEMPLATEDISAMBIGUATOR template +# else +# define SWIGTEMPLATEDISAMBIGUATOR +# endif +#endif + +/* inline attribute */ +#ifndef SWIGINLINE +# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) +# define SWIGINLINE inline +# else +# define SWIGINLINE +# endif +#endif + +/* attribute recognised by some compilers to avoid 'unused' warnings */ +#ifndef SWIGUNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +# elif defined(__ICC) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +#endif + +#ifndef SWIG_MSC_UNSUPPRESS_4505 +# if defined(_MSC_VER) +# pragma warning(disable : 4505) /* unreferenced local function has been removed */ +# endif +#endif + +#ifndef SWIGUNUSEDPARM +# ifdef __cplusplus +# define SWIGUNUSEDPARM(p) +# else +# define SWIGUNUSEDPARM(p) p SWIGUNUSED +# endif +#endif + +/* internal SWIG method */ +#ifndef SWIGINTERN +# define SWIGINTERN static SWIGUNUSED +#endif + +/* internal inline SWIG method */ +#ifndef SWIGINTERNINLINE +# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE +#endif + +/* exporting methods */ +#if defined(__GNUC__) +# if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) +# ifndef GCC_HASCLASSVISIBILITY +# define GCC_HASCLASSVISIBILITY +# endif +# endif +#endif + +#ifndef SWIGEXPORT +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# if defined(STATIC_LINKED) +# define SWIGEXPORT +# else +# define SWIGEXPORT __declspec(dllexport) +# endif +# else +# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) +# define SWIGEXPORT __attribute__ ((visibility("default"))) +# else +# define SWIGEXPORT +# endif +# endif +#endif + +/* calling conventions for Windows */ +#ifndef SWIGSTDCALL +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# define SWIGSTDCALL __stdcall +# else +# define SWIGSTDCALL +# endif +#endif + +/* Deal with Microsoft's attempt at deprecating C standard runtime functions */ +#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) +# define _CRT_SECURE_NO_DEPRECATE +#endif + +/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ +#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) +# define _SCL_SECURE_NO_DEPRECATE +#endif + +/* Deal with Apple's deprecated 'AssertMacros.h' from Carbon-framework */ +#if defined(__APPLE__) && !defined(__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES) +# define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0 +#endif + +/* Intel's compiler complains if a variable which was never initialised is + * cast to void, which is a common idiom which we use to indicate that we + * are aware a variable isn't used. So we just silence that warning. + * See: https://github.com/swig/swig/issues/192 for more discussion. + */ +#ifdef __INTEL_COMPILER +# pragma warning disable 592 +#endif + + +#include +#include +#include +#include +#include + + + +typedef long long intgo; +typedef unsigned long long uintgo; + + +# if !defined(__clang__) && (defined(__i386__) || defined(__x86_64__)) +# define SWIGSTRUCTPACKED __attribute__((__packed__, __gcc_struct__)) +# else +# define SWIGSTRUCTPACKED __attribute__((__packed__)) +# endif + + + +typedef struct { char *p; intgo n; } _gostring_; +typedef struct { void* array; intgo len; intgo cap; } _goslice_; + + + + +#define swiggo_size_assert_eq(x, y, name) typedef char name[(x-y)*(x-y)*-2+1]; +#define swiggo_size_assert(t, n) swiggo_size_assert_eq(sizeof(t), n, swiggo_sizeof_##t##_is_not_##n) + +swiggo_size_assert(char, 1) +swiggo_size_assert(short, 2) +swiggo_size_assert(int, 4) +typedef long long swiggo_long_long; +swiggo_size_assert(swiggo_long_long, 8) +swiggo_size_assert(float, 4) +swiggo_size_assert(double, 8) + +#ifdef __cplusplus +extern "C" { +#endif +extern void crosscall2(void (*fn)(void *, int), void *, int); +extern char* _cgo_topofstack(void) __attribute__ ((weak)); +extern void _cgo_allocate(void *, int); +extern void _cgo_panic(void *, int); +#ifdef __cplusplus +} +#endif + +static char *_swig_topofstack() { + if (_cgo_topofstack) { + return _cgo_topofstack(); + } else { + return 0; + } +} + +static void _swig_gopanic(const char *p) { + struct { + const char *p; + } SWIGSTRUCTPACKED a; + a.p = p; + crosscall2(_cgo_panic, &a, (int) sizeof a); +} + + + + +#define SWIG_contract_assert(expr, msg) \ + if (!(expr)) { _swig_gopanic(msg); } else + + +static _gostring_ Swig_AllocateString(const char *p, size_t l) { + _gostring_ ret; + ret.p = (char*)malloc(l); + memcpy(ret.p, p, l); + ret.n = l; + return ret; +} + + +static void Swig_free(void* p) { + free(p); +} + +static void* Swig_malloc(int c) { + return malloc(c); +} + + +#include + + +#include +#include + + + #include "assimp/cimport.h" + #include "assimp/scene.h" + #include "assimp/mesh.h" + + #include "zlib/zconf.h" + #include "zlib/zlib.h" + + #include "irrxml/irrXML.h" + + // #include "assimp/types.h" + // #include "assimp/texture.h" + // #include "assimp/light.h" + // #include "assimp/camera.h" + // #include "assimp/material.h" + // #include "assimp/anim.h" + // #include "assimp/metadata.h" + // #include "assimp/postprocess.h" + +SWIGINTERN std::vector< aiNode * > *aiNode_mChildren(aiNode const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumChildren); + + for (unsigned int i = 0; i < self->mNumChildren; ++i) { + result->push_back(self->mChildren[i]); + } + + return result; + } +SWIGINTERN std::vector< unsigned int > *aiNode_mMeshes(aiNode const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumMeshes); + + for (unsigned int i = 0; i < self->mNumMeshes; ++i) { + result->push_back(self->mMeshes[i]); + } + + return result; + } +SWIGINTERN std::vector< aiAnimation * > *aiScene_mAnimations(aiScene const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumAnimations); + + for (unsigned int i = 0; i < self->mNumAnimations; ++i) { + result->push_back(self->mAnimations[i]); + } + + return result; + } +SWIGINTERN std::vector< aiCamera * > *aiScene_mCameras(aiScene const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumCameras); + + for (unsigned int i = 0; i < self->mNumCameras; ++i) { + result->push_back(self->mCameras[i]); + } + + return result; + } +SWIGINTERN std::vector< aiLight * > *aiScene_mLights(aiScene const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumLights); + + for (unsigned int i = 0; i < self->mNumLights; ++i) { + result->push_back(self->mLights[i]); + } + + return result; + } +SWIGINTERN std::vector< aiMaterial * > *aiScene_mMaterials(aiScene const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumMaterials); + + for (unsigned int i = 0; i < self->mNumMaterials; ++i) { + result->push_back(self->mMaterials[i]); + } + + return result; + } +SWIGINTERN std::vector< aiMesh * > *aiScene_mMeshes(aiScene const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumMeshes); + + for (unsigned int i = 0; i < self->mNumMeshes; ++i) { + result->push_back(self->mMeshes[i]); + } + + return result; + } +SWIGINTERN std::vector< aiTexture * > *aiScene_mTextures(aiScene const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumTextures); + + for (unsigned int i = 0; i < self->mNumTextures; ++i) { + result->push_back(self->mTextures[i]); + } + + return result; + } +SWIGINTERN std::vector< unsigned int > *aiFace_mIndices(aiFace const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumIndices); + + for (unsigned int i = 0; i < self->mNumIndices; ++i) { + result->push_back(self->mIndices[i]); + } + + return result; + } +SWIGINTERN std::vector< aiVertexWeight * > *aiBone_mWeights(aiBone const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumWeights); + + aiVertexWeight *currentValue = self->mWeights; + aiVertexWeight *valueLimit = self->mWeights + self->mNumWeights; + while (currentValue < valueLimit) { + result->push_back(currentValue); + ++currentValue; + } + + return result; + } +SWIGINTERN std::vector< aiVector3D * > *aiAnimMesh_mVertices(aiAnimMesh const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumVertices); + + aiVector3D *currentValue = self->mVertices; + aiVector3D *valueLimit = self->mVertices + self->mNumVertices; + while (currentValue < valueLimit) { + result->push_back(currentValue); + ++currentValue; + } + + return result; + } +SWIGINTERN std::vector< aiVector3D * > *aiAnimMesh_mNormals(aiAnimMesh const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumVertices); + + aiVector3D *currentValue = self->mNormals; + aiVector3D *valueLimit = self->mNormals + self->mNumVertices; + while (currentValue < valueLimit) { + result->push_back(currentValue); + ++currentValue; + } + + return result; + } +SWIGINTERN std::vector< aiVector3D * > *aiAnimMesh_mTangents(aiAnimMesh const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumVertices); + + aiVector3D *currentValue = self->mTangents; + aiVector3D *valueLimit = self->mTangents + self->mNumVertices; + while (currentValue < valueLimit) { + result->push_back(currentValue); + ++currentValue; + } + + return result; + } +SWIGINTERN std::vector< aiVector3D * > *aiAnimMesh_mBitangents(aiAnimMesh const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumVertices); + + aiVector3D *currentValue = self->mBitangents; + aiVector3D *valueLimit = self->mBitangents + self->mNumVertices; + while (currentValue < valueLimit) { + result->push_back(currentValue); + ++currentValue; + } + + return result; + } +SWIGINTERN std::vector< std::vector< aiVector3D * > > *aiAnimMesh_mTextureCoords(aiAnimMesh const *self){ + std::vector > *result = new std::vector >; + result->reserve(AI_MAX_NUMBER_OF_TEXTURECOORDS); + + for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i) { + std::vector currentElements; + + if (self->mTextureCoords[i] != 0) { + currentElements.reserve(self->mNumVertices); + + aiVector3D *currentValue = self->mTextureCoords[i]; + aiVector3D *valueLimit = self->mTextureCoords[i] + self->mNumVertices; + while (currentValue < valueLimit) { + currentElements.push_back(currentValue); + ++currentValue; + } + } + + result->push_back(currentElements); + } + + return result; + } +SWIGINTERN std::vector< std::vector< aiColor4D * > > *aiAnimMesh_mColors(aiAnimMesh const *self){ + std::vector > *result = new std::vector >; + result->reserve(AI_MAX_NUMBER_OF_COLOR_SETS); + + for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_COLOR_SETS; ++i) { + std::vector currentElements; + + if (self->mColors[i] != 0) { + currentElements.reserve(self->mNumVertices); + + aiColor4D *currentValue = self->mColors[i]; + aiColor4D *valueLimit = self->mColors[i] + self->mNumVertices; + while (currentValue < valueLimit) { + currentElements.push_back(currentValue); + ++currentValue; + } + } + + result->push_back(currentElements); + } + + return result; + } +SWIGINTERN std::vector< aiAnimMesh * > *aiMesh_mAnimMeshes(aiMesh const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumAnimMeshes); + + for (unsigned int i = 0; i < self->mNumAnimMeshes; ++i) { + result->push_back(self->mAnimMeshes[i]); + } + + return result; + } +SWIGINTERN std::vector< aiBone * > *aiMesh_mBones(aiMesh const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumBones); + + for (unsigned int i = 0; i < self->mNumBones; ++i) { + result->push_back(self->mBones[i]); + } + + return result; + } +SWIGINTERN std::vector< unsigned int > *aiMesh_mNumUVComponents(aiMesh const *self){ + std::vector *result = new std::vector; + result->reserve(AI_MAX_NUMBER_OF_TEXTURECOORDS); + + for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i) { + result->push_back(self->mNumUVComponents[i]); + } + + return result; + } +SWIGINTERN std::vector< aiVector3D * > *aiMesh_mVertices(aiMesh const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumVertices); + + aiVector3D *currentValue = self->mVertices; + aiVector3D *valueLimit = self->mVertices + self->mNumVertices; + while (currentValue < valueLimit) { + result->push_back(currentValue); + ++currentValue; + } + + return result; + } +SWIGINTERN std::vector< aiVector3D * > *aiMesh_mNormals(aiMesh const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumVertices); + + aiVector3D *currentValue = self->mNormals; + aiVector3D *valueLimit = self->mNormals + self->mNumVertices; + while (currentValue < valueLimit) { + result->push_back(currentValue); + ++currentValue; + } + + return result; + } +SWIGINTERN std::vector< aiVector3D * > *aiMesh_mTangents(aiMesh const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumVertices); + + aiVector3D *currentValue = self->mTangents; + aiVector3D *valueLimit = self->mTangents + self->mNumVertices; + while (currentValue < valueLimit) { + result->push_back(currentValue); + ++currentValue; + } + + return result; + } +SWIGINTERN std::vector< aiVector3D * > *aiMesh_mBitangents(aiMesh const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumVertices); + + aiVector3D *currentValue = self->mBitangents; + aiVector3D *valueLimit = self->mBitangents + self->mNumVertices; + while (currentValue < valueLimit) { + result->push_back(currentValue); + ++currentValue; + } + + return result; + } +SWIGINTERN std::vector< aiFace * > *aiMesh_mFaces(aiMesh const *self){ + std::vector *result = new std::vector; + result->reserve(self->mNumFaces); + + aiFace *currentValue = self->mFaces; + aiFace *valueLimit = self->mFaces + self->mNumFaces; + while (currentValue < valueLimit) { + result->push_back(currentValue); + ++currentValue; + } + + return result; + } +SWIGINTERN std::vector< std::vector< aiVector3D * > > *aiMesh_mTextureCoords(aiMesh const *self){ + std::vector > *result = new std::vector >; + result->reserve(AI_MAX_NUMBER_OF_TEXTURECOORDS); + + for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i) { + std::vector currentElements; + + if (self->mTextureCoords[i] != 0) { + currentElements.reserve(self->mNumVertices); + + aiVector3D *currentValue = self->mTextureCoords[i]; + aiVector3D *valueLimit = self->mTextureCoords[i] + self->mNumVertices; + while (currentValue < valueLimit) { + currentElements.push_back(currentValue); + ++currentValue; + } + } + + result->push_back(currentElements); + } + + return result; + } +SWIGINTERN std::vector< std::vector< aiColor4D * > > *aiMesh_mColors(aiMesh const *self){ + std::vector > *result = new std::vector >; + result->reserve(AI_MAX_NUMBER_OF_COLOR_SETS); + + for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_COLOR_SETS; ++i) { + std::vector currentElements; + + if (self->mColors[i] != 0) { + currentElements.reserve(self->mNumVertices); + + aiColor4D *currentValue = self->mColors[i]; + aiColor4D *valueLimit = self->mColors[i] + self->mNumVertices; + while (currentValue < valueLimit) { + currentElements.push_back(currentValue); + ++currentValue; + } + } + + result->push_back(currentElements); + } + + return result; + } +SWIGINTERN std::vector< unsigned int >::const_reference std_vector_Sl_unsigned_SS_int_Sg__get(std::vector< unsigned int > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< unsigned int >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiAnimation_Sm__Sg__get(std::vector< aiAnimation * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiAnimation * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiAnimMesh_Sm__Sg__get(std::vector< aiAnimMesh * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiAnimMesh * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiBone_Sm__Sg__get(std::vector< aiBone * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiBone * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiCamera_Sm__Sg__get(std::vector< aiCamera * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiCamera * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiColor4D_Sm__Sg__get(std::vector< aiColor4D * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiColor4D * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i >::const_reference std_vector_Sl_std_vector_Sl_aiColor4D_Sm__Sg__Sg__get(std::vector< std::vector< aiColor4D * > > *self,int i){ + int size = int(self->size()); + if (i>=0 && i > *self,int i,std::vector< std::vector< aiColor4D * > >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiFace_Sm__Sg__get(std::vector< aiFace * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiFace * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiLight_Sm__Sg__get(std::vector< aiLight * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiLight * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiMaterial_Sm__Sg__get(std::vector< aiMaterial * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiMaterial * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiMaterialProperty_Sm__Sg__get(std::vector< aiMaterialProperty * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiMaterialProperty * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiMeshAnim_Sm__Sg__get(std::vector< aiMeshAnim * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiMeshAnim * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiMesh_Sm__Sg__get(std::vector< aiMesh * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiMesh * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiNode_Sm__Sg__get(std::vector< aiNode * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiNode * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiNodeAnim_Sm__Sg__get(std::vector< aiNodeAnim * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiNodeAnim * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiTexture_Sm__Sg__get(std::vector< aiTexture * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiTexture * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiVector3D_Sm__Sg__get(std::vector< aiVector3D * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiVector3D * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i >::const_reference std_vector_Sl_std_vector_Sl_aiVector3D_Sm__Sg__Sg__get(std::vector< std::vector< aiVector3D * > > *self,int i){ + int size = int(self->size()); + if (i>=0 && i > *self,int i,std::vector< std::vector< aiVector3D * > >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && i::const_reference std_vector_Sl_aiVertexWeight_Sm__Sg__get(std::vector< aiVertexWeight * > *self,int i){ + int size = int(self->size()); + if (i>=0 && i *self,int i,std::vector< aiVertexWeight * >::value_type const &val){ + int size = int(self->size()); + if (i>=0 && icallback = arg2; + +} + + +void* _wrap_aiLogStream_callback_get_aig_29567bba180e4e84(aiLogStream *_swig_go_0) { + aiLogStream *arg1 = (aiLogStream *) 0 ; + aiLogStreamCallback result; + void* _swig_go_result; + + arg1 = *(aiLogStream **)&_swig_go_0; + + result = (aiLogStreamCallback) ((arg1)->callback); + *(aiLogStreamCallback *)&_swig_go_result = (aiLogStreamCallback)result; + return _swig_go_result; +} + + +void _wrap_aiLogStream_user_set_aig_29567bba180e4e84(aiLogStream *_swig_go_0, _gostring_ _swig_go_1) { + aiLogStream *arg1 = (aiLogStream *) 0 ; + char *arg2 = (char *) 0 ; + + arg1 = *(aiLogStream **)&_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + + { + delete [] arg1->user; + if (arg2) { + arg1->user = (char *) (new char[strlen((const char *)arg2)+1]); + strcpy((char *)arg1->user, (const char *)arg2); + } else { + arg1->user = 0; + } + } + + free(arg2); +} + + +_gostring_ _wrap_aiLogStream_user_get_aig_29567bba180e4e84(aiLogStream *_swig_go_0) { + aiLogStream *arg1 = (aiLogStream *) 0 ; + char *result = 0 ; + _gostring_ _swig_go_result; + + arg1 = *(aiLogStream **)&_swig_go_0; + + result = (char *) ((arg1)->user); + _swig_go_result = Swig_AllocateString((char*)result, result ? strlen((char*)result) : 0); + return _swig_go_result; +} + + +aiLogStream *_wrap_new_aiLogStream_aig_29567bba180e4e84() { + aiLogStream *result = 0 ; + aiLogStream *_swig_go_result; + + + result = (aiLogStream *)new aiLogStream(); + *(aiLogStream **)&_swig_go_result = (aiLogStream *)result; + return _swig_go_result; +} + + +void _wrap_delete_aiLogStream_aig_29567bba180e4e84(aiLogStream *_swig_go_0) { + aiLogStream *arg1 = (aiLogStream *) 0 ; + + arg1 = *(aiLogStream **)&_swig_go_0; + + delete arg1; + +} + + +void _wrap_aiPropertyStore_sentinel_set_aig_29567bba180e4e84(aiPropertyStore *_swig_go_0, char _swig_go_1) { + aiPropertyStore *arg1 = (aiPropertyStore *) 0 ; + char arg2 ; + + arg1 = *(aiPropertyStore **)&_swig_go_0; + arg2 = (char)_swig_go_1; + + if (arg1) (arg1)->sentinel = arg2; + +} + + +char _wrap_aiPropertyStore_sentinel_get_aig_29567bba180e4e84(aiPropertyStore *_swig_go_0) { + aiPropertyStore *arg1 = (aiPropertyStore *) 0 ; + char result; + char _swig_go_result; + + arg1 = *(aiPropertyStore **)&_swig_go_0; + + result = (char) ((arg1)->sentinel); + _swig_go_result = result; + return _swig_go_result; +} + + +aiPropertyStore *_wrap_new_aiPropertyStore_aig_29567bba180e4e84() { + aiPropertyStore *result = 0 ; + aiPropertyStore *_swig_go_result; + + + result = (aiPropertyStore *)new aiPropertyStore(); + *(aiPropertyStore **)&_swig_go_result = (aiPropertyStore *)result; + return _swig_go_result; +} + + +void _wrap_delete_aiPropertyStore_aig_29567bba180e4e84(aiPropertyStore *_swig_go_0) { + aiPropertyStore *arg1 = (aiPropertyStore *) 0 ; + + arg1 = *(aiPropertyStore **)&_swig_go_0; + + delete arg1; + +} + + +aiScene *_wrap_aiImportFile_aig_29567bba180e4e84(_gostring_ _swig_go_0, intgo _swig_go_1) { + char *arg1 = (char *) 0 ; + unsigned int arg2 ; + aiScene *result = 0 ; + aiScene *_swig_go_result; + + + arg1 = (char *)malloc(_swig_go_0.n + 1); + memcpy(arg1, _swig_go_0.p, _swig_go_0.n); + arg1[_swig_go_0.n] = '\0'; + + arg2 = (unsigned int)_swig_go_1; + + result = (aiScene *)aiImportFile((char const *)arg1,arg2); + *(aiScene **)&_swig_go_result = (aiScene *)result; + free(arg1); + return _swig_go_result; +} + + +aiScene *_wrap_aiImportFileEx_aig_29567bba180e4e84(_gostring_ _swig_go_0, intgo _swig_go_1, aiFileIO *_swig_go_2) { + char *arg1 = (char *) 0 ; + unsigned int arg2 ; + aiFileIO *arg3 = (aiFileIO *) 0 ; + aiScene *result = 0 ; + aiScene *_swig_go_result; + + + arg1 = (char *)malloc(_swig_go_0.n + 1); + memcpy(arg1, _swig_go_0.p, _swig_go_0.n); + arg1[_swig_go_0.n] = '\0'; + + arg2 = (unsigned int)_swig_go_1; + arg3 = *(aiFileIO **)&_swig_go_2; + + result = (aiScene *)aiImportFileEx((char const *)arg1,arg2,arg3); + *(aiScene **)&_swig_go_result = (aiScene *)result; + free(arg1); + return _swig_go_result; +} + + +aiScene *_wrap_aiImportFileExWithProperties_aig_29567bba180e4e84(_gostring_ _swig_go_0, intgo _swig_go_1, aiFileIO *_swig_go_2, aiPropertyStore *_swig_go_3) { + char *arg1 = (char *) 0 ; + unsigned int arg2 ; + aiFileIO *arg3 = (aiFileIO *) 0 ; + aiPropertyStore *arg4 = (aiPropertyStore *) 0 ; + aiScene *result = 0 ; + aiScene *_swig_go_result; + + + arg1 = (char *)malloc(_swig_go_0.n + 1); + memcpy(arg1, _swig_go_0.p, _swig_go_0.n); + arg1[_swig_go_0.n] = '\0'; + + arg2 = (unsigned int)_swig_go_1; + arg3 = *(aiFileIO **)&_swig_go_2; + arg4 = *(aiPropertyStore **)&_swig_go_3; + + result = (aiScene *)aiImportFileExWithProperties((char const *)arg1,arg2,arg3,(aiPropertyStore const *)arg4); + *(aiScene **)&_swig_go_result = (aiScene *)result; + free(arg1); + return _swig_go_result; +} + + +aiScene *_wrap_aiImportFileFromMemory_aig_29567bba180e4e84(_gostring_ _swig_go_0, intgo _swig_go_1, intgo _swig_go_2, _gostring_ _swig_go_3) { + char *arg1 = (char *) 0 ; + unsigned int arg2 ; + unsigned int arg3 ; + char *arg4 = (char *) 0 ; + aiScene *result = 0 ; + aiScene *_swig_go_result; + + + arg1 = (char *)malloc(_swig_go_0.n + 1); + memcpy(arg1, _swig_go_0.p, _swig_go_0.n); + arg1[_swig_go_0.n] = '\0'; + + arg2 = (unsigned int)_swig_go_1; + arg3 = (unsigned int)_swig_go_2; + + arg4 = (char *)malloc(_swig_go_3.n + 1); + memcpy(arg4, _swig_go_3.p, _swig_go_3.n); + arg4[_swig_go_3.n] = '\0'; + + + result = (aiScene *)aiImportFileFromMemory((char const *)arg1,arg2,arg3,(char const *)arg4); + *(aiScene **)&_swig_go_result = (aiScene *)result; + free(arg1); + free(arg4); + return _swig_go_result; +} + + +aiScene *_wrap_aiImportFileFromMemoryWithProperties_aig_29567bba180e4e84(_gostring_ _swig_go_0, intgo _swig_go_1, intgo _swig_go_2, _gostring_ _swig_go_3, aiPropertyStore *_swig_go_4) { + char *arg1 = (char *) 0 ; + unsigned int arg2 ; + unsigned int arg3 ; + char *arg4 = (char *) 0 ; + aiPropertyStore *arg5 = (aiPropertyStore *) 0 ; + aiScene *result = 0 ; + aiScene *_swig_go_result; + + + arg1 = (char *)malloc(_swig_go_0.n + 1); + memcpy(arg1, _swig_go_0.p, _swig_go_0.n); + arg1[_swig_go_0.n] = '\0'; + + arg2 = (unsigned int)_swig_go_1; + arg3 = (unsigned int)_swig_go_2; + + arg4 = (char *)malloc(_swig_go_3.n + 1); + memcpy(arg4, _swig_go_3.p, _swig_go_3.n); + arg4[_swig_go_3.n] = '\0'; + + arg5 = *(aiPropertyStore **)&_swig_go_4; + + result = (aiScene *)aiImportFileFromMemoryWithProperties((char const *)arg1,arg2,arg3,(char const *)arg4,(aiPropertyStore const *)arg5); + *(aiScene **)&_swig_go_result = (aiScene *)result; + free(arg1); + free(arg4); + return _swig_go_result; +} + + +aiScene *_wrap_aiApplyPostProcessing_aig_29567bba180e4e84(aiScene *_swig_go_0, intgo _swig_go_1) { + aiScene *arg1 = (aiScene *) 0 ; + unsigned int arg2 ; + aiScene *result = 0 ; + aiScene *_swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + result = (aiScene *)aiApplyPostProcessing((aiScene const *)arg1,arg2); + *(aiScene **)&_swig_go_result = (aiScene *)result; + return _swig_go_result; +} + + +aiLogStream *_wrap_aiGetPredefinedLogStream_aig_29567bba180e4e84(intgo _swig_go_0, _gostring_ _swig_go_1) { + enum aiDefaultLogStream arg1 ; + char *arg2 = (char *) 0 ; + aiLogStream result; + aiLogStream *_swig_go_result; + + arg1 = (enum aiDefaultLogStream)_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + + result = aiGetPredefinedLogStream(arg1,(char const *)arg2); + *(aiLogStream **)&_swig_go_result = new aiLogStream(result); + free(arg2); + return _swig_go_result; +} + + +void _wrap_aiAttachLogStream_aig_29567bba180e4e84(aiLogStream *_swig_go_0) { + aiLogStream *arg1 = (aiLogStream *) 0 ; + + arg1 = *(aiLogStream **)&_swig_go_0; + + aiAttachLogStream((aiLogStream const *)arg1); + +} + + +void _wrap_aiEnableVerboseLogging_aig_29567bba180e4e84(intgo _swig_go_0) { + aiBool arg1 ; + + arg1 = (aiBool)_swig_go_0; + + aiEnableVerboseLogging(arg1); + +} + + +intgo _wrap_aiDetachLogStream_aig_29567bba180e4e84(aiLogStream *_swig_go_0) { + aiLogStream *arg1 = (aiLogStream *) 0 ; + enum aiReturn result; + intgo _swig_go_result; + + arg1 = *(aiLogStream **)&_swig_go_0; + + result = (enum aiReturn)aiDetachLogStream((aiLogStream const *)arg1); + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +void _wrap_aiDetachAllLogStreams_aig_29567bba180e4e84() { + aiDetachAllLogStreams(); + +} + + +void _wrap_aiReleaseImport_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + + arg1 = *(aiScene **)&_swig_go_0; + + aiReleaseImport((aiScene const *)arg1); + +} + + +_gostring_ _wrap_aiGetErrorString_aig_29567bba180e4e84() { + char *result = 0 ; + _gostring_ _swig_go_result; + + + result = (char *)aiGetErrorString(); + _swig_go_result = Swig_AllocateString((char*)result, result ? strlen((char*)result) : 0); + return _swig_go_result; +} + + +intgo _wrap_aiIsExtensionSupported_aig_29567bba180e4e84(_gostring_ _swig_go_0) { + char *arg1 = (char *) 0 ; + aiBool result; + intgo _swig_go_result; + + + arg1 = (char *)malloc(_swig_go_0.n + 1); + memcpy(arg1, _swig_go_0.p, _swig_go_0.n); + arg1[_swig_go_0.n] = '\0'; + + + result = (aiBool)aiIsExtensionSupported((char const *)arg1); + _swig_go_result = result; + free(arg1); + return _swig_go_result; +} + + +void _wrap_aiGetExtensionList_aig_29567bba180e4e84(aiString *_swig_go_0) { + aiString *arg1 = (aiString *) 0 ; + + arg1 = *(aiString **)&_swig_go_0; + + aiGetExtensionList(arg1); + +} + + +void _wrap_aiGetMemoryRequirements_aig_29567bba180e4e84(aiScene *_swig_go_0, aiMemoryInfo *_swig_go_1) { + aiScene *arg1 = (aiScene *) 0 ; + aiMemoryInfo *arg2 = (aiMemoryInfo *) 0 ; + + arg1 = *(aiScene **)&_swig_go_0; + arg2 = *(aiMemoryInfo **)&_swig_go_1; + + aiGetMemoryRequirements((aiScene const *)arg1,arg2); + +} + + +aiPropertyStore *_wrap_aiCreatePropertyStore_aig_29567bba180e4e84() { + aiPropertyStore *result = 0 ; + aiPropertyStore *_swig_go_result; + + + result = (aiPropertyStore *)aiCreatePropertyStore(); + *(aiPropertyStore **)&_swig_go_result = (aiPropertyStore *)result; + return _swig_go_result; +} + + +void _wrap_aiReleasePropertyStore_aig_29567bba180e4e84(aiPropertyStore *_swig_go_0) { + aiPropertyStore *arg1 = (aiPropertyStore *) 0 ; + + arg1 = *(aiPropertyStore **)&_swig_go_0; + + aiReleasePropertyStore(arg1); + +} + + +void _wrap_aiSetImportPropertyInteger_aig_29567bba180e4e84(aiPropertyStore *_swig_go_0, _gostring_ _swig_go_1, intgo _swig_go_2) { + aiPropertyStore *arg1 = (aiPropertyStore *) 0 ; + char *arg2 = (char *) 0 ; + int arg3 ; + + arg1 = *(aiPropertyStore **)&_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + arg3 = (int)_swig_go_2; + + aiSetImportPropertyInteger(arg1,(char const *)arg2,arg3); + + free(arg2); +} + + +void _wrap_aiSetImportPropertyFloat_aig_29567bba180e4e84(aiPropertyStore *_swig_go_0, _gostring_ _swig_go_1, ai_real *_swig_go_2) { + aiPropertyStore *arg1 = (aiPropertyStore *) 0 ; + char *arg2 = (char *) 0 ; + ai_real arg3 ; + ai_real *argp3 ; + + arg1 = *(aiPropertyStore **)&_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + + argp3 = (ai_real *)_swig_go_2; + if (argp3 == NULL) { + _swig_gopanic("Attempt to dereference null ai_real"); + } + arg3 = (ai_real)*argp3; + + + aiSetImportPropertyFloat(arg1,(char const *)arg2,arg3); + + free(arg2); +} + + +void _wrap_aiSetImportPropertyString_aig_29567bba180e4e84(aiPropertyStore *_swig_go_0, _gostring_ _swig_go_1, aiString *_swig_go_2) { + aiPropertyStore *arg1 = (aiPropertyStore *) 0 ; + char *arg2 = (char *) 0 ; + aiString *arg3 = (aiString *) 0 ; + + arg1 = *(aiPropertyStore **)&_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + arg3 = *(aiString **)&_swig_go_2; + + aiSetImportPropertyString(arg1,(char const *)arg2,(aiString const *)arg3); + + free(arg2); +} + + +void _wrap_aiSetImportPropertyMatrix_aig_29567bba180e4e84(aiPropertyStore *_swig_go_0, _gostring_ _swig_go_1, aiMatrix4x4 *_swig_go_2) { + aiPropertyStore *arg1 = (aiPropertyStore *) 0 ; + char *arg2 = (char *) 0 ; + aiMatrix4x4 *arg3 = (aiMatrix4x4 *) 0 ; + + arg1 = *(aiPropertyStore **)&_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + arg3 = *(aiMatrix4x4 **)&_swig_go_2; + + aiSetImportPropertyMatrix(arg1,(char const *)arg2,(aiMatrix4x4 const *)arg3); + + free(arg2); +} + + +void _wrap_aiCreateQuaternionFromMatrix_aig_29567bba180e4e84(aiQuaternion *_swig_go_0, aiMatrix3x3 *_swig_go_1) { + aiQuaternion *arg1 = (aiQuaternion *) 0 ; + aiMatrix3x3 *arg2 = (aiMatrix3x3 *) 0 ; + + arg1 = *(aiQuaternion **)&_swig_go_0; + arg2 = *(aiMatrix3x3 **)&_swig_go_1; + + aiCreateQuaternionFromMatrix(arg1,(aiMatrix3x3 const *)arg2); + +} + + +void _wrap_aiDecomposeMatrix_aig_29567bba180e4e84(aiMatrix4x4 *_swig_go_0, aiVector3D *_swig_go_1, aiQuaternion *_swig_go_2, aiVector3D *_swig_go_3) { + aiMatrix4x4 *arg1 = (aiMatrix4x4 *) 0 ; + aiVector3D *arg2 = (aiVector3D *) 0 ; + aiQuaternion *arg3 = (aiQuaternion *) 0 ; + aiVector3D *arg4 = (aiVector3D *) 0 ; + + arg1 = *(aiMatrix4x4 **)&_swig_go_0; + arg2 = *(aiVector3D **)&_swig_go_1; + arg3 = *(aiQuaternion **)&_swig_go_2; + arg4 = *(aiVector3D **)&_swig_go_3; + + aiDecomposeMatrix((aiMatrix4x4 const *)arg1,arg2,arg3,arg4); + +} + + +void _wrap_aiTransposeMatrix4_aig_29567bba180e4e84(aiMatrix4x4 *_swig_go_0) { + aiMatrix4x4 *arg1 = (aiMatrix4x4 *) 0 ; + + arg1 = *(aiMatrix4x4 **)&_swig_go_0; + + aiTransposeMatrix4(arg1); + +} + + +void _wrap_aiTransposeMatrix3_aig_29567bba180e4e84(aiMatrix3x3 *_swig_go_0) { + aiMatrix3x3 *arg1 = (aiMatrix3x3 *) 0 ; + + arg1 = *(aiMatrix3x3 **)&_swig_go_0; + + aiTransposeMatrix3(arg1); + +} + + +void _wrap_aiTransformVecByMatrix3_aig_29567bba180e4e84(aiVector3D *_swig_go_0, aiMatrix3x3 *_swig_go_1) { + aiVector3D *arg1 = (aiVector3D *) 0 ; + aiMatrix3x3 *arg2 = (aiMatrix3x3 *) 0 ; + + arg1 = *(aiVector3D **)&_swig_go_0; + arg2 = *(aiMatrix3x3 **)&_swig_go_1; + + aiTransformVecByMatrix3(arg1,(aiMatrix3x3 const *)arg2); + +} + + +void _wrap_aiTransformVecByMatrix4_aig_29567bba180e4e84(aiVector3D *_swig_go_0, aiMatrix4x4 *_swig_go_1) { + aiVector3D *arg1 = (aiVector3D *) 0 ; + aiMatrix4x4 *arg2 = (aiMatrix4x4 *) 0 ; + + arg1 = *(aiVector3D **)&_swig_go_0; + arg2 = *(aiMatrix4x4 **)&_swig_go_1; + + aiTransformVecByMatrix4(arg1,(aiMatrix4x4 const *)arg2); + +} + + +void _wrap_aiMultiplyMatrix4_aig_29567bba180e4e84(aiMatrix4x4 *_swig_go_0, aiMatrix4x4 *_swig_go_1) { + aiMatrix4x4 *arg1 = (aiMatrix4x4 *) 0 ; + aiMatrix4x4 *arg2 = (aiMatrix4x4 *) 0 ; + + arg1 = *(aiMatrix4x4 **)&_swig_go_0; + arg2 = *(aiMatrix4x4 **)&_swig_go_1; + + aiMultiplyMatrix4(arg1,(aiMatrix4x4 const *)arg2); + +} + + +void _wrap_aiMultiplyMatrix3_aig_29567bba180e4e84(aiMatrix3x3 *_swig_go_0, aiMatrix3x3 *_swig_go_1) { + aiMatrix3x3 *arg1 = (aiMatrix3x3 *) 0 ; + aiMatrix3x3 *arg2 = (aiMatrix3x3 *) 0 ; + + arg1 = *(aiMatrix3x3 **)&_swig_go_0; + arg2 = *(aiMatrix3x3 **)&_swig_go_1; + + aiMultiplyMatrix3(arg1,(aiMatrix3x3 const *)arg2); + +} + + +void _wrap_aiIdentityMatrix3_aig_29567bba180e4e84(aiMatrix3x3 *_swig_go_0) { + aiMatrix3x3 *arg1 = (aiMatrix3x3 *) 0 ; + + arg1 = *(aiMatrix3x3 **)&_swig_go_0; + + aiIdentityMatrix3(arg1); + +} + + +void _wrap_aiIdentityMatrix4_aig_29567bba180e4e84(aiMatrix4x4 *_swig_go_0) { + aiMatrix4x4 *arg1 = (aiMatrix4x4 *) 0 ; + + arg1 = *(aiMatrix4x4 **)&_swig_go_0; + + aiIdentityMatrix4(arg1); + +} + + +long long _wrap_aiGetImportFormatCount_aig_29567bba180e4e84() { + size_t result; + long long _swig_go_result; + + + result = aiGetImportFormatCount(); + _swig_go_result = result; + return _swig_go_result; +} + + +aiImporterDesc *_wrap_aiGetImportFormatDescription_aig_29567bba180e4e84(long long _swig_go_0) { + size_t arg1 ; + aiImporterDesc *result = 0 ; + aiImporterDesc *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (aiImporterDesc *)aiGetImportFormatDescription(arg1); + *(aiImporterDesc **)&_swig_go_result = (aiImporterDesc *)result; + return _swig_go_result; +} + + +void _wrap_aiNode_mName_set_aig_29567bba180e4e84(aiNode *_swig_go_0, aiString *_swig_go_1) { + aiNode *arg1 = (aiNode *) 0 ; + aiString arg2 ; + aiString *argp2 ; + + arg1 = *(aiNode **)&_swig_go_0; + + argp2 = (aiString *)_swig_go_1; + if (argp2 == NULL) { + _swig_gopanic("Attempt to dereference null aiString"); + } + arg2 = (aiString)*argp2; + + + if (arg1) (arg1)->mName = arg2; + +} + + +aiString *_wrap_aiNode_mName_get_aig_29567bba180e4e84(aiNode *_swig_go_0) { + aiNode *arg1 = (aiNode *) 0 ; + aiString result; + aiString *_swig_go_result; + + arg1 = *(aiNode **)&_swig_go_0; + + result = ((arg1)->mName); + *(aiString **)&_swig_go_result = new aiString(result); + return _swig_go_result; +} + + +void _wrap_aiNode_mTransformation_set_aig_29567bba180e4e84(aiNode *_swig_go_0, aiMatrix4x4 *_swig_go_1) { + aiNode *arg1 = (aiNode *) 0 ; + aiMatrix4x4 arg2 ; + aiMatrix4x4 *argp2 ; + + arg1 = *(aiNode **)&_swig_go_0; + + argp2 = (aiMatrix4x4 *)_swig_go_1; + if (argp2 == NULL) { + _swig_gopanic("Attempt to dereference null aiMatrix4x4"); + } + arg2 = (aiMatrix4x4)*argp2; + + + if (arg1) (arg1)->mTransformation = arg2; + +} + + +aiMatrix4x4 *_wrap_aiNode_mTransformation_get_aig_29567bba180e4e84(aiNode *_swig_go_0) { + aiNode *arg1 = (aiNode *) 0 ; + aiMatrix4x4 result; + aiMatrix4x4 *_swig_go_result; + + arg1 = *(aiNode **)&_swig_go_0; + + result = ((arg1)->mTransformation); + *(aiMatrix4x4 **)&_swig_go_result = new aiMatrix4x4(result); + return _swig_go_result; +} + + +void _wrap_aiNode_mParent_set_aig_29567bba180e4e84(aiNode *_swig_go_0, aiNode *_swig_go_1) { + aiNode *arg1 = (aiNode *) 0 ; + aiNode *arg2 = (aiNode *) 0 ; + + arg1 = *(aiNode **)&_swig_go_0; + arg2 = *(aiNode **)&_swig_go_1; + + if (arg1) (arg1)->mParent = arg2; + +} + + +aiNode *_wrap_aiNode_mParent_get_aig_29567bba180e4e84(aiNode *_swig_go_0) { + aiNode *arg1 = (aiNode *) 0 ; + aiNode *result = 0 ; + aiNode *_swig_go_result; + + arg1 = *(aiNode **)&_swig_go_0; + + result = (aiNode *) ((arg1)->mParent); + *(aiNode **)&_swig_go_result = (aiNode *)result; + return _swig_go_result; +} + + +void _wrap_aiNode_mNumChildren_set_aig_29567bba180e4e84(aiNode *_swig_go_0, intgo _swig_go_1) { + aiNode *arg1 = (aiNode *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiNode **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mNumChildren = arg2; + +} + + +intgo _wrap_aiNode_mNumChildren_get_aig_29567bba180e4e84(aiNode *_swig_go_0) { + aiNode *arg1 = (aiNode *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiNode **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mNumChildren); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiNode_mNumMeshes_set_aig_29567bba180e4e84(aiNode *_swig_go_0, intgo _swig_go_1) { + aiNode *arg1 = (aiNode *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiNode **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mNumMeshes = arg2; + +} + + +intgo _wrap_aiNode_mNumMeshes_get_aig_29567bba180e4e84(aiNode *_swig_go_0) { + aiNode *arg1 = (aiNode *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiNode **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mNumMeshes); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiNode_mMetaData_set_aig_29567bba180e4e84(aiNode *_swig_go_0, aiMetadata *_swig_go_1) { + aiNode *arg1 = (aiNode *) 0 ; + aiMetadata *arg2 = (aiMetadata *) 0 ; + + arg1 = *(aiNode **)&_swig_go_0; + arg2 = *(aiMetadata **)&_swig_go_1; + + if (arg1) (arg1)->mMetaData = arg2; + +} + + +aiMetadata *_wrap_aiNode_mMetaData_get_aig_29567bba180e4e84(aiNode *_swig_go_0) { + aiNode *arg1 = (aiNode *) 0 ; + aiMetadata *result = 0 ; + aiMetadata *_swig_go_result; + + arg1 = *(aiNode **)&_swig_go_0; + + result = (aiMetadata *) ((arg1)->mMetaData); + *(aiMetadata **)&_swig_go_result = (aiMetadata *)result; + return _swig_go_result; +} + + +aiNode *_wrap_new_aiNode__SWIG_0_aig_29567bba180e4e84() { + aiNode *result = 0 ; + aiNode *_swig_go_result; + + + result = (aiNode *)new aiNode(); + *(aiNode **)&_swig_go_result = (aiNode *)result; + return _swig_go_result; +} + + +aiNode *_wrap_new_aiNode__SWIG_1_aig_29567bba180e4e84(_gostring_ _swig_go_0) { + std::string *arg1 = 0 ; + aiNode *result = 0 ; + aiNode *_swig_go_result; + + + std::string arg1_str(_swig_go_0.p, _swig_go_0.n); + arg1 = &arg1_str; + + + result = (aiNode *)new aiNode((std::string const &)*arg1); + *(aiNode **)&_swig_go_result = (aiNode *)result; + return _swig_go_result; +} + + +void _wrap_delete_aiNode_aig_29567bba180e4e84(aiNode *_swig_go_0) { + aiNode *arg1 = (aiNode *) 0 ; + + arg1 = *(aiNode **)&_swig_go_0; + + delete arg1; + +} + + +aiNode *_wrap_aiNode_FindNode__SWIG_0_aig_29567bba180e4e84(aiNode *_swig_go_0, aiString *_swig_go_1) { + aiNode *arg1 = (aiNode *) 0 ; + aiString *arg2 = 0 ; + aiNode *result = 0 ; + aiNode *_swig_go_result; + + arg1 = *(aiNode **)&_swig_go_0; + arg2 = *(aiString **)&_swig_go_1; + + result = (aiNode *)((aiNode const *)arg1)->FindNode((aiString const &)*arg2); + *(aiNode **)&_swig_go_result = (aiNode *)result; + return _swig_go_result; +} + + +aiNode *_wrap_aiNode_FindNode__SWIG_1_aig_29567bba180e4e84(aiNode *_swig_go_0, aiString *_swig_go_1) { + aiNode *arg1 = (aiNode *) 0 ; + aiString *arg2 = 0 ; + aiNode *result = 0 ; + aiNode *_swig_go_result; + + arg1 = *(aiNode **)&_swig_go_0; + arg2 = *(aiString **)&_swig_go_1; + + result = (aiNode *)(arg1)->FindNode((aiString const &)*arg2); + *(aiNode **)&_swig_go_result = (aiNode *)result; + return _swig_go_result; +} + + +aiNode *_wrap_aiNode_FindNode__SWIG_2_aig_29567bba180e4e84(aiNode *_swig_go_0, _gostring_ _swig_go_1) { + aiNode *arg1 = (aiNode *) 0 ; + char *arg2 = (char *) 0 ; + aiNode *result = 0 ; + aiNode *_swig_go_result; + + arg1 = *(aiNode **)&_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + + result = (aiNode *)((aiNode const *)arg1)->FindNode((char const *)arg2); + *(aiNode **)&_swig_go_result = (aiNode *)result; + free(arg2); + return _swig_go_result; +} + + +aiNode *_wrap_aiNode_FindNode__SWIG_3_aig_29567bba180e4e84(aiNode *_swig_go_0, _gostring_ _swig_go_1) { + aiNode *arg1 = (aiNode *) 0 ; + char *arg2 = (char *) 0 ; + aiNode *result = 0 ; + aiNode *_swig_go_result; + + arg1 = *(aiNode **)&_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + + result = (aiNode *)(arg1)->FindNode((char const *)arg2); + *(aiNode **)&_swig_go_result = (aiNode *)result; + free(arg2); + return _swig_go_result; +} + + +void _wrap_aiNode_addChildren_aig_29567bba180e4e84(aiNode *_swig_go_0, intgo _swig_go_1, aiNode **_swig_go_2) { + aiNode *arg1 = (aiNode *) 0 ; + unsigned int arg2 ; + aiNode **arg3 = (aiNode **) 0 ; + + arg1 = *(aiNode **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + arg3 = *(aiNode ***)&_swig_go_2; + + (arg1)->addChildren(arg2,arg3); + +} + + +std::vector< aiNode * > *_wrap_aiNode_mChildren_aig_29567bba180e4e84(aiNode *_swig_go_0) { + aiNode *arg1 = (aiNode *) 0 ; + std::vector< aiNode * > *result = 0 ; + std::vector< aiNode * > *_swig_go_result; + + arg1 = *(aiNode **)&_swig_go_0; + + result = (std::vector< aiNode * > *)aiNode_mChildren((aiNode const *)arg1); + *(std::vector< aiNode * > **)&_swig_go_result = (std::vector< aiNode * > *)result; + return _swig_go_result; +} + + +std::vector< unsigned int > *_wrap_aiNode_mMeshes_aig_29567bba180e4e84(aiNode *_swig_go_0) { + aiNode *arg1 = (aiNode *) 0 ; + std::vector< unsigned int > *result = 0 ; + std::vector< unsigned int > *_swig_go_result; + + arg1 = *(aiNode **)&_swig_go_0; + + result = (std::vector< unsigned int > *)aiNode_mMeshes((aiNode const *)arg1); + *(std::vector< unsigned int > **)&_swig_go_result = (std::vector< unsigned int > *)result; + return _swig_go_result; +} + + +void _wrap_aiScene_mFlags_set_aig_29567bba180e4e84(aiScene *_swig_go_0, intgo _swig_go_1) { + aiScene *arg1 = (aiScene *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiScene **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mFlags = arg2; + +} + + +intgo _wrap_aiScene_mFlags_get_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mFlags); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiScene_mRootNode_set_aig_29567bba180e4e84(aiScene *_swig_go_0, aiNode *_swig_go_1) { + aiScene *arg1 = (aiScene *) 0 ; + aiNode *arg2 = (aiNode *) 0 ; + + arg1 = *(aiScene **)&_swig_go_0; + arg2 = *(aiNode **)&_swig_go_1; + + if (arg1) (arg1)->mRootNode = arg2; + +} + + +aiNode *_wrap_aiScene_mRootNode_get_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + aiNode *result = 0 ; + aiNode *_swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (aiNode *) ((arg1)->mRootNode); + *(aiNode **)&_swig_go_result = (aiNode *)result; + return _swig_go_result; +} + + +void _wrap_aiScene_mNumMeshes_set_aig_29567bba180e4e84(aiScene *_swig_go_0, intgo _swig_go_1) { + aiScene *arg1 = (aiScene *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiScene **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mNumMeshes = arg2; + +} + + +intgo _wrap_aiScene_mNumMeshes_get_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mNumMeshes); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiScene_mNumMaterials_set_aig_29567bba180e4e84(aiScene *_swig_go_0, intgo _swig_go_1) { + aiScene *arg1 = (aiScene *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiScene **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mNumMaterials = arg2; + +} + + +intgo _wrap_aiScene_mNumMaterials_get_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mNumMaterials); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiScene_mNumAnimations_set_aig_29567bba180e4e84(aiScene *_swig_go_0, intgo _swig_go_1) { + aiScene *arg1 = (aiScene *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiScene **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mNumAnimations = arg2; + +} + + +intgo _wrap_aiScene_mNumAnimations_get_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mNumAnimations); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiScene_mNumTextures_set_aig_29567bba180e4e84(aiScene *_swig_go_0, intgo _swig_go_1) { + aiScene *arg1 = (aiScene *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiScene **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mNumTextures = arg2; + +} + + +intgo _wrap_aiScene_mNumTextures_get_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mNumTextures); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiScene_mNumLights_set_aig_29567bba180e4e84(aiScene *_swig_go_0, intgo _swig_go_1) { + aiScene *arg1 = (aiScene *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiScene **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mNumLights = arg2; + +} + + +intgo _wrap_aiScene_mNumLights_get_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mNumLights); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiScene_mNumCameras_set_aig_29567bba180e4e84(aiScene *_swig_go_0, intgo _swig_go_1) { + aiScene *arg1 = (aiScene *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiScene **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mNumCameras = arg2; + +} + + +intgo _wrap_aiScene_mNumCameras_get_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mNumCameras); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiScene_mMetaData_set_aig_29567bba180e4e84(aiScene *_swig_go_0, aiMetadata *_swig_go_1) { + aiScene *arg1 = (aiScene *) 0 ; + aiMetadata *arg2 = (aiMetadata *) 0 ; + + arg1 = *(aiScene **)&_swig_go_0; + arg2 = *(aiMetadata **)&_swig_go_1; + + if (arg1) (arg1)->mMetaData = arg2; + +} + + +aiMetadata *_wrap_aiScene_mMetaData_get_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + aiMetadata *result = 0 ; + aiMetadata *_swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (aiMetadata *) ((arg1)->mMetaData); + *(aiMetadata **)&_swig_go_result = (aiMetadata *)result; + return _swig_go_result; +} + + +aiScene *_wrap_new_aiScene_aig_29567bba180e4e84() { + aiScene *result = 0 ; + aiScene *_swig_go_result; + + + result = (aiScene *)new aiScene(); + *(aiScene **)&_swig_go_result = (aiScene *)result; + return _swig_go_result; +} + + +void _wrap_delete_aiScene_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + + arg1 = *(aiScene **)&_swig_go_0; + + delete arg1; + +} + + +bool _wrap_aiScene_HasMeshes_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (bool)((aiScene const *)arg1)->HasMeshes(); + _swig_go_result = result; + return _swig_go_result; +} + + +bool _wrap_aiScene_HasMaterials_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (bool)((aiScene const *)arg1)->HasMaterials(); + _swig_go_result = result; + return _swig_go_result; +} + + +bool _wrap_aiScene_HasLights_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (bool)((aiScene const *)arg1)->HasLights(); + _swig_go_result = result; + return _swig_go_result; +} + + +bool _wrap_aiScene_HasTextures_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (bool)((aiScene const *)arg1)->HasTextures(); + _swig_go_result = result; + return _swig_go_result; +} + + +bool _wrap_aiScene_HasCameras_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (bool)((aiScene const *)arg1)->HasCameras(); + _swig_go_result = result; + return _swig_go_result; +} + + +bool _wrap_aiScene_HasAnimations_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (bool)((aiScene const *)arg1)->HasAnimations(); + _swig_go_result = result; + return _swig_go_result; +} + + +_gostring_ _wrap_aiScene_GetShortFilename_aig_29567bba180e4e84(_gostring_ _swig_go_0) { + char *arg1 = (char *) 0 ; + char *result = 0 ; + _gostring_ _swig_go_result; + + + arg1 = (char *)malloc(_swig_go_0.n + 1); + memcpy(arg1, _swig_go_0.p, _swig_go_0.n); + arg1[_swig_go_0.n] = '\0'; + + + result = (char *)aiScene::GetShortFilename((char const *)arg1); + _swig_go_result = Swig_AllocateString((char*)result, result ? strlen((char*)result) : 0); + free(arg1); + return _swig_go_result; +} + + +aiTexture *_wrap_aiScene_GetEmbeddedTexture_aig_29567bba180e4e84(aiScene *_swig_go_0, _gostring_ _swig_go_1) { + aiScene *arg1 = (aiScene *) 0 ; + char *arg2 = (char *) 0 ; + aiTexture *result = 0 ; + aiTexture *_swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + + result = (aiTexture *)((aiScene const *)arg1)->GetEmbeddedTexture((char const *)arg2); + *(aiTexture **)&_swig_go_result = (aiTexture *)result; + free(arg2); + return _swig_go_result; +} + + +void _wrap_aiScene_mPrivate_set_aig_29567bba180e4e84(aiScene *_swig_go_0, void *_swig_go_1) { + aiScene *arg1 = (aiScene *) 0 ; + void *arg2 = (void *) 0 ; + + arg1 = *(aiScene **)&_swig_go_0; + arg2 = *(void **)&_swig_go_1; + + if (arg1) (arg1)->mPrivate = arg2; + +} + + +void *_wrap_aiScene_mPrivate_get_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + void *result = 0 ; + void *_swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (void *) ((arg1)->mPrivate); + *(void **)&_swig_go_result = (void *)result; + return _swig_go_result; +} + + +std::vector< aiAnimation * > *_wrap_aiScene_mAnimations_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + std::vector< aiAnimation * > *result = 0 ; + std::vector< aiAnimation * > *_swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (std::vector< aiAnimation * > *)aiScene_mAnimations((aiScene const *)arg1); + *(std::vector< aiAnimation * > **)&_swig_go_result = (std::vector< aiAnimation * > *)result; + return _swig_go_result; +} + + +std::vector< aiCamera * > *_wrap_aiScene_mCameras_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + std::vector< aiCamera * > *result = 0 ; + std::vector< aiCamera * > *_swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (std::vector< aiCamera * > *)aiScene_mCameras((aiScene const *)arg1); + *(std::vector< aiCamera * > **)&_swig_go_result = (std::vector< aiCamera * > *)result; + return _swig_go_result; +} + + +std::vector< aiLight * > *_wrap_aiScene_mLights_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + std::vector< aiLight * > *result = 0 ; + std::vector< aiLight * > *_swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (std::vector< aiLight * > *)aiScene_mLights((aiScene const *)arg1); + *(std::vector< aiLight * > **)&_swig_go_result = (std::vector< aiLight * > *)result; + return _swig_go_result; +} + + +std::vector< aiMaterial * > *_wrap_aiScene_mMaterials_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + std::vector< aiMaterial * > *result = 0 ; + std::vector< aiMaterial * > *_swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (std::vector< aiMaterial * > *)aiScene_mMaterials((aiScene const *)arg1); + *(std::vector< aiMaterial * > **)&_swig_go_result = (std::vector< aiMaterial * > *)result; + return _swig_go_result; +} + + +std::vector< aiMesh * > *_wrap_aiScene_mMeshes_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + std::vector< aiMesh * > *result = 0 ; + std::vector< aiMesh * > *_swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (std::vector< aiMesh * > *)aiScene_mMeshes((aiScene const *)arg1); + *(std::vector< aiMesh * > **)&_swig_go_result = (std::vector< aiMesh * > *)result; + return _swig_go_result; +} + + +std::vector< aiTexture * > *_wrap_aiScene_mTextures_aig_29567bba180e4e84(aiScene *_swig_go_0) { + aiScene *arg1 = (aiScene *) 0 ; + std::vector< aiTexture * > *result = 0 ; + std::vector< aiTexture * > *_swig_go_result; + + arg1 = *(aiScene **)&_swig_go_0; + + result = (std::vector< aiTexture * > *)aiScene_mTextures((aiScene const *)arg1); + *(std::vector< aiTexture * > **)&_swig_go_result = (std::vector< aiTexture * > *)result; + return _swig_go_result; +} + + +void _wrap_aiFace_mNumIndices_set_aig_29567bba180e4e84(aiFace *_swig_go_0, intgo _swig_go_1) { + aiFace *arg1 = (aiFace *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiFace **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mNumIndices = arg2; + +} + + +intgo _wrap_aiFace_mNumIndices_get_aig_29567bba180e4e84(aiFace *_swig_go_0) { + aiFace *arg1 = (aiFace *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiFace **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mNumIndices); + _swig_go_result = result; + return _swig_go_result; +} + + +aiFace *_wrap_new_aiFace__SWIG_0_aig_29567bba180e4e84() { + aiFace *result = 0 ; + aiFace *_swig_go_result; + + + result = (aiFace *)new aiFace(); + *(aiFace **)&_swig_go_result = (aiFace *)result; + return _swig_go_result; +} + + +void _wrap_delete_aiFace_aig_29567bba180e4e84(aiFace *_swig_go_0) { + aiFace *arg1 = (aiFace *) 0 ; + + arg1 = *(aiFace **)&_swig_go_0; + + delete arg1; + +} + + +aiFace *_wrap_new_aiFace__SWIG_1_aig_29567bba180e4e84(aiFace *_swig_go_0) { + aiFace *arg1 = 0 ; + aiFace *result = 0 ; + aiFace *_swig_go_result; + + arg1 = *(aiFace **)&_swig_go_0; + + result = (aiFace *)new aiFace((aiFace const &)*arg1); + *(aiFace **)&_swig_go_result = (aiFace *)result; + return _swig_go_result; +} + + +std::vector< unsigned int > *_wrap_aiFace_mIndices_aig_29567bba180e4e84(aiFace *_swig_go_0) { + aiFace *arg1 = (aiFace *) 0 ; + std::vector< unsigned int > *result = 0 ; + std::vector< unsigned int > *_swig_go_result; + + arg1 = *(aiFace **)&_swig_go_0; + + result = (std::vector< unsigned int > *)aiFace_mIndices((aiFace const *)arg1); + *(std::vector< unsigned int > **)&_swig_go_result = (std::vector< unsigned int > *)result; + return _swig_go_result; +} + + +void _wrap_aiVertexWeight_mVertexId_set_aig_29567bba180e4e84(aiVertexWeight *_swig_go_0, intgo _swig_go_1) { + aiVertexWeight *arg1 = (aiVertexWeight *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiVertexWeight **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mVertexId = arg2; + +} + + +intgo _wrap_aiVertexWeight_mVertexId_get_aig_29567bba180e4e84(aiVertexWeight *_swig_go_0) { + aiVertexWeight *arg1 = (aiVertexWeight *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiVertexWeight **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mVertexId); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiVertexWeight_mWeight_set_aig_29567bba180e4e84(aiVertexWeight *_swig_go_0, float _swig_go_1) { + aiVertexWeight *arg1 = (aiVertexWeight *) 0 ; + float arg2 ; + + arg1 = *(aiVertexWeight **)&_swig_go_0; + arg2 = (float)_swig_go_1; + + if (arg1) (arg1)->mWeight = arg2; + +} + + +float _wrap_aiVertexWeight_mWeight_get_aig_29567bba180e4e84(aiVertexWeight *_swig_go_0) { + aiVertexWeight *arg1 = (aiVertexWeight *) 0 ; + float result; + float _swig_go_result; + + arg1 = *(aiVertexWeight **)&_swig_go_0; + + result = (float) ((arg1)->mWeight); + _swig_go_result = result; + return _swig_go_result; +} + + +aiVertexWeight *_wrap_new_aiVertexWeight__SWIG_0_aig_29567bba180e4e84() { + aiVertexWeight *result = 0 ; + aiVertexWeight *_swig_go_result; + + + result = (aiVertexWeight *)new aiVertexWeight(); + *(aiVertexWeight **)&_swig_go_result = (aiVertexWeight *)result; + return _swig_go_result; +} + + +aiVertexWeight *_wrap_new_aiVertexWeight__SWIG_1_aig_29567bba180e4e84(intgo _swig_go_0, float _swig_go_1) { + unsigned int arg1 ; + float arg2 ; + aiVertexWeight *result = 0 ; + aiVertexWeight *_swig_go_result; + + arg1 = (unsigned int)_swig_go_0; + arg2 = (float)_swig_go_1; + + result = (aiVertexWeight *)new aiVertexWeight(arg1,arg2); + *(aiVertexWeight **)&_swig_go_result = (aiVertexWeight *)result; + return _swig_go_result; +} + + +void _wrap_delete_aiVertexWeight_aig_29567bba180e4e84(aiVertexWeight *_swig_go_0) { + aiVertexWeight *arg1 = (aiVertexWeight *) 0 ; + + arg1 = *(aiVertexWeight **)&_swig_go_0; + + delete arg1; + +} + + +void _wrap_aiBone_mName_set_aig_29567bba180e4e84(aiBone *_swig_go_0, aiString *_swig_go_1) { + aiBone *arg1 = (aiBone *) 0 ; + aiString arg2 ; + aiString *argp2 ; + + arg1 = *(aiBone **)&_swig_go_0; + + argp2 = (aiString *)_swig_go_1; + if (argp2 == NULL) { + _swig_gopanic("Attempt to dereference null aiString"); + } + arg2 = (aiString)*argp2; + + + if (arg1) (arg1)->mName = arg2; + +} + + +aiString *_wrap_aiBone_mName_get_aig_29567bba180e4e84(aiBone *_swig_go_0) { + aiBone *arg1 = (aiBone *) 0 ; + aiString result; + aiString *_swig_go_result; + + arg1 = *(aiBone **)&_swig_go_0; + + result = ((arg1)->mName); + *(aiString **)&_swig_go_result = new aiString(result); + return _swig_go_result; +} + + +void _wrap_aiBone_mNumWeights_set_aig_29567bba180e4e84(aiBone *_swig_go_0, intgo _swig_go_1) { + aiBone *arg1 = (aiBone *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiBone **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mNumWeights = arg2; + +} + + +intgo _wrap_aiBone_mNumWeights_get_aig_29567bba180e4e84(aiBone *_swig_go_0) { + aiBone *arg1 = (aiBone *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiBone **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mNumWeights); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiBone_mOffsetMatrix_set_aig_29567bba180e4e84(aiBone *_swig_go_0, aiMatrix4x4 *_swig_go_1) { + aiBone *arg1 = (aiBone *) 0 ; + aiMatrix4x4 arg2 ; + aiMatrix4x4 *argp2 ; + + arg1 = *(aiBone **)&_swig_go_0; + + argp2 = (aiMatrix4x4 *)_swig_go_1; + if (argp2 == NULL) { + _swig_gopanic("Attempt to dereference null aiMatrix4x4"); + } + arg2 = (aiMatrix4x4)*argp2; + + + if (arg1) (arg1)->mOffsetMatrix = arg2; + +} + + +aiMatrix4x4 *_wrap_aiBone_mOffsetMatrix_get_aig_29567bba180e4e84(aiBone *_swig_go_0) { + aiBone *arg1 = (aiBone *) 0 ; + aiMatrix4x4 result; + aiMatrix4x4 *_swig_go_result; + + arg1 = *(aiBone **)&_swig_go_0; + + result = ((arg1)->mOffsetMatrix); + *(aiMatrix4x4 **)&_swig_go_result = new aiMatrix4x4(result); + return _swig_go_result; +} + + +aiBone *_wrap_new_aiBone__SWIG_0_aig_29567bba180e4e84() { + aiBone *result = 0 ; + aiBone *_swig_go_result; + + + result = (aiBone *)new aiBone(); + *(aiBone **)&_swig_go_result = (aiBone *)result; + return _swig_go_result; +} + + +aiBone *_wrap_new_aiBone__SWIG_1_aig_29567bba180e4e84(aiBone *_swig_go_0) { + aiBone *arg1 = 0 ; + aiBone *result = 0 ; + aiBone *_swig_go_result; + + arg1 = *(aiBone **)&_swig_go_0; + + result = (aiBone *)new aiBone((aiBone const &)*arg1); + *(aiBone **)&_swig_go_result = (aiBone *)result; + return _swig_go_result; +} + + +void _wrap_delete_aiBone_aig_29567bba180e4e84(aiBone *_swig_go_0) { + aiBone *arg1 = (aiBone *) 0 ; + + arg1 = *(aiBone **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiVertexWeight * > *_wrap_aiBone_mWeights_aig_29567bba180e4e84(aiBone *_swig_go_0) { + aiBone *arg1 = (aiBone *) 0 ; + std::vector< aiVertexWeight * > *result = 0 ; + std::vector< aiVertexWeight * > *_swig_go_result; + + arg1 = *(aiBone **)&_swig_go_0; + + result = (std::vector< aiVertexWeight * > *)aiBone_mWeights((aiBone const *)arg1); + *(std::vector< aiVertexWeight * > **)&_swig_go_result = (std::vector< aiVertexWeight * > *)result; + return _swig_go_result; +} + + +intgo _wrap_aiPrimitiveType_POINT_aig_29567bba180e4e84() { + aiPrimitiveType result; + intgo _swig_go_result; + + + result = aiPrimitiveType_POINT; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_aiPrimitiveType_LINE_aig_29567bba180e4e84() { + aiPrimitiveType result; + intgo _swig_go_result; + + + result = aiPrimitiveType_LINE; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_aiPrimitiveType_TRIANGLE_aig_29567bba180e4e84() { + aiPrimitiveType result; + intgo _swig_go_result; + + + result = aiPrimitiveType_TRIANGLE; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_aiPrimitiveType_POLYGON_aig_29567bba180e4e84() { + aiPrimitiveType result; + intgo _swig_go_result; + + + result = aiPrimitiveType_POLYGON; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +void _wrap_aiAnimMesh_mName_set_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0, aiString *_swig_go_1) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + aiString arg2 ; + aiString *argp2 ; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + + argp2 = (aiString *)_swig_go_1; + if (argp2 == NULL) { + _swig_gopanic("Attempt to dereference null aiString"); + } + arg2 = (aiString)*argp2; + + + if (arg1) (arg1)->mName = arg2; + +} + + +aiString *_wrap_aiAnimMesh_mName_get_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + aiString result; + aiString *_swig_go_result; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + + result = ((arg1)->mName); + *(aiString **)&_swig_go_result = new aiString(result); + return _swig_go_result; +} + + +void _wrap_aiAnimMesh_mNumVertices_set_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0, intgo _swig_go_1) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mNumVertices = arg2; + +} + + +intgo _wrap_aiAnimMesh_mNumVertices_get_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mNumVertices); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiAnimMesh_mWeight_set_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0, float _swig_go_1) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + float arg2 ; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + arg2 = (float)_swig_go_1; + + if (arg1) (arg1)->mWeight = arg2; + +} + + +float _wrap_aiAnimMesh_mWeight_get_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + float result; + float _swig_go_result; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + + result = (float) ((arg1)->mWeight); + _swig_go_result = result; + return _swig_go_result; +} + + +aiAnimMesh *_wrap_new_aiAnimMesh_aig_29567bba180e4e84() { + aiAnimMesh *result = 0 ; + aiAnimMesh *_swig_go_result; + + + result = (aiAnimMesh *)new aiAnimMesh(); + *(aiAnimMesh **)&_swig_go_result = (aiAnimMesh *)result; + return _swig_go_result; +} + + +void _wrap_delete_aiAnimMesh_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + + delete arg1; + +} + + +bool _wrap_aiAnimMesh_HasPositions_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + + result = (bool)((aiAnimMesh const *)arg1)->HasPositions(); + _swig_go_result = result; + return _swig_go_result; +} + + +bool _wrap_aiAnimMesh_HasNormals_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + + result = (bool)((aiAnimMesh const *)arg1)->HasNormals(); + _swig_go_result = result; + return _swig_go_result; +} + + +bool _wrap_aiAnimMesh_HasTangentsAndBitangents_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + + result = (bool)((aiAnimMesh const *)arg1)->HasTangentsAndBitangents(); + _swig_go_result = result; + return _swig_go_result; +} + + +bool _wrap_aiAnimMesh_HasVertexColors_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0, intgo _swig_go_1) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + unsigned int arg2 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + result = (bool)((aiAnimMesh const *)arg1)->HasVertexColors(arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +bool _wrap_aiAnimMesh_HasTextureCoords_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0, intgo _swig_go_1) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + unsigned int arg2 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + result = (bool)((aiAnimMesh const *)arg1)->HasTextureCoords(arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +std::vector< aiVector3D * > *_wrap_aiAnimMesh_mVertices_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + std::vector< aiVector3D * > *result = 0 ; + std::vector< aiVector3D * > *_swig_go_result; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + + result = (std::vector< aiVector3D * > *)aiAnimMesh_mVertices((aiAnimMesh const *)arg1); + *(std::vector< aiVector3D * > **)&_swig_go_result = (std::vector< aiVector3D * > *)result; + return _swig_go_result; +} + + +std::vector< aiVector3D * > *_wrap_aiAnimMesh_mNormals_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + std::vector< aiVector3D * > *result = 0 ; + std::vector< aiVector3D * > *_swig_go_result; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + + result = (std::vector< aiVector3D * > *)aiAnimMesh_mNormals((aiAnimMesh const *)arg1); + *(std::vector< aiVector3D * > **)&_swig_go_result = (std::vector< aiVector3D * > *)result; + return _swig_go_result; +} + + +std::vector< aiVector3D * > *_wrap_aiAnimMesh_mTangents_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + std::vector< aiVector3D * > *result = 0 ; + std::vector< aiVector3D * > *_swig_go_result; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + + result = (std::vector< aiVector3D * > *)aiAnimMesh_mTangents((aiAnimMesh const *)arg1); + *(std::vector< aiVector3D * > **)&_swig_go_result = (std::vector< aiVector3D * > *)result; + return _swig_go_result; +} + + +std::vector< aiVector3D * > *_wrap_aiAnimMesh_mBitangents_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + std::vector< aiVector3D * > *result = 0 ; + std::vector< aiVector3D * > *_swig_go_result; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + + result = (std::vector< aiVector3D * > *)aiAnimMesh_mBitangents((aiAnimMesh const *)arg1); + *(std::vector< aiVector3D * > **)&_swig_go_result = (std::vector< aiVector3D * > *)result; + return _swig_go_result; +} + + +std::vector< std::vector< aiVector3D * > > *_wrap_aiAnimMesh_mTextureCoords_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + std::vector< std::vector< aiVector3D * > > *result = 0 ; + std::vector< std::vector< aiVector3D * > > *_swig_go_result; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + + result = (std::vector< std::vector< aiVector3D * > > *)aiAnimMesh_mTextureCoords((aiAnimMesh const *)arg1); + *(std::vector< std::vector< aiVector3D * > > **)&_swig_go_result = (std::vector< std::vector< aiVector3D * > > *)result; + return _swig_go_result; +} + + +std::vector< std::vector< aiColor4D * > > *_wrap_aiAnimMesh_mColors_aig_29567bba180e4e84(aiAnimMesh *_swig_go_0) { + aiAnimMesh *arg1 = (aiAnimMesh *) 0 ; + std::vector< std::vector< aiColor4D * > > *result = 0 ; + std::vector< std::vector< aiColor4D * > > *_swig_go_result; + + arg1 = *(aiAnimMesh **)&_swig_go_0; + + result = (std::vector< std::vector< aiColor4D * > > *)aiAnimMesh_mColors((aiAnimMesh const *)arg1); + *(std::vector< std::vector< aiColor4D * > > **)&_swig_go_result = (std::vector< std::vector< aiColor4D * > > *)result; + return _swig_go_result; +} + + +intgo _wrap_aiMorphingMethod_VERTEX_BLEND_aig_29567bba180e4e84() { + aiMorphingMethod result; + intgo _swig_go_result; + + + result = aiMorphingMethod_VERTEX_BLEND; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_aiMorphingMethod_MORPH_NORMALIZED_aig_29567bba180e4e84() { + aiMorphingMethod result; + intgo _swig_go_result; + + + result = aiMorphingMethod_MORPH_NORMALIZED; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_aiMorphingMethod_MORPH_RELATIVE_aig_29567bba180e4e84() { + aiMorphingMethod result; + intgo _swig_go_result; + + + result = aiMorphingMethod_MORPH_RELATIVE; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +void _wrap_aiMesh_mPrimitiveTypes_set_aig_29567bba180e4e84(aiMesh *_swig_go_0, intgo _swig_go_1) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiMesh **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mPrimitiveTypes = arg2; + +} + + +intgo _wrap_aiMesh_mPrimitiveTypes_get_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mPrimitiveTypes); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiMesh_mNumVertices_set_aig_29567bba180e4e84(aiMesh *_swig_go_0, intgo _swig_go_1) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiMesh **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mNumVertices = arg2; + +} + + +intgo _wrap_aiMesh_mNumVertices_get_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mNumVertices); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiMesh_mNumFaces_set_aig_29567bba180e4e84(aiMesh *_swig_go_0, intgo _swig_go_1) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiMesh **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mNumFaces = arg2; + +} + + +intgo _wrap_aiMesh_mNumFaces_get_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mNumFaces); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiMesh_mNumBones_set_aig_29567bba180e4e84(aiMesh *_swig_go_0, intgo _swig_go_1) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiMesh **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mNumBones = arg2; + +} + + +intgo _wrap_aiMesh_mNumBones_get_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mNumBones); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiMesh_mMaterialIndex_set_aig_29567bba180e4e84(aiMesh *_swig_go_0, intgo _swig_go_1) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiMesh **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mMaterialIndex = arg2; + +} + + +intgo _wrap_aiMesh_mMaterialIndex_get_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mMaterialIndex); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiMesh_mName_set_aig_29567bba180e4e84(aiMesh *_swig_go_0, aiString *_swig_go_1) { + aiMesh *arg1 = (aiMesh *) 0 ; + aiString arg2 ; + aiString *argp2 ; + + arg1 = *(aiMesh **)&_swig_go_0; + + argp2 = (aiString *)_swig_go_1; + if (argp2 == NULL) { + _swig_gopanic("Attempt to dereference null aiString"); + } + arg2 = (aiString)*argp2; + + + if (arg1) (arg1)->mName = arg2; + +} + + +aiString *_wrap_aiMesh_mName_get_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + aiString result; + aiString *_swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = ((arg1)->mName); + *(aiString **)&_swig_go_result = new aiString(result); + return _swig_go_result; +} + + +void _wrap_aiMesh_mNumAnimMeshes_set_aig_29567bba180e4e84(aiMesh *_swig_go_0, intgo _swig_go_1) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiMesh **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mNumAnimMeshes = arg2; + +} + + +intgo _wrap_aiMesh_mNumAnimMeshes_get_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mNumAnimMeshes); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiMesh_mMethod_set_aig_29567bba180e4e84(aiMesh *_swig_go_0, intgo _swig_go_1) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int arg2 ; + + arg1 = *(aiMesh **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->mMethod = arg2; + +} + + +intgo _wrap_aiMesh_mMethod_get_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (unsigned int) ((arg1)->mMethod); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiMesh_mAABB_set_aig_29567bba180e4e84(aiMesh *_swig_go_0, aiAABB *_swig_go_1) { + aiMesh *arg1 = (aiMesh *) 0 ; + aiAABB arg2 ; + aiAABB *argp2 ; + + arg1 = *(aiMesh **)&_swig_go_0; + + argp2 = (aiAABB *)_swig_go_1; + if (argp2 == NULL) { + _swig_gopanic("Attempt to dereference null aiAABB"); + } + arg2 = (aiAABB)*argp2; + + + if (arg1) (arg1)->mAABB = arg2; + +} + + +aiAABB *_wrap_aiMesh_mAABB_get_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + aiAABB result; + aiAABB *_swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = ((arg1)->mAABB); + *(aiAABB **)&_swig_go_result = new aiAABB(result); + return _swig_go_result; +} + + +aiMesh *_wrap_new_aiMesh_aig_29567bba180e4e84() { + aiMesh *result = 0 ; + aiMesh *_swig_go_result; + + + result = (aiMesh *)new aiMesh(); + *(aiMesh **)&_swig_go_result = (aiMesh *)result; + return _swig_go_result; +} + + +void _wrap_delete_aiMesh_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + + arg1 = *(aiMesh **)&_swig_go_0; + + delete arg1; + +} + + +bool _wrap_aiMesh_HasPositions_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (bool)((aiMesh const *)arg1)->HasPositions(); + _swig_go_result = result; + return _swig_go_result; +} + + +bool _wrap_aiMesh_HasFaces_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (bool)((aiMesh const *)arg1)->HasFaces(); + _swig_go_result = result; + return _swig_go_result; +} + + +bool _wrap_aiMesh_HasNormals_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (bool)((aiMesh const *)arg1)->HasNormals(); + _swig_go_result = result; + return _swig_go_result; +} + + +bool _wrap_aiMesh_HasTangentsAndBitangents_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (bool)((aiMesh const *)arg1)->HasTangentsAndBitangents(); + _swig_go_result = result; + return _swig_go_result; +} + + +bool _wrap_aiMesh_HasVertexColors_aig_29567bba180e4e84(aiMesh *_swig_go_0, intgo _swig_go_1) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int arg2 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + result = (bool)((aiMesh const *)arg1)->HasVertexColors(arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +bool _wrap_aiMesh_HasTextureCoords_aig_29567bba180e4e84(aiMesh *_swig_go_0, intgo _swig_go_1) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int arg2 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + result = (bool)((aiMesh const *)arg1)->HasTextureCoords(arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_aiMesh_GetNumUVChannels_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (unsigned int)((aiMesh const *)arg1)->GetNumUVChannels(); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_aiMesh_GetNumColorChannels_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (unsigned int)((aiMesh const *)arg1)->GetNumColorChannels(); + _swig_go_result = result; + return _swig_go_result; +} + + +bool _wrap_aiMesh_HasBones_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (bool)((aiMesh const *)arg1)->HasBones(); + _swig_go_result = result; + return _swig_go_result; +} + + +std::vector< aiAnimMesh * > *_wrap_aiMesh_mAnimMeshes_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + std::vector< aiAnimMesh * > *result = 0 ; + std::vector< aiAnimMesh * > *_swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (std::vector< aiAnimMesh * > *)aiMesh_mAnimMeshes((aiMesh const *)arg1); + *(std::vector< aiAnimMesh * > **)&_swig_go_result = (std::vector< aiAnimMesh * > *)result; + return _swig_go_result; +} + + +std::vector< aiBone * > *_wrap_aiMesh_mBones_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + std::vector< aiBone * > *result = 0 ; + std::vector< aiBone * > *_swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (std::vector< aiBone * > *)aiMesh_mBones((aiMesh const *)arg1); + *(std::vector< aiBone * > **)&_swig_go_result = (std::vector< aiBone * > *)result; + return _swig_go_result; +} + + +std::vector< unsigned int > *_wrap_aiMesh_mNumUVComponents_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + std::vector< unsigned int > *result = 0 ; + std::vector< unsigned int > *_swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (std::vector< unsigned int > *)aiMesh_mNumUVComponents((aiMesh const *)arg1); + *(std::vector< unsigned int > **)&_swig_go_result = (std::vector< unsigned int > *)result; + return _swig_go_result; +} + + +std::vector< aiVector3D * > *_wrap_aiMesh_mVertices_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + std::vector< aiVector3D * > *result = 0 ; + std::vector< aiVector3D * > *_swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (std::vector< aiVector3D * > *)aiMesh_mVertices((aiMesh const *)arg1); + *(std::vector< aiVector3D * > **)&_swig_go_result = (std::vector< aiVector3D * > *)result; + return _swig_go_result; +} + + +std::vector< aiVector3D * > *_wrap_aiMesh_mNormals_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + std::vector< aiVector3D * > *result = 0 ; + std::vector< aiVector3D * > *_swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (std::vector< aiVector3D * > *)aiMesh_mNormals((aiMesh const *)arg1); + *(std::vector< aiVector3D * > **)&_swig_go_result = (std::vector< aiVector3D * > *)result; + return _swig_go_result; +} + + +std::vector< aiVector3D * > *_wrap_aiMesh_mTangents_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + std::vector< aiVector3D * > *result = 0 ; + std::vector< aiVector3D * > *_swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (std::vector< aiVector3D * > *)aiMesh_mTangents((aiMesh const *)arg1); + *(std::vector< aiVector3D * > **)&_swig_go_result = (std::vector< aiVector3D * > *)result; + return _swig_go_result; +} + + +std::vector< aiVector3D * > *_wrap_aiMesh_mBitangents_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + std::vector< aiVector3D * > *result = 0 ; + std::vector< aiVector3D * > *_swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (std::vector< aiVector3D * > *)aiMesh_mBitangents((aiMesh const *)arg1); + *(std::vector< aiVector3D * > **)&_swig_go_result = (std::vector< aiVector3D * > *)result; + return _swig_go_result; +} + + +std::vector< aiFace * > *_wrap_aiMesh_mFaces_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + std::vector< aiFace * > *result = 0 ; + std::vector< aiFace * > *_swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (std::vector< aiFace * > *)aiMesh_mFaces((aiMesh const *)arg1); + *(std::vector< aiFace * > **)&_swig_go_result = (std::vector< aiFace * > *)result; + return _swig_go_result; +} + + +std::vector< std::vector< aiVector3D * > > *_wrap_aiMesh_mTextureCoords_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + std::vector< std::vector< aiVector3D * > > *result = 0 ; + std::vector< std::vector< aiVector3D * > > *_swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (std::vector< std::vector< aiVector3D * > > *)aiMesh_mTextureCoords((aiMesh const *)arg1); + *(std::vector< std::vector< aiVector3D * > > **)&_swig_go_result = (std::vector< std::vector< aiVector3D * > > *)result; + return _swig_go_result; +} + + +std::vector< std::vector< aiColor4D * > > *_wrap_aiMesh_mColors_aig_29567bba180e4e84(aiMesh *_swig_go_0) { + aiMesh *arg1 = (aiMesh *) 0 ; + std::vector< std::vector< aiColor4D * > > *result = 0 ; + std::vector< std::vector< aiColor4D * > > *_swig_go_result; + + arg1 = *(aiMesh **)&_swig_go_0; + + result = (std::vector< std::vector< aiColor4D * > > *)aiMesh_mColors((aiMesh const *)arg1); + *(std::vector< std::vector< aiColor4D * > > **)&_swig_go_result = (std::vector< std::vector< aiColor4D * > > *)result; + return _swig_go_result; +} + + +void _wrap_z_stream_next_in_set_aig_29567bba180e4e84(z_stream_s *_swig_go_0, char *_swig_go_1) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + Bytef *arg2 = (Bytef *) 0 ; + + arg1 = *(z_stream_s **)&_swig_go_0; + arg2 = *(Bytef **)&_swig_go_1; + + if (arg1) (arg1)->next_in = arg2; + +} + + +char *_wrap_z_stream_next_in_get_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + Bytef *result = 0 ; + char *_swig_go_result; + + arg1 = *(z_stream_s **)&_swig_go_0; + + result = (Bytef *) ((arg1)->next_in); + *(Bytef **)&_swig_go_result = (Bytef *)result; + return _swig_go_result; +} + + +void _wrap_z_stream_avail_in_set_aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + uInt arg2 ; + + arg1 = *(z_stream_s **)&_swig_go_0; + arg2 = (uInt)_swig_go_1; + + if (arg1) (arg1)->avail_in = arg2; + +} + + +intgo _wrap_z_stream_avail_in_get_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + uInt result; + intgo _swig_go_result; + + arg1 = *(z_stream_s **)&_swig_go_0; + + result = (uInt) ((arg1)->avail_in); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_z_stream_total_in_set_aig_29567bba180e4e84(z_stream_s *_swig_go_0, long long _swig_go_1) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + uLong arg2 ; + + arg1 = *(z_stream_s **)&_swig_go_0; + arg2 = (uLong)_swig_go_1; + + if (arg1) (arg1)->total_in = arg2; + +} + + +long long _wrap_z_stream_total_in_get_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + uLong result; + long long _swig_go_result; + + arg1 = *(z_stream_s **)&_swig_go_0; + + result = (uLong) ((arg1)->total_in); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_z_stream_next_out_set_aig_29567bba180e4e84(z_stream_s *_swig_go_0, char *_swig_go_1) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + Bytef *arg2 = (Bytef *) 0 ; + + arg1 = *(z_stream_s **)&_swig_go_0; + arg2 = *(Bytef **)&_swig_go_1; + + if (arg1) (arg1)->next_out = arg2; + +} + + +char *_wrap_z_stream_next_out_get_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + Bytef *result = 0 ; + char *_swig_go_result; + + arg1 = *(z_stream_s **)&_swig_go_0; + + result = (Bytef *) ((arg1)->next_out); + *(Bytef **)&_swig_go_result = (Bytef *)result; + return _swig_go_result; +} + + +void _wrap_z_stream_avail_out_set_aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + uInt arg2 ; + + arg1 = *(z_stream_s **)&_swig_go_0; + arg2 = (uInt)_swig_go_1; + + if (arg1) (arg1)->avail_out = arg2; + +} + + +intgo _wrap_z_stream_avail_out_get_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + uInt result; + intgo _swig_go_result; + + arg1 = *(z_stream_s **)&_swig_go_0; + + result = (uInt) ((arg1)->avail_out); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_z_stream_total_out_set_aig_29567bba180e4e84(z_stream_s *_swig_go_0, long long _swig_go_1) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + uLong arg2 ; + + arg1 = *(z_stream_s **)&_swig_go_0; + arg2 = (uLong)_swig_go_1; + + if (arg1) (arg1)->total_out = arg2; + +} + + +long long _wrap_z_stream_total_out_get_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + uLong result; + long long _swig_go_result; + + arg1 = *(z_stream_s **)&_swig_go_0; + + result = (uLong) ((arg1)->total_out); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_z_stream_msg_set_aig_29567bba180e4e84(z_stream_s *_swig_go_0, _gostring_ _swig_go_1) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + char *arg2 = (char *) 0 ; + + arg1 = *(z_stream_s **)&_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + + { + delete [] arg1->msg; + if (arg2) { + arg1->msg = (char *) (new char[strlen((const char *)arg2)+1]); + strcpy((char *)arg1->msg, (const char *)arg2); + } else { + arg1->msg = 0; + } + } + + free(arg2); +} + + +_gostring_ _wrap_z_stream_msg_get_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + char *result = 0 ; + _gostring_ _swig_go_result; + + arg1 = *(z_stream_s **)&_swig_go_0; + + result = (char *) ((arg1)->msg); + _swig_go_result = Swig_AllocateString((char*)result, result ? strlen((char*)result) : 0); + return _swig_go_result; +} + + +void _wrap_z_stream_state_set_aig_29567bba180e4e84(z_stream_s *_swig_go_0, internal_state *_swig_go_1) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + internal_state *arg2 = (internal_state *) 0 ; + + arg1 = *(z_stream_s **)&_swig_go_0; + arg2 = *(internal_state **)&_swig_go_1; + + if (arg1) (arg1)->state = arg2; + +} + + +internal_state *_wrap_z_stream_state_get_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + internal_state *result = 0 ; + internal_state *_swig_go_result; + + arg1 = *(z_stream_s **)&_swig_go_0; + + result = (internal_state *) ((arg1)->state); + *(internal_state **)&_swig_go_result = (internal_state *)result; + return _swig_go_result; +} + + +void _wrap_z_stream_zalloc_set_aig_29567bba180e4e84(z_stream_s *_swig_go_0, void* _swig_go_1) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + alloc_func arg2 = (alloc_func) 0 ; + + arg1 = *(z_stream_s **)&_swig_go_0; + arg2 = *(alloc_func *)&_swig_go_1; + + if (arg1) (arg1)->zalloc = arg2; + +} + + +void* _wrap_z_stream_zalloc_get_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + alloc_func result; + void* _swig_go_result; + + arg1 = *(z_stream_s **)&_swig_go_0; + + result = (alloc_func) ((arg1)->zalloc); + *(alloc_func *)&_swig_go_result = (alloc_func)result; + return _swig_go_result; +} + + +void _wrap_z_stream_zfree_set_aig_29567bba180e4e84(z_stream_s *_swig_go_0, void* _swig_go_1) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + free_func arg2 = (free_func) 0 ; + + arg1 = *(z_stream_s **)&_swig_go_0; + arg2 = *(free_func *)&_swig_go_1; + + if (arg1) (arg1)->zfree = arg2; + +} + + +void* _wrap_z_stream_zfree_get_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + free_func result; + void* _swig_go_result; + + arg1 = *(z_stream_s **)&_swig_go_0; + + result = (free_func) ((arg1)->zfree); + *(free_func *)&_swig_go_result = (free_func)result; + return _swig_go_result; +} + + +void _wrap_z_stream_opaque_set_aig_29567bba180e4e84(z_stream_s *_swig_go_0, voidpf _swig_go_1) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + voidpf arg2 = (voidpf) 0 ; + + arg1 = *(z_stream_s **)&_swig_go_0; + arg2 = *(voidpf *)&_swig_go_1; + + if (arg1) (arg1)->opaque = arg2; + +} + + +voidpf _wrap_z_stream_opaque_get_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + voidpf result; + voidpf _swig_go_result; + + arg1 = *(z_stream_s **)&_swig_go_0; + + result = (voidpf) ((arg1)->opaque); + *(voidpf *)&_swig_go_result = (voidpf)result; + return _swig_go_result; +} + + +void _wrap_z_stream_data_type_set_aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + int arg2 ; + + arg1 = *(z_stream_s **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + if (arg1) (arg1)->data_type = arg2; + +} + + +intgo _wrap_z_stream_data_type_get_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_stream_s **)&_swig_go_0; + + result = (int) ((arg1)->data_type); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_z_stream_adler_set_aig_29567bba180e4e84(z_stream_s *_swig_go_0, long long _swig_go_1) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + uLong arg2 ; + + arg1 = *(z_stream_s **)&_swig_go_0; + arg2 = (uLong)_swig_go_1; + + if (arg1) (arg1)->adler = arg2; + +} + + +long long _wrap_z_stream_adler_get_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + uLong result; + long long _swig_go_result; + + arg1 = *(z_stream_s **)&_swig_go_0; + + result = (uLong) ((arg1)->adler); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_z_stream_reserved_set_aig_29567bba180e4e84(z_stream_s *_swig_go_0, long long _swig_go_1) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + uLong arg2 ; + + arg1 = *(z_stream_s **)&_swig_go_0; + arg2 = (uLong)_swig_go_1; + + if (arg1) (arg1)->reserved = arg2; + +} + + +long long _wrap_z_stream_reserved_get_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + uLong result; + long long _swig_go_result; + + arg1 = *(z_stream_s **)&_swig_go_0; + + result = (uLong) ((arg1)->reserved); + _swig_go_result = result; + return _swig_go_result; +} + + +z_stream_s *_wrap_new_z_stream_aig_29567bba180e4e84() { + z_stream_s *result = 0 ; + z_stream_s *_swig_go_result; + + + result = (z_stream_s *)new z_stream_s(); + *(z_stream_s **)&_swig_go_result = (z_stream_s *)result; + return _swig_go_result; +} + + +void _wrap_delete_z_stream_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_stream_s *arg1 = (z_stream_s *) 0 ; + + arg1 = *(z_stream_s **)&_swig_go_0; + + delete arg1; + +} + + +void _wrap_gz_header_text_set_aig_29567bba180e4e84(gz_header_s *_swig_go_0, intgo _swig_go_1) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + int arg2 ; + + arg1 = *(gz_header_s **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + if (arg1) (arg1)->text = arg2; + +} + + +intgo _wrap_gz_header_text_get_aig_29567bba180e4e84(gz_header_s *_swig_go_0) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(gz_header_s **)&_swig_go_0; + + result = (int) ((arg1)->text); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_gz_header_time_set_aig_29567bba180e4e84(gz_header_s *_swig_go_0, long long _swig_go_1) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + uLong arg2 ; + + arg1 = *(gz_header_s **)&_swig_go_0; + arg2 = (uLong)_swig_go_1; + + if (arg1) (arg1)->time = arg2; + +} + + +long long _wrap_gz_header_time_get_aig_29567bba180e4e84(gz_header_s *_swig_go_0) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + uLong result; + long long _swig_go_result; + + arg1 = *(gz_header_s **)&_swig_go_0; + + result = (uLong) ((arg1)->time); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_gz_header_xflags_set_aig_29567bba180e4e84(gz_header_s *_swig_go_0, intgo _swig_go_1) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + int arg2 ; + + arg1 = *(gz_header_s **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + if (arg1) (arg1)->xflags = arg2; + +} + + +intgo _wrap_gz_header_xflags_get_aig_29567bba180e4e84(gz_header_s *_swig_go_0) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(gz_header_s **)&_swig_go_0; + + result = (int) ((arg1)->xflags); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_gz_header_os_set_aig_29567bba180e4e84(gz_header_s *_swig_go_0, intgo _swig_go_1) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + int arg2 ; + + arg1 = *(gz_header_s **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + if (arg1) (arg1)->os = arg2; + +} + + +intgo _wrap_gz_header_os_get_aig_29567bba180e4e84(gz_header_s *_swig_go_0) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(gz_header_s **)&_swig_go_0; + + result = (int) ((arg1)->os); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_gz_header_extra_set_aig_29567bba180e4e84(gz_header_s *_swig_go_0, char *_swig_go_1) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + Bytef *arg2 = (Bytef *) 0 ; + + arg1 = *(gz_header_s **)&_swig_go_0; + arg2 = *(Bytef **)&_swig_go_1; + + if (arg1) (arg1)->extra = arg2; + +} + + +char *_wrap_gz_header_extra_get_aig_29567bba180e4e84(gz_header_s *_swig_go_0) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + Bytef *result = 0 ; + char *_swig_go_result; + + arg1 = *(gz_header_s **)&_swig_go_0; + + result = (Bytef *) ((arg1)->extra); + *(Bytef **)&_swig_go_result = (Bytef *)result; + return _swig_go_result; +} + + +void _wrap_gz_header_extra_len_set_aig_29567bba180e4e84(gz_header_s *_swig_go_0, intgo _swig_go_1) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + uInt arg2 ; + + arg1 = *(gz_header_s **)&_swig_go_0; + arg2 = (uInt)_swig_go_1; + + if (arg1) (arg1)->extra_len = arg2; + +} + + +intgo _wrap_gz_header_extra_len_get_aig_29567bba180e4e84(gz_header_s *_swig_go_0) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + uInt result; + intgo _swig_go_result; + + arg1 = *(gz_header_s **)&_swig_go_0; + + result = (uInt) ((arg1)->extra_len); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_gz_header_extra_max_set_aig_29567bba180e4e84(gz_header_s *_swig_go_0, intgo _swig_go_1) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + uInt arg2 ; + + arg1 = *(gz_header_s **)&_swig_go_0; + arg2 = (uInt)_swig_go_1; + + if (arg1) (arg1)->extra_max = arg2; + +} + + +intgo _wrap_gz_header_extra_max_get_aig_29567bba180e4e84(gz_header_s *_swig_go_0) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + uInt result; + intgo _swig_go_result; + + arg1 = *(gz_header_s **)&_swig_go_0; + + result = (uInt) ((arg1)->extra_max); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_gz_header_name_set_aig_29567bba180e4e84(gz_header_s *_swig_go_0, char *_swig_go_1) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + Bytef *arg2 = (Bytef *) 0 ; + + arg1 = *(gz_header_s **)&_swig_go_0; + arg2 = *(Bytef **)&_swig_go_1; + + if (arg1) (arg1)->name = arg2; + +} + + +char *_wrap_gz_header_name_get_aig_29567bba180e4e84(gz_header_s *_swig_go_0) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + Bytef *result = 0 ; + char *_swig_go_result; + + arg1 = *(gz_header_s **)&_swig_go_0; + + result = (Bytef *) ((arg1)->name); + *(Bytef **)&_swig_go_result = (Bytef *)result; + return _swig_go_result; +} + + +void _wrap_gz_header_name_max_set_aig_29567bba180e4e84(gz_header_s *_swig_go_0, intgo _swig_go_1) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + uInt arg2 ; + + arg1 = *(gz_header_s **)&_swig_go_0; + arg2 = (uInt)_swig_go_1; + + if (arg1) (arg1)->name_max = arg2; + +} + + +intgo _wrap_gz_header_name_max_get_aig_29567bba180e4e84(gz_header_s *_swig_go_0) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + uInt result; + intgo _swig_go_result; + + arg1 = *(gz_header_s **)&_swig_go_0; + + result = (uInt) ((arg1)->name_max); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_gz_header_comment_set_aig_29567bba180e4e84(gz_header_s *_swig_go_0, char *_swig_go_1) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + Bytef *arg2 = (Bytef *) 0 ; + + arg1 = *(gz_header_s **)&_swig_go_0; + arg2 = *(Bytef **)&_swig_go_1; + + if (arg1) (arg1)->comment = arg2; + +} + + +char *_wrap_gz_header_comment_get_aig_29567bba180e4e84(gz_header_s *_swig_go_0) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + Bytef *result = 0 ; + char *_swig_go_result; + + arg1 = *(gz_header_s **)&_swig_go_0; + + result = (Bytef *) ((arg1)->comment); + *(Bytef **)&_swig_go_result = (Bytef *)result; + return _swig_go_result; +} + + +void _wrap_gz_header_comm_max_set_aig_29567bba180e4e84(gz_header_s *_swig_go_0, intgo _swig_go_1) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + uInt arg2 ; + + arg1 = *(gz_header_s **)&_swig_go_0; + arg2 = (uInt)_swig_go_1; + + if (arg1) (arg1)->comm_max = arg2; + +} + + +intgo _wrap_gz_header_comm_max_get_aig_29567bba180e4e84(gz_header_s *_swig_go_0) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + uInt result; + intgo _swig_go_result; + + arg1 = *(gz_header_s **)&_swig_go_0; + + result = (uInt) ((arg1)->comm_max); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_gz_header_hcrc_set_aig_29567bba180e4e84(gz_header_s *_swig_go_0, intgo _swig_go_1) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + int arg2 ; + + arg1 = *(gz_header_s **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + if (arg1) (arg1)->hcrc = arg2; + +} + + +intgo _wrap_gz_header_hcrc_get_aig_29567bba180e4e84(gz_header_s *_swig_go_0) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(gz_header_s **)&_swig_go_0; + + result = (int) ((arg1)->hcrc); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_gz_header_done_set_aig_29567bba180e4e84(gz_header_s *_swig_go_0, intgo _swig_go_1) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + int arg2 ; + + arg1 = *(gz_header_s **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + if (arg1) (arg1)->done = arg2; + +} + + +intgo _wrap_gz_header_done_get_aig_29567bba180e4e84(gz_header_s *_swig_go_0) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(gz_header_s **)&_swig_go_0; + + result = (int) ((arg1)->done); + _swig_go_result = result; + return _swig_go_result; +} + + +gz_header_s *_wrap_new_gz_header_aig_29567bba180e4e84() { + gz_header_s *result = 0 ; + gz_header_s *_swig_go_result; + + + result = (gz_header_s *)new gz_header_s(); + *(gz_header_s **)&_swig_go_result = (gz_header_s *)result; + return _swig_go_result; +} + + +void _wrap_delete_gz_header_aig_29567bba180e4e84(gz_header_s *_swig_go_0) { + gz_header_s *arg1 = (gz_header_s *) 0 ; + + arg1 = *(gz_header_s **)&_swig_go_0; + + delete arg1; + +} + + +intgo _wrap_Z_ERRNO_aig_29567bba180e4e84() { + int result; + intgo _swig_go_result; + + + result = (int)((-1)); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_Z_STREAM_ERROR_aig_29567bba180e4e84() { + int result; + intgo _swig_go_result; + + + result = (int)((-2)); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_Z_DATA_ERROR_aig_29567bba180e4e84() { + int result; + intgo _swig_go_result; + + + result = (int)((-3)); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_Z_MEM_ERROR_aig_29567bba180e4e84() { + int result; + intgo _swig_go_result; + + + result = (int)((-4)); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_Z_BUF_ERROR_aig_29567bba180e4e84() { + int result; + intgo _swig_go_result; + + + result = (int)((-5)); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_Z_VERSION_ERROR_aig_29567bba180e4e84() { + int result; + intgo _swig_go_result; + + + result = (int)((-6)); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_Z_DEFAULT_COMPRESSION_aig_29567bba180e4e84() { + int result; + intgo _swig_go_result; + + + result = (int)((-1)); + _swig_go_result = result; + return _swig_go_result; +} + + +_gostring_ _wrap_zlibVersion_aig_29567bba180e4e84() { + char *result = 0 ; + _gostring_ _swig_go_result; + + + result = (char *)zlibVersion(); + _swig_go_result = Swig_AllocateString((char*)result, result ? strlen((char*)result) : 0); + return _swig_go_result; +} + + +intgo _wrap_deflate_aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1) { + z_streamp arg1 = (z_streamp) 0 ; + int arg2 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = (int)_swig_go_1; + + result = (int)deflate(arg1,arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_deflateEnd_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_streamp arg1 = (z_streamp) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + + result = (int)deflateEnd(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_inflate_aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1) { + z_streamp arg1 = (z_streamp) 0 ; + int arg2 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = (int)_swig_go_1; + + result = (int)inflate(arg1,arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_inflateEnd_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_streamp arg1 = (z_streamp) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + + result = (int)inflateEnd(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_deflateSetDictionary_aig_29567bba180e4e84(z_stream_s *_swig_go_0, char *_swig_go_1, intgo _swig_go_2) { + z_streamp arg1 = (z_streamp) 0 ; + Bytef *arg2 = (Bytef *) 0 ; + uInt arg3 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = *(Bytef **)&_swig_go_1; + arg3 = (uInt)_swig_go_2; + + result = (int)deflateSetDictionary(arg1,(unsigned char const *)arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_deflateGetDictionary_aig_29567bba180e4e84(z_stream_s *_swig_go_0, char *_swig_go_1, intgo *_swig_go_2) { + z_streamp arg1 = (z_streamp) 0 ; + Bytef *arg2 = (Bytef *) 0 ; + uInt *arg3 = (uInt *) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = *(Bytef **)&_swig_go_1; + arg3 = *(uInt **)&_swig_go_2; + + result = (int)deflateGetDictionary(arg1,arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_deflateCopy_aig_29567bba180e4e84(z_stream_s *_swig_go_0, z_stream_s *_swig_go_1) { + z_streamp arg1 = (z_streamp) 0 ; + z_streamp arg2 = (z_streamp) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = *(z_streamp *)&_swig_go_1; + + result = (int)deflateCopy(arg1,arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_deflateReset_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_streamp arg1 = (z_streamp) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + + result = (int)deflateReset(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_deflateParams_aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1, intgo _swig_go_2) { + z_streamp arg1 = (z_streamp) 0 ; + int arg2 ; + int arg3 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = (int)_swig_go_1; + arg3 = (int)_swig_go_2; + + result = (int)deflateParams(arg1,arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_deflateTune_aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1, intgo _swig_go_2, intgo _swig_go_3, intgo _swig_go_4) { + z_streamp arg1 = (z_streamp) 0 ; + int arg2 ; + int arg3 ; + int arg4 ; + int arg5 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = (int)_swig_go_1; + arg3 = (int)_swig_go_2; + arg4 = (int)_swig_go_3; + arg5 = (int)_swig_go_4; + + result = (int)deflateTune(arg1,arg2,arg3,arg4,arg5); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_deflateBound_aig_29567bba180e4e84(z_stream_s *_swig_go_0, long long _swig_go_1) { + z_streamp arg1 = (z_streamp) 0 ; + uLong arg2 ; + uLong result; + long long _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = (uLong)_swig_go_1; + + result = (uLong)deflateBound(arg1,arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_deflatePending_aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo *_swig_go_1, intgo *_swig_go_2) { + z_streamp arg1 = (z_streamp) 0 ; + unsigned int *arg2 = (unsigned int *) 0 ; + int *arg3 = (int *) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = *(unsigned int **)&_swig_go_1; + arg3 = *(int **)&_swig_go_2; + + result = (int)deflatePending(arg1,arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_deflatePrime_aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1, intgo _swig_go_2) { + z_streamp arg1 = (z_streamp) 0 ; + int arg2 ; + int arg3 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = (int)_swig_go_1; + arg3 = (int)_swig_go_2; + + result = (int)deflatePrime(arg1,arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_deflateSetHeader_aig_29567bba180e4e84(z_stream_s *_swig_go_0, gz_header_s *_swig_go_1) { + z_streamp arg1 = (z_streamp) 0 ; + gz_headerp arg2 = (gz_headerp) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = *(gz_headerp *)&_swig_go_1; + + result = (int)deflateSetHeader(arg1,arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_inflateSetDictionary_aig_29567bba180e4e84(z_stream_s *_swig_go_0, char *_swig_go_1, intgo _swig_go_2) { + z_streamp arg1 = (z_streamp) 0 ; + Bytef *arg2 = (Bytef *) 0 ; + uInt arg3 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = *(Bytef **)&_swig_go_1; + arg3 = (uInt)_swig_go_2; + + result = (int)inflateSetDictionary(arg1,(unsigned char const *)arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_inflateGetDictionary_aig_29567bba180e4e84(z_stream_s *_swig_go_0, char *_swig_go_1, intgo *_swig_go_2) { + z_streamp arg1 = (z_streamp) 0 ; + Bytef *arg2 = (Bytef *) 0 ; + uInt *arg3 = (uInt *) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = *(Bytef **)&_swig_go_1; + arg3 = *(uInt **)&_swig_go_2; + + result = (int)inflateGetDictionary(arg1,arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_inflateSync_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_streamp arg1 = (z_streamp) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + + result = (int)inflateSync(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_inflateCopy_aig_29567bba180e4e84(z_stream_s *_swig_go_0, z_stream_s *_swig_go_1) { + z_streamp arg1 = (z_streamp) 0 ; + z_streamp arg2 = (z_streamp) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = *(z_streamp *)&_swig_go_1; + + result = (int)inflateCopy(arg1,arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_inflateReset_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_streamp arg1 = (z_streamp) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + + result = (int)inflateReset(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_inflateReset2_aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1) { + z_streamp arg1 = (z_streamp) 0 ; + int arg2 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = (int)_swig_go_1; + + result = (int)inflateReset2(arg1,arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_inflatePrime_aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1, intgo _swig_go_2) { + z_streamp arg1 = (z_streamp) 0 ; + int arg2 ; + int arg3 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = (int)_swig_go_1; + arg3 = (int)_swig_go_2; + + result = (int)inflatePrime(arg1,arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_inflateMark_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_streamp arg1 = (z_streamp) 0 ; + long result; + long long _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + + result = (long)inflateMark(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_inflateGetHeader_aig_29567bba180e4e84(z_stream_s *_swig_go_0, gz_header_s *_swig_go_1) { + z_streamp arg1 = (z_streamp) 0 ; + gz_headerp arg2 = (gz_headerp) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = *(gz_headerp *)&_swig_go_1; + + result = (int)inflateGetHeader(arg1,arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_inflateBack_aig_29567bba180e4e84(z_stream_s *_swig_go_0, void* _swig_go_1, void *_swig_go_2, void* _swig_go_3, void *_swig_go_4) { + z_streamp arg1 = (z_streamp) 0 ; + in_func arg2 = (in_func) 0 ; + void *arg3 = (void *) 0 ; + out_func arg4 = (out_func) 0 ; + void *arg5 = (void *) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = *(in_func *)&_swig_go_1; + arg3 = *(void **)&_swig_go_2; + arg4 = *(out_func *)&_swig_go_3; + arg5 = *(void **)&_swig_go_4; + + result = (int)inflateBack(arg1,arg2,arg3,arg4,arg5); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_inflateBackEnd_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_streamp arg1 = (z_streamp) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + + result = (int)inflateBackEnd(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_zlibCompileFlags_aig_29567bba180e4e84() { + uLong result; + long long _swig_go_result; + + + result = (uLong)zlibCompileFlags(); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_compress_aig_29567bba180e4e84(char *_swig_go_0, long long *_swig_go_1, char *_swig_go_2, long long _swig_go_3) { + Bytef *arg1 = (Bytef *) 0 ; + uLongf *arg2 = (uLongf *) 0 ; + Bytef *arg3 = (Bytef *) 0 ; + uLong arg4 ; + int result; + intgo _swig_go_result; + + arg1 = *(Bytef **)&_swig_go_0; + arg2 = *(uLongf **)&_swig_go_1; + arg3 = *(Bytef **)&_swig_go_2; + arg4 = (uLong)_swig_go_3; + + result = (int)compress(arg1,arg2,(unsigned char const *)arg3,arg4); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_compress2_aig_29567bba180e4e84(char *_swig_go_0, long long *_swig_go_1, char *_swig_go_2, long long _swig_go_3, intgo _swig_go_4) { + Bytef *arg1 = (Bytef *) 0 ; + uLongf *arg2 = (uLongf *) 0 ; + Bytef *arg3 = (Bytef *) 0 ; + uLong arg4 ; + int arg5 ; + int result; + intgo _swig_go_result; + + arg1 = *(Bytef **)&_swig_go_0; + arg2 = *(uLongf **)&_swig_go_1; + arg3 = *(Bytef **)&_swig_go_2; + arg4 = (uLong)_swig_go_3; + arg5 = (int)_swig_go_4; + + result = (int)compress2(arg1,arg2,(unsigned char const *)arg3,arg4,arg5); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_compressBound_aig_29567bba180e4e84(long long _swig_go_0) { + uLong arg1 ; + uLong result; + long long _swig_go_result; + + arg1 = (uLong)_swig_go_0; + + result = (uLong)compressBound(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_uncompress_aig_29567bba180e4e84(char *_swig_go_0, long long *_swig_go_1, char *_swig_go_2, long long _swig_go_3) { + Bytef *arg1 = (Bytef *) 0 ; + uLongf *arg2 = (uLongf *) 0 ; + Bytef *arg3 = (Bytef *) 0 ; + uLong arg4 ; + int result; + intgo _swig_go_result; + + arg1 = *(Bytef **)&_swig_go_0; + arg2 = *(uLongf **)&_swig_go_1; + arg3 = *(Bytef **)&_swig_go_2; + arg4 = (uLong)_swig_go_3; + + result = (int)uncompress(arg1,arg2,(unsigned char const *)arg3,arg4); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_uncompress2_aig_29567bba180e4e84(char *_swig_go_0, long long *_swig_go_1, char *_swig_go_2, long long *_swig_go_3) { + Bytef *arg1 = (Bytef *) 0 ; + uLongf *arg2 = (uLongf *) 0 ; + Bytef *arg3 = (Bytef *) 0 ; + uLong *arg4 = (uLong *) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(Bytef **)&_swig_go_0; + arg2 = *(uLongf **)&_swig_go_1; + arg3 = *(Bytef **)&_swig_go_2; + arg4 = *(uLong **)&_swig_go_3; + + result = (int)uncompress2(arg1,arg2,(unsigned char const *)arg3,arg4); + _swig_go_result = result; + return _swig_go_result; +} + + +gzFile_s *_wrap_gzdopen_aig_29567bba180e4e84(intgo _swig_go_0, _gostring_ _swig_go_1) { + int arg1 ; + char *arg2 = (char *) 0 ; + gzFile result; + gzFile_s *_swig_go_result; + + arg1 = (int)_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + + result = (gzFile)gzdopen(arg1,(char const *)arg2); + *(gzFile *)&_swig_go_result = (gzFile)result; + free(arg2); + return _swig_go_result; +} + + +intgo _wrap_gzbuffer_aig_29567bba180e4e84(gzFile_s *_swig_go_0, intgo _swig_go_1) { + gzFile arg1 = (gzFile) 0 ; + unsigned int arg2 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + result = (int)gzbuffer(arg1,arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_gzsetparams_aig_29567bba180e4e84(gzFile_s *_swig_go_0, intgo _swig_go_1, intgo _swig_go_2) { + gzFile arg1 = (gzFile) 0 ; + int arg2 ; + int arg3 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + arg2 = (int)_swig_go_1; + arg3 = (int)_swig_go_2; + + result = (int)gzsetparams(arg1,arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_gzread_aig_29567bba180e4e84(gzFile_s *_swig_go_0, voidp _swig_go_1, intgo _swig_go_2) { + gzFile arg1 = (gzFile) 0 ; + voidp arg2 = (voidp) 0 ; + unsigned int arg3 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + arg2 = *(voidp *)&_swig_go_1; + arg3 = (unsigned int)_swig_go_2; + + result = (int)gzread(arg1,arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_gzfread_aig_29567bba180e4e84(voidp _swig_go_0, long long _swig_go_1, long long _swig_go_2, gzFile_s *_swig_go_3) { + voidp arg1 = (voidp) 0 ; + z_size_t arg2 ; + z_size_t arg3 ; + gzFile arg4 = (gzFile) 0 ; + z_size_t result; + long long _swig_go_result; + + arg1 = *(voidp *)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + arg3 = (size_t)_swig_go_2; + arg4 = *(gzFile *)&_swig_go_3; + + result = gzfread(arg1,arg2,arg3,arg4); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_gzwrite_aig_29567bba180e4e84(gzFile_s *_swig_go_0, voidpc _swig_go_1, intgo _swig_go_2) { + gzFile arg1 = (gzFile) 0 ; + voidpc arg2 = (voidpc) 0 ; + unsigned int arg3 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + arg2 = *(voidpc *)&_swig_go_1; + arg3 = (unsigned int)_swig_go_2; + + result = (int)gzwrite(arg1,(void const *)arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_gzfwrite_aig_29567bba180e4e84(voidpc _swig_go_0, long long _swig_go_1, long long _swig_go_2, gzFile_s *_swig_go_3) { + voidpc arg1 = (voidpc) 0 ; + z_size_t arg2 ; + z_size_t arg3 ; + gzFile arg4 = (gzFile) 0 ; + z_size_t result; + long long _swig_go_result; + + arg1 = *(voidpc *)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + arg3 = (size_t)_swig_go_2; + arg4 = *(gzFile *)&_swig_go_3; + + result = gzfwrite((void const *)arg1,arg2,arg3,arg4); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_gzprintf_aig_29567bba180e4e84(gzFile_s *_swig_go_0, _gostring_ _swig_go_1) { + gzFile arg1 = (gzFile) 0 ; + char *arg2 = (char *) 0 ; + void *arg3 = 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + + result = (int)gzprintf(arg1,(char const *)arg2,arg3); + _swig_go_result = result; + free(arg2); + return _swig_go_result; +} + + +intgo _wrap_gzputs_aig_29567bba180e4e84(gzFile_s *_swig_go_0, _gostring_ _swig_go_1) { + gzFile arg1 = (gzFile) 0 ; + char *arg2 = (char *) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + + result = (int)gzputs(arg1,(char const *)arg2); + _swig_go_result = result; + free(arg2); + return _swig_go_result; +} + + +_gostring_ _wrap_gzgets_aig_29567bba180e4e84(gzFile_s *_swig_go_0, _gostring_ _swig_go_1, intgo _swig_go_2) { + gzFile arg1 = (gzFile) 0 ; + char *arg2 = (char *) 0 ; + int arg3 ; + char *result = 0 ; + _gostring_ _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + arg3 = (int)_swig_go_2; + + result = (char *)gzgets(arg1,arg2,arg3); + _swig_go_result = Swig_AllocateString((char*)result, result ? strlen((char*)result) : 0); + free(arg2); + return _swig_go_result; +} + + +intgo _wrap_gzputc_aig_29567bba180e4e84(gzFile_s *_swig_go_0, intgo _swig_go_1) { + gzFile arg1 = (gzFile) 0 ; + int arg2 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + arg2 = (int)_swig_go_1; + + result = (int)gzputc(arg1,arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_gzgetc_aig_29567bba180e4e84(gzFile_s *_swig_go_0) { + gzFile arg1 = (gzFile) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + + result = (int)gzgetc(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_gzungetc_aig_29567bba180e4e84(intgo _swig_go_0, gzFile_s *_swig_go_1) { + int arg1 ; + gzFile arg2 = (gzFile) 0 ; + int result; + intgo _swig_go_result; + + arg1 = (int)_swig_go_0; + arg2 = *(gzFile *)&_swig_go_1; + + result = (int)gzungetc(arg1,arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_gzflush_aig_29567bba180e4e84(gzFile_s *_swig_go_0, intgo _swig_go_1) { + gzFile arg1 = (gzFile) 0 ; + int arg2 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + arg2 = (int)_swig_go_1; + + result = (int)gzflush(arg1,arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_gzrewind_aig_29567bba180e4e84(gzFile_s *_swig_go_0) { + gzFile arg1 = (gzFile) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + + result = (int)gzrewind(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_gzeof_aig_29567bba180e4e84(gzFile_s *_swig_go_0) { + gzFile arg1 = (gzFile) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + + result = (int)gzeof(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_gzdirect_aig_29567bba180e4e84(gzFile_s *_swig_go_0) { + gzFile arg1 = (gzFile) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + + result = (int)gzdirect(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_gzclose_aig_29567bba180e4e84(gzFile_s *_swig_go_0) { + gzFile arg1 = (gzFile) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + + result = (int)gzclose(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_gzclose_r_aig_29567bba180e4e84(gzFile_s *_swig_go_0) { + gzFile arg1 = (gzFile) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + + result = (int)gzclose_r(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_gzclose_w_aig_29567bba180e4e84(gzFile_s *_swig_go_0) { + gzFile arg1 = (gzFile) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + + result = (int)gzclose_w(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +_gostring_ _wrap_gzerror_aig_29567bba180e4e84(gzFile_s *_swig_go_0, intgo *_swig_go_1) { + gzFile arg1 = (gzFile) 0 ; + int *arg2 = (int *) 0 ; + char *result = 0 ; + _gostring_ _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + arg2 = *(int **)&_swig_go_1; + + result = (char *)gzerror(arg1,arg2); + _swig_go_result = Swig_AllocateString((char*)result, result ? strlen((char*)result) : 0); + return _swig_go_result; +} + + +void _wrap_gzclearerr_aig_29567bba180e4e84(gzFile_s *_swig_go_0) { + gzFile arg1 = (gzFile) 0 ; + + arg1 = *(gzFile *)&_swig_go_0; + + gzclearerr(arg1); + +} + + +long long _wrap_adler32_aig_29567bba180e4e84(long long _swig_go_0, char *_swig_go_1, intgo _swig_go_2) { + uLong arg1 ; + Bytef *arg2 = (Bytef *) 0 ; + uInt arg3 ; + uLong result; + long long _swig_go_result; + + arg1 = (uLong)_swig_go_0; + arg2 = *(Bytef **)&_swig_go_1; + arg3 = (uInt)_swig_go_2; + + result = (uLong)adler32(arg1,(unsigned char const *)arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_adler32_z_aig_29567bba180e4e84(long long _swig_go_0, char *_swig_go_1, long long _swig_go_2) { + uLong arg1 ; + Bytef *arg2 = (Bytef *) 0 ; + z_size_t arg3 ; + uLong result; + long long _swig_go_result; + + arg1 = (uLong)_swig_go_0; + arg2 = *(Bytef **)&_swig_go_1; + arg3 = (size_t)_swig_go_2; + + result = (uLong)adler32_z(arg1,(unsigned char const *)arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_crc32_aig_29567bba180e4e84(long long _swig_go_0, char *_swig_go_1, intgo _swig_go_2) { + uLong arg1 ; + Bytef *arg2 = (Bytef *) 0 ; + uInt arg3 ; + uLong result; + long long _swig_go_result; + + arg1 = (uLong)_swig_go_0; + arg2 = *(Bytef **)&_swig_go_1; + arg3 = (uInt)_swig_go_2; + + result = (uLong)crc32(arg1,(unsigned char const *)arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_crc32_z_aig_29567bba180e4e84(long long _swig_go_0, char *_swig_go_1, long long _swig_go_2) { + uLong arg1 ; + Bytef *arg2 = (Bytef *) 0 ; + z_size_t arg3 ; + uLong result; + long long _swig_go_result; + + arg1 = (uLong)_swig_go_0; + arg2 = *(Bytef **)&_swig_go_1; + arg3 = (size_t)_swig_go_2; + + result = (uLong)crc32_z(arg1,(unsigned char const *)arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_deflateInit__aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1, _gostring_ _swig_go_2, intgo _swig_go_3) { + z_streamp arg1 = (z_streamp) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + int arg4 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = (int)_swig_go_1; + + arg3 = (char *)malloc(_swig_go_2.n + 1); + memcpy(arg3, _swig_go_2.p, _swig_go_2.n); + arg3[_swig_go_2.n] = '\0'; + + arg4 = (int)_swig_go_3; + + result = (int)deflateInit_(arg1,arg2,(char const *)arg3,arg4); + _swig_go_result = result; + free(arg3); + return _swig_go_result; +} + + +intgo _wrap_inflateInit__aig_29567bba180e4e84(z_stream_s *_swig_go_0, _gostring_ _swig_go_1, intgo _swig_go_2) { + z_streamp arg1 = (z_streamp) 0 ; + char *arg2 = (char *) 0 ; + int arg3 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + arg3 = (int)_swig_go_2; + + result = (int)inflateInit_(arg1,(char const *)arg2,arg3); + _swig_go_result = result; + free(arg2); + return _swig_go_result; +} + + +intgo _wrap_deflateInit2__aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1, intgo _swig_go_2, intgo _swig_go_3, intgo _swig_go_4, intgo _swig_go_5, _gostring_ _swig_go_6, intgo _swig_go_7) { + z_streamp arg1 = (z_streamp) 0 ; + int arg2 ; + int arg3 ; + int arg4 ; + int arg5 ; + int arg6 ; + char *arg7 = (char *) 0 ; + int arg8 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = (int)_swig_go_1; + arg3 = (int)_swig_go_2; + arg4 = (int)_swig_go_3; + arg5 = (int)_swig_go_4; + arg6 = (int)_swig_go_5; + + arg7 = (char *)malloc(_swig_go_6.n + 1); + memcpy(arg7, _swig_go_6.p, _swig_go_6.n); + arg7[_swig_go_6.n] = '\0'; + + arg8 = (int)_swig_go_7; + + result = (int)deflateInit2_(arg1,arg2,arg3,arg4,arg5,arg6,(char const *)arg7,arg8); + _swig_go_result = result; + free(arg7); + return _swig_go_result; +} + + +intgo _wrap_inflateInit2__aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1, _gostring_ _swig_go_2, intgo _swig_go_3) { + z_streamp arg1 = (z_streamp) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + int arg4 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = (int)_swig_go_1; + + arg3 = (char *)malloc(_swig_go_2.n + 1); + memcpy(arg3, _swig_go_2.p, _swig_go_2.n); + arg3[_swig_go_2.n] = '\0'; + + arg4 = (int)_swig_go_3; + + result = (int)inflateInit2_(arg1,arg2,(char const *)arg3,arg4); + _swig_go_result = result; + free(arg3); + return _swig_go_result; +} + + +intgo _wrap_inflateBackInit__aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1, char *_swig_go_2, _gostring_ _swig_go_3, intgo _swig_go_4) { + z_streamp arg1 = (z_streamp) 0 ; + int arg2 ; + unsigned char *arg3 = (unsigned char *) 0 ; + char *arg4 = (char *) 0 ; + int arg5 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = (int)_swig_go_1; + arg3 = *(unsigned char **)&_swig_go_2; + + arg4 = (char *)malloc(_swig_go_3.n + 1); + memcpy(arg4, _swig_go_3.p, _swig_go_3.n); + arg4[_swig_go_3.n] = '\0'; + + arg5 = (int)_swig_go_4; + + result = (int)inflateBackInit_(arg1,arg2,arg3,(char const *)arg4,arg5); + _swig_go_result = result; + free(arg4); + return _swig_go_result; +} + + +void _wrap_gzFile_s_have_set_aig_29567bba180e4e84(gzFile_s *_swig_go_0, intgo _swig_go_1) { + gzFile_s *arg1 = (gzFile_s *) 0 ; + unsigned int arg2 ; + + arg1 = *(gzFile_s **)&_swig_go_0; + arg2 = (unsigned int)_swig_go_1; + + if (arg1) (arg1)->have = arg2; + +} + + +intgo _wrap_gzFile_s_have_get_aig_29567bba180e4e84(gzFile_s *_swig_go_0) { + gzFile_s *arg1 = (gzFile_s *) 0 ; + unsigned int result; + intgo _swig_go_result; + + arg1 = *(gzFile_s **)&_swig_go_0; + + result = (unsigned int) ((arg1)->have); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_gzFile_s_next_set_aig_29567bba180e4e84(gzFile_s *_swig_go_0, char *_swig_go_1) { + gzFile_s *arg1 = (gzFile_s *) 0 ; + unsigned char *arg2 = (unsigned char *) 0 ; + + arg1 = *(gzFile_s **)&_swig_go_0; + arg2 = *(unsigned char **)&_swig_go_1; + + if (arg1) (arg1)->next = arg2; + +} + + +char *_wrap_gzFile_s_next_get_aig_29567bba180e4e84(gzFile_s *_swig_go_0) { + gzFile_s *arg1 = (gzFile_s *) 0 ; + unsigned char *result = 0 ; + char *_swig_go_result; + + arg1 = *(gzFile_s **)&_swig_go_0; + + result = (unsigned char *) ((arg1)->next); + *(unsigned char **)&_swig_go_result = (unsigned char *)result; + return _swig_go_result; +} + + +void _wrap_gzFile_s_pos_set_aig_29567bba180e4e84(gzFile_s *_swig_go_0, off_t *_swig_go_1) { + gzFile_s *arg1 = (gzFile_s *) 0 ; + off_t arg2 ; + off_t *argp2 ; + + arg1 = *(gzFile_s **)&_swig_go_0; + + argp2 = (off_t *)_swig_go_1; + if (argp2 == NULL) { + _swig_gopanic("Attempt to dereference null off_t"); + } + arg2 = (off_t)*argp2; + + + if (arg1) (arg1)->pos = arg2; + +} + + +off_t *_wrap_gzFile_s_pos_get_aig_29567bba180e4e84(gzFile_s *_swig_go_0) { + gzFile_s *arg1 = (gzFile_s *) 0 ; + off_t result; + off_t *_swig_go_result; + + arg1 = *(gzFile_s **)&_swig_go_0; + + result = ((arg1)->pos); + *(off_t **)&_swig_go_result = new off_t(result); + return _swig_go_result; +} + + +gzFile_s *_wrap_new_gzFile_s_aig_29567bba180e4e84() { + gzFile_s *result = 0 ; + gzFile_s *_swig_go_result; + + + result = (gzFile_s *)new gzFile_s(); + *(gzFile_s **)&_swig_go_result = (gzFile_s *)result; + return _swig_go_result; +} + + +void _wrap_delete_gzFile_s_aig_29567bba180e4e84(gzFile_s *_swig_go_0) { + gzFile_s *arg1 = (gzFile_s *) 0 ; + + arg1 = *(gzFile_s **)&_swig_go_0; + + delete arg1; + +} + + +intgo _wrap_gzgetc__aig_29567bba180e4e84(gzFile_s *_swig_go_0) { + gzFile arg1 = (gzFile) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + + result = (int)gzgetc_(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +gzFile_s *_wrap_gzopen_aig_29567bba180e4e84(_gostring_ _swig_go_0, _gostring_ _swig_go_1) { + char *arg1 = (char *) 0 ; + char *arg2 = (char *) 0 ; + gzFile result; + gzFile_s *_swig_go_result; + + + arg1 = (char *)malloc(_swig_go_0.n + 1); + memcpy(arg1, _swig_go_0.p, _swig_go_0.n); + arg1[_swig_go_0.n] = '\0'; + + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + + result = (gzFile)gzopen((char const *)arg1,(char const *)arg2); + *(gzFile *)&_swig_go_result = (gzFile)result; + free(arg1); + free(arg2); + return _swig_go_result; +} + + +off_t *_wrap_gzseek_aig_29567bba180e4e84(gzFile_s *_swig_go_0, off_t *_swig_go_1, intgo _swig_go_2) { + gzFile arg1 = (gzFile) 0 ; + off_t arg2 ; + int arg3 ; + off_t *argp2 ; + off_t result; + off_t *_swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + + argp2 = (off_t *)_swig_go_1; + if (argp2 == NULL) { + _swig_gopanic("Attempt to dereference null off_t"); + } + arg2 = (off_t)*argp2; + + arg3 = (int)_swig_go_2; + + result = gzseek(arg1,arg2,arg3); + *(off_t **)&_swig_go_result = new off_t(result); + return _swig_go_result; +} + + +off_t *_wrap_gztell_aig_29567bba180e4e84(gzFile_s *_swig_go_0) { + gzFile arg1 = (gzFile) 0 ; + off_t result; + off_t *_swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + + result = gztell(arg1); + *(off_t **)&_swig_go_result = new off_t(result); + return _swig_go_result; +} + + +off_t *_wrap_gzoffset_aig_29567bba180e4e84(gzFile_s *_swig_go_0) { + gzFile arg1 = (gzFile) 0 ; + off_t result; + off_t *_swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + + result = gzoffset(arg1); + *(off_t **)&_swig_go_result = new off_t(result); + return _swig_go_result; +} + + +long long _wrap_adler32_combine_aig_29567bba180e4e84(long long _swig_go_0, long long _swig_go_1, off_t *_swig_go_2) { + uLong arg1 ; + uLong arg2 ; + off_t arg3 ; + off_t *argp3 ; + uLong result; + long long _swig_go_result; + + arg1 = (uLong)_swig_go_0; + arg2 = (uLong)_swig_go_1; + + argp3 = (off_t *)_swig_go_2; + if (argp3 == NULL) { + _swig_gopanic("Attempt to dereference null off_t"); + } + arg3 = (off_t)*argp3; + + + result = (uLong)adler32_combine(arg1,arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_crc32_combine_aig_29567bba180e4e84(long long _swig_go_0, long long _swig_go_1, off_t *_swig_go_2) { + uLong arg1 ; + uLong arg2 ; + off_t arg3 ; + off_t *argp3 ; + uLong result; + long long _swig_go_result; + + arg1 = (uLong)_swig_go_0; + arg2 = (uLong)_swig_go_1; + + argp3 = (off_t *)_swig_go_2; + if (argp3 == NULL) { + _swig_gopanic("Attempt to dereference null off_t"); + } + arg3 = (off_t)*argp3; + + + result = (uLong)crc32_combine(arg1,arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +_gostring_ _wrap_zError_aig_29567bba180e4e84(intgo _swig_go_0) { + int arg1 ; + char *result = 0 ; + _gostring_ _swig_go_result; + + arg1 = (int)_swig_go_0; + + result = (char *)zError(arg1); + _swig_go_result = Swig_AllocateString((char*)result, result ? strlen((char*)result) : 0); + return _swig_go_result; +} + + +intgo _wrap_inflateSyncPoint_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_streamp arg1 = (z_streamp) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + + result = (int)inflateSyncPoint(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +long long *_wrap_get_crc_table_aig_29567bba180e4e84() { + z_crc_t *result = 0 ; + long long *_swig_go_result; + + + result = (z_crc_t *)get_crc_table(); + *(z_crc_t **)&_swig_go_result = (z_crc_t *)result; + return _swig_go_result; +} + + +intgo _wrap_inflateUndermine_aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1) { + z_streamp arg1 = (z_streamp) 0 ; + int arg2 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = (int)_swig_go_1; + + result = (int)inflateUndermine(arg1,arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_inflateValidate_aig_29567bba180e4e84(z_stream_s *_swig_go_0, intgo _swig_go_1) { + z_streamp arg1 = (z_streamp) 0 ; + int arg2 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + arg2 = (int)_swig_go_1; + + result = (int)inflateValidate(arg1,arg2); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_inflateCodesUsed_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_streamp arg1 = (z_streamp) 0 ; + unsigned long result; + long long _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + + result = (unsigned long)inflateCodesUsed(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_inflateResetKeep_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_streamp arg1 = (z_streamp) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + + result = (int)inflateResetKeep(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_deflateResetKeep_aig_29567bba180e4e84(z_stream_s *_swig_go_0) { + z_streamp arg1 = (z_streamp) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(z_streamp *)&_swig_go_0; + + result = (int)deflateResetKeep(arg1); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_gzvprintf_aig_29567bba180e4e84(gzFile_s *_swig_go_0, _gostring_ _swig_go_1, va_list *_swig_go_2) { + gzFile arg1 = (gzFile) 0 ; + char *arg2 = (char *) 0 ; + va_list arg3 ; + va_list *argp3 ; + int result; + intgo _swig_go_result; + + arg1 = *(gzFile *)&_swig_go_0; + + arg2 = (char *)malloc(_swig_go_1.n + 1); + memcpy(arg2, _swig_go_1.p, _swig_go_1.n); + arg2[_swig_go_1.n] = '\0'; + + + argp3 = (va_list *)_swig_go_2; + if (argp3 == NULL) { + _swig_gopanic("Attempt to dereference null va_list"); + } + arg3 = (va_list)*argp3; + + + result = (int)gzvprintf(arg1,(char const *)arg2,arg3); + _swig_go_result = result; + free(arg2); + return _swig_go_result; +} + + +intgo _wrap_ETF_ASCII_aig_29567bba180e4e84() { + irr::io::ETEXT_FORMAT result; + intgo _swig_go_result; + + + result = irr::io::ETF_ASCII; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_ETF_UTF8_aig_29567bba180e4e84() { + irr::io::ETEXT_FORMAT result; + intgo _swig_go_result; + + + result = irr::io::ETF_UTF8; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_ETF_UTF16_BE_aig_29567bba180e4e84() { + irr::io::ETEXT_FORMAT result; + intgo _swig_go_result; + + + result = irr::io::ETF_UTF16_BE; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_ETF_UTF16_LE_aig_29567bba180e4e84() { + irr::io::ETEXT_FORMAT result; + intgo _swig_go_result; + + + result = irr::io::ETF_UTF16_LE; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_ETF_UTF32_BE_aig_29567bba180e4e84() { + irr::io::ETEXT_FORMAT result; + intgo _swig_go_result; + + + result = irr::io::ETF_UTF32_BE; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_ETF_UTF32_LE_aig_29567bba180e4e84() { + irr::io::ETEXT_FORMAT result; + intgo _swig_go_result; + + + result = irr::io::ETF_UTF32_LE; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_EXN_NONE_aig_29567bba180e4e84() { + irr::io::EXML_NODE result; + intgo _swig_go_result; + + + result = irr::io::EXN_NONE; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_EXN_ELEMENT_aig_29567bba180e4e84() { + irr::io::EXML_NODE result; + intgo _swig_go_result; + + + result = irr::io::EXN_ELEMENT; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_EXN_ELEMENT_END_aig_29567bba180e4e84() { + irr::io::EXML_NODE result; + intgo _swig_go_result; + + + result = irr::io::EXN_ELEMENT_END; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_EXN_TEXT_aig_29567bba180e4e84() { + irr::io::EXML_NODE result; + intgo _swig_go_result; + + + result = irr::io::EXN_TEXT; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_EXN_COMMENT_aig_29567bba180e4e84() { + irr::io::EXML_NODE result; + intgo _swig_go_result; + + + result = irr::io::EXN_COMMENT; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_EXN_CDATA_aig_29567bba180e4e84() { + irr::io::EXML_NODE result; + intgo _swig_go_result; + + + result = irr::io::EXN_CDATA; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_EXN_UNKNOWN_aig_29567bba180e4e84() { + irr::io::EXML_NODE result; + intgo _swig_go_result; + + + result = irr::io::EXN_UNKNOWN; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +void _wrap_delete_IFileReadCallBack_aig_29567bba180e4e84(irr::io::IFileReadCallBack *_swig_go_0) { + irr::io::IFileReadCallBack *arg1 = (irr::io::IFileReadCallBack *) 0 ; + + arg1 = *(irr::io::IFileReadCallBack **)&_swig_go_0; + + delete arg1; + +} + + +intgo _wrap_IFileReadCallBack_read_aig_29567bba180e4e84(irr::io::IFileReadCallBack *_swig_go_0, void *_swig_go_1, intgo _swig_go_2) { + irr::io::IFileReadCallBack *arg1 = (irr::io::IFileReadCallBack *) 0 ; + void *arg2 = (void *) 0 ; + int arg3 ; + int result; + intgo _swig_go_result; + + arg1 = *(irr::io::IFileReadCallBack **)&_swig_go_0; + arg2 = *(void **)&_swig_go_1; + arg3 = (int)_swig_go_2; + + result = (int)(arg1)->read(arg2,arg3); + _swig_go_result = result; + return _swig_go_result; +} + + +intgo _wrap_IFileReadCallBack_getSize_aig_29567bba180e4e84(irr::io::IFileReadCallBack *_swig_go_0) { + irr::io::IFileReadCallBack *arg1 = (irr::io::IFileReadCallBack *) 0 ; + int result; + intgo _swig_go_result; + + arg1 = *(irr::io::IFileReadCallBack **)&_swig_go_0; + + result = (int)(arg1)->getSize(); + _swig_go_result = result; + return _swig_go_result; +} + + +irr::io::IXMLBase *_wrap_new_IXMLBase_aig_29567bba180e4e84() { + irr::io::IXMLBase *result = 0 ; + irr::io::IXMLBase *_swig_go_result; + + + result = (irr::io::IXMLBase *)new irr::io::IXMLBase(); + *(irr::io::IXMLBase **)&_swig_go_result = (irr::io::IXMLBase *)result; + return _swig_go_result; +} + + +void _wrap_delete_IXMLBase_aig_29567bba180e4e84(irr::io::IXMLBase *_swig_go_0) { + irr::io::IXMLBase *arg1 = (irr::io::IXMLBase *) 0 ; + + arg1 = *(irr::io::IXMLBase **)&_swig_go_0; + + delete arg1; + +} + + +irr::io::IIrrXMLReader< char,irr::io::IXMLBase > *_wrap_createIrrXMLReader__SWIG_0_aig_29567bba180e4e84(_gostring_ _swig_go_0) { + char *arg1 = (char *) 0 ; + irr::io::IrrXMLReader *result = 0 ; + irr::io::IIrrXMLReader< char,irr::io::IXMLBase > *_swig_go_result; + + + arg1 = (char *)malloc(_swig_go_0.n + 1); + memcpy(arg1, _swig_go_0.p, _swig_go_0.n); + arg1[_swig_go_0.n] = '\0'; + + + result = (irr::io::IrrXMLReader *)irr::io::createIrrXMLReader((char const *)arg1); + *(irr::io::IrrXMLReader **)&_swig_go_result = (irr::io::IrrXMLReader *)result; + free(arg1); + return _swig_go_result; +} + + +irr::io::IIrrXMLReader< char,irr::io::IXMLBase > *_wrap_createIrrXMLReader__SWIG_1_aig_29567bba180e4e84(FILE *_swig_go_0) { + FILE *arg1 = (FILE *) 0 ; + irr::io::IrrXMLReader *result = 0 ; + irr::io::IIrrXMLReader< char,irr::io::IXMLBase > *_swig_go_result; + + arg1 = *(FILE **)&_swig_go_0; + + result = (irr::io::IrrXMLReader *)irr::io::createIrrXMLReader(arg1); + *(irr::io::IrrXMLReader **)&_swig_go_result = (irr::io::IrrXMLReader *)result; + return _swig_go_result; +} + + +irr::io::IIrrXMLReader< char,irr::io::IXMLBase > *_wrap_createIrrXMLReader__SWIG_2_aig_29567bba180e4e84(irr::io::IFileReadCallBack *_swig_go_0) { + irr::io::IFileReadCallBack *arg1 = (irr::io::IFileReadCallBack *) 0 ; + irr::io::IrrXMLReader *result = 0 ; + irr::io::IIrrXMLReader< char,irr::io::IXMLBase > *_swig_go_result; + + arg1 = *(irr::io::IFileReadCallBack **)&_swig_go_0; + + result = (irr::io::IrrXMLReader *)irr::io::createIrrXMLReader(arg1); + *(irr::io::IrrXMLReader **)&_swig_go_result = (irr::io::IrrXMLReader *)result; + return _swig_go_result; +} + + +irr::io::IIrrXMLReader< unsigned short,irr::io::IXMLBase > *_wrap_createIrrXMLReaderUTF16__SWIG_0_aig_29567bba180e4e84(_gostring_ _swig_go_0) { + char *arg1 = (char *) 0 ; + irr::io::IrrXMLReaderUTF16 *result = 0 ; + irr::io::IIrrXMLReader< unsigned short,irr::io::IXMLBase > *_swig_go_result; + + + arg1 = (char *)malloc(_swig_go_0.n + 1); + memcpy(arg1, _swig_go_0.p, _swig_go_0.n); + arg1[_swig_go_0.n] = '\0'; + + + result = (irr::io::IrrXMLReaderUTF16 *)irr::io::createIrrXMLReaderUTF16((char const *)arg1); + *(irr::io::IrrXMLReaderUTF16 **)&_swig_go_result = (irr::io::IrrXMLReaderUTF16 *)result; + free(arg1); + return _swig_go_result; +} + + +irr::io::IIrrXMLReader< unsigned short,irr::io::IXMLBase > *_wrap_createIrrXMLReaderUTF16__SWIG_1_aig_29567bba180e4e84(FILE *_swig_go_0) { + FILE *arg1 = (FILE *) 0 ; + irr::io::IrrXMLReaderUTF16 *result = 0 ; + irr::io::IIrrXMLReader< unsigned short,irr::io::IXMLBase > *_swig_go_result; + + arg1 = *(FILE **)&_swig_go_0; + + result = (irr::io::IrrXMLReaderUTF16 *)irr::io::createIrrXMLReaderUTF16(arg1); + *(irr::io::IrrXMLReaderUTF16 **)&_swig_go_result = (irr::io::IrrXMLReaderUTF16 *)result; + return _swig_go_result; +} + + +irr::io::IIrrXMLReader< unsigned short,irr::io::IXMLBase > *_wrap_createIrrXMLReaderUTF16__SWIG_2_aig_29567bba180e4e84(irr::io::IFileReadCallBack *_swig_go_0) { + irr::io::IFileReadCallBack *arg1 = (irr::io::IFileReadCallBack *) 0 ; + irr::io::IrrXMLReaderUTF16 *result = 0 ; + irr::io::IIrrXMLReader< unsigned short,irr::io::IXMLBase > *_swig_go_result; + + arg1 = *(irr::io::IFileReadCallBack **)&_swig_go_0; + + result = (irr::io::IrrXMLReaderUTF16 *)irr::io::createIrrXMLReaderUTF16(arg1); + *(irr::io::IrrXMLReaderUTF16 **)&_swig_go_result = (irr::io::IrrXMLReaderUTF16 *)result; + return _swig_go_result; +} + + +irr::io::IIrrXMLReader< unsigned long,irr::io::IXMLBase > *_wrap_createIrrXMLReaderUTF32__SWIG_0_aig_29567bba180e4e84(_gostring_ _swig_go_0) { + char *arg1 = (char *) 0 ; + irr::io::IrrXMLReaderUTF32 *result = 0 ; + irr::io::IIrrXMLReader< unsigned long,irr::io::IXMLBase > *_swig_go_result; + + + arg1 = (char *)malloc(_swig_go_0.n + 1); + memcpy(arg1, _swig_go_0.p, _swig_go_0.n); + arg1[_swig_go_0.n] = '\0'; + + + result = (irr::io::IrrXMLReaderUTF32 *)irr::io::createIrrXMLReaderUTF32((char const *)arg1); + *(irr::io::IrrXMLReaderUTF32 **)&_swig_go_result = (irr::io::IrrXMLReaderUTF32 *)result; + free(arg1); + return _swig_go_result; +} + + +irr::io::IIrrXMLReader< unsigned long,irr::io::IXMLBase > *_wrap_createIrrXMLReaderUTF32__SWIG_1_aig_29567bba180e4e84(FILE *_swig_go_0) { + FILE *arg1 = (FILE *) 0 ; + irr::io::IrrXMLReaderUTF32 *result = 0 ; + irr::io::IIrrXMLReader< unsigned long,irr::io::IXMLBase > *_swig_go_result; + + arg1 = *(FILE **)&_swig_go_0; + + result = (irr::io::IrrXMLReaderUTF32 *)irr::io::createIrrXMLReaderUTF32(arg1); + *(irr::io::IrrXMLReaderUTF32 **)&_swig_go_result = (irr::io::IrrXMLReaderUTF32 *)result; + return _swig_go_result; +} + + +irr::io::IIrrXMLReader< unsigned long,irr::io::IXMLBase > *_wrap_createIrrXMLReaderUTF32__SWIG_2_aig_29567bba180e4e84(irr::io::IFileReadCallBack *_swig_go_0) { + irr::io::IFileReadCallBack *arg1 = (irr::io::IFileReadCallBack *) 0 ; + irr::io::IrrXMLReaderUTF32 *result = 0 ; + irr::io::IIrrXMLReader< unsigned long,irr::io::IXMLBase > *_swig_go_result; + + arg1 = *(irr::io::IFileReadCallBack **)&_swig_go_0; + + result = (irr::io::IrrXMLReaderUTF32 *)irr::io::createIrrXMLReaderUTF32(arg1); + *(irr::io::IrrXMLReaderUTF32 **)&_swig_go_result = (irr::io::IrrXMLReaderUTF32 *)result; + return _swig_go_result; +} + + +std::vector< unsigned int > *_wrap_new_UintVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< unsigned int > *result = 0 ; + std::vector< unsigned int > *_swig_go_result; + + + result = (std::vector< unsigned int > *)new std::vector< unsigned int >(); + *(std::vector< unsigned int > **)&_swig_go_result = (std::vector< unsigned int > *)result; + return _swig_go_result; +} + + +std::vector< unsigned int > *_wrap_new_UintVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< unsigned int >::size_type arg1 ; + std::vector< unsigned int > *result = 0 ; + std::vector< unsigned int > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< unsigned int > *)new std::vector< unsigned int >(arg1); + *(std::vector< unsigned int > **)&_swig_go_result = (std::vector< unsigned int > *)result; + return _swig_go_result; +} + + +std::vector< unsigned int > *_wrap_new_UintVector__SWIG_2_aig_29567bba180e4e84(std::vector< unsigned int > *_swig_go_0) { + std::vector< unsigned int > *arg1 = 0 ; + std::vector< unsigned int > *result = 0 ; + std::vector< unsigned int > *_swig_go_result; + + arg1 = *(std::vector< unsigned int > **)&_swig_go_0; + + result = (std::vector< unsigned int > *)new std::vector< unsigned int >((std::vector< unsigned int > const &)*arg1); + *(std::vector< unsigned int > **)&_swig_go_result = (std::vector< unsigned int > *)result; + return _swig_go_result; +} + + +long long _wrap_UintVector_size_aig_29567bba180e4e84(std::vector< unsigned int > *_swig_go_0) { + std::vector< unsigned int > *arg1 = (std::vector< unsigned int > *) 0 ; + std::vector< unsigned int >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< unsigned int > **)&_swig_go_0; + + result = ((std::vector< unsigned int > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_UintVector_capacity_aig_29567bba180e4e84(std::vector< unsigned int > *_swig_go_0) { + std::vector< unsigned int > *arg1 = (std::vector< unsigned int > *) 0 ; + std::vector< unsigned int >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< unsigned int > **)&_swig_go_0; + + result = ((std::vector< unsigned int > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_UintVector_reserve_aig_29567bba180e4e84(std::vector< unsigned int > *_swig_go_0, long long _swig_go_1) { + std::vector< unsigned int > *arg1 = (std::vector< unsigned int > *) 0 ; + std::vector< unsigned int >::size_type arg2 ; + + arg1 = *(std::vector< unsigned int > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_UintVector_isEmpty_aig_29567bba180e4e84(std::vector< unsigned int > *_swig_go_0) { + std::vector< unsigned int > *arg1 = (std::vector< unsigned int > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< unsigned int > **)&_swig_go_0; + + result = (bool)((std::vector< unsigned int > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_UintVector_clear_aig_29567bba180e4e84(std::vector< unsigned int > *_swig_go_0) { + std::vector< unsigned int > *arg1 = (std::vector< unsigned int > *) 0 ; + + arg1 = *(std::vector< unsigned int > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_UintVector_add_aig_29567bba180e4e84(std::vector< unsigned int > *_swig_go_0, intgo _swig_go_1) { + std::vector< unsigned int > *arg1 = (std::vector< unsigned int > *) 0 ; + std::vector< unsigned int >::value_type *arg2 = 0 ; + + arg1 = *(std::vector< unsigned int > **)&_swig_go_0; + arg2 = (std::vector< unsigned int >::value_type *)&_swig_go_1; + + (arg1)->push_back((std::vector< unsigned int >::value_type const &)*arg2); + +} + + +intgo _wrap_UintVector_get_aig_29567bba180e4e84(std::vector< unsigned int > *_swig_go_0, intgo _swig_go_1) { + std::vector< unsigned int > *arg1 = (std::vector< unsigned int > *) 0 ; + int arg2 ; + std::vector< unsigned int >::value_type *result = 0 ; + intgo _swig_go_result; + + arg1 = *(std::vector< unsigned int > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< unsigned int >::value_type *) &std_vector_Sl_unsigned_SS_int_Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + _swig_go_result = (unsigned int)*result; + return _swig_go_result; +} + + +void _wrap_UintVector_set_aig_29567bba180e4e84(std::vector< unsigned int > *_swig_go_0, intgo _swig_go_1, intgo _swig_go_2) { + std::vector< unsigned int > *arg1 = (std::vector< unsigned int > *) 0 ; + int arg2 ; + std::vector< unsigned int >::value_type *arg3 = 0 ; + + arg1 = *(std::vector< unsigned int > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + arg3 = (std::vector< unsigned int >::value_type *)&_swig_go_2; + + try { + std_vector_Sl_unsigned_SS_int_Sg__set(arg1,arg2,(unsigned int const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_UintVector_aig_29567bba180e4e84(std::vector< unsigned int > *_swig_go_0) { + std::vector< unsigned int > *arg1 = (std::vector< unsigned int > *) 0 ; + + arg1 = *(std::vector< unsigned int > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiAnimation * > *_wrap_new_aiAnimationVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiAnimation * > *result = 0 ; + std::vector< aiAnimation * > *_swig_go_result; + + + result = (std::vector< aiAnimation * > *)new std::vector< aiAnimation * >(); + *(std::vector< aiAnimation * > **)&_swig_go_result = (std::vector< aiAnimation * > *)result; + return _swig_go_result; +} + + +std::vector< aiAnimation * > *_wrap_new_aiAnimationVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiAnimation * >::size_type arg1 ; + std::vector< aiAnimation * > *result = 0 ; + std::vector< aiAnimation * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiAnimation * > *)new std::vector< aiAnimation * >(arg1); + *(std::vector< aiAnimation * > **)&_swig_go_result = (std::vector< aiAnimation * > *)result; + return _swig_go_result; +} + + +std::vector< aiAnimation * > *_wrap_new_aiAnimationVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiAnimation * > *_swig_go_0) { + std::vector< aiAnimation * > *arg1 = 0 ; + std::vector< aiAnimation * > *result = 0 ; + std::vector< aiAnimation * > *_swig_go_result; + + arg1 = *(std::vector< aiAnimation * > **)&_swig_go_0; + + result = (std::vector< aiAnimation * > *)new std::vector< aiAnimation * >((std::vector< aiAnimation * > const &)*arg1); + *(std::vector< aiAnimation * > **)&_swig_go_result = (std::vector< aiAnimation * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiAnimationVector_size_aig_29567bba180e4e84(std::vector< aiAnimation * > *_swig_go_0) { + std::vector< aiAnimation * > *arg1 = (std::vector< aiAnimation * > *) 0 ; + std::vector< aiAnimation * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiAnimation * > **)&_swig_go_0; + + result = ((std::vector< aiAnimation * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiAnimationVector_capacity_aig_29567bba180e4e84(std::vector< aiAnimation * > *_swig_go_0) { + std::vector< aiAnimation * > *arg1 = (std::vector< aiAnimation * > *) 0 ; + std::vector< aiAnimation * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiAnimation * > **)&_swig_go_0; + + result = ((std::vector< aiAnimation * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiAnimationVector_reserve_aig_29567bba180e4e84(std::vector< aiAnimation * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiAnimation * > *arg1 = (std::vector< aiAnimation * > *) 0 ; + std::vector< aiAnimation * >::size_type arg2 ; + + arg1 = *(std::vector< aiAnimation * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiAnimationVector_isEmpty_aig_29567bba180e4e84(std::vector< aiAnimation * > *_swig_go_0) { + std::vector< aiAnimation * > *arg1 = (std::vector< aiAnimation * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiAnimation * > **)&_swig_go_0; + + result = (bool)((std::vector< aiAnimation * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiAnimationVector_clear_aig_29567bba180e4e84(std::vector< aiAnimation * > *_swig_go_0) { + std::vector< aiAnimation * > *arg1 = (std::vector< aiAnimation * > *) 0 ; + + arg1 = *(std::vector< aiAnimation * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiAnimationVector_add_aig_29567bba180e4e84(std::vector< aiAnimation * > *_swig_go_0, aiAnimation **_swig_go_1) { + std::vector< aiAnimation * > *arg1 = (std::vector< aiAnimation * > *) 0 ; + std::vector< aiAnimation * >::value_type *arg2 = 0 ; + std::vector< aiAnimation * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiAnimation * > **)&_swig_go_0; + + temp2 = *(std::vector< aiAnimation * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiAnimation * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiAnimation * >::value_type const &)*arg2); + +} + + +aiAnimation **_wrap_aiAnimationVector_get_aig_29567bba180e4e84(std::vector< aiAnimation * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiAnimation * > *arg1 = (std::vector< aiAnimation * > *) 0 ; + int arg2 ; + std::vector< aiAnimation * >::value_type *result = 0 ; + aiAnimation **_swig_go_result; + + arg1 = *(std::vector< aiAnimation * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiAnimation * >::value_type *) &std_vector_Sl_aiAnimation_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiAnimation * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiAnimationVector_set_aig_29567bba180e4e84(std::vector< aiAnimation * > *_swig_go_0, intgo _swig_go_1, aiAnimation **_swig_go_2) { + std::vector< aiAnimation * > *arg1 = (std::vector< aiAnimation * > *) 0 ; + int arg2 ; + std::vector< aiAnimation * >::value_type *arg3 = 0 ; + std::vector< aiAnimation * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiAnimation * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiAnimation * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiAnimation * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiAnimation_Sm__Sg__set(arg1,arg2,(aiAnimation *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiAnimationVector_aig_29567bba180e4e84(std::vector< aiAnimation * > *_swig_go_0) { + std::vector< aiAnimation * > *arg1 = (std::vector< aiAnimation * > *) 0 ; + + arg1 = *(std::vector< aiAnimation * > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiAnimMesh * > *_wrap_new_aiAnimMeshVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiAnimMesh * > *result = 0 ; + std::vector< aiAnimMesh * > *_swig_go_result; + + + result = (std::vector< aiAnimMesh * > *)new std::vector< aiAnimMesh * >(); + *(std::vector< aiAnimMesh * > **)&_swig_go_result = (std::vector< aiAnimMesh * > *)result; + return _swig_go_result; +} + + +std::vector< aiAnimMesh * > *_wrap_new_aiAnimMeshVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiAnimMesh * >::size_type arg1 ; + std::vector< aiAnimMesh * > *result = 0 ; + std::vector< aiAnimMesh * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiAnimMesh * > *)new std::vector< aiAnimMesh * >(arg1); + *(std::vector< aiAnimMesh * > **)&_swig_go_result = (std::vector< aiAnimMesh * > *)result; + return _swig_go_result; +} + + +std::vector< aiAnimMesh * > *_wrap_new_aiAnimMeshVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiAnimMesh * > *_swig_go_0) { + std::vector< aiAnimMesh * > *arg1 = 0 ; + std::vector< aiAnimMesh * > *result = 0 ; + std::vector< aiAnimMesh * > *_swig_go_result; + + arg1 = *(std::vector< aiAnimMesh * > **)&_swig_go_0; + + result = (std::vector< aiAnimMesh * > *)new std::vector< aiAnimMesh * >((std::vector< aiAnimMesh * > const &)*arg1); + *(std::vector< aiAnimMesh * > **)&_swig_go_result = (std::vector< aiAnimMesh * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiAnimMeshVector_size_aig_29567bba180e4e84(std::vector< aiAnimMesh * > *_swig_go_0) { + std::vector< aiAnimMesh * > *arg1 = (std::vector< aiAnimMesh * > *) 0 ; + std::vector< aiAnimMesh * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiAnimMesh * > **)&_swig_go_0; + + result = ((std::vector< aiAnimMesh * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiAnimMeshVector_capacity_aig_29567bba180e4e84(std::vector< aiAnimMesh * > *_swig_go_0) { + std::vector< aiAnimMesh * > *arg1 = (std::vector< aiAnimMesh * > *) 0 ; + std::vector< aiAnimMesh * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiAnimMesh * > **)&_swig_go_0; + + result = ((std::vector< aiAnimMesh * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiAnimMeshVector_reserve_aig_29567bba180e4e84(std::vector< aiAnimMesh * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiAnimMesh * > *arg1 = (std::vector< aiAnimMesh * > *) 0 ; + std::vector< aiAnimMesh * >::size_type arg2 ; + + arg1 = *(std::vector< aiAnimMesh * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiAnimMeshVector_isEmpty_aig_29567bba180e4e84(std::vector< aiAnimMesh * > *_swig_go_0) { + std::vector< aiAnimMesh * > *arg1 = (std::vector< aiAnimMesh * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiAnimMesh * > **)&_swig_go_0; + + result = (bool)((std::vector< aiAnimMesh * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiAnimMeshVector_clear_aig_29567bba180e4e84(std::vector< aiAnimMesh * > *_swig_go_0) { + std::vector< aiAnimMesh * > *arg1 = (std::vector< aiAnimMesh * > *) 0 ; + + arg1 = *(std::vector< aiAnimMesh * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiAnimMeshVector_add_aig_29567bba180e4e84(std::vector< aiAnimMesh * > *_swig_go_0, aiAnimMesh **_swig_go_1) { + std::vector< aiAnimMesh * > *arg1 = (std::vector< aiAnimMesh * > *) 0 ; + std::vector< aiAnimMesh * >::value_type *arg2 = 0 ; + std::vector< aiAnimMesh * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiAnimMesh * > **)&_swig_go_0; + + temp2 = *(std::vector< aiAnimMesh * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiAnimMesh * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiAnimMesh * >::value_type const &)*arg2); + +} + + +aiAnimMesh **_wrap_aiAnimMeshVector_get_aig_29567bba180e4e84(std::vector< aiAnimMesh * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiAnimMesh * > *arg1 = (std::vector< aiAnimMesh * > *) 0 ; + int arg2 ; + std::vector< aiAnimMesh * >::value_type *result = 0 ; + aiAnimMesh **_swig_go_result; + + arg1 = *(std::vector< aiAnimMesh * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiAnimMesh * >::value_type *) &std_vector_Sl_aiAnimMesh_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiAnimMesh * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiAnimMeshVector_set_aig_29567bba180e4e84(std::vector< aiAnimMesh * > *_swig_go_0, intgo _swig_go_1, aiAnimMesh **_swig_go_2) { + std::vector< aiAnimMesh * > *arg1 = (std::vector< aiAnimMesh * > *) 0 ; + int arg2 ; + std::vector< aiAnimMesh * >::value_type *arg3 = 0 ; + std::vector< aiAnimMesh * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiAnimMesh * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiAnimMesh * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiAnimMesh * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiAnimMesh_Sm__Sg__set(arg1,arg2,(aiAnimMesh *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiAnimMeshVector_aig_29567bba180e4e84(std::vector< aiAnimMesh * > *_swig_go_0) { + std::vector< aiAnimMesh * > *arg1 = (std::vector< aiAnimMesh * > *) 0 ; + + arg1 = *(std::vector< aiAnimMesh * > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiBone * > *_wrap_new_aiBonesVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiBone * > *result = 0 ; + std::vector< aiBone * > *_swig_go_result; + + + result = (std::vector< aiBone * > *)new std::vector< aiBone * >(); + *(std::vector< aiBone * > **)&_swig_go_result = (std::vector< aiBone * > *)result; + return _swig_go_result; +} + + +std::vector< aiBone * > *_wrap_new_aiBonesVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiBone * >::size_type arg1 ; + std::vector< aiBone * > *result = 0 ; + std::vector< aiBone * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiBone * > *)new std::vector< aiBone * >(arg1); + *(std::vector< aiBone * > **)&_swig_go_result = (std::vector< aiBone * > *)result; + return _swig_go_result; +} + + +std::vector< aiBone * > *_wrap_new_aiBonesVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiBone * > *_swig_go_0) { + std::vector< aiBone * > *arg1 = 0 ; + std::vector< aiBone * > *result = 0 ; + std::vector< aiBone * > *_swig_go_result; + + arg1 = *(std::vector< aiBone * > **)&_swig_go_0; + + result = (std::vector< aiBone * > *)new std::vector< aiBone * >((std::vector< aiBone * > const &)*arg1); + *(std::vector< aiBone * > **)&_swig_go_result = (std::vector< aiBone * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiBonesVector_size_aig_29567bba180e4e84(std::vector< aiBone * > *_swig_go_0) { + std::vector< aiBone * > *arg1 = (std::vector< aiBone * > *) 0 ; + std::vector< aiBone * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiBone * > **)&_swig_go_0; + + result = ((std::vector< aiBone * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiBonesVector_capacity_aig_29567bba180e4e84(std::vector< aiBone * > *_swig_go_0) { + std::vector< aiBone * > *arg1 = (std::vector< aiBone * > *) 0 ; + std::vector< aiBone * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiBone * > **)&_swig_go_0; + + result = ((std::vector< aiBone * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiBonesVector_reserve_aig_29567bba180e4e84(std::vector< aiBone * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiBone * > *arg1 = (std::vector< aiBone * > *) 0 ; + std::vector< aiBone * >::size_type arg2 ; + + arg1 = *(std::vector< aiBone * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiBonesVector_isEmpty_aig_29567bba180e4e84(std::vector< aiBone * > *_swig_go_0) { + std::vector< aiBone * > *arg1 = (std::vector< aiBone * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiBone * > **)&_swig_go_0; + + result = (bool)((std::vector< aiBone * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiBonesVector_clear_aig_29567bba180e4e84(std::vector< aiBone * > *_swig_go_0) { + std::vector< aiBone * > *arg1 = (std::vector< aiBone * > *) 0 ; + + arg1 = *(std::vector< aiBone * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiBonesVector_add_aig_29567bba180e4e84(std::vector< aiBone * > *_swig_go_0, aiBone **_swig_go_1) { + std::vector< aiBone * > *arg1 = (std::vector< aiBone * > *) 0 ; + std::vector< aiBone * >::value_type *arg2 = 0 ; + std::vector< aiBone * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiBone * > **)&_swig_go_0; + + temp2 = *(std::vector< aiBone * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiBone * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiBone * >::value_type const &)*arg2); + +} + + +aiBone **_wrap_aiBonesVector_get_aig_29567bba180e4e84(std::vector< aiBone * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiBone * > *arg1 = (std::vector< aiBone * > *) 0 ; + int arg2 ; + std::vector< aiBone * >::value_type *result = 0 ; + aiBone **_swig_go_result; + + arg1 = *(std::vector< aiBone * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiBone * >::value_type *) &std_vector_Sl_aiBone_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiBone * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiBonesVector_set_aig_29567bba180e4e84(std::vector< aiBone * > *_swig_go_0, intgo _swig_go_1, aiBone **_swig_go_2) { + std::vector< aiBone * > *arg1 = (std::vector< aiBone * > *) 0 ; + int arg2 ; + std::vector< aiBone * >::value_type *arg3 = 0 ; + std::vector< aiBone * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiBone * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiBone * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiBone * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiBone_Sm__Sg__set(arg1,arg2,(aiBone *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiBonesVector_aig_29567bba180e4e84(std::vector< aiBone * > *_swig_go_0) { + std::vector< aiBone * > *arg1 = (std::vector< aiBone * > *) 0 ; + + arg1 = *(std::vector< aiBone * > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiCamera * > *_wrap_new_aiCameraVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiCamera * > *result = 0 ; + std::vector< aiCamera * > *_swig_go_result; + + + result = (std::vector< aiCamera * > *)new std::vector< aiCamera * >(); + *(std::vector< aiCamera * > **)&_swig_go_result = (std::vector< aiCamera * > *)result; + return _swig_go_result; +} + + +std::vector< aiCamera * > *_wrap_new_aiCameraVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiCamera * >::size_type arg1 ; + std::vector< aiCamera * > *result = 0 ; + std::vector< aiCamera * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiCamera * > *)new std::vector< aiCamera * >(arg1); + *(std::vector< aiCamera * > **)&_swig_go_result = (std::vector< aiCamera * > *)result; + return _swig_go_result; +} + + +std::vector< aiCamera * > *_wrap_new_aiCameraVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiCamera * > *_swig_go_0) { + std::vector< aiCamera * > *arg1 = 0 ; + std::vector< aiCamera * > *result = 0 ; + std::vector< aiCamera * > *_swig_go_result; + + arg1 = *(std::vector< aiCamera * > **)&_swig_go_0; + + result = (std::vector< aiCamera * > *)new std::vector< aiCamera * >((std::vector< aiCamera * > const &)*arg1); + *(std::vector< aiCamera * > **)&_swig_go_result = (std::vector< aiCamera * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiCameraVector_size_aig_29567bba180e4e84(std::vector< aiCamera * > *_swig_go_0) { + std::vector< aiCamera * > *arg1 = (std::vector< aiCamera * > *) 0 ; + std::vector< aiCamera * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiCamera * > **)&_swig_go_0; + + result = ((std::vector< aiCamera * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiCameraVector_capacity_aig_29567bba180e4e84(std::vector< aiCamera * > *_swig_go_0) { + std::vector< aiCamera * > *arg1 = (std::vector< aiCamera * > *) 0 ; + std::vector< aiCamera * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiCamera * > **)&_swig_go_0; + + result = ((std::vector< aiCamera * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiCameraVector_reserve_aig_29567bba180e4e84(std::vector< aiCamera * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiCamera * > *arg1 = (std::vector< aiCamera * > *) 0 ; + std::vector< aiCamera * >::size_type arg2 ; + + arg1 = *(std::vector< aiCamera * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiCameraVector_isEmpty_aig_29567bba180e4e84(std::vector< aiCamera * > *_swig_go_0) { + std::vector< aiCamera * > *arg1 = (std::vector< aiCamera * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiCamera * > **)&_swig_go_0; + + result = (bool)((std::vector< aiCamera * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiCameraVector_clear_aig_29567bba180e4e84(std::vector< aiCamera * > *_swig_go_0) { + std::vector< aiCamera * > *arg1 = (std::vector< aiCamera * > *) 0 ; + + arg1 = *(std::vector< aiCamera * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiCameraVector_add_aig_29567bba180e4e84(std::vector< aiCamera * > *_swig_go_0, aiCamera **_swig_go_1) { + std::vector< aiCamera * > *arg1 = (std::vector< aiCamera * > *) 0 ; + std::vector< aiCamera * >::value_type *arg2 = 0 ; + std::vector< aiCamera * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiCamera * > **)&_swig_go_0; + + temp2 = *(std::vector< aiCamera * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiCamera * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiCamera * >::value_type const &)*arg2); + +} + + +aiCamera **_wrap_aiCameraVector_get_aig_29567bba180e4e84(std::vector< aiCamera * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiCamera * > *arg1 = (std::vector< aiCamera * > *) 0 ; + int arg2 ; + std::vector< aiCamera * >::value_type *result = 0 ; + aiCamera **_swig_go_result; + + arg1 = *(std::vector< aiCamera * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiCamera * >::value_type *) &std_vector_Sl_aiCamera_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiCamera * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiCameraVector_set_aig_29567bba180e4e84(std::vector< aiCamera * > *_swig_go_0, intgo _swig_go_1, aiCamera **_swig_go_2) { + std::vector< aiCamera * > *arg1 = (std::vector< aiCamera * > *) 0 ; + int arg2 ; + std::vector< aiCamera * >::value_type *arg3 = 0 ; + std::vector< aiCamera * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiCamera * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiCamera * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiCamera * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiCamera_Sm__Sg__set(arg1,arg2,(aiCamera *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiCameraVector_aig_29567bba180e4e84(std::vector< aiCamera * > *_swig_go_0) { + std::vector< aiCamera * > *arg1 = (std::vector< aiCamera * > *) 0 ; + + arg1 = *(std::vector< aiCamera * > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiColor4D * > *_wrap_new_aiColor4DVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiColor4D * > *result = 0 ; + std::vector< aiColor4D * > *_swig_go_result; + + + result = (std::vector< aiColor4D * > *)new std::vector< aiColor4D * >(); + *(std::vector< aiColor4D * > **)&_swig_go_result = (std::vector< aiColor4D * > *)result; + return _swig_go_result; +} + + +std::vector< aiColor4D * > *_wrap_new_aiColor4DVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiColor4D * >::size_type arg1 ; + std::vector< aiColor4D * > *result = 0 ; + std::vector< aiColor4D * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiColor4D * > *)new std::vector< aiColor4D * >(arg1); + *(std::vector< aiColor4D * > **)&_swig_go_result = (std::vector< aiColor4D * > *)result; + return _swig_go_result; +} + + +std::vector< aiColor4D * > *_wrap_new_aiColor4DVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiColor4D * > *_swig_go_0) { + std::vector< aiColor4D * > *arg1 = 0 ; + std::vector< aiColor4D * > *result = 0 ; + std::vector< aiColor4D * > *_swig_go_result; + + arg1 = *(std::vector< aiColor4D * > **)&_swig_go_0; + + result = (std::vector< aiColor4D * > *)new std::vector< aiColor4D * >((std::vector< aiColor4D * > const &)*arg1); + *(std::vector< aiColor4D * > **)&_swig_go_result = (std::vector< aiColor4D * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiColor4DVector_size_aig_29567bba180e4e84(std::vector< aiColor4D * > *_swig_go_0) { + std::vector< aiColor4D * > *arg1 = (std::vector< aiColor4D * > *) 0 ; + std::vector< aiColor4D * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiColor4D * > **)&_swig_go_0; + + result = ((std::vector< aiColor4D * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiColor4DVector_capacity_aig_29567bba180e4e84(std::vector< aiColor4D * > *_swig_go_0) { + std::vector< aiColor4D * > *arg1 = (std::vector< aiColor4D * > *) 0 ; + std::vector< aiColor4D * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiColor4D * > **)&_swig_go_0; + + result = ((std::vector< aiColor4D * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiColor4DVector_reserve_aig_29567bba180e4e84(std::vector< aiColor4D * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiColor4D * > *arg1 = (std::vector< aiColor4D * > *) 0 ; + std::vector< aiColor4D * >::size_type arg2 ; + + arg1 = *(std::vector< aiColor4D * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiColor4DVector_isEmpty_aig_29567bba180e4e84(std::vector< aiColor4D * > *_swig_go_0) { + std::vector< aiColor4D * > *arg1 = (std::vector< aiColor4D * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiColor4D * > **)&_swig_go_0; + + result = (bool)((std::vector< aiColor4D * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiColor4DVector_clear_aig_29567bba180e4e84(std::vector< aiColor4D * > *_swig_go_0) { + std::vector< aiColor4D * > *arg1 = (std::vector< aiColor4D * > *) 0 ; + + arg1 = *(std::vector< aiColor4D * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiColor4DVector_add_aig_29567bba180e4e84(std::vector< aiColor4D * > *_swig_go_0, aiColor4D **_swig_go_1) { + std::vector< aiColor4D * > *arg1 = (std::vector< aiColor4D * > *) 0 ; + std::vector< aiColor4D * >::value_type *arg2 = 0 ; + std::vector< aiColor4D * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiColor4D * > **)&_swig_go_0; + + temp2 = *(std::vector< aiColor4D * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiColor4D * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiColor4D * >::value_type const &)*arg2); + +} + + +aiColor4D **_wrap_aiColor4DVector_get_aig_29567bba180e4e84(std::vector< aiColor4D * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiColor4D * > *arg1 = (std::vector< aiColor4D * > *) 0 ; + int arg2 ; + std::vector< aiColor4D * >::value_type *result = 0 ; + aiColor4D **_swig_go_result; + + arg1 = *(std::vector< aiColor4D * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiColor4D * >::value_type *) &std_vector_Sl_aiColor4D_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiColor4D * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiColor4DVector_set_aig_29567bba180e4e84(std::vector< aiColor4D * > *_swig_go_0, intgo _swig_go_1, aiColor4D **_swig_go_2) { + std::vector< aiColor4D * > *arg1 = (std::vector< aiColor4D * > *) 0 ; + int arg2 ; + std::vector< aiColor4D * >::value_type *arg3 = 0 ; + std::vector< aiColor4D * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiColor4D * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiColor4D * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiColor4D * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiColor4D_Sm__Sg__set(arg1,arg2,(aiColor4D *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiColor4DVector_aig_29567bba180e4e84(std::vector< aiColor4D * > *_swig_go_0) { + std::vector< aiColor4D * > *arg1 = (std::vector< aiColor4D * > *) 0 ; + + arg1 = *(std::vector< aiColor4D * > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< std::vector< aiColor4D * > > *_wrap_new_aiColor4DVectorVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< std::vector< aiColor4D * > > *result = 0 ; + std::vector< std::vector< aiColor4D * > > *_swig_go_result; + + + result = (std::vector< std::vector< aiColor4D * > > *)new std::vector< std::vector< aiColor4D * > >(); + *(std::vector< std::vector< aiColor4D * > > **)&_swig_go_result = (std::vector< std::vector< aiColor4D * > > *)result; + return _swig_go_result; +} + + +std::vector< std::vector< aiColor4D * > > *_wrap_new_aiColor4DVectorVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< std::vector< aiColor4D * > >::size_type arg1 ; + std::vector< std::vector< aiColor4D * > > *result = 0 ; + std::vector< std::vector< aiColor4D * > > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< std::vector< aiColor4D * > > *)new std::vector< std::vector< aiColor4D * > >(arg1); + *(std::vector< std::vector< aiColor4D * > > **)&_swig_go_result = (std::vector< std::vector< aiColor4D * > > *)result; + return _swig_go_result; +} + + +std::vector< std::vector< aiColor4D * > > *_wrap_new_aiColor4DVectorVector__SWIG_2_aig_29567bba180e4e84(std::vector< std::vector< aiColor4D * > > *_swig_go_0) { + std::vector< std::vector< aiColor4D * > > *arg1 = 0 ; + std::vector< std::vector< aiColor4D * > > *result = 0 ; + std::vector< std::vector< aiColor4D * > > *_swig_go_result; + + arg1 = *(std::vector< std::vector< aiColor4D * > > **)&_swig_go_0; + + result = (std::vector< std::vector< aiColor4D * > > *)new std::vector< std::vector< aiColor4D * > >((std::vector< std::vector< aiColor4D * > > const &)*arg1); + *(std::vector< std::vector< aiColor4D * > > **)&_swig_go_result = (std::vector< std::vector< aiColor4D * > > *)result; + return _swig_go_result; +} + + +long long _wrap_aiColor4DVectorVector_size_aig_29567bba180e4e84(std::vector< std::vector< aiColor4D * > > *_swig_go_0) { + std::vector< std::vector< aiColor4D * > > *arg1 = (std::vector< std::vector< aiColor4D * > > *) 0 ; + std::vector< std::vector< aiColor4D * > >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< std::vector< aiColor4D * > > **)&_swig_go_0; + + result = ((std::vector< std::vector< aiColor4D * > > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiColor4DVectorVector_capacity_aig_29567bba180e4e84(std::vector< std::vector< aiColor4D * > > *_swig_go_0) { + std::vector< std::vector< aiColor4D * > > *arg1 = (std::vector< std::vector< aiColor4D * > > *) 0 ; + std::vector< std::vector< aiColor4D * > >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< std::vector< aiColor4D * > > **)&_swig_go_0; + + result = ((std::vector< std::vector< aiColor4D * > > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiColor4DVectorVector_reserve_aig_29567bba180e4e84(std::vector< std::vector< aiColor4D * > > *_swig_go_0, long long _swig_go_1) { + std::vector< std::vector< aiColor4D * > > *arg1 = (std::vector< std::vector< aiColor4D * > > *) 0 ; + std::vector< std::vector< aiColor4D * > >::size_type arg2 ; + + arg1 = *(std::vector< std::vector< aiColor4D * > > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiColor4DVectorVector_isEmpty_aig_29567bba180e4e84(std::vector< std::vector< aiColor4D * > > *_swig_go_0) { + std::vector< std::vector< aiColor4D * > > *arg1 = (std::vector< std::vector< aiColor4D * > > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< std::vector< aiColor4D * > > **)&_swig_go_0; + + result = (bool)((std::vector< std::vector< aiColor4D * > > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiColor4DVectorVector_clear_aig_29567bba180e4e84(std::vector< std::vector< aiColor4D * > > *_swig_go_0) { + std::vector< std::vector< aiColor4D * > > *arg1 = (std::vector< std::vector< aiColor4D * > > *) 0 ; + + arg1 = *(std::vector< std::vector< aiColor4D * > > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiColor4DVectorVector_add_aig_29567bba180e4e84(std::vector< std::vector< aiColor4D * > > *_swig_go_0, std::vector< aiColor4D * > *_swig_go_1) { + std::vector< std::vector< aiColor4D * > > *arg1 = (std::vector< std::vector< aiColor4D * > > *) 0 ; + std::vector< std::vector< aiColor4D * > >::value_type *arg2 = 0 ; + + arg1 = *(std::vector< std::vector< aiColor4D * > > **)&_swig_go_0; + arg2 = *(std::vector< std::vector< aiColor4D * > >::value_type **)&_swig_go_1; + + (arg1)->push_back((std::vector< std::vector< aiColor4D * > >::value_type const &)*arg2); + +} + + +std::vector< aiColor4D * > *_wrap_aiColor4DVectorVector_get_aig_29567bba180e4e84(std::vector< std::vector< aiColor4D * > > *_swig_go_0, intgo _swig_go_1) { + std::vector< std::vector< aiColor4D * > > *arg1 = (std::vector< std::vector< aiColor4D * > > *) 0 ; + int arg2 ; + std::vector< std::vector< aiColor4D * > >::value_type *result = 0 ; + std::vector< aiColor4D * > *_swig_go_result; + + arg1 = *(std::vector< std::vector< aiColor4D * > > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< std::vector< aiColor4D * > >::value_type *) &std_vector_Sl_std_vector_Sl_aiColor4D_Sm__Sg__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< std::vector< aiColor4D * > >::value_type **)&_swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiColor4DVectorVector_set_aig_29567bba180e4e84(std::vector< std::vector< aiColor4D * > > *_swig_go_0, intgo _swig_go_1, std::vector< aiColor4D * > *_swig_go_2) { + std::vector< std::vector< aiColor4D * > > *arg1 = (std::vector< std::vector< aiColor4D * > > *) 0 ; + int arg2 ; + std::vector< std::vector< aiColor4D * > >::value_type *arg3 = 0 ; + + arg1 = *(std::vector< std::vector< aiColor4D * > > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + arg3 = *(std::vector< std::vector< aiColor4D * > >::value_type **)&_swig_go_2; + + try { + std_vector_Sl_std_vector_Sl_aiColor4D_Sm__Sg__Sg__set(arg1,arg2,(std::vector< aiColor4D * > const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiColor4DVectorVector_aig_29567bba180e4e84(std::vector< std::vector< aiColor4D * > > *_swig_go_0) { + std::vector< std::vector< aiColor4D * > > *arg1 = (std::vector< std::vector< aiColor4D * > > *) 0 ; + + arg1 = *(std::vector< std::vector< aiColor4D * > > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiFace * > *_wrap_new_aiFaceVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiFace * > *result = 0 ; + std::vector< aiFace * > *_swig_go_result; + + + result = (std::vector< aiFace * > *)new std::vector< aiFace * >(); + *(std::vector< aiFace * > **)&_swig_go_result = (std::vector< aiFace * > *)result; + return _swig_go_result; +} + + +std::vector< aiFace * > *_wrap_new_aiFaceVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiFace * >::size_type arg1 ; + std::vector< aiFace * > *result = 0 ; + std::vector< aiFace * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiFace * > *)new std::vector< aiFace * >(arg1); + *(std::vector< aiFace * > **)&_swig_go_result = (std::vector< aiFace * > *)result; + return _swig_go_result; +} + + +std::vector< aiFace * > *_wrap_new_aiFaceVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiFace * > *_swig_go_0) { + std::vector< aiFace * > *arg1 = 0 ; + std::vector< aiFace * > *result = 0 ; + std::vector< aiFace * > *_swig_go_result; + + arg1 = *(std::vector< aiFace * > **)&_swig_go_0; + + result = (std::vector< aiFace * > *)new std::vector< aiFace * >((std::vector< aiFace * > const &)*arg1); + *(std::vector< aiFace * > **)&_swig_go_result = (std::vector< aiFace * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiFaceVector_size_aig_29567bba180e4e84(std::vector< aiFace * > *_swig_go_0) { + std::vector< aiFace * > *arg1 = (std::vector< aiFace * > *) 0 ; + std::vector< aiFace * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiFace * > **)&_swig_go_0; + + result = ((std::vector< aiFace * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiFaceVector_capacity_aig_29567bba180e4e84(std::vector< aiFace * > *_swig_go_0) { + std::vector< aiFace * > *arg1 = (std::vector< aiFace * > *) 0 ; + std::vector< aiFace * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiFace * > **)&_swig_go_0; + + result = ((std::vector< aiFace * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiFaceVector_reserve_aig_29567bba180e4e84(std::vector< aiFace * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiFace * > *arg1 = (std::vector< aiFace * > *) 0 ; + std::vector< aiFace * >::size_type arg2 ; + + arg1 = *(std::vector< aiFace * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiFaceVector_isEmpty_aig_29567bba180e4e84(std::vector< aiFace * > *_swig_go_0) { + std::vector< aiFace * > *arg1 = (std::vector< aiFace * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiFace * > **)&_swig_go_0; + + result = (bool)((std::vector< aiFace * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiFaceVector_clear_aig_29567bba180e4e84(std::vector< aiFace * > *_swig_go_0) { + std::vector< aiFace * > *arg1 = (std::vector< aiFace * > *) 0 ; + + arg1 = *(std::vector< aiFace * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiFaceVector_add_aig_29567bba180e4e84(std::vector< aiFace * > *_swig_go_0, aiFace **_swig_go_1) { + std::vector< aiFace * > *arg1 = (std::vector< aiFace * > *) 0 ; + std::vector< aiFace * >::value_type *arg2 = 0 ; + std::vector< aiFace * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiFace * > **)&_swig_go_0; + + temp2 = *(std::vector< aiFace * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiFace * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiFace * >::value_type const &)*arg2); + +} + + +aiFace **_wrap_aiFaceVector_get_aig_29567bba180e4e84(std::vector< aiFace * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiFace * > *arg1 = (std::vector< aiFace * > *) 0 ; + int arg2 ; + std::vector< aiFace * >::value_type *result = 0 ; + aiFace **_swig_go_result; + + arg1 = *(std::vector< aiFace * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiFace * >::value_type *) &std_vector_Sl_aiFace_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiFace * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiFaceVector_set_aig_29567bba180e4e84(std::vector< aiFace * > *_swig_go_0, intgo _swig_go_1, aiFace **_swig_go_2) { + std::vector< aiFace * > *arg1 = (std::vector< aiFace * > *) 0 ; + int arg2 ; + std::vector< aiFace * >::value_type *arg3 = 0 ; + std::vector< aiFace * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiFace * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiFace * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiFace * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiFace_Sm__Sg__set(arg1,arg2,(aiFace *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiFaceVector_aig_29567bba180e4e84(std::vector< aiFace * > *_swig_go_0) { + std::vector< aiFace * > *arg1 = (std::vector< aiFace * > *) 0 ; + + arg1 = *(std::vector< aiFace * > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiLight * > *_wrap_new_aiLightVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiLight * > *result = 0 ; + std::vector< aiLight * > *_swig_go_result; + + + result = (std::vector< aiLight * > *)new std::vector< aiLight * >(); + *(std::vector< aiLight * > **)&_swig_go_result = (std::vector< aiLight * > *)result; + return _swig_go_result; +} + + +std::vector< aiLight * > *_wrap_new_aiLightVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiLight * >::size_type arg1 ; + std::vector< aiLight * > *result = 0 ; + std::vector< aiLight * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiLight * > *)new std::vector< aiLight * >(arg1); + *(std::vector< aiLight * > **)&_swig_go_result = (std::vector< aiLight * > *)result; + return _swig_go_result; +} + + +std::vector< aiLight * > *_wrap_new_aiLightVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiLight * > *_swig_go_0) { + std::vector< aiLight * > *arg1 = 0 ; + std::vector< aiLight * > *result = 0 ; + std::vector< aiLight * > *_swig_go_result; + + arg1 = *(std::vector< aiLight * > **)&_swig_go_0; + + result = (std::vector< aiLight * > *)new std::vector< aiLight * >((std::vector< aiLight * > const &)*arg1); + *(std::vector< aiLight * > **)&_swig_go_result = (std::vector< aiLight * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiLightVector_size_aig_29567bba180e4e84(std::vector< aiLight * > *_swig_go_0) { + std::vector< aiLight * > *arg1 = (std::vector< aiLight * > *) 0 ; + std::vector< aiLight * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiLight * > **)&_swig_go_0; + + result = ((std::vector< aiLight * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiLightVector_capacity_aig_29567bba180e4e84(std::vector< aiLight * > *_swig_go_0) { + std::vector< aiLight * > *arg1 = (std::vector< aiLight * > *) 0 ; + std::vector< aiLight * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiLight * > **)&_swig_go_0; + + result = ((std::vector< aiLight * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiLightVector_reserve_aig_29567bba180e4e84(std::vector< aiLight * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiLight * > *arg1 = (std::vector< aiLight * > *) 0 ; + std::vector< aiLight * >::size_type arg2 ; + + arg1 = *(std::vector< aiLight * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiLightVector_isEmpty_aig_29567bba180e4e84(std::vector< aiLight * > *_swig_go_0) { + std::vector< aiLight * > *arg1 = (std::vector< aiLight * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiLight * > **)&_swig_go_0; + + result = (bool)((std::vector< aiLight * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiLightVector_clear_aig_29567bba180e4e84(std::vector< aiLight * > *_swig_go_0) { + std::vector< aiLight * > *arg1 = (std::vector< aiLight * > *) 0 ; + + arg1 = *(std::vector< aiLight * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiLightVector_add_aig_29567bba180e4e84(std::vector< aiLight * > *_swig_go_0, aiLight **_swig_go_1) { + std::vector< aiLight * > *arg1 = (std::vector< aiLight * > *) 0 ; + std::vector< aiLight * >::value_type *arg2 = 0 ; + std::vector< aiLight * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiLight * > **)&_swig_go_0; + + temp2 = *(std::vector< aiLight * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiLight * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiLight * >::value_type const &)*arg2); + +} + + +aiLight **_wrap_aiLightVector_get_aig_29567bba180e4e84(std::vector< aiLight * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiLight * > *arg1 = (std::vector< aiLight * > *) 0 ; + int arg2 ; + std::vector< aiLight * >::value_type *result = 0 ; + aiLight **_swig_go_result; + + arg1 = *(std::vector< aiLight * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiLight * >::value_type *) &std_vector_Sl_aiLight_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiLight * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiLightVector_set_aig_29567bba180e4e84(std::vector< aiLight * > *_swig_go_0, intgo _swig_go_1, aiLight **_swig_go_2) { + std::vector< aiLight * > *arg1 = (std::vector< aiLight * > *) 0 ; + int arg2 ; + std::vector< aiLight * >::value_type *arg3 = 0 ; + std::vector< aiLight * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiLight * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiLight * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiLight * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiLight_Sm__Sg__set(arg1,arg2,(aiLight *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiLightVector_aig_29567bba180e4e84(std::vector< aiLight * > *_swig_go_0) { + std::vector< aiLight * > *arg1 = (std::vector< aiLight * > *) 0 ; + + arg1 = *(std::vector< aiLight * > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiMaterial * > *_wrap_new_aiMaterialVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiMaterial * > *result = 0 ; + std::vector< aiMaterial * > *_swig_go_result; + + + result = (std::vector< aiMaterial * > *)new std::vector< aiMaterial * >(); + *(std::vector< aiMaterial * > **)&_swig_go_result = (std::vector< aiMaterial * > *)result; + return _swig_go_result; +} + + +std::vector< aiMaterial * > *_wrap_new_aiMaterialVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiMaterial * >::size_type arg1 ; + std::vector< aiMaterial * > *result = 0 ; + std::vector< aiMaterial * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiMaterial * > *)new std::vector< aiMaterial * >(arg1); + *(std::vector< aiMaterial * > **)&_swig_go_result = (std::vector< aiMaterial * > *)result; + return _swig_go_result; +} + + +std::vector< aiMaterial * > *_wrap_new_aiMaterialVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiMaterial * > *_swig_go_0) { + std::vector< aiMaterial * > *arg1 = 0 ; + std::vector< aiMaterial * > *result = 0 ; + std::vector< aiMaterial * > *_swig_go_result; + + arg1 = *(std::vector< aiMaterial * > **)&_swig_go_0; + + result = (std::vector< aiMaterial * > *)new std::vector< aiMaterial * >((std::vector< aiMaterial * > const &)*arg1); + *(std::vector< aiMaterial * > **)&_swig_go_result = (std::vector< aiMaterial * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiMaterialVector_size_aig_29567bba180e4e84(std::vector< aiMaterial * > *_swig_go_0) { + std::vector< aiMaterial * > *arg1 = (std::vector< aiMaterial * > *) 0 ; + std::vector< aiMaterial * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiMaterial * > **)&_swig_go_0; + + result = ((std::vector< aiMaterial * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiMaterialVector_capacity_aig_29567bba180e4e84(std::vector< aiMaterial * > *_swig_go_0) { + std::vector< aiMaterial * > *arg1 = (std::vector< aiMaterial * > *) 0 ; + std::vector< aiMaterial * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiMaterial * > **)&_swig_go_0; + + result = ((std::vector< aiMaterial * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiMaterialVector_reserve_aig_29567bba180e4e84(std::vector< aiMaterial * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiMaterial * > *arg1 = (std::vector< aiMaterial * > *) 0 ; + std::vector< aiMaterial * >::size_type arg2 ; + + arg1 = *(std::vector< aiMaterial * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiMaterialVector_isEmpty_aig_29567bba180e4e84(std::vector< aiMaterial * > *_swig_go_0) { + std::vector< aiMaterial * > *arg1 = (std::vector< aiMaterial * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiMaterial * > **)&_swig_go_0; + + result = (bool)((std::vector< aiMaterial * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiMaterialVector_clear_aig_29567bba180e4e84(std::vector< aiMaterial * > *_swig_go_0) { + std::vector< aiMaterial * > *arg1 = (std::vector< aiMaterial * > *) 0 ; + + arg1 = *(std::vector< aiMaterial * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiMaterialVector_add_aig_29567bba180e4e84(std::vector< aiMaterial * > *_swig_go_0, aiMaterial **_swig_go_1) { + std::vector< aiMaterial * > *arg1 = (std::vector< aiMaterial * > *) 0 ; + std::vector< aiMaterial * >::value_type *arg2 = 0 ; + std::vector< aiMaterial * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiMaterial * > **)&_swig_go_0; + + temp2 = *(std::vector< aiMaterial * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiMaterial * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiMaterial * >::value_type const &)*arg2); + +} + + +aiMaterial **_wrap_aiMaterialVector_get_aig_29567bba180e4e84(std::vector< aiMaterial * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiMaterial * > *arg1 = (std::vector< aiMaterial * > *) 0 ; + int arg2 ; + std::vector< aiMaterial * >::value_type *result = 0 ; + aiMaterial **_swig_go_result; + + arg1 = *(std::vector< aiMaterial * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiMaterial * >::value_type *) &std_vector_Sl_aiMaterial_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiMaterial * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiMaterialVector_set_aig_29567bba180e4e84(std::vector< aiMaterial * > *_swig_go_0, intgo _swig_go_1, aiMaterial **_swig_go_2) { + std::vector< aiMaterial * > *arg1 = (std::vector< aiMaterial * > *) 0 ; + int arg2 ; + std::vector< aiMaterial * >::value_type *arg3 = 0 ; + std::vector< aiMaterial * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiMaterial * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiMaterial * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiMaterial * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiMaterial_Sm__Sg__set(arg1,arg2,(aiMaterial *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiMaterialVector_aig_29567bba180e4e84(std::vector< aiMaterial * > *_swig_go_0) { + std::vector< aiMaterial * > *arg1 = (std::vector< aiMaterial * > *) 0 ; + + arg1 = *(std::vector< aiMaterial * > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiMaterialProperty * > *_wrap_new_aiMaterialPropertyVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiMaterialProperty * > *result = 0 ; + std::vector< aiMaterialProperty * > *_swig_go_result; + + + result = (std::vector< aiMaterialProperty * > *)new std::vector< aiMaterialProperty * >(); + *(std::vector< aiMaterialProperty * > **)&_swig_go_result = (std::vector< aiMaterialProperty * > *)result; + return _swig_go_result; +} + + +std::vector< aiMaterialProperty * > *_wrap_new_aiMaterialPropertyVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiMaterialProperty * >::size_type arg1 ; + std::vector< aiMaterialProperty * > *result = 0 ; + std::vector< aiMaterialProperty * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiMaterialProperty * > *)new std::vector< aiMaterialProperty * >(arg1); + *(std::vector< aiMaterialProperty * > **)&_swig_go_result = (std::vector< aiMaterialProperty * > *)result; + return _swig_go_result; +} + + +std::vector< aiMaterialProperty * > *_wrap_new_aiMaterialPropertyVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiMaterialProperty * > *_swig_go_0) { + std::vector< aiMaterialProperty * > *arg1 = 0 ; + std::vector< aiMaterialProperty * > *result = 0 ; + std::vector< aiMaterialProperty * > *_swig_go_result; + + arg1 = *(std::vector< aiMaterialProperty * > **)&_swig_go_0; + + result = (std::vector< aiMaterialProperty * > *)new std::vector< aiMaterialProperty * >((std::vector< aiMaterialProperty * > const &)*arg1); + *(std::vector< aiMaterialProperty * > **)&_swig_go_result = (std::vector< aiMaterialProperty * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiMaterialPropertyVector_size_aig_29567bba180e4e84(std::vector< aiMaterialProperty * > *_swig_go_0) { + std::vector< aiMaterialProperty * > *arg1 = (std::vector< aiMaterialProperty * > *) 0 ; + std::vector< aiMaterialProperty * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiMaterialProperty * > **)&_swig_go_0; + + result = ((std::vector< aiMaterialProperty * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiMaterialPropertyVector_capacity_aig_29567bba180e4e84(std::vector< aiMaterialProperty * > *_swig_go_0) { + std::vector< aiMaterialProperty * > *arg1 = (std::vector< aiMaterialProperty * > *) 0 ; + std::vector< aiMaterialProperty * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiMaterialProperty * > **)&_swig_go_0; + + result = ((std::vector< aiMaterialProperty * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiMaterialPropertyVector_reserve_aig_29567bba180e4e84(std::vector< aiMaterialProperty * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiMaterialProperty * > *arg1 = (std::vector< aiMaterialProperty * > *) 0 ; + std::vector< aiMaterialProperty * >::size_type arg2 ; + + arg1 = *(std::vector< aiMaterialProperty * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiMaterialPropertyVector_isEmpty_aig_29567bba180e4e84(std::vector< aiMaterialProperty * > *_swig_go_0) { + std::vector< aiMaterialProperty * > *arg1 = (std::vector< aiMaterialProperty * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiMaterialProperty * > **)&_swig_go_0; + + result = (bool)((std::vector< aiMaterialProperty * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiMaterialPropertyVector_clear_aig_29567bba180e4e84(std::vector< aiMaterialProperty * > *_swig_go_0) { + std::vector< aiMaterialProperty * > *arg1 = (std::vector< aiMaterialProperty * > *) 0 ; + + arg1 = *(std::vector< aiMaterialProperty * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiMaterialPropertyVector_add_aig_29567bba180e4e84(std::vector< aiMaterialProperty * > *_swig_go_0, aiMaterialProperty **_swig_go_1) { + std::vector< aiMaterialProperty * > *arg1 = (std::vector< aiMaterialProperty * > *) 0 ; + std::vector< aiMaterialProperty * >::value_type *arg2 = 0 ; + std::vector< aiMaterialProperty * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiMaterialProperty * > **)&_swig_go_0; + + temp2 = *(std::vector< aiMaterialProperty * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiMaterialProperty * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiMaterialProperty * >::value_type const &)*arg2); + +} + + +aiMaterialProperty **_wrap_aiMaterialPropertyVector_get_aig_29567bba180e4e84(std::vector< aiMaterialProperty * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiMaterialProperty * > *arg1 = (std::vector< aiMaterialProperty * > *) 0 ; + int arg2 ; + std::vector< aiMaterialProperty * >::value_type *result = 0 ; + aiMaterialProperty **_swig_go_result; + + arg1 = *(std::vector< aiMaterialProperty * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiMaterialProperty * >::value_type *) &std_vector_Sl_aiMaterialProperty_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiMaterialProperty * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiMaterialPropertyVector_set_aig_29567bba180e4e84(std::vector< aiMaterialProperty * > *_swig_go_0, intgo _swig_go_1, aiMaterialProperty **_swig_go_2) { + std::vector< aiMaterialProperty * > *arg1 = (std::vector< aiMaterialProperty * > *) 0 ; + int arg2 ; + std::vector< aiMaterialProperty * >::value_type *arg3 = 0 ; + std::vector< aiMaterialProperty * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiMaterialProperty * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiMaterialProperty * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiMaterialProperty * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiMaterialProperty_Sm__Sg__set(arg1,arg2,(aiMaterialProperty *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiMaterialPropertyVector_aig_29567bba180e4e84(std::vector< aiMaterialProperty * > *_swig_go_0) { + std::vector< aiMaterialProperty * > *arg1 = (std::vector< aiMaterialProperty * > *) 0 ; + + arg1 = *(std::vector< aiMaterialProperty * > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiMeshAnim * > *_wrap_new_aiMeshAnimVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiMeshAnim * > *result = 0 ; + std::vector< aiMeshAnim * > *_swig_go_result; + + + result = (std::vector< aiMeshAnim * > *)new std::vector< aiMeshAnim * >(); + *(std::vector< aiMeshAnim * > **)&_swig_go_result = (std::vector< aiMeshAnim * > *)result; + return _swig_go_result; +} + + +std::vector< aiMeshAnim * > *_wrap_new_aiMeshAnimVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiMeshAnim * >::size_type arg1 ; + std::vector< aiMeshAnim * > *result = 0 ; + std::vector< aiMeshAnim * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiMeshAnim * > *)new std::vector< aiMeshAnim * >(arg1); + *(std::vector< aiMeshAnim * > **)&_swig_go_result = (std::vector< aiMeshAnim * > *)result; + return _swig_go_result; +} + + +std::vector< aiMeshAnim * > *_wrap_new_aiMeshAnimVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiMeshAnim * > *_swig_go_0) { + std::vector< aiMeshAnim * > *arg1 = 0 ; + std::vector< aiMeshAnim * > *result = 0 ; + std::vector< aiMeshAnim * > *_swig_go_result; + + arg1 = *(std::vector< aiMeshAnim * > **)&_swig_go_0; + + result = (std::vector< aiMeshAnim * > *)new std::vector< aiMeshAnim * >((std::vector< aiMeshAnim * > const &)*arg1); + *(std::vector< aiMeshAnim * > **)&_swig_go_result = (std::vector< aiMeshAnim * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiMeshAnimVector_size_aig_29567bba180e4e84(std::vector< aiMeshAnim * > *_swig_go_0) { + std::vector< aiMeshAnim * > *arg1 = (std::vector< aiMeshAnim * > *) 0 ; + std::vector< aiMeshAnim * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiMeshAnim * > **)&_swig_go_0; + + result = ((std::vector< aiMeshAnim * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiMeshAnimVector_capacity_aig_29567bba180e4e84(std::vector< aiMeshAnim * > *_swig_go_0) { + std::vector< aiMeshAnim * > *arg1 = (std::vector< aiMeshAnim * > *) 0 ; + std::vector< aiMeshAnim * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiMeshAnim * > **)&_swig_go_0; + + result = ((std::vector< aiMeshAnim * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiMeshAnimVector_reserve_aig_29567bba180e4e84(std::vector< aiMeshAnim * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiMeshAnim * > *arg1 = (std::vector< aiMeshAnim * > *) 0 ; + std::vector< aiMeshAnim * >::size_type arg2 ; + + arg1 = *(std::vector< aiMeshAnim * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiMeshAnimVector_isEmpty_aig_29567bba180e4e84(std::vector< aiMeshAnim * > *_swig_go_0) { + std::vector< aiMeshAnim * > *arg1 = (std::vector< aiMeshAnim * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiMeshAnim * > **)&_swig_go_0; + + result = (bool)((std::vector< aiMeshAnim * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiMeshAnimVector_clear_aig_29567bba180e4e84(std::vector< aiMeshAnim * > *_swig_go_0) { + std::vector< aiMeshAnim * > *arg1 = (std::vector< aiMeshAnim * > *) 0 ; + + arg1 = *(std::vector< aiMeshAnim * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiMeshAnimVector_add_aig_29567bba180e4e84(std::vector< aiMeshAnim * > *_swig_go_0, aiMeshAnim **_swig_go_1) { + std::vector< aiMeshAnim * > *arg1 = (std::vector< aiMeshAnim * > *) 0 ; + std::vector< aiMeshAnim * >::value_type *arg2 = 0 ; + std::vector< aiMeshAnim * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiMeshAnim * > **)&_swig_go_0; + + temp2 = *(std::vector< aiMeshAnim * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiMeshAnim * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiMeshAnim * >::value_type const &)*arg2); + +} + + +aiMeshAnim **_wrap_aiMeshAnimVector_get_aig_29567bba180e4e84(std::vector< aiMeshAnim * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiMeshAnim * > *arg1 = (std::vector< aiMeshAnim * > *) 0 ; + int arg2 ; + std::vector< aiMeshAnim * >::value_type *result = 0 ; + aiMeshAnim **_swig_go_result; + + arg1 = *(std::vector< aiMeshAnim * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiMeshAnim * >::value_type *) &std_vector_Sl_aiMeshAnim_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiMeshAnim * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiMeshAnimVector_set_aig_29567bba180e4e84(std::vector< aiMeshAnim * > *_swig_go_0, intgo _swig_go_1, aiMeshAnim **_swig_go_2) { + std::vector< aiMeshAnim * > *arg1 = (std::vector< aiMeshAnim * > *) 0 ; + int arg2 ; + std::vector< aiMeshAnim * >::value_type *arg3 = 0 ; + std::vector< aiMeshAnim * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiMeshAnim * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiMeshAnim * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiMeshAnim * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiMeshAnim_Sm__Sg__set(arg1,arg2,(aiMeshAnim *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiMeshAnimVector_aig_29567bba180e4e84(std::vector< aiMeshAnim * > *_swig_go_0) { + std::vector< aiMeshAnim * > *arg1 = (std::vector< aiMeshAnim * > *) 0 ; + + arg1 = *(std::vector< aiMeshAnim * > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiMesh * > *_wrap_new_aiMeshVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiMesh * > *result = 0 ; + std::vector< aiMesh * > *_swig_go_result; + + + result = (std::vector< aiMesh * > *)new std::vector< aiMesh * >(); + *(std::vector< aiMesh * > **)&_swig_go_result = (std::vector< aiMesh * > *)result; + return _swig_go_result; +} + + +std::vector< aiMesh * > *_wrap_new_aiMeshVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiMesh * >::size_type arg1 ; + std::vector< aiMesh * > *result = 0 ; + std::vector< aiMesh * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiMesh * > *)new std::vector< aiMesh * >(arg1); + *(std::vector< aiMesh * > **)&_swig_go_result = (std::vector< aiMesh * > *)result; + return _swig_go_result; +} + + +std::vector< aiMesh * > *_wrap_new_aiMeshVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiMesh * > *_swig_go_0) { + std::vector< aiMesh * > *arg1 = 0 ; + std::vector< aiMesh * > *result = 0 ; + std::vector< aiMesh * > *_swig_go_result; + + arg1 = *(std::vector< aiMesh * > **)&_swig_go_0; + + result = (std::vector< aiMesh * > *)new std::vector< aiMesh * >((std::vector< aiMesh * > const &)*arg1); + *(std::vector< aiMesh * > **)&_swig_go_result = (std::vector< aiMesh * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiMeshVector_size_aig_29567bba180e4e84(std::vector< aiMesh * > *_swig_go_0) { + std::vector< aiMesh * > *arg1 = (std::vector< aiMesh * > *) 0 ; + std::vector< aiMesh * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiMesh * > **)&_swig_go_0; + + result = ((std::vector< aiMesh * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiMeshVector_capacity_aig_29567bba180e4e84(std::vector< aiMesh * > *_swig_go_0) { + std::vector< aiMesh * > *arg1 = (std::vector< aiMesh * > *) 0 ; + std::vector< aiMesh * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiMesh * > **)&_swig_go_0; + + result = ((std::vector< aiMesh * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiMeshVector_reserve_aig_29567bba180e4e84(std::vector< aiMesh * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiMesh * > *arg1 = (std::vector< aiMesh * > *) 0 ; + std::vector< aiMesh * >::size_type arg2 ; + + arg1 = *(std::vector< aiMesh * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiMeshVector_isEmpty_aig_29567bba180e4e84(std::vector< aiMesh * > *_swig_go_0) { + std::vector< aiMesh * > *arg1 = (std::vector< aiMesh * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiMesh * > **)&_swig_go_0; + + result = (bool)((std::vector< aiMesh * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiMeshVector_clear_aig_29567bba180e4e84(std::vector< aiMesh * > *_swig_go_0) { + std::vector< aiMesh * > *arg1 = (std::vector< aiMesh * > *) 0 ; + + arg1 = *(std::vector< aiMesh * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiMeshVector_add_aig_29567bba180e4e84(std::vector< aiMesh * > *_swig_go_0, aiMesh **_swig_go_1) { + std::vector< aiMesh * > *arg1 = (std::vector< aiMesh * > *) 0 ; + std::vector< aiMesh * >::value_type *arg2 = 0 ; + std::vector< aiMesh * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiMesh * > **)&_swig_go_0; + + temp2 = *(std::vector< aiMesh * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiMesh * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiMesh * >::value_type const &)*arg2); + +} + + +aiMesh **_wrap_aiMeshVector_get_aig_29567bba180e4e84(std::vector< aiMesh * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiMesh * > *arg1 = (std::vector< aiMesh * > *) 0 ; + int arg2 ; + std::vector< aiMesh * >::value_type *result = 0 ; + aiMesh **_swig_go_result; + + arg1 = *(std::vector< aiMesh * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiMesh * >::value_type *) &std_vector_Sl_aiMesh_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiMesh * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiMeshVector_set_aig_29567bba180e4e84(std::vector< aiMesh * > *_swig_go_0, intgo _swig_go_1, aiMesh **_swig_go_2) { + std::vector< aiMesh * > *arg1 = (std::vector< aiMesh * > *) 0 ; + int arg2 ; + std::vector< aiMesh * >::value_type *arg3 = 0 ; + std::vector< aiMesh * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiMesh * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiMesh * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiMesh * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiMesh_Sm__Sg__set(arg1,arg2,(aiMesh *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiMeshVector_aig_29567bba180e4e84(std::vector< aiMesh * > *_swig_go_0) { + std::vector< aiMesh * > *arg1 = (std::vector< aiMesh * > *) 0 ; + + arg1 = *(std::vector< aiMesh * > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiNode * > *_wrap_new_aiNodeVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiNode * > *result = 0 ; + std::vector< aiNode * > *_swig_go_result; + + + result = (std::vector< aiNode * > *)new std::vector< aiNode * >(); + *(std::vector< aiNode * > **)&_swig_go_result = (std::vector< aiNode * > *)result; + return _swig_go_result; +} + + +std::vector< aiNode * > *_wrap_new_aiNodeVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiNode * >::size_type arg1 ; + std::vector< aiNode * > *result = 0 ; + std::vector< aiNode * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiNode * > *)new std::vector< aiNode * >(arg1); + *(std::vector< aiNode * > **)&_swig_go_result = (std::vector< aiNode * > *)result; + return _swig_go_result; +} + + +std::vector< aiNode * > *_wrap_new_aiNodeVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiNode * > *_swig_go_0) { + std::vector< aiNode * > *arg1 = 0 ; + std::vector< aiNode * > *result = 0 ; + std::vector< aiNode * > *_swig_go_result; + + arg1 = *(std::vector< aiNode * > **)&_swig_go_0; + + result = (std::vector< aiNode * > *)new std::vector< aiNode * >((std::vector< aiNode * > const &)*arg1); + *(std::vector< aiNode * > **)&_swig_go_result = (std::vector< aiNode * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiNodeVector_size_aig_29567bba180e4e84(std::vector< aiNode * > *_swig_go_0) { + std::vector< aiNode * > *arg1 = (std::vector< aiNode * > *) 0 ; + std::vector< aiNode * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiNode * > **)&_swig_go_0; + + result = ((std::vector< aiNode * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiNodeVector_capacity_aig_29567bba180e4e84(std::vector< aiNode * > *_swig_go_0) { + std::vector< aiNode * > *arg1 = (std::vector< aiNode * > *) 0 ; + std::vector< aiNode * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiNode * > **)&_swig_go_0; + + result = ((std::vector< aiNode * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiNodeVector_reserve_aig_29567bba180e4e84(std::vector< aiNode * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiNode * > *arg1 = (std::vector< aiNode * > *) 0 ; + std::vector< aiNode * >::size_type arg2 ; + + arg1 = *(std::vector< aiNode * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiNodeVector_isEmpty_aig_29567bba180e4e84(std::vector< aiNode * > *_swig_go_0) { + std::vector< aiNode * > *arg1 = (std::vector< aiNode * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiNode * > **)&_swig_go_0; + + result = (bool)((std::vector< aiNode * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiNodeVector_clear_aig_29567bba180e4e84(std::vector< aiNode * > *_swig_go_0) { + std::vector< aiNode * > *arg1 = (std::vector< aiNode * > *) 0 ; + + arg1 = *(std::vector< aiNode * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiNodeVector_add_aig_29567bba180e4e84(std::vector< aiNode * > *_swig_go_0, aiNode **_swig_go_1) { + std::vector< aiNode * > *arg1 = (std::vector< aiNode * > *) 0 ; + std::vector< aiNode * >::value_type *arg2 = 0 ; + std::vector< aiNode * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiNode * > **)&_swig_go_0; + + temp2 = *(std::vector< aiNode * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiNode * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiNode * >::value_type const &)*arg2); + +} + + +aiNode **_wrap_aiNodeVector_get_aig_29567bba180e4e84(std::vector< aiNode * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiNode * > *arg1 = (std::vector< aiNode * > *) 0 ; + int arg2 ; + std::vector< aiNode * >::value_type *result = 0 ; + aiNode **_swig_go_result; + + arg1 = *(std::vector< aiNode * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiNode * >::value_type *) &std_vector_Sl_aiNode_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiNode * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiNodeVector_set_aig_29567bba180e4e84(std::vector< aiNode * > *_swig_go_0, intgo _swig_go_1, aiNode **_swig_go_2) { + std::vector< aiNode * > *arg1 = (std::vector< aiNode * > *) 0 ; + int arg2 ; + std::vector< aiNode * >::value_type *arg3 = 0 ; + std::vector< aiNode * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiNode * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiNode * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiNode * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiNode_Sm__Sg__set(arg1,arg2,(aiNode *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiNodeVector_aig_29567bba180e4e84(std::vector< aiNode * > *_swig_go_0) { + std::vector< aiNode * > *arg1 = (std::vector< aiNode * > *) 0 ; + + arg1 = *(std::vector< aiNode * > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiNodeAnim * > *_wrap_new_aiNodeAnimVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiNodeAnim * > *result = 0 ; + std::vector< aiNodeAnim * > *_swig_go_result; + + + result = (std::vector< aiNodeAnim * > *)new std::vector< aiNodeAnim * >(); + *(std::vector< aiNodeAnim * > **)&_swig_go_result = (std::vector< aiNodeAnim * > *)result; + return _swig_go_result; +} + + +std::vector< aiNodeAnim * > *_wrap_new_aiNodeAnimVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiNodeAnim * >::size_type arg1 ; + std::vector< aiNodeAnim * > *result = 0 ; + std::vector< aiNodeAnim * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiNodeAnim * > *)new std::vector< aiNodeAnim * >(arg1); + *(std::vector< aiNodeAnim * > **)&_swig_go_result = (std::vector< aiNodeAnim * > *)result; + return _swig_go_result; +} + + +std::vector< aiNodeAnim * > *_wrap_new_aiNodeAnimVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiNodeAnim * > *_swig_go_0) { + std::vector< aiNodeAnim * > *arg1 = 0 ; + std::vector< aiNodeAnim * > *result = 0 ; + std::vector< aiNodeAnim * > *_swig_go_result; + + arg1 = *(std::vector< aiNodeAnim * > **)&_swig_go_0; + + result = (std::vector< aiNodeAnim * > *)new std::vector< aiNodeAnim * >((std::vector< aiNodeAnim * > const &)*arg1); + *(std::vector< aiNodeAnim * > **)&_swig_go_result = (std::vector< aiNodeAnim * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiNodeAnimVector_size_aig_29567bba180e4e84(std::vector< aiNodeAnim * > *_swig_go_0) { + std::vector< aiNodeAnim * > *arg1 = (std::vector< aiNodeAnim * > *) 0 ; + std::vector< aiNodeAnim * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiNodeAnim * > **)&_swig_go_0; + + result = ((std::vector< aiNodeAnim * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiNodeAnimVector_capacity_aig_29567bba180e4e84(std::vector< aiNodeAnim * > *_swig_go_0) { + std::vector< aiNodeAnim * > *arg1 = (std::vector< aiNodeAnim * > *) 0 ; + std::vector< aiNodeAnim * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiNodeAnim * > **)&_swig_go_0; + + result = ((std::vector< aiNodeAnim * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiNodeAnimVector_reserve_aig_29567bba180e4e84(std::vector< aiNodeAnim * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiNodeAnim * > *arg1 = (std::vector< aiNodeAnim * > *) 0 ; + std::vector< aiNodeAnim * >::size_type arg2 ; + + arg1 = *(std::vector< aiNodeAnim * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiNodeAnimVector_isEmpty_aig_29567bba180e4e84(std::vector< aiNodeAnim * > *_swig_go_0) { + std::vector< aiNodeAnim * > *arg1 = (std::vector< aiNodeAnim * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiNodeAnim * > **)&_swig_go_0; + + result = (bool)((std::vector< aiNodeAnim * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiNodeAnimVector_clear_aig_29567bba180e4e84(std::vector< aiNodeAnim * > *_swig_go_0) { + std::vector< aiNodeAnim * > *arg1 = (std::vector< aiNodeAnim * > *) 0 ; + + arg1 = *(std::vector< aiNodeAnim * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiNodeAnimVector_add_aig_29567bba180e4e84(std::vector< aiNodeAnim * > *_swig_go_0, aiNodeAnim **_swig_go_1) { + std::vector< aiNodeAnim * > *arg1 = (std::vector< aiNodeAnim * > *) 0 ; + std::vector< aiNodeAnim * >::value_type *arg2 = 0 ; + std::vector< aiNodeAnim * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiNodeAnim * > **)&_swig_go_0; + + temp2 = *(std::vector< aiNodeAnim * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiNodeAnim * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiNodeAnim * >::value_type const &)*arg2); + +} + + +aiNodeAnim **_wrap_aiNodeAnimVector_get_aig_29567bba180e4e84(std::vector< aiNodeAnim * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiNodeAnim * > *arg1 = (std::vector< aiNodeAnim * > *) 0 ; + int arg2 ; + std::vector< aiNodeAnim * >::value_type *result = 0 ; + aiNodeAnim **_swig_go_result; + + arg1 = *(std::vector< aiNodeAnim * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiNodeAnim * >::value_type *) &std_vector_Sl_aiNodeAnim_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiNodeAnim * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiNodeAnimVector_set_aig_29567bba180e4e84(std::vector< aiNodeAnim * > *_swig_go_0, intgo _swig_go_1, aiNodeAnim **_swig_go_2) { + std::vector< aiNodeAnim * > *arg1 = (std::vector< aiNodeAnim * > *) 0 ; + int arg2 ; + std::vector< aiNodeAnim * >::value_type *arg3 = 0 ; + std::vector< aiNodeAnim * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiNodeAnim * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiNodeAnim * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiNodeAnim * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiNodeAnim_Sm__Sg__set(arg1,arg2,(aiNodeAnim *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiNodeAnimVector_aig_29567bba180e4e84(std::vector< aiNodeAnim * > *_swig_go_0) { + std::vector< aiNodeAnim * > *arg1 = (std::vector< aiNodeAnim * > *) 0 ; + + arg1 = *(std::vector< aiNodeAnim * > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiTexture * > *_wrap_new_aiTextureVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiTexture * > *result = 0 ; + std::vector< aiTexture * > *_swig_go_result; + + + result = (std::vector< aiTexture * > *)new std::vector< aiTexture * >(); + *(std::vector< aiTexture * > **)&_swig_go_result = (std::vector< aiTexture * > *)result; + return _swig_go_result; +} + + +std::vector< aiTexture * > *_wrap_new_aiTextureVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiTexture * >::size_type arg1 ; + std::vector< aiTexture * > *result = 0 ; + std::vector< aiTexture * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiTexture * > *)new std::vector< aiTexture * >(arg1); + *(std::vector< aiTexture * > **)&_swig_go_result = (std::vector< aiTexture * > *)result; + return _swig_go_result; +} + + +std::vector< aiTexture * > *_wrap_new_aiTextureVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiTexture * > *_swig_go_0) { + std::vector< aiTexture * > *arg1 = 0 ; + std::vector< aiTexture * > *result = 0 ; + std::vector< aiTexture * > *_swig_go_result; + + arg1 = *(std::vector< aiTexture * > **)&_swig_go_0; + + result = (std::vector< aiTexture * > *)new std::vector< aiTexture * >((std::vector< aiTexture * > const &)*arg1); + *(std::vector< aiTexture * > **)&_swig_go_result = (std::vector< aiTexture * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiTextureVector_size_aig_29567bba180e4e84(std::vector< aiTexture * > *_swig_go_0) { + std::vector< aiTexture * > *arg1 = (std::vector< aiTexture * > *) 0 ; + std::vector< aiTexture * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiTexture * > **)&_swig_go_0; + + result = ((std::vector< aiTexture * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiTextureVector_capacity_aig_29567bba180e4e84(std::vector< aiTexture * > *_swig_go_0) { + std::vector< aiTexture * > *arg1 = (std::vector< aiTexture * > *) 0 ; + std::vector< aiTexture * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiTexture * > **)&_swig_go_0; + + result = ((std::vector< aiTexture * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiTextureVector_reserve_aig_29567bba180e4e84(std::vector< aiTexture * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiTexture * > *arg1 = (std::vector< aiTexture * > *) 0 ; + std::vector< aiTexture * >::size_type arg2 ; + + arg1 = *(std::vector< aiTexture * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiTextureVector_isEmpty_aig_29567bba180e4e84(std::vector< aiTexture * > *_swig_go_0) { + std::vector< aiTexture * > *arg1 = (std::vector< aiTexture * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiTexture * > **)&_swig_go_0; + + result = (bool)((std::vector< aiTexture * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiTextureVector_clear_aig_29567bba180e4e84(std::vector< aiTexture * > *_swig_go_0) { + std::vector< aiTexture * > *arg1 = (std::vector< aiTexture * > *) 0 ; + + arg1 = *(std::vector< aiTexture * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiTextureVector_add_aig_29567bba180e4e84(std::vector< aiTexture * > *_swig_go_0, aiTexture **_swig_go_1) { + std::vector< aiTexture * > *arg1 = (std::vector< aiTexture * > *) 0 ; + std::vector< aiTexture * >::value_type *arg2 = 0 ; + std::vector< aiTexture * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiTexture * > **)&_swig_go_0; + + temp2 = *(std::vector< aiTexture * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiTexture * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiTexture * >::value_type const &)*arg2); + +} + + +aiTexture **_wrap_aiTextureVector_get_aig_29567bba180e4e84(std::vector< aiTexture * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiTexture * > *arg1 = (std::vector< aiTexture * > *) 0 ; + int arg2 ; + std::vector< aiTexture * >::value_type *result = 0 ; + aiTexture **_swig_go_result; + + arg1 = *(std::vector< aiTexture * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiTexture * >::value_type *) &std_vector_Sl_aiTexture_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiTexture * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiTextureVector_set_aig_29567bba180e4e84(std::vector< aiTexture * > *_swig_go_0, intgo _swig_go_1, aiTexture **_swig_go_2) { + std::vector< aiTexture * > *arg1 = (std::vector< aiTexture * > *) 0 ; + int arg2 ; + std::vector< aiTexture * >::value_type *arg3 = 0 ; + std::vector< aiTexture * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiTexture * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiTexture * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiTexture * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiTexture_Sm__Sg__set(arg1,arg2,(aiTexture *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiTextureVector_aig_29567bba180e4e84(std::vector< aiTexture * > *_swig_go_0) { + std::vector< aiTexture * > *arg1 = (std::vector< aiTexture * > *) 0 ; + + arg1 = *(std::vector< aiTexture * > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiVector3D * > *_wrap_new_aiVector3DVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiVector3D * > *result = 0 ; + std::vector< aiVector3D * > *_swig_go_result; + + + result = (std::vector< aiVector3D * > *)new std::vector< aiVector3D * >(); + *(std::vector< aiVector3D * > **)&_swig_go_result = (std::vector< aiVector3D * > *)result; + return _swig_go_result; +} + + +std::vector< aiVector3D * > *_wrap_new_aiVector3DVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiVector3D * >::size_type arg1 ; + std::vector< aiVector3D * > *result = 0 ; + std::vector< aiVector3D * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiVector3D * > *)new std::vector< aiVector3D * >(arg1); + *(std::vector< aiVector3D * > **)&_swig_go_result = (std::vector< aiVector3D * > *)result; + return _swig_go_result; +} + + +std::vector< aiVector3D * > *_wrap_new_aiVector3DVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiVector3D * > *_swig_go_0) { + std::vector< aiVector3D * > *arg1 = 0 ; + std::vector< aiVector3D * > *result = 0 ; + std::vector< aiVector3D * > *_swig_go_result; + + arg1 = *(std::vector< aiVector3D * > **)&_swig_go_0; + + result = (std::vector< aiVector3D * > *)new std::vector< aiVector3D * >((std::vector< aiVector3D * > const &)*arg1); + *(std::vector< aiVector3D * > **)&_swig_go_result = (std::vector< aiVector3D * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiVector3DVector_size_aig_29567bba180e4e84(std::vector< aiVector3D * > *_swig_go_0) { + std::vector< aiVector3D * > *arg1 = (std::vector< aiVector3D * > *) 0 ; + std::vector< aiVector3D * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiVector3D * > **)&_swig_go_0; + + result = ((std::vector< aiVector3D * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiVector3DVector_capacity_aig_29567bba180e4e84(std::vector< aiVector3D * > *_swig_go_0) { + std::vector< aiVector3D * > *arg1 = (std::vector< aiVector3D * > *) 0 ; + std::vector< aiVector3D * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiVector3D * > **)&_swig_go_0; + + result = ((std::vector< aiVector3D * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiVector3DVector_reserve_aig_29567bba180e4e84(std::vector< aiVector3D * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiVector3D * > *arg1 = (std::vector< aiVector3D * > *) 0 ; + std::vector< aiVector3D * >::size_type arg2 ; + + arg1 = *(std::vector< aiVector3D * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiVector3DVector_isEmpty_aig_29567bba180e4e84(std::vector< aiVector3D * > *_swig_go_0) { + std::vector< aiVector3D * > *arg1 = (std::vector< aiVector3D * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiVector3D * > **)&_swig_go_0; + + result = (bool)((std::vector< aiVector3D * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiVector3DVector_clear_aig_29567bba180e4e84(std::vector< aiVector3D * > *_swig_go_0) { + std::vector< aiVector3D * > *arg1 = (std::vector< aiVector3D * > *) 0 ; + + arg1 = *(std::vector< aiVector3D * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiVector3DVector_add_aig_29567bba180e4e84(std::vector< aiVector3D * > *_swig_go_0, aiVector3D **_swig_go_1) { + std::vector< aiVector3D * > *arg1 = (std::vector< aiVector3D * > *) 0 ; + std::vector< aiVector3D * >::value_type *arg2 = 0 ; + std::vector< aiVector3D * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiVector3D * > **)&_swig_go_0; + + temp2 = *(std::vector< aiVector3D * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiVector3D * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiVector3D * >::value_type const &)*arg2); + +} + + +aiVector3D **_wrap_aiVector3DVector_get_aig_29567bba180e4e84(std::vector< aiVector3D * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiVector3D * > *arg1 = (std::vector< aiVector3D * > *) 0 ; + int arg2 ; + std::vector< aiVector3D * >::value_type *result = 0 ; + aiVector3D **_swig_go_result; + + arg1 = *(std::vector< aiVector3D * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiVector3D * >::value_type *) &std_vector_Sl_aiVector3D_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiVector3D * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiVector3DVector_set_aig_29567bba180e4e84(std::vector< aiVector3D * > *_swig_go_0, intgo _swig_go_1, aiVector3D **_swig_go_2) { + std::vector< aiVector3D * > *arg1 = (std::vector< aiVector3D * > *) 0 ; + int arg2 ; + std::vector< aiVector3D * >::value_type *arg3 = 0 ; + std::vector< aiVector3D * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiVector3D * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiVector3D * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiVector3D * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiVector3D_Sm__Sg__set(arg1,arg2,(aiVector3D *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiVector3DVector_aig_29567bba180e4e84(std::vector< aiVector3D * > *_swig_go_0) { + std::vector< aiVector3D * > *arg1 = (std::vector< aiVector3D * > *) 0 ; + + arg1 = *(std::vector< aiVector3D * > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< std::vector< aiVector3D * > > *_wrap_new_aiVector3DVectorVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< std::vector< aiVector3D * > > *result = 0 ; + std::vector< std::vector< aiVector3D * > > *_swig_go_result; + + + result = (std::vector< std::vector< aiVector3D * > > *)new std::vector< std::vector< aiVector3D * > >(); + *(std::vector< std::vector< aiVector3D * > > **)&_swig_go_result = (std::vector< std::vector< aiVector3D * > > *)result; + return _swig_go_result; +} + + +std::vector< std::vector< aiVector3D * > > *_wrap_new_aiVector3DVectorVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< std::vector< aiVector3D * > >::size_type arg1 ; + std::vector< std::vector< aiVector3D * > > *result = 0 ; + std::vector< std::vector< aiVector3D * > > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< std::vector< aiVector3D * > > *)new std::vector< std::vector< aiVector3D * > >(arg1); + *(std::vector< std::vector< aiVector3D * > > **)&_swig_go_result = (std::vector< std::vector< aiVector3D * > > *)result; + return _swig_go_result; +} + + +std::vector< std::vector< aiVector3D * > > *_wrap_new_aiVector3DVectorVector__SWIG_2_aig_29567bba180e4e84(std::vector< std::vector< aiVector3D * > > *_swig_go_0) { + std::vector< std::vector< aiVector3D * > > *arg1 = 0 ; + std::vector< std::vector< aiVector3D * > > *result = 0 ; + std::vector< std::vector< aiVector3D * > > *_swig_go_result; + + arg1 = *(std::vector< std::vector< aiVector3D * > > **)&_swig_go_0; + + result = (std::vector< std::vector< aiVector3D * > > *)new std::vector< std::vector< aiVector3D * > >((std::vector< std::vector< aiVector3D * > > const &)*arg1); + *(std::vector< std::vector< aiVector3D * > > **)&_swig_go_result = (std::vector< std::vector< aiVector3D * > > *)result; + return _swig_go_result; +} + + +long long _wrap_aiVector3DVectorVector_size_aig_29567bba180e4e84(std::vector< std::vector< aiVector3D * > > *_swig_go_0) { + std::vector< std::vector< aiVector3D * > > *arg1 = (std::vector< std::vector< aiVector3D * > > *) 0 ; + std::vector< std::vector< aiVector3D * > >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< std::vector< aiVector3D * > > **)&_swig_go_0; + + result = ((std::vector< std::vector< aiVector3D * > > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiVector3DVectorVector_capacity_aig_29567bba180e4e84(std::vector< std::vector< aiVector3D * > > *_swig_go_0) { + std::vector< std::vector< aiVector3D * > > *arg1 = (std::vector< std::vector< aiVector3D * > > *) 0 ; + std::vector< std::vector< aiVector3D * > >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< std::vector< aiVector3D * > > **)&_swig_go_0; + + result = ((std::vector< std::vector< aiVector3D * > > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiVector3DVectorVector_reserve_aig_29567bba180e4e84(std::vector< std::vector< aiVector3D * > > *_swig_go_0, long long _swig_go_1) { + std::vector< std::vector< aiVector3D * > > *arg1 = (std::vector< std::vector< aiVector3D * > > *) 0 ; + std::vector< std::vector< aiVector3D * > >::size_type arg2 ; + + arg1 = *(std::vector< std::vector< aiVector3D * > > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiVector3DVectorVector_isEmpty_aig_29567bba180e4e84(std::vector< std::vector< aiVector3D * > > *_swig_go_0) { + std::vector< std::vector< aiVector3D * > > *arg1 = (std::vector< std::vector< aiVector3D * > > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< std::vector< aiVector3D * > > **)&_swig_go_0; + + result = (bool)((std::vector< std::vector< aiVector3D * > > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiVector3DVectorVector_clear_aig_29567bba180e4e84(std::vector< std::vector< aiVector3D * > > *_swig_go_0) { + std::vector< std::vector< aiVector3D * > > *arg1 = (std::vector< std::vector< aiVector3D * > > *) 0 ; + + arg1 = *(std::vector< std::vector< aiVector3D * > > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiVector3DVectorVector_add_aig_29567bba180e4e84(std::vector< std::vector< aiVector3D * > > *_swig_go_0, std::vector< aiVector3D * > *_swig_go_1) { + std::vector< std::vector< aiVector3D * > > *arg1 = (std::vector< std::vector< aiVector3D * > > *) 0 ; + std::vector< std::vector< aiVector3D * > >::value_type *arg2 = 0 ; + + arg1 = *(std::vector< std::vector< aiVector3D * > > **)&_swig_go_0; + arg2 = *(std::vector< std::vector< aiVector3D * > >::value_type **)&_swig_go_1; + + (arg1)->push_back((std::vector< std::vector< aiVector3D * > >::value_type const &)*arg2); + +} + + +std::vector< aiVector3D * > *_wrap_aiVector3DVectorVector_get_aig_29567bba180e4e84(std::vector< std::vector< aiVector3D * > > *_swig_go_0, intgo _swig_go_1) { + std::vector< std::vector< aiVector3D * > > *arg1 = (std::vector< std::vector< aiVector3D * > > *) 0 ; + int arg2 ; + std::vector< std::vector< aiVector3D * > >::value_type *result = 0 ; + std::vector< aiVector3D * > *_swig_go_result; + + arg1 = *(std::vector< std::vector< aiVector3D * > > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< std::vector< aiVector3D * > >::value_type *) &std_vector_Sl_std_vector_Sl_aiVector3D_Sm__Sg__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< std::vector< aiVector3D * > >::value_type **)&_swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiVector3DVectorVector_set_aig_29567bba180e4e84(std::vector< std::vector< aiVector3D * > > *_swig_go_0, intgo _swig_go_1, std::vector< aiVector3D * > *_swig_go_2) { + std::vector< std::vector< aiVector3D * > > *arg1 = (std::vector< std::vector< aiVector3D * > > *) 0 ; + int arg2 ; + std::vector< std::vector< aiVector3D * > >::value_type *arg3 = 0 ; + + arg1 = *(std::vector< std::vector< aiVector3D * > > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + arg3 = *(std::vector< std::vector< aiVector3D * > >::value_type **)&_swig_go_2; + + try { + std_vector_Sl_std_vector_Sl_aiVector3D_Sm__Sg__Sg__set(arg1,arg2,(std::vector< aiVector3D * > const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiVector3DVectorVector_aig_29567bba180e4e84(std::vector< std::vector< aiVector3D * > > *_swig_go_0) { + std::vector< std::vector< aiVector3D * > > *arg1 = (std::vector< std::vector< aiVector3D * > > *) 0 ; + + arg1 = *(std::vector< std::vector< aiVector3D * > > **)&_swig_go_0; + + delete arg1; + +} + + +std::vector< aiVertexWeight * > *_wrap_new_aiVertexWeightVector__SWIG_0_aig_29567bba180e4e84() { + std::vector< aiVertexWeight * > *result = 0 ; + std::vector< aiVertexWeight * > *_swig_go_result; + + + result = (std::vector< aiVertexWeight * > *)new std::vector< aiVertexWeight * >(); + *(std::vector< aiVertexWeight * > **)&_swig_go_result = (std::vector< aiVertexWeight * > *)result; + return _swig_go_result; +} + + +std::vector< aiVertexWeight * > *_wrap_new_aiVertexWeightVector__SWIG_1_aig_29567bba180e4e84(long long _swig_go_0) { + std::vector< aiVertexWeight * >::size_type arg1 ; + std::vector< aiVertexWeight * > *result = 0 ; + std::vector< aiVertexWeight * > *_swig_go_result; + + arg1 = (size_t)_swig_go_0; + + result = (std::vector< aiVertexWeight * > *)new std::vector< aiVertexWeight * >(arg1); + *(std::vector< aiVertexWeight * > **)&_swig_go_result = (std::vector< aiVertexWeight * > *)result; + return _swig_go_result; +} + + +std::vector< aiVertexWeight * > *_wrap_new_aiVertexWeightVector__SWIG_2_aig_29567bba180e4e84(std::vector< aiVertexWeight * > *_swig_go_0) { + std::vector< aiVertexWeight * > *arg1 = 0 ; + std::vector< aiVertexWeight * > *result = 0 ; + std::vector< aiVertexWeight * > *_swig_go_result; + + arg1 = *(std::vector< aiVertexWeight * > **)&_swig_go_0; + + result = (std::vector< aiVertexWeight * > *)new std::vector< aiVertexWeight * >((std::vector< aiVertexWeight * > const &)*arg1); + *(std::vector< aiVertexWeight * > **)&_swig_go_result = (std::vector< aiVertexWeight * > *)result; + return _swig_go_result; +} + + +long long _wrap_aiVertexWeightVector_size_aig_29567bba180e4e84(std::vector< aiVertexWeight * > *_swig_go_0) { + std::vector< aiVertexWeight * > *arg1 = (std::vector< aiVertexWeight * > *) 0 ; + std::vector< aiVertexWeight * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiVertexWeight * > **)&_swig_go_0; + + result = ((std::vector< aiVertexWeight * > const *)arg1)->size(); + _swig_go_result = result; + return _swig_go_result; +} + + +long long _wrap_aiVertexWeightVector_capacity_aig_29567bba180e4e84(std::vector< aiVertexWeight * > *_swig_go_0) { + std::vector< aiVertexWeight * > *arg1 = (std::vector< aiVertexWeight * > *) 0 ; + std::vector< aiVertexWeight * >::size_type result; + long long _swig_go_result; + + arg1 = *(std::vector< aiVertexWeight * > **)&_swig_go_0; + + result = ((std::vector< aiVertexWeight * > const *)arg1)->capacity(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiVertexWeightVector_reserve_aig_29567bba180e4e84(std::vector< aiVertexWeight * > *_swig_go_0, long long _swig_go_1) { + std::vector< aiVertexWeight * > *arg1 = (std::vector< aiVertexWeight * > *) 0 ; + std::vector< aiVertexWeight * >::size_type arg2 ; + + arg1 = *(std::vector< aiVertexWeight * > **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + + (arg1)->reserve(arg2); + +} + + +bool _wrap_aiVertexWeightVector_isEmpty_aig_29567bba180e4e84(std::vector< aiVertexWeight * > *_swig_go_0) { + std::vector< aiVertexWeight * > *arg1 = (std::vector< aiVertexWeight * > *) 0 ; + bool result; + bool _swig_go_result; + + arg1 = *(std::vector< aiVertexWeight * > **)&_swig_go_0; + + result = (bool)((std::vector< aiVertexWeight * > const *)arg1)->empty(); + _swig_go_result = result; + return _swig_go_result; +} + + +void _wrap_aiVertexWeightVector_clear_aig_29567bba180e4e84(std::vector< aiVertexWeight * > *_swig_go_0) { + std::vector< aiVertexWeight * > *arg1 = (std::vector< aiVertexWeight * > *) 0 ; + + arg1 = *(std::vector< aiVertexWeight * > **)&_swig_go_0; + + (arg1)->clear(); + +} + + +void _wrap_aiVertexWeightVector_add_aig_29567bba180e4e84(std::vector< aiVertexWeight * > *_swig_go_0, aiVertexWeight **_swig_go_1) { + std::vector< aiVertexWeight * > *arg1 = (std::vector< aiVertexWeight * > *) 0 ; + std::vector< aiVertexWeight * >::value_type *arg2 = 0 ; + std::vector< aiVertexWeight * >::value_type temp2 = 0 ; + + arg1 = *(std::vector< aiVertexWeight * > **)&_swig_go_0; + + temp2 = *(std::vector< aiVertexWeight * >::value_type *)&_swig_go_1; + arg2 = (std::vector< aiVertexWeight * >::value_type *)&temp2; + + + (arg1)->push_back((std::vector< aiVertexWeight * >::value_type const &)*arg2); + +} + + +aiVertexWeight **_wrap_aiVertexWeightVector_get_aig_29567bba180e4e84(std::vector< aiVertexWeight * > *_swig_go_0, intgo _swig_go_1) { + std::vector< aiVertexWeight * > *arg1 = (std::vector< aiVertexWeight * > *) 0 ; + int arg2 ; + std::vector< aiVertexWeight * >::value_type *result = 0 ; + aiVertexWeight **_swig_go_result; + + arg1 = *(std::vector< aiVertexWeight * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + try { + result = (std::vector< aiVertexWeight * >::value_type *) &std_vector_Sl_aiVertexWeight_Sm__Sg__get(arg1,arg2); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + *(std::vector< aiVertexWeight * >::value_type *)&_swig_go_result = *result; + return _swig_go_result; +} + + +void _wrap_aiVertexWeightVector_set_aig_29567bba180e4e84(std::vector< aiVertexWeight * > *_swig_go_0, intgo _swig_go_1, aiVertexWeight **_swig_go_2) { + std::vector< aiVertexWeight * > *arg1 = (std::vector< aiVertexWeight * > *) 0 ; + int arg2 ; + std::vector< aiVertexWeight * >::value_type *arg3 = 0 ; + std::vector< aiVertexWeight * >::value_type temp3 = 0 ; + + arg1 = *(std::vector< aiVertexWeight * > **)&_swig_go_0; + arg2 = (int)_swig_go_1; + + temp3 = *(std::vector< aiVertexWeight * >::value_type *)&_swig_go_2; + arg3 = (std::vector< aiVertexWeight * >::value_type *)&temp3; + + + try { + std_vector_Sl_aiVertexWeight_Sm__Sg__set(arg1,arg2,(aiVertexWeight *const &)*arg3); + } catch(std::out_of_range &_e) { + (void)_e; + _swig_gopanic("C++ std::out_of_range exception thrown"); + + } + +} + + +void _wrap_delete_aiVertexWeightVector_aig_29567bba180e4e84(std::vector< aiVertexWeight * > *_swig_go_0) { + std::vector< aiVertexWeight * > *arg1 = (std::vector< aiVertexWeight * > *) 0 ; + + arg1 = *(std::vector< aiVertexWeight * > **)&_swig_go_0; + + delete arg1; + +} + + +#ifdef __cplusplus +} +#endif + diff --git a/aig/assimp/.editorconfig b/aig/assimp/.editorconfig new file mode 100755 index 0000000..9ea6642 --- /dev/null +++ b/aig/assimp/.editorconfig @@ -0,0 +1,8 @@ +# See for details + +[*.{h,hpp,inl}] +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +indent_size = 4 +indent_style = space diff --git a/aig/assimp/BaseImporter.h b/aig/assimp/BaseImporter.h new file mode 100755 index 0000000..55f7fe3 --- /dev/null +++ b/aig/assimp/BaseImporter.h @@ -0,0 +1,418 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file Definition of the base class for all importer worker classes. */ +#ifndef INCLUDED_AI_BASEIMPORTER_H +#define INCLUDED_AI_BASEIMPORTER_H + +#include "Exceptional.h" + +#include +#include +#include +#include +#include +#include + +struct aiScene; +struct aiImporterDesc; + +namespace Assimp { + +class Importer; +class IOSystem; +class BaseProcess; +class SharedPostProcessInfo; +class IOStream; + +// utility to do char4 to uint32 in a portable manner +#define AI_MAKE_MAGIC(string) ((uint32_t)((string[0] << 24) + \ + (string[1] << 16) + (string[2] << 8) + string[3])) + + +// --------------------------------------------------------------------------- +/** FOR IMPORTER PLUGINS ONLY: The BaseImporter defines a common interface + * for all importer worker classes. + * + * The interface defines two functions: CanRead() is used to check if the + * importer can handle the format of the given file. If an implementation of + * this function returns true, the importer then calls ReadFile() which + * imports the given file. ReadFile is not overridable, it just calls + * InternReadFile() and catches any ImportErrorException that might occur. + */ +class ASSIMP_API BaseImporter { + friend class Importer; + +private: + /* Pushes state into importer for the importer scale */ + virtual void UpdateImporterScale( Importer* pImp ); + +public: + + /** Constructor to be privately used by #Importer */ + BaseImporter() AI_NO_EXCEPT; + + /** Destructor, private as well */ + virtual ~BaseImporter(); + + // ------------------------------------------------------------------- + /** Returns whether the class can handle the format of the given file. + * + * The implementation should be as quick as possible. A check for + * the file extension is enough. If no suitable loader is found with + * this strategy, CanRead() is called again, the 'checkSig' parameter + * set to true this time. Now the implementation is expected to + * perform a full check of the file structure, possibly searching the + * first bytes of the file for magic identifiers or keywords. + * + * @param pFile Path and file name of the file to be examined. + * @param pIOHandler The IO handler to use for accessing any file. + * @param checkSig Set to true if this method is called a second time. + * This time, the implementation may take more time to examine the + * contents of the file to be loaded for magic bytes, keywords, etc + * to be able to load files with unknown/not existent file extensions. + * @return true if the class can read this file, false if not. + */ + virtual bool CanRead( + const std::string& pFile, + IOSystem* pIOHandler, + bool checkSig + ) const = 0; + + // ------------------------------------------------------------------- + /** Imports the given file and returns the imported data. + * If the import succeeds, ownership of the data is transferred to + * the caller. If the import fails, NULL is returned. The function + * takes care that any partially constructed data is destroyed + * beforehand. + * + * @param pImp #Importer object hosting this loader. + * @param pFile Path of the file to be imported. + * @param pIOHandler IO-Handler used to open this and possible other files. + * @return The imported data or NULL if failed. If it failed a + * human-readable error description can be retrieved by calling + * GetErrorText() + * + * @note This function is not intended to be overridden. Implement + * InternReadFile() to do the import. If an exception is thrown somewhere + * in InternReadFile(), this function will catch it and transform it into + * a suitable response to the caller. + */ + aiScene* ReadFile( + Importer* pImp, + const std::string& pFile, + IOSystem* pIOHandler + ); + + // ------------------------------------------------------------------- + /** Returns the error description of the last error that occurred. + * @return A description of the last error that occurred. An empty + * string if there was no error. + */ + const std::string& GetErrorText() const { + return m_ErrorText; + } + + // ------------------------------------------------------------------- + /** Called prior to ReadFile(). + * The function is a request to the importer to update its configuration + * basing on the Importer's configuration property list. + * @param pImp Importer instance + */ + virtual void SetupProperties( + const Importer* pImp + ); + + // ------------------------------------------------------------------- + /** Called by #Importer::GetImporterInfo to get a description of + * some loader features. Importers must provide this information. */ + virtual const aiImporterDesc* GetInfo() const = 0; + + /** + * Will be called only by scale process when scaling is requested. + */ + virtual void SetFileScale(double scale) + { + fileScale = scale; + } + + virtual double GetFileScale() const + { + return fileScale; + } + + enum ImporterUnits { + M, + MM, + CM, + INCHES, + FEET + }; + + /** + * Assimp Importer + * unit conversions available + * if you need another measurment unit add it below. + * it's currently defined in assimp that we prefer meters. + * */ + std::map importerUnits = { + {ImporterUnits::M, 1}, + {ImporterUnits::CM, 0.01}, + {ImporterUnits::MM, 0.001}, + {ImporterUnits::INCHES, 0.0254}, + {ImporterUnits::FEET, 0.3048} + }; + + virtual void SetApplicationUnits( const ImporterUnits& unit ) + { + importerScale = importerUnits[unit]; + applicationUnits = unit; + } + + virtual const ImporterUnits& GetApplicationUnits() + { + return applicationUnits; + } + + // ------------------------------------------------------------------- + /** Called by #Importer::GetExtensionList for each loaded importer. + * Take the extension list contained in the structure returned by + * #GetInfo and insert all file extensions into the given set. + * @param extension set to collect file extensions in*/ + void GetExtensionList(std::set& extensions); + +protected: + ImporterUnits applicationUnits = ImporterUnits::M; + double importerScale = 1.0; + double fileScale = 1.0; + + + + // ------------------------------------------------------------------- + /** Imports the given file into the given scene structure. The + * function is expected to throw an ImportErrorException if there is + * an error. If it terminates normally, the data in aiScene is + * expected to be correct. Override this function to implement the + * actual importing. + *
+ * The output scene must meet the following requirements:
+ *
    + *
  • At least a root node must be there, even if its only purpose + * is to reference one mesh.
  • + *
  • aiMesh::mPrimitiveTypes may be 0. The types of primitives + * in the mesh are determined automatically in this case.
  • + *
  • the vertex data is stored in a pseudo-indexed "verbose" format. + * In fact this means that every vertex that is referenced by + * a face is unique. Or the other way round: a vertex index may + * not occur twice in a single aiMesh.
  • + *
  • aiAnimation::mDuration may be -1. Assimp determines the length + * of the animation automatically in this case as the length of + * the longest animation channel.
  • + *
  • aiMesh::mBitangents may be NULL if tangents and normals are + * given. In this case bitangents are computed as the cross product + * between normal and tangent.
  • + *
  • There needn't be a material. If none is there a default material + * is generated. However, it is recommended practice for loaders + * to generate a default material for yourself that matches the + * default material setting for the file format better than Assimp's + * generic default material. Note that default materials *should* + * be named AI_DEFAULT_MATERIAL_NAME if they're just color-shaded + * or AI_DEFAULT_TEXTURED_MATERIAL_NAME if they define a (dummy) + * texture.
  • + *
+ * If the AI_SCENE_FLAGS_INCOMPLETE-Flag is not set:
    + *
  • at least one mesh must be there
  • + *
  • there may be no meshes with 0 vertices or faces
  • + *
+ * This won't be checked (except by the validation step): Assimp will + * crash if one of the conditions is not met! + * + * @param pFile Path of the file to be imported. + * @param pScene The scene object to hold the imported data. + * NULL is not a valid parameter. + * @param pIOHandler The IO handler to use for any file access. + * NULL is not a valid parameter. */ + virtual void InternReadFile( + const std::string& pFile, + aiScene* pScene, + IOSystem* pIOHandler + ) = 0; + +public: // static utilities + + // ------------------------------------------------------------------- + /** A utility for CanRead(). + * + * The function searches the header of a file for a specific token + * and returns true if this token is found. This works for text + * files only. There is a rudimentary handling of UNICODE files. + * The comparison is case independent. + * + * @param pIOSystem IO System to work with + * @param file File name of the file + * @param tokens List of tokens to search for + * @param numTokens Size of the token array + * @param searchBytes Number of bytes to be searched for the tokens. + */ + static bool SearchFileHeaderForToken( + IOSystem* pIOSystem, + const std::string& file, + const char** tokens, + unsigned int numTokens, + unsigned int searchBytes = 200, + bool tokensSol = false, + bool noAlphaBeforeTokens = false); + + // ------------------------------------------------------------------- + /** @brief Check whether a file has a specific file extension + * @param pFile Input file + * @param ext0 Extension to check for. Lowercase characters only, no dot! + * @param ext1 Optional second extension + * @param ext2 Optional third extension + * @note Case-insensitive + */ + static bool SimpleExtensionCheck ( + const std::string& pFile, + const char* ext0, + const char* ext1 = NULL, + const char* ext2 = NULL); + + // ------------------------------------------------------------------- + /** @brief Extract file extension from a string + * @param pFile Input file + * @return Extension without trailing dot, all lowercase + */ + static std::string GetExtension ( + const std::string& pFile); + + // ------------------------------------------------------------------- + /** @brief Check whether a file starts with one or more magic tokens + * @param pFile Input file + * @param pIOHandler IO system to be used + * @param magic n magic tokens + * @params num Size of magic + * @param offset Offset from file start where tokens are located + * @param Size of one token, in bytes. Maximally 16 bytes. + * @return true if one of the given tokens was found + * + * @note For convenience, the check is also performed for the + * byte-swapped variant of all tokens (big endian). Only for + * tokens of size 2,4. + */ + static bool CheckMagicToken( + IOSystem* pIOHandler, + const std::string& pFile, + const void* magic, + unsigned int num, + unsigned int offset = 0, + unsigned int size = 4); + + // ------------------------------------------------------------------- + /** An utility for all text file loaders. It converts a file to our + * UTF8 character set. Errors are reported, but ignored. + * + * @param data File buffer to be converted to UTF8 data. The buffer + * is resized as appropriate. */ + static void ConvertToUTF8( + std::vector& data); + + // ------------------------------------------------------------------- + /** An utility for all text file loaders. It converts a file from our + * UTF8 character set back to ISO-8859-1. Errors are reported, but ignored. + * + * @param data File buffer to be converted from UTF8 to ISO-8859-1. The buffer + * is resized as appropriate. */ + static void ConvertUTF8toISO8859_1( + std::string& data); + + // ------------------------------------------------------------------- + /// @brief Enum to define, if empty files are ok or not. + enum TextFileMode { + ALLOW_EMPTY, + FORBID_EMPTY + }; + + // ------------------------------------------------------------------- + /** Utility for text file loaders which copies the contents of the + * file into a memory buffer and converts it to our UTF8 + * representation. + * @param stream Stream to read from. + * @param data Output buffer to be resized and filled with the + * converted text file data. The buffer is terminated with + * a binary 0. + * @param mode Whether it is OK to load empty text files. */ + static void TextFileToBuffer( + IOStream* stream, + std::vector& data, + TextFileMode mode = FORBID_EMPTY); + + // ------------------------------------------------------------------- + /** Utility function to move a std::vector into a aiScene array + * @param vec The vector to be moved + * @param out The output pointer to the allocated array. + * @param numOut The output count of elements copied. */ + template + AI_FORCE_INLINE + static void CopyVector( + std::vector& vec, + T*& out, + unsigned int& outLength) + { + outLength = unsigned(vec.size()); + if (outLength) { + out = new T[outLength]; + std::swap_ranges(vec.begin(), vec.end(), out); + } + } + +protected: + /// Error description in case there was one. + std::string m_ErrorText; + /// Currently set progress handler. + ProgressHandler* m_progress; +}; + + + +} // end of namespace Assimp + +#endif // AI_BASEIMPORTER_H_INC diff --git a/aig/assimp/Bitmap.h b/aig/assimp/Bitmap.h new file mode 100755 index 0000000..e6b5fb1 --- /dev/null +++ b/aig/assimp/Bitmap.h @@ -0,0 +1,125 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +/** @file Bitmap.h + * @brief Defines bitmap format helper for textures + * + * Used for file formats which embed their textures into the model file. + */ + +#ifndef AI_BITMAP_H_INC +#define AI_BITMAP_H_INC + +#include "defs.h" +#include +#include + +struct aiTexture; + +namespace Assimp { + +class IOStream; + +class ASSIMP_API Bitmap { +protected: + + struct Header { + uint16_t type; + uint32_t size; + uint16_t reserved1; + uint16_t reserved2; + uint32_t offset; + + // We define the struct size because sizeof(Header) might return a wrong result because of structure padding. + // Moreover, we must use this ugly and error prone syntax because Visual Studio neither support constexpr or sizeof(name_of_field). + static const std::size_t header_size = + sizeof(uint16_t) + // type + sizeof(uint32_t) + // size + sizeof(uint16_t) + // reserved1 + sizeof(uint16_t) + // reserved2 + sizeof(uint32_t); // offset + }; + + struct DIB { + uint32_t size; + int32_t width; + int32_t height; + uint16_t planes; + uint16_t bits_per_pixel; + uint32_t compression; + uint32_t image_size; + int32_t x_resolution; + int32_t y_resolution; + uint32_t nb_colors; + uint32_t nb_important_colors; + + // We define the struct size because sizeof(DIB) might return a wrong result because of structure padding. + // Moreover, we must use this ugly and error prone syntax because Visual Studio neither support constexpr or sizeof(name_of_field). + static const std::size_t dib_size = + sizeof(uint32_t) + // size + sizeof(int32_t) + // width + sizeof(int32_t) + // height + sizeof(uint16_t) + // planes + sizeof(uint16_t) + // bits_per_pixel + sizeof(uint32_t) + // compression + sizeof(uint32_t) + // image_size + sizeof(int32_t) + // x_resolution + sizeof(int32_t) + // y_resolution + sizeof(uint32_t) + // nb_colors + sizeof(uint32_t); // nb_important_colors + }; + + static const std::size_t mBytesPerPixel = 4; + +public: + static void Save(aiTexture* texture, IOStream* file); + +protected: + static void WriteHeader(Header& header, IOStream* file); + static void WriteDIB(DIB& dib, IOStream* file); + static void WriteData(aiTexture* texture, IOStream* file); +}; + +} + +#endif // AI_BITMAP_H_INC diff --git a/aig/assimp/BlobIOSystem.h b/aig/assimp/BlobIOSystem.h new file mode 100755 index 0000000..d005e5c --- /dev/null +++ b/aig/assimp/BlobIOSystem.h @@ -0,0 +1,338 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +/** @file Provides cheat implementations for IOSystem and IOStream to + * redirect exporter output to a blob chain.*/ + +#ifndef AI_BLOBIOSYSTEM_H_INCLUDED +#define AI_BLOBIOSYSTEM_H_INCLUDED + +#include +#include +#include +#include +#include +#include +#include + +namespace Assimp { + class BlobIOSystem; + +// -------------------------------------------------------------------------------------------- +/** Redirect IOStream to a blob */ +// -------------------------------------------------------------------------------------------- +class BlobIOStream : public IOStream +{ +public: + + BlobIOStream(BlobIOSystem* creator, const std::string& file, size_t initial = 4096) + : buffer() + , cur_size() + , file_size() + , cursor() + , initial(initial) + , file(file) + , creator(creator) + { + } + + + virtual ~BlobIOStream(); + +public: + + // ------------------------------------------------------------------- + aiExportDataBlob* GetBlob() + { + aiExportDataBlob* blob = new aiExportDataBlob(); + blob->size = file_size; + blob->data = buffer; + + buffer = NULL; + + return blob; + } + + +public: + + + // ------------------------------------------------------------------- + virtual size_t Read( void *, + size_t, + size_t ) + { + return 0; + } + + // ------------------------------------------------------------------- + virtual size_t Write(const void* pvBuffer, + size_t pSize, + size_t pCount) + { + pSize *= pCount; + if (cursor + pSize > cur_size) { + Grow(cursor + pSize); + } + + memcpy(buffer+cursor, pvBuffer, pSize); + cursor += pSize; + + file_size = std::max(file_size,cursor); + return pCount; + } + + // ------------------------------------------------------------------- + virtual aiReturn Seek(size_t pOffset, + aiOrigin pOrigin) + { + switch(pOrigin) + { + case aiOrigin_CUR: + cursor += pOffset; + break; + + case aiOrigin_END: + cursor = file_size - pOffset; + break; + + case aiOrigin_SET: + cursor = pOffset; + break; + + default: + return AI_FAILURE; + } + + if (cursor > file_size) { + Grow(cursor); + } + + file_size = std::max(cursor,file_size); + return AI_SUCCESS; + } + + // ------------------------------------------------------------------- + virtual size_t Tell() const + { + return cursor; + } + + // ------------------------------------------------------------------- + virtual size_t FileSize() const + { + return file_size; + } + + // ------------------------------------------------------------------- + virtual void Flush() + { + // ignore + } + + + +private: + + // ------------------------------------------------------------------- + void Grow(size_t need = 0) + { + // 1.5 and phi are very heap-friendly growth factors (the first + // allows for frequent re-use of heap blocks, the second + // forms a fibonacci sequence with similar characteristics - + // since this heavily depends on the heap implementation + // and other factors as well, i'll just go with 1.5 since + // it is quicker to compute). + size_t new_size = std::max(initial, std::max( need, cur_size+(cur_size>>1) )); + + const uint8_t* const old = buffer; + buffer = new uint8_t[new_size]; + + if (old) { + memcpy(buffer,old,cur_size); + delete[] old; + } + + cur_size = new_size; + } + +private: + + uint8_t* buffer; + size_t cur_size,file_size, cursor, initial; + + const std::string file; + BlobIOSystem* const creator; +}; + + +#define AI_BLOBIO_MAGIC "$blobfile" + +// -------------------------------------------------------------------------------------------- +/** Redirect IOSystem to a blob */ +// -------------------------------------------------------------------------------------------- +class BlobIOSystem : public IOSystem +{ + + friend class BlobIOStream; + typedef std::pair BlobEntry; + +public: + + BlobIOSystem() + { + } + + virtual ~BlobIOSystem() + { + for(BlobEntry& blobby : blobs) { + delete blobby.second; + } + } + +public: + + // ------------------------------------------------------------------- + const char* GetMagicFileName() const + { + return AI_BLOBIO_MAGIC; + } + + + // ------------------------------------------------------------------- + aiExportDataBlob* GetBlobChain() + { + // one must be the master + aiExportDataBlob* master = NULL, *cur; + for(const BlobEntry& blobby : blobs) { + if (blobby.first == AI_BLOBIO_MAGIC) { + master = blobby.second; + break; + } + } + if (!master) { + ASSIMP_LOG_ERROR("BlobIOSystem: no data written or master file was not closed properly."); + return NULL; + } + + master->name.Set(""); + + cur = master; + for(const BlobEntry& blobby : blobs) { + if (blobby.second == master) { + continue; + } + + cur->next = blobby.second; + cur = cur->next; + + // extract the file extension from the file written + const std::string::size_type s = blobby.first.find_first_of('.'); + cur->name.Set(s == std::string::npos ? blobby.first : blobby.first.substr(s+1)); + } + + // give up blob ownership + blobs.clear(); + return master; + } + +public: + + // ------------------------------------------------------------------- + virtual bool Exists( const char* pFile) const { + return created.find(std::string(pFile)) != created.end(); + } + + + // ------------------------------------------------------------------- + virtual char getOsSeparator() const { + return '/'; + } + + + // ------------------------------------------------------------------- + virtual IOStream* Open(const char* pFile, + const char* pMode) + { + if (pMode[0] != 'w') { + return NULL; + } + + created.insert(std::string(pFile)); + return new BlobIOStream(this,std::string(pFile)); + } + + // ------------------------------------------------------------------- + virtual void Close( IOStream* pFile) + { + delete pFile; + } + +private: + + // ------------------------------------------------------------------- + void OnDestruct(const std::string& filename, BlobIOStream* child) + { + // we don't know in which the files are closed, so we + // can't reliably say that the first must be the master + // file ... + blobs.push_back( BlobEntry(filename,child->GetBlob()) ); + } + +private: + std::set created; + std::vector< BlobEntry > blobs; +}; + + +// -------------------------------------------------------------------------------------------- +BlobIOStream :: ~BlobIOStream() +{ + creator->OnDestruct(file,this); + delete[] buffer; +} + + +} // end Assimp + +#endif diff --git a/aig/assimp/ByteSwapper.h b/aig/assimp/ByteSwapper.h new file mode 100755 index 0000000..20a2463 --- /dev/null +++ b/aig/assimp/ByteSwapper.h @@ -0,0 +1,287 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file Helper class tp perform various byte oder swappings + (e.g. little to big endian) */ +#ifndef AI_BYTESWAPPER_H_INC +#define AI_BYTESWAPPER_H_INC + +#include +#include +#include + +#if _MSC_VER >= 1400 +#include +#endif + +namespace Assimp { +// -------------------------------------------------------------------------------------- +/** Defines some useful byte order swap routines. + * + * This is required to read big-endian model formats on little-endian machines, + * and vice versa. Direct use of this class is DEPRECATED. Use #StreamReader instead. */ +// -------------------------------------------------------------------------------------- +class ByteSwap { + ByteSwap() AI_NO_EXCEPT {} + +public: + + // ---------------------------------------------------------------------- + /** Swap two bytes of data + * @param[inout] _szOut A void* to save the reintcasts for the caller. */ + static inline void Swap2(void* _szOut) + { + ai_assert(_szOut); + +#if _MSC_VER >= 1400 + uint16_t* const szOut = reinterpret_cast(_szOut); + *szOut = _byteswap_ushort(*szOut); +#else + uint8_t* const szOut = reinterpret_cast(_szOut); + std::swap(szOut[0],szOut[1]); +#endif + } + + // ---------------------------------------------------------------------- + /** Swap four bytes of data + * @param[inout] _szOut A void* to save the reintcasts for the caller. */ + static inline void Swap4(void* _szOut) + { + ai_assert(_szOut); + +#if _MSC_VER >= 1400 + uint32_t* const szOut = reinterpret_cast(_szOut); + *szOut = _byteswap_ulong(*szOut); +#else + uint8_t* const szOut = reinterpret_cast(_szOut); + std::swap(szOut[0],szOut[3]); + std::swap(szOut[1],szOut[2]); +#endif + } + + // ---------------------------------------------------------------------- + /** Swap eight bytes of data + * @param[inout] _szOut A void* to save the reintcasts for the caller. */ + static inline void Swap8(void* _szOut) + { + ai_assert(_szOut); + +#if _MSC_VER >= 1400 + uint64_t* const szOut = reinterpret_cast(_szOut); + *szOut = _byteswap_uint64(*szOut); +#else + uint8_t* const szOut = reinterpret_cast(_szOut); + std::swap(szOut[0],szOut[7]); + std::swap(szOut[1],szOut[6]); + std::swap(szOut[2],szOut[5]); + std::swap(szOut[3],szOut[4]); +#endif + } + + // ---------------------------------------------------------------------- + /** ByteSwap a float. Not a joke. + * @param[inout] fOut ehm. .. */ + static inline void Swap(float* fOut) { + Swap4(fOut); + } + + // ---------------------------------------------------------------------- + /** ByteSwap a double. Not a joke. + * @param[inout] fOut ehm. .. */ + static inline void Swap(double* fOut) { + Swap8(fOut); + } + + + // ---------------------------------------------------------------------- + /** ByteSwap an int16t. Not a joke. + * @param[inout] fOut ehm. .. */ + static inline void Swap(int16_t* fOut) { + Swap2(fOut); + } + + static inline void Swap(uint16_t* fOut) { + Swap2(fOut); + } + + // ---------------------------------------------------------------------- + /** ByteSwap an int32t. Not a joke. + * @param[inout] fOut ehm. .. */ + static inline void Swap(int32_t* fOut){ + Swap4(fOut); + } + + static inline void Swap(uint32_t* fOut){ + Swap4(fOut); + } + + // ---------------------------------------------------------------------- + /** ByteSwap an int64t. Not a joke. + * @param[inout] fOut ehm. .. */ + static inline void Swap(int64_t* fOut) { + Swap8(fOut); + } + + static inline void Swap(uint64_t* fOut) { + Swap8(fOut); + } + + // ---------------------------------------------------------------------- + //! Templatized ByteSwap + //! \returns param tOut as swapped + template + static inline Type Swapped(Type tOut) + { + return _swapper()(tOut); + } + +private: + + template struct _swapper; +}; + +template struct ByteSwap::_swapper { + T operator() (T tOut) { + Swap2(&tOut); + return tOut; + } +}; + +template struct ByteSwap::_swapper { + T operator() (T tOut) { + Swap4(&tOut); + return tOut; + } +}; + +template struct ByteSwap::_swapper { + T operator() (T tOut) { + Swap8(&tOut); + return tOut; + } +}; + + +// -------------------------------------------------------------------------------------- +// ByteSwap macros for BigEndian/LittleEndian support +// -------------------------------------------------------------------------------------- +#if (defined AI_BUILD_BIG_ENDIAN) +# define AI_LE(t) (t) +# define AI_BE(t) ByteSwap::Swapped(t) +# define AI_LSWAP2(p) +# define AI_LSWAP4(p) +# define AI_LSWAP8(p) +# define AI_LSWAP2P(p) +# define AI_LSWAP4P(p) +# define AI_LSWAP8P(p) +# define LE_NCONST const +# define AI_SWAP2(p) ByteSwap::Swap2(&(p)) +# define AI_SWAP4(p) ByteSwap::Swap4(&(p)) +# define AI_SWAP8(p) ByteSwap::Swap8(&(p)) +# define AI_SWAP2P(p) ByteSwap::Swap2((p)) +# define AI_SWAP4P(p) ByteSwap::Swap4((p)) +# define AI_SWAP8P(p) ByteSwap::Swap8((p)) +# define BE_NCONST +#else +# define AI_BE(t) (t) +# define AI_LE(t) ByteSwap::Swapped(t) +# define AI_SWAP2(p) +# define AI_SWAP4(p) +# define AI_SWAP8(p) +# define AI_SWAP2P(p) +# define AI_SWAP4P(p) +# define AI_SWAP8P(p) +# define BE_NCONST const +# define AI_LSWAP2(p) ByteSwap::Swap2(&(p)) +# define AI_LSWAP4(p) ByteSwap::Swap4(&(p)) +# define AI_LSWAP8(p) ByteSwap::Swap8(&(p)) +# define AI_LSWAP2P(p) ByteSwap::Swap2((p)) +# define AI_LSWAP4P(p) ByteSwap::Swap4((p)) +# define AI_LSWAP8P(p) ByteSwap::Swap8((p)) +# define LE_NCONST +#endif + + +namespace Intern { + +// -------------------------------------------------------------------------------------------- +template +struct ByteSwapper { + void operator() (T* inout) { + ByteSwap::Swap(inout); + } +}; + +template +struct ByteSwapper { + void operator() (T*) { + } +}; + +// -------------------------------------------------------------------------------------------- +template +struct Getter { + void operator() (T* inout, bool le) { +#ifdef AI_BUILD_BIG_ENDIAN + le = le; +#else + le = !le; +#endif + if (le) { + ByteSwapper1?true:false)> () (inout); + } + else ByteSwapper () (inout); + } +}; + +template +struct Getter { + + void operator() (T* inout, bool /*le*/) { + // static branch + ByteSwapper1)> () (inout); + } +}; +} // end Intern +} // end Assimp + +#endif //!! AI_BYTESWAPPER_H_INC diff --git a/aig/assimp/Compiler/poppack1.h b/aig/assimp/Compiler/poppack1.h new file mode 100755 index 0000000..e033bc1 --- /dev/null +++ b/aig/assimp/Compiler/poppack1.h @@ -0,0 +1,22 @@ + +// =============================================================================== +// May be included multiple times - resets structure packing to the defaults +// for all supported compilers. Reverts the changes made by #include +// +// Currently this works on the following compilers: +// MSVC 7,8,9 +// GCC +// BORLAND (complains about 'pack state changed but not reverted', but works) +// =============================================================================== + +#ifndef AI_PUSHPACK_IS_DEFINED +# error pushpack1.h must be included after poppack1.h +#endif + +// reset packing to the original value +#if defined(_MSC_VER) || defined(__BORLANDC__) || defined (__BCPLUSPLUS__) +# pragma pack( pop ) +#endif +#undef PACK_STRUCT + +#undef AI_PUSHPACK_IS_DEFINED diff --git a/aig/assimp/Compiler/pstdint.h b/aig/assimp/Compiler/pstdint.h new file mode 100755 index 0000000..4de4ce2 --- /dev/null +++ b/aig/assimp/Compiler/pstdint.h @@ -0,0 +1,912 @@ +/* A portable stdint.h + **************************************************************************** + * BSD License: + **************************************************************************** + * + * Copyright (c) 2005-2016 Paul Hsieh + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + **************************************************************************** + * + * Version 0.1.15.4 + * + * The ANSI C standard committee, for the C99 standard, specified the + * inclusion of a new standard include file called stdint.h. This is + * a very useful and long desired include file which contains several + * very precise definitions for integer scalar types that is + * critically important for making portable several classes of + * applications including cryptography, hashing, variable length + * integer libraries and so on. But for most developers its likely + * useful just for programming sanity. + * + * The problem is that some compiler vendors chose to ignore the C99 + * standard and some older compilers have no opportunity to be updated. + * Because of this situation, simply including stdint.h in your code + * makes it unportable. + * + * So that's what this file is all about. Its an attempt to build a + * single universal include file that works on as many platforms as + * possible to deliver what stdint.h is supposed to. Even compilers + * that already come with stdint.h can use this file instead without + * any loss of functionality. A few things that should be noted about + * this file: + * + * 1) It is not guaranteed to be portable and/or present an identical + * interface on all platforms. The extreme variability of the + * ANSI C standard makes this an impossibility right from the + * very get go. Its really only meant to be useful for the vast + * majority of platforms that possess the capability of + * implementing usefully and precisely defined, standard sized + * integer scalars. Systems which are not intrinsically 2s + * complement may produce invalid constants. + * + * 2) There is an unavoidable use of non-reserved symbols. + * + * 3) Other standard include files are invoked. + * + * 4) This file may come in conflict with future platforms that do + * include stdint.h. The hope is that one or the other can be + * used with no real difference. + * + * 5) In the current version, if your platform can't represent + * int32_t, int16_t and int8_t, it just dumps out with a compiler + * error. + * + * 6) 64 bit integers may or may not be defined. Test for their + * presence with the test: #ifdef INT64_MAX or #ifdef UINT64_MAX. + * Note that this is different from the C99 specification which + * requires the existence of 64 bit support in the compiler. If + * this is not defined for your platform, yet it is capable of + * dealing with 64 bits then it is because this file has not yet + * been extended to cover all of your system's capabilities. + * + * 7) (u)intptr_t may or may not be defined. Test for its presence + * with the test: #ifdef PTRDIFF_MAX. If this is not defined + * for your platform, then it is because this file has not yet + * been extended to cover all of your system's capabilities, not + * because its optional. + * + * 8) The following might not been defined even if your platform is + * capable of defining it: + * + * WCHAR_MIN + * WCHAR_MAX + * (u)int64_t + * PTRDIFF_MIN + * PTRDIFF_MAX + * (u)intptr_t + * + * 9) The following have not been defined: + * + * WINT_MIN + * WINT_MAX + * + * 10) The criteria for defining (u)int_least(*)_t isn't clear, + * except for systems which don't have a type that precisely + * defined 8, 16, or 32 bit types (which this include file does + * not support anyways). Default definitions have been given. + * + * 11) The criteria for defining (u)int_fast(*)_t isn't something I + * would trust to any particular compiler vendor or the ANSI C + * committee. It is well known that "compatible systems" are + * commonly created that have very different performance + * characteristics from the systems they are compatible with, + * especially those whose vendors make both the compiler and the + * system. Default definitions have been given, but its strongly + * recommended that users never use these definitions for any + * reason (they do *NOT* deliver any serious guarantee of + * improved performance -- not in this file, nor any vendor's + * stdint.h). + * + * 12) The following macros: + * + * PRINTF_INTMAX_MODIFIER + * PRINTF_INT64_MODIFIER + * PRINTF_INT32_MODIFIER + * PRINTF_INT16_MODIFIER + * PRINTF_LEAST64_MODIFIER + * PRINTF_LEAST32_MODIFIER + * PRINTF_LEAST16_MODIFIER + * PRINTF_INTPTR_MODIFIER + * + * are strings which have been defined as the modifiers required + * for the "d", "u" and "x" printf formats to correctly output + * (u)intmax_t, (u)int64_t, (u)int32_t, (u)int16_t, (u)least64_t, + * (u)least32_t, (u)least16_t and (u)intptr_t types respectively. + * PRINTF_INTPTR_MODIFIER is not defined for some systems which + * provide their own stdint.h. PRINTF_INT64_MODIFIER is not + * defined if INT64_MAX is not defined. These are an extension + * beyond what C99 specifies must be in stdint.h. + * + * In addition, the following macros are defined: + * + * PRINTF_INTMAX_HEX_WIDTH + * PRINTF_INT64_HEX_WIDTH + * PRINTF_INT32_HEX_WIDTH + * PRINTF_INT16_HEX_WIDTH + * PRINTF_INT8_HEX_WIDTH + * PRINTF_INTMAX_DEC_WIDTH + * PRINTF_INT64_DEC_WIDTH + * PRINTF_INT32_DEC_WIDTH + * PRINTF_INT16_DEC_WIDTH + * PRINTF_UINT8_DEC_WIDTH + * PRINTF_UINTMAX_DEC_WIDTH + * PRINTF_UINT64_DEC_WIDTH + * PRINTF_UINT32_DEC_WIDTH + * PRINTF_UINT16_DEC_WIDTH + * PRINTF_UINT8_DEC_WIDTH + * + * Which specifies the maximum number of characters required to + * print the number of that type in either hexadecimal or decimal. + * These are an extension beyond what C99 specifies must be in + * stdint.h. + * + * Compilers tested (all with 0 warnings at their highest respective + * settings): Borland Turbo C 2.0, WATCOM C/C++ 11.0 (16 bits and 32 + * bits), Microsoft Visual C++ 6.0 (32 bit), Microsoft Visual Studio + * .net (VC7), Intel C++ 4.0, GNU gcc v3.3.3 + * + * This file should be considered a work in progress. Suggestions for + * improvements, especially those which increase coverage are strongly + * encouraged. + * + * Acknowledgements + * + * The following people have made significant contributions to the + * development and testing of this file: + * + * Chris Howie + * John Steele Scott + * Dave Thorup + * John Dill + * Florian Wobbe + * Christopher Sean Morrison + * Mikkel Fahnoe Jorgensen + * + */ + +#include +#include +#include + +/* + * For gcc with _STDINT_H, fill in the PRINTF_INT*_MODIFIER macros, and + * do nothing else. On the Mac OS X version of gcc this is _STDINT_H_. + */ + +#if ((defined(__SUNPRO_C) && __SUNPRO_C >= 0x570) || (defined(_MSC_VER) && _MSC_VER >= 1600) || (defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || (defined (__WATCOMC__) && (defined (_STDINT_H_INCLUDED) || __WATCOMC__ >= 1250)) || (defined(__GNUC__) && (__GNUC__ > 3 || defined(_STDINT_H) || defined(_STDINT_H_) || defined (__UINT_FAST64_TYPE__)) )) && !defined (_PSTDINT_H_INCLUDED) +#include +#define _PSTDINT_H_INCLUDED +# if defined(__GNUC__) && (defined(__x86_64__) || defined(__ppc64__)) && !(defined(__APPLE__) && defined(__MACH__)) +# ifndef PRINTF_INT64_MODIFIER +# define PRINTF_INT64_MODIFIER "l" +# endif +# ifndef PRINTF_INT32_MODIFIER +# define PRINTF_INT32_MODIFIER "" +# endif +# else +# ifndef PRINTF_INT64_MODIFIER +# define PRINTF_INT64_MODIFIER "ll" +# endif +# ifndef PRINTF_INT32_MODIFIER +# if (UINT_MAX == UINT32_MAX) +# define PRINTF_INT32_MODIFIER "" +# else +# define PRINTF_INT32_MODIFIER "l" +# endif +# endif +# endif +# ifndef PRINTF_INT16_MODIFIER +# define PRINTF_INT16_MODIFIER "h" +# endif +# ifndef PRINTF_INTMAX_MODIFIER +# define PRINTF_INTMAX_MODIFIER PRINTF_INT64_MODIFIER +# endif +# ifndef PRINTF_INT64_HEX_WIDTH +# define PRINTF_INT64_HEX_WIDTH "16" +# endif +# ifndef PRINTF_UINT64_HEX_WIDTH +# define PRINTF_UINT64_HEX_WIDTH "16" +# endif +# ifndef PRINTF_INT32_HEX_WIDTH +# define PRINTF_INT32_HEX_WIDTH "8" +# endif +# ifndef PRINTF_UINT32_HEX_WIDTH +# define PRINTF_UINT32_HEX_WIDTH "8" +# endif +# ifndef PRINTF_INT16_HEX_WIDTH +# define PRINTF_INT16_HEX_WIDTH "4" +# endif +# ifndef PRINTF_UINT16_HEX_WIDTH +# define PRINTF_UINT16_HEX_WIDTH "4" +# endif +# ifndef PRINTF_INT8_HEX_WIDTH +# define PRINTF_INT8_HEX_WIDTH "2" +# endif +# ifndef PRINTF_UINT8_HEX_WIDTH +# define PRINTF_UINT8_HEX_WIDTH "2" +# endif +# ifndef PRINTF_INT64_DEC_WIDTH +# define PRINTF_INT64_DEC_WIDTH "19" +# endif +# ifndef PRINTF_UINT64_DEC_WIDTH +# define PRINTF_UINT64_DEC_WIDTH "20" +# endif +# ifndef PRINTF_INT32_DEC_WIDTH +# define PRINTF_INT32_DEC_WIDTH "10" +# endif +# ifndef PRINTF_UINT32_DEC_WIDTH +# define PRINTF_UINT32_DEC_WIDTH "10" +# endif +# ifndef PRINTF_INT16_DEC_WIDTH +# define PRINTF_INT16_DEC_WIDTH "5" +# endif +# ifndef PRINTF_UINT16_DEC_WIDTH +# define PRINTF_UINT16_DEC_WIDTH "5" +# endif +# ifndef PRINTF_INT8_DEC_WIDTH +# define PRINTF_INT8_DEC_WIDTH "3" +# endif +# ifndef PRINTF_UINT8_DEC_WIDTH +# define PRINTF_UINT8_DEC_WIDTH "3" +# endif +# ifndef PRINTF_INTMAX_HEX_WIDTH +# define PRINTF_INTMAX_HEX_WIDTH PRINTF_UINT64_HEX_WIDTH +# endif +# ifndef PRINTF_UINTMAX_HEX_WIDTH +# define PRINTF_UINTMAX_HEX_WIDTH PRINTF_UINT64_HEX_WIDTH +# endif +# ifndef PRINTF_INTMAX_DEC_WIDTH +# define PRINTF_INTMAX_DEC_WIDTH PRINTF_UINT64_DEC_WIDTH +# endif +# ifndef PRINTF_UINTMAX_DEC_WIDTH +# define PRINTF_UINTMAX_DEC_WIDTH PRINTF_UINT64_DEC_WIDTH +# endif + +/* + * Something really weird is going on with Open Watcom. Just pull some of + * these duplicated definitions from Open Watcom's stdint.h file for now. + */ + +# if defined (__WATCOMC__) && __WATCOMC__ >= 1250 +# if !defined (INT64_C) +# define INT64_C(x) (x + (INT64_MAX - INT64_MAX)) +# endif +# if !defined (UINT64_C) +# define UINT64_C(x) (x + (UINT64_MAX - UINT64_MAX)) +# endif +# if !defined (INT32_C) +# define INT32_C(x) (x + (INT32_MAX - INT32_MAX)) +# endif +# if !defined (UINT32_C) +# define UINT32_C(x) (x + (UINT32_MAX - UINT32_MAX)) +# endif +# if !defined (INT16_C) +# define INT16_C(x) (x) +# endif +# if !defined (UINT16_C) +# define UINT16_C(x) (x) +# endif +# if !defined (INT8_C) +# define INT8_C(x) (x) +# endif +# if !defined (UINT8_C) +# define UINT8_C(x) (x) +# endif +# if !defined (UINT64_MAX) +# define UINT64_MAX 18446744073709551615ULL +# endif +# if !defined (INT64_MAX) +# define INT64_MAX 9223372036854775807LL +# endif +# if !defined (UINT32_MAX) +# define UINT32_MAX 4294967295UL +# endif +# if !defined (INT32_MAX) +# define INT32_MAX 2147483647L +# endif +# if !defined (INTMAX_MAX) +# define INTMAX_MAX INT64_MAX +# endif +# if !defined (INTMAX_MIN) +# define INTMAX_MIN INT64_MIN +# endif +# endif +#endif + +/* + * I have no idea what is the truly correct thing to do on older Solaris. + * From some online discussions, this seems to be what is being + * recommended. For people who actually are developing on older Solaris, + * what I would like to know is, does this define all of the relevant + * macros of a complete stdint.h? Remember, in pstdint.h 64 bit is + * considered optional. + */ + +#if (defined(__SUNPRO_C) && __SUNPRO_C >= 0x420) && !defined(_PSTDINT_H_INCLUDED) +#include +#define _PSTDINT_H_INCLUDED +#endif + +#ifndef _PSTDINT_H_INCLUDED +#define _PSTDINT_H_INCLUDED + +#ifndef SIZE_MAX +# define SIZE_MAX (~(size_t)0) +#endif + +/* + * Deduce the type assignments from limits.h under the assumption that + * integer sizes in bits are powers of 2, and follow the ANSI + * definitions. + */ + +#ifndef UINT8_MAX +# define UINT8_MAX 0xff +#endif +#if !defined(uint8_t) && !defined(_UINT8_T) && !defined(vxWorks) +# if (UCHAR_MAX == UINT8_MAX) || defined (S_SPLINT_S) + typedef unsigned char uint8_t; +# define UINT8_C(v) ((uint8_t) v) +# else +# error "Platform not supported" +# endif +#endif + +#ifndef INT8_MAX +# define INT8_MAX 0x7f +#endif +#ifndef INT8_MIN +# define INT8_MIN INT8_C(0x80) +#endif +#if !defined(int8_t) && !defined(_INT8_T) && !defined(vxWorks) +# if (SCHAR_MAX == INT8_MAX) || defined (S_SPLINT_S) + typedef signed char int8_t; +# define INT8_C(v) ((int8_t) v) +# else +# error "Platform not supported" +# endif +#endif + +#ifndef UINT16_MAX +# define UINT16_MAX 0xffff +#endif +#if !defined(uint16_t) && !defined(_UINT16_T) && !defined(vxWorks) +#if (UINT_MAX == UINT16_MAX) || defined (S_SPLINT_S) + typedef unsigned int uint16_t; +# ifndef PRINTF_INT16_MODIFIER +# define PRINTF_INT16_MODIFIER "" +# endif +# define UINT16_C(v) ((uint16_t) (v)) +#elif (USHRT_MAX == UINT16_MAX) + typedef unsigned short uint16_t; +# define UINT16_C(v) ((uint16_t) (v)) +# ifndef PRINTF_INT16_MODIFIER +# define PRINTF_INT16_MODIFIER "h" +# endif +#else +#error "Platform not supported" +#endif +#endif + +#ifndef INT16_MAX +# define INT16_MAX 0x7fff +#endif +#ifndef INT16_MIN +# define INT16_MIN INT16_C(0x8000) +#endif +#if !defined(int16_t) && !defined(_INT16_T) && !defined(vxWorks) +#if (INT_MAX == INT16_MAX) || defined (S_SPLINT_S) + typedef signed int int16_t; +# define INT16_C(v) ((int16_t) (v)) +# ifndef PRINTF_INT16_MODIFIER +# define PRINTF_INT16_MODIFIER "" +# endif +#elif (SHRT_MAX == INT16_MAX) + typedef signed short int16_t; +# define INT16_C(v) ((int16_t) (v)) +# ifndef PRINTF_INT16_MODIFIER +# define PRINTF_INT16_MODIFIER "h" +# endif +#else +#error "Platform not supported" +#endif +#endif + +#ifndef UINT32_MAX +# define UINT32_MAX (0xffffffffUL) +#endif +#if !defined(uint32_t) && !defined(_UINT32_T) && !defined(vxWorks) +#if (ULONG_MAX == UINT32_MAX) || defined (S_SPLINT_S) + typedef unsigned long uint32_t; +# define UINT32_C(v) v ## UL +# ifndef PRINTF_INT32_MODIFIER +# define PRINTF_INT32_MODIFIER "l" +# endif +#elif (UINT_MAX == UINT32_MAX) + typedef unsigned int uint32_t; +# ifndef PRINTF_INT32_MODIFIER +# define PRINTF_INT32_MODIFIER "" +# endif +# define UINT32_C(v) v ## U +#elif (USHRT_MAX == UINT32_MAX) + typedef unsigned short uint32_t; +# define UINT32_C(v) ((unsigned short) (v)) +# ifndef PRINTF_INT32_MODIFIER +# define PRINTF_INT32_MODIFIER "" +# endif +#else +#error "Platform not supported" +#endif +#endif + +#ifndef INT32_MAX +# define INT32_MAX (0x7fffffffL) +#endif +#ifndef INT32_MIN +# define INT32_MIN INT32_C(0x80000000) +#endif +#if !defined(int32_t) && !defined(_INT32_T) && !defined(vxWorks) +#if (LONG_MAX == INT32_MAX) || defined (S_SPLINT_S) + typedef signed long int32_t; +# define INT32_C(v) v ## L +# ifndef PRINTF_INT32_MODIFIER +# define PRINTF_INT32_MODIFIER "l" +# endif +#elif (INT_MAX == INT32_MAX) + typedef signed int int32_t; +# define INT32_C(v) v +# ifndef PRINTF_INT32_MODIFIER +# define PRINTF_INT32_MODIFIER "" +# endif +#elif (SHRT_MAX == INT32_MAX) + typedef signed short int32_t; +# define INT32_C(v) ((short) (v)) +# ifndef PRINTF_INT32_MODIFIER +# define PRINTF_INT32_MODIFIER "" +# endif +#else +#error "Platform not supported" +#endif +#endif + +/* + * The macro stdint_int64_defined is temporarily used to record + * whether or not 64 integer support is available. It must be + * defined for any 64 integer extensions for new platforms that are + * added. + */ + +#undef stdint_int64_defined +#if (defined(__STDC__) && defined(__STDC_VERSION__)) || defined (S_SPLINT_S) +# if (__STDC__ && __STDC_VERSION__ >= 199901L) || defined (S_SPLINT_S) +# define stdint_int64_defined + typedef long long int64_t; + typedef unsigned long long uint64_t; +# define UINT64_C(v) v ## ULL +# define INT64_C(v) v ## LL +# ifndef PRINTF_INT64_MODIFIER +# define PRINTF_INT64_MODIFIER "ll" +# endif +# endif +#endif + +#if !defined (stdint_int64_defined) +# if defined(__GNUC__) && !defined(vxWorks) +# define stdint_int64_defined + __extension__ typedef long long int64_t; + __extension__ typedef unsigned long long uint64_t; +# define UINT64_C(v) v ## ULL +# define INT64_C(v) v ## LL +# ifndef PRINTF_INT64_MODIFIER +# define PRINTF_INT64_MODIFIER "ll" +# endif +# elif defined(__MWERKS__) || defined (__SUNPRO_C) || defined (__SUNPRO_CC) || defined (__APPLE_CC__) || defined (_LONG_LONG) || defined (_CRAYC) || defined (S_SPLINT_S) +# define stdint_int64_defined + typedef long long int64_t; + typedef unsigned long long uint64_t; +# define UINT64_C(v) v ## ULL +# define INT64_C(v) v ## LL +# ifndef PRINTF_INT64_MODIFIER +# define PRINTF_INT64_MODIFIER "ll" +# endif +# elif (defined(__WATCOMC__) && defined(__WATCOM_INT64__)) || (defined(_MSC_VER) && _INTEGRAL_MAX_BITS >= 64) || (defined (__BORLANDC__) && __BORLANDC__ > 0x460) || defined (__alpha) || defined (__DECC) +# define stdint_int64_defined + typedef __int64 int64_t; + typedef unsigned __int64 uint64_t; +# define UINT64_C(v) v ## UI64 +# define INT64_C(v) v ## I64 +# ifndef PRINTF_INT64_MODIFIER +# define PRINTF_INT64_MODIFIER "I64" +# endif +# endif +#endif + +#if !defined (LONG_LONG_MAX) && defined (INT64_C) +# define LONG_LONG_MAX INT64_C (9223372036854775807) +#endif +#ifndef ULONG_LONG_MAX +# define ULONG_LONG_MAX UINT64_C (18446744073709551615) +#endif + +#if !defined (INT64_MAX) && defined (INT64_C) +# define INT64_MAX INT64_C (9223372036854775807) +#endif +#if !defined (INT64_MIN) && defined (INT64_C) +# define INT64_MIN INT64_C (-9223372036854775808) +#endif +#if !defined (UINT64_MAX) && defined (INT64_C) +# define UINT64_MAX UINT64_C (18446744073709551615) +#endif + +/* + * Width of hexadecimal for number field. + */ + +#ifndef PRINTF_INT64_HEX_WIDTH +# define PRINTF_INT64_HEX_WIDTH "16" +#endif +#ifndef PRINTF_INT32_HEX_WIDTH +# define PRINTF_INT32_HEX_WIDTH "8" +#endif +#ifndef PRINTF_INT16_HEX_WIDTH +# define PRINTF_INT16_HEX_WIDTH "4" +#endif +#ifndef PRINTF_INT8_HEX_WIDTH +# define PRINTF_INT8_HEX_WIDTH "2" +#endif +#ifndef PRINTF_INT64_DEC_WIDTH +# define PRINTF_INT64_DEC_WIDTH "19" +#endif +#ifndef PRINTF_INT32_DEC_WIDTH +# define PRINTF_INT32_DEC_WIDTH "10" +#endif +#ifndef PRINTF_INT16_DEC_WIDTH +# define PRINTF_INT16_DEC_WIDTH "5" +#endif +#ifndef PRINTF_INT8_DEC_WIDTH +# define PRINTF_INT8_DEC_WIDTH "3" +#endif +#ifndef PRINTF_UINT64_DEC_WIDTH +# define PRINTF_UINT64_DEC_WIDTH "20" +#endif +#ifndef PRINTF_UINT32_DEC_WIDTH +# define PRINTF_UINT32_DEC_WIDTH "10" +#endif +#ifndef PRINTF_UINT16_DEC_WIDTH +# define PRINTF_UINT16_DEC_WIDTH "5" +#endif +#ifndef PRINTF_UINT8_DEC_WIDTH +# define PRINTF_UINT8_DEC_WIDTH "3" +#endif + +/* + * Ok, lets not worry about 128 bit integers for now. Moore's law says + * we don't need to worry about that until about 2040 at which point + * we'll have bigger things to worry about. + */ + +#ifdef stdint_int64_defined + typedef int64_t intmax_t; + typedef uint64_t uintmax_t; +# define INTMAX_MAX INT64_MAX +# define INTMAX_MIN INT64_MIN +# define UINTMAX_MAX UINT64_MAX +# define UINTMAX_C(v) UINT64_C(v) +# define INTMAX_C(v) INT64_C(v) +# ifndef PRINTF_INTMAX_MODIFIER +# define PRINTF_INTMAX_MODIFIER PRINTF_INT64_MODIFIER +# endif +# ifndef PRINTF_INTMAX_HEX_WIDTH +# define PRINTF_INTMAX_HEX_WIDTH PRINTF_INT64_HEX_WIDTH +# endif +# ifndef PRINTF_INTMAX_DEC_WIDTH +# define PRINTF_INTMAX_DEC_WIDTH PRINTF_INT64_DEC_WIDTH +# endif +#else + typedef int32_t intmax_t; + typedef uint32_t uintmax_t; +# define INTMAX_MAX INT32_MAX +# define UINTMAX_MAX UINT32_MAX +# define UINTMAX_C(v) UINT32_C(v) +# define INTMAX_C(v) INT32_C(v) +# ifndef PRINTF_INTMAX_MODIFIER +# define PRINTF_INTMAX_MODIFIER PRINTF_INT32_MODIFIER +# endif +# ifndef PRINTF_INTMAX_HEX_WIDTH +# define PRINTF_INTMAX_HEX_WIDTH PRINTF_INT32_HEX_WIDTH +# endif +# ifndef PRINTF_INTMAX_DEC_WIDTH +# define PRINTF_INTMAX_DEC_WIDTH PRINTF_INT32_DEC_WIDTH +# endif +#endif + +/* + * Because this file currently only supports platforms which have + * precise powers of 2 as bit sizes for the default integers, the + * least definitions are all trivial. Its possible that a future + * version of this file could have different definitions. + */ + +#ifndef stdint_least_defined + typedef int8_t int_least8_t; + typedef uint8_t uint_least8_t; + typedef int16_t int_least16_t; + typedef uint16_t uint_least16_t; + typedef int32_t int_least32_t; + typedef uint32_t uint_least32_t; +# define PRINTF_LEAST32_MODIFIER PRINTF_INT32_MODIFIER +# define PRINTF_LEAST16_MODIFIER PRINTF_INT16_MODIFIER +# define UINT_LEAST8_MAX UINT8_MAX +# define INT_LEAST8_MAX INT8_MAX +# define UINT_LEAST16_MAX UINT16_MAX +# define INT_LEAST16_MAX INT16_MAX +# define UINT_LEAST32_MAX UINT32_MAX +# define INT_LEAST32_MAX INT32_MAX +# define INT_LEAST8_MIN INT8_MIN +# define INT_LEAST16_MIN INT16_MIN +# define INT_LEAST32_MIN INT32_MIN +# ifdef stdint_int64_defined + typedef int64_t int_least64_t; + typedef uint64_t uint_least64_t; +# define PRINTF_LEAST64_MODIFIER PRINTF_INT64_MODIFIER +# define UINT_LEAST64_MAX UINT64_MAX +# define INT_LEAST64_MAX INT64_MAX +# define INT_LEAST64_MIN INT64_MIN +# endif +#endif +#undef stdint_least_defined + +/* + * The ANSI C committee pretending to know or specify anything about + * performance is the epitome of misguided arrogance. The mandate of + * this file is to *ONLY* ever support that absolute minimum + * definition of the fast integer types, for compatibility purposes. + * No extensions, and no attempt to suggest what may or may not be a + * faster integer type will ever be made in this file. Developers are + * warned to stay away from these types when using this or any other + * stdint.h. + */ + +typedef int_least8_t int_fast8_t; +typedef uint_least8_t uint_fast8_t; +typedef int_least16_t int_fast16_t; +typedef uint_least16_t uint_fast16_t; +typedef int_least32_t int_fast32_t; +typedef uint_least32_t uint_fast32_t; +#define UINT_FAST8_MAX UINT_LEAST8_MAX +#define INT_FAST8_MAX INT_LEAST8_MAX +#define UINT_FAST16_MAX UINT_LEAST16_MAX +#define INT_FAST16_MAX INT_LEAST16_MAX +#define UINT_FAST32_MAX UINT_LEAST32_MAX +#define INT_FAST32_MAX INT_LEAST32_MAX +#define INT_FAST8_MIN INT_LEAST8_MIN +#define INT_FAST16_MIN INT_LEAST16_MIN +#define INT_FAST32_MIN INT_LEAST32_MIN +#ifdef stdint_int64_defined + typedef int_least64_t int_fast64_t; + typedef uint_least64_t uint_fast64_t; +# define UINT_FAST64_MAX UINT_LEAST64_MAX +# define INT_FAST64_MAX INT_LEAST64_MAX +# define INT_FAST64_MIN INT_LEAST64_MIN +#endif + +#undef stdint_int64_defined + +/* + * Whatever piecemeal, per compiler thing we can do about the wchar_t + * type limits. + */ + +#if defined(__WATCOMC__) || defined(_MSC_VER) || defined (__GNUC__) && !defined(vxWorks) +# include +# ifndef WCHAR_MIN +# define WCHAR_MIN 0 +# endif +# ifndef WCHAR_MAX +# define WCHAR_MAX ((wchar_t)-1) +# endif +#endif + +/* + * Whatever piecemeal, per compiler/platform thing we can do about the + * (u)intptr_t types and limits. + */ + +#if (defined (_MSC_VER) && defined (_UINTPTR_T_DEFINED)) || defined (_UINTPTR_T) +# define STDINT_H_UINTPTR_T_DEFINED +#endif + +#ifndef STDINT_H_UINTPTR_T_DEFINED +# if defined (__alpha__) || defined (__ia64__) || defined (__x86_64__) || defined (_WIN64) || defined (__ppc64__) +# define stdint_intptr_bits 64 +# elif defined (__WATCOMC__) || defined (__TURBOC__) +# if defined(__TINY__) || defined(__SMALL__) || defined(__MEDIUM__) +# define stdint_intptr_bits 16 +# else +# define stdint_intptr_bits 32 +# endif +# elif defined (__i386__) || defined (_WIN32) || defined (WIN32) || defined (__ppc64__) +# define stdint_intptr_bits 32 +# elif defined (__INTEL_COMPILER) +/* TODO -- what did Intel do about x86-64? */ +# else +/* #error "This platform might not be supported yet" */ +# endif + +# ifdef stdint_intptr_bits +# define stdint_intptr_glue3_i(a,b,c) a##b##c +# define stdint_intptr_glue3(a,b,c) stdint_intptr_glue3_i(a,b,c) +# ifndef PRINTF_INTPTR_MODIFIER +# define PRINTF_INTPTR_MODIFIER stdint_intptr_glue3(PRINTF_INT,stdint_intptr_bits,_MODIFIER) +# endif +# ifndef PTRDIFF_MAX +# define PTRDIFF_MAX stdint_intptr_glue3(INT,stdint_intptr_bits,_MAX) +# endif +# ifndef PTRDIFF_MIN +# define PTRDIFF_MIN stdint_intptr_glue3(INT,stdint_intptr_bits,_MIN) +# endif +# ifndef UINTPTR_MAX +# define UINTPTR_MAX stdint_intptr_glue3(UINT,stdint_intptr_bits,_MAX) +# endif +# ifndef INTPTR_MAX +# define INTPTR_MAX stdint_intptr_glue3(INT,stdint_intptr_bits,_MAX) +# endif +# ifndef INTPTR_MIN +# define INTPTR_MIN stdint_intptr_glue3(INT,stdint_intptr_bits,_MIN) +# endif +# ifndef INTPTR_C +# define INTPTR_C(x) stdint_intptr_glue3(INT,stdint_intptr_bits,_C)(x) +# endif +# ifndef UINTPTR_C +# define UINTPTR_C(x) stdint_intptr_glue3(UINT,stdint_intptr_bits,_C)(x) +# endif + typedef stdint_intptr_glue3(uint,stdint_intptr_bits,_t) uintptr_t; + typedef stdint_intptr_glue3( int,stdint_intptr_bits,_t) intptr_t; +# else +/* TODO -- This following is likely wrong for some platforms, and does + nothing for the definition of uintptr_t. */ + typedef ptrdiff_t intptr_t; +# endif +# define STDINT_H_UINTPTR_T_DEFINED +#endif + +/* + * Assumes sig_atomic_t is signed and we have a 2s complement machine. + */ + +#ifndef SIG_ATOMIC_MAX +# define SIG_ATOMIC_MAX ((((sig_atomic_t) 1) << (sizeof (sig_atomic_t)*CHAR_BIT-1)) - 1) +#endif + +#endif + +#if defined (__TEST_PSTDINT_FOR_CORRECTNESS) + +/* + * Please compile with the maximum warning settings to make sure macros are + * not defined more than once. + */ + +#include +#include +#include + +#define glue3_aux(x,y,z) x ## y ## z +#define glue3(x,y,z) glue3_aux(x,y,z) + +#define DECLU(bits) glue3(uint,bits,_t) glue3(u,bits,) = glue3(UINT,bits,_C) (0); +#define DECLI(bits) glue3(int,bits,_t) glue3(i,bits,) = glue3(INT,bits,_C) (0); + +#define DECL(us,bits) glue3(DECL,us,) (bits) + +#define TESTUMAX(bits) glue3(u,bits,) = ~glue3(u,bits,); if (glue3(UINT,bits,_MAX) != glue3(u,bits,)) printf ("Something wrong with UINT%d_MAX\n", bits) + +#define REPORTERROR(msg) { err_n++; if (err_first <= 0) err_first = __LINE__; printf msg; } + +int main () { + int err_n = 0; + int err_first = 0; + DECL(I,8) + DECL(U,8) + DECL(I,16) + DECL(U,16) + DECL(I,32) + DECL(U,32) +#ifdef INT64_MAX + DECL(I,64) + DECL(U,64) +#endif + intmax_t imax = INTMAX_C(0); + uintmax_t umax = UINTMAX_C(0); + char str0[256], str1[256]; + + sprintf (str0, "%" PRINTF_INT32_MODIFIER "d", INT32_C(2147483647)); + if (0 != strcmp (str0, "2147483647")) REPORTERROR (("Something wrong with PRINTF_INT32_MODIFIER : %s\n", str0)); + if (atoi(PRINTF_INT32_DEC_WIDTH) != (int) strlen(str0)) REPORTERROR (("Something wrong with PRINTF_INT32_DEC_WIDTH : %s\n", PRINTF_INT32_DEC_WIDTH)); + sprintf (str0, "%" PRINTF_INT32_MODIFIER "u", UINT32_C(4294967295)); + if (0 != strcmp (str0, "4294967295")) REPORTERROR (("Something wrong with PRINTF_INT32_MODIFIER : %s\n", str0)); + if (atoi(PRINTF_UINT32_DEC_WIDTH) != (int) strlen(str0)) REPORTERROR (("Something wrong with PRINTF_UINT32_DEC_WIDTH : %s\n", PRINTF_UINT32_DEC_WIDTH)); +#ifdef INT64_MAX + sprintf (str1, "%" PRINTF_INT64_MODIFIER "d", INT64_C(9223372036854775807)); + if (0 != strcmp (str1, "9223372036854775807")) REPORTERROR (("Something wrong with PRINTF_INT32_MODIFIER : %s\n", str1)); + if (atoi(PRINTF_INT64_DEC_WIDTH) != (int) strlen(str1)) REPORTERROR (("Something wrong with PRINTF_INT64_DEC_WIDTH : %s, %d\n", PRINTF_INT64_DEC_WIDTH, (int) strlen(str1))); + sprintf (str1, "%" PRINTF_INT64_MODIFIER "u", UINT64_C(18446744073709550591)); + if (0 != strcmp (str1, "18446744073709550591")) REPORTERROR (("Something wrong with PRINTF_INT32_MODIFIER : %s\n", str1)); + if (atoi(PRINTF_UINT64_DEC_WIDTH) != (int) strlen(str1)) REPORTERROR (("Something wrong with PRINTF_UINT64_DEC_WIDTH : %s, %d\n", PRINTF_UINT64_DEC_WIDTH, (int) strlen(str1))); +#endif + + sprintf (str0, "%d %x\n", 0, ~0); + + sprintf (str1, "%d %x\n", i8, ~0); + if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with i8 : %s\n", str1)); + sprintf (str1, "%u %x\n", u8, ~0); + if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with u8 : %s\n", str1)); + sprintf (str1, "%d %x\n", i16, ~0); + if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with i16 : %s\n", str1)); + sprintf (str1, "%u %x\n", u16, ~0); + if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with u16 : %s\n", str1)); + sprintf (str1, "%" PRINTF_INT32_MODIFIER "d %x\n", i32, ~0); + if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with i32 : %s\n", str1)); + sprintf (str1, "%" PRINTF_INT32_MODIFIER "u %x\n", u32, ~0); + if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with u32 : %s\n", str1)); +#ifdef INT64_MAX + sprintf (str1, "%" PRINTF_INT64_MODIFIER "d %x\n", i64, ~0); + if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with i64 : %s\n", str1)); +#endif + sprintf (str1, "%" PRINTF_INTMAX_MODIFIER "d %x\n", imax, ~0); + if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with imax : %s\n", str1)); + sprintf (str1, "%" PRINTF_INTMAX_MODIFIER "u %x\n", umax, ~0); + if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with umax : %s\n", str1)); + + TESTUMAX(8); + TESTUMAX(16); + TESTUMAX(32); +#ifdef INT64_MAX + TESTUMAX(64); +#endif + +#define STR(v) #v +#define Q(v) printf ("sizeof " STR(v) " = %u\n", (unsigned) sizeof (v)); + if (err_n) { + printf ("pstdint.h is not correct. Please use sizes below to correct it:\n"); + } + + Q(int) + Q(unsigned) + Q(long int) + Q(short int) + Q(int8_t) + Q(int16_t) + Q(int32_t) +#ifdef INT64_MAX + Q(int64_t) +#endif + + return EXIT_SUCCESS; +} + +#endif diff --git a/aig/assimp/Compiler/pushpack1.h b/aig/assimp/Compiler/pushpack1.h new file mode 100755 index 0000000..4c9fbb8 --- /dev/null +++ b/aig/assimp/Compiler/pushpack1.h @@ -0,0 +1,43 @@ + + +// =============================================================================== +// May be included multiple times - sets structure packing to 1 +// for all supported compilers. #include reverts the changes. +// +// Currently this works on the following compilers: +// MSVC 7,8,9 +// GCC +// BORLAND (complains about 'pack state changed but not reverted', but works) +// Clang +// +// +// USAGE: +// +// struct StructToBePacked { +// } PACK_STRUCT; +// +// =============================================================================== + +#ifdef AI_PUSHPACK_IS_DEFINED +# error poppack1.h must be included after pushpack1.h +#endif + +#if defined(_MSC_VER) || defined(__BORLANDC__) || defined (__BCPLUSPLUS__) +# pragma pack(push,1) +# define PACK_STRUCT +#elif defined( __GNUC__ ) || defined(__clang__) +# if !defined(HOST_MINGW) +# define PACK_STRUCT __attribute__((__packed__)) +# else +# define PACK_STRUCT __attribute__((gcc_struct, __packed__)) +# endif +#else +# error Compiler not supported +#endif + +#if defined(_MSC_VER) +// C4103: Packing was changed after the inclusion of the header, probably missing #pragma pop +# pragma warning (disable : 4103) +#endif + +#define AI_PUSHPACK_IS_DEFINED diff --git a/aig/assimp/CreateAnimMesh.h b/aig/assimp/CreateAnimMesh.h new file mode 100755 index 0000000..a601735 --- /dev/null +++ b/aig/assimp/CreateAnimMesh.h @@ -0,0 +1,58 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file CreateAnimMesh.h + * Create AnimMesh from Mesh + */ +#ifndef INCLUDED_AI_CREATE_ANIM_MESH_H +#define INCLUDED_AI_CREATE_ANIM_MESH_H + +#include + +namespace Assimp { + +/** Create aiAnimMesh from aiMesh. */ +ASSIMP_API aiAnimMesh *aiCreateAnimMesh(const aiMesh *mesh); + +} // end of namespace Assimp +#endif // INCLUDED_AI_CREATE_ANIM_MESH_H + diff --git a/aig/assimp/DefaultIOStream.h b/aig/assimp/DefaultIOStream.h new file mode 100755 index 0000000..994d728 --- /dev/null +++ b/aig/assimp/DefaultIOStream.h @@ -0,0 +1,140 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file Default file I/O using fXXX()-family of functions */ +#ifndef AI_DEFAULTIOSTREAM_H_INC +#define AI_DEFAULTIOSTREAM_H_INC + +#include +#include +#include +#include + +namespace Assimp { + +// ---------------------------------------------------------------------------------- +//! @class DefaultIOStream +//! @brief Default IO implementation, use standard IO operations +//! @note An instance of this class can exist without a valid file handle +//! attached to it. All calls fail, but the instance can nevertheless be +//! used with no restrictions. +class ASSIMP_API DefaultIOStream : public IOStream +{ + friend class DefaultIOSystem; +#if __ANDROID__ +# if __ANDROID_API__ > 9 +# if defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT) + friend class AndroidJNIIOSystem; +# endif // defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT) +# endif // __ANDROID_API__ > 9 +#endif // __ANDROID__ + +protected: + DefaultIOStream() AI_NO_EXCEPT; + DefaultIOStream(FILE* pFile, const std::string &strFilename); + +public: + /** Destructor public to allow simple deletion to close the file. */ + ~DefaultIOStream (); + + // ------------------------------------------------------------------- + /// Read from stream + size_t Read(void* pvBuffer, + size_t pSize, + size_t pCount); + + + // ------------------------------------------------------------------- + /// Write to stream + size_t Write(const void* pvBuffer, + size_t pSize, + size_t pCount); + + // ------------------------------------------------------------------- + /// Seek specific position + aiReturn Seek(size_t pOffset, + aiOrigin pOrigin); + + // ------------------------------------------------------------------- + /// Get current seek position + size_t Tell() const; + + // ------------------------------------------------------------------- + /// Get size of file + size_t FileSize() const; + + // ------------------------------------------------------------------- + /// Flush file contents + void Flush(); + +private: + // File data-structure, using clib + FILE* mFile; + // Filename + std::string mFilename; + // Cached file size + mutable size_t mCachedSize; +}; + +// ---------------------------------------------------------------------------------- +inline +DefaultIOStream::DefaultIOStream() AI_NO_EXCEPT +: mFile(nullptr) +, mFilename("") +, mCachedSize(SIZE_MAX) { + // empty +} + +// ---------------------------------------------------------------------------------- +inline +DefaultIOStream::DefaultIOStream (FILE* pFile, const std::string &strFilename) +: mFile(pFile) +, mFilename(strFilename) +, mCachedSize(SIZE_MAX) { + // empty +} +// ---------------------------------------------------------------------------------- + +} // ns assimp + +#endif //!!AI_DEFAULTIOSTREAM_H_INC + diff --git a/aig/assimp/DefaultIOSystem.h b/aig/assimp/DefaultIOSystem.h new file mode 100755 index 0000000..2dd5c80 --- /dev/null +++ b/aig/assimp/DefaultIOSystem.h @@ -0,0 +1,93 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file Default implementation of IOSystem using the standard C file functions */ +#ifndef AI_DEFAULTIOSYSTEM_H_INC +#define AI_DEFAULTIOSYSTEM_H_INC + +#include + +namespace Assimp { + +// --------------------------------------------------------------------------- +/** Default implementation of IOSystem using the standard C file functions */ +class ASSIMP_API DefaultIOSystem : public IOSystem { +public: + // ------------------------------------------------------------------- + /** Tests for the existence of a file at the given path. */ + bool Exists( const char* pFile) const; + + // ------------------------------------------------------------------- + /** Returns the directory separator. */ + char getOsSeparator() const; + + // ------------------------------------------------------------------- + /** Open a new file with a given path. */ + IOStream* Open( const char* pFile, const char* pMode = "rb"); + + // ------------------------------------------------------------------- + /** Closes the given file and releases all resources associated with it. */ + void Close( IOStream* pFile); + + // ------------------------------------------------------------------- + /** Compare two paths */ + bool ComparePaths (const char* one, const char* second) const; + + /** @brief get the file name of a full filepath + * example: /tmp/archive.tar.gz -> archive.tar.gz + */ + static std::string fileName( const std::string &path ); + + /** @brief get the complete base name of a full filepath + * example: /tmp/archive.tar.gz -> archive.tar + */ + static std::string completeBaseName( const std::string &path); + + /** @brief get the path of a full filepath + * example: /tmp/archive.tar.gz -> /tmp/ + */ + static std::string absolutePath( const std::string &path); +}; + +} //!ns Assimp + +#endif //AI_DEFAULTIOSYSTEM_H_INC diff --git a/aig/assimp/DefaultLogger.hpp b/aig/assimp/DefaultLogger.hpp new file mode 100755 index 0000000..1946e25 --- /dev/null +++ b/aig/assimp/DefaultLogger.hpp @@ -0,0 +1,188 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ +/** @file DefaultLogger.hpp +*/ + +#ifndef INCLUDED_AI_DEFAULTLOGGER +#define INCLUDED_AI_DEFAULTLOGGER + +#include "Logger.hpp" +#include "LogStream.hpp" +#include "NullLogger.hpp" +#include + +namespace Assimp { +// ------------------------------------------------------------------------------------ +class IOStream; +struct LogStreamInfo; + +/** default name of logfile */ +#define ASSIMP_DEFAULT_LOG_NAME "AssimpLog.txt" + +// ------------------------------------------------------------------------------------ +/** @brief CPP-API: Primary logging facility of Assimp. + * + * The library stores its primary #Logger as a static member of this class. + * #get() returns this primary logger. By default the underlying implementation is + * just a #NullLogger which rejects all log messages. By calling #create(), logging + * is turned on. To capture the log output multiple log streams (#LogStream) can be + * attach to the logger. Some default streams for common streaming locations (such as + * a file, std::cout, OutputDebugString()) are also provided. + * + * If you wish to customize the logging at an even deeper level supply your own + * implementation of #Logger to #set(). + * @note The whole logging stuff causes a small extra overhead for all imports. */ +class ASSIMP_API DefaultLogger : + public Logger { + +public: + + // ---------------------------------------------------------------------- + /** @brief Creates a logging instance. + * @param name Name for log file. Only valid in combination + * with the aiDefaultLogStream_FILE flag. + * @param severity Log severity, VERBOSE turns on debug messages + * @param defStreams Default log streams to be attached. Any bitwise + * combination of the aiDefaultLogStream enumerated values. + * If #aiDefaultLogStream_FILE is specified but an empty string is + * passed for 'name', no log file is created at all. + * @param io IOSystem to be used to open external files (such as the + * log file). Pass NULL to rely on the default implementation. + * This replaces the default #NullLogger with a #DefaultLogger instance. */ + static Logger *create(const char* name = ASSIMP_DEFAULT_LOG_NAME, + LogSeverity severity = NORMAL, + unsigned int defStreams = aiDefaultLogStream_DEBUGGER | aiDefaultLogStream_FILE, + IOSystem* io = NULL); + + // ---------------------------------------------------------------------- + /** @brief Setup a custom #Logger implementation. + * + * Use this if the provided #DefaultLogger class doesn't fit into + * your needs. If the provided message formatting is OK for you, + * it's much easier to use #create() and to attach your own custom + * output streams to it. + * @param logger Pass NULL to setup a default NullLogger*/ + static void set (Logger *logger); + + // ---------------------------------------------------------------------- + /** @brief Getter for singleton instance + * @return Only instance. This is never null, but it could be a + * NullLogger. Use isNullLogger to check this.*/ + static Logger *get(); + + // ---------------------------------------------------------------------- + /** @brief Return whether a #NullLogger is currently active + * @return true if the current logger is a #NullLogger. + * Use create() or set() to setup a logger that does actually do + * something else than just rejecting all log messages. */ + static bool isNullLogger(); + + // ---------------------------------------------------------------------- + /** @brief Kills the current singleton logger and replaces it with a + * #NullLogger instance. */ + static void kill(); + + // ---------------------------------------------------------------------- + /** @copydoc Logger::attachStream */ + bool attachStream(LogStream *pStream, + unsigned int severity); + + // ---------------------------------------------------------------------- + /** @copydoc Logger::detatchStream */ + bool detatchStream(LogStream *pStream, + unsigned int severity); + +private: + // ---------------------------------------------------------------------- + /** @briefPrivate construction for internal use by create(). + * @param severity Logging granularity */ + explicit DefaultLogger(LogSeverity severity); + + // ---------------------------------------------------------------------- + /** @briefDestructor */ + ~DefaultLogger(); + + /** @brief Logs debug infos, only been written when severity level VERBOSE is set */ + void OnDebug(const char* message); + + /** @brief Logs an info message */ + void OnInfo(const char* message); + + /** @brief Logs a warning message */ + void OnWarn(const char* message); + + /** @brief Logs an error message */ + void OnError(const char* message); + + // ---------------------------------------------------------------------- + /** @brief Writes a message to all streams */ + void WriteToStreams(const char* message, ErrorSeverity ErrorSev ); + + // ---------------------------------------------------------------------- + /** @brief Returns the thread id. + * @note This is an OS specific feature, if not supported, a + * zero will be returned. + */ + unsigned int GetThreadID(); + +private: + // Aliases for stream container + typedef std::vector StreamArray; + typedef std::vector::iterator StreamIt; + typedef std::vector::const_iterator ConstStreamIt; + + //! only logging instance + static Logger *m_pLogger; + static NullLogger s_pNullLogger; + + //! Attached streams + StreamArray m_StreamArray; + + bool noRepeatMsg; + char lastMsg[MAX_LOG_MESSAGE_LENGTH*2]; + size_t lastLen; +}; +// ------------------------------------------------------------------------------------ + +} // Namespace Assimp + +#endif // !! INCLUDED_AI_DEFAULTLOGGER diff --git a/aig/assimp/Defines.h b/aig/assimp/Defines.h new file mode 100755 index 0000000..15e1d83 --- /dev/null +++ b/aig/assimp/Defines.h @@ -0,0 +1,49 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2012, assimp team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +// We need those constants, workaround for any platforms where nobody defined them yet +#if (!defined SIZE_MAX) +# define SIZE_MAX (~((size_t)0)) +#endif + +#if (!defined UINT_MAX) +# define UINT_MAX (~((unsigned int)0)) +#endif + diff --git a/aig/assimp/Exceptional.h b/aig/assimp/Exceptional.h new file mode 100755 index 0000000..5109b8f --- /dev/null +++ b/aig/assimp/Exceptional.h @@ -0,0 +1,125 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2008, assimp team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +#ifndef INCLUDED_EXCEPTIONAL_H +#define INCLUDED_EXCEPTIONAL_H + +#include +#include +using std::runtime_error; + +#ifdef _MSC_VER +# pragma warning(disable : 4275) +#endif + +// --------------------------------------------------------------------------- +/** FOR IMPORTER PLUGINS ONLY: Simple exception class to be thrown if an + * unrecoverable error occurs while importing. Loading APIs return + * NULL instead of a valid aiScene then. */ +class DeadlyImportError + : public runtime_error +{ +public: + /** Constructor with arguments */ + explicit DeadlyImportError( const std::string& errorText) + : runtime_error(errorText) + { + } + +private: +}; + +typedef DeadlyImportError DeadlyExportError; + +#ifdef _MSC_VER +# pragma warning(default : 4275) +#endif + +// --------------------------------------------------------------------------- +template +struct ExceptionSwallower { + T operator ()() const { + return T(); + } +}; + +// --------------------------------------------------------------------------- +template +struct ExceptionSwallower { + T* operator ()() const { + return NULL; + } +}; + +// --------------------------------------------------------------------------- +template <> +struct ExceptionSwallower { + aiReturn operator ()() const { + try { + throw; + } + catch (std::bad_alloc&) { + return aiReturn_OUTOFMEMORY; + } + catch (...) { + return aiReturn_FAILURE; + } + } +}; + +// --------------------------------------------------------------------------- +template <> +struct ExceptionSwallower { + void operator ()() const { + return; + } +}; + +#define ASSIMP_BEGIN_EXCEPTION_REGION()\ +{\ + try { + +#define ASSIMP_END_EXCEPTION_REGION(type)\ + } catch(...) {\ + return ExceptionSwallower()();\ + }\ +} + +#endif // INCLUDED_EXCEPTIONAL_H diff --git a/aig/assimp/Exporter.hpp b/aig/assimp/Exporter.hpp new file mode 100755 index 0000000..ea0303e --- /dev/null +++ b/aig/assimp/Exporter.hpp @@ -0,0 +1,505 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +/** @file Exporter.hpp +* @brief Defines the CPP-API for the Assimp export interface +*/ +#pragma once +#ifndef AI_EXPORT_HPP_INC +#define AI_EXPORT_HPP_INC + +#ifndef ASSIMP_BUILD_NO_EXPORT + +#include "cexport.h" +#include + +namespace Assimp { + +class ExporterPimpl; +class IOSystem; +class ProgressHandler; + +// ---------------------------------------------------------------------------------- +/** CPP-API: The Exporter class forms an C++ interface to the export functionality + * of the Open Asset Import Library. Note that the export interface is available + * only if Assimp has been built with ASSIMP_BUILD_NO_EXPORT not defined. + * + * The interface is modeled after the importer interface and mostly + * symmetric. The same rules for threading etc. apply. + * + * In a nutshell, there are two export interfaces: #Export, which writes the + * output file(s) either to the regular file system or to a user-supplied + * #IOSystem, and #ExportToBlob which returns a linked list of memory + * buffers (blob), each referring to one output file (in most cases + * there will be only one output file of course, but this extra complexity is + * needed since Assimp aims at supporting a wide range of file formats). + * + * #ExportToBlob is especially useful if you intend to work + * with the data in-memory. +*/ +class ASSIMP_API ExportProperties; + +class ASSIMP_API Exporter { +public: + /** Function pointer type of a Export worker function */ + typedef void (*fpExportFunc)(const char*, IOSystem*, const aiScene*, const ExportProperties*); + + /** Internal description of an Assimp export format option */ + struct ExportFormatEntry { + /// Public description structure to be returned by aiGetExportFormatDescription() + aiExportFormatDesc mDescription; + + // Worker function to do the actual exporting + fpExportFunc mExportFunction; + + // Post-processing steps to be executed PRIOR to invoking mExportFunction + unsigned int mEnforcePP; + + // Constructor to fill all entries + ExportFormatEntry( const char* pId, const char* pDesc, const char* pExtension, fpExportFunc pFunction, unsigned int pEnforcePP = 0u) + { + mDescription.id = pId; + mDescription.description = pDesc; + mDescription.fileExtension = pExtension; + mExportFunction = pFunction; + mEnforcePP = pEnforcePP; + } + + ExportFormatEntry() : + mExportFunction() + , mEnforcePP() + { + mDescription.id = NULL; + mDescription.description = NULL; + mDescription.fileExtension = NULL; + } + }; + + /** + * @brief The class constructor. + */ + Exporter(); + + /** + * @brief The class destructor. + */ + ~Exporter(); + + // ------------------------------------------------------------------- + /** Supplies a custom IO handler to the exporter to use to open and + * access files. + * + * If you need #Export to use custom IO logic to access the files, + * you need to supply a custom implementation of IOSystem and + * IOFile to the exporter. + * + * #Exporter takes ownership of the object and will destroy it + * afterwards. The previously assigned handler will be deleted. + * Pass NULL to take again ownership of your IOSystem and reset Assimp + * to use its default implementation, which uses plain file IO. + * + * @param pIOHandler The IO handler to be used in all file accesses + * of the Importer. */ + void SetIOHandler( IOSystem* pIOHandler); + + // ------------------------------------------------------------------- + /** Retrieves the IO handler that is currently set. + * You can use #IsDefaultIOHandler() to check whether the returned + * interface is the default IO handler provided by ASSIMP. The default + * handler is active as long the application doesn't supply its own + * custom IO handler via #SetIOHandler(). + * @return A valid IOSystem interface, never NULL. */ + IOSystem* GetIOHandler() const; + + // ------------------------------------------------------------------- + /** Checks whether a default IO handler is active + * A default handler is active as long the application doesn't + * supply its own custom IO handler via #SetIOHandler(). + * @return true by default */ + bool IsDefaultIOHandler() const; + + // ------------------------------------------------------------------- + /** Supplies a custom progress handler to the exporter. This + * interface exposes an #Update() callback, which is called + * more or less periodically (please don't sue us if it + * isn't as periodically as you'd like it to have ...). + * This can be used to implement progress bars and loading + * timeouts. + * @param pHandler Progress callback interface. Pass nullptr to + * disable progress reporting. + * @note Progress handlers can be used to abort the loading + * at almost any time.*/ + void SetProgressHandler(ProgressHandler* pHandler); + + // ------------------------------------------------------------------- + /** Exports the given scene to a chosen file format. Returns the exported + * data as a binary blob which you can write into a file or something. + * When you're done with the data, simply let the #Exporter instance go + * out of scope to have it released automatically. + * @param pScene The scene to export. Stays in possession of the caller, + * is not changed by the function. + * @param pFormatId ID string to specify to which format you want to + * export to. Use + * #GetExportFormatCount / #GetExportFormatDescription to learn which + * export formats are available. + * @param pPreprocessing See the documentation for #Export + * @return the exported data or NULL in case of error. + * @note If the Exporter instance did already hold a blob from + * a previous call to #ExportToBlob, it will be disposed. + * Any IO handlers set via #SetIOHandler are ignored here. + * @note Use aiCopyScene() to get a modifiable copy of a previously + * imported scene. */ + const aiExportDataBlob* ExportToBlob(const aiScene* pScene, const char* pFormatId, + unsigned int pPreprocessing = 0u, const ExportProperties* pProperties = nullptr); + const aiExportDataBlob* ExportToBlob( const aiScene* pScene, const std::string& pFormatId, + unsigned int pPreprocessing = 0u, const ExportProperties* pProperties = nullptr); + + // ------------------------------------------------------------------- + /** Convenience function to export directly to a file. Use + * #SetIOSystem to supply a custom IOSystem to gain fine-grained control + * about the output data flow of the export process. + * @param pBlob A data blob obtained from a previous call to #aiExportScene. Must not be NULL. + * @param pPath Full target file name. Target must be accessible. + * @param pPreprocessing Accepts any choice of the #aiPostProcessSteps enumerated + * flags, but in reality only a subset of them makes sense here. Specifying + * 'preprocessing' flags is useful if the input scene does not conform to + * Assimp's default conventions as specified in the @link data Data Structures Page @endlink. + * In short, this means the geometry data should use a right-handed coordinate systems, face + * winding should be counter-clockwise and the UV coordinate origin is assumed to be in + * the upper left. The #aiProcess_MakeLeftHanded, #aiProcess_FlipUVs and + * #aiProcess_FlipWindingOrder flags are used in the import side to allow users + * to have those defaults automatically adapted to their conventions. Specifying those flags + * for exporting has the opposite effect, respectively. Some other of the + * #aiPostProcessSteps enumerated values may be useful as well, but you'll need + * to try out what their effect on the exported file is. Many formats impose + * their own restrictions on the structure of the geometry stored therein, + * so some preprocessing may have little or no effect at all, or may be + * redundant as exporters would apply them anyhow. A good example + * is triangulation - whilst you can enforce it by specifying + * the #aiProcess_Triangulate flag, most export formats support only + * triangulate data so they would run the step even if it wasn't requested. + * + * If assimp detects that the input scene was directly taken from the importer side of + * the library (i.e. not copied using aiCopyScene and potentially modified afterwards), + * any post-processing steps already applied to the scene will not be applied again, unless + * they show non-idempotent behavior (#aiProcess_MakeLeftHanded, #aiProcess_FlipUVs and + * #aiProcess_FlipWindingOrder). + * @return AI_SUCCESS if everything was fine. + * @note Use aiCopyScene() to get a modifiable copy of a previously + * imported scene.*/ + aiReturn Export( const aiScene* pScene, const char* pFormatId, const char* pPath, + unsigned int pPreprocessing = 0u, const ExportProperties* pProperties = nullptr); + aiReturn Export( const aiScene* pScene, const std::string& pFormatId, const std::string& pPath, + unsigned int pPreprocessing = 0u, const ExportProperties* pProperties = nullptr); + + // ------------------------------------------------------------------- + /** Returns an error description of an error that occurred in #Export + * or #ExportToBlob + * + * Returns an empty string if no error occurred. + * @return A description of the last error, an empty string if no + * error occurred. The string is never NULL. + * + * @note The returned function remains valid until one of the + * following methods is called: #Export, #ExportToBlob, #FreeBlob */ + const char* GetErrorString() const; + + // ------------------------------------------------------------------- + /** Return the blob obtained from the last call to #ExportToBlob */ + const aiExportDataBlob* GetBlob() const; + + // ------------------------------------------------------------------- + /** Orphan the blob from the last call to #ExportToBlob. This means + * the caller takes ownership and is thus responsible for calling + * the C API function #aiReleaseExportBlob to release it. */ + const aiExportDataBlob* GetOrphanedBlob() const; + + // ------------------------------------------------------------------- + /** Frees the current blob. + * + * The function does nothing if no blob has previously been + * previously produced via #ExportToBlob. #FreeBlob is called + * automatically by the destructor. The only reason to call + * it manually would be to reclaim as much storage as possible + * without giving up the #Exporter instance yet. */ + void FreeBlob( ); + + // ------------------------------------------------------------------- + /** Returns the number of export file formats available in the current + * Assimp build. Use #Exporter::GetExportFormatDescription to + * retrieve infos of a specific export format. + * + * This includes built-in exporters as well as exporters registered + * using #RegisterExporter. + **/ + size_t GetExportFormatCount() const; + + // ------------------------------------------------------------------- + /** Returns a description of the nth export file format. Use # + * #Exporter::GetExportFormatCount to learn how many export + * formats are supported. + * + * The returned pointer is of static storage duration if the + * pIndex pertains to a built-in exporter (i.e. one not registered + * via #RegistrerExporter). It is restricted to the life-time of the + * #Exporter instance otherwise. + * + * @param pIndex Index of the export format to retrieve information + * for. Valid range is 0 to #Exporter::GetExportFormatCount + * @return A description of that specific export format. + * NULL if pIndex is out of range. */ + const aiExportFormatDesc* GetExportFormatDescription( size_t pIndex ) const; + + // ------------------------------------------------------------------- + /** Register a custom exporter. Custom export formats are limited to + * to the current #Exporter instance and do not affect the + * library globally. The indexes under which the format's + * export format description can be queried are assigned + * monotonously. + * @param desc Exporter description. + * @return aiReturn_SUCCESS if the export format was successfully + * registered. A common cause that would prevent an exporter + * from being registered is that its format id is already + * occupied by another format. */ + aiReturn RegisterExporter(const ExportFormatEntry& desc); + + // ------------------------------------------------------------------- + /** Remove an export format previously registered with #RegisterExporter + * from the #Exporter instance (this can also be used to drop + * built-in exporters because those are implicitly registered + * using #RegisterExporter). + * @param id Format id to be unregistered, this refers to the + * 'id' field of #aiExportFormatDesc. + * @note Calling this method on a format description not yet registered + * has no effect.*/ + void UnregisterExporter(const char* id); + +protected: + // Just because we don't want you to know how we're hacking around. + ExporterPimpl* pimpl; +}; + +class ASSIMP_API ExportProperties { +public: + // Data type to store the key hash + typedef unsigned int KeyType; + + // typedefs for our four configuration maps. + // We don't need more, so there is no need for a generic solution + typedef std::map IntPropertyMap; + typedef std::map FloatPropertyMap; + typedef std::map StringPropertyMap; + typedef std::map MatrixPropertyMap; + +public: + /** Standard constructor + * @see ExportProperties() + */ + ExportProperties(); + + // ------------------------------------------------------------------- + /** Copy constructor. + * + * This copies the configuration properties of another ExportProperties. + * @see ExportProperties(const ExportProperties& other) + */ + ExportProperties(const ExportProperties& other); + + // ------------------------------------------------------------------- + /** Set an integer configuration property. + * @param szName Name of the property. All supported properties + * are defined in the aiConfig.g header (all constants share the + * prefix AI_CONFIG_XXX and are simple strings). + * @param iValue New value of the property + * @return true if the property was set before. The new value replaces + * the previous value in this case. + * @note Property of different types (float, int, string ..) are kept + * on different stacks, so calling SetPropertyInteger() for a + * floating-point property has no effect - the loader will call + * GetPropertyFloat() to read the property, but it won't be there. + */ + bool SetPropertyInteger(const char* szName, int iValue); + + // ------------------------------------------------------------------- + /** Set a boolean configuration property. Boolean properties + * are stored on the integer stack internally so it's possible + * to set them via #SetPropertyBool and query them with + * #GetPropertyBool and vice versa. + * @see SetPropertyInteger() + */ + bool SetPropertyBool(const char* szName, bool value) { + return SetPropertyInteger(szName,value); + } + + // ------------------------------------------------------------------- + /** Set a floating-point configuration property. + * @see SetPropertyInteger() + */ + bool SetPropertyFloat(const char* szName, ai_real fValue); + + // ------------------------------------------------------------------- + /** Set a string configuration property. + * @see SetPropertyInteger() + */ + bool SetPropertyString(const char* szName, const std::string& sValue); + + // ------------------------------------------------------------------- + /** Set a matrix configuration property. + * @see SetPropertyInteger() + */ + bool SetPropertyMatrix(const char* szName, const aiMatrix4x4& sValue); + + // ------------------------------------------------------------------- + /** Get a configuration property. + * @param szName Name of the property. All supported properties + * are defined in the aiConfig.g header (all constants share the + * prefix AI_CONFIG_XXX). + * @param iErrorReturn Value that is returned if the property + * is not found. + * @return Current value of the property + * @note Property of different types (float, int, string ..) are kept + * on different lists, so calling SetPropertyInteger() for a + * floating-point property has no effect - the loader will call + * GetPropertyFloat() to read the property, but it won't be there. + */ + int GetPropertyInteger(const char* szName, + int iErrorReturn = 0xffffffff) const; + + // ------------------------------------------------------------------- + /** Get a boolean configuration property. Boolean properties + * are stored on the integer stack internally so it's possible + * to set them via #SetPropertyBool and query them with + * #GetPropertyBool and vice versa. + * @see GetPropertyInteger() + */ + bool GetPropertyBool(const char* szName, bool bErrorReturn = false) const { + return GetPropertyInteger(szName,bErrorReturn)!=0; + } + + // ------------------------------------------------------------------- + /** Get a floating-point configuration property + * @see GetPropertyInteger() + */ + ai_real GetPropertyFloat(const char* szName, + ai_real fErrorReturn = 10e10f) const; + + // ------------------------------------------------------------------- + /** Get a string configuration property + * + * The return value remains valid until the property is modified. + * @see GetPropertyInteger() + */ + const std::string GetPropertyString(const char* szName, + const std::string& sErrorReturn = "") const; + + // ------------------------------------------------------------------- + /** Get a matrix configuration property + * + * The return value remains valid until the property is modified. + * @see GetPropertyInteger() + */ + const aiMatrix4x4 GetPropertyMatrix(const char* szName, + const aiMatrix4x4& sErrorReturn = aiMatrix4x4()) const; + + // ------------------------------------------------------------------- + /** Determine a integer configuration property has been set. + * @see HasPropertyInteger() + */ + bool HasPropertyInteger(const char* szName) const; + + /** Determine a boolean configuration property has been set. + * @see HasPropertyBool() + */ + bool HasPropertyBool(const char* szName) const; + + /** Determine a boolean configuration property has been set. + * @see HasPropertyFloat() + */ + bool HasPropertyFloat(const char* szName) const; + + /** Determine a String configuration property has been set. + * @see HasPropertyString() + */ + bool HasPropertyString(const char* szName) const; + + /** Determine a Matrix configuration property has been set. + * @see HasPropertyMatrix() + */ + bool HasPropertyMatrix(const char* szName) const; + +protected: + + /** List of integer properties */ + IntPropertyMap mIntProperties; + + /** List of floating-point properties */ + FloatPropertyMap mFloatProperties; + + /** List of string properties */ + StringPropertyMap mStringProperties; + + /** List of Matrix properties */ + MatrixPropertyMap mMatrixProperties; +}; + +// ---------------------------------------------------------------------------------- +inline +const aiExportDataBlob* Exporter::ExportToBlob( const aiScene* pScene, const std::string& pFormatId, + unsigned int pPreprocessing, const ExportProperties* pProperties) +{ + return ExportToBlob(pScene,pFormatId.c_str(),pPreprocessing, pProperties); +} + +// ---------------------------------------------------------------------------------- +inline +aiReturn Exporter :: Export( const aiScene* pScene, const std::string& pFormatId, + const std::string& pPath, unsigned int pPreprocessing, + const ExportProperties* pProperties) +{ + return Export(pScene,pFormatId.c_str(),pPath.c_str(),pPreprocessing, pProperties); +} + +} // namespace Assimp + +#endif // ASSIMP_BUILD_NO_EXPORT +#endif // AI_EXPORT_HPP_INC diff --git a/aig/assimp/GenericProperty.h b/aig/assimp/GenericProperty.h new file mode 100755 index 0000000..183ecd5 --- /dev/null +++ b/aig/assimp/GenericProperty.h @@ -0,0 +1,133 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +#ifndef AI_GENERIC_PROPERTY_H_INCLUDED +#define AI_GENERIC_PROPERTY_H_INCLUDED + +#include +#include +#include "Hash.h" + +#include + +// ------------------------------------------------------------------------------------------------ +template +inline +bool SetGenericProperty(std::map< unsigned int, T >& list, + const char* szName, const T& value) { + ai_assert(nullptr != szName); + const uint32_t hash = SuperFastHash(szName); + + typename std::map::iterator it = list.find(hash); + if (it == list.end()) { + list.insert(std::pair( hash, value )); + return false; + } + (*it).second = value; + + return true; +} + +// ------------------------------------------------------------------------------------------------ +template +inline +const T& GetGenericProperty(const std::map< unsigned int, T >& list, + const char* szName, const T& errorReturn) { + ai_assert(nullptr != szName); + const uint32_t hash = SuperFastHash(szName); + + typename std::map::const_iterator it = list.find(hash); + if (it == list.end()) { + return errorReturn; + } + + return (*it).second; +} + +// ------------------------------------------------------------------------------------------------ +// Special version for pointer types - they will be deleted when replaced with another value +// passing NULL removes the whole property +template +inline +void SetGenericPropertyPtr(std::map< unsigned int, T* >& list, + const char* szName, T* value, bool* bWasExisting = nullptr ) { + ai_assert(nullptr != szName); + const uint32_t hash = SuperFastHash(szName); + + typename std::map::iterator it = list.find(hash); + if (it == list.end()) { + if (bWasExisting) { + *bWasExisting = false; + } + + list.insert(std::pair( hash, value )); + return; + } + if ((*it).second != value) { + delete (*it).second; + (*it).second = value; + } + if (!value) { + list.erase(it); + } + if (bWasExisting) { + *bWasExisting = true; + } +} + +// ------------------------------------------------------------------------------------------------ +template +inline +bool HasGenericProperty(const std::map< unsigned int, T >& list, + const char* szName) { + ai_assert(nullptr != szName); + const uint32_t hash = SuperFastHash(szName); + + typename std::map::const_iterator it = list.find(hash); + if (it == list.end()) { + return false; + } + + return true; +} + +#endif // !! AI_GENERIC_PROPERTY_H_INCLUDED diff --git a/aig/assimp/Hash.h b/aig/assimp/Hash.h new file mode 100755 index 0000000..30657be --- /dev/null +++ b/aig/assimp/Hash.h @@ -0,0 +1,118 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +#ifndef AI_HASH_H_INCLUDED +#define AI_HASH_H_INCLUDED + +#include +#include + +// ------------------------------------------------------------------------------------------------ +// Hashing function taken from +// http://www.azillionmonkeys.com/qed/hash.html +// (incremental version) +// +// This code is Copyright 2004-2008 by Paul Hsieh. It is used here in the belief that +// Assimp's license is considered compatible with Pauls's derivative license as specified +// on his web page. +// +// (stdint.h should have been been included here) +// ------------------------------------------------------------------------------------------------ +#undef get16bits +#if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__) \ + || defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__) +#define get16bits(d) (*((const uint16_t *) (d))) +#endif + +#if !defined (get16bits) +#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\ + +(uint32_t)(((const uint8_t *)(d))[0]) ) +#endif + +// ------------------------------------------------------------------------------------------------ +inline uint32_t SuperFastHash (const char * data, uint32_t len = 0, uint32_t hash = 0) { +uint32_t tmp; +int rem; + + if (!data) return 0; + if (!len)len = (uint32_t)::strlen(data); + + rem = len & 3; + len >>= 2; + + /* Main loop */ + for (;len > 0; len--) { + hash += get16bits (data); + tmp = (get16bits (data+2) << 11) ^ hash; + hash = (hash << 16) ^ tmp; + data += 2*sizeof (uint16_t); + hash += hash >> 11; + } + + /* Handle end cases */ + switch (rem) { + case 3: hash += get16bits (data); + hash ^= hash << 16; + hash ^= data[sizeof (uint16_t)] << 18; + hash += hash >> 11; + break; + case 2: hash += get16bits (data); + hash ^= hash << 11; + hash += hash >> 17; + break; + case 1: hash += *data; + hash ^= hash << 10; + hash += hash >> 1; + } + + /* Force "avalanching" of final 127 bits */ + hash ^= hash << 3; + hash += hash >> 5; + hash ^= hash << 4; + hash += hash >> 17; + hash ^= hash << 25; + hash += hash >> 6; + + return hash; +} + +#endif // !! AI_HASH_H_INCLUDED diff --git a/aig/assimp/IOStream.hpp b/aig/assimp/IOStream.hpp new file mode 100755 index 0000000..0623d0f --- /dev/null +++ b/aig/assimp/IOStream.hpp @@ -0,0 +1,142 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +/** @file IOStream.hpp + * @brief File I/O wrappers for C++. + */ + +#pragma once +#ifndef AI_IOSTREAM_H_INC +#define AI_IOSTREAM_H_INC + +#include "types.h" + +#ifndef __cplusplus +# error This header requires C++ to be used. aiFileIO.h is the \ + corresponding C interface. +#endif + +namespace Assimp { + +// ---------------------------------------------------------------------------------- +/** @brief CPP-API: Class to handle file I/O for C++ + * + * Derive an own implementation from this interface to provide custom IO handling + * to the Importer. If you implement this interface, be sure to also provide an + * implementation for IOSystem that creates instances of your custom IO class. +*/ +class ASSIMP_API IOStream +#ifndef SWIG + : public Intern::AllocateFromAssimpHeap +#endif +{ +protected: + /** Constructor protected, use IOSystem::Open() to create an instance. */ + IOStream() AI_NO_EXCEPT; + +public: + // ------------------------------------------------------------------- + /** @brief Destructor. Deleting the object closes the underlying file, + * alternatively you may use IOSystem::Close() to release the file. + */ + virtual ~IOStream(); + + // ------------------------------------------------------------------- + /** @brief Read from the file + * + * See fread() for more details + * This fails for write-only files */ + virtual size_t Read(void* pvBuffer, + size_t pSize, + size_t pCount) = 0; + + // ------------------------------------------------------------------- + /** @brief Write to the file + * + * See fwrite() for more details + * This fails for read-only files */ + virtual size_t Write(const void* pvBuffer, + size_t pSize, + size_t pCount) = 0; + + // ------------------------------------------------------------------- + /** @brief Set the read/write cursor of the file + * + * Note that the offset is _negative_ for aiOrigin_END. + * See fseek() for more details */ + virtual aiReturn Seek(size_t pOffset, + aiOrigin pOrigin) = 0; + + // ------------------------------------------------------------------- + /** @brief Get the current position of the read/write cursor + * + * See ftell() for more details */ + virtual size_t Tell() const = 0; + + // ------------------------------------------------------------------- + /** @brief Returns filesize + * Returns the filesize. */ + virtual size_t FileSize() const = 0; + + // ------------------------------------------------------------------- + /** @brief Flush the contents of the file buffer (for writers) + * See fflush() for more details. + */ + virtual void Flush() = 0; +}; //! class IOStream + +// ---------------------------------------------------------------------------------- +inline +IOStream::IOStream() AI_NO_EXCEPT { + // empty +} + +// ---------------------------------------------------------------------------------- +inline +IOStream::~IOStream() { + // empty +} +// ---------------------------------------------------------------------------------- + +} //!namespace Assimp + +#endif //!!AI_IOSTREAM_H_INC diff --git a/aig/assimp/IOStreamBuffer.h b/aig/assimp/IOStreamBuffer.h new file mode 100755 index 0000000..58abd97 --- /dev/null +++ b/aig/assimp/IOStreamBuffer.h @@ -0,0 +1,355 @@ +#pragma once + +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +#include +#include + +#include "ParsingUtils.h" + +#include + +namespace Assimp { + +// --------------------------------------------------------------------------- +/** + * Implementation of a cached stream buffer. + */ +template +class IOStreamBuffer { +public: + /// @brief The class constructor. + IOStreamBuffer( size_t cache = 4096 * 4096 ); + + /// @brief The class destructor. + ~IOStreamBuffer(); + + /// @brief Will open the cached access for a given stream. + /// @param stream The stream to cache. + /// @return true if successful. + bool open( IOStream *stream ); + + /// @brief Will close the cached access. + /// @return true if successful. + bool close(); + + /// @brief Returns the file-size. + /// @return The file-size. + size_t size() const; + + /// @brief Returns the cache size. + /// @return The cache size. + size_t cacheSize() const; + + /// @brief Will read the next block. + /// @return true if successful. + bool readNextBlock(); + + /// @brief Returns the number of blocks to read. + /// @return The number of blocks. + size_t getNumBlocks() const; + + /// @brief Returns the current block index. + /// @return The current block index. + size_t getCurrentBlockIndex() const; + + /// @brief Returns the current file pos. + /// @return The current file pos. + size_t getFilePos() const; + + /// @brief Will read the next line. + /// @param buffer The buffer for the next line. + /// @return true if successful. + bool getNextDataLine( std::vector &buffer, T continuationToken ); + + /// @brief Will read the next line ascii or binary end line char. + /// @param buffer The buffer for the next line. + /// @return true if successful. + bool getNextLine(std::vector &buffer); + + /// @brief Will read the next block. + /// @param buffer The buffer for the next block. + /// @return true if successful. + bool getNextBlock( std::vector &buffer ); + +private: + IOStream *m_stream; + size_t m_filesize; + size_t m_cacheSize; + size_t m_numBlocks; + size_t m_blockIdx; + std::vector m_cache; + size_t m_cachePos; + size_t m_filePos; +}; + +template +inline +IOStreamBuffer::IOStreamBuffer( size_t cache ) +: m_stream( nullptr ) +, m_filesize( 0 ) +, m_cacheSize( cache ) +, m_numBlocks( 0 ) +, m_blockIdx( 0 ) +, m_cachePos( 0 ) +, m_filePos( 0 ) { + m_cache.resize( cache ); + std::fill( m_cache.begin(), m_cache.end(), '\n' ); +} + +template +inline +IOStreamBuffer::~IOStreamBuffer() { + // empty +} + +template +inline +bool IOStreamBuffer::open( IOStream *stream ) { + // file still opened! + if ( nullptr != m_stream ) { + return false; + } + + // Invalid stream pointer + if ( nullptr == stream ) { + return false; + } + + m_stream = stream; + m_filesize = m_stream->FileSize(); + if ( m_filesize == 0 ) { + return false; + } + if ( m_filesize < m_cacheSize ) { + m_cacheSize = m_filesize; + } + + m_numBlocks = m_filesize / m_cacheSize; + if ( ( m_filesize % m_cacheSize ) > 0 ) { + m_numBlocks++; + } + + return true; +} + +template +inline +bool IOStreamBuffer::close() { + if ( nullptr == m_stream ) { + return false; + } + + // init counters and state vars + m_stream = nullptr; + m_filesize = 0; + m_numBlocks = 0; + m_blockIdx = 0; + m_cachePos = 0; + m_filePos = 0; + + return true; +} + +template +inline +size_t IOStreamBuffer::size() const { + return m_filesize; +} + +template +inline +size_t IOStreamBuffer::cacheSize() const { + return m_cacheSize; +} + +template +inline +bool IOStreamBuffer::readNextBlock() { + m_stream->Seek( m_filePos, aiOrigin_SET ); + size_t readLen = m_stream->Read( &m_cache[ 0 ], sizeof( T ), m_cacheSize ); + if ( readLen == 0 ) { + return false; + } + if ( readLen < m_cacheSize ) { + m_cacheSize = readLen; + } + m_filePos += m_cacheSize; + m_cachePos = 0; + m_blockIdx++; + + return true; +} + +template +inline +size_t IOStreamBuffer::getNumBlocks() const { + return m_numBlocks; +} + +template +inline +size_t IOStreamBuffer::getCurrentBlockIndex() const { + return m_blockIdx; +} + +template +inline +size_t IOStreamBuffer::getFilePos() const { + return m_filePos; +} + +template +inline +bool IOStreamBuffer::getNextDataLine( std::vector &buffer, T continuationToken ) { + buffer.resize( m_cacheSize ); + if ( m_cachePos >= m_cacheSize || 0 == m_filePos ) { + if ( !readNextBlock() ) { + return false; + } + } + + bool continuationFound( false ); + size_t i = 0; + for( ;; ) { + if ( continuationToken == m_cache[ m_cachePos ] ) { + continuationFound = true; + ++m_cachePos; + } + if ( IsLineEnd( m_cache[ m_cachePos ] ) ) { + if ( !continuationFound ) { + // the end of the data line + break; + } else { + // skip line end + while ( m_cache[m_cachePos] != '\n') { + ++m_cachePos; + } + ++m_cachePos; + continuationFound = false; + } + } + + buffer[ i ] = m_cache[ m_cachePos ]; + ++m_cachePos; + ++i; + if (m_cachePos >= size()) { + break; + } + if ( m_cachePos >= m_cacheSize ) { + if ( !readNextBlock() ) { + return false; + } + } + } + + buffer[ i ] = '\n'; + ++m_cachePos; + + return true; +} + +static inline +bool isEndOfCache( size_t pos, size_t cacheSize ) { + return ( pos == cacheSize ); +} + +template +inline +bool IOStreamBuffer::getNextLine(std::vector &buffer) { + buffer.resize(m_cacheSize); + if ( isEndOfCache( m_cachePos, m_cacheSize ) || 0 == m_filePos) { + if (!readNextBlock()) { + return false; + } + } + + if (IsLineEnd(m_cache[m_cachePos])) { + // skip line end + while (m_cache[m_cachePos] != '\n') { + ++m_cachePos; + } + ++m_cachePos; + if ( isEndOfCache( m_cachePos, m_cacheSize ) ) { + if ( !readNextBlock() ) { + return false; + } + } + } + + size_t i( 0 ); + while (!IsLineEnd(m_cache[ m_cachePos ])) { + buffer[i] = m_cache[ m_cachePos ]; + ++m_cachePos; + ++i; + if (m_cachePos >= m_cacheSize) { + if (!readNextBlock()) { + return false; + } + } + } + buffer[i] = '\n'; + ++m_cachePos; + + return true; +} + +template +inline +bool IOStreamBuffer::getNextBlock( std::vector &buffer) { + // Return the last block-value if getNextLine was used before + if ( 0 != m_cachePos ) { + buffer = std::vector( m_cache.begin() + m_cachePos, m_cache.end() ); + m_cachePos = 0; + } else { + if ( !readNextBlock() ) { + return false; + } + + buffer = std::vector(m_cache.begin(), m_cache.end()); + } + + return true; +} + +} // !ns Assimp diff --git a/aig/assimp/IOSystem.hpp b/aig/assimp/IOSystem.hpp new file mode 100755 index 0000000..78139c2 --- /dev/null +++ b/aig/assimp/IOSystem.hpp @@ -0,0 +1,357 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +/** @file IOSystem.hpp + * @brief File system wrapper for C++. Inherit this class to supply + * custom file handling logic to the Import library. +*/ + +#pragma once +#ifndef AI_IOSYSTEM_H_INC +#define AI_IOSYSTEM_H_INC + +#ifndef __cplusplus +# error This header requires C++ to be used. aiFileIO.h is the \ + corresponding C interface. +#endif + +#include "types.h" + +#ifdef _WIN32 +# include +# include +# include +#else +# include +# include +# include +#endif // _WIN32 + +#include + +namespace Assimp { + + class IOStream; + +// --------------------------------------------------------------------------- +/** @brief CPP-API: Interface to the file system. + * + * Derive an own implementation from this interface to supply custom file handling + * to the importer library. If you implement this interface, you also want to + * supply a custom implementation for IOStream. + * + * @see Importer::SetIOHandler() + */ +class ASSIMP_API IOSystem +#ifndef SWIG + : public Intern::AllocateFromAssimpHeap +#endif +{ +public: + + // ------------------------------------------------------------------- + /** @brief Default constructor. + * + * Create an instance of your derived class and assign it to an + * #Assimp::Importer instance by calling Importer::SetIOHandler(). + */ + IOSystem() AI_NO_EXCEPT; + + // ------------------------------------------------------------------- + /** @brief Virtual destructor. + * + * It is safe to be called from within DLL Assimp, we're constructed + * on Assimp's heap. + */ + virtual ~IOSystem(); + + // ------------------------------------------------------------------- + /** @brief For backward compatibility + * @see Exists(const char*) + */ + AI_FORCE_INLINE bool Exists( const std::string& pFile) const; + + // ------------------------------------------------------------------- + /** @brief Tests for the existence of a file at the given path. + * + * @param pFile Path to the file + * @return true if there is a file with this path, else false. + */ + virtual bool Exists( const char* pFile) const = 0; + + // ------------------------------------------------------------------- + /** @brief Returns the system specific directory separator + * @return System specific directory separator + */ + virtual char getOsSeparator() const = 0; + + // ------------------------------------------------------------------- + /** @brief Open a new file with a given path. + * + * When the access to the file is finished, call Close() to release + * all associated resources (or the virtual dtor of the IOStream). + * + * @param pFile Path to the file + * @param pMode Desired file I/O mode. Required are: "wb", "w", "wt", + * "rb", "r", "rt". + * + * @return New IOStream interface allowing the lib to access + * the underlying file. + * @note When implementing this class to provide custom IO handling, + * you probably have to supply an own implementation of IOStream as well. + */ + virtual IOStream* Open(const char* pFile, + const char* pMode = "rb") = 0; + + // ------------------------------------------------------------------- + /** @brief For backward compatibility + * @see Open(const char*, const char*) + */ + inline IOStream* Open(const std::string& pFile, + const std::string& pMode = std::string("rb")); + + // ------------------------------------------------------------------- + /** @brief Closes the given file and releases all resources + * associated with it. + * @param pFile The file instance previously created by Open(). + */ + virtual void Close( IOStream* pFile) = 0; + + // ------------------------------------------------------------------- + /** @brief Compares two paths and check whether the point to + * identical files. + * + * The dummy implementation of this virtual member performs a + * case-insensitive comparison of the given strings. The default IO + * system implementation uses OS mechanisms to convert relative into + * absolute paths, so the result can be trusted. + * @param one First file + * @param second Second file + * @return true if the paths point to the same file. The file needn't + * be existing, however. + */ + virtual bool ComparePaths (const char* one, + const char* second) const; + + // ------------------------------------------------------------------- + /** @brief For backward compatibility + * @see ComparePaths(const char*, const char*) + */ + inline bool ComparePaths (const std::string& one, + const std::string& second) const; + + // ------------------------------------------------------------------- + /** @brief Pushes a new directory onto the directory stack. + * @param path Path to push onto the stack. + * @return True, when push was successful, false if path is empty. + */ + virtual bool PushDirectory( const std::string &path ); + + // ------------------------------------------------------------------- + /** @brief Returns the top directory from the stack. + * @return The directory on the top of the stack. + * Returns empty when no directory was pushed to the stack. + */ + virtual const std::string &CurrentDirectory() const; + + // ------------------------------------------------------------------- + /** @brief Returns the number of directories stored on the stack. + * @return The number of directories of the stack. + */ + virtual size_t StackSize() const; + + // ------------------------------------------------------------------- + /** @brief Pops the top directory from the stack. + * @return True, when a directory was on the stack. False if no + * directory was on the stack. + */ + virtual bool PopDirectory(); + + // ------------------------------------------------------------------- + /** @brief CReates an new directory at the given path. + * @param path [in] The path to create. + * @return True, when a directory was created. False if the directory + * cannot be created. + */ + virtual bool CreateDirectory( const std::string &path ); + + // ------------------------------------------------------------------- + /** @brief Will change the current directory to the given path. + * @param path [in] The path to change to. + * @return True, when the directory has changed successfully. + */ + virtual bool ChangeDirectory( const std::string &path ); + + virtual bool DeleteFile( const std::string &file ); + +private: + std::vector m_pathStack; +}; + +// ---------------------------------------------------------------------------- +AI_FORCE_INLINE +IOSystem::IOSystem() AI_NO_EXCEPT +: m_pathStack() { + // empty +} + +// ---------------------------------------------------------------------------- +AI_FORCE_INLINE +IOSystem::~IOSystem() { + // empty +} + +// ---------------------------------------------------------------------------- +// For compatibility, the interface of some functions taking a std::string was +// changed to const char* to avoid crashes between binary incompatible STL +// versions. This code her is inlined, so it shouldn't cause any problems. +// ---------------------------------------------------------------------------- + +// ---------------------------------------------------------------------------- +AI_FORCE_INLINE +IOStream* IOSystem::Open(const std::string& pFile, const std::string& pMode) { + // NOTE: + // For compatibility, interface was changed to const char* to + // avoid crashes between binary incompatible STL versions + return Open(pFile.c_str(),pMode.c_str()); +} + +// ---------------------------------------------------------------------------- +AI_FORCE_INLINE +bool IOSystem::Exists( const std::string& pFile) const { + // NOTE: + // For compatibility, interface was changed to const char* to + // avoid crashes between binary incompatible STL versions + return Exists(pFile.c_str()); +} + +// ---------------------------------------------------------------------------- +AI_FORCE_INLINE +bool IOSystem::ComparePaths (const std::string& one, const std::string& second) const { + // NOTE: + // For compatibility, interface was changed to const char* to + // avoid crashes between binary incompatible STL versions + return ComparePaths(one.c_str(),second.c_str()); +} + +// ---------------------------------------------------------------------------- +AI_FORCE_INLINE +bool IOSystem::PushDirectory( const std::string &path ) { + if ( path.empty() ) { + return false; + } + + m_pathStack.push_back( path ); + + return true; +} + +// ---------------------------------------------------------------------------- +AI_FORCE_INLINE +const std::string &IOSystem::CurrentDirectory() const { + if ( m_pathStack.empty() ) { + static const std::string Dummy(""); + return Dummy; + } + return m_pathStack[ m_pathStack.size()-1 ]; +} + +// ---------------------------------------------------------------------------- +AI_FORCE_INLINE +size_t IOSystem::StackSize() const { + return m_pathStack.size(); +} + +// ---------------------------------------------------------------------------- +AI_FORCE_INLINE +bool IOSystem::PopDirectory() { + if ( m_pathStack.empty() ) { + return false; + } + + m_pathStack.pop_back(); + + return true; +} + +// ---------------------------------------------------------------------------- +AI_FORCE_INLINE +bool IOSystem::CreateDirectory( const std::string &path ) { + if ( path.empty() ) { + return false; + } + +#ifdef _WIN32 + return 0 != ::_mkdir( path.c_str() ); +#else + return 0 != ::mkdir( path.c_str(), 0777 ); +#endif // _WIN32 +} + +// ---------------------------------------------------------------------------- +AI_FORCE_INLINE +bool IOSystem::ChangeDirectory( const std::string &path ) { + if ( path.empty() ) { + return false; + } + +#ifdef _WIN32 + return 0 != ::_chdir( path.c_str() ); +#else + return 0 != ::chdir( path.c_str() ); +#endif // _WIN32 +} + + +// ---------------------------------------------------------------------------- +AI_FORCE_INLINE +bool IOSystem::DeleteFile( const std::string &file ) { + if ( file.empty() ) { + return false; + } + const int retCode( ::remove( file.c_str() ) ); + return ( 0 == retCode ); +} +} //!ns Assimp + +#endif //AI_IOSYSTEM_H_INC diff --git a/aig/assimp/Importer.hpp b/aig/assimp/Importer.hpp new file mode 100755 index 0000000..4941df4 --- /dev/null +++ b/aig/assimp/Importer.hpp @@ -0,0 +1,659 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +/** @file Importer.hpp + * @brief Defines the C++-API to the Open Asset Import Library. + */ +#pragma once +#ifndef AI_ASSIMP_HPP_INC +#define AI_ASSIMP_HPP_INC + +#ifndef __cplusplus +# error This header requires C++ to be used. Use assimp.h for plain C. +#endif // __cplusplus + +// Public ASSIMP data structures +#include + +namespace Assimp { + // ======================================================================= + // Public interface to Assimp + class Importer; + class IOStream; + class IOSystem; + class ProgressHandler; + + // ======================================================================= + // Plugin development + // + // Include the following headers for the declarations: + // BaseImporter.h + // BaseProcess.h + class BaseImporter; + class BaseProcess; + class SharedPostProcessInfo; + class BatchLoader; + + // ======================================================================= + // Holy stuff, only for members of the high council of the Jedi. + class ImporterPimpl; +} //! namespace Assimp + +#define AI_PROPERTY_WAS_NOT_EXISTING 0xffffffff + +struct aiScene; + +// importerdesc.h +struct aiImporterDesc; + +/** @namespace Assimp Assimp's CPP-API and all internal APIs */ +namespace Assimp { + +// ---------------------------------------------------------------------------------- +/** CPP-API: The Importer class forms an C++ interface to the functionality of the +* Open Asset Import Library. +* +* Create an object of this class and call ReadFile() to import a file. +* If the import succeeds, the function returns a pointer to the imported data. +* The data remains property of the object, it is intended to be accessed +* read-only. The imported data will be destroyed along with the Importer +* object. If the import fails, ReadFile() returns a NULL pointer. In this +* case you can retrieve a human-readable error description be calling +* GetErrorString(). You can call ReadFile() multiple times with a single Importer +* instance. Actually, constructing Importer objects involves quite many +* allocations and may take some time, so it's better to reuse them as often as +* possible. +* +* If you need the Importer to do custom file handling to access the files, +* implement IOSystem and IOStream and supply an instance of your custom +* IOSystem implementation by calling SetIOHandler() before calling ReadFile(). +* If you do not assign a custion IO handler, a default handler using the +* standard C++ IO logic will be used. +* +* @note One Importer instance is not thread-safe. If you use multiple +* threads for loading, each thread should maintain its own Importer instance. +*/ +class ASSIMP_API Importer { +public: + /** + * @brief The upper limit for hints. + */ + static const unsigned int MaxLenHint = 200; + +public: + + // ------------------------------------------------------------------- + /** Constructor. Creates an empty importer object. + * + * Call ReadFile() to start the import process. The configuration + * property table is initially empty. + */ + Importer(); + + // ------------------------------------------------------------------- + /** Copy constructor. + * + * This copies the configuration properties of another Importer. + * If this Importer owns a scene it won't be copied. + * Call ReadFile() to start the import process. + */ + Importer(const Importer& other)=delete; + + // ------------------------------------------------------------------- + /** Assignment operator has been deleted + */ + Importer &operator=(const Importer &) = delete; + + // ------------------------------------------------------------------- + /** Destructor. The object kept ownership of the imported data, + * which now will be destroyed along with the object. + */ + ~Importer(); + + + // ------------------------------------------------------------------- + /** Registers a new loader. + * + * @param pImp Importer to be added. The Importer instance takes + * ownership of the pointer, so it will be automatically deleted + * with the Importer instance. + * @return AI_SUCCESS if the loader has been added. The registration + * fails if there is already a loader for a specific file extension. + */ + aiReturn RegisterLoader(BaseImporter* pImp); + + // ------------------------------------------------------------------- + /** Unregisters a loader. + * + * @param pImp Importer to be unregistered. + * @return AI_SUCCESS if the loader has been removed. The function + * fails if the loader is currently in use (this could happen + * if the #Importer instance is used by more than one thread) or + * if it has not yet been registered. + */ + aiReturn UnregisterLoader(BaseImporter* pImp); + + // ------------------------------------------------------------------- + /** Registers a new post-process step. + * + * At the moment, there's a small limitation: new post processing + * steps are added to end of the list, or in other words, executed + * last, after all built-in steps. + * @param pImp Post-process step to be added. The Importer instance + * takes ownership of the pointer, so it will be automatically + * deleted with the Importer instance. + * @return AI_SUCCESS if the step has been added correctly. + */ + aiReturn RegisterPPStep(BaseProcess* pImp); + + // ------------------------------------------------------------------- + /** Unregisters a post-process step. + * + * @param pImp Step to be unregistered. + * @return AI_SUCCESS if the step has been removed. The function + * fails if the step is currently in use (this could happen + * if the #Importer instance is used by more than one thread) or + * if it has not yet been registered. + */ + aiReturn UnregisterPPStep(BaseProcess* pImp); + + // ------------------------------------------------------------------- + /** Set an integer configuration property. + * @param szName Name of the property. All supported properties + * are defined in the aiConfig.g header (all constants share the + * prefix AI_CONFIG_XXX and are simple strings). + * @param iValue New value of the property + * @return true if the property was set before. The new value replaces + * the previous value in this case. + * @note Property of different types (float, int, string ..) are kept + * on different stacks, so calling SetPropertyInteger() for a + * floating-point property has no effect - the loader will call + * GetPropertyFloat() to read the property, but it won't be there. + */ + bool SetPropertyInteger(const char* szName, int iValue); + + // ------------------------------------------------------------------- + /** Set a boolean configuration property. Boolean properties + * are stored on the integer stack internally so it's possible + * to set them via #SetPropertyBool and query them with + * #GetPropertyBool and vice versa. + * @see SetPropertyInteger() + */ + bool SetPropertyBool(const char* szName, bool value) { + return SetPropertyInteger(szName,value); + } + + // ------------------------------------------------------------------- + /** Set a floating-point configuration property. + * @see SetPropertyInteger() + */ + bool SetPropertyFloat(const char* szName, ai_real fValue); + + // ------------------------------------------------------------------- + /** Set a string configuration property. + * @see SetPropertyInteger() + */ + bool SetPropertyString(const char* szName, const std::string& sValue); + + // ------------------------------------------------------------------- + /** Set a matrix configuration property. + * @see SetPropertyInteger() + */ + bool SetPropertyMatrix(const char* szName, const aiMatrix4x4& sValue); + + // ------------------------------------------------------------------- + /** Get a configuration property. + * @param szName Name of the property. All supported properties + * are defined in the aiConfig.g header (all constants share the + * prefix AI_CONFIG_XXX). + * @param iErrorReturn Value that is returned if the property + * is not found. + * @return Current value of the property + * @note Property of different types (float, int, string ..) are kept + * on different lists, so calling SetPropertyInteger() for a + * floating-point property has no effect - the loader will call + * GetPropertyFloat() to read the property, but it won't be there. + */ + int GetPropertyInteger(const char* szName, + int iErrorReturn = 0xffffffff) const; + + // ------------------------------------------------------------------- + /** Get a boolean configuration property. Boolean properties + * are stored on the integer stack internally so it's possible + * to set them via #SetPropertyBool and query them with + * #GetPropertyBool and vice versa. + * @see GetPropertyInteger() + */ + bool GetPropertyBool(const char* szName, bool bErrorReturn = false) const { + return GetPropertyInteger(szName,bErrorReturn)!=0; + } + + // ------------------------------------------------------------------- + /** Get a floating-point configuration property + * @see GetPropertyInteger() + */ + ai_real GetPropertyFloat(const char* szName, + ai_real fErrorReturn = 10e10) const; + + // ------------------------------------------------------------------- + /** Get a string configuration property + * + * The return value remains valid until the property is modified. + * @see GetPropertyInteger() + */ + const std::string GetPropertyString(const char* szName, + const std::string& sErrorReturn = "") const; + + // ------------------------------------------------------------------- + /** Get a matrix configuration property + * + * The return value remains valid until the property is modified. + * @see GetPropertyInteger() + */ + const aiMatrix4x4 GetPropertyMatrix(const char* szName, + const aiMatrix4x4& sErrorReturn = aiMatrix4x4()) const; + + // ------------------------------------------------------------------- + /** Supplies a custom IO handler to the importer to use to open and + * access files. If you need the importer to use custom IO logic to + * access the files, you need to provide a custom implementation of + * IOSystem and IOFile to the importer. Then create an instance of + * your custom IOSystem implementation and supply it by this function. + * + * The Importer takes ownership of the object and will destroy it + * afterwards. The previously assigned handler will be deleted. + * Pass NULL to take again ownership of your IOSystem and reset Assimp + * to use its default implementation. + * + * @param pIOHandler The IO handler to be used in all file accesses + * of the Importer. + */ + void SetIOHandler( IOSystem* pIOHandler); + + // ------------------------------------------------------------------- + /** Retrieves the IO handler that is currently set. + * You can use #IsDefaultIOHandler() to check whether the returned + * interface is the default IO handler provided by ASSIMP. The default + * handler is active as long the application doesn't supply its own + * custom IO handler via #SetIOHandler(). + * @return A valid IOSystem interface, never NULL. + */ + IOSystem* GetIOHandler() const; + + // ------------------------------------------------------------------- + /** Checks whether a default IO handler is active + * A default handler is active as long the application doesn't + * supply its own custom IO handler via #SetIOHandler(). + * @return true by default + */ + bool IsDefaultIOHandler() const; + + // ------------------------------------------------------------------- + /** Supplies a custom progress handler to the importer. This + * interface exposes an #Update() callback, which is called + * more or less periodically (please don't sue us if it + * isn't as periodically as you'd like it to have ...). + * This can be used to implement progress bars and loading + * timeouts. + * @param pHandler Progress callback interface. Pass NULL to + * disable progress reporting. + * @note Progress handlers can be used to abort the loading + * at almost any time.*/ + void SetProgressHandler ( ProgressHandler* pHandler ); + + // ------------------------------------------------------------------- + /** Retrieves the progress handler that is currently set. + * You can use #IsDefaultProgressHandler() to check whether the returned + * interface is the default handler provided by ASSIMP. The default + * handler is active as long the application doesn't supply its own + * custom handler via #SetProgressHandler(). + * @return A valid ProgressHandler interface, never NULL. + */ + ProgressHandler* GetProgressHandler() const; + + // ------------------------------------------------------------------- + /** Checks whether a default progress handler is active + * A default handler is active as long the application doesn't + * supply its own custom progress handler via #SetProgressHandler(). + * @return true by default + */ + bool IsDefaultProgressHandler() const; + + // ------------------------------------------------------------------- + /** @brief Check whether a given set of post-processing flags + * is supported. + * + * Some flags are mutually exclusive, others are probably + * not available because your excluded them from your + * Assimp builds. Calling this function is recommended if + * you're unsure. + * + * @param pFlags Bitwise combination of the aiPostProcess flags. + * @return true if this flag combination is fine. + */ + bool ValidateFlags(unsigned int pFlags) const; + + // ------------------------------------------------------------------- + /** Reads the given file and returns its contents if successful. + * + * If the call succeeds, the contents of the file are returned as a + * pointer to an aiScene object. The returned data is intended to be + * read-only, the importer object keeps ownership of the data and will + * destroy it upon destruction. If the import fails, NULL is returned. + * A human-readable error description can be retrieved by calling + * GetErrorString(). The previous scene will be deleted during this call. + * @param pFile Path and filename to the file to be imported. + * @param pFlags Optional post processing steps to be executed after + * a successful import. Provide a bitwise combination of the + * #aiPostProcessSteps flags. If you wish to inspect the imported + * scene first in order to fine-tune your post-processing setup, + * consider to use #ApplyPostProcessing(). + * @return A pointer to the imported data, NULL if the import failed. + * The pointer to the scene remains in possession of the Importer + * instance. Use GetOrphanedScene() to take ownership of it. + * + * @note Assimp is able to determine the file format of a file + * automatically. + */ + const aiScene* ReadFile( + const char* pFile, + unsigned int pFlags); + + // ------------------------------------------------------------------- + /** Reads the given file from a memory buffer and returns its + * contents if successful. + * + * If the call succeeds, the contents of the file are returned as a + * pointer to an aiScene object. The returned data is intended to be + * read-only, the importer object keeps ownership of the data and will + * destroy it upon destruction. If the import fails, NULL is returned. + * A human-readable error description can be retrieved by calling + * GetErrorString(). The previous scene will be deleted during this call. + * Calling this method doesn't affect the active IOSystem. + * @param pBuffer Pointer to the file data + * @param pLength Length of pBuffer, in bytes + * @param pFlags Optional post processing steps to be executed after + * a successful import. Provide a bitwise combination of the + * #aiPostProcessSteps flags. If you wish to inspect the imported + * scene first in order to fine-tune your post-processing setup, + * consider to use #ApplyPostProcessing(). + * @param pHint An additional hint to the library. If this is a non + * empty string, the library looks for a loader to support + * the file extension specified by pHint and passes the file to + * the first matching loader. If this loader is unable to completely + * the request, the library continues and tries to determine the + * file format on its own, a task that may or may not be successful. + * Check the return value, and you'll know ... + * @return A pointer to the imported data, NULL if the import failed. + * The pointer to the scene remains in possession of the Importer + * instance. Use GetOrphanedScene() to take ownership of it. + * + * @note This is a straightforward way to decode models from memory + * buffers, but it doesn't handle model formats that spread their + * data across multiple files or even directories. Examples include + * OBJ or MD3, which outsource parts of their material info into + * external scripts. If you need full functionality, provide + * a custom IOSystem to make Assimp find these files and use + * the regular ReadFile() API. + */ + const aiScene* ReadFileFromMemory( + const void* pBuffer, + size_t pLength, + unsigned int pFlags, + const char* pHint = ""); + + // ------------------------------------------------------------------- + /** Apply post-processing to an already-imported scene. + * + * This is strictly equivalent to calling #ReadFile() with the same + * flags. However, you can use this separate function to inspect + * the imported scene first to fine-tune your post-processing setup. + * @param pFlags Provide a bitwise combination of the + * #aiPostProcessSteps flags. + * @return A pointer to the post-processed data. This is still the + * same as the pointer returned by #ReadFile(). However, if + * post-processing fails, the scene could now be NULL. + * That's quite a rare case, post processing steps are not really + * designed to 'fail'. To be exact, the #aiProcess_ValidateDS + * flag is currently the only post processing step which can actually + * cause the scene to be reset to NULL. + * + * @note The method does nothing if no scene is currently bound + * to the #Importer instance. */ + const aiScene* ApplyPostProcessing(unsigned int pFlags); + + const aiScene* ApplyCustomizedPostProcessing( BaseProcess *rootProcess, bool requestValidation ); + + // ------------------------------------------------------------------- + /** @brief Reads the given file and returns its contents if successful. + * + * This function is provided for backward compatibility. + * See the const char* version for detailed docs. + * @see ReadFile(const char*, pFlags) */ + const aiScene* ReadFile( + const std::string& pFile, + unsigned int pFlags); + + // ------------------------------------------------------------------- + /** Frees the current scene. + * + * The function does nothing if no scene has previously been + * read via ReadFile(). FreeScene() is called automatically by the + * destructor and ReadFile() itself. */ + void FreeScene( ); + + // ------------------------------------------------------------------- + /** Returns an error description of an error that occurred in ReadFile(). + * + * Returns an empty string if no error occurred. + * @return A description of the last error, an empty string if no + * error occurred. The string is never NULL. + * + * @note The returned function remains valid until one of the + * following methods is called: #ReadFile(), #FreeScene(). */ + const char* GetErrorString() const; + + // ------------------------------------------------------------------- + /** Returns the scene loaded by the last successful call to ReadFile() + * + * @return Current scene or NULL if there is currently no scene loaded */ + const aiScene* GetScene() const; + + // ------------------------------------------------------------------- + /** Returns the scene loaded by the last successful call to ReadFile() + * and releases the scene from the ownership of the Importer + * instance. The application is now responsible for deleting the + * scene. Any further calls to GetScene() or GetOrphanedScene() + * will return NULL - until a new scene has been loaded via ReadFile(). + * + * @return Current scene or NULL if there is currently no scene loaded + * @note Use this method with maximal caution, and only if you have to. + * By design, aiScene's are exclusively maintained, allocated and + * deallocated by Assimp and no one else. The reasoning behind this + * is the golden rule that deallocations should always be done + * by the module that did the original allocation because heaps + * are not necessarily shared. GetOrphanedScene() enforces you + * to delete the returned scene by yourself, but this will only + * be fine if and only if you're using the same heap as assimp. + * On Windows, it's typically fine provided everything is linked + * against the multithreaded-dll version of the runtime library. + * It will work as well for static linkage with Assimp.*/ + aiScene* GetOrphanedScene(); + + // ------------------------------------------------------------------- + /** Returns whether a given file extension is supported by ASSIMP. + * + * @param szExtension Extension to be checked. + * Must include a trailing dot '.'. Example: ".3ds", ".md3". + * Cases-insensitive. + * @return true if the extension is supported, false otherwise */ + bool IsExtensionSupported(const char* szExtension) const; + + // ------------------------------------------------------------------- + /** @brief Returns whether a given file extension is supported by ASSIMP. + * + * This function is provided for backward compatibility. + * See the const char* version for detailed and up-to-date docs. + * @see IsExtensionSupported(const char*) */ + inline bool IsExtensionSupported(const std::string& szExtension) const; + + // ------------------------------------------------------------------- + /** Get a full list of all file extensions supported by ASSIMP. + * + * If a file extension is contained in the list this does of course not + * mean that ASSIMP is able to load all files with this extension --- + * it simply means there is an importer loaded which claims to handle + * files with this file extension. + * @param szOut String to receive the extension list. + * Format of the list: "*.3ds;*.obj;*.dae". This is useful for + * use with the WinAPI call GetOpenFileName(Ex). */ + void GetExtensionList(aiString& szOut) const; + + // ------------------------------------------------------------------- + /** @brief Get a full list of all file extensions supported by ASSIMP. + * + * This function is provided for backward compatibility. + * See the aiString version for detailed and up-to-date docs. + * @see GetExtensionList(aiString&)*/ + inline void GetExtensionList(std::string& szOut) const; + + // ------------------------------------------------------------------- + /** Get the number of importers currently registered with Assimp. */ + size_t GetImporterCount() const; + + // ------------------------------------------------------------------- + /** Get meta data for the importer corresponding to a specific index.. + * + * For the declaration of #aiImporterDesc, include . + * @param index Index to query, must be within [0,GetImporterCount()) + * @return Importer meta data structure, NULL if the index does not + * exist or if the importer doesn't offer meta information ( + * importers may do this at the cost of being hated by their peers).*/ + const aiImporterDesc* GetImporterInfo(size_t index) const; + + // ------------------------------------------------------------------- + /** Find the importer corresponding to a specific index. + * + * @param index Index to query, must be within [0,GetImporterCount()) + * @return Importer instance. NULL if the index does not + * exist. */ + BaseImporter* GetImporter(size_t index) const; + + // ------------------------------------------------------------------- + /** Find the importer corresponding to a specific file extension. + * + * This is quite similar to #IsExtensionSupported except a + * BaseImporter instance is returned. + * @param szExtension Extension to check for. The following formats + * are recognized (BAH being the file extension): "BAH" (comparison + * is case-insensitive), ".bah", "*.bah" (wild card and dot + * characters at the beginning of the extension are skipped). + * @return NULL if no importer is found*/ + BaseImporter* GetImporter (const char* szExtension) const; + + // ------------------------------------------------------------------- + /** Find the importer index corresponding to a specific file extension. + * + * @param szExtension Extension to check for. The following formats + * are recognized (BAH being the file extension): "BAH" (comparison + * is case-insensitive), ".bah", "*.bah" (wild card and dot + * characters at the beginning of the extension are skipped). + * @return (size_t)-1 if no importer is found */ + size_t GetImporterIndex (const char* szExtension) const; + + // ------------------------------------------------------------------- + /** Returns the storage allocated by ASSIMP to hold the scene data + * in memory. + * + * This refers to the currently loaded file, see #ReadFile(). + * @param in Data structure to be filled. + * @note The returned memory statistics refer to the actual + * size of the use data of the aiScene. Heap-related overhead + * is (naturally) not included.*/ + void GetMemoryRequirements(aiMemoryInfo& in) const; + + // ------------------------------------------------------------------- + /** Enables "extra verbose" mode. + * + * 'Extra verbose' means the data structure is validated after *every* + * single post processing step to make sure everyone modifies the data + * structure in a well-defined manner. This is a debug feature and not + * intended for use in production environments. */ + void SetExtraVerbose(bool bDo); + + // ------------------------------------------------------------------- + /** Private, do not use. */ + ImporterPimpl* Pimpl() { return pimpl; } + const ImporterPimpl* Pimpl() const { return pimpl; } + +protected: + + // Just because we don't want you to know how we're hacking around. + ImporterPimpl* pimpl; +}; //! class Importer + + +// ---------------------------------------------------------------------------- +// For compatibility, the interface of some functions taking a std::string was +// changed to const char* to avoid crashes between binary incompatible STL +// versions. This code her is inlined, so it shouldn't cause any problems. +// ---------------------------------------------------------------------------- + +// ---------------------------------------------------------------------------- +AI_FORCE_INLINE const aiScene* Importer::ReadFile( const std::string& pFile,unsigned int pFlags){ + return ReadFile(pFile.c_str(),pFlags); +} +// ---------------------------------------------------------------------------- +AI_FORCE_INLINE void Importer::GetExtensionList(std::string& szOut) const { + aiString s; + GetExtensionList(s); + szOut = s.data; +} +// ---------------------------------------------------------------------------- +AI_FORCE_INLINE bool Importer::IsExtensionSupported(const std::string& szExtension) const { + return IsExtensionSupported(szExtension.c_str()); +} + +} // !namespace Assimp + +#endif // AI_ASSIMP_HPP_INC diff --git a/aig/assimp/LineSplitter.h b/aig/assimp/LineSplitter.h new file mode 100755 index 0000000..4afe45b --- /dev/null +++ b/aig/assimp/LineSplitter.h @@ -0,0 +1,285 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file LineSplitter.h + * @brief LineSplitter, a helper class to iterate through all lines + * of a file easily. Works with StreamReader. + */ +#pragma once +#ifndef INCLUDED_LINE_SPLITTER_H +#define INCLUDED_LINE_SPLITTER_H + +#include +#include "StreamReader.h" +#include "ParsingUtils.h" + +namespace Assimp { + +// ------------------------------------------------------------------------------------------------ +/** Usage: +@code +for(LineSplitter splitter(stream);splitter;++splitter) { + + if (*splitter == "hi!") { + ... + } + else if (splitter->substr(0,5) == "hello") { + ... + // access the third token in the line (tokens are space-separated) + if (strtol(splitter[2]) > 5) { .. } + } + + std::cout << "Current line is: " << splitter.get_index() << std::endl; +} +@endcode +*/ +// ------------------------------------------------------------------------------------------------ +class LineSplitter { +public: + typedef size_t line_idx; + + // ----------------------------------------- + /** construct from existing stream reader + note: trim is *always* assumed true if skyp_empty_lines==true + */ + LineSplitter(StreamReaderLE& stream, bool skip_empty_lines = true, bool trim = true); + + ~LineSplitter(); + + // ----------------------------------------- + /** pseudo-iterator increment */ + LineSplitter& operator++(); + + // ----------------------------------------- + LineSplitter& operator++(int); + + // ----------------------------------------- + /** get a pointer to the beginning of a particular token */ + const char* operator[] (size_t idx) const; + + // ----------------------------------------- + /** extract the start positions of N tokens from the current line*/ + template + void get_tokens(const char* (&tokens)[N]) const; + + // ----------------------------------------- + /** member access */ + const std::string* operator -> () const; + + std::string operator* () const; + + // ----------------------------------------- + /** boolean context */ + operator bool() const; + + // ----------------------------------------- + /** line indices are zero-based, empty lines are included */ + operator line_idx() const; + + line_idx get_index() const; + + // ----------------------------------------- + /** access the underlying stream object */ + StreamReaderLE& get_stream(); + + // ----------------------------------------- + /** !strcmp((*this)->substr(0,strlen(check)),check) */ + bool match_start(const char* check); + + // ----------------------------------------- + /** swallow the next call to ++, return the previous value. */ + void swallow_next_increment(); + + LineSplitter( const LineSplitter & ) = delete; + LineSplitter(LineSplitter &&) = delete; + LineSplitter &operator = ( const LineSplitter & ) = delete; + +private: + line_idx mIdx; + std::string mCur; + StreamReaderLE& mStream; + bool mSwallow, mSkip_empty_lines, mTrim; +}; + +inline +LineSplitter::LineSplitter(StreamReaderLE& stream, bool skip_empty_lines, bool trim ) +: mIdx(0) +, mCur() +, mStream(stream) +, mSwallow() +, mSkip_empty_lines(skip_empty_lines) +, mTrim(trim) { + mCur.reserve(1024); + operator++(); + mIdx = 0; +} + +inline +LineSplitter::~LineSplitter() { + // empty +} + +inline +LineSplitter& LineSplitter::operator++() { + if (mSwallow) { + mSwallow = false; + return *this; + } + + if (!*this) { + throw std::logic_error("End of file, no more lines to be retrieved."); + } + + char s; + mCur.clear(); + while (mStream.GetRemainingSize() && (s = mStream.GetI1(), 1)) { + if (s == '\n' || s == '\r') { + if (mSkip_empty_lines) { + while (mStream.GetRemainingSize() && ((s = mStream.GetI1()) == ' ' || s == '\r' || s == '\n')); + if (mStream.GetRemainingSize()) { + mStream.IncPtr(-1); + } + } else { + // skip both potential line terminators but don't read past this line. + if (mStream.GetRemainingSize() && (s == '\r' && mStream.GetI1() != '\n')) { + mStream.IncPtr(-1); + } + if (mTrim) { + while (mStream.GetRemainingSize() && ((s = mStream.GetI1()) == ' ' || s == '\t')); + if (mStream.GetRemainingSize()) { + mStream.IncPtr(-1); + } + } + } + break; + } + mCur += s; + } + ++mIdx; + + return *this; +} + +inline +LineSplitter &LineSplitter::operator++(int) { + return ++(*this); +} + +inline +const char *LineSplitter::operator[] (size_t idx) const { + const char* s = operator->()->c_str(); + + SkipSpaces(&s); + for (size_t i = 0; i < idx; ++i) { + + for (; !IsSpace(*s); ++s) { + if (IsLineEnd(*s)) { + throw std::range_error("Token index out of range, EOL reached"); + } + } + SkipSpaces(&s); + } + return s; +} + +template +inline +void LineSplitter::get_tokens(const char* (&tokens)[N]) const { + const char* s = operator->()->c_str(); + + SkipSpaces(&s); + for (size_t i = 0; i < N; ++i) { + if (IsLineEnd(*s)) { + throw std::range_error("Token count out of range, EOL reached"); + } + tokens[i] = s; + + for (; *s && !IsSpace(*s); ++s); + SkipSpaces(&s); + } +} + +inline +const std::string* LineSplitter::operator -> () const { + return &mCur; +} + +inline +std::string LineSplitter::operator* () const { + return mCur; +} + +inline +LineSplitter::operator bool() const { + return mStream.GetRemainingSize() > 0; +} + +inline +LineSplitter::operator line_idx() const { + return mIdx; +} + +inline +LineSplitter::line_idx LineSplitter::get_index() const { + return mIdx; +} + +inline +StreamReaderLE &LineSplitter::get_stream() { + return mStream; +} + +inline +bool LineSplitter::match_start(const char* check) { + const size_t len = ::strlen(check); + + return len <= mCur.length() && std::equal(check, check + len, mCur.begin()); +} + +inline +void LineSplitter::swallow_next_increment() { + mSwallow = true; +} + +} // Namespace Assimp + +#endif // INCLUDED_LINE_SPLITTER_H diff --git a/aig/assimp/LogAux.h b/aig/assimp/LogAux.h new file mode 100755 index 0000000..5584852 --- /dev/null +++ b/aig/assimp/LogAux.h @@ -0,0 +1,131 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file LogAux.h + * @brief Common logging usage patterns for importer implementations + */ +#ifndef INCLUDED_AI_LOGAUX_H +#define INCLUDED_AI_LOGAUX_H + +#include +#include +#include + +namespace Assimp { + +template +class LogFunctions { +public: + // ------------------------------------------------------------------------------------------------ + static void ThrowException(const std::string& msg) + { + throw DeadlyImportError(Prefix()+msg); + } + + // ------------------------------------------------------------------------------------------------ + static void LogWarn(const Formatter::format& message) { + if (!DefaultLogger::isNullLogger()) { + ASSIMP_LOG_WARN(Prefix()+(std::string)message); + } + } + + // ------------------------------------------------------------------------------------------------ + static void LogError(const Formatter::format& message) { + if (!DefaultLogger::isNullLogger()) { + ASSIMP_LOG_ERROR(Prefix()+(std::string)message); + } + } + + // ------------------------------------------------------------------------------------------------ + static void LogInfo(const Formatter::format& message) { + if (!DefaultLogger::isNullLogger()) { + ASSIMP_LOG_INFO(Prefix()+(std::string)message); + } + } + + // ------------------------------------------------------------------------------------------------ + static void LogDebug(const Formatter::format& message) { + if (!DefaultLogger::isNullLogger()) { + ASSIMP_LOG_DEBUG(Prefix()+(std::string)message); + } + } + + // https://sourceforge.net/tracker/?func=detail&atid=1067632&aid=3358562&group_id=226462 +#if !defined(__GNUC__) || !defined(__APPLE__) || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) + + // ------------------------------------------------------------------------------------------------ + static void LogWarn (const char* message) { + if (!DefaultLogger::isNullLogger()) { + LogWarn(Formatter::format(message)); + } + } + + // ------------------------------------------------------------------------------------------------ + static void LogError (const char* message) { + if (!DefaultLogger::isNullLogger()) { + LogError(Formatter::format(message)); + } + } + + // ------------------------------------------------------------------------------------------------ + static void LogInfo (const char* message) { + if (!DefaultLogger::isNullLogger()) { + LogInfo(Formatter::format(message)); + } + } + + // ------------------------------------------------------------------------------------------------ + static void LogDebug (const char* message) { + if (!DefaultLogger::isNullLogger()) { + LogDebug(Formatter::format(message)); + } + } + +#endif + +private: + static const char* Prefix(); + +}; +} // ! Assimp + +#endif diff --git a/aig/assimp/LogStream.hpp b/aig/assimp/LogStream.hpp new file mode 100755 index 0000000..d0281e2 --- /dev/null +++ b/aig/assimp/LogStream.hpp @@ -0,0 +1,111 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file LogStream.hpp + * @brief Abstract base class 'LogStream', representing an output log stream. + */ +#ifndef INCLUDED_AI_LOGSTREAM_H +#define INCLUDED_AI_LOGSTREAM_H + +#include "types.h" + +namespace Assimp { + +class IOSystem; + +// ------------------------------------------------------------------------------------ +/** @brief CPP-API: Abstract interface for log stream implementations. + * + * Several default implementations are provided, see #aiDefaultLogStream for more + * details. Writing your own implementation of LogStream is just necessary if these + * are not enough for your purpose. */ +class ASSIMP_API LogStream +#ifndef SWIG + : public Intern::AllocateFromAssimpHeap +#endif +{ +protected: + /** @brief Default constructor */ + LogStream() AI_NO_EXCEPT; + +public: + /** @brief Virtual destructor */ + virtual ~LogStream(); + + // ------------------------------------------------------------------- + /** @brief Overwrite this for your own output methods + * + * Log messages *may* consist of multiple lines and you shouldn't + * expect a consistent formatting. If you want custom formatting + * (e.g. generate HTML), supply a custom instance of Logger to + * #DefaultLogger:set(). Usually you can *expect* that a log message + * is exactly one line and terminated with a single \n character. + * @param message Message to be written */ + virtual void write(const char* message) = 0; + + // ------------------------------------------------------------------- + /** @brief Creates a default log stream + * @param streams Type of the default stream + * @param name For aiDefaultLogStream_FILE: name of the output file + * @param io For aiDefaultLogStream_FILE: IOSystem to be used to open the output + * file. Pass NULL for the default implementation. + * @return New LogStream instance. */ + static LogStream* createDefaultStream(aiDefaultLogStream stream, + const char* name = "AssimpLog.txt", + IOSystem* io = nullptr ); + +}; // !class LogStream + +inline +LogStream::LogStream() AI_NO_EXCEPT { + // empty +} + +inline +LogStream::~LogStream() { + // empty +} + +// ------------------------------------------------------------------------------------ +} // Namespace Assimp + +#endif diff --git a/aig/assimp/Logger.hpp b/aig/assimp/Logger.hpp new file mode 100755 index 0000000..89cade6 --- /dev/null +++ b/aig/assimp/Logger.hpp @@ -0,0 +1,305 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file Logger.hpp + * @brief Abstract base class 'Logger', base of the logging system. + */ +#ifndef INCLUDED_AI_LOGGER_H +#define INCLUDED_AI_LOGGER_H + +#include +#include + +namespace Assimp { + +class LogStream; + +// Maximum length of a log message. Longer messages are rejected. +#define MAX_LOG_MESSAGE_LENGTH 1024u + +// ---------------------------------------------------------------------------------- +/** @brief CPP-API: Abstract interface for logger implementations. + * Assimp provides a default implementation and uses it for almost all + * logging stuff ('DefaultLogger'). This class defines just basic logging + * behavior and is not of interest for you. Instead, take a look at #DefaultLogger. */ +class ASSIMP_API Logger +#ifndef SWIG + : public Intern::AllocateFromAssimpHeap +#endif +{ +public: + + // ---------------------------------------------------------------------- + /** @enum LogSeverity + * @brief Log severity to describe the granularity of logging. + */ + enum LogSeverity { + NORMAL, //!< Normal granularity of logging + VERBOSE //!< Debug infos will be logged, too + }; + + // ---------------------------------------------------------------------- + /** @enum ErrorSeverity + * @brief Description for severity of a log message. + * + * Every LogStream has a bitwise combination of these flags. + * A LogStream doesn't receive any messages of a specific type + * if it doesn't specify the corresponding ErrorSeverity flag. + */ + enum ErrorSeverity { + Debugging = 1, //!< Debug log message + Info = 2, //!< Info log message + Warn = 4, //!< Warn log message + Err = 8 //!< Error log message + }; + +public: + + /** @brief Virtual destructor */ + virtual ~Logger(); + + // ---------------------------------------------------------------------- + /** @brief Writes a debug message + * @param message Debug message*/ + void debug(const char* message); + void debug(const std::string &message); + + // ---------------------------------------------------------------------- + /** @brief Writes a info message + * @param message Info message*/ + void info(const char* message); + void info(const std::string &message); + + // ---------------------------------------------------------------------- + /** @brief Writes a warning message + * @param message Warn message*/ + void warn(const char* message); + void warn(const std::string &message); + + // ---------------------------------------------------------------------- + /** @brief Writes an error message + * @param message Error message*/ + void error(const char* message); + void error(const std::string &message); + + // ---------------------------------------------------------------------- + /** @brief Set a new log severity. + * @param log_severity New severity for logging*/ + void setLogSeverity(LogSeverity log_severity); + + // ---------------------------------------------------------------------- + /** @brief Get the current log severity*/ + LogSeverity getLogSeverity() const; + + // ---------------------------------------------------------------------- + /** @brief Attach a new log-stream + * + * The logger takes ownership of the stream and is responsible + * for its destruction (which is done using ::delete when the logger + * itself is destroyed). Call detachStream to detach a stream and to + * gain ownership of it again. + * @param pStream Log-stream to attach + * @param severity Message filter, specified which types of log + * messages are dispatched to the stream. Provide a bitwise + * combination of the ErrorSeverity flags. + * @return true if the stream has been attached, false otherwise.*/ + virtual bool attachStream(LogStream *pStream, + unsigned int severity = Debugging | Err | Warn | Info) = 0; + + // ---------------------------------------------------------------------- + /** @brief Detach a still attached stream from the logger (or + * modify the filter flags bits) + * @param pStream Log-stream instance for detaching + * @param severity Provide a bitwise combination of the ErrorSeverity + * flags. This value is &~ed with the current flags of the stream, + * if the result is 0 the stream is detached from the Logger and + * the caller retakes the possession of the stream. + * @return true if the stream has been detached, false otherwise.*/ + virtual bool detatchStream(LogStream *pStream, + unsigned int severity = Debugging | Err | Warn | Info) = 0; + +protected: + /** + * Default constructor + */ + Logger() AI_NO_EXCEPT; + + /** + * Construction with a given log severity + */ + explicit Logger(LogSeverity severity); + + // ---------------------------------------------------------------------- + /** + * @brief Called as a request to write a specific debug message + * @param message Debug message. Never longer than + * MAX_LOG_MESSAGE_LENGTH characters (excluding the '0'). + * @note The message string is only valid until the scope of + * the function is left. + */ + virtual void OnDebug(const char* message)= 0; + + // ---------------------------------------------------------------------- + /** + * @brief Called as a request to write a specific info message + * @param message Info message. Never longer than + * MAX_LOG_MESSAGE_LENGTH characters (ecxluding the '0'). + * @note The message string is only valid until the scope of + * the function is left. + */ + virtual void OnInfo(const char* message) = 0; + + // ---------------------------------------------------------------------- + /** + * @brief Called as a request to write a specific warn message + * @param message Warn message. Never longer than + * MAX_LOG_MESSAGE_LENGTH characters (exluding the '0'). + * @note The message string is only valid until the scope of + * the function is left. + */ + virtual void OnWarn(const char* essage) = 0; + + // ---------------------------------------------------------------------- + /** + * @brief Called as a request to write a specific error message + * @param message Error message. Never longer than + * MAX_LOG_MESSAGE_LENGTH characters (exluding the '0'). + * @note The message string is only valid until the scope of + * the function is left. + */ + virtual void OnError(const char* message) = 0; + +protected: + LogSeverity m_Severity; +}; + +// ---------------------------------------------------------------------------------- +// Default constructor +inline +Logger::Logger() AI_NO_EXCEPT +: m_Severity(NORMAL) { + // empty +} + +// ---------------------------------------------------------------------------------- +// Virtual destructor +inline +Logger::~Logger() { + // empty +} + +// ---------------------------------------------------------------------------------- +// Construction with given logging severity +inline +Logger::Logger(LogSeverity severity) +: m_Severity(severity) { + // empty +} + +// ---------------------------------------------------------------------------------- +// Log severity setter +inline +void Logger::setLogSeverity(LogSeverity log_severity){ + m_Severity = log_severity; +} + +// ---------------------------------------------------------------------------------- +// Log severity getter +inline +Logger::LogSeverity Logger::getLogSeverity() const { + return m_Severity; +} + +// ---------------------------------------------------------------------------------- +inline +void Logger::debug(const std::string &message) { + return debug(message.c_str()); +} + +// ---------------------------------------------------------------------------------- +inline +void Logger::error(const std::string &message) { + return error(message.c_str()); +} + +// ---------------------------------------------------------------------------------- +inline +void Logger::warn(const std::string &message) { + return warn(message.c_str()); +} + +// ---------------------------------------------------------------------------------- +inline +void Logger::info(const std::string &message) { + return info(message.c_str()); +} + +// ------------------------------------------------------------------------------------------------ +#define ASSIMP_LOG_WARN_F(string,...)\ + DefaultLogger::get()->warn((Formatter::format(string),__VA_ARGS__)) + +#define ASSIMP_LOG_ERROR_F(string,...)\ + DefaultLogger::get()->error((Formatter::format(string),__VA_ARGS__)) + +#define ASSIMP_LOG_DEBUG_F(string,...)\ + DefaultLogger::get()->debug((Formatter::format(string),__VA_ARGS__)) + +#define ASSIMP_LOG_INFO_F(string,...)\ + DefaultLogger::get()->info((Formatter::format(string),__VA_ARGS__)) + + +#define ASSIMP_LOG_WARN(string)\ + DefaultLogger::get()->warn(string) + +#define ASSIMP_LOG_ERROR(string)\ + DefaultLogger::get()->error(string) + +#define ASSIMP_LOG_DEBUG(string)\ + DefaultLogger::get()->debug(string) + +#define ASSIMP_LOG_INFO(string)\ + DefaultLogger::get()->info(string) + + +} // Namespace Assimp + +#endif // !! INCLUDED_AI_LOGGER_H diff --git a/aig/assimp/Macros.h b/aig/assimp/Macros.h new file mode 100755 index 0000000..6515303 --- /dev/null +++ b/aig/assimp/Macros.h @@ -0,0 +1,49 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +/* Helper macro to set a pointer to NULL in debug builds + */ +#if (defined ASSIMP_BUILD_DEBUG) +# define AI_DEBUG_INVALIDATE_PTR(x) x = NULL; +#else +# define AI_DEBUG_INVALIDATE_PTR(x) +#endif + diff --git a/aig/assimp/MathFunctions.h b/aig/assimp/MathFunctions.h new file mode 100755 index 0000000..f49273b --- /dev/null +++ b/aig/assimp/MathFunctions.h @@ -0,0 +1,86 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#pragma once + +/** @file MathFunctions.h +* @brief Implementation of math utility functions. + * +*/ + +#include + +namespace Assimp { +namespace Math { + +// TODO: use binary GCD for unsigned integers .... +template < typename IntegerType > +inline +IntegerType gcd( IntegerType a, IntegerType b ) { + const IntegerType zero = (IntegerType)0; + while ( true ) { + if ( a == zero ) + return b; + b %= a; + + if ( b == zero ) + return a; + a %= b; + } +} + +template < typename IntegerType > +inline +IntegerType lcm( IntegerType a, IntegerType b ) { + const IntegerType t = gcd (a,b); + if (!t) + return t; + return a / t * b; +} + +template +inline +T getEpsilon() { + return std::numeric_limits::epsilon(); +} + +} +} diff --git a/aig/assimp/MemoryIOWrapper.h b/aig/assimp/MemoryIOWrapper.h new file mode 100755 index 0000000..c522787 --- /dev/null +++ b/aig/assimp/MemoryIOWrapper.h @@ -0,0 +1,244 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file MemoryIOWrapper.h + * Handy IOStream/IOSystem implemetation to read directly from a memory buffer */ +#ifndef AI_MEMORYIOSTREAM_H_INC +#define AI_MEMORYIOSTREAM_H_INC + +#include +#include +#include +#include + +namespace Assimp { + +#define AI_MEMORYIO_MAGIC_FILENAME "$$$___magic___$$$" +#define AI_MEMORYIO_MAGIC_FILENAME_LENGTH 17 + +// ---------------------------------------------------------------------------------- +/** Implementation of IOStream to read directly from a memory buffer */ +// ---------------------------------------------------------------------------------- +class MemoryIOStream : public IOStream { +public: + MemoryIOStream (const uint8_t* buff, size_t len, bool own = false) + : buffer (buff) + , length(len) + , pos((size_t)0) + , own(own) { + // empty + } + + ~MemoryIOStream () { + if(own) { + delete[] buffer; + } + } + + // ------------------------------------------------------------------- + // Read from stream + size_t Read(void* pvBuffer, size_t pSize, size_t pCount) { + ai_assert(nullptr != pvBuffer); + ai_assert(0 != pSize); + + const size_t cnt = std::min( pCount, (length-pos) / pSize); + const size_t ofs = pSize * cnt; + + ::memcpy(pvBuffer,buffer+pos,ofs); + pos += ofs; + + return cnt; + } + + // ------------------------------------------------------------------- + // Write to stream + size_t Write(const void* /*pvBuffer*/, size_t /*pSize*/,size_t /*pCount*/) { + ai_assert(false); // won't be needed + return 0; + } + + // ------------------------------------------------------------------- + // Seek specific position + aiReturn Seek(size_t pOffset, aiOrigin pOrigin) { + if (aiOrigin_SET == pOrigin) { + if (pOffset > length) { + return AI_FAILURE; + } + pos = pOffset; + } else if (aiOrigin_END == pOrigin) { + if (pOffset > length) { + return AI_FAILURE; + } + pos = length-pOffset; + } else { + if (pOffset+pos > length) { + return AI_FAILURE; + } + pos += pOffset; + } + return AI_SUCCESS; + } + + // ------------------------------------------------------------------- + // Get current seek position + size_t Tell() const { + return pos; + } + + // ------------------------------------------------------------------- + // Get size of file + size_t FileSize() const { + return length; + } + + // ------------------------------------------------------------------- + // Flush file contents + void Flush() { + ai_assert(false); // won't be needed + } + +private: + const uint8_t* buffer; + size_t length,pos; + bool own; +}; + +// --------------------------------------------------------------------------- +/** Dummy IO system to read from a memory buffer */ +class MemoryIOSystem : public IOSystem { +public: + /** Constructor. */ + MemoryIOSystem(const uint8_t* buff, size_t len, IOSystem* io) + : buffer(buff) + , length(len) + , existing_io(io) + , created_streams() { + // empty + } + + /** Destructor. */ + ~MemoryIOSystem() { + } + + // ------------------------------------------------------------------- + /** Tests for the existence of a file at the given path. */ + bool Exists(const char* pFile) const override { + if (0 == strncmp( pFile, AI_MEMORYIO_MAGIC_FILENAME, AI_MEMORYIO_MAGIC_FILENAME_LENGTH ) ) { + return true; + } + return existing_io ? existing_io->Exists(pFile) : false; + } + + // ------------------------------------------------------------------- + /** Returns the directory separator. */ + char getOsSeparator() const override { + return existing_io ? existing_io->getOsSeparator() + : '/'; // why not? it doesn't care + } + + // ------------------------------------------------------------------- + /** Open a new file with a given path. */ + IOStream* Open(const char* pFile, const char* pMode = "rb") override { + if ( 0 == strncmp( pFile, AI_MEMORYIO_MAGIC_FILENAME, AI_MEMORYIO_MAGIC_FILENAME_LENGTH ) ) { + created_streams.emplace_back(new MemoryIOStream(buffer, length)); + return created_streams.back(); + } + return existing_io ? existing_io->Open(pFile, pMode) : NULL; + } + + // ------------------------------------------------------------------- + /** Closes the given file and releases all resources associated with it. */ + void Close( IOStream* pFile) override { + auto it = std::find(created_streams.begin(), created_streams.end(), pFile); + if (it != created_streams.end()) { + delete pFile; + created_streams.erase(it); + } else if (existing_io) { + existing_io->Close(pFile); + } + } + + // ------------------------------------------------------------------- + /** Compare two paths */ + bool ComparePaths(const char* one, const char* second) const override { + return existing_io ? existing_io->ComparePaths(one, second) : false; + } + + bool PushDirectory( const std::string &path ) override { + return existing_io ? existing_io->PushDirectory(path) : false; + } + + const std::string &CurrentDirectory() const override { + static std::string empty; + return existing_io ? existing_io->CurrentDirectory() : empty; + } + + size_t StackSize() const override { + return existing_io ? existing_io->StackSize() : 0; + } + + bool PopDirectory() override { + return existing_io ? existing_io->PopDirectory() : false; + } + + bool CreateDirectory( const std::string &path ) override { + return existing_io ? existing_io->CreateDirectory(path) : false; + } + + bool ChangeDirectory( const std::string &path ) override { + return existing_io ? existing_io->ChangeDirectory(path) : false; + } + + bool DeleteFile( const std::string &file ) override { + return existing_io ? existing_io->DeleteFile(file) : false; + } + +private: + const uint8_t* buffer; + size_t length; + IOSystem* existing_io; + std::vector created_streams; +}; + +} // end namespace Assimp + +#endif diff --git a/aig/assimp/NullLogger.hpp b/aig/assimp/NullLogger.hpp new file mode 100755 index 0000000..c45d01b --- /dev/null +++ b/aig/assimp/NullLogger.hpp @@ -0,0 +1,99 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file NullLogger.hpp + * @brief Dummy logger +*/ + +#ifndef INCLUDED_AI_NULLLOGGER_H +#define INCLUDED_AI_NULLLOGGER_H + +#include "Logger.hpp" + +namespace Assimp { + +// --------------------------------------------------------------------------- +/** @brief CPP-API: Empty logging implementation. + * + * Does nothing! Used by default if the application hasn't requested a + * custom logger via #DefaultLogger::set() or #DefaultLogger::create(); */ +class ASSIMP_API NullLogger + : public Logger { + +public: + + /** @brief Logs a debug message */ + void OnDebug(const char* message) { + (void)message; //this avoids compiler warnings + } + + /** @brief Logs an info message */ + void OnInfo(const char* message) { + (void)message; //this avoids compiler warnings + } + + /** @brief Logs a warning message */ + void OnWarn(const char* message) { + (void)message; //this avoids compiler warnings + } + + /** @brief Logs an error message */ + void OnError(const char* message) { + (void)message; //this avoids compiler warnings + } + + /** @brief Detach a still attached stream from logger */ + bool attachStream(LogStream *pStream, unsigned int severity) { + (void)pStream; (void)severity; //this avoids compiler warnings + return false; + } + + /** @brief Detach a still attached stream from logger */ + bool detatchStream(LogStream *pStream, unsigned int severity) { + (void)pStream; (void)severity; //this avoids compiler warnings + return false; + } + +private: +}; +} +#endif // !! AI_NULLLOGGER_H_INCLUDED diff --git a/aig/assimp/ParsingUtils.h b/aig/assimp/ParsingUtils.h new file mode 100755 index 0000000..6b9574f --- /dev/null +++ b/aig/assimp/ParsingUtils.h @@ -0,0 +1,259 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + + +/** @file ParsingUtils.h + * @brief Defines helper functions for text parsing + */ +#ifndef AI_PARSING_UTILS_H_INC +#define AI_PARSING_UTILS_H_INC + +#include "StringComparison.h" +#include "StringUtils.h" +#include + +namespace Assimp { + +// NOTE: the functions below are mostly intended as replacement for +// std::upper, std::lower, std::isupper, std::islower, std::isspace. +// we don't bother of locales. We don't want them. We want reliable +// (i.e. identical) results across all locales. + +// The functions below accept any character type, but know only +// about ASCII. However, UTF-32 is the only safe ASCII superset to +// use since it doesn't have multi-byte sequences. + +static const unsigned int BufferSize = 4096; + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE +char_t ToLower( char_t in ) { + return (in >= (char_t)'A' && in <= (char_t)'Z') ? (char_t)(in+0x20) : in; +} + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE +char_t ToUpper( char_t in) { + return (in >= (char_t)'a' && in <= (char_t)'z') ? (char_t)(in-0x20) : in; +} + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE +bool IsUpper( char_t in) { + return (in >= (char_t)'A' && in <= (char_t)'Z'); +} + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE +bool IsLower( char_t in) { + return (in >= (char_t)'a' && in <= (char_t)'z'); +} + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE +bool IsSpace( char_t in) { + return (in == (char_t)' ' || in == (char_t)'\t'); +} + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE +bool IsLineEnd( char_t in) { + return (in==(char_t)'\r'||in==(char_t)'\n'||in==(char_t)'\0'||in==(char_t)'\f'); +} + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE +bool IsSpaceOrNewLine( char_t in) { + return IsSpace(in) || IsLineEnd(in); +} + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE +bool SkipSpaces( const char_t* in, const char_t** out) { + while( *in == ( char_t )' ' || *in == ( char_t )'\t' ) { + ++in; + } + *out = in; + return !IsLineEnd(*in); +} + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE +bool SkipSpaces( const char_t** inout) { + return SkipSpaces(*inout,inout); +} + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE +bool SkipLine( const char_t* in, const char_t** out) { + while( *in != ( char_t )'\r' && *in != ( char_t )'\n' && *in != ( char_t )'\0' ) { + ++in; + } + + // files are opened in binary mode. Ergo there are both NL and CR + while( *in == ( char_t )'\r' || *in == ( char_t )'\n' ) { + ++in; + } + *out = in; + return *in != (char_t)'\0'; +} + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE +bool SkipLine( const char_t** inout) { + return SkipLine(*inout,inout); +} + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE +bool SkipSpacesAndLineEnd( const char_t* in, const char_t** out) { + while( *in == ( char_t )' ' || *in == ( char_t )'\t' || *in == ( char_t )'\r' || *in == ( char_t )'\n' ) { + ++in; + } + *out = in; + return *in != '\0'; +} + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE +bool SkipSpacesAndLineEnd( const char_t** inout) { + return SkipSpacesAndLineEnd(*inout,inout); +} + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE +bool GetNextLine( const char_t*& buffer, char_t out[ BufferSize ] ) { + if( ( char_t )'\0' == *buffer ) { + return false; + } + + char* _out = out; + char* const end = _out + BufferSize; + while( !IsLineEnd( *buffer ) && _out < end ) { + *_out++ = *buffer++; + } + *_out = (char_t)'\0'; + + while( IsLineEnd( *buffer ) && '\0' != *buffer ) { + ++buffer; + } + + return true; +} + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE bool IsNumeric( char_t in) { + return ( in >= '0' && in <= '9' ) || '-' == in || '+' == in; +} + +// --------------------------------------------------------------------------------- +template +AI_FORCE_INLINE +bool TokenMatch(char_t*& in, const char* token, unsigned int len) +{ + if (!::strncmp(token,in,len) && IsSpaceOrNewLine(in[len])) { + if (in[len] != '\0') { + in += len+1; + } else { + // If EOF after the token make sure we don't go past end of buffer + in += len; + } + return true; + } + + return false; +} +// --------------------------------------------------------------------------------- +/** @brief Case-ignoring version of TokenMatch + * @param in Input + * @param token Token to check for + * @param len Number of characters to check + */ +AI_FORCE_INLINE +bool TokenMatchI(const char*& in, const char* token, unsigned int len) { + if (!ASSIMP_strincmp(token,in,len) && IsSpaceOrNewLine(in[len])) { + in += len+1; + return true; + } + return false; +} + +// --------------------------------------------------------------------------------- +AI_FORCE_INLINE +void SkipToken(const char*& in) { + SkipSpaces(&in); + while ( !IsSpaceOrNewLine( *in ) ) { + ++in; + } +} + +// --------------------------------------------------------------------------------- +AI_FORCE_INLINE +std::string GetNextToken(const char*& in) { + SkipSpacesAndLineEnd(&in); + const char* cur = in; + while ( !IsSpaceOrNewLine( *in ) ) { + ++in; + } + return std::string(cur,(size_t)(in-cur)); +} + +// --------------------------------------------------------------------------------- + +} // ! namespace Assimp + +#endif // ! AI_PARSING_UTILS_H_INC diff --git a/aig/assimp/Profiler.h b/aig/assimp/Profiler.h new file mode 100755 index 0000000..6ff9d41 --- /dev/null +++ b/aig/assimp/Profiler.h @@ -0,0 +1,99 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file Profiler.h + * @brief Utility to measure the respective runtime of each import step + */ +#ifndef INCLUDED_PROFILER_H +#define INCLUDED_PROFILER_H + +#include +#include +#include "TinyFormatter.h" + +#include + +namespace Assimp { +namespace Profiling { + +using namespace Formatter; + +// ------------------------------------------------------------------------------------------------ +/** Simple wrapper around boost::timer to simplify reporting. Timings are automatically + * dumped to the log file. + */ +class Profiler { +public: + Profiler() { + // empty + } + +public: + + /** Start a named timer */ + void BeginRegion(const std::string& region) { + regions[region] = std::chrono::system_clock::now(); + ASSIMP_LOG_DEBUG((format("START `"),region,"`")); + } + + + /** End a specific named timer and write its end time to the log */ + void EndRegion(const std::string& region) { + RegionMap::const_iterator it = regions.find(region); + if (it == regions.end()) { + return; + } + + std::chrono::duration elapsedSeconds = std::chrono::system_clock::now() - regions[region]; + ASSIMP_LOG_DEBUG((format("END `"),region,"`, dt= ", elapsedSeconds.count()," s")); + } + +private: + typedef std::map> RegionMap; + RegionMap regions; +}; + +} +} + +#endif + diff --git a/aig/assimp/ProgressHandler.hpp b/aig/assimp/ProgressHandler.hpp new file mode 100755 index 0000000..4e47f1d --- /dev/null +++ b/aig/assimp/ProgressHandler.hpp @@ -0,0 +1,145 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file ProgressHandler.hpp + * @brief Abstract base class 'ProgressHandler'. + */ +#pragma once +#ifndef AI_PROGRESSHANDLER_H_INC +#define AI_PROGRESSHANDLER_H_INC + +#include "types.h" + +namespace Assimp { + +// ------------------------------------------------------------------------------------ +/** @brief CPP-API: Abstract interface for custom progress report receivers. + * + * Each #Importer instance maintains its own #ProgressHandler. The default + * implementation provided by Assimp doesn't do anything at all. */ +class ASSIMP_API ProgressHandler +#ifndef SWIG + : public Intern::AllocateFromAssimpHeap +#endif +{ +protected: + /// @brief Default constructor + ProgressHandler () AI_NO_EXCEPT { + // empty + } + +public: + /// @brief Virtual destructor. + virtual ~ProgressHandler () { + } + + // ------------------------------------------------------------------- + /** @brief Progress callback. + * @param percentage An estimate of the current loading progress, + * in percent. Or -1.f if such an estimate is not available. + * + * There are restriction on what you may do from within your + * implementation of this method: no exceptions may be thrown and no + * non-const #Importer methods may be called. It is + * not generally possible to predict the number of callbacks + * fired during a single import. + * + * @return Return false to abort loading at the next possible + * occasion (loaders and Assimp are generally allowed to perform + * all needed cleanup tasks prior to returning control to the + * caller). If the loading is aborted, #Importer::ReadFile() + * returns always NULL. + * */ + virtual bool Update(float percentage = -1.f) = 0; + + // ------------------------------------------------------------------- + /** @brief Progress callback for file loading steps + * @param numberOfSteps The number of total post-processing + * steps + * @param currentStep The index of the current post-processing + * step that will run, or equal to numberOfSteps if all of + * them has finished. This number is always strictly monotone + * increasing, although not necessarily linearly. + * + * @note This is currently only used at the start and the end + * of the file parsing. + * */ + virtual void UpdateFileRead(int currentStep /*= 0*/, int numberOfSteps /*= 0*/) { + float f = numberOfSteps ? currentStep / (float)numberOfSteps : 1.0f; + Update( f * 0.5f ); + } + + // ------------------------------------------------------------------- + /** @brief Progress callback for post-processing steps + * @param numberOfSteps The number of total post-processing + * steps + * @param currentStep The index of the current post-processing + * step that will run, or equal to numberOfSteps if all of + * them has finished. This number is always strictly monotone + * increasing, although not necessarily linearly. + * */ + virtual void UpdatePostProcess(int currentStep /*= 0*/, int numberOfSteps /*= 0*/) { + float f = numberOfSteps ? currentStep / (float)numberOfSteps : 1.0f; + Update( f * 0.5f + 0.5f ); + } + + + // ------------------------------------------------------------------- + /** @brief Progress callback for export steps. + * @param numberOfSteps The number of total processing + * steps + * @param currentStep The index of the current post-processing + * step that will run, or equal to numberOfSteps if all of + * them has finished. This number is always strictly monotone + * increasing, although not necessarily linearly. + * */ + virtual void UpdateFileWrite(int currentStep /*= 0*/, int numberOfSteps /*= 0*/) { + float f = numberOfSteps ? currentStep / (float)numberOfSteps : 1.0f; + Update(f * 0.5f); + } +}; // !class ProgressHandler + +// ------------------------------------------------------------------------------------ + +} // Namespace Assimp + +#endif // AI_PROGRESSHANDLER_H_INC diff --git a/aig/assimp/RemoveComments.h b/aig/assimp/RemoveComments.h new file mode 100755 index 0000000..404b496 --- /dev/null +++ b/aig/assimp/RemoveComments.h @@ -0,0 +1,91 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file Declares a helper class, "CommentRemover", which can be + * used to remove comments (single and multi line) from a text file. + */ +#ifndef AI_REMOVE_COMMENTS_H_INC +#define AI_REMOVE_COMMENTS_H_INC + + +#include + +namespace Assimp { + +// --------------------------------------------------------------------------- +/** \brief Helper class to remove single and multi line comments from a file + * + * Some mesh formats like MD5 have comments that are quite similar + * to those in C or C++ so this code has been moved to a separate + * module. + */ +class ASSIMP_API CommentRemover +{ + // class cannot be instanced + CommentRemover() {} + +public: + + //! Remove single-line comments. The end of a line is + //! expected to be either NL or CR or NLCR. + //! \param szComment The start sequence of the comment, e.g. "//" + //! \param szBuffer Buffer to work with + //! \param chReplacement Character to be used as replacement + //! for commented lines. By default this is ' ' + static void RemoveLineComments(const char* szComment, + char* szBuffer, char chReplacement = ' '); + + //! Remove multi-line comments. The end of a line is + //! expected to be either NL or CR or NLCR. Multi-line comments + //! may not be nested (as in C). + //! \param szCommentStart The start sequence of the comment, e.g. "/*" + //! \param szCommentEnd The end sequence of the comment, e.g. "*/" + //! \param szBuffer Buffer to work with + //! \param chReplacement Character to be used as replacement + //! for commented lines. By default this is ' ' + static void RemoveMultiLineComments(const char* szCommentStart, + const char* szCommentEnd,char* szBuffer, + char chReplacement = ' '); +}; +} // ! Assimp + +#endif // !! AI_REMOVE_COMMENTS_H_INC diff --git a/aig/assimp/SGSpatialSort.h b/aig/assimp/SGSpatialSort.h new file mode 100755 index 0000000..5b4f3f4 --- /dev/null +++ b/aig/assimp/SGSpatialSort.h @@ -0,0 +1,150 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** Small helper classes to optimize finding vertices close to a given location + */ +#ifndef AI_D3DSSPATIALSORT_H_INC +#define AI_D3DSSPATIALSORT_H_INC + +#include +#include +#include + +namespace Assimp { + +// ---------------------------------------------------------------------------------- +/** Specialized version of SpatialSort to support smoothing groups + * This is used in by the 3DS, ASE and LWO loaders. 3DS and ASE share their + * normal computation code in SmoothingGroups.inl, the LWO loader has its own + * implementation to handle all details of its file format correctly. + */ +// ---------------------------------------------------------------------------------- +class ASSIMP_API SGSpatialSort +{ +public: + + SGSpatialSort(); + + // ------------------------------------------------------------------- + /** Construction from a given face array, handling smoothing groups + * properly + */ + explicit SGSpatialSort(const std::vector& vPositions); + + // ------------------------------------------------------------------- + /** Add a vertex to the spatial sort + * @param vPosition Vertex position to be added + * @param index Index of the vrtex + * @param smoothingGroup SmoothingGroup for this vertex + */ + void Add(const aiVector3D& vPosition, unsigned int index, + unsigned int smoothingGroup); + + // ------------------------------------------------------------------- + /** Prepare the spatial sorter for use. This step runs in O(logn) + */ + void Prepare(); + + /** Destructor */ + ~SGSpatialSort(); + + // ------------------------------------------------------------------- + /** Returns an iterator for all positions close to the given position. + * @param pPosition The position to look for vertices. + * @param pSG Only included vertices with at least one shared smooth group + * @param pRadius Maximal distance from the position a vertex may have + * to be counted in. + * @param poResults The container to store the indices of the found + * positions. Will be emptied by the call so it may contain anything. + * @param exactMatch Specifies whether smoothing groups are bit masks + * (false) or integral values (true). In the latter case, a vertex + * cannot belong to more than one smoothing group. + * @return An iterator to iterate over all vertices in the given area. + */ + // ------------------------------------------------------------------- + void FindPositions( const aiVector3D& pPosition, uint32_t pSG, + float pRadius, std::vector& poResults, + bool exactMatch = false) const; + +protected: + /** Normal of the sorting plane, normalized. The center is always at (0, 0, 0) */ + aiVector3D mPlaneNormal; + + // ------------------------------------------------------------------- + /** An entry in a spatially sorted position array. Consists of a + * vertex index, its position and its pre-calculated distance from + * the reference plane */ + // ------------------------------------------------------------------- + struct Entry { + unsigned int mIndex; ///< The vertex referred by this entry + aiVector3D mPosition; ///< Position + uint32_t mSmoothGroups; + float mDistance; ///< Distance of this vertex to the sorting plane + + Entry() AI_NO_EXCEPT + : mIndex(0) + , mPosition() + , mSmoothGroups(0) + , mDistance(0.0f) { + // empty + } + + Entry( unsigned int pIndex, const aiVector3D& pPosition, float pDistance,uint32_t pSG) + : mIndex( pIndex) + , mPosition( pPosition) + , mSmoothGroups(pSG) + , mDistance( pDistance) { + // empty + } + + bool operator < (const Entry& e) const { + return mDistance < e.mDistance; + } + }; + + // all positions, sorted by distance to the sorting plane + std::vector mPositions; +}; + +} // end of namespace Assimp + +#endif // AI_SPATIALSORT_H_INC diff --git a/aig/assimp/SceneCombiner.h b/aig/assimp/SceneCombiner.h new file mode 100755 index 0000000..f69a25f --- /dev/null +++ b/aig/assimp/SceneCombiner.h @@ -0,0 +1,403 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file Declares a helper class, "SceneCombiner" providing various + * utilities to merge scenes. + */ +#ifndef AI_SCENE_COMBINER_H_INC +#define AI_SCENE_COMBINER_H_INC + +#include +#include +#include +#include +#include +#include +#include + +#include + +struct aiScene; +struct aiNode; +struct aiMaterial; +struct aiTexture; +struct aiCamera; +struct aiLight; +struct aiMetadata; +struct aiBone; +struct aiMesh; +struct aiAnimMesh; +struct aiAnimation; +struct aiNodeAnim; + +namespace Assimp { + +// --------------------------------------------------------------------------- +/** \brief Helper data structure for SceneCombiner. + * + * Describes to which node a scene must be attached to. + */ +struct AttachmentInfo +{ + AttachmentInfo() + : scene (NULL) + , attachToNode (NULL) + {} + + AttachmentInfo(aiScene* _scene, aiNode* _attachToNode) + : scene (_scene) + , attachToNode (_attachToNode) + {} + + aiScene* scene; + aiNode* attachToNode; +}; + +// --------------------------------------------------------------------------- +struct NodeAttachmentInfo +{ + NodeAttachmentInfo() + : node (NULL) + , attachToNode (NULL) + , resolved (false) + , src_idx (SIZE_MAX) + {} + + NodeAttachmentInfo(aiNode* _scene, aiNode* _attachToNode,size_t idx) + : node (_scene) + , attachToNode (_attachToNode) + , resolved (false) + , src_idx (idx) + {} + + aiNode* node; + aiNode* attachToNode; + bool resolved; + size_t src_idx; +}; + +// --------------------------------------------------------------------------- +/** @def AI_INT_MERGE_SCENE_GEN_UNIQUE_NAMES + * Generate unique names for all named scene items + */ +#define AI_INT_MERGE_SCENE_GEN_UNIQUE_NAMES 0x1 + +/** @def AI_INT_MERGE_SCENE_GEN_UNIQUE_MATNAMES + * Generate unique names for materials, too. + * This is not absolutely required to pass the validation. + */ +#define AI_INT_MERGE_SCENE_GEN_UNIQUE_MATNAMES 0x2 + +/** @def AI_INT_MERGE_SCENE_DUPLICATES_DEEP_CPY + * Use deep copies of duplicate scenes + */ +#define AI_INT_MERGE_SCENE_DUPLICATES_DEEP_CPY 0x4 + +/** @def AI_INT_MERGE_SCENE_RESOLVE_CROSS_ATTACHMENTS + * If attachment nodes are not found in the given master scene, + * search the other imported scenes for them in an any order. + */ +#define AI_INT_MERGE_SCENE_RESOLVE_CROSS_ATTACHMENTS 0x8 + +/** @def AI_INT_MERGE_SCENE_GEN_UNIQUE_NAMES_IF_NECESSARY + * Can be combined with AI_INT_MERGE_SCENE_GEN_UNIQUE_NAMES. + * Unique names are generated, but only if this is absolutely + * required to avoid name conflicts. + */ +#define AI_INT_MERGE_SCENE_GEN_UNIQUE_NAMES_IF_NECESSARY 0x10 + +typedef std::pair BoneSrcIndex; + +// --------------------------------------------------------------------------- +/** @brief Helper data structure for SceneCombiner::MergeBones. + */ +struct BoneWithHash : public std::pair { + std::vector pSrcBones; +}; + +// --------------------------------------------------------------------------- +/** @brief Utility for SceneCombiner + */ +struct SceneHelper +{ + SceneHelper () + : scene (NULL) + , idlen (0) + { + id[0] = 0; + } + + explicit SceneHelper (aiScene* _scene) + : scene (_scene) + , idlen (0) + { + id[0] = 0; + } + + AI_FORCE_INLINE aiScene* operator-> () const + { + return scene; + } + + // scene we're working on + aiScene* scene; + + // prefix to be added to all identifiers in the scene ... + char id [32]; + + // and its strlen() + unsigned int idlen; + + // hash table to quickly check whether a name is contained in the scene + std::set hashes; +}; + +// --------------------------------------------------------------------------- +/** \brief Static helper class providing various utilities to merge two + * scenes. It is intended as internal utility and NOT for use by + * applications. + * + * The class is currently being used by various postprocessing steps + * and loaders (ie. LWS). + */ +class ASSIMP_API SceneCombiner { + // class cannot be instanced + SceneCombiner() { + // empty + } + + ~SceneCombiner() { + // empty + } + +public: + // ------------------------------------------------------------------- + /** Merges two or more scenes. + * + * @param dest Receives a pointer to the destination scene. If the + * pointer doesn't point to NULL when the function is called, the + * existing scene is cleared and refilled. + * @param src Non-empty list of scenes to be merged. The function + * deletes the input scenes afterwards. There may be duplicate scenes. + * @param flags Combination of the AI_INT_MERGE_SCENE flags defined above + */ + static void MergeScenes(aiScene** dest,std::vector& src, + unsigned int flags = 0); + + // ------------------------------------------------------------------- + /** Merges two or more scenes and attaches all scenes to a specific + * position in the node graph of the master scene. + * + * @param dest Receives a pointer to the destination scene. If the + * pointer doesn't point to NULL when the function is called, the + * existing scene is cleared and refilled. + * @param master Master scene. It will be deleted afterwards. All + * other scenes will be inserted in its node graph. + * @param src Non-empty list of scenes to be merged along with their + * corresponding attachment points in the master scene. The function + * deletes the input scenes afterwards. There may be duplicate scenes. + * @param flags Combination of the AI_INT_MERGE_SCENE flags defined above + */ + static void MergeScenes(aiScene** dest, aiScene* master, + std::vector& src, + unsigned int flags = 0); + + // ------------------------------------------------------------------- + /** Merges two or more meshes + * + * The meshes should have equal vertex formats. Only components + * that are provided by ALL meshes will be present in the output mesh. + * An exception is made for VColors - they are set to black. The + * meshes should have the same material indices, too. The output + * material index is always the material index of the first mesh. + * + * @param dest Destination mesh. Must be empty. + * @param flags Currently no parameters + * @param begin First mesh to be processed + * @param end Points to the mesh after the last mesh to be processed + */ + static void MergeMeshes(aiMesh** dest,unsigned int flags, + std::vector::const_iterator begin, + std::vector::const_iterator end); + + // ------------------------------------------------------------------- + /** Merges two or more bones + * + * @param out Mesh to receive the output bone list + * @param flags Currently no parameters + * @param begin First mesh to be processed + * @param end Points to the mesh after the last mesh to be processed + */ + static void MergeBones(aiMesh* out,std::vector::const_iterator it, + std::vector::const_iterator end); + + // ------------------------------------------------------------------- + /** Merges two or more materials + * + * The materials should be complementary as much as possible. In case + * of a property present in different materials, the first occurrence + * is used. + * + * @param dest Destination material. Must be empty. + * @param begin First material to be processed + * @param end Points to the material after the last material to be processed + */ + static void MergeMaterials(aiMaterial** dest, + std::vector::const_iterator begin, + std::vector::const_iterator end); + + // ------------------------------------------------------------------- + /** Builds a list of uniquely named bones in a mesh list + * + * @param asBones Receives the output list + * @param it First mesh to be processed + * @param end Last mesh to be processed + */ + static void BuildUniqueBoneList(std::list& asBones, + std::vector::const_iterator it, + std::vector::const_iterator end); + + // ------------------------------------------------------------------- + /** Add a name prefix to all nodes in a scene. + * + * @param Current node. This function is called recursively. + * @param prefix Prefix to be added to all nodes + * @param len STring length + */ + static void AddNodePrefixes(aiNode* node, const char* prefix, + unsigned int len); + + // ------------------------------------------------------------------- + /** Add an offset to all mesh indices in a node graph + * + * @param Current node. This function is called recursively. + * @param offset Offset to be added to all mesh indices + */ + static void OffsetNodeMeshIndices (aiNode* node, unsigned int offset); + + // ------------------------------------------------------------------- + /** Attach a list of node graphs to well-defined nodes in a master + * graph. This is a helper for MergeScenes() + * + * @param master Master scene + * @param srcList List of source scenes along with their attachment + * points. If an attachment point is NULL (or does not exist in + * the master graph), a scene is attached to the root of the master + * graph (as an additional child node) + * @duplicates List of duplicates. If elem[n] == n the scene is not + * a duplicate. Otherwise elem[n] links scene n to its first occurrence. + */ + static void AttachToGraph ( aiScene* master, + std::vector& srcList); + + static void AttachToGraph (aiNode* attach, + std::vector& srcList); + + + // ------------------------------------------------------------------- + /** Get a deep copy of a scene + * + * @param dest Receives a pointer to the destination scene + * @param src Source scene - remains unmodified. + */ + static void CopyScene(aiScene** dest,const aiScene* source,bool allocate = true); + + + // ------------------------------------------------------------------- + /** Get a flat copy of a scene + * + * Only the first hierarchy layer is copied. All pointer members of + * aiScene are shared by source and destination scene. If the + * pointer doesn't point to NULL when the function is called, the + * existing scene is cleared and refilled. + * @param dest Receives a pointer to the destination scene + * @param src Source scene - remains unmodified. + */ + static void CopySceneFlat(aiScene** dest,const aiScene* source); + + + // ------------------------------------------------------------------- + /** Get a deep copy of a mesh + * + * @param dest Receives a pointer to the destination mesh + * @param src Source mesh - remains unmodified. + */ + static void Copy (aiMesh** dest, const aiMesh* src); + + // similar to Copy(): + static void Copy (aiAnimMesh** dest, const aiAnimMesh* src); + static void Copy (aiMaterial** dest, const aiMaterial* src); + static void Copy (aiTexture** dest, const aiTexture* src); + static void Copy (aiAnimation** dest, const aiAnimation* src); + static void Copy (aiCamera** dest, const aiCamera* src); + static void Copy (aiBone** dest, const aiBone* src); + static void Copy (aiLight** dest, const aiLight* src); + static void Copy (aiNodeAnim** dest, const aiNodeAnim* src); + static void Copy (aiMetadata** dest, const aiMetadata* src); + + // recursive, of course + static void Copy (aiNode** dest, const aiNode* src); + + +private: + + // ------------------------------------------------------------------- + // Same as AddNodePrefixes, but with an additional check + static void AddNodePrefixesChecked(aiNode* node, const char* prefix, + unsigned int len, + std::vector& input, + unsigned int cur); + + // ------------------------------------------------------------------- + // Add node identifiers to a hashing set + static void AddNodeHashes(aiNode* node, std::set& hashes); + + + // ------------------------------------------------------------------- + // Search for duplicate names + static bool FindNameMatch(const aiString& name, + std::vector& input, unsigned int cur); +}; + +} + +#endif // !! AI_SCENE_COMBINER_H_INC diff --git a/aig/assimp/SkeletonMeshBuilder.h b/aig/assimp/SkeletonMeshBuilder.h new file mode 100755 index 0000000..f9b8d9f --- /dev/null +++ b/aig/assimp/SkeletonMeshBuilder.h @@ -0,0 +1,125 @@ +/** Helper class to construct a dummy mesh for file formats containing only motion data */ + +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file SkeletonMeshBuilder.h + * Declares SkeletonMeshBuilder, a tiny utility to build dummy meshes + * for animation skeletons. + */ + +#ifndef AI_SKELETONMESHBUILDER_H_INC +#define AI_SKELETONMESHBUILDER_H_INC + +#include +#include + +struct aiMaterial; +struct aiScene; +struct aiNode; + +namespace Assimp { + +// --------------------------------------------------------------------------- +/** + * This little helper class constructs a dummy mesh for a given scene + * the resembles the node hierarchy. This is useful for file formats + * that don't carry any mesh data but only animation data. + */ +class ASSIMP_API SkeletonMeshBuilder +{ +public: + + // ------------------------------------------------------------------- + /** The constructor processes the given scene and adds a mesh there. + * + * Does nothing if the scene already has mesh data. + * @param pScene The scene for which a skeleton mesh should be constructed. + * @param root The node to start with. NULL is the scene root + * @param bKnobsOnly Set this to true if you don't want the connectors + * between the knobs representing the nodes. + */ + SkeletonMeshBuilder( aiScene* pScene, aiNode* root = NULL, + bool bKnobsOnly = false); + +protected: + + // ------------------------------------------------------------------- + /** Recursively builds a simple mesh representation for the given node + * and also creates a joint for the node that affects this part of + * the mesh. + * @param pNode The node to build geometry for. + */ + void CreateGeometry( const aiNode* pNode); + + // ------------------------------------------------------------------- + /** Creates the mesh from the internally accumulated stuff and returns it. + */ + aiMesh* CreateMesh(); + + // ------------------------------------------------------------------- + /** Creates a dummy material and returns it. */ + aiMaterial* CreateMaterial(); + +protected: + /** space to assemble the mesh data: points */ + std::vector mVertices; + + /** faces */ + struct Face + { + unsigned int mIndices[3]; + Face(); + Face( unsigned int p0, unsigned int p1, unsigned int p2) + { mIndices[0] = p0; mIndices[1] = p1; mIndices[2] = p2; } + }; + std::vector mFaces; + + /** bones */ + std::vector mBones; + + bool mKnobsOnly; +}; + +} // end of namespace Assimp + +#endif // AI_SKELETONMESHBUILDER_H_INC diff --git a/aig/assimp/SmoothingGroups.h b/aig/assimp/SmoothingGroups.h new file mode 100755 index 0000000..92d65ce --- /dev/null +++ b/aig/assimp/SmoothingGroups.h @@ -0,0 +1,108 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file Defines the helper data structures for importing 3DS files. +http://www.jalix.org/ressources/graphics/3DS/_unofficials/3ds-unofficial.txt */ + +#ifndef AI_SMOOTHINGGROUPS_H_INC +#define AI_SMOOTHINGGROUPS_H_INC + +#include +#include +#include + +// --------------------------------------------------------------------------- +/** Helper structure representing a face with smoothing groups assigned */ +struct FaceWithSmoothingGroup { + FaceWithSmoothingGroup() AI_NO_EXCEPT + : mIndices() + , iSmoothGroup(0) { + // in debug builds set all indices to a common magic value +#ifdef ASSIMP_BUILD_DEBUG + this->mIndices[0] = 0xffffffff; + this->mIndices[1] = 0xffffffff; + this->mIndices[2] = 0xffffffff; +#endif + } + + + //! Indices. .3ds is using uint16. However, after + //! an unique vertex set has been generated, + //! individual index values might exceed 2^16 + uint32_t mIndices[3]; + + //! specifies to which smoothing group the face belongs to + uint32_t iSmoothGroup; +}; + +// --------------------------------------------------------------------------- +/** Helper structure representing a mesh whose faces have smoothing + groups assigned. This allows us to reuse the code for normal computations + from smoothings groups for several loaders (3DS, ASE). All of them + use face structures which inherit from #FaceWithSmoothingGroup, + but as they add extra members and need to be copied by value we + need to use a template here. + */ +template +struct MeshWithSmoothingGroups +{ + //! Vertex positions + std::vector mPositions; + + //! Face lists + std::vector mFaces; + + //! List of normal vectors + std::vector mNormals; +}; + +// --------------------------------------------------------------------------- +/** Computes normal vectors for the mesh + */ +template +void ComputeNormalsWithSmoothingsGroups(MeshWithSmoothingGroups& sMesh); + + +// include implementations +#include "SmoothingGroups.inl" + +#endif // !! AI_SMOOTHINGGROUPS_H_INC diff --git a/aig/assimp/SmoothingGroups.inl b/aig/assimp/SmoothingGroups.inl new file mode 100755 index 0000000..84ea4a1 --- /dev/null +++ b/aig/assimp/SmoothingGroups.inl @@ -0,0 +1,138 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2012, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +/** @file Generation of normal vectors basing on smoothing groups */ + +#ifndef AI_SMOOTHINGGROUPS_INL_INCLUDED +#define AI_SMOOTHINGGROUPS_INL_INCLUDED + +// internal headers +#include + +// CRT header +#include + +using namespace Assimp; + +// ------------------------------------------------------------------------------------------------ +template +void ComputeNormalsWithSmoothingsGroups(MeshWithSmoothingGroups& sMesh) +{ + // First generate face normals + sMesh.mNormals.resize(sMesh.mPositions.size(),aiVector3D()); + for( unsigned int a = 0; a < sMesh.mFaces.size(); a++) + { + T& face = sMesh.mFaces[a]; + + aiVector3D* pV1 = &sMesh.mPositions[face.mIndices[0]]; + aiVector3D* pV2 = &sMesh.mPositions[face.mIndices[1]]; + aiVector3D* pV3 = &sMesh.mPositions[face.mIndices[2]]; + + aiVector3D pDelta1 = *pV2 - *pV1; + aiVector3D pDelta2 = *pV3 - *pV1; + aiVector3D vNor = pDelta1 ^ pDelta2; + + for (unsigned int c = 0; c < 3;++c) + sMesh.mNormals[face.mIndices[c]] = vNor; + } + + // calculate the position bounds so we have a reliable epsilon to check position differences against + aiVector3D minVec( 1e10f, 1e10f, 1e10f), maxVec( -1e10f, -1e10f, -1e10f); + for( unsigned int a = 0; a < sMesh.mPositions.size(); a++) + { + minVec.x = std::min( minVec.x, sMesh.mPositions[a].x); + minVec.y = std::min( minVec.y, sMesh.mPositions[a].y); + minVec.z = std::min( minVec.z, sMesh.mPositions[a].z); + maxVec.x = std::max( maxVec.x, sMesh.mPositions[a].x); + maxVec.y = std::max( maxVec.y, sMesh.mPositions[a].y); + maxVec.z = std::max( maxVec.z, sMesh.mPositions[a].z); + } + const float posEpsilon = (maxVec - minVec).Length() * 1e-5f; + std::vector avNormals; + avNormals.resize(sMesh.mNormals.size()); + + // now generate the spatial sort tree + SGSpatialSort sSort; + for( typename std::vector::iterator i = sMesh.mFaces.begin(); + i != sMesh.mFaces.end();++i) + { + for (unsigned int c = 0; c < 3;++c) + sSort.Add(sMesh.mPositions[(*i).mIndices[c]],(*i).mIndices[c],(*i).iSmoothGroup); + } + sSort.Prepare(); + + std::vector vertexDone(sMesh.mPositions.size(),false); + for( typename std::vector::iterator i = sMesh.mFaces.begin(); + i != sMesh.mFaces.end();++i) + { + std::vector poResult; + for (unsigned int c = 0; c < 3;++c) + { + unsigned int idx = (*i).mIndices[c]; + if (vertexDone[idx])continue; + + sSort.FindPositions(sMesh.mPositions[idx],(*i).iSmoothGroup, + posEpsilon,poResult); + + aiVector3D vNormals; + for (std::vector::const_iterator + a = poResult.begin(); + a != poResult.end();++a) + { + vNormals += sMesh.mNormals[(*a)]; + } + vNormals.NormalizeSafe(); + + // write back into all affected normals + for (std::vector::const_iterator + a = poResult.begin(); + a != poResult.end();++a) + { + idx = *a; + avNormals [idx] = vNormals; + vertexDone[idx] = true; + } + } + } + sMesh.mNormals = avNormals; +} + +#endif // !! AI_SMOOTHINGGROUPS_INL_INCLUDED diff --git a/aig/assimp/SpatialSort.h b/aig/assimp/SpatialSort.h new file mode 100755 index 0000000..61b345b --- /dev/null +++ b/aig/assimp/SpatialSort.h @@ -0,0 +1,174 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** Small helper classes to optimise finding vertizes close to a given location */ +#ifndef AI_SPATIALSORT_H_INC +#define AI_SPATIALSORT_H_INC + +#include +#include + +namespace Assimp { + +// ------------------------------------------------------------------------------------------------ +/** A little helper class to quickly find all vertices in the epsilon environment of a given + * position. Construct an instance with an array of positions. The class stores the given positions + * by their indices and sorts them by their distance to an arbitrary chosen plane. + * You can then query the instance for all vertices close to a given position in an average O(log n) + * time, with O(n) worst case complexity when all vertices lay on the plane. The plane is chosen + * so that it avoids common planes in usual data sets. */ +// ------------------------------------------------------------------------------------------------ +class ASSIMP_API SpatialSort +{ +public: + + SpatialSort(); + + // ------------------------------------------------------------------------------------ + /** Constructs a spatially sorted representation from the given position array. + * Supply the positions in its layout in memory, the class will only refer to them + * by index. + * @param pPositions Pointer to the first position vector of the array. + * @param pNumPositions Number of vectors to expect in that array. + * @param pElementOffset Offset in bytes from the beginning of one vector in memory + * to the beginning of the next vector. */ + SpatialSort( const aiVector3D* pPositions, unsigned int pNumPositions, + unsigned int pElementOffset); + + /** Destructor */ + ~SpatialSort(); + +public: + + // ------------------------------------------------------------------------------------ + /** Sets the input data for the SpatialSort. This replaces existing data, if any. + * The new data receives new indices in ascending order. + * + * @param pPositions Pointer to the first position vector of the array. + * @param pNumPositions Number of vectors to expect in that array. + * @param pElementOffset Offset in bytes from the beginning of one vector in memory + * to the beginning of the next vector. + * @param pFinalize Specifies whether the SpatialSort's internal representation + * is finalized after the new data has been added. Finalization is + * required in order to use #FindPosition() or #GenerateMappingTable(). + * If you don't finalize yet, you can use #Append() to add data from + * other sources.*/ + void Fill( const aiVector3D* pPositions, unsigned int pNumPositions, + unsigned int pElementOffset, + bool pFinalize = true); + + + // ------------------------------------------------------------------------------------ + /** Same as #Fill(), except the method appends to existing data in the #SpatialSort. */ + void Append( const aiVector3D* pPositions, unsigned int pNumPositions, + unsigned int pElementOffset, + bool pFinalize = true); + + + // ------------------------------------------------------------------------------------ + /** Finalize the spatial hash data structure. This can be useful after + * multiple calls to #Append() with the pFinalize parameter set to false. + * This is finally required before one of #FindPositions() and #GenerateMappingTable() + * can be called to query the spatial sort.*/ + void Finalize(); + + // ------------------------------------------------------------------------------------ + /** Returns an iterator for all positions close to the given position. + * @param pPosition The position to look for vertices. + * @param pRadius Maximal distance from the position a vertex may have to be counted in. + * @param poResults The container to store the indices of the found positions. + * Will be emptied by the call so it may contain anything. + * @return An iterator to iterate over all vertices in the given area.*/ + void FindPositions( const aiVector3D& pPosition, ai_real pRadius, + std::vector& poResults) const; + + // ------------------------------------------------------------------------------------ + /** Fills an array with indices of all positions identical to the given position. In + * opposite to FindPositions(), not an epsilon is used but a (very low) tolerance of + * four floating-point units. + * @param pPosition The position to look for vertices. + * @param poResults The container to store the indices of the found positions. + * Will be emptied by the call so it may contain anything.*/ + void FindIdenticalPositions( const aiVector3D& pPosition, + std::vector& poResults) const; + + // ------------------------------------------------------------------------------------ + /** Compute a table that maps each vertex ID referring to a spatially close + * enough position to the same output ID. Output IDs are assigned in ascending order + * from 0...n. + * @param fill Will be filled with numPositions entries. + * @param pRadius Maximal distance from the position a vertex may have to + * be counted in. + * @return Number of unique vertices (n). */ + unsigned int GenerateMappingTable(std::vector& fill, + ai_real pRadius) const; + +protected: + /** Normal of the sorting plane, normalized. The center is always at (0, 0, 0) */ + aiVector3D mPlaneNormal; + + /** An entry in a spatially sorted position array. Consists of a vertex index, + * its position and its pre-calculated distance from the reference plane */ + struct Entry { + unsigned int mIndex; ///< The vertex referred by this entry + aiVector3D mPosition; ///< Position + ai_real mDistance; ///< Distance of this vertex to the sorting plane + + Entry() AI_NO_EXCEPT + : mIndex( 999999999 ), mPosition(), mDistance( 99999. ) { + // empty + } + Entry( unsigned int pIndex, const aiVector3D& pPosition, ai_real pDistance) + : mIndex( pIndex), mPosition( pPosition), mDistance( pDistance) { + // empty + } + + bool operator < (const Entry& e) const { return mDistance < e.mDistance; } + }; + + // all positions, sorted by distance to the sorting plane + std::vector mPositions; +}; + +} // end of namespace Assimp + +#endif // AI_SPATIALSORT_H_INC diff --git a/aig/assimp/StandardShapes.h b/aig/assimp/StandardShapes.h new file mode 100755 index 0000000..3791569 --- /dev/null +++ b/aig/assimp/StandardShapes.h @@ -0,0 +1,200 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file Declares a helper class, "StandardShapes" which generates + * vertices for standard shapes, such as cylnders, cones, spheres .. + */ +#ifndef AI_STANDARD_SHAPES_H_INC +#define AI_STANDARD_SHAPES_H_INC + +#include +#include + +struct aiMesh; + +namespace Assimp { + +// --------------------------------------------------------------------------- +/** \brief Helper class to generate vertex buffers for standard geometric + * shapes, such as cylinders, cones, boxes, spheres, elipsoids ... . + */ +class ASSIMP_API StandardShapes +{ + // class cannot be instanced + StandardShapes() {} + +public: + + + // ---------------------------------------------------------------- + /** Generates a mesh from an array of vertex positions. + * + * @param positions List of vertex positions + * @param numIndices Number of indices per primitive + * @return Output mesh + */ + static aiMesh* MakeMesh(const std::vector& positions, + unsigned int numIndices); + + + static aiMesh* MakeMesh ( unsigned int (*GenerateFunc) + (std::vector&)); + + static aiMesh* MakeMesh ( unsigned int (*GenerateFunc) + (std::vector&, bool)); + + static aiMesh* MakeMesh ( unsigned int n, void (*GenerateFunc) + (unsigned int,std::vector&)); + + // ---------------------------------------------------------------- + /** @brief Generates a hexahedron (cube) + * + * Hexahedrons can be scaled on all axes. + * @param positions Receives output triangles. + * @param polygons If you pass true here quads will be returned + * @return Number of vertices per face + */ + static unsigned int MakeHexahedron( + std::vector& positions, + bool polygons = false); + + // ---------------------------------------------------------------- + /** @brief Generates an icosahedron + * + * @param positions Receives output triangles. + * @return Number of vertices per face + */ + static unsigned int MakeIcosahedron( + std::vector& positions); + + + // ---------------------------------------------------------------- + /** @brief Generates a dodecahedron + * + * @param positions Receives output triangles + * @param polygons If you pass true here pentagons will be returned + * @return Number of vertices per face + */ + static unsigned int MakeDodecahedron( + std::vector& positions, + bool polygons = false); + + + // ---------------------------------------------------------------- + /** @brief Generates an octahedron + * + * @param positions Receives output triangles. + * @return Number of vertices per face + */ + static unsigned int MakeOctahedron( + std::vector& positions); + + + // ---------------------------------------------------------------- + /** @brief Generates a tetrahedron + * + * @param positions Receives output triangles. + * @return Number of vertices per face + */ + static unsigned int MakeTetrahedron( + std::vector& positions); + + + + // ---------------------------------------------------------------- + /** @brief Generates a sphere + * + * @param tess Number of subdivions - 0 generates a octahedron + * @param positions Receives output triangles. + */ + static void MakeSphere(unsigned int tess, + std::vector& positions); + + + // ---------------------------------------------------------------- + /** @brief Generates a cone or a cylinder, either open or closed. + * + * @code + * + * |-----| <- radius 1 + * + * __x__ <- ] ^ + * / \ | height | + * / \ | Y + * / \ | + * / \ | + * /______x______\ <- ] <- end cap + * + * |-------------| <- radius 2 + * + * @endcode + * + * @param height Height of the cone + * @param radius1 First radius + * @param radius2 Second radius + * @param tess Number of triangles. + * @param bOpened true for an open cone/cylinder. An open shape has + * no 'end caps' + * @param positions Receives output triangles + */ + static void MakeCone(ai_real height,ai_real radius1, + ai_real radius2,unsigned int tess, + std::vector& positions,bool bOpen= false); + + + // ---------------------------------------------------------------- + /** @brief Generates a flat circle + * + * The circle is constructed in the planned formed by the x,z + * axes of the cartesian coordinate system. + * + * @param radius Radius of the circle + * @param tess Number of segments. + * @param positions Receives output triangles. + */ + static void MakeCircle(ai_real radius, unsigned int tess, + std::vector& positions); + +}; +} // ! Assimp + +#endif // !! AI_STANDARD_SHAPES_H_INC diff --git a/aig/assimp/StreamReader.h b/aig/assimp/StreamReader.h new file mode 100755 index 0000000..9116c14 --- /dev/null +++ b/aig/assimp/StreamReader.h @@ -0,0 +1,343 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +/** @file Defines the StreamReader class which reads data from + * a binary stream with a well-defined endianness. + */ + +#ifndef AI_STREAMREADER_H_INCLUDED +#define AI_STREAMREADER_H_INCLUDED + +#include +#include + +#include "ByteSwapper.h" +#include "Exceptional.h" +#include + +namespace Assimp { + +// -------------------------------------------------------------------------------------------- +/** Wrapper class around IOStream to allow for consistent reading of binary data in both + * little and big endian format. Don't attempt to instance the template directly. Use + * StreamReaderLE to read from a little-endian stream and StreamReaderBE to read from a + * BE stream. The class expects that the endianness of any input data is known at + * compile-time, which should usually be true (#BaseImporter::ConvertToUTF8 implements + * runtime endianness conversions for text files). + * + * XXX switch from unsigned int for size types to size_t? or ptrdiff_t?*/ +// -------------------------------------------------------------------------------------------- +template +class StreamReader { +public: + // FIXME: use these data types throughout the whole library, + // then change them to 64 bit values :-) + using diff = int; + using pos = unsigned int; + + // --------------------------------------------------------------------- + /** Construction from a given stream with a well-defined endianness. + * + * The StreamReader holds a permanent strong reference to the + * stream, which is released upon destruction. + * @param stream Input stream. The stream is not restarted if + * its file pointer is not at 0. Instead, the stream reader + * reads from the current position to the end of the stream. + * @param le If @c RuntimeSwitch is true: specifies whether the + * stream is in little endian byte order. Otherwise the + * endianness information is contained in the @c SwapEndianess + * template parameter and this parameter is meaningless. */ + StreamReader(std::shared_ptr stream, bool le = false) + : stream(stream) + , le(le) + { + ai_assert(stream); + InternBegin(); + } + + // --------------------------------------------------------------------- + StreamReader(IOStream* stream, bool le = false) + : stream(std::shared_ptr(stream)) + , le(le) + { + ai_assert(stream); + InternBegin(); + } + + // --------------------------------------------------------------------- + ~StreamReader() { + delete[] buffer; + } + + // deprecated, use overloaded operator>> instead + + // --------------------------------------------------------------------- + /** Read a float from the stream */ + float GetF4() + { + return Get(); + } + + // --------------------------------------------------------------------- + /** Read a double from the stream */ + double GetF8() { + return Get(); + } + + // --------------------------------------------------------------------- + /** Read a signed 16 bit integer from the stream */ + int16_t GetI2() { + return Get(); + } + + // --------------------------------------------------------------------- + /** Read a signed 8 bit integer from the stream */ + int8_t GetI1() { + return Get(); + } + + // --------------------------------------------------------------------- + /** Read an signed 32 bit integer from the stream */ + int32_t GetI4() { + return Get(); + } + + // --------------------------------------------------------------------- + /** Read a signed 64 bit integer from the stream */ + int64_t GetI8() { + return Get(); + } + + // --------------------------------------------------------------------- + /** Read a unsigned 16 bit integer from the stream */ + uint16_t GetU2() { + return Get(); + } + + // --------------------------------------------------------------------- + /** Read a unsigned 8 bit integer from the stream */ + uint8_t GetU1() { + return Get(); + } + + // --------------------------------------------------------------------- + /** Read an unsigned 32 bit integer from the stream */ + uint32_t GetU4() { + return Get(); + } + + // --------------------------------------------------------------------- + /** Read a unsigned 64 bit integer from the stream */ + uint64_t GetU8() { + return Get(); + } + + // --------------------------------------------------------------------- + /** Get the remaining stream size (to the end of the stream) */ + unsigned int GetRemainingSize() const { + return (unsigned int)(end - current); + } + + // --------------------------------------------------------------------- + /** Get the remaining stream size (to the current read limit). The + * return value is the remaining size of the stream if no custom + * read limit has been set. */ + unsigned int GetRemainingSizeToLimit() const { + return (unsigned int)(limit - current); + } + + // --------------------------------------------------------------------- + /** Increase the file pointer (relative seeking) */ + void IncPtr(intptr_t plus) { + current += plus; + if (current > limit) { + throw DeadlyImportError("End of file or read limit was reached"); + } + } + + // --------------------------------------------------------------------- + /** Get the current file pointer */ + int8_t* GetPtr() const { + return current; + } + + // --------------------------------------------------------------------- + /** Set current file pointer (Get it from #GetPtr). This is if you + * prefer to do pointer arithmetics on your own or want to copy + * large chunks of data at once. + * @param p The new pointer, which is validated against the size + * limit and buffer boundaries. */ + void SetPtr(int8_t* p) { + current = p; + if (current > limit || current < buffer) { + throw DeadlyImportError("End of file or read limit was reached"); + } + } + + // --------------------------------------------------------------------- + /** Copy n bytes to an external buffer + * @param out Destination for copying + * @param bytes Number of bytes to copy */ + void CopyAndAdvance(void* out, size_t bytes) { + int8_t* ur = GetPtr(); + SetPtr(ur+bytes); // fire exception if eof + + ::memcpy(out,ur,bytes); + } + + // --------------------------------------------------------------------- + /** Get the current offset from the beginning of the file */ + int GetCurrentPos() const { + return (unsigned int)(current - buffer); + } + + void SetCurrentPos(size_t pos) { + SetPtr(buffer + pos); + } + + // --------------------------------------------------------------------- + /** Setup a temporary read limit + * + * @param limit Maximum number of bytes to be read from + * the beginning of the file. Specifying UINT_MAX + * resets the limit to the original end of the stream. + * Returns the previously set limit. */ + unsigned int SetReadLimit(unsigned int _limit) { + unsigned int prev = GetReadLimit(); + if (UINT_MAX == _limit) { + limit = end; + return prev; + } + + limit = buffer + _limit; + if (limit > end) { + throw DeadlyImportError("StreamReader: Invalid read limit"); + } + return prev; + } + + // --------------------------------------------------------------------- + /** Get the current read limit in bytes. Reading over this limit + * accidentally raises an exception. */ + unsigned int GetReadLimit() const { + return (unsigned int)(limit - buffer); + } + + // --------------------------------------------------------------------- + /** Skip to the read limit in bytes. Reading over this limit + * accidentally raises an exception. */ + void SkipToReadLimit() { + current = limit; + } + + // --------------------------------------------------------------------- + /** overload operator>> and allow chaining of >> ops. */ + template + StreamReader& operator >> (T& f) { + f = Get(); + return *this; + } + + // --------------------------------------------------------------------- + /** Generic read method. ByteSwap::Swap(T*) *must* be defined */ + template + T Get() { + if ( current + sizeof(T) > limit) { + throw DeadlyImportError("End of file or stream limit was reached"); + } + + T f; + ::memcpy (&f, current, sizeof(T)); + Intern::Getter() (&f,le); + current += sizeof(T); + + return f; + } + +private: + // --------------------------------------------------------------------- + void InternBegin() { + if (!stream) { + // in case someone wonders: StreamReader is frequently invoked with + // no prior validation whether the input stream is valid. Since + // no one bothers changing the error message, this message here + // is passed down to the caller and 'unable to open file' + // simply describes best what happened. + throw DeadlyImportError("StreamReader: Unable to open file"); + } + + const size_t s = stream->FileSize() - stream->Tell(); + if (!s) { + throw DeadlyImportError("StreamReader: File is empty or EOF is already reached"); + } + + current = buffer = new int8_t[s]; + const size_t read = stream->Read(current,1,s); + // (read < s) can only happen if the stream was opened in text mode, in which case FileSize() is not reliable + ai_assert(read <= s); + end = limit = &buffer[read-1] + 1; + } + +private: + std::shared_ptr stream; + int8_t *buffer, *current, *end, *limit; + bool le; +}; + +// -------------------------------------------------------------------------------------------- +// `static` StreamReaders. Their byte order is fixed and they might be a little bit faster. +#ifdef AI_BUILD_BIG_ENDIAN + typedef StreamReader StreamReaderLE; + typedef StreamReader StreamReaderBE; +#else + typedef StreamReader StreamReaderBE; + typedef StreamReader StreamReaderLE; +#endif + +// `dynamic` StreamReader. The byte order of the input data is specified in the +// c'tor. This involves runtime branching and might be a little bit slower. +typedef StreamReader StreamReaderAny; + +} // end namespace Assimp + +#endif // !! AI_STREAMREADER_H_INCLUDED diff --git a/aig/assimp/StreamWriter.h b/aig/assimp/StreamWriter.h new file mode 100755 index 0000000..c7cf6c0 --- /dev/null +++ b/aig/assimp/StreamWriter.h @@ -0,0 +1,303 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +/** @file Defines the StreamWriter class which writes data to + * a binary stream with a well-defined endianness. */ + +#ifndef AI_STREAMWRITER_H_INCLUDED +#define AI_STREAMWRITER_H_INCLUDED + +#include "ByteSwapper.h" +#include + +#include +#include + +namespace Assimp { + +// -------------------------------------------------------------------------------------------- +/** Wrapper class around IOStream to allow for consistent writing of binary data in both + * little and big endian format. Don't attempt to instance the template directly. Use + * StreamWriterLE to write to a little-endian stream and StreamWriterBE to write to a + * BE stream. Alternatively, there is StreamWriterAny if the endianness of the output + * stream is to be determined at runtime. + */ +// -------------------------------------------------------------------------------------------- +template +class StreamWriter +{ + enum { + INITIAL_CAPACITY = 1024 + }; + +public: + + // --------------------------------------------------------------------- + /** Construction from a given stream with a well-defined endianness. + * + * The StreamReader holds a permanent strong reference to the + * stream, which is released upon destruction. + * @param stream Input stream. The stream is not re-seeked and writing + continues at the current position of the stream cursor. + * @param le If @c RuntimeSwitch is true: specifies whether the + * stream is in little endian byte order. Otherwise the + * endianness information is defined by the @c SwapEndianess + * template parameter and this parameter is meaningless. */ + StreamWriter(std::shared_ptr stream, bool le = false) + : stream(stream) + , le(le) + , cursor() + { + ai_assert(stream); + buffer.reserve(INITIAL_CAPACITY); + } + + // --------------------------------------------------------------------- + StreamWriter(IOStream* stream, bool le = false) + : stream(std::shared_ptr(stream)) + , le(le) + , cursor() + { + ai_assert(stream); + buffer.reserve(INITIAL_CAPACITY); + } + + // --------------------------------------------------------------------- + ~StreamWriter() { + stream->Write(buffer.data(), 1, buffer.size()); + stream->Flush(); + } + +public: + + // --------------------------------------------------------------------- + /** Flush the contents of the internal buffer, and the output IOStream */ + void Flush() + { + stream->Write(buffer.data(), 1, buffer.size()); + stream->Flush(); + buffer.clear(); + cursor = 0; + } + + // --------------------------------------------------------------------- + /** Seek to the given offset / origin in the output IOStream. + * + * Flushes the internal buffer and the output IOStream prior to seeking. */ + aiReturn Seek(size_t pOffset, aiOrigin pOrigin=aiOrigin_SET) + { + Flush(); + return stream->Seek(pOffset, pOrigin); + } + + // --------------------------------------------------------------------- + /** Tell the current position in the output IOStream. + * + * First flushes the internal buffer and the output IOStream. */ + size_t Tell() + { + Flush(); + return stream->Tell(); + } + +public: + + // --------------------------------------------------------------------- + /** Write a float to the stream */ + void PutF4(float f) + { + Put(f); + } + + // --------------------------------------------------------------------- + /** Write a double to the stream */ + void PutF8(double d) { + Put(d); + } + + // --------------------------------------------------------------------- + /** Write a signed 16 bit integer to the stream */ + void PutI2(int16_t n) { + Put(n); + } + + // --------------------------------------------------------------------- + /** Write a signed 8 bit integer to the stream */ + void PutI1(int8_t n) { + Put(n); + } + + // --------------------------------------------------------------------- + /** Write an signed 32 bit integer to the stream */ + void PutI4(int32_t n) { + Put(n); + } + + // --------------------------------------------------------------------- + /** Write a signed 64 bit integer to the stream */ + void PutI8(int64_t n) { + Put(n); + } + + // --------------------------------------------------------------------- + /** Write a unsigned 16 bit integer to the stream */ + void PutU2(uint16_t n) { + Put(n); + } + + // --------------------------------------------------------------------- + /** Write a unsigned 8 bit integer to the stream */ + void PutU1(uint8_t n) { + Put(n); + } + + // --------------------------------------------------------------------- + /** Write an unsigned 32 bit integer to the stream */ + void PutU4(uint32_t n) { + Put(n); + } + + // --------------------------------------------------------------------- + /** Write a unsigned 64 bit integer to the stream */ + void PutU8(uint64_t n) { + Put(n); + } + + // --------------------------------------------------------------------- + /** Write a single character to the stream */ + void PutChar(char c) { + Put(c); + } + + // --------------------------------------------------------------------- + /** Write an aiString to the stream */ + void PutString(const aiString& s) + { + // as Put(T f) below + if (cursor + s.length >= buffer.size()) { + buffer.resize(cursor + s.length); + } + void* dest = &buffer[cursor]; + ::memcpy(dest, s.C_Str(), s.length); + cursor += s.length; + } + + // --------------------------------------------------------------------- + /** Write a std::string to the stream */ + void PutString(const std::string& s) + { + // as Put(T f) below + if (cursor + s.size() >= buffer.size()) { + buffer.resize(cursor + s.size()); + } + void* dest = &buffer[cursor]; + ::memcpy(dest, s.c_str(), s.size()); + cursor += s.size(); + } + +public: + + // --------------------------------------------------------------------- + /** overload operator<< and allow chaining of MM ops. */ + template + StreamWriter& operator << (T f) { + Put(f); + return *this; + } + + // --------------------------------------------------------------------- + std::size_t GetCurrentPos() const { + return cursor; + } + + // --------------------------------------------------------------------- + void SetCurrentPos(std::size_t new_cursor) { + cursor = new_cursor; + } + + // --------------------------------------------------------------------- + /** Generic write method. ByteSwap::Swap(T*) *must* be defined */ + template + void Put(T f) { + Intern :: Getter() (&f, le); + + if (cursor + sizeof(T) >= buffer.size()) { + buffer.resize(cursor + sizeof(T)); + } + + void* dest = &buffer[cursor]; + + // reinterpret_cast + assignment breaks strict aliasing rules + // and generally causes trouble on platforms such as ARM that + // do not silently ignore alignment faults. + ::memcpy(dest, &f, sizeof(T)); + cursor += sizeof(T); + } + +private: + + std::shared_ptr stream; + bool le; + + std::vector buffer; + std::size_t cursor; +}; + + +// -------------------------------------------------------------------------------------------- +// `static` StreamWriter. Their byte order is fixed and they might be a little bit faster. +#ifdef AI_BUILD_BIG_ENDIAN + typedef StreamWriter StreamWriterLE; + typedef StreamWriter StreamWriterBE; +#else + typedef StreamWriter StreamWriterBE; + typedef StreamWriter StreamWriterLE; +#endif + +// `dynamic` StreamWriter. The byte order of the input data is specified in the +// c'tor. This involves runtime branching and might be a little bit slower. +typedef StreamWriter StreamWriterAny; + +} // end namespace Assimp + +#endif // !! AI_STREAMWriter_H_INCLUDED diff --git a/aig/assimp/StringComparison.h b/aig/assimp/StringComparison.h new file mode 100755 index 0000000..8acef27 --- /dev/null +++ b/aig/assimp/StringComparison.h @@ -0,0 +1,233 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file Definition of platform independent string workers: + + ASSIMP_itoa10 + ASSIMP_stricmp + ASSIMP_strincmp + + These functions are not consistently available on all platforms, + or the provided implementations behave too differently. +*/ +#ifndef INCLUDED_AI_STRING_WORKERS_H +#define INCLUDED_AI_STRING_WORKERS_H + +#include +#include +#include "StringComparison.h" + +#include +#include +#include + +namespace Assimp { + +// ------------------------------------------------------------------------------- +/** @brief itoa with a fixed base 10 + * 'itoa' is not consistently available on all platforms so it is quite useful + * to have a small replacement function here. No need to use a full sprintf() + * if we just want to print a number ... + * @param out Output buffer + * @param max Maximum number of characters to be written, including '\0'. + * This parameter may not be 0. + * @param number Number to be written + * @return Length of the output string, excluding the '\0' + */ +AI_FORCE_INLINE +unsigned int ASSIMP_itoa10( char* out, unsigned int max, int32_t number) { + ai_assert(NULL != out); + + // write the unary minus to indicate we have a negative number + unsigned int written = 1u; + if (number < 0 && written < max) { + *out++ = '-'; + ++written; + number = -number; + } + + // We begin with the largest number that is not zero. + int32_t cur = 1000000000; // 2147483648 + bool mustPrint = false; + while (written < max) { + + const unsigned int digit = number / cur; + if (mustPrint || digit > 0 || 1 == cur) { + // print all future zeroe's from now + mustPrint = true; + + *out++ = '0'+static_cast(digit); + + ++written; + number -= digit*cur; + if (1 == cur) { + break; + } + } + cur /= 10; + } + + // append a terminal zero + *out++ = '\0'; + return written-1; +} + +// ------------------------------------------------------------------------------- +/** @brief itoa with a fixed base 10 (Secure template overload) + * The compiler should choose this function if he or she is able to determine the + * size of the array automatically. + */ +template +AI_FORCE_INLINE +unsigned int ASSIMP_itoa10( char(& out)[length], int32_t number) { + return ASSIMP_itoa10(out,length,number); +} + +// ------------------------------------------------------------------------------- +/** @brief Helper function to do platform independent string comparison. + * + * This is required since stricmp() is not consistently available on + * all platforms. Some platforms use the '_' prefix, others don't even + * have such a function. + * + * @param s1 First input string + * @param s2 Second input string + * @return 0 if the given strings are identical + */ +AI_FORCE_INLINE +int ASSIMP_stricmp(const char *s1, const char *s2) { + ai_assert( NULL != s1 ); + ai_assert( NULL != s2 ); + +#if (defined _MSC_VER) + + return ::_stricmp(s1,s2); +#elif defined( __GNUC__ ) + + return ::strcasecmp(s1,s2); +#else + + char c1, c2; + do { + c1 = tolower(*s1++); + c2 = tolower(*s2++); + } + while ( c1 && (c1 == c2) ); + return c1 - c2; +#endif +} + +// ------------------------------------------------------------------------------- +/** @brief Case independent comparison of two std::strings + * + * @param a First string + * @param b Second string + * @return 0 if a == b + */ +AI_FORCE_INLINE +int ASSIMP_stricmp(const std::string& a, const std::string& b) { + int i = (int)b.length()-(int)a.length(); + return (i ? i : ASSIMP_stricmp(a.c_str(),b.c_str())); +} + +// ------------------------------------------------------------------------------- +/** @brief Helper function to do platform independent string comparison. + * + * This is required since strincmp() is not consistently available on + * all platforms. Some platforms use the '_' prefix, others don't even + * have such a function. + * + * @param s1 First input string + * @param s2 Second input string + * @param n Macimum number of characters to compare + * @return 0 if the given strings are identical + */ +AI_FORCE_INLINE +int ASSIMP_strincmp(const char *s1, const char *s2, unsigned int n) { + ai_assert( NULL != s1 ); + ai_assert( NULL != s2 ); + if ( !n ) { + return 0; + } + +#if (defined _MSC_VER) + + return ::_strnicmp(s1,s2,n); + +#elif defined( __GNUC__ ) + + return ::strncasecmp(s1,s2, n); + +#else + char c1, c2; + unsigned int p = 0; + do + { + if (p++ >= n)return 0; + c1 = tolower(*s1++); + c2 = tolower(*s2++); + } + while ( c1 && (c1 == c2) ); + + return c1 - c2; +#endif +} + + +// ------------------------------------------------------------------------------- +/** @brief Evaluates an integer power + * + * todo: move somewhere where it fits better in than here + */ +AI_FORCE_INLINE +unsigned int integer_pow( unsigned int base, unsigned int power ) { + unsigned int res = 1; + for ( unsigned int i = 0; i < power; ++i ) { + res *= base; + } + + return res; +} + +} // end of namespace + +#endif // ! AI_STRINGCOMPARISON_H_INC diff --git a/aig/assimp/StringUtils.h b/aig/assimp/StringUtils.h new file mode 100755 index 0000000..d68b7fa --- /dev/null +++ b/aig/assimp/StringUtils.h @@ -0,0 +1,143 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ +#ifndef INCLUDED_AI_STRINGUTILS_H +#define INCLUDED_AI_STRINGUTILS_H + +#include + +#include +#include +#include + +/// @fn ai_snprintf +/// @brief The portable version of the function snprintf ( C99 standard ), which works on visual studio compilers 2013 and earlier. +/// @param outBuf The buffer to write in +/// @param size The buffer size +/// @param format The format string +/// @param ap The additional arguments. +/// @return The number of written characters if the buffer size was big enough. If an encoding error occurs, a negative number is returned. +#if defined(_MSC_VER) && _MSC_VER < 1900 + + AI_FORCE_INLINE + int c99_ai_vsnprintf(char *outBuf, size_t size, const char *format, va_list ap) { + int count(-1); + if (0 != size) { + count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap); + } + if (count == -1) { + count = _vscprintf(format, ap); + } + + return count; + } + + AI_FORCE_INLINE + int ai_snprintf(char *outBuf, size_t size, const char *format, ...) { + int count; + va_list ap; + + va_start(ap, format); + count = c99_ai_vsnprintf(outBuf, size, format, ap); + va_end(ap); + + return count; + } + +#else +# define ai_snprintf snprintf +#endif + +/// @fn to_string +/// @brief The portable version of to_string ( some gcc-versions on embedded devices are not supporting this). +/// @param value The value to write into the std::string. +/// @return The value as a std::string +template +AI_FORCE_INLINE +std::string to_string( T value ) { + std::ostringstream os; + os << value; + + return os.str(); +} + +/// @fn ai_strtof +/// @brief The portable version of strtof. +/// @param begin The first character of the string. +/// @param end The last character +/// @return The float value, 0.0f in cas of an error. +AI_FORCE_INLINE +float ai_strtof( const char *begin, const char *end ) { + if ( nullptr == begin ) { + return 0.0f; + } + float val( 0.0f ); + if ( nullptr == end ) { + val = static_cast< float >( ::atof( begin ) ); + } else { + std::string::size_type len( end - begin ); + std::string token( begin, len ); + val = static_cast< float >( ::atof( token.c_str() ) ); + } + + return val; +} + +/// @fn DecimalToHexa +/// @brief The portable to convert a decimal value into a hexadecimal string. +/// @param toConvert Value to convert +/// @return The hexadecimal string, is empty in case of an error. +template +AI_FORCE_INLINE +std::string DecimalToHexa( T toConvert ) { + std::string result; + std::stringstream ss; + ss << std::hex << toConvert; + ss >> result; + + for ( size_t i = 0; i < result.size(); ++i ) { + result[ i ] = toupper( result[ i ] ); + } + + return result; +} + +#endif // INCLUDED_AI_STRINGUTILS_H diff --git a/aig/assimp/Subdivision.h b/aig/assimp/Subdivision.h new file mode 100755 index 0000000..43feb73 --- /dev/null +++ b/aig/assimp/Subdivision.h @@ -0,0 +1,131 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file Defines a helper class to evaluate subdivision surfaces.*/ +#pragma once +#ifndef AI_SUBDISIVION_H_INC +#define AI_SUBDISIVION_H_INC + +#include +#include + +struct aiMesh; + +namespace Assimp { + +// ------------------------------------------------------------------------------ +/** Helper class to evaluate subdivision surfaces. Different algorithms + * are provided for choice. */ +// ------------------------------------------------------------------------------ +class ASSIMP_API Subdivider { +public: + + /** Enumerates all supported subvidision algorithms */ + enum Algorithm { + CATMULL_CLARKE = 0x1 + }; + + virtual ~Subdivider(); + + // --------------------------------------------------------------- + /** Create a subdivider of a specific type + * + * @param algo Algorithm to be used for subdivision + * @return Subdivider instance. */ + static Subdivider* Create (Algorithm algo); + + // --------------------------------------------------------------- + /** Subdivide a mesh using the selected algorithm + * + * @param mesh First mesh to be subdivided. Must be in verbose + * format. + * @param out Receives the output mesh, allocated by me. + * @param num Number of subdivisions to perform. + * @param discard_input If true is passed, the input mesh is + * deleted after the subdivision is complete. This can + * improve performance because it allows the optimization + * to reuse the existing mesh for intermediate results. + * @pre out!=mesh*/ + virtual void Subdivide ( aiMesh* mesh, + aiMesh*& out, unsigned int num, + bool discard_input = false) = 0; + + // --------------------------------------------------------------- + /** Subdivide multiple meshes using the selected algorithm. This + * avoids erroneous smoothing on objects consisting of multiple + * per-material meshes. Usually, most 3d modellers smooth on a + * per-object base, regardless the materials assigned to the + * meshes. + * + * @param smesh Array of meshes to be subdivided. Must be in + * verbose format. + * @param nmesh Number of meshes in smesh. + * @param out Receives the output meshes. The array must be + * sufficiently large (at least @c nmesh elements) and may not + * overlap the input array. Output meshes map one-to-one to + * their corresponding input meshes. The meshes are allocated + * by the function. + * @param discard_input If true is passed, input meshes are + * deleted after the subdivision is complete. This can + * improve performance because it allows the optimization + * of reusing existing meshes for intermediate results. + * @param num Number of subdivisions to perform. + * @pre nmesh != 0, smesh and out may not overlap*/ + virtual void Subdivide ( + aiMesh** smesh, + size_t nmesh, + aiMesh** out, + unsigned int num, + bool discard_input = false) = 0; + +}; + +inline +Subdivider::~Subdivider() { + // empty +} + +} // end namespace Assimp + + +#endif // !! AI_SUBDISIVION_H_INC + diff --git a/aig/assimp/TinyFormatter.h b/aig/assimp/TinyFormatter.h new file mode 100755 index 0000000..1226b48 --- /dev/null +++ b/aig/assimp/TinyFormatter.h @@ -0,0 +1,166 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file TinyFormatter.h + * @brief Utility to format log messages more easily. Introduced + * to get rid of the boost::format dependency. Much slinker, + * basically just extends stringstream. + */ +#ifndef INCLUDED_TINY_FORMATTER_H +#define INCLUDED_TINY_FORMATTER_H + +#include + +namespace Assimp { +namespace Formatter { + +// ------------------------------------------------------------------------------------------------ +/** stringstream utility. Usage: + * @code + * void writelog(const std::string&s); + * void writelog(const std::wstring&s); + * ... + * writelog(format()<< "hi! this is a number: " << 4); + * writelog(wformat()<< L"hi! this is a number: " << 4); + * + * @endcode */ +template < typename T, + typename CharTraits = std::char_traits, + typename Allocator = std::allocator +> +class basic_formatter +{ + +public: + + typedef class std::basic_string< + T,CharTraits,Allocator + > string; + + typedef class std::basic_ostringstream< + T,CharTraits,Allocator + > stringstream; + +public: + + basic_formatter() {} + + /* Allow basic_formatter's to be used almost interchangeably + * with std::(w)string or const (w)char* arguments because the + * conversion c'tor is called implicitly. */ + template + basic_formatter(const TT& sin) { + underlying << sin; + } + + + // The problem described here: + // https://sourceforge.net/tracker/?func=detail&atid=1067632&aid=3358562&group_id=226462 + // can also cause trouble here. Apparently, older gcc versions sometimes copy temporaries + // being bound to const ref& function parameters. Copying streams is not permitted, though. + // This workaround avoids this by manually specifying a copy ctor. +#if !defined(__GNUC__) || !defined(__APPLE__) || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) + explicit basic_formatter(const basic_formatter& other) { + underlying << (string)other; + } +#endif + + +public: + + operator string () const { + return underlying.str(); + } + + + /* note - this is declared const because binding temporaries does only + * work for const references, so many function prototypes will + * include const basic_formatter& s but might still want to + * modify the formatted string without the need for a full copy.*/ + template + const basic_formatter& operator << (const TToken& s) const { + underlying << s; + return *this; + } + + template + basic_formatter& operator << (const TToken& s) { + underlying << s; + return *this; + } + + + // comma operator overloaded as well, choose your preferred way. + template + const basic_formatter& operator, (const TToken& s) const { + underlying << s; + return *this; + } + + template + basic_formatter& operator, (const TToken& s) { + underlying << s; + return *this; + } + + // Fix for MSVC8 + // See https://sourceforge.net/projects/assimp/forums/forum/817654/topic/4372824 + template + basic_formatter& operator, (TToken& s) { + underlying << s; + return *this; + } + + +private: + mutable stringstream underlying; +}; + + +typedef basic_formatter< char > format; +typedef basic_formatter< wchar_t > wformat; + +} // ! namespace Formatter + +} // ! namespace Assimp + +#endif diff --git a/aig/assimp/Vertex.h b/aig/assimp/Vertex.h new file mode 100755 index 0000000..2a7f025 --- /dev/null +++ b/aig/assimp/Vertex.h @@ -0,0 +1,348 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ +/** @file Defines a helper class to represent an interleaved vertex + along with arithmetic operations to support vertex operations + such as subdivision, smoothing etc. + + While the code is kept as general as possible, arithmetic operations + that are not currently well-defined (and would cause compile errors + due to missing operators in the math library), are commented. + */ +#ifndef AI_VERTEX_H_INC +#define AI_VERTEX_H_INC + +#include +#include +#include +#include + +namespace Assimp { + + /////////////////////////////////////////////////////////////////////////// + // std::plus-family operates on operands with identical types - we need to + // support all the (vectype op float) combinations in vector maths. + // Providing T(float) would open the way to endless implicit conversions. + /////////////////////////////////////////////////////////////////////////// + namespace Intern { + template struct plus { + TRES operator() (const T0& t0, const T1& t1) const { + return t0+t1; + } + }; + template struct minus { + TRES operator() (const T0& t0, const T1& t1) const { + return t0-t1; + } + }; + template struct multiplies { + TRES operator() (const T0& t0, const T1& t1) const { + return t0*t1; + } + }; + template struct divides { + TRES operator() (const T0& t0, const T1& t1) const { + return t0/t1; + } + }; + } + +// ------------------------------------------------------------------------------------------------ +/** Intermediate description a vertex with all possible components. Defines a full set of + * operators, so you may use such a 'Vertex' in basic arithmetics. All operators are applied + * to *all* vertex components equally. This is useful for stuff like interpolation + * or subdivision, but won't work if special handling is required for some vertex components. */ +// ------------------------------------------------------------------------------------------------ +class Vertex +{ + friend Vertex operator + (const Vertex&,const Vertex&); + friend Vertex operator - (const Vertex&,const Vertex&); + +// friend Vertex operator + (const Vertex&,ai_real); +// friend Vertex operator - (const Vertex&,ai_real); + friend Vertex operator * (const Vertex&,ai_real); + friend Vertex operator / (const Vertex&,ai_real); + +// friend Vertex operator + (ai_real, const Vertex&); +// friend Vertex operator - (ai_real, const Vertex&); + friend Vertex operator * (ai_real, const Vertex&); +// friend Vertex operator / (ai_real, const Vertex&); + +public: + + Vertex() {} + + // ---------------------------------------------------------------------------- + /** Extract a particular vertex from a mesh and interleave all components */ + explicit Vertex(const aiMesh* msh, unsigned int idx) { + ai_assert(idx < msh->mNumVertices); + position = msh->mVertices[idx]; + + if (msh->HasNormals()) { + normal = msh->mNormals[idx]; + } + + if (msh->HasTangentsAndBitangents()) { + tangent = msh->mTangents[idx]; + bitangent = msh->mBitangents[idx]; + } + + for (unsigned int i = 0; msh->HasTextureCoords(i); ++i) { + texcoords[i] = msh->mTextureCoords[i][idx]; + } + + for (unsigned int i = 0; msh->HasVertexColors(i); ++i) { + colors[i] = msh->mColors[i][idx]; + } + } + + // ---------------------------------------------------------------------------- + /** Extract a particular vertex from a anim mesh and interleave all components */ + explicit Vertex(const aiAnimMesh* msh, unsigned int idx) { + ai_assert(idx < msh->mNumVertices); + position = msh->mVertices[idx]; + + if (msh->HasNormals()) { + normal = msh->mNormals[idx]; + } + + if (msh->HasTangentsAndBitangents()) { + tangent = msh->mTangents[idx]; + bitangent = msh->mBitangents[idx]; + } + + for (unsigned int i = 0; msh->HasTextureCoords(i); ++i) { + texcoords[i] = msh->mTextureCoords[i][idx]; + } + + for (unsigned int i = 0; msh->HasVertexColors(i); ++i) { + colors[i] = msh->mColors[i][idx]; + } + } + +public: + + Vertex& operator += (const Vertex& v) { + *this = *this+v; + return *this; + } + + Vertex& operator -= (const Vertex& v) { + *this = *this-v; + return *this; + } + + +/* + Vertex& operator += (ai_real v) { + *this = *this+v; + return *this; + } + + Vertex& operator -= (ai_real v) { + *this = *this-v; + return *this; + } +*/ + Vertex& operator *= (ai_real v) { + *this = *this*v; + return *this; + } + + Vertex& operator /= (ai_real v) { + *this = *this/v; + return *this; + } + +public: + + // ---------------------------------------------------------------------------- + /** Convert back to non-interleaved storage */ + void SortBack(aiMesh* out, unsigned int idx) const { + + ai_assert(idxmNumVertices); + out->mVertices[idx] = position; + + if (out->HasNormals()) { + out->mNormals[idx] = normal; + } + + if (out->HasTangentsAndBitangents()) { + out->mTangents[idx] = tangent; + out->mBitangents[idx] = bitangent; + } + + for(unsigned int i = 0; out->HasTextureCoords(i); ++i) { + out->mTextureCoords[i][idx] = texcoords[i]; + } + + for(unsigned int i = 0; out->HasVertexColors(i); ++i) { + out->mColors[i][idx] = colors[i]; + } + } + +private: + + // ---------------------------------------------------------------------------- + /** Construct from two operands and a binary operation to combine them */ + template