dbus-internals.h revision 1f23ea99b37bfc8197f1c6a376f9afe08037f0f6
1/* -*- mode: C; c-file-style: "gnu" -*- */ 2/* dbus-internals.h random utility stuff (internal to D-BUS implementation) 3 * 4 * Copyright (C) 2002 Red Hat, Inc. 5 * 6 * Licensed under the Academic Free License version 1.2 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 * 22 */ 23#ifdef DBUS_INSIDE_DBUS_H 24#error "You can't include dbus-internals.h in the public header dbus.h" 25#endif 26 27#ifndef DBUS_INTERNALS_H 28#define DBUS_INTERNALS_H 29 30#include <config.h> 31 32#include <dbus/dbus-memory.h> 33#include <dbus/dbus-types.h> 34#include <dbus/dbus-errors.h> 35#include <dbus/dbus-sysdeps.h> 36 37DBUS_BEGIN_DECLS; 38 39void _dbus_warn (const char *format, 40 ...); 41void _dbus_verbose (const char *format, 42 ...); 43 44const char* _dbus_strerror (int error_number); 45 46DBusResultCode _dbus_result_from_errno (int error_number); 47 48#define _dbus_assert(condition) \ 49do { \ 50 if (!(condition)) \ 51 { \ 52 _dbus_warn ("Assertion failed \"%s\" file \"%s\" line %d\n", \ 53 #condition, __FILE__, __LINE__); \ 54 _dbus_abort (); \ 55 } \ 56} while (0) 57 58#define _dbus_assert_not_reached(explanation) \ 59do { \ 60 _dbus_warn ("File \"%s\" line %d should not have been reached: %s\n", \ 61 __FILE__, __LINE__, (explanation)); \ 62 _dbus_abort (); \ 63} while (0) 64 65#define _DBUS_N_ELEMENTS(array) ((int) (sizeof ((array)) / sizeof ((array)[0]))) 66 67#define _DBUS_POINTER_TO_INT(pointer) ((long)(pointer)) 68#define _DBUS_INT_TO_POINTER(integer) ((void*)((long)(integer))) 69 70#define _DBUS_ZERO(object) (memset (&(object), '\0', sizeof ((object)))) 71 72#define _DBUS_STRUCT_OFFSET(struct_type, member) \ 73 ((long) ((unsigned char*) &((struct_type*) 0)->member)) 74 75/* This alignment thing is from ORBit2 */ 76/* Align a value upward to a boundary, expressed as a number of bytes. 77 * E.g. align to an 8-byte boundary with argument of 8. 78 */ 79 80/* 81 * (this + boundary - 1) 82 * & 83 * ~(boundary - 1) 84 */ 85 86#define _DBUS_ALIGN_VALUE(this, boundary) \ 87 (( ((unsigned long)(this)) + (((unsigned long)(boundary)) -1)) & (~(((unsigned long)(boundary))-1))) 88 89#define _DBUS_ALIGN_ADDRESS(this, boundary) \ 90 ((void*)_DBUS_ALIGN_VALUE(this, boundary)) 91 92char* _dbus_strdup (const char *str); 93 94#define _DBUS_INT_MIN (-_DBUS_INT_MAX - 1) 95#define _DBUS_INT_MAX 2147483647 96#define _DBUS_MAX_SUN_PATH_LENGTH 99 97#define _DBUS_ONE_KILOBYTE 1024 98#define _DBUS_ONE_MEGABYTE 1024 * _DBUS_ONE_KILOBYTE 99 100#undef MAX 101#define MAX(a, b) (((a) > (b)) ? (a) : (b)) 102 103#undef MIN 104#define MIN(a, b) (((a) < (b)) ? (a) : (b)) 105 106#undef ABS 107#define ABS(a) (((a) < 0) ? -(a) : (a)) 108 109typedef void (* DBusForeachFunction) (void *element, 110 void *data); 111 112dbus_bool_t _dbus_set_fd_nonblocking (int fd, 113 DBusResultCode *result); 114 115void _dbus_verbose_bytes (const unsigned char *data, 116 int len); 117void _dbus_verbose_bytes_of_string (const DBusString *str, 118 int start, 119 int len); 120 121 122const char* _dbus_type_to_string (int type); 123 124DBUS_END_DECLS; 125 126#endif /* DBUS_INTERNALS_H */ 127