#ifndef CMUS_H_LOADED
#define CMUS_H_LOADED

/* try to figure out what type of machine (and in worst case, what OS) we're running on */

#ifdef __LITTLE_ENDIAN__
  /* NeXTStep on Intel */
  #define CLM_LITTLE_ENDIAN 1
#else
  #ifdef BYTE_ORDER
    #if BYTE_ORDER == LITTLE_ENDIAN
      /* SGI possibility (/usr/include/sys/endian.h), and Linux (/usr/include/bytesex.h and endian.h) */
      #define CLM_LITTLE_ENDIAN 2
    #endif
  #endif
#endif

/* due to project builder stupidity, we can't always depend on -D flags here (maybe we need a CLM_SND_OS macro?) */

#if (!(defined(SGI))) && (!(defined(NEXT))) && (!(defined(LINUX))) && (!(defined(MACOS))) && (!(defined(BEOS))) && (!(defined(SUN))) && (!(defined(UW2))) && (!(defined(SCO5)))
  #if defined(__dest_os)
    /* we're in Metrowerks Land */
    #if (__dest_os == __be_os)
      #define BEOS 1
    #else
      #if (__dest_os == __mac_os)
        #define MACOS 1
      #endif
    #endif
  #else
    #if (defined(__WINDOWS__)) || (defined(__NT__))
      #define WINDOZE 1
      /* this branch untested and unused as yet */
    #endif
  #endif
#endif  


#define one_pi 3.141592653589793
#define two_pi 6.283185307179586
#define minus_two_pi -6.283185307179586
#define half_pi 1.5707963267948966
#define three_half_pi 4.71238898038469
#define inverse_pi 0.15915494309189535

#ifndef PI
  #define PI 3.141592653589793
#endif

#define clm_sndfix 32768.0
#define clm_sndflt 0.000030517578

#define cl_false 1234567
#define cl_true  7654321
#define DAC_CHANNEL 252525
#define DAC_REVERB 252520
#define CLM_FATAL_WRITE_ERROR 7
#define ERROR_C 10
#define BREAK_C 11
#define FUNCTION_C 12
#define SIGINT_C 13

/* io file structure reflected in datai */
#define io_fd 0
#define io_chans 1
#define io_size 2
#define io_beg 3
#define io_end 4
#define io_bufsiz 5
#define io_data_start 6
#define io_data_end 7
#define io_open_index 8
#define io_dir 9
#define io_loc 10
#define io_hdr_end 11
#define io_incr 12
#define io_dats 13

#define c_aref_block 0
#define c_aref_type 1
#define c_aref_size 2
#define c_aref_element_size 3
#define c_aref_dims 4
#define c_aref_dim_list_adr 5

#define io_in_f 0
#define io_out_f 1

#define CLM_SHM_KEY 0x00636c6d

#endif
