156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * File: 456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * jet.h 556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Contents and purpose: 756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Public interface for JET sound engine 856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Copyright (c) 2006 Sonic Network Inc. 1056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 1156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Licensed under the Apache License, Version 2.0 (the "License"); 1256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * you may not use this file except in compliance with the License. 1356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * You may obtain a copy of the License at 1456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 1556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * http://www.apache.org/licenses/LICENSE-2.0 1656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 1756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Unless required by applicable law or agreed to in writing, software 1856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * distributed under the License is distributed on an "AS IS" BASIS, 1956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * See the License for the specific language governing permissions and 2156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * limitations under the License. 2256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 2356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Revision Control: 2456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * $Revision: 554 $ 2556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * $Date: 2007-02-02 11:06:10 -0800 (Fri, 02 Feb 2007) $ 2656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 2756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 2856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 2956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifndef _JET_H 3056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define _JET_H 3156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 3256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#include "eas_types.h" 3356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#include "eas.h" 3456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 3556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* for C++ linkage */ 3656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifdef __cplusplus 3756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparksextern "C" { 3856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 3956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 4056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* opaque handle types for JET interface */ 4156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_jet_data_tag *JET_DATA_HANDLE; 4256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 4356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_jet_config_tag 4456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 4556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 appEventRangeLow; 4656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 appEventRangeHigh; 4756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_JET_CONFIG; 4856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 4956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_jet_status_tag 5056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 5156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_INT currentUserID; 5256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_INT segmentRepeatCount; 5356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_INT numQueuedSegments; 5456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_BOOL paused; 5556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_I32 location; 5656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 currentPlayingSegment; 5756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 currentQueuedSegment; 5856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_JET_STATUS; 5956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 6056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_jet_event_tag 6156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 6256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 segment; 6356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 channel; 6456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 track; 6556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 controller; 6656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 value; 6756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_JET_EVENT; 6856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 6956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 7056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_Init() 7156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 7256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Initializes the JET library, allocates memory, etc. Call 7356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_Shutdown to de-allocate memory. Pass NULL for pConfig 7456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * to use defaults. If passing config data, configSize should be 7556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * sizeof(S_JET_CONFIG). This allows for future expansion of the 7656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * config structure while maintaining compatibility. 7756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 7856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 7956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_PUBLIC EAS_RESULT JET_Init (EAS_DATA_HANDLE easHandle, const S_JET_CONFIG *pConfig, EAS_INT configSize); 8056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 8156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 8256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_Shutdown() 8356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 8456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Frees any memory used by the JET library 8556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 8656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 8756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_PUBLIC EAS_RESULT JET_Shutdown (EAS_DATA_HANDLE easHandle); 8856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 8956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 9056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_OpenFile() 9156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 9256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Opens a JET content file for playback 9356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 9456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 9556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_PUBLIC EAS_RESULT JET_OpenFile (EAS_DATA_HANDLE easHandle, EAS_FILE_LOCATOR locator); 9656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 9756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 9856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_GetAppData() 9956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 10056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Returns location and size of application data in the JET file 10156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 10256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 10356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT JET_GetAppData (EAS_DATA_HANDLE easHandle, EAS_I32 *pAppDataOffset, EAS_I32 *pAppDataSize); 10456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 10556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 10656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_CloseFile() 10756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 10856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Closes a JET content file and releases associated resources 10956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 11056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 11156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_PUBLIC EAS_RESULT JET_CloseFile (EAS_DATA_HANDLE easHandle); 11256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 11356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 11456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_Status() 11556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 11656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Returns current status 11756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 11856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 11956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_PUBLIC EAS_RESULT JET_Status (EAS_DATA_HANDLE easHandle, S_JET_STATUS *pStatus); 12056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 12156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 12256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_GetEvent() 12356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 12456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Checks for application events 12556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 12656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 12756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_PUBLIC EAS_BOOL JET_GetEvent (EAS_DATA_HANDLE easHandle, EAS_U32 *pEventRaw, S_JET_EVENT *pEvent); 12856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 12956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 13056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_ParseEvent() 13156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 13256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Returns current status 13356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 13456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 13556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_PUBLIC void JET_ParseEvent (EAS_U32 event, S_JET_EVENT *pEvent); 13656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 13756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 13856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_QueueSegment() 13956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 14056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Queue a segment for playback 14156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 14256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 14356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_PUBLIC EAS_RESULT JET_QueueSegment (EAS_DATA_HANDLE easHandle, EAS_INT segmentNum, EAS_INT libNum, EAS_INT repeatCount, EAS_INT transpose, EAS_U32 muteFlags, EAS_U8 userID); 14456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 14556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 14656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_Play() 14756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 14856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Starts playback of the file 14956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 15056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 15156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_PUBLIC EAS_RESULT JET_Play (EAS_DATA_HANDLE easHandle); 15256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 15356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 15456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_Pause() 15556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 15656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Pauses playback of the file 15756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 15856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 15956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_PUBLIC EAS_RESULT JET_Pause (EAS_DATA_HANDLE easHandle); 16056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 16156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 16256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_SetMuteFlags() 16356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 16456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Change the state of the mute flags 16556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 16656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 16756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_PUBLIC EAS_RESULT JET_SetMuteFlags (EAS_DATA_HANDLE easHandle, EAS_U32 muteFlags, EAS_BOOL sync); 16856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 16956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 17056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_SetMuteFlag() 17156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 17256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Change the state of a single mute flag 17356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 17456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 17556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_PUBLIC EAS_RESULT JET_SetMuteFlag (EAS_DATA_HANDLE easHandle, EAS_INT trackNum, EAS_BOOL muteFlag, EAS_BOOL sync); 17656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 17756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 17856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_TriggerClip() 17956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 18056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Unmute a track and then mute it when it is complete 18156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 18256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 18356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_PUBLIC EAS_RESULT JET_TriggerClip (EAS_DATA_HANDLE easHandle, EAS_INT clipID); 18456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 18556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 18656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET_Clear_Queue() 18756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 18856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Clears all segments in the queue 18956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 19056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 19156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_PUBLIC EAS_RESULT JET_Clear_Queue (EAS_DATA_HANDLE easHandle); 19256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 19356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifdef __cplusplus 19456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} /* end extern "C" */ 19556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 19656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 19756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 19856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 19956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 200