IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Sep 20, 2005, 4:11:16 PM (21 years ago)
Author:
drobbin
Message:

Implemented prototype and new code for psTimer fxns, tested, and debugged

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/astro/psTime.c

    r5015 r5083  
    1010 *  @author Ross Harman, MHPCC
    1111 *
    12  *  @version $Revision: 1.70 $ $Name: not supported by cvs2svn $
    13  *  @date $Date: 2005-09-13 01:09:58 $
     12 *  @version $Revision: 1.71 $ $Name: not supported by cvs2svn $
     13 *  @date $Date: 2005-09-21 02:11:16 $
    1414 *
    1515 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    16111611}
    16121612
     1613static psHash *timers = NULL;
     1614static char timerName[256] = "\0";
     1615
     1616static void psTimerFree ()
     1617{
     1618
     1619    psFree (timers);
     1620    p_psTimeFinalize();
     1621    return;
     1622}
     1623
     1624// start/restart a named timer
     1625bool psTimerStart (char *name)
     1626{
     1627
     1628    psTime *start;
     1629
     1630    if (timers == NULL) {
     1631        timers = psHashAlloc (16);
     1632        //        psMemSetDeallocator(timers, (psFreeFunc)psTimerFree);
     1633    }
     1634    strncpy(timerName, name, 256);
     1635    start = psTimeGetNow (PS_TIME_UTC);
     1636    psHashAdd (timers, name, start);
     1637    psFree (start);
     1638    return (true);
     1639}
     1640
     1641psF64 psTimerClear (char *name)
     1642{
     1643    psF64 timerTime = 0.0;
     1644    bool status;
     1645
     1646    if (name == NULL)
     1647        return false;
     1648    timerTime = psTimerMark(name);
     1649    status = psHashRemove (timers, name);
     1650    strncpy(timerName, "\0", 256);
     1651    if ( !status )
     1652        return 0.0;
     1653    else
     1654        return timerTime;
     1655}
     1656
     1657// get current elapsed time on named timer
     1658psF64 psTimerMark (char *name)
     1659{
     1660
     1661    psTime *start;
     1662    psTime *mark;
     1663    psF64   delta;
     1664
     1665    if (timers == NULL)
     1666        return (0);
     1667    start = (psTime*)psHashLookup (timers, name);
     1668    if (start == NULL)
     1669        return (0);
     1670    mark = psTimeGetNow (PS_TIME_UTC);
     1671    delta = psTimeDelta (mark, start);
     1672    psFree (mark);
     1673    // psFree (start); -- XXX is psHashLookup not psMemCopying?
     1674
     1675    return (delta);
     1676}
     1677
     1678psF64 psTimerStop(void)
     1679{
     1680    psF64 timerTime = 0.0;
     1681
     1682    if ( strncmp(timerName, "\0", 256) )
     1683        timerTime = psTimerMark(timerName);
     1684    strncpy(timerName, "\0", 2);
     1685    psTimerFree();
     1686    return timerTime;
     1687}
     1688
     1689void psTimeInitialize(const char *timeConfig)
     1690{
     1691    p_psTimeInit(timeConfig);
     1692}
     1693
     1694void psTimeFinalize(void)
     1695{
     1696    p_psTimeFinalize();
     1697}
     1698
Note: See TracChangeset for help on using the changeset viewer.