/*  =========================================================================
    nmfapi_c_demo - generated layer of public API

    The MIT License (MIT)

################################################################################
#  THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY  #
#  Read the zproject/README.md for information about making permanent changes. #
################################################################################
    =========================================================================
*/

#ifndef NMFAPI_C_DEMO_LIBRARY_H_INCLUDED
#define NMFAPI_C_DEMO_LIBRARY_H_INCLUDED

//  Set up environment for the application

//  External dependencies
#include <czmq.h>
#include <malutil.h>
#include <malattributes.h>
#include <mal.h>
#include <malbinary.h>
#include <malsplitbinary.h>
#include <malzmq.h>
#include <maltcp.h>
#include <malactor.h>
#include <generated_areas.h>
#include <nmfapi_c.h>

//  NMFAPI_C_DEMO version macros for compile-time API detection
#define NMFAPI_C_DEMO_VERSION_MAJOR 1
#define NMFAPI_C_DEMO_VERSION_MINOR 0
#define NMFAPI_C_DEMO_VERSION_PATCH 0

#define NMFAPI_C_DEMO_MAKE_VERSION(major, minor, patch) \
    ((major) * 10000 + (minor) * 100 + (patch))
#define NMFAPI_C_DEMO_VERSION \
    NMFAPI_C_DEMO_MAKE_VERSION(NMFAPI_C_DEMO_VERSION_MAJOR, NMFAPI_C_DEMO_VERSION_MINOR, NMFAPI_C_DEMO_VERSION_PATCH)

#if defined (__WINDOWS__)
#   if defined NMFAPI_C_DEMO_STATIC
#       define NMFAPI_C_DEMO_EXPORT
#   elif defined NMFAPI_C_DEMO_INTERNAL_BUILD
#       if defined DLL_EXPORT
#           define NMFAPI_C_DEMO_EXPORT __declspec(dllexport)
#       else
#           define NMFAPI_C_DEMO_EXPORT
#       endif
#   elif defined NMFAPI_C_DEMO_EXPORTS
#       define NMFAPI_C_DEMO_EXPORT __declspec(dllexport)
#   else
#       define NMFAPI_C_DEMO_EXPORT __declspec(dllimport)
#   endif
#   define NMFAPI_C_DEMO_PRIVATE
#elif defined (__CYGWIN__)
#   define NMFAPI_C_DEMO_EXPORT
#   define NMFAPI_C_DEMO_PRIVATE
#else
#   if (defined __GNUC__ && __GNUC__ >= 4) || defined __INTEL_COMPILER
#       define NMFAPI_C_DEMO_PRIVATE __attribute__ ((visibility ("hidden")))
#       define NMFAPI_C_DEMO_EXPORT __attribute__ ((visibility ("default")))
#   else
#       define NMFAPI_C_DEMO_PRIVATE
#       define NMFAPI_C_DEMO_EXPORT
#   endif
#endif

//  Project has no stable classes, so we build the draft API
#undef  NMFAPI_C_DEMO_BUILD_DRAFT_API
#define NMFAPI_C_DEMO_BUILD_DRAFT_API

//  Opaque class structures to allow forward references
//  These classes are stable or legacy and built in all releases
//  Draft classes are by default not built in stable releases
#ifdef NMFAPI_C_DEMO_BUILD_DRAFT_API
typedef struct _demo_app_utils_t demo_app_utils_t;
#define DEMO_APP_UTILS_T_DEFINED
#endif // NMFAPI_C_DEMO_BUILD_DRAFT_API


//  Public classes, each with its own header file
#ifdef NMFAPI_C_DEMO_BUILD_DRAFT_API
#include "demo_app_utils.h"
#endif // NMFAPI_C_DEMO_BUILD_DRAFT_API

#ifdef NMFAPI_C_DEMO_BUILD_DRAFT_API

#ifdef __cplusplus
extern "C" {
#endif

//  Self test for private classes
NMFAPI_C_DEMO_EXPORT void
    nmfapi_c_demo_private_selftest (bool verbose, const char *subtest);

#ifdef __cplusplus
}
#endif
#endif // NMFAPI_C_DEMO_BUILD_DRAFT_API

#endif
/*
################################################################################
#  THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY  #
#  Read the zproject/README.md for information about making permanent changes. #
################################################################################
*/
