/* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; version 2 of the License.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */

/**
  @file

  Application for testing if all C API functions to be exported by the client 
  library (as declared by CLIENT_API_FUNCTIONS in libmysql/CMakeLists.txt) are
  declared by <mysql.h> header and indeed exported.

  This code should fail to compile if some API function is not declared in
  <mysql.h>. Assuming dynamic linking, it should fail to run if some of the
  functions is not exported by the shared library.

  Note: this source is generated during build configuration process from
  template in libmysql/api_test.c.in. Do not edit this file - edit the template
  instead.
*/

#include <mysql.h>
#include <mysql/client_plugin.h>
#include <stdio.h>

/*
  An array of pointers to C API calls to test that all of them are
  declared and exported by client library.
*/
static char const* api_calls[] = { @CLIENT_API_FUNCTION_LIST@ };

int main()
{
  unsigned api_count= 0;
  unsigned i;

  for (i=0; i < sizeof(api_calls)/sizeof(void*); ++i)
  {
    if (api_calls[i])
      api_count++;
  }

  printf("There are %u API functions\n", api_count);

  if (mysql_library_init(0,NULL,NULL))
  {
    printf("Failed to initialize MySQL client library\n");
    return 1;
  }
  printf("MySQL client library initialized: %s\n", mysql_get_client_info());
  mysql_library_end();
  printf("Done!\n");
  return 0;
}
