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