// Copyright (c) 2003  David Muse
// See the file COPYING for more information

#include <rudiments/timezonefile.h>
#include <stdio.h>
#include <stdlib.h>

#ifdef RUDIMENTS_NAMESPACE
using namespace rudiments;
#endif

int main(int argc, char **argv) {

	// parse the timezone file specified in the first argument
	timezonefile	tz;
	if (!tz.parseFile(argv[1])) {
		printf("usage: tzn file\n");
		exit(1);
	}

	// print using built-in method
	tz.print();
	printf("\n\n");

	// print manually
	printf("ttisgmtcnt: %ld\n",tz.getIsGMTCount());
	printf("ttisstdcnt: %ld\n",tz.getIsSTDCount());
	printf("leapcnt: %ld\n",tz.getLeapCount());
	printf("timecnt: %ld\n",tz.getTimeCount());
	printf("typecnt: %ld\n",tz.getTypeCount());
	printf("charcnt: %ld\n",tz.getCharacterCount());
	int	i;
	for (i=0; i<tz.getTimeCount(); i++) {
		printf("transitiontime[%d]: %ld\n",i,tz.getTransitionTime(i));
	}
	for (i=0; i<tz.getTimeCount(); i++) {
		printf("localtime[%d]: %d\n",i,tz.getLocalTimes(i));
	}
	for (i=0; i<tz.getTypeCount(); i++) {
		printf("ttinfo[%d] {\n",i);
		printf("	tt_gmtoff: %ld\n",
					tz.getTimeTypeInfo(i)->tt_gmtoff);
		printf("	tt_isdst: %d\n",
					tz.getTimeTypeInfo(i)->tt_isdst);
		printf("	tt_abbrind: %d\n",
					tz.getTimeTypeInfo(i)->tt_abbrind);
		printf("}\n");
	}
	printf("rawtimezonestring: ");
	for (int i=0; i<tz.getCharacterCount(); i++) {
		if (tz.getRawTimeZoneString()[i]==(char)NULL) {
			printf(" ");
		}
		printf("%c",tz.getRawTimeZoneString()[i]);
	}
	printf("\n");
	for (i=0; i<tz.getLeapCount(); i++) {
		printf("leapsecondtime[%d]: %ld\n",i,
					tz.getLeapSecondTime(i));
		printf("totalleapseconds[%d]: %ld\n",i,
					tz.getTotalLeapSeconds(i));
	}
	for (int counter=0; counter<tz.getTypeCount(); counter++) {
		printf("timezonestrings[%d]=%s\n",counter,
					tz.getTimeZoneString(counter));
	}
	for (i=0; i<tz.getIsSTDCount(); i++) {
		printf("transstdwall[%d]: %d\n",i,
					tz.getStandardOrWallIndicator(i));
	}
	for (i=0; i<tz.getIsGMTCount(); i++) {
		printf("transutclocal[%d]: %d\n",i,
					tz.getUTCOrLocalIndicator(i));
	}
}


syntax highlighted by Code2HTML, v. 0.9.1