#ifndef cmAudLabelFile_h
#define cmAudLabelFile_h

#ifdef __cplusplus
extern "C" {
#endif

enum
{
  kOkAlfRC = cmOkRC,
  kLHeapFailAlfRC,
  kFileFailAlfRC,
  kSyntaxErrAlfRC,
  kAlfFileFailPuRC
};

  typedef cmRC_t     cmAlfRC_t;
  typedef cmHandle_t cmAlfH_t;

  extern cmAlfH_t cmAlfNullHandle;

  typedef struct
  {
    cmReal_t        begSecs;
    cmReal_t        endSecs;
    const cmChar_t* label;
  } cmAlfLabel_t;

  cmAlfRC_t cmAudLabelFileAlloc(     cmCtx_t* ctx, cmAlfH_t* hp );
  cmAlfRC_t cmAudLabelFileAllocOpen( cmCtx_t* ctx, cmAlfH_t* hp, const cmChar_t* fn );
  cmAlfRC_t cmAudLabelFileFree(    cmAlfH_t* hp );

  bool      cmAudLabelFileIsValid( cmAlfH_t h );
  
  cmAlfRC_t cmAudLabelFileOpen(    cmAlfH_t h, const cmChar_t* fn );

  cmAlfRC_t cmAudLabelFileInsert(  cmAlfH_t h, cmReal_t begSecs, cmReal_t endSecs, const cmChar_t* label );
  
  unsigned cmAudLabelFileCount(    cmAlfH_t h );
  const cmAlfLabel_t* cmAudLabelFileLabel( cmAlfH_t h, unsigned idx );

  cmAlfRC_t cmAudLabelFileWrite( cmAlfH_t h, const cmChar_t* fn );
  
  void cmAudLabelFileTest( cmCtx_t* ctx );

#ifdef __cplusplus
}
#endif

#endif
