📄 timestamp.cpp
字号:
/* Copyright (C) 1995, Tektronix Inc. All Rights Reserved. * * Usage Restrictions * * License is granted to copy, to use, and to make and to use derivative * works for research and evaluation purposes only. * * Disclaimer of Warranty * * These software programs are available to the user without any license * fee or royalty on an "as is" basis. Tektronix Inc. disclaims any and * all warranties, whether express, implied, or statuary, including any * implied warranties or merchantability or of fitness for a particular * purpose. In no event shall the copyright-holder be liable for any * incidental, punitive, or consequential damages of any kind whatsoever * arising from the use of these programs. * * This disclaimer of warranty extends to the user of these programs and * user's customers, employees, agents, transferees, successors, and * assigns. * * The Tektronix Inc. does not represent or warrant that the programs * furnished hereunder are free of infringement of any third-party * patents.*//* TimeStamp implementation */#include "TimeStamp.H"#include "Utilities.H"extern "C"{#include <stdio.h>}TimeStamp90::TimeStamp90 (long b){ bit32 = 0; bits0_31 = b;}TimeStamp90::TimeStamp90 (long b, int b32){ bit32 = b32; bits0_31 = b;}TimeStamp90::TimeStamp90 (const TimeStamp27& a){ bit32 = a.bit32; bits0_31 = a.bits0_31;}void TimeStamp90::print (){ // FIX -- the following is a cheap hack if (bit32) printf("2*"); printf("%d", bits0_31);}TimeStamp27::TimeStamp27 () : TimeStamp90 (0){ ext = 0;}TimeStamp27::TimeStamp27 (long b) : TimeStamp90(b / 300){ ext = b % 300;}TimeStamp27::TimeStamp27 (long b, short e) : TimeStamp90(b){ ext = e;}TimeStamp27::TimeStamp27 (long b, int b32, short e) : TimeStamp90(b, b32){ ext = e;}TimeStamp27& TimeStamp27::operator = (const TimeStamp27& a){ bit32 = a.bit32; bits0_31 = a.bits0_31; ext = a.ext; return *this;}TimeStamp27& TimeStamp27::operator = (long a){ bit32 = 0; bits0_31 = a / 300; ext = a % 300; return *this;}TimeStamp27 operator + (TimeStamp27& a, TimeStamp27& b){ TimeStamp27 r; int extsum = a.ext + b.ext; r.bits0_31 = a.bits0_31 + b.bits0_31; r.bits0_31 += (extsum > 299) ? 1 : 0; r.ext = extsum % 300; return r;}TimeStamp27 operator - (TimeStamp27& a, TimeStamp27& b){ TimeStamp27 r; if (b > a) { sys_message("can't return negative difference in TimeStamp27 operator-"); return r; } if (a.ext < b.ext) { // borrow case r.ext = a.ext + 300 - b.ext; r.bits0_31 = a.bits0_31 - b.bits0_31 - 1; } else { r.ext = a.ext - b.ext; r.bits0_31 = a.bits0_31 - b.bits0_31; } return r;}int operator > (TimeStamp27& a, TimeStamp27& b){ if (a.bits0_31 > b.bits0_31) return 1; if (a.bits0_31 < b.bits0_31) return 0; if (a.ext > b.ext) return 1; if (a.ext < b.ext) return 0; return 0;}long TimeStamp27::useconds (){ unsigned long t = bits0_31 * 300 + ext; return t / 27;}void TimeStamp27::print (){ printf("("); if (bit32) printf("2*"); printf("%d", bits0_31); printf(",%d)", ext); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -