/*
uf_defs.h
File Description :
Open C API definitions. These are general typedefs and macros required by
all Open C API interfaces. Typedefs that are specific to a particular
module will be placed in a header file for that specific module.
*****************************************************************************/
#ifndef UF_DEFS_INCLUDED
#define UF_DEFS_INCLUDED
#ifdef USE_PRAGMA_ONCE
#pragma once
#endif
/***************************************************************************
***************************************************************************/
/****************************************************************************
* Limit definitions *
*
****************************************************************************/
#define MAX_FSPEC_SIZE 256 /* filespec len (not including '\0') */
#define MAX_ENTITY_NAME_SIZE 30 /* entity name len (not including '\0') */
#define MAX_LINE_SIZE 132 /* line len (not including '\0') */
/****************************************************************************
* All typedefs will have the following suffixes to denote their type: *
* *
* _t Data type *
* _p_t Pointer to type *
* _s Structure tag *
* *
****************************************************************************/
/* typedef for all tags used in User Function. The new term "tag" is *
* used instead of the old term "EID" (Entity ID). */
#ifndef TAG_T_DEFINED
#define TAG_T_DEFINED
typedef unsigned int tag_t;
typedef tag_t *tag_p_t;
#endif
#ifndef UF_LIST_T_DEFINED
#define UF_LIST_T_DEFINED
typedef struct uf_list_s *uf_list_p_t;
struct uf_list_s {
tag_t eid ; /* Object ID */
struct uf_list_s *next; /* Pointer to the next OID in the list */
};
typedef struct uf_list_s uf_list_t;
#endif
#ifndef NULL_TAG
#define NULL_TAG ((tag_t)0)
#endif
#ifndef null_tag
#define null_tag ((tag_t)0)
#endif
#ifndef PI
#define PI 3.14159265358979324
#endif
#ifndef TWOPI
#define TWOPI 6.28318530717958648
#endif
#ifndef RADEG
#define RADEG 57.29577951308235
#define DEGRA .01745329251994328
#endif
/* typedef for a logical variable. Its value can be "false" or "true". */
#ifndef LOGICAL_DEFINED
#define LOGICAL_DEFINED
#if defined(__cplusplus)
typedef bool logical;
#else
typedef unsigned char logical;
#endif
#endif
#ifndef BYTE_DEFINED
#define BYTE_DEFINED
typedef unsigned char byte;
#endif
#if !defined(true) && !defined(__cplusplus)
#define true 1
#define false 0
#endif
#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif
/****************************************************************************
* Macro definitions *
****************************************************************************/
/*****************************************************************
* ERROR_OK macro *
*****************************************************************/
#ifndef ERROR_OK
#define ERROR_OK 0
#endif
/*****************************************************************
* FTN() macro *
* Takes care of platform dependent C references of Fortran *
* symbols. This macro postpends an '_' (if necessary) on the *
* Fortran symbols referenced from C. *
*****************************************************************/
#ifndef FTN
#define FTN(name) name
#endif /* FTN */
/*****************************************************************
* DllExport *
* This macro is used in function prototypes on Windows NT to *
* indicate that the associated function is to be exported from *
* the containing dynamic link library. On other platforms the *
* macro is null. *
*****************************************************************/
#if defined(_WIN32)
#define DllExport __declspec(dllexport)
#else
#define DllExport
#endif
#endif /* UF_DEFS_INCLUDED */