summaryrefslogtreecommitdiff
path: root/Build/source/libs/icu/icu-4.4/samples/cal
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2010-03-30 11:21:43 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2010-03-30 11:21:43 +0000
commit8ff835b6060624dd4ccc7df1c1f83efb0ea7db5f (patch)
treedef487f452302d792013a53a697e27114a58efbc /Build/source/libs/icu/icu-4.4/samples/cal
parentc47a9f27bd80d13919409536fd9ae63aacc4d25d (diff)
build system: prepare for icu-4.4 + minor typos
git-svn-id: svn://tug.org/texlive/trunk@17626 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/icu/icu-4.4/samples/cal')
-rw-r--r--Build/source/libs/icu/icu-4.4/samples/cal/Makefile.in75
-rw-r--r--Build/source/libs/icu/icu-4.4/samples/cal/cal.c762
-rw-r--r--Build/source/libs/icu/icu-4.4/samples/cal/cal.sln25
-rw-r--r--Build/source/libs/icu/icu-4.4/samples/cal/cal.vcproj418
-rw-r--r--Build/source/libs/icu/icu-4.4/samples/cal/readme.txt58
-rw-r--r--Build/source/libs/icu/icu-4.4/samples/cal/uprint.c75
-rw-r--r--Build/source/libs/icu/icu-4.4/samples/cal/uprint.h26
7 files changed, 1439 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-4.4/samples/cal/Makefile.in b/Build/source/libs/icu/icu-4.4/samples/cal/Makefile.in
new file mode 100644
index 00000000000..08a8f77a86e
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.4/samples/cal/Makefile.in
@@ -0,0 +1,75 @@
+## Makefile.in for ICU - samples/cal
+## Copyright (c) 1999-2008, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+## Install directory information
+top_builddir = ../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = samples/cal
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = icucal$(EXEEXT)
+
+CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/i18n
+LIBS = $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = uprint.o cal.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local: all-local
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local:
+ -$(INVOKE) ./$(TARGET)
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+ $(LINK.cc) $(OUTOPT)$@ $^ $(LIBS)
+ $(POST_BUILD_STEP)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
diff --git a/Build/source/libs/icu/icu-4.4/samples/cal/cal.c b/Build/source/libs/icu/icu-4.4/samples/cal/cal.c
new file mode 100644
index 00000000000..99fd1ac1d1a
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.4/samples/cal/cal.c
@@ -0,0 +1,762 @@
+/*
+**********************************************************************
+* Copyright (C) 1998-2009, International Business Machines Corporation
+* and others. All Rights Reserved.
+**********************************************************************
+*
+* File date.c
+*
+* Modification History:
+*
+* Date Name Description
+* 06/16/99 stephen Creation.
+*******************************************************************************
+*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "unicode/uloc.h"
+#include "unicode/udat.h"
+#include "unicode/ucal.h"
+#include "unicode/ustring.h"
+#include "unicode/uclean.h"
+
+#include "uprint.h"
+
+#if UCONFIG_NO_FORMATTING
+
+int main(int argc, char **argv)
+{
+ printf("%s: Sorry, UCONFIG_NO_FORMATTING was turned on (see uconfig.h). No formatting can be done. \n", argv[0]);
+ return 0;
+}
+#else
+
+
+/* Protos */
+static void usage(void);
+
+static void version(void);
+
+static void cal(int32_t month, int32_t year,
+ UBool useLongNames, UErrorCode *status);
+
+static void get_symbols(const UDateFormat *fmt,
+ UDateFormatSymbolType type,
+ UChar *array[],
+ int32_t arrayLength,
+ int32_t lowestIndex,
+ int32_t firstIndex,
+ UErrorCode *status);
+
+static void free_symbols(UChar *array[],
+ int32_t arrayLength);
+
+static void get_days(const UDateFormat *fmt,
+ UChar *days [], UBool useLongNames,
+ int32_t fdow, UErrorCode *status);
+
+static void free_days(UChar *days[]);
+
+static void get_months(const UDateFormat *fmt,
+ UChar *months [], UBool useLongNames,
+ UErrorCode *status);
+
+static void free_months(UChar *months[]);
+
+static void indent(int32_t count, FILE *f);
+
+static void print_days(UChar *days [], FILE *f, UErrorCode *status);
+
+static void print_month(UCalendar *c,
+ UChar *days [],
+ UBool useLongNames, int32_t fdow,
+ UErrorCode *status);
+
+static void print_year(UCalendar *c,
+ UChar *days [], UChar *months [],
+ UBool useLongNames, int32_t fdow,
+ UErrorCode *status);
+
+/* The version of cal */
+#define CAL_VERSION "1.0"
+
+/* Number of days in a week */
+#define DAY_COUNT 7
+
+/* Number of months in a year (yes, 13) */
+#define MONTH_COUNT 13
+
+/* Separation between months in year view */
+#define MARGIN_WIDTH 4
+
+/* Size of stack buffers */
+#define BUF_SIZE 64
+
+/* Patterm string - "MMM yyyy" */
+static const UChar sShortPat [] = { 0x004D, 0x004D, 0x004D, 0x0020,
+0x0079, 0x0079, 0x0079, 0x0079 };
+/* Pattern string - "MMMM yyyy" */
+static const UChar sLongPat [] = { 0x004D, 0x004D, 0x004D, 0x004D, 0x0020,
+0x0079, 0x0079, 0x0079, 0x0079 };
+
+
+int
+main(int argc,
+ char **argv)
+{
+ int printUsage = 0;
+ int printVersion = 0;
+ UBool useLongNames = 0;
+ int optind = 1;
+ char *arg;
+ int32_t month = -1, year = -1;
+ UErrorCode status = U_ZERO_ERROR;
+
+
+ /* parse the options */
+ for(optind = 1; optind < argc; ++optind) {
+ arg = argv[optind];
+
+ /* version info */
+ if(strcmp(arg, "-v") == 0 || strcmp(arg, "--version") == 0) {
+ printVersion = 1;
+ }
+ /* usage info */
+ else if(strcmp(arg, "-h") == 0 || strcmp(arg, "--help") == 0) {
+ printUsage = 1;
+ }
+ /* use long day names */
+ else if(strcmp(arg, "-l") == 0 || strcmp(arg, "--long") == 0) {
+ useLongNames = 1;
+ }
+ /* POSIX.1 says all arguments after -- are not options */
+ else if(strcmp(arg, "--") == 0) {
+ /* skip the -- */
+ ++optind;
+ break;
+ }
+ /* unrecognized option */
+ else if(strncmp(arg, "-", strlen("-")) == 0) {
+ printf("cal: invalid option -- %s\n", arg+1);
+ printUsage = 1;
+ }
+ /* done with options, display cal */
+ else {
+ break;
+ }
+ }
+
+ /* Get the month and year to display, if specified */
+ if(optind != argc) {
+
+ /* Month and year specified */
+ if(argc - optind == 2) {
+ sscanf(argv[optind], "%d", (int*)&month);
+ sscanf(argv[optind + 1], "%d", (int*)&year);
+
+ /* Make sure the month value is legal */
+ if(month < 0 || month > 12) {
+ printf("icucal: Bad value for month -- %d\n", (int)month);
+
+ /* Display usage */
+ printUsage = 1;
+ }
+
+ /* Adjust because months are 0-based */
+ --month;
+ }
+ /* Only year specified */
+ else {
+ sscanf(argv[optind], "%d", (int*)&year);
+ }
+ }
+
+ /* print usage info */
+ if(printUsage) {
+ usage();
+ return 0;
+ }
+
+ /* print version info */
+ if(printVersion) {
+ version();
+ return 0;
+ }
+
+ /* print the cal */
+ cal(month, year, useLongNames, &status);
+
+ /* ICU cleanup. Deallocate any memory ICU may be holding. */
+ u_cleanup();
+
+ return (U_FAILURE(status) ? 1 : 0);
+}
+
+/* Usage information */
+static void
+usage()
+{
+ puts("Usage: icucal [OPTIONS] [[MONTH] YEAR]");
+ puts("");
+ puts("Options:");
+ puts(" -h, --help Print this message and exit.");
+ puts(" -v, --version Print the version number of cal and exit.");
+ puts(" -l, --long Use long names.");
+ puts("");
+ puts("Arguments (optional):");
+ puts(" MONTH An integer (1-12) indicating the month to display");
+ puts(" YEAR An integer indicating the year to display");
+ puts("");
+ puts("For an interesting calendar, look at October 1582");
+}
+
+/* Version information */
+static void
+version()
+{
+ printf("icucal version %s (ICU version %s), created by Stephen F. Booth.\n",
+ CAL_VERSION, U_ICU_VERSION);
+ puts(U_COPYRIGHT_STRING);
+}
+
+static void
+cal(int32_t month,
+ int32_t year,
+ UBool useLongNames,
+ UErrorCode *status)
+{
+ UCalendar *c;
+ UChar *days [DAY_COUNT];
+ UChar *months [MONTH_COUNT];
+ int32_t fdow;
+
+ if(U_FAILURE(*status)) return;
+
+ /* Create a new calendar */
+ c = ucal_open(0, -1, uloc_getDefault(), UCAL_TRADITIONAL, status);
+
+ /* Determine if we are printing a calendar for one month or for a year */
+
+ /* Print an entire year */
+ if(month == -1 && year != -1) {
+
+ /* Set the year */
+ ucal_set(c, UCAL_YEAR, year);
+
+ /* Determine the first day of the week */
+ fdow = ucal_getAttribute(c, UCAL_FIRST_DAY_OF_WEEK);
+
+ /* Print the calendar for the year */
+ print_year(c, days, months, useLongNames, fdow, status);
+ }
+
+ /* Print only one month */
+ else {
+
+ /* Set the month and the year, if specified */
+ if(month != -1)
+ ucal_set(c, UCAL_MONTH, month);
+ if(year != -1)
+ ucal_set(c, UCAL_YEAR, year);
+
+ /* Determine the first day of the week */
+ fdow = ucal_getAttribute(c, UCAL_FIRST_DAY_OF_WEEK);
+
+ /* Print the calendar for the month */
+ print_month(c, days, useLongNames, fdow, status);
+ }
+
+ /* Clean up */
+ ucal_close(c);
+}
+/*
+ * Get a set of DateFormat symbols of a given type.
+ *
+ * lowestIndex is the index of the first symbol to fetch.
+ * (e.g. it will be one to fetch day names, since Sunday is
+ * day 1 *not* day 0.)
+ *
+ * firstIndex is the index of the symbol to place first in
+ * the output array. This is used when fetching day names
+ * in locales where the week doesn't start on Sunday.
+ */
+static void get_symbols(const UDateFormat *fmt,
+ UDateFormatSymbolType type,
+ UChar *array[],
+ int32_t arrayLength,
+ int32_t lowestIndex,
+ int32_t firstIndex,
+ UErrorCode *status)
+{
+ int32_t count, i;
+
+ if (U_FAILURE(*status)) {
+ return;
+ }
+
+ count = udat_countSymbols(fmt, type);
+
+ if(count != arrayLength + lowestIndex) {
+ return;
+ }
+
+ for(i = 0; i < arrayLength; i++) {
+ int32_t idx = (i + firstIndex) % arrayLength;
+ int32_t size = 1 + udat_getSymbols(fmt, type, idx + lowestIndex, NULL, 0, status);
+
+ array[idx] = (UChar *) malloc(sizeof(UChar) * size);
+
+ *status = U_ZERO_ERROR;
+ udat_getSymbols(fmt, type, idx + lowestIndex, array[idx], size, status);
+ }
+}
+
+/* Free the symbols allocated by get_symbols(). */
+static void free_symbols(UChar *array[],
+ int32_t arrayLength)
+{
+ int32_t i;
+
+ for(i = 0; i < arrayLength; i++) {
+ free(array[i]);
+ }
+}
+
+/* Get the day names for the specified locale, in either long or short
+form. Also, reorder the days so that they are in the proper order
+for the locale (not all locales begin weeks on Sunday; in France,
+weeks start on Monday) */
+static void
+get_days(const UDateFormat *fmt,
+ UChar *days [],
+ UBool useLongNames,
+ int32_t fdow,
+ UErrorCode *status)
+{
+ UDateFormatSymbolType dayType = (useLongNames ? UDAT_WEEKDAYS : UDAT_SHORT_WEEKDAYS);
+
+ if(U_FAILURE(*status))
+ return;
+
+ /* fdow is 1-based */
+ --fdow;
+
+ get_symbols(fmt, dayType, days, DAY_COUNT, 1, fdow, status);
+}
+
+static void free_days(UChar *days[])
+{
+ free_symbols(days, DAY_COUNT);
+}
+
+/* Get the month names for the specified locale, in either long or
+short form. */
+static void
+get_months(const UDateFormat *fmt,
+ UChar *months [],
+ UBool useLongNames,
+ UErrorCode *status)
+{
+ UDateFormatSymbolType monthType = (useLongNames ? UDAT_MONTHS : UDAT_SHORT_MONTHS);
+
+ if(U_FAILURE(*status))
+ return;
+
+ get_symbols(fmt, monthType, months, MONTH_COUNT - 1, 0, 0, status); /* some locales have 13 months, no idea why */
+}
+
+static void free_months(UChar *months[])
+{
+ free_symbols(months, MONTH_COUNT - 1);
+}
+
+/* Indent a certain number of spaces */
+static void
+indent(int32_t count,
+ FILE *f)
+{
+ char c [BUF_SIZE];
+
+ if(count <= 0)
+ {
+ return;
+ }
+
+ if(count < BUF_SIZE) {
+ memset(c, (int)' ', count);
+ fwrite(c, sizeof(char), count, f);
+ }
+ else {
+ int32_t i;
+ for(i = 0; i < count; ++i)
+ putc(' ', f);
+ }
+}
+
+/* Print the days */
+static void
+print_days(UChar *days [],
+ FILE *f,
+ UErrorCode *status)
+{
+ int32_t i;
+
+ if(U_FAILURE(*status)) return;
+
+ /* Print the day names */
+ for(i = 0; i < DAY_COUNT; ++i) {
+ uprint(days[i], f, status);
+ putc(' ', f);
+ }
+}
+
+/* Print out a calendar for c's current month */
+static void
+print_month(UCalendar *c,
+ UChar *days [],
+ UBool useLongNames,
+ int32_t fdow,
+ UErrorCode *status)
+{
+ int32_t width, pad, i, day;
+ int32_t lens [DAY_COUNT];
+ int32_t firstday, current;
+ UNumberFormat *nfmt;
+ UDateFormat *dfmt;
+ UChar s [BUF_SIZE];
+ const UChar *pat = (useLongNames ? sLongPat : sShortPat);
+ int32_t len = (useLongNames ? 9 : 8);
+
+ if(U_FAILURE(*status)) return;
+
+
+ /* ========== Generate the header containing the month and year */
+
+ /* Open a formatter with a month and year only pattern */
+ dfmt = udat_open(UDAT_IGNORE,UDAT_IGNORE,NULL,NULL,0,pat, len,status);
+
+ /* Format the date */
+ udat_format(dfmt, ucal_getMillis(c, status), s, BUF_SIZE, 0, status);
+
+
+ /* ========== Get the day names */
+ get_days(dfmt, days, useLongNames, fdow, status);
+
+ /* ========== Print the header */
+
+ /* Calculate widths for justification */
+ width = 6; /* 6 spaces, 1 between each day name */
+ for(i = 0; i < DAY_COUNT; ++i) {
+ lens[i] = u_strlen(days[i]);
+ width += lens[i];
+ }
+
+ /* Print the header, centered among the day names */
+ pad = width - u_strlen(s);
+ indent(pad / 2, stdout);
+ uprint(s, stdout, status);
+ putc('\n', stdout);
+
+
+ /* ========== Print the day names */
+
+ print_days(days, stdout, status);
+ putc('\n', stdout);
+
+
+ /* ========== Print the calendar */
+
+ /* Get the first of the month */
+ ucal_set(c, UCAL_DATE, 1);
+ firstday = ucal_get(c, UCAL_DAY_OF_WEEK, status);
+
+ /* The day of the week for the first day of the month is based on
+ 1-based days of the week, which were also reordered when placed
+ in the days array. Account for this here by offsetting by the
+ first day of the week for the locale, which is also 1-based. */
+ firstday -= fdow;
+
+ /* Open the formatter */
+ nfmt = unum_open(UNUM_DECIMAL, NULL,0,NULL,NULL, status);
+
+ /* Indent the correct number of spaces for the first week */
+ current = firstday;
+ if(current < 0)
+ {
+ current += 7;
+ }
+ for(i = 0; i < current; ++i)
+ indent(lens[i] + 1, stdout);
+
+ /* Finally, print out the days */
+ day = ucal_get(c, UCAL_DATE, status);
+ do {
+
+ /* Format the current day string */
+ unum_format(nfmt, day, s, BUF_SIZE, 0, status);
+
+ /* Calculate the justification and indent */
+ pad = lens[current] - u_strlen(s);
+ indent(pad, stdout);
+
+ /* Print the day number out, followed by a space */
+ uprint(s, stdout, status);
+ putc(' ', stdout);
+
+ /* Update the current day */
+ ++current;
+ current %= DAY_COUNT;
+
+ /* If we're at day 0 (first day of the week), insert a newline */
+ if(current == 0) {
+ putc('\n', stdout);
+ }
+
+ /* Go to the next day */
+ ucal_add(c, UCAL_DATE, 1, status);
+ day = ucal_get(c, UCAL_DATE, status);
+
+ } while(day != 1);
+
+ /* Output a trailing newline */
+ putc('\n', stdout);
+
+ /* Clean up */
+ free_days(days);
+ unum_close(nfmt);
+ udat_close(dfmt);
+}
+
+/* Print out a calendar for c's current year */
+static void
+print_year(UCalendar *c,
+ UChar *days [],
+ UChar *months [],
+ UBool useLongNames,
+ int32_t fdow,
+ UErrorCode *status)
+{
+ int32_t width, pad, i, j;
+ int32_t lens [DAY_COUNT];
+ UNumberFormat *nfmt;
+ UDateFormat *dfmt;
+ UChar s [BUF_SIZE];
+ const UChar pat [] = { 0x0079, 0x0079, 0x0079, 0x0079 };
+ int32_t len = 4;
+ UCalendar *left_cal, *right_cal;
+ int32_t left_day, right_day;
+ int32_t left_firstday, right_firstday, left_current, right_current;
+ int32_t left_month, right_month;
+
+ if(U_FAILURE(*status)) return;
+
+ /* Alias */
+ left_cal = c;
+
+ /* ========== Generate the header containing the year (only) */
+
+ /* Open a formatter with a month and year only pattern */
+ dfmt = udat_open(UDAT_IGNORE,UDAT_IGNORE,NULL,NULL,0,pat, len, status);
+
+ /* Format the date */
+ udat_format(dfmt, ucal_getMillis(left_cal, status), s, BUF_SIZE, 0, status);
+
+ /* ========== Get the month and day names */
+ get_days(dfmt, days, useLongNames, fdow, status);
+ get_months(dfmt, months, useLongNames, status);
+
+ /* ========== Print the header, centered */
+
+ /* Calculate widths for justification */
+ width = 6; /* 6 spaces, 1 between each day name */
+ for(i = 0; i < DAY_COUNT; ++i) {
+ lens[i] = u_strlen(days[i]);
+ width += lens[i];
+ }
+
+ /* width is the width for 1 calendar; we are displaying in 2 cols
+ with MARGIN_WIDTH spaces between months */
+
+ /* Print the header, centered among the day names */
+ pad = 2 * width + MARGIN_WIDTH - u_strlen(s);
+ indent(pad / 2, stdout);
+ uprint(s, stdout, status);
+ putc('\n', stdout);
+ putc('\n', stdout);
+
+ /* Generate a copy of the calendar to use */
+ right_cal = ucal_open(0, -1, uloc_getDefault(), UCAL_TRADITIONAL, status);
+ ucal_setMillis(right_cal, ucal_getMillis(left_cal, status), status);
+
+ /* Open the formatter */
+ nfmt = unum_open(UNUM_DECIMAL,NULL, 0,NULL,NULL, status);
+
+ /* ========== Calculate and display the months, two at a time */
+ for(i = 0; i < MONTH_COUNT - 1; i += 2) {
+
+ /* Print the month names for the two current months */
+ pad = width - u_strlen(months[i]);
+ indent(pad / 2, stdout);
+ uprint(months[i], stdout, status);
+ indent(pad / 2 + MARGIN_WIDTH, stdout);
+ pad = width - u_strlen(months[i + 1]);
+ indent(pad / 2, stdout);
+ uprint(months[i + 1], stdout, status);
+ putc('\n', stdout);
+
+ /* Print the day names, twice */
+ print_days(days, stdout, status);
+ indent(MARGIN_WIDTH, stdout);
+ print_days(days, stdout, status);
+ putc('\n', stdout);
+
+ /* Setup the two calendars */
+ ucal_set(left_cal, UCAL_MONTH, i);
+ ucal_set(left_cal, UCAL_DATE, 1);
+ ucal_set(right_cal, UCAL_MONTH, i + 1);
+ ucal_set(right_cal, UCAL_DATE, 1);
+
+ left_firstday = ucal_get(left_cal, UCAL_DAY_OF_WEEK, status);
+ right_firstday = ucal_get(right_cal, UCAL_DAY_OF_WEEK, status);
+
+ /* The day of the week for the first day of the month is based on
+ 1-based days of the week. However, the days were reordered
+ when placed in the days array. Account for this here by
+ offsetting by the first day of the week for the locale, which
+ is also 1-based. */
+
+ /* We need to mod by DAY_COUNT since fdow can be > firstday. IE,
+ if fdow = 2 = Monday (like in France) and the first day of the
+ month is a 1 = Sunday, we want firstday to be 6, not -1 */
+ left_firstday += (DAY_COUNT - fdow);
+ left_firstday %= DAY_COUNT;
+
+ right_firstday += (DAY_COUNT - fdow);
+ right_firstday %= DAY_COUNT;
+
+ left_current = left_firstday;
+ right_current = right_firstday;
+
+ left_day = ucal_get(left_cal, UCAL_DATE, status);
+ right_day = ucal_get(right_cal, UCAL_DATE, status);
+
+ left_month = ucal_get(left_cal, UCAL_MONTH, status);
+ right_month = ucal_get(right_cal, UCAL_MONTH, status);
+
+ /* Finally, print out the days */
+ while(left_month == i || right_month == i + 1) {
+
+ /* If the left month is finished printing, but the right month
+ still has days to be printed, indent the width of the days
+ strings and reset the left calendar's current day to 0 */
+ if(left_month != i && right_month == i + 1) {
+ indent(width + 1, stdout);
+ left_current = 0;
+ }
+
+ while(left_month == i) {
+
+ /* If the day is the first, indent the correct number of
+ spaces for the first week */
+ if(left_day == 1) {
+ for(j = 0; j < left_current; ++j)
+ indent(lens[j] + 1, stdout);
+ }
+
+ /* Format the current day string */
+ unum_format(nfmt, left_day, s, BUF_SIZE, 0, status);
+
+ /* Calculate the justification and indent */
+ pad = lens[left_current] - u_strlen(s);
+ indent(pad, stdout);
+
+ /* Print the day number out, followed by a space */
+ uprint(s, stdout, status);
+ putc(' ', stdout);
+
+ /* Update the current day */
+ ++left_current;
+ left_current %= DAY_COUNT;
+
+ /* Go to the next day */
+ ucal_add(left_cal, UCAL_DATE, 1, status);
+ left_day = ucal_get(left_cal, UCAL_DATE, status);
+
+ /* Determine the month */
+ left_month = ucal_get(left_cal, UCAL_MONTH, status);
+
+ /* If we're at day 0 (first day of the week), break and go to
+ the next month */
+ if(left_current == 0) {
+ break;
+ }
+ };
+
+ /* If the current day isn't 0, indent to make up for missing
+ days at the end of the month */
+ if(left_current != 0) {
+ for(j = left_current; j < DAY_COUNT; ++j)
+ indent(lens[j] + 1, stdout);
+ }
+
+ /* Indent between the two months */
+ indent(MARGIN_WIDTH, stdout);
+
+ while(right_month == i + 1) {
+
+ /* If the day is the first, indent the correct number of
+ spaces for the first week */
+ if(right_day == 1) {
+ for(j = 0; j < right_current; ++j)
+ indent(lens[j] + 1, stdout);
+ }
+
+ /* Format the current day string */
+ unum_format(nfmt, right_day, s, BUF_SIZE, 0, status);
+
+ /* Calculate the justification and indent */
+ pad = lens[right_current] - u_strlen(s);
+ indent(pad, stdout);
+
+ /* Print the day number out, followed by a space */
+ uprint(s, stdout, status);
+ putc(' ', stdout);
+
+ /* Update the current day */
+ ++right_current;
+ right_current %= DAY_COUNT;
+
+ /* Go to the next day */
+ ucal_add(right_cal, UCAL_DATE, 1, status);
+ right_day = ucal_get(right_cal, UCAL_DATE, status);
+
+ /* Determine the month */
+ right_month = ucal_get(right_cal, UCAL_MONTH, status);
+
+ /* If we're at day 0 (first day of the week), break out */
+ if(right_current == 0) {
+ break;
+ }
+
+ };
+
+ /* Output a newline */
+ putc('\n', stdout);
+ }
+
+ /* Output a trailing newline */
+ putc('\n', stdout);
+ }
+
+ /* Clean up */
+ free_months(months);
+ free_days(days);
+ udat_close(dfmt);
+ unum_close(nfmt);
+ ucal_close(right_cal);
+}
+
+#endif
diff --git a/Build/source/libs/icu/icu-4.4/samples/cal/cal.sln b/Build/source/libs/icu/icu-4.4/samples/cal/cal.sln
new file mode 100644
index 00000000000..a236ed94071
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.4/samples/cal/cal.sln
@@ -0,0 +1,25 @@
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cal", "cal.vcproj", "{F7659D77-09CF-4FE9-ACEE-927287AA9509}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.Build.0 = Debug|Win32
+ {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.ActiveCfg = Debug|Win32
+ {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.Build.0 = Debug|Win32
+ {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.ActiveCfg = Release|Win32
+ {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.Build.0 = Release|Win32
+ {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.ActiveCfg = Release|Win32
+ {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/Build/source/libs/icu/icu-4.4/samples/cal/cal.vcproj b/Build/source/libs/icu/icu-4.4/samples/cal/cal.vcproj
new file mode 100644
index 00000000000..089cd11b273
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.4/samples/cal/cal.vcproj
@@ -0,0 +1,418 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="cal"
+ ProjectGUID="{F7659D77-09CF-4FE9-ACEE-927287AA9509}"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\x86\Release"
+ IntermediateDirectory=".\x86\Release"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\x86\Release/cal.tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\..\include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ TreatWChar_tAsBuiltInType="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\x86\Release/cal.pch"
+ AssemblerListingLocation=".\x86\Release/"
+ ObjectFile=".\x86\Release/"
+ ProgramDataBaseFileName=".\x86\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="icuuc.lib icuin.lib"
+ OutputFile=".\x86\Release/cal.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="../../../lib"
+ ProgramDatabaseFile=".\x86\Release/cal.pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory=".\x64\Release"
+ IntermediateDirectory=".\x64\Release"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ TypeLibraryName=".\x64\Release/cal.tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\..\include"
+ PreprocessorDefinitions="WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ TreatWChar_tAsBuiltInType="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\x64\Release/cal.pch"
+ AssemblerListingLocation=".\x64\Release/"
+ ObjectFile=".\x64\Release/"
+ ProgramDataBaseFileName=".\x64\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="icuuc.lib icuin.lib"
+ OutputFile=".\x64\Release/cal.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="../../../lib64"
+ ProgramDatabaseFile=".\x64\Release/cal.pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\x86\Debug"
+ IntermediateDirectory=".\x86\Debug"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\x86\Debug/cal.tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ TreatWChar_tAsBuiltInType="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\x86\Debug/cal.pch"
+ AssemblerListingLocation=".\x86\Debug/"
+ ObjectFile=".\x86\Debug/"
+ ProgramDataBaseFileName=".\x86\Debug/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="4"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="icuucd.lib icuind.lib"
+ OutputFile=".\x86\Debug/cal.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="../../../lib"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile=".\x86\Debug/cal.pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory=".\x64\Debug"
+ IntermediateDirectory=".\x64\Debug"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ TypeLibraryName=".\x64\Debug/cal.tlb"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\include"
+ PreprocessorDefinitions="WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ TreatWChar_tAsBuiltInType="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\x64\Debug/cal.pch"
+ AssemblerListingLocation=".\x64\Debug/"
+ ObjectFile=".\x64\Debug/"
+ ProgramDataBaseFileName=".\x64\Debug/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="icuucd.lib icuind.lib"
+ OutputFile=".\x64\Debug/cal.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="../../../lib64"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile=".\x64\Debug/cal.pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+ >
+ <File
+ RelativePath=".\cal.c"
+ >
+ </File>
+ <File
+ RelativePath=".\uprint.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl"
+ >
+ <File
+ RelativePath=".\uprint.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/Build/source/libs/icu/icu-4.4/samples/cal/readme.txt b/Build/source/libs/icu/icu-4.4/samples/cal/readme.txt
new file mode 100644
index 00000000000..69d08e8880b
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.4/samples/cal/readme.txt
@@ -0,0 +1,58 @@
+Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved.
+icucal: a sample program which displays the calendar.
+
+This sample demonstrates
+ Formatting a calendar
+ Outputting text in the default codepage to the console
+
+
+Files:
+ cal.c Main source file
+ uprint.h codepage output convenience header
+ uprint.h codepage output convenience implementation
+ cal.sln Windows MSVC workspace. Double-click this to get started.
+ cal.vcproj Windows MSVC project file
+
+To Build icucal on Windows
+ 1. Install and build ICU
+ 2. In MSVC, open the workspace file icu\samples\cal\cal.sln
+ 3. Choose a Debug or Release build.
+ 4. Build.
+
+To Run on Windows
+ 1. Start a command shell window
+ 2. Add ICU's bin directory to the path, e.g.
+ set PATH=c:\icu\bin;%PATH%
+ (Use the path to where ever ICU is on your system.)
+ 3. cd into the cal directory, e.g.
+ cd c:\icu\source\samples\cal\debug
+ 4. Run it
+ cal
+
+To Build on Unixes
+ 1. Build ICU. icucal is built automatically by default unless samples are turned off.
+ Specify an ICU install directory when running configure,
+ using the --prefix option. The steps to build ICU will look something
+ like this:
+ cd <icu directory>/source
+ runConfigureICU <platform-name> --prefix <icu install directory> [other options]
+ gmake all
+
+ 2. Install ICU,
+ gmake install
+
+ To Run on Unixes
+ cd <icu directory>/source/samples/cal
+
+ gmake check
+ -or-
+
+ export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
+ cal
+
+
+ Note: The name of the LD_LIBRARY_PATH variable is different on some systems.
+ If in doubt, run the sample using "gmake check", and note the name of
+ the variable that is used there. LD_LIBRARY_PATH is the correct name
+ for Linux and Solaris.
+
diff --git a/Build/source/libs/icu/icu-4.4/samples/cal/uprint.c b/Build/source/libs/icu/icu-4.4/samples/cal/uprint.c
new file mode 100644
index 00000000000..2b0c8115103
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.4/samples/cal/uprint.c
@@ -0,0 +1,75 @@
+/*
+**********************************************************************
+* Copyright (C) 1998-2001, International Business Machines Corporation
+* and others. All Rights Reserved.
+**********************************************************************
+*
+* File date.c
+*
+* Modification History:
+*
+* Date Name Description
+* 06/14/99 stephen Creation.
+*******************************************************************************
+*/
+
+#include "uprint.h"
+#include "unicode/ucnv.h"
+#include "unicode/ustring.h"
+
+#define BUF_SIZE 128
+
+/* Print a ustring to the specified FILE* in the default codepage */
+void
+uprint(const UChar *s,
+ FILE *f,
+ UErrorCode *status)
+{
+ /* converter */
+ UConverter *converter;
+ char buf [BUF_SIZE];
+ int32_t sourceLen;
+ const UChar *mySource;
+ const UChar *mySourceEnd;
+ char *myTarget;
+ int32_t arraySize;
+
+ if(s == 0) return;
+
+ /* set up the conversion parameters */
+ sourceLen = u_strlen(s);
+ mySource = s;
+ mySourceEnd = mySource + sourceLen;
+ myTarget = buf;
+ arraySize = BUF_SIZE;
+
+ /* open a default converter */
+ converter = ucnv_open(0, status);
+
+ /* if we failed, clean up and exit */
+ if(U_FAILURE(*status)) goto finish;
+
+ /* perform the conversion */
+ do {
+ /* reset the error code */
+ *status = U_ZERO_ERROR;
+
+ /* perform the conversion */
+ ucnv_fromUnicode(converter, &myTarget, myTarget + arraySize,
+ &mySource, mySourceEnd, NULL,
+ TRUE, status);
+
+ /* Write the converted data to the FILE* */
+ fwrite(buf, sizeof(char), myTarget - buf, f);
+
+ /* update the conversion parameters*/
+ myTarget = buf;
+ arraySize = BUF_SIZE;
+ }
+ while(*status == U_BUFFER_OVERFLOW_ERROR);
+
+ finish:
+
+ /* close the converter */
+ ucnv_close(converter);
+}
diff --git a/Build/source/libs/icu/icu-4.4/samples/cal/uprint.h b/Build/source/libs/icu/icu-4.4/samples/cal/uprint.h
new file mode 100644
index 00000000000..16ffb47c115
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.4/samples/cal/uprint.h
@@ -0,0 +1,26 @@
+/*
+**********************************************************************
+* Copyright (C) 1998-2004, International Business Machines Corporation
+* and others. All Rights Reserved.
+**********************************************************************
+*
+* File uprint.h
+*
+* Modification History:
+*
+* Date Name Description
+* 06/14/99 stephen Creation.
+*******************************************************************************
+*/
+
+#ifndef UPRINT_H
+#define UPRINT_H 1
+
+#include <stdio.h>
+
+#include "unicode/utypes.h"
+
+/* Print a ustring to the specified FILE* in the default codepage */
+U_CFUNC void uprint(const UChar *s, FILE *f, UErrorCode *status);
+
+#endif /* ! UPRINT_H */