X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flibpspp%2Fstr.h;h=4a219d7a81f04d8c4a4bb51e9c9c112a0815caa4;hb=4b8c6191f0204d6a0b62650490ef2794d62ec79c;hp=ca990dbc3632f8b4d4f0870cf8874f595be44163;hpb=46b52782d51c442adc7fefe498c5392138f6c9fe;p=pspp-builds.git diff --git a/src/libpspp/str.h b/src/libpspp/str.h index ca990dbc..4a219d7a 100644 --- a/src/libpspp/str.h +++ b/src/libpspp/str.h @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2009 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -31,13 +32,12 @@ /* Miscellaneous. */ void buf_reverse (char *, size_t); -char *buf_find_reverse (const char *, size_t, const char *, size_t); int buf_compare_case (const char *, const char *, size_t); int buf_compare_rpad (const char *, size_t, const char *, size_t); -void buf_copy_lpad (char *, size_t, const char *, size_t); -void buf_copy_rpad (char *, size_t, const char *, size_t); -void buf_copy_str_lpad (char *, size_t, const char *); -void buf_copy_str_rpad (char *, size_t, const char *); +void buf_copy_lpad (char *, size_t, const char *, size_t, char pad); +void buf_copy_rpad (char *, size_t, const char *, size_t, char pad); +void buf_copy_str_lpad (char *, size_t, const char *, char pad); +void buf_copy_str_rpad (char *, size_t, const char *, char pad); int str_compare_rpad (const char *, const char *); void str_copy_rpad (char *, size_t, const char *); @@ -48,8 +48,6 @@ void str_lowercase (char *); bool str_format_26adic (unsigned long int number, char buffer[], size_t); -char *spprintf (char *dst, const char *format, ...); - void *mempset (void *, int, size_t); /* Common character classes for use with substring and string functions. */ @@ -74,9 +72,9 @@ struct substring /* Constructors. These functions do not allocate any memory, so the substrings they create should not normally be destroyed. */ -struct substring ss_empty (void); -struct substring ss_cstr (const char *); -struct substring ss_buffer (const char *, size_t); +static inline struct substring ss_empty (void); +static inline struct substring ss_cstr (const char *); +static inline struct substring ss_buffer (const char *, size_t); struct substring ss_substr (struct substring, size_t start, size_t); struct substring ss_head (struct substring, size_t); struct substring ss_tail (struct substring, size_t); @@ -177,6 +175,7 @@ bool ds_tokenize (const struct string *src, struct substring delimiters, size_t *save_idx, struct substring *token); void ds_rpad (struct string *, size_t length, char pad); void ds_set_length (struct string *, size_t new_length, char pad); +void ds_remove (struct string *, size_t start, size_t n); /* Extracting substrings. */ struct substring ds_ss (const struct string *); @@ -201,6 +200,7 @@ char *ds_xstrdup (const struct string *); size_t ds_capacity (const struct string *); char *ds_cstr (const struct string *); +char *ds_steal_cstr (struct string *); /* File input. */ bool ds_read_line (struct string *, FILE *, size_t max_length); @@ -222,4 +222,37 @@ char *ds_put_uninit (struct string *st, size_t incr); /* calls relocate from gnulib on ST */ void ds_relocate (struct string *st); + +void u8_buf_copy_rpad (uint8_t *dst, size_t dst_size, + const uint8_t *src, size_t src_size, + char pad); + +struct substring +ss_empty (void) +{ + struct substring ss; + ss.string = NULL; + ss.length = 0; + return ss; +} + +/* Returns a substring whose contents are the given C-style + string CSTR. */ +static inline struct substring +ss_cstr (const char *cstr) +{ + return ss_buffer (cstr, strlen (cstr)); +} + +/* Returns a substring whose contents are the CNT characters in + BUFFER. */ +static inline struct substring +ss_buffer (const char *buffer, size_t cnt) +{ + struct substring ss; + ss.string = (char *) buffer; + ss.length = cnt; + return ss; +} + #endif /* str_h */