Listing 1

// Database class initialisation
// database_base

inline database_base::database_base(ORJDatabase const *database)
  : m_database(database)
{
  stlsoft_message_assert("Initialisng database_base with NULL database", 
    NULL != m_database);
}
// file_database

inline /* static */ ORJDatabase const
  *file_database::create_database_( char const *jarName, unsigned   flags)
{
  ORJDatabase const *database;
  ORJError     error;
  ORJRC        rc = ORJ_ReadDatabase(jarName, NULL, flags, &database, &error);

  if(ORJ_RC_SUCCESS != rc)
  {
    throw database_exception(rc, error);
  }
  return database;
}
inline file_database::file_database(char const *jarName, unsigned flags)
  : parent_class_type(create_database_(jarName, flags))
{}
#endif /* !OPENRJ_NO_FILE_HANDLING */

// memory_database
inline /* static */ ORJDatabase const 
 *memory_database::create_database_(char const *contents
                                 , size_t     cbContents, unsigned   flags)
{
  ORJDatabase const *database;
  ORJError          error;
  ORJRC             rc = ORJ_CreateDatabaseFromMemory(contents, cbContents
                                       , NULL, flags, &database, &error);
  if(ORJ_RC_SUCCESS != rc)
  {
    throw database_exception(rc, error);
  }
  return database;
}
inline memory_database::memory_database(char const *contents
                                      , size_t cbContents, unsigned flags)
  : parent_class_type(create_database_(contents, cbContents, flags))
{}