gecko-dev/js/ref/prprintf.h

90 строки
2.9 KiB
C

/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef prprintf_h___
#define prprintf_h___
/*
* Portable, flexible, and buffer-safe sprintf variants.
*/
#include <stdarg.h>
#include <stddef.h>
PR_BEGIN_EXTERN_C
/* XXX not used by JSRef */
typedef int
(*PR_vsxprintf_callback)(void *arg, const char *s, size_t slen);
typedef int
(*PR_sxprintf_callback) (void *arg, const char *s, size_t len);
/*
* sprintf into a fixed size buffer. Guarantees that a NUL is at the end
* of the buffer. Returns the length of the written output, NOT including
* the NUL, or (size_t)-1 if an error occurs.
*/
extern PR_PUBLIC_API(size_t)
PR_snprintf(char *out, size_t outlen, const char *fmt, ...);
/*
* sprintf into a malloc'd buffer. Return a pointer to the malloc'd
* buffer on success, NULL on failure.
*/
extern PR_PUBLIC_API(char *)
PR_smprintf(const char *fmt, ...);
/*
* sprintf into a function. The function "stuff" is called with a string
* to place into the output. "arg" is an opaque pointer used by the stuff
* function to hold any state needed to do the storage of the output
* data. The return value is a count of the number of characters fed to
* the stuff function, or (size_t)-1 if an error occurs.
*/
extern PR_PUBLIC_API(size_t)
PR_sxprintf(PR_sxprintf_callback stuff, void *arg, const char *fmt, ...);
/*
* "append" sprintf into a malloc'd buffer. "last" is the last value of
* the malloc'd buffer. sprintf will append data to the end of last,
* growing it as necessary using realloc. If last is NULL, PR_ssprintf
* will allocate the initial string. The return value is the new value of
* last for subsequent calls, or NULL if there is a malloc failure.
*/
extern PR_PUBLIC_API(char *)
PR_sprintf_append(char *last, const char *fmt, ...);
/*
* Variable-argument-list forms of the above.
*/
extern PR_PUBLIC_API(size_t)
PR_vsnprintf(char *out, size_t outlen, const char *fmt, va_list ap);
extern PR_PUBLIC_API(char *)
PR_vsmprintf(const char *fmt, va_list ap);
extern PR_PUBLIC_API(size_t)
PR_vsxprintf(PR_vsxprintf_callback stuff, void *arg, const char *fmt,
va_list ap);
extern PR_PUBLIC_API(char *)
PR_vsprintf_append(char *last, const char *fmt, va_list ap);
PR_END_EXTERN_C
#endif /* prprintf_h___ */