/xbmc/visualizations/Vortex/angelscript/docs/doxygen/source/doc_good_practice.h

http://github.com/xbmc/xbmc · C++ Header · 42 lines · 0 code · 0 blank · 42 comment · 0 complexity · d27c4b76f4e77522396c626fadf0cc52 MD5 · raw file

  1. /**
  2. \page doc_good_practice Good practices
  3. This article will try to explain some good practices, that will help you get going faster and easier find the solution when a problem occurs.
  4. \section doc_checkretval Always check return values for registrations
  5. When configuring the script engine you should always check the return values, at least in debug mode.
  6. All error codes are negative so a simple <code>assert( r >= 0 )</code> where r is the returned value is sufficient
  7. to pinpoint where the configuration failed.
  8. If a function failed during the configuration, the \ref asIScriptModule::Build "Build" method will always fail with a return code
  9. of \ref asINVALID_CONFIGURATION. Unless you already verified the error codes for all the configuration
  10. calls, it will not be possible to determine what the error was.
  11. \code
  12. // Verifying the return code with an assert is simple and won't pollute the code
  13. r = engine->RegisterGlobalFunction("void func()", asFUNCTION(func), asCALL_CDECL); assert( r >= 0 );
  14. \endcode
  15. <code>assert()</code> can safely be used with engine registrations, since the engine will set the internal state
  16. to invalid configuration if a function fails. Even in release mode the failure is discovered when
  17. a script is built.
  18. \section doc_usemsgcallbck Use the message callback to receive detailed error messages
  19. The return code from the register functions, \ref asIScriptModule::Build "Build", and
  20. \ref asIScriptModule::CompileFunction "CompileFunction", can only tell you that something was wrong,
  21. not what it was. To help identify the exact problem the message callback should be used. The script
  22. library will then send messages explaining the error or warning in clear text.
  23. See \ref doc_compile_script_msg for more information on the message callback.
  24. */