You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

687 regels
23 KiB

  1. /*
  2. ---------------------------------------------------------------------------
  3. Open Asset Import Library (ASSIMP)
  4. ---------------------------------------------------------------------------
  5. Copyright (c) 2006-2009, ASSIMP Development Team
  6. All rights reserved.
  7. Redistribution and use of this software in source and binary forms,
  8. with or without modification, are permitted provided that the following
  9. conditions are met:
  10. * Redistributions of source code must retain the above
  11. copyright notice, this list of conditions and the
  12. following disclaimer.
  13. * Redistributions in binary form must reproduce the above
  14. copyright notice, this list of conditions and the
  15. following disclaimer in the documentation and/or other
  16. materials provided with the distribution.
  17. * Neither the name of the ASSIMP team, nor the names of its
  18. contributors may be used to endorse or promote products
  19. derived from this software without specific prior
  20. written permission of the ASSIMP Development Team.
  21. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  22. "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  23. LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  24. A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  25. OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  26. SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  27. LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  28. DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  29. THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  30. (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  31. OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  32. ---------------------------------------------------------------------------
  33. */
  34. /**
  35. * The C-style interface to the Open Asset import library.
  36. *
  37. * All functions of the C API have been collected in this module as function
  38. * pointers, which are set by the dynamic library loader
  39. * (<code>assimp.loader</code>).
  40. */
  41. module assimp.api;
  42. import assimp.fileIO;
  43. import assimp.material;
  44. import assimp.math;
  45. import assimp.scene;
  46. import assimp.types;
  47. extern ( C ) {
  48. /**
  49. * Reads the given file and returns its content.
  50. *
  51. * If the call succeeds, the imported data is returned in an <code>aiScene</code>
  52. * structure. The data is intended to be read-only, it stays property of the
  53. * Assimp library and will be stable until <code>aiReleaseImport()</code> is
  54. * called. After you're done with it, call <code>aiReleaseImport()</code> to
  55. * free the resources associated with this file.
  56. *
  57. * If an error is encountered, null is returned instead. Call
  58. * <code>aiGetErrorString()</code> to retrieve a human-readable error
  59. * description.
  60. *
  61. * Params:
  62. * pFile = Path and filename of the file to be imported,
  63. * expected to be a null-terminated C-string. null is not a valid value.
  64. * pFlags = Optional post processing steps to be executed after a
  65. * successful import. Provide a bitwise combination of the
  66. * <code>aiPostProcessSteps</code> flags. If you wish to inspect the
  67. * imported scene first in order to fine-tune your post-processing
  68. * setup, consider to use <code>aiApplyPostProcessing()</code>.
  69. *
  70. * Returns:
  71. * A pointer to the imported data, null if the import failed.
  72. */
  73. aiScene* function( char* pFile, uint pFile ) aiImportFile;
  74. /**
  75. * Reads the given file using user-defined I/O functions and returns its
  76. * content.
  77. *
  78. * If the call succeeds, the imported data is returned in an <code>aiScene</code>
  79. * structure. The data is intended to be read-only, it stays property of the
  80. * Assimp library and will be stable until <code>aiReleaseImport()</code> is
  81. * called. After you're done with it, call <code>aiReleaseImport()</code> to
  82. * free the resources associated with this file.
  83. *
  84. * If an error is encountered, null is returned instead. Call
  85. * <code>aiGetErrorString()</code> to retrieve a human-readable error
  86. * description.
  87. *
  88. * Params:
  89. * pFile = Path and filename of the file to be imported,
  90. * expected to be a null-terminated C-string. null is not a valid value.
  91. * pFlags = Optional post processing steps to be executed after a
  92. * successful import. Provide a bitwise combination of the
  93. * <code>aiPostProcessSteps</code> flags. If you wish to inspect the
  94. * imported scene first in order to fine-tune your post-processing
  95. * setup, consider to use <code>aiApplyPostProcessing()</code>.
  96. * pFS = An aiFileIO which will be used to open the model file itself
  97. * and any other files the loader needs to open.
  98. *
  99. * Returns:
  100. * A pointer to the imported data, null if the import failed.
  101. */
  102. aiScene* function( char* pFile, uint pFlags, aiFileIO* pFS ) aiImportFileEx;
  103. /**
  104. * Reads the scene from the given memory buffer.
  105. *
  106. * Reads the given file using user-defined I/O functions and returns its
  107. * content.
  108. *
  109. * If the call succeeds, the imported data is returned in an <code>aiScene</code>
  110. * structure. The data is intended to be read-only, it stays property of the
  111. * Assimp library and will be stable until <code>aiReleaseImport()</code> is
  112. * called. After you're done with it, call <code>aiReleaseImport()</code> to
  113. * free the resources associated with this file.
  114. *
  115. * If an error is encountered, null is returned instead. Call
  116. * <code>aiGetErrorString()</code> to retrieve a human-readable error
  117. * description.
  118. *
  119. * Params:
  120. * pBuffer = Pointer to the scene data.
  121. * pLength = Size of pBuffer in bytes.
  122. * pFlags = Optional post processing steps to be executed after a
  123. * successful import. Provide a bitwise combination of the
  124. * <code>aiPostProcessSteps</code> flags. If you wish to inspect the
  125. * imported scene first in order to fine-tune your post-processing
  126. * setup, consider to use <code>aiApplyPostProcessing()</code>.
  127. * pHint = An additional hint to the library. If this is a non empty
  128. * string, the library looks for a loader to support the file
  129. * extension specified and passes the file to the first matching
  130. * loader. If this loader is unable to complete the request, the
  131. * library continues and tries to determine the file format on its
  132. * own, a task that may or may not be successful.
  133. *
  134. * Returns:
  135. * A pointer to the imported data, null if the import failed.
  136. *
  137. * Note:
  138. * This is a straightforward way to decode models from memory buffers,
  139. * but it doesn't handle model formats spreading their data across
  140. * multiple files or even directories. Examples include OBJ or MD3, which
  141. * outsource parts of their material stuff into external scripts. If you
  142. * need the full functionality, provide a custom IOSystem to make Assimp
  143. * find these files.
  144. */
  145. aiScene* function(
  146. char* pBuffer,
  147. uint pLength,
  148. uint pFlags,
  149. char* pHint
  150. ) aiImportFileFromMemory;
  151. /**
  152. * Apply post-processing to an already-imported scene.
  153. *
  154. * This is strictly equivalent to calling <code>aiImportFile()</code> or
  155. * <code>aiImportFileEx()</code> with the same flags. However, you can use
  156. * this separate function to inspect the imported scene first to fine-tune
  157. * your post-processing setup.
  158. *
  159. * Params:
  160. * pScene = Scene to work on.
  161. * pFlags = Provide a bitwise combination of the
  162. * <code>aiPostProcessSteps</code> flags.
  163. *
  164. * Returns:
  165. * A pointer to the post-processed data. Post processing is done in-place,
  166. * meaning this is still the same <code>aiScene</code> which you passed
  167. * for pScene. However, if post-processing failed, the scene could now be
  168. * null. That's quite a rare case, post processing steps are not really
  169. * designed to fail. To be exact, <code>aiProcess.ValidateDS</code> is
  170. * currently the only post processing step which can actually cause the
  171. * scene to be reset to null.
  172. */
  173. aiScene* function( aiScene* pScene, uint pFlags ) aiApplyPostProcessing;
  174. /**
  175. * Get one of the predefined log streams. This is the quick'n'easy solution
  176. * to access Assimp's log system. Attaching a log stream can slightly reduce
  177. * Assimp's overall import performance.
  178. *
  179. * Examples:
  180. * ---
  181. * aiLogStream stream = aiGetPredefinedLogStream(
  182. * aiDefaultLogStream.FILE, "assimp.log.txt" );
  183. * if ( stream.callback !is null ) {
  184. * aiAttachLogStream( &stream );
  185. * }
  186. * ---
  187. *
  188. * Params:
  189. * pStreams = The log stream destination.
  190. * file = Solely for the <code>aiDefaultLogStream.FILE</code> flag:
  191. * specifies the file to write to. Pass null for all other flags.
  192. *
  193. * Returns:
  194. * The log stream, null if something went wrong.
  195. */
  196. aiLogStream function( aiDefaultLogStream pStreams, char* file ) aiGetPredefinedLogStream;
  197. /**
  198. * Attach a custom log stream to the libraries' logging system.
  199. *
  200. * Attaching a log stream can slightly reduce Assimp's overall import
  201. * performance. Multiple log-streams can be attached.
  202. *
  203. * Params:
  204. * stream = Describes the new log stream.
  205. *
  206. * Note: To ensure proper destruction of the logging system, you need to
  207. * manually call <code>aiDetachLogStream()</code> on every single log
  208. * stream you attach. Alternatively, <code>aiDetachAllLogStreams()</code>
  209. * is provided.
  210. */
  211. void function( aiLogStream* stream ) aiAttachLogStream;
  212. /**
  213. * Enable verbose logging.
  214. *
  215. * Verbose logging includes debug-related stuff and detailed import
  216. * statistics. This can have severe impact on import performance and memory
  217. * consumption. However, it might be useful to find out why a file is not
  218. * read correctly.
  219. *
  220. * Param:
  221. * d = Whether verbose logging should be enabled.
  222. */
  223. void function( aiBool d ) aiEnableVerboseLogging;
  224. /**
  225. * Detach a custom log stream from the libraries' logging system.
  226. *
  227. * This is the counterpart of #aiAttachPredefinedLogStream. If you attached a stream,
  228. * don't forget to detach it again.
  229. *
  230. * Params:
  231. * stream = The log stream to be detached.
  232. *
  233. * Returns:
  234. * <code>aiReturn.SUCCESS</code> if the log stream has been detached
  235. * successfully.
  236. *
  237. * See: <code>aiDetachAllLogStreams</code>
  238. */
  239. aiReturn function( aiLogStream* stream ) aiDetachLogStream;
  240. /**
  241. * Detach all active log streams from the libraries' logging system.
  242. *
  243. * This ensures that the logging system is terminated properly and all
  244. * resources allocated by it are actually freed. If you attached a stream,
  245. * don't forget to detach it again.
  246. *
  247. * See: <code>aiAttachLogStream</code>, <code>aiDetachLogStream</code>
  248. */
  249. void function() aiDetachAllLogStreams;
  250. /**
  251. * Releases all resources associated with the given import process.
  252. *
  253. * Call this function after you're done with the imported data.
  254. *
  255. * Params:
  256. * pScene = The imported data to release. null is a valid value.
  257. */
  258. void function( aiScene* pScene ) aiReleaseImport;
  259. /**
  260. * Returns the error text of the last failed import process.
  261. *
  262. * Returns:
  263. * A textual description of the error that occurred at the last importing
  264. * process. null if there was no error. There can't be an error if you
  265. * got a non-null <code>aiScene</code> from
  266. * <code>aiImportFile()/aiImportFileEx()/aiApplyPostProcessing()</code>.
  267. */
  268. char* function() aiGetErrorString;
  269. /**
  270. * Returns whether a given file extension is supported by this Assimp build.
  271. *
  272. * Params:
  273. * szExtension = Extension for which to query support. Must include a
  274. * leading dot '.'. Example: ".3ds", ".md3"
  275. *
  276. * Returns:
  277. * <code>TRUE</code> if the file extension is supported.
  278. */
  279. aiBool function( char* szExtension ) aiIsExtensionSupported;
  280. /**
  281. * Gets a list of all file extensions supported by ASSIMP.
  282. *
  283. * Format of the list: "*.3ds;*.obj;*.dae".
  284. *
  285. * If a file extension is contained in the list this does, of course, not
  286. * mean that Assimp is able to load all files with this extension.
  287. *
  288. * Params:
  289. * szOut = String to receive the extension list. null is not a valid
  290. * parameter.
  291. */
  292. void function( aiString* szOut ) aiGetExtensionList;
  293. /**
  294. * Gets the storage required by an imported asset
  295. *
  296. * Params:
  297. * pIn = Asset to query storage size for.
  298. * info = Data structure to be filled.
  299. */
  300. void function( aiScene* pIn, aiMemoryInfo* info ) aiGetMemoryRequirements;
  301. /**
  302. * Sets an integer property.
  303. *
  304. * Properties are always shared by all imports. It is not possible to
  305. * specify them per import.
  306. *
  307. * Params:
  308. * szName = Name of the configuration property to be set. All supported
  309. * public properties are defined in the <code>config</code> module.
  310. * value = New value for the property.
  311. */
  312. void function( char* szName, int value ) aiSetImportPropertyInteger;
  313. /**
  314. * Sets a floating-point property.
  315. *
  316. * Properties are always shared by all imports. It is not possible to
  317. * specify them per import.
  318. *
  319. * Params:
  320. * szName = Name of the configuration property to be set. All supported
  321. * public properties are defined in the <code>config</code> module.
  322. * value = New value for the property.
  323. */
  324. void function( char* szName, float value ) aiSetImportPropertyFloat;
  325. /**
  326. * Sets a string property.
  327. *
  328. * Properties are always shared by all imports. It is not possible to
  329. * specify them per import.
  330. *
  331. * Params:
  332. * szName = Name of the configuration property to be set. All supported
  333. * public properties are defined in the <code>config</code> module.
  334. * st = New value for the property.
  335. */
  336. void function( char* szName, aiString* st ) aiSetImportPropertyString;
  337. /*
  338. * Mathematical helper functions.
  339. */
  340. /**
  341. * Constructs a quaternion from a 3x3 rotation matrix.
  342. *
  343. * Params:
  344. * quat = Receives the output quaternion.
  345. * mat = Matrix to 'quaternionize'.
  346. */
  347. void function( aiQuaternion* quat, aiMatrix3x3* mat ) aiCreateQuaternionFromMatrix;
  348. /**
  349. * Decomposes a transformation matrix into its rotational, translational and
  350. * scaling components.
  351. *
  352. * Params:
  353. * mat = Matrix to decompose.
  354. * scaling = Receives the scaling component.
  355. * rotation = Receives the rotational component.
  356. * position = Receives the translational component.
  357. */
  358. void function(
  359. aiMatrix4x4* mat,
  360. aiVector3D* scaling,
  361. aiQuaternion* rotation,
  362. aiVector3D* position
  363. ) aiDecomposeMatrix;
  364. /**
  365. * Transposes a 4x4 matrix (in-place).
  366. *
  367. * Params:
  368. * mat = The matrix to be transposed.
  369. */
  370. void function( aiMatrix4x4* mat ) aiTransposeMatrix4;
  371. /**
  372. * Transposes a 3x3 matrix (in-place).
  373. *
  374. * Params:
  375. * mat = The matrix to be transposed.
  376. */
  377. void function( aiMatrix3x3* mat ) aiTransposeMatrix3;
  378. /**
  379. * Transforms a vector by a 3x3 matrix (in-place).
  380. *
  381. * Params:
  382. * vec = Vector to be transformed.
  383. * mat = Matrix to transform the vector with.
  384. */
  385. void function( aiVector3D* vec, aiMatrix3x3* mat ) aiTransformVecByMatrix3;
  386. /**
  387. * Transforms a vector by a 4x4 matrix (in-place).
  388. *
  389. * Params:
  390. * vec = Vector to be transformed.
  391. * mat = Matrix to transform the vector with.
  392. */
  393. void function( aiVector3D* vec, aiMatrix4x4* mat ) aiTransformVecByMatrix4;
  394. /**
  395. * Multiplies two 4x4 matrices.
  396. *
  397. * Params:
  398. * dst = First factor, receives result.
  399. * src = Matrix to be multiplied with 'dst'.
  400. */
  401. void function( aiMatrix4x4* dst, aiMatrix4x4* src ) aiMultiplyMatrix4;
  402. /**
  403. * Multiplies two 3x3 matrices.
  404. *
  405. * Params:
  406. * dst = First factor, receives result.
  407. * src = Matrix to be multiplied with 'dst'.
  408. */
  409. void function( aiMatrix3x3* dst, aiMatrix3x3* src ) aiMultiplyMatrix3;
  410. /**
  411. * Constructs a 3x3 identity matrix.
  412. *
  413. * Params:
  414. * mat = Matrix to receive its personal identity.
  415. */
  416. void function( aiMatrix3x3* mat ) aiIdentityMatrix3;
  417. /**
  418. * Constructs a 4x4 identity matrix.
  419. *
  420. * Params:
  421. * mat = Matrix to receive its personal identity.
  422. */
  423. void function( aiMatrix4x4* mat ) aiIdentityMatrix4;
  424. /*
  425. * Material system functions.
  426. */
  427. /**
  428. * Retrieves a material property with a specific key from the material.
  429. *
  430. * Params:
  431. * pMat = Pointer to the input material. May not be null.
  432. * pKey = Key to search for. One of the <code>AI_MATKEY_XXX</code>
  433. * constants.
  434. * type = Specifies the <code>aiTextureType</code> of the texture to be
  435. * retrieved, 0 for non-texture properties.
  436. * index = Index of the texture to be retrieved,
  437. * 0 for non-texture properties.
  438. * pPropOut = Pointer to receive a pointer to a valid
  439. * <code>aiMaterialProperty</code> structure or null if the key has
  440. * not been found.
  441. */
  442. aiReturn function(
  443. aiMaterial* pMat,
  444. char* pKey,
  445. uint type,
  446. uint index,
  447. aiMaterialProperty** pPropOut
  448. ) aiGetMaterialProperty;
  449. /**
  450. * Retrieves a single float value or an array of float values from the
  451. * material.
  452. *
  453. * Examples:
  454. * ---
  455. * const FLOATS_IN_UV_TRANSFORM = ( aiUVTransform.sizeof / float.sizeof );
  456. * uint valuesRead = FLOATS_IN_UV_TRANSFORM;
  457. * bool success =
  458. * ( aiGetMaterialFloatArray( &material, AI_MATKEY_UVTRANSFORM,
  459. * aiTextureType.DIFFUSE, 0, cast( float* ) &trafo, &valuesRead ) ==
  460. * aiReturn.SUCCESS ) &&
  461. * ( valuesRead == FLOATS_IN_UV_TRANSFORM );
  462. * ---
  463. *
  464. * Params:
  465. * pMat = Pointer to the input material. May not be null.
  466. * pKey = Key to search for. One of the AI_MATKEY_XXX constants.
  467. * type = Specifies the <code>aiTextureType</code> of the texture to be
  468. * retrieved, 0 for non-texture properties.
  469. * index = Index of the texture to be retrieved,
  470. * 0 for non-texture properties.
  471. * pOut = Pointer to a buffer to receive the result.
  472. * pMax = Specifies the size of the given buffer in floats. Receives the
  473. * number of values (not bytes!) read. null to read a scalar property.
  474. *
  475. * Returns:
  476. * Specifies whether the key has been found. If not, the output arrays
  477. * remains unmodified and pMax is set to 0.
  478. */
  479. aiReturn function(
  480. aiMaterial* pMat,
  481. char* pKey,
  482. uint type,
  483. uint index,
  484. float* pOut,
  485. uint* pMax = null
  486. ) aiGetMaterialFloatArray;
  487. /**
  488. * Convenience alias for <code>aiGetMaterialFloatArray()</code>.
  489. */
  490. alias aiGetMaterialFloatArray aiGetMaterialFloat;
  491. /**
  492. * Retrieves a single integer value or an array of integer values from the
  493. * material.
  494. *
  495. * See: <code>aiGetMaterialFloatArray()</code>
  496. */
  497. aiReturn function(
  498. aiMaterial* pMat,
  499. char* pKey,
  500. uint type,
  501. uint index,
  502. int* pOut,
  503. uint* pMax = null
  504. ) aiGetMaterialIntegerArray;
  505. /**
  506. * Convenience alias for <code>aiGetMaterialIntegerArray()</code>.
  507. */
  508. alias aiGetMaterialIntegerArray aiGetMaterialInteger;
  509. /**
  510. * Retrieves a color value from the material.
  511. *
  512. * See: <code>aiGetMaterialFloatArray()</code>
  513. */
  514. aiReturn function(
  515. aiMaterial* pMat,
  516. char* pKey,
  517. uint type,
  518. uint index,
  519. aiColor4D* pOut
  520. ) aiGetMaterialColor;
  521. /**
  522. * Retrieves a string value from the material.
  523. *
  524. * See: <code>aiGetMaterialFloatArray()</code>
  525. */
  526. aiReturn function(
  527. aiMaterial* pMat,
  528. char* pKey,
  529. uint type,
  530. uint index,
  531. aiString* pOut
  532. ) aiGetMaterialString;
  533. /**
  534. * Get the number of textures for a particular texture type.
  535. *
  536. * Params:
  537. * pMat = Pointer to the input material. May not be NULL
  538. * type = Texture type to check for
  539. *
  540. * Returns:
  541. * Number of textures for this type.
  542. */
  543. uint function( aiMaterial* pMat, aiTextureType type ) aiGetMaterialTextureCount;
  544. /**
  545. * Helper function to get all values pertaining to a particular texture slot
  546. * from a material structure.
  547. *
  548. * This function is provided just for convenience. You could also read the
  549. * texture by parsing all of its properties manually. This function bundles
  550. * all of them in a huge function monster.
  551. *
  552. * Params:
  553. * mat = Pointer to the input material. May not be null.
  554. * type = Specifies the texture stack (<code>aiTextureType</code>) to
  555. * read from.
  556. * index = Index of the texture. The function fails if the requested
  557. * index is not available for this texture type.
  558. * <code>aiGetMaterialTextureCount()</code> can be used to determine
  559. * the number of textures in a particular texture stack.
  560. * path = Receives the output path. null is not a valid value.
  561. * mapping = Recieves the texture mapping mode to be used.
  562. * Pass null if you are not interested in this information.
  563. * uvindex = For UV-mapped textures: receives the index of the UV source
  564. * channel. Unmodified otherwise. Pass null if you are not interested
  565. * in this information.
  566. * blend = Receives the blend factor for the texture.
  567. * Pass null if you are not interested in this information.
  568. * op = Receives the texture blend operation to be perform between this
  569. * texture and the previous texture. Pass null if you are not
  570. * interested in this information.
  571. * mapmode = Receives the mapping modes to be used for the texture. Pass
  572. * a pointer to an array of two aiTextureMapMode's (one for each axis,
  573. * UV order) or null if you are not interested in this information.
  574. *
  575. * Returns:
  576. * <code>aiReturn.SUCCESS</code> on success, otherwise something else.
  577. */
  578. aiReturn function(
  579. aiMaterial* mat,
  580. aiTextureType type,
  581. uint index,
  582. aiString* path,
  583. aiTextureMapping* mapping = null,
  584. uint* uvindex = null,
  585. float* blend = null,
  586. aiTextureOp* op = null,
  587. aiTextureMapMode* mapmode = null
  588. ) aiGetMaterialTexture;
  589. /*
  590. * Versioning functions.
  591. */
  592. /**
  593. * Returns a string with legal copyright and licensing information about
  594. * Assimp.
  595. *
  596. * The string may include multiple lines.
  597. *
  598. * Returns:
  599. * Pointer to static string.
  600. */
  601. char* function() aiGetLegalString;
  602. /**
  603. * Returns the current minor version number of the Assimp library.
  604. *
  605. * Returns:
  606. * Minor version of the Assimp library.
  607. */
  608. uint function() aiGetVersionMinor;
  609. /**
  610. * Returns the current major version number of the Assimp library.
  611. *
  612. * Returns:
  613. * Major version of the Assimp library.
  614. */
  615. uint function() aiGetVersionMajor;
  616. /**
  617. * Returns the repository revision of the Assimp library.
  618. *
  619. * Returns:
  620. * SVN Repository revision number of the Assimp library.
  621. */
  622. uint function() aiGetVersionRevision;
  623. /**
  624. * Returns the flags Assimp was compiled with.
  625. *
  626. * Returns:
  627. * Any bitwise combination of the ASSIMP_CFLAGS_xxx constants.
  628. */
  629. uint function() aiGetCompileFlags;
  630. }