Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/fs/jfs/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  jfs_unicode.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 *   Copyright (C) International Business Machines Corp., 2000-2002
 *   Portions Copyright (C) Christoph Hellwig, 2001-2002
 */

#ifndef _H_JFS_UNICODE
#define _H_JFS_UNICODE

#include <linux/slab.h>
#include <asm/byteorder.h>
#include "../nls/nls_ucs2_data.h"
#include "jfs_types.h"

extern int get_UCSname(struct component_name *, struct dentry *);
extern int jfs_strfromUCS_le(char *, const __le16 *, intstruct nls_table *);

#define free_UCSname(COMP) kfree((COMP)->name)

/*
 * UniStrcpy:  Copy a string
 */

static inline wchar_t *UniStrcpy(wchar_t * ucs1, const wchar_t * ucs2)
{
 wchar_t *anchor = ucs1; /* save the start of result string */

 while ((*ucs1++ = *ucs2++));
 return anchor;
}



/*
 * UniStrncpy:  Copy length limited string with pad
 */

static inline __le16 *UniStrncpy_le(__le16 * ucs1, const __le16 * ucs2,
      size_t n)
{
 __le16 *anchor = ucs1;

 while (n-- && *ucs2) /* Copy the strings */
  *ucs1++ = *ucs2++;

 n++;
 while (n--)  /* Pad with nulls */
  *ucs1++ = 0;
 return anchor;
}

/*
 * UniStrncmp_le:  Compare length limited string - native to little-endian
 */

static inline int UniStrncmp_le(const wchar_t * ucs1, const __le16 * ucs2,
    size_t n)
{
 if (!n)
  return 0; /* Null strings are equal */
 while ((*ucs1 == __le16_to_cpu(*ucs2)) && *ucs1 && --n) {
  ucs1++;
  ucs2++;
 }
 return (int) *ucs1 - (int) __le16_to_cpu(*ucs2);
}

/*
 * UniStrncpy_to_le:  Copy length limited string with pad to little-endian
 */

static inline __le16 *UniStrncpy_to_le(__le16 * ucs1, const wchar_t * ucs2,
           size_t n)
{
 __le16 *anchor = ucs1;

 while (n-- && *ucs2) /* Copy the strings */
  *ucs1++ = cpu_to_le16(*ucs2++);

 n++;
 while (n--)  /* Pad with nulls */
  *ucs1++ = 0;
 return anchor;
}

/*
 * UniStrncpy_from_le:  Copy length limited string with pad from little-endian
 */

static inline wchar_t *UniStrncpy_from_le(wchar_t * ucs1, const __le16 * ucs2,
       size_t n)
{
 wchar_t *anchor = ucs1;

 while (n-- && *ucs2) /* Copy the strings */
  *ucs1++ = __le16_to_cpu(*ucs2++);

 n++;
 while (n--)  /* Pad with nulls */
  *ucs1++ = 0;
 return anchor;
}

/*
 * UniToupper:  Convert a unicode character to upper case
 */

static inline wchar_t UniToupper(wchar_t uc)
{
 const struct UniCaseRange *rp;

 if (uc < sizeof(NlsUniUpperTable)) { /* Latin characters */
  return uc + NlsUniUpperTable[uc]; /* Use base tables */
 } else {
  rp = NlsUniUpperRange; /* Use range tables */
  while (rp->start) {
   if (uc < rp->start) /* Before start of range */
    return uc; /* Uppercase = input */
   if (uc <= rp->end) /* In range */
    return uc + rp->table[uc - rp->start];
   rp++; /* Try next range */
  }
 }
 return uc;  /* Past last range */
}


/*
 * UniStrupr:  Upper case a unicode string
 */

static inline wchar_t *UniStrupr(wchar_t * upin)
{
 wchar_t *up;

 up = upin;
 while (*up) {  /* For all characters */
  *up = UniToupper(*up);
  up++;
 }
 return upin;  /* Return input pointer */
}

#endif    /* !_H_JFS_UNICODE */

Messung V0.5
C=81 H=72 G=76

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.