Home | History | Annotate | Download | only in toolutil
      1 /*
      2 *******************************************************************************
      3 *
      4 *   Copyright (C) 1999-2009, International Business Machines
      5 *   Corporation and others.  All Rights Reserved.
      6 *
      7 *******************************************************************************
      8 *   file name:  toolutil.h
      9 *   encoding:   US-ASCII
     10 *   tab size:   8 (not used)
     11 *   indentation:4
     12 *
     13 *   created on: 1999nov19
     14 *   created by: Markus W. Scherer
     15 *
     16 *   This file defines utility functions for ICU tools like genccode.
     17 */
     18 
     19 #ifndef __TOOLUTIL_H__
     20 #define __TOOLUTIL_H__
     21 
     22 #include "unicode/utypes.h"
     23 
     24 /*
     25  * For Windows, a path/filename may be the short (8.3) version
     26  * of the "real", long one. In this case, the short one
     27  * is abbreviated and contains a tilde etc.
     28  * This function returns a pointer to the original pathname
     29  * if it is the "real" one itself, and a pointer to a static
     30  * buffer (not thread-safe) containing the long version
     31  * if the pathname is indeed abbreviated.
     32  *
     33  * On platforms other than Windows, this function always returns
     34  * the input pathname pointer.
     35  *
     36  * This function is especially useful in tools that are called
     37  * by a batch file for loop, which yields short pathnames on Win9x.
     38  */
     39 U_CAPI const char * U_EXPORT2
     40 getLongPathname(const char *pathname);
     41 
     42 /*
     43  * Find the basename at the end of a pathname, i.e., the part
     44  * after the last file separator, and return a pointer
     45  * to this part of the pathname.
     46  * If the pathname only contains a basename and no file separator,
     47  * then the pathname pointer itself is returned.
     48  */
     49 U_CAPI const char * U_EXPORT2
     50 findBasename(const char *filename);
     51 
     52 /*
     53  * Return the current year in the Gregorian calendar. Used for copyright generation.
     54  */
     55 U_CAPI int32_t U_EXPORT2
     56 getCurrentYear(void);
     57 
     58 /*
     59  * Creates a directory with pathname.
     60  *
     61  * @param status Set to an error code when mkdir failed.
     62  */
     63 U_CAPI void U_EXPORT2
     64 uprv_mkdir(const char *pathname, UErrorCode *status);
     65 
     66 /**
     67  * Return the modification date for the specified file or directory.
     68  * Return value is undefined if there was an error.
     69  */
     70 /*U_CAPI UDate U_EXPORT2
     71 uprv_getModificationDate(const char *pathname, UErrorCode *status);
     72 */
     73 /*
     74  * Returns the modification
     75  *
     76  * @param status Set to an error code when mkdir failed.
     77  */
     78 
     79 /*
     80  * UToolMemory is used for generic, custom memory management.
     81  * It is allocated with enough space for count*size bytes starting
     82  * at array.
     83  * The array is declared with a union of large data types so
     84  * that its base address is aligned for any types.
     85  * If size is a multiple of a data type size, then such items
     86  * can be safely allocated inside the array, at offsets that
     87  * are themselves multiples of size.
     88  */
     89 struct UToolMemory;
     90 typedef struct UToolMemory UToolMemory;
     91 
     92 /**
     93  * Open a UToolMemory object for allocation of initialCapacity to maxCapacity
     94  * items with size bytes each.
     95  */
     96 U_CAPI UToolMemory * U_EXPORT2
     97 utm_open(const char *name, int32_t initialCapacity, int32_t maxCapacity, int32_t size);
     98 
     99 /**
    100  * Close a UToolMemory object.
    101  */
    102 U_CAPI void U_EXPORT2
    103 utm_close(UToolMemory *mem);
    104 
    105 /**
    106  * Get the pointer to the beginning of the array of items.
    107  * The pointer becomes invalid after allocation of new items.
    108  */
    109 U_CAPI void * U_EXPORT2
    110 utm_getStart(UToolMemory *mem);
    111 
    112 /**
    113  * Get the current number of items.
    114  */
    115 U_CAPI int32_t U_EXPORT2
    116 utm_countItems(UToolMemory *mem);
    117 
    118 /**
    119  * Allocate one more item and return the pointer to its start in the array.
    120  */
    121 U_CAPI void * U_EXPORT2
    122 utm_alloc(UToolMemory *mem);
    123 
    124 /**
    125  * Allocate n items and return the pointer to the start of the first one in the array.
    126  */
    127 U_CAPI void * U_EXPORT2
    128 utm_allocN(UToolMemory *mem, int32_t n);
    129 
    130 #endif
    131