14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------*
24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  comp_stats.h  *
34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Copyright 2007, 2008 Nuance Communciations, Inc.                               *
54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the 'License');          *
74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  you may not use this file except in compliance with the License.         *
84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  You may obtain a copy of the License at                                  *
104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0                           *
114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software      *
134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  distributed under the License is distributed on an 'AS IS' BASIS,        *
144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  See the License for the specific language governing permissions and      *
164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  limitations under the License.                                           *
174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/
194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef __COMP_STATS_H__
214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define __COMP_STATS_H__
224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <stdlib.h>
274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <stdio.h>
284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "pstdio.h"
304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef _WIN32
324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <windows.h>
334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef __int64 CS_TIME;
344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef __int64 CS_ACC_TIME;
354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#else
364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef clock_t CS_TIME;
374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef unsigned long CS_ACC_TIME;
384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef __vxworks
414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*
424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * the reason to rename the functions is:
434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Xanavi project required to combine S2G and Solo together, Solo has the same API
444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * duplicate function names are not allowed in VxWorks
454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define init_comp_stats init_comp_stats_esr
474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define dump_comp_stats dump_comp_stats_esr
484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define init_cs_clock   init_cs_clock_esr
504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define print_cs_clock  print_cs_clock_esr
514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define start_cs_clock  start_cs_clock_esr
534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define end_cs_clock    end_cs_clock_esr
544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define reset_cs_clock  reset_cs_clock_esr
564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define reset_cs_clock  reset_cs_clock_esr
574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define make_cs_clock   make_cs_clock_esr
584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @todo document
634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct CS_CLOCK_t
654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  CS_TIME last;
674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  CS_ACC_TIME total_time;
684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  double clocks_per_msec;
694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  int ncalls;
704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  int item_count;
714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCS_CLOCK;
734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @todo document
764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct COMP_STATS_t
784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  CS_CLOCK overall_search;
804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  CS_CLOCK models;
814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  CS_CLOCK fsm_to_hmm;
824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  CS_CLOCK hmm_to_fsm;
834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  CS_CLOCK internal_hmm;
844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  CS_CLOCK epsilon;
854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  CS_CLOCK prune;
864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  CS_CLOCK front_end;
874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  CS_CLOCK word_lookup;
884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  CS_CLOCK word_addition;
894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  float total_time;   /*in seconds*/
904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  CS_CLOCK astar;
914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCOMP_STATS;
934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid reset_cs_clock(CS_CLOCK *clock);
964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid init_cs_clock(CS_CLOCK *c);
974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCS_CLOCK *make_cs_clock(void);
984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(__cplusplus) && !defined(_ASCPP)
1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectextern "C"
1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  COMP_STATS *init_comp_stats(void);
1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  void start_cs_clock(CS_CLOCK *clock);
1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  void end_cs_clock(CS_CLOCK *c, int count);
1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(__cplusplus) && !defined(_ASCPP)
1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid print_cs_clock(CS_CLOCK *c, float num_seconds, PFile* fp, char *prompt, char *item_name);
1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid dump_comp_stats(COMP_STATS *c, PFile* fp);
1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if USE_COMP_STATS
1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(__cplusplus) && !defined(_ASCPP)
1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectextern "C"
1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  extern COMP_STATS *comp_stats;
1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(__cplusplus) && !defined(_ASCPP)
1204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
1214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
1224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define init_comp_stats1()        init_comp_stats()
1234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define reset_cs_clock1( CLK)     reset_cs_clock( CLK)
1244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define init_cs_clock1( CLK)      init_cs_clock( CLK)
1254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define make_cs_clock1()          make_cs_clock()
1264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define start_cs_clock1( CLK)     start_cs_clock( CLK)
1274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define end_cs_clock1( CLK,CNT)   end_cs_clock( CLK,CNT)
1284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define print_cs_clock1( CLK, NS,FP,PR,IN)  print_cs_clock( CLK, NS,FP,PR,IN)
1294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define dump_comp_stats1( CS,FP)  dump_comp_stats( CS,FP)
1304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#else /* not USE_COMP_STATS */
1324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define init_comp_stats1()
1344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define reset_cs_clock1( CLK)
1354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define init_cs_clock1( CLK)
1364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define make_cs_clock1()
1374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define start_cs_clock1( CLK)
1384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define end_cs_clock1( CLK,CNT)
1394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define print_cs_clock1( CLK, NS,FP,PR,IN)
1404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define dump_comp_stats1( CS,FP)
1414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
1424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
144