title: 11415 compile errors FTW?
body: <p>This is something I've really never seen but, I downloaded the source code of the sine wave example at <a href="http://www.audiosynth.com/sinewavedemo.html" rel="nofollow noreferrer">http://www.audiosynth.com/sinewavedemo.html</a> .</p>
  
  <p>It is in an old Project Builder Project format, and I want to compile it with Xcode (GCC). However, Xcode gives me 11415 compile errors. The first few are (all in the precompilation of AppKit.h):</p>
  
  <pre><code>/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:31:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:31: error: expected identifier or '(' before '-' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:33:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:33: error: expected identifier or '(' before '-' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:35:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:35: error: expected identifier or '(' before '-' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:36:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:36: error: expected identifier or '(' before '-' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:37:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:37: error: expected identifier or '(' before '-' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:38:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:38: error: expected identifier or '(' before '-' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:40:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:40: error: expected identifier or '(' before '-' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:42:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:42: error: expected identifier or '(' before '@' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:48:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:48: error: expected identifier or '(' before '@' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:54:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:54: error: expected identifier or '(' before '@' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:59:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:59: error: expected identifier or '(' before '-' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:61:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:61: error: expected identifier or '(' before '@' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:69:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:69: error: expected identifier or '(' before '+' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:71:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:71: error: expected identifier or '(' before '+' token
  
  
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:39:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:39: error: expected identifier or '(' before '-' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:40:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:40: error: expected identifier or '(' before '-' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:41:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:41: error: expected identifier or '(' before '-' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:42:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:42: error: expected identifier or '(' before '-' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:43:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:43: error: expected identifier or '(' before '-' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:44:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:44: error: expected identifier or '(' before '-' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:45:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:45: error: expected identifier or '(' before '-' token
  
  
  /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:46:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSValue.h:46: error: expected identifier or '(' before '-' token
  </code></pre>
  
  <p>Some of the code is:</p>
  
  <h1>HAL.c</h1>
  
  <pre><code>/*
   *  HAL.c
   *  Sinewave
   *
   *  Created by james on Fri Apr 27 2001.
   *  Copyright (c) 2001 __CompanyName__. All rights reserved.
   *
   */
  
  #include "HAL.h"
  #include "math.h"
  
  appGlobals gAppGlobals;
  
  OSStatus appIOProc (AudioDeviceID  inDevice, const AudioTimeStamp*  inNow, const AudioBufferList*   inInputData, 
                               const AudioTimeStamp*  inInputTime, AudioBufferList*  outOutputData, const AudioTimeStamp* inOutputTime, 
                               void* device);
  
  
  #define FailIf(cond, handler)      \
   if (cond) {          \
    goto handler;        \
   }
  
  #define FailWithAction(cond, action, handler)  \
   if (cond) {          \
    { action; }         \
    goto handler;        \
   }
  
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  // HAL Sample Code ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  //#define noErr 0
  //#define false 0
  
  OSStatus SetupHAL (appGlobalsPtr globals)
  {
      OSStatus    err = noErr;
      UInt32    count,
                                          bufferSize;
      AudioDeviceID   device = kAudioDeviceUnknown;
      AudioStreamBasicDescription  format;
  
      // get the default output device for the HAL
      count = sizeof(globals-&gt;device);     // it is required to pass the size of the data to be returned
      err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice,  &amp;count, (void *) &amp;device);
      fprintf(stderr, "kAudioHardwarePropertyDefaultOutputDevice %d\n", err);
      if (err != noErr) goto Bail;
  
      // get the buffersize that the default device uses for IO
      count = sizeof(globals-&gt;deviceBufferSize);    // it is required to pass the size of the data to be returned
      err = AudioDeviceGetProperty(device, 0, false, kAudioDevicePropertyBufferSize, &amp;count, &amp;bufferSize);
      fprintf(stderr, "kAudioDevicePropertyBufferSize %d %d\n", err, bufferSize);
      if (err != noErr) goto Bail;
  
      // get a description of the data format used by the default device
      count = sizeof(globals-&gt;deviceFormat);    // it is required to pass the size of the data to be returned
      err = AudioDeviceGetProperty(device, 0, false, kAudioDevicePropertyStreamFormat, &amp;count, &amp;format);
      fprintf(stderr, "kAudioDevicePropertyStreamFormat %d\n", err);
      fprintf(stderr, "sampleRate %g\n", format.mSampleRate);
      fprintf(stderr, "mFormatFlags %08X\n", format.mFormatFlags);
      fprintf(stderr, "mBytesPerPacket %d\n", format.mBytesPerPacket);
      fprintf(stderr, "mFramesPerPacket %d\n", format.mFramesPerPacket);
      fprintf(stderr, "mChannelsPerFrame %d\n", format.mChannelsPerFrame);
      fprintf(stderr, "mBytesPerFrame %d\n", format.mBytesPerFrame);
      fprintf(stderr, "mBitsPerChannel %d\n", format.mBitsPerChannel);
      if (err != kAudioHardwareNoError) goto Bail;
      FailWithAction(format.mFormatID != kAudioFormatLinearPCM, err = paramErr, Bail); // bail if the format is not linear pcm
  
      // everything is ok so fill in these globals
      globals-&gt;device = device;
      globals-&gt;deviceBufferSize = bufferSize;
      globals-&gt;deviceFormat = format;
  
  Bail:
      return (err);
  }
  
  /*
  struct AudioStreamBasicDescription
  {
   Float64 mSampleRate;  // the native sample rate of the audio stream
   UInt32 mFormatID;   // the specific encoding type of audio stream
   UInt32 mFormatFlags;  // flags specific to each format
   UInt32 mBytesPerPacket; // the number of bytes in a packet
   UInt32 mFramesPerPacket; // the number of frames in each packet
   UInt32 mBytesPerFrame;  // the number of bytes in a frame
   UInt32 mChannelsPerFrame; // the number of channels in each frame
   UInt32 mBitsPerChannel; // the number of bits in each channel
  };
  typedef struct AudioStreamBasicDescription AudioStreamBasicDescription;
  */
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  // This is a simple playThru ioProc. It simply places the data in the input buffer back into the output buffer.
  // Watch out for feedback from Speakers to Microphone
  OSStatus appIOProc (AudioDeviceID  inDevice, const AudioTimeStamp*  inNow, const AudioBufferList*   inInputData, 
                               const AudioTimeStamp*  inInputTime, AudioBufferList*  outOutputData, const AudioTimeStamp* inOutputTime, 
                               void* appGlobals)
  {    
      appGlobalsPtr globals = appGlobals;
      int i;
      double phase = gAppGlobals.phase;
      double amp = gAppGlobals.amp;
      double pan = gAppGlobals.pan;
      double freq = gAppGlobals.freq * 2. * 3.14159265359 / globals-&gt;deviceFormat.mSampleRate;
  
      int numSamples = globals-&gt;deviceBufferSize / globals-&gt;deviceFormat.mBytesPerFrame;
      // assume floats for now....
      float *out = outOutputData-&gt;mBuffers[0].mData;
      for (i=0; i&lt;numSamples; ++i) {
          float wave = sin(phase) * amp;
          phase = phase + freq;
          *out++ = wave * (1.0-pan);
          *out++ = wave * pan;
      }
      gAppGlobals.phase = phase;
      return (kAudioHardwareNoError);     
  }
  
  
  
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  OSStatus  StartPlayingThruHAL(appGlobalsPtr globals)
  {
      OSStatus  err = kAudioHardwareNoError;
  
      if (globals-&gt;soundPlaying) return 0;
      globals-&gt;phase = 0.0;
  
      err = AudioDeviceAddIOProc(globals-&gt;device, appIOProc, (void *) globals); // setup our device with an IO proc
      if (err != kAudioHardwareNoError) goto Bail;
  
      err = AudioDeviceStart(globals-&gt;device, appIOProc);    // start playing sound through the device
      if (err != kAudioHardwareNoError) goto Bail;
  
      globals-&gt;soundPlaying = true;      // set the playing status global to true
  
  Bail:
      return (err);
  } 
  
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  OSStatus  StopPlayingThruHAL(appGlobalsPtr globals)
  {
      OSStatus  err = kAudioHardwareNoError;
  
      if (!globals-&gt;soundPlaying) return 0;
      err = AudioDeviceStop(globals-&gt;device, appIOProc);    // stop playing sound through the device
      if (err != kAudioHardwareNoError) goto Bail;
  
      err = AudioDeviceRemoveIOProc(globals-&gt;device, appIOProc);   // remove the IO proc from the device
      if (err != kAudioHardwareNoError) goto Bail;
  
      globals-&gt;soundPlaying = false;      // set the playing status global to false
  
  Bail:
      return (err);
  } 
  </code></pre>
  
  <h1>Sinewave.m</h1>
  
  <pre><code>//
  // a very simple Cocoa CoreAudio app
  // by James McCartney  james@audiosynth.com  www.audiosynth.com
  //
  // Sinewave - this class implements a sine oscillator with dezippered control of frequency, pan and amplitude
  //
  
  #import "Sinewave.h"
  
  // define a C struct from the Obj-C object so audio callback can access data
  typedef struct {
      @defs(Sinewave);
  } sinewavedef;
  
  // this is the audio processing callback.
  OSStatus appIOProc (AudioDeviceID  inDevice, const AudioTimeStamp*  inNow, const AudioBufferList*   inInputData, 
                               const AudioTimeStamp*  inInputTime, AudioBufferList*  outOutputData, const AudioTimeStamp* inOutputTime, 
                               void* defptr)
  {    
      sinewavedef* def = defptr; // get access to Sinewave's data
      int i;
  
      // load instance vars into registers
      double phase = def-&gt;phase;
      double amp = def-&gt;amp;
      double pan = def-&gt;pan;
      double freq = def-&gt;freq;
  
      double ampz = def-&gt;ampz;
      double panz = def-&gt;panz;
      double freqz = def-&gt;freqz;
  
      int numSamples = def-&gt;deviceBufferSize / def-&gt;deviceFormat.mBytesPerFrame;
  
      // assume floats for now....
      float *out = outOutputData-&gt;mBuffers[0].mData;
  
      for (i=0; i&lt;numSamples; ++i) {
  
          float wave = sin(phase) * ampz;  // generate sine wave
          phase = phase + freqz;   // increment phase
  
          // write output
          *out++ = wave * (1.0-panz);  // left channel
          *out++ = wave * panz;   // right channel
  
          // de-zipper controls
          panz  = 0.001 * pan  + 0.999 * panz;
          ampz  = 0.001 * amp  + 0.999 * ampz;
          freqz = 0.001 * freq + 0.999 * freqz;
      }
  
      // save registers back to object
      def-&gt;phase = phase;
      def-&gt;freqz = freqz;
      def-&gt;ampz = ampz;
      def-&gt;panz = panz;
  
      return kAudioHardwareNoError;     
  }
  
  
  @implementation Sinewave
  
  - (void) setup
  {
      OSStatus    err = kAudioHardwareNoError;
      UInt32    count;    
      device = kAudioDeviceUnknown;
  
      initialized = NO;
  
      // get the default output device for the HAL
      count = sizeof(device);  // it is required to pass the size of the data to be returned
      err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice,  &amp;count, (void *) &amp;device);
      if (err != kAudioHardwareNoError) {
       fprintf(stderr, "get kAudioHardwarePropertyDefaultOutputDevice error %ld\n", err);
          return;
      }
  
      // get the buffersize that the default device uses for IO
      count = sizeof(deviceBufferSize); // it is required to pass the size of the data to be returned
      err = AudioDeviceGetProperty(device, 0, false, kAudioDevicePropertyBufferSize, &amp;count, &amp;deviceBufferSize);
      if (err != kAudioHardwareNoError) {
       fprintf(stderr, "get kAudioDevicePropertyBufferSize error %ld\n", err);
          return;
      }
      fprintf(stderr, "deviceBufferSize = %ld\n", deviceBufferSize);
  
      // get a description of the data format used by the default device
      count = sizeof(deviceFormat); // it is required to pass the size of the data to be returned
      err = AudioDeviceGetProperty(device, 0, false, kAudioDevicePropertyStreamFormat, &amp;count, &amp;deviceFormat);
      if (err != kAudioHardwareNoError) {
       fprintf(stderr, "get kAudioDevicePropertyStreamFormat error %ld\n", err);
          return;
      }
      if (deviceFormat.mFormatID != kAudioFormatLinearPCM) {
       fprintf(stderr, "mFormatID !=  kAudioFormatLinearPCM\n");
          return;
      }
      if (!(deviceFormat.mFormatFlags &amp; kLinearPCMFormatFlagIsFloat)) {
       fprintf(stderr, "Sorry, currently only works with float format....\n");
          return;
      }
  
      initialized = YES;
  
      fprintf(stderr, "mSampleRate = %g\n", deviceFormat.mSampleRate);
      fprintf(stderr, "mFormatFlags = %08lX\n", deviceFormat.mFormatFlags);
      fprintf(stderr, "mBytesPerPacket = %ld\n", deviceFormat.mBytesPerPacket);
      fprintf(stderr, "mFramesPerPacket = %ld\n", deviceFormat.mFramesPerPacket);
      fprintf(stderr, "mChannelsPerFrame = %ld\n", deviceFormat.mChannelsPerFrame);
      fprintf(stderr, "mBytesPerFrame = %ld\n", deviceFormat.mBytesPerFrame);
      fprintf(stderr, "mBitsPerChannel = %ld\n", deviceFormat.mBitsPerChannel);
  }
  
  
  - (void)setAmpVal:(double)val
  {
      amp = val;
  }
  
  - (void)setFreqVal:(double)val
  {
      freq = val * 2. * 3.14159265359 / deviceFormat.mSampleRate;
  }
  
  - (void)setPanVal:(double)val
  {
      pan = val;
  }
  
  - (BOOL)start
  {
      OSStatus  err = kAudioHardwareNoError;
     sinewavedef *def;
  
      if (!initialized) return false;
      if (soundPlaying) return false;
  
      // initialize phase and de-zipper filters.
      phase = 0.0;
      freqz = freq;
      ampz = amp;
      panz = pan;
  
      def = (sinewavedef *)self;
  
      err = AudioDeviceAddIOProc(device, appIOProc, (void *) def); // setup our device with an IO proc
      if (err != kAudioHardwareNoError) return false;
  
      err = AudioDeviceStart(device, appIOProc);    // start playing sound through the device
      if (err != kAudioHardwareNoError) return false;
  
      soundPlaying = true;      // set the playing status global to true
      return true;
  }
  
  - (BOOL)stop
  {
      OSStatus  err = kAudioHardwareNoError;
  
      if (!initialized) return false;
      if (!soundPlaying) return false;
  
      err = AudioDeviceStop(device, appIOProc);    // stop playing sound through the device
      if (err != kAudioHardwareNoError) return false;
  
      err = AudioDeviceRemoveIOProc(device, appIOProc);   // remove the IO proc from the device
      if (err != kAudioHardwareNoError) return false;
  
      soundPlaying = false;      // set the playing status global to false
      return true;
  }
  
  @end
  </code></pre>
  
  <p>Can anyone help me compiling this example? I'd really appriciate it. Thanks</p>