Updated the build versions of <BeBuild.h> and <SupportDefs.h>. Copied

modified versions of the new config headers.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34224 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2009-11-24 22:50:55 +00:00
parent d1b0d5a4af
commit a1f8d8a11c
11 changed files with 429 additions and 518 deletions
+70
View File
@@ -0,0 +1,70 @@
/*
* Copyright 2009, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _CONFIG_HAIKU_CONFIG_H
#define _CONFIG_HAIKU_CONFIG_H
/* Determine the architecture and define macros for some fundamental
properties:
__HAIKU_ARCH - short name of the architecture (used in paths)
__HAIKU_ARCH_<arch> - defined to 1 for the respective architecture
__HAIKU_ARCH_64_BIT - defined to 1 on 64 bit architectures
__HAIKU_BIG_ENDIAN - defined to 1 on big endian architectures
*/
#ifdef __INTEL__
# ifdef HAIKU_HOST_PLATFORM_64_BIT
# define __HAIKU_ARCH x86_64
# define __HAIKU_ARCH_X86_64 1
# define __HAIKU_ARCH_64_BIT 1
# else
# define __HAIKU_ARCH x86
# define __HAIKU_ARCH_X86 1
# endif
#elif __POWERPC__
# define __HAIKU_ARCH ppc
# define __HAIKU_ARCH_PPC 1
# define __HAIKU_BIG_ENDIAN 1
#elif __M68K__
# define __HAIKU_ARCH m68k 1
# define __HAIKU_ARCH_M68K 1
# define __HAIKU_BIG_ENDIAN 1
#elif __MIPSEL__
# define __HAIKU_ARCH mipsel
# define __HAIKU_ARCH_MIPSEL 1
#elif __ARM__
# define __HAIKU_ARCH arm
# define __HAIKU_ARCH_ARM 1
#else
# error Unsupported architecture!
#endif
/* implied properties */
#ifndef __HAIKU_ARCH_64_BIT
# define __HAIKU_ARCH_32_BIT 1
#endif
#ifndef __HAIKU_BIG_ENDIAN
# define __HAIKU_LITTLE_ENDIAN 1
#endif
/* architecture specific include macros */
#define __HAIKU_ARCH_HEADER(header) <arch/__HAIKU_ARCH/header>
#define __HAIKU_SUBDIR_ARCH_HEADER(subdir, header) \
<subdir/arch/__HAIKU_ARCH/header>
/* BeOS R5 binary compatibility (gcc 2 on x86) */
#if defined(__HAIKU_ARCH_X86) && __GNUC__ == 2
# define __HAIKU_BEOS_COMPATIBLE 1
#endif
/* BeOS R5 compatible types */
#ifdef __HAIKU_ARCH_X86
/* TODO: This should be "#ifdef __HAIKU_BEOS_COMPATIBLE", but this will
break all gcc 4 C++ optional packages. I.e. switch that at a suitable
time.
*/
# define __HAIKU_BEOS_COMPATIBLE_TYPES 1
#endif
#endif /* _CONFIG_HAIKU_CONFIG_H */
+62
View File
@@ -0,0 +1,62 @@
/*
* Copyright 2009, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _CONFIG_TYPES_H
#define _CONFIG_TYPES_H
#include <config/HaikuConfig.h>
#include <inttypes.h>
/* fixed-width types -- the __haiku_std_[u]int* types correspond to the POSIX
[u]int*_t types, the _haiku_[u]int* types to the BeOS [u]int* types. If
__HAIKU_BEOS_COMPATIBLE_TYPES is not defined both sets are identical. Once
we drop compatibility for good, we can consolidate the types.
*/
typedef int8_t __haiku_std_int8;
typedef uint8_t __haiku_std_uint8;
typedef int16_t __haiku_std_int16;
typedef uint16_t __haiku_std_uint16;
typedef int32_t __haiku_std_int32;
typedef uint32_t __haiku_std_uint32;
typedef int64_t __haiku_std_int64;
typedef uint64_t __haiku_std_uint64;
typedef __haiku_std_int8 __haiku_int8;
typedef __haiku_std_uint8 __haiku_uint8;
typedef __haiku_std_int16 __haiku_int16;
typedef __haiku_std_uint16 __haiku_uint16;
#ifdef __HAIKU_BEOS_COMPATIBLE_TYPES
typedef signed long int __haiku_int32;
typedef unsigned long int __haiku_uint32;
#else
typedef __haiku_std_int32 __haiku_int32;
typedef __haiku_std_uint32 __haiku_uint32;
#endif
typedef __haiku_std_int64 __haiku_int64;
typedef __haiku_std_uint64 __haiku_uint64;
/* address types */
#ifdef __HAIKU_ARCH_64_BIT
typedef __haiku_int64 __haiku_saddr_t;
typedef __haiku_uint64 __haiku_addr_t;
#else
typedef __haiku_int32 __haiku_saddr_t;
typedef __haiku_uint32 __haiku_addr_t;
#endif
/* address type limits */
#ifdef __HAIKU_ARCH_64_BIT
# define __HAIKU_SADDR_MAX (9223372036854775807LL)
# define __HAIKU_ADDR_MAX (18446744073709551615ULL)
#else
# define __HAIKU_SADDR_MAX (2147483647)
# define __HAIKU_ADDR_MAX (4294967295U)
#endif
#define __HAIKU_SADDR_MIN (-__HAIKU_SADDR_MAX-1)
#endif /* _CONFIG_TYPES_H */
+53 -347
View File
@@ -1,365 +1,71 @@
/******************************************************************************
/
/ File: BeBuild.h
/
/ Description: Import/export macros
/
/ Copyright 1993-98, Be Incorporated
/
*******************************************************************************/
/*
* Copyright 2007-2009, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _BE_BUILD_H
#define _BE_BUILD_H
#define B_BEOS_VERSION_4 0x0400
#define B_BEOS_VERSION_4_5 0x0450
#define B_BEOS_VERSION_5 0x0500
#define B_BEOS_VERSION B_BEOS_VERSION_5
#define B_BEOS_VERSION_MAUI B_BEOS_VERSION_5
#include <config/HaikuConfig.h>
#if defined(__POWERPC__)
// the PowerPC build is using GCC now (BeOS R5 used to use the Metrowerks
// compiler), so it is not compatible to any BeOS version on that platform
// before. However, that wouldn't rule out source compatibility, which
// we do here (for now).
#define _PR2_COMPATIBLE_ 0
#define _PR3_COMPATIBLE_ 0
#define _R4_COMPATIBLE_ 0
#define _R4_5_COMPATIBLE_ 0
#elif defined(__INTEL__)
#define _PR2_COMPATIBLE_ 0
#define _PR3_COMPATIBLE_ 0
#define _R4_COMPATIBLE_ 1
#define _R4_5_COMPATIBLE_ 1
#define B_BEOS_VERSION_4 0x0400
#define B_BEOS_VERSION_4_5 0x0450
#define B_BEOS_VERSION_5 0x0500
#define B_BEOS_VERSION B_BEOS_VERSION_5
#define B_BEOS_VERSION_MAUI B_BEOS_VERSION_5
/* Haiku (API) version */
#define B_HAIKU_VERSION_BEOS 0x00000001
#define B_HAIKU_VERSION_BONE 0x00000002
#define B_HAIKU_VERSION_DANO 0x00000003
#define B_HAIKU_VERSION_1_ALPHA_1 0x00000100
#define B_HAIKU_VERSION_1_PRE_ALPHA_2 0x00000101
#define B_HAIKU_VERSION_1 0x00010000
#define B_HAIKU_VERSION B_HAIKU_VERSION_1_PRE_ALPHA_2
/* Haiku ABI */
#define B_HAIKU_ABI_MAJOR 0xffff0000
#define B_HAIKU_ABI_GCC_2 0x00020000
#define B_HAIKU_ABI_GCC_4 0x00040000
#define B_HAIKU_ABI_GCC_2_ANCIENT 0x00020000
#define B_HAIKU_ABI_GCC_2_BEOS 0x00020001
#define B_HAIKU_ABI_GCC_2_HAIKU 0x00020002
#if __GNUC__ == 2
# define B_HAIKU_ABI B_HAIKU_ABI_GCC_2_HAIKU
#elif __GNUC__ == 4
# define B_HAIKU_ABI B_HAIKU_ABI_GCC_4
#else
# error Configure BeBuild.h for your platform
#endif
#if __MWERKS__
# define _UNUSED(x)
# define _PACKED
#endif
#if __GNUC__
# define _UNUSED(x) x
# define _PACKED __attribute__((packed))
#endif
#if defined(__INTEL__) || defined(__POWERPC__)
// This is the standard import/export definitions used for
// the ELF binary format - this should be usable by all flavors
// of OpenBeOS.
# define _EXPORT
# define _IMPORT
# define _IMPEXP_KERNEL
# define _IMPEXP_GL
# define _IMPEXP_ROOT
# define _IMPEXP_NET
# define _IMPEXP_NETDEV
# define _IMPEXP_ATALK
# define _IMPEXP_BE
# define _IMPEXP_TRACKER
# define _IMPEXP_MAIL
# define _IMPEXP_DEVICE
# define _IMPEXP_MEDIA
# define _IMPEXP_MIDI
# define _IMPEXP_MIDI2
# define _IMPEXP_GAME
# define _IMPEXP_GSOUND
# define _IMPEXP_TRANSLATION
# define _IMPEXP_TEXTENCODING
# define _IMPEXP_INPUT
# error Unsupported gcc version!
#endif
#ifdef __cplusplus
#ifdef __HAIKU_ARCH_64_BIT
# define B_HAIKU_64_BIT 1
#endif
/* cpp kit */
#ifdef __HAIKU_BEOS_COMPATIBLE
# define B_HAIKU_BEOS_COMPATIBLE 1
#endif
/* support kit */
class _IMPEXP_BE BArchivable;
class _IMPEXP_BE BAutolock;
class _IMPEXP_BE BBlockCache;
class _IMPEXP_BE BBufferIO;
class _IMPEXP_BE BDataIO;
class _IMPEXP_BE BPositionIO;
class _IMPEXP_BE BMallocIO;
class _IMPEXP_BE BMemoryIO;
class _IMPEXP_BE BFlattenable;
class _IMPEXP_BE BList;
class _IMPEXP_BE BLocker;
class _IMPEXP_BE BStopWatch;
class _IMPEXP_BE BString;
class _IMPEXP_BE PointerList;
#define _UNUSED(argument) argument
#define _PACKED __attribute__((packed))
#define _PRINTFLIKE(_format_, _args_) \
__attribute__((format(__printf__, _format_, _args_)))
#define _EXPORT
#define _IMPORT
/*storage kit */
struct _IMPEXP_BE entry_ref;
struct _IMPEXP_BE node_ref;
class _IMPEXP_BE BAppFileInfo;
class _IMPEXP_BE BDirectory;
class _IMPEXP_BE BEntry;
class _IMPEXP_BE BFile;
class _IMPEXP_BE BRefFilter;
class _IMPEXP_BE BMimeType;
class _IMPEXP_BE BNode;
class _IMPEXP_BE BNodeInfo;
class _IMPEXP_BE BPath;
class _IMPEXP_BE BQuery;
class _IMPEXP_BE BResources;
class _IMPEXP_BE BResourceStrings;
class _IMPEXP_BE BStatable;
class _IMPEXP_BE BSymLink;
class _IMPEXP_BE BVolume;
class _IMPEXP_BE BVolumeRoster;
#define B_DEFINE_SYMBOL_VERSION(function, versionedSymbol) \
__asm__(".symver " function "," versionedSymbol)
//class _IMPEXP_BE Partition;
//class _IMPEXP_BE Session;
//class _IMPEXP_BE Device;
//class _IMPEXP_BE DeviceList;
//class _IMPEXP_BE TNodeWalker;
//class _IMPEXP_BE TQueryWalker;
//class _IMPEXP_BE TVolWalker;
/*app kit */
struct _IMPEXP_BE app_info;
class _IMPEXP_BE BApplication;
class _IMPEXP_BE BClipboard;
class _IMPEXP_BE BHandler;
class _IMPEXP_BE BInvoker;
class _IMPEXP_BE BLooper;
class _IMPEXP_BE BMessage;
class _IMPEXP_BE BMessageFilter;
class _IMPEXP_BE BMessageQueue;
class _IMPEXP_BE BMessageRunner;
class _IMPEXP_BE BMessenger;
class _IMPEXP_BE BPropertyInfo;
class _IMPEXP_BE BRoster;
#define _IMPEXP_ROOT
#define _IMPEXP_BE
class _IMPEXP_BE _BAppServerLink_;
class _IMPEXP_BE _BSession_;
/*interface kit */
class _IMPEXP_BE BAlert;
class _IMPEXP_BE BBitmap;
class _IMPEXP_BE BBox;
class _IMPEXP_BE BButton;
class _IMPEXP_BE BChannelControl;
class _IMPEXP_BE BChannelSlider;
class _IMPEXP_BE BCheckBox;
class _IMPEXP_BE BColorControl;
class _IMPEXP_BE BControl;
class _IMPEXP_BE BDeskbar;
class _IMPEXP_BE BDragger;
class _IMPEXP_BE BFont;
class _IMPEXP_BE BInputDevice;
class _IMPEXP_BE BListItem;
class _IMPEXP_BE BListView;
class _IMPEXP_BE BStringItem;
class _IMPEXP_BE BMenu;
class _IMPEXP_BE BMenuBar;
class _IMPEXP_BE BMenuField;
class _IMPEXP_BE BMenuItem;
class _IMPEXP_BE BOptionControl;
class _IMPEXP_BE BOptionPopUp;
class _IMPEXP_BE BOutlineListView;
class _IMPEXP_BE BPicture;
class _IMPEXP_BE BPictureButton;
class _IMPEXP_BE BPoint;
class _IMPEXP_BE BPolygon;
class _IMPEXP_BE BPopUpMenu;
class _IMPEXP_BE BPrintJob;
class _IMPEXP_BE BRadioButton;
class _IMPEXP_BE BRect;
class _IMPEXP_BE BRegion;
class _IMPEXP_BE BScreen;
class _IMPEXP_BE BScrollBar;
class _IMPEXP_BE BScrollView;
class _IMPEXP_BE BSeparatorItem;
class _IMPEXP_BE BShelf;
class _IMPEXP_BE BShape;
class _IMPEXP_BE BShapeIterator;
class _IMPEXP_BE BSlider;
class _IMPEXP_BE BStatusBar;
class _IMPEXP_BE BStringView;
class _IMPEXP_BE BTab;
class _IMPEXP_BE BTabView;
class _IMPEXP_BE BTextControl;
class _IMPEXP_BE BTextView;
class _IMPEXP_BE BView;
class _IMPEXP_BE BWindow;
class _IMPEXP_BE _BTextInput_;
class _IMPEXP_BE _BMCMenuBar_;
class _IMPEXP_BE _BMCItem_;
class _IMPEXP_BE _BWidthBuffer_;
class _IMPEXP_BE BPrivateScreen;
/* net kit */
class _IMPEXP_NET _Allocator;
class _IMPEXP_NET _Transacter;
class _IMPEXP_NET _FastIPC;
/* netdev kit */
class _IMPEXP_NETDEV BNetPacket;
class _IMPEXP_NETDEV BStandardPacket;
class _IMPEXP_NETDEV BTimeoutHandler;
class _IMPEXP_NETDEV BPacketHandler;
class _IMPEXP_NETDEV BNetProtocol;
class _IMPEXP_NETDEV BNetDevice;
class _IMPEXP_NETDEV BCallBackHandler;
class _IMPEXP_NETDEV BNetConfig;
class _IMPEXP_NETDEV BIpDevice;
class _IMPEXP_NETDEV _NetBufList;
class _IMPEXP_NETDEV _BSem;
/* atalk kit */
class _IMPEXP_ATALK _PrinterNode;
/* tracker kit */
class _IMPEXP_TRACKER BFilePanel;
class _IMPEXP_TRACKER BRecentItemsList;
class _IMPEXP_TRACKER BRecentFilesList;
class _IMPEXP_TRACKER BRecentFoldersList;
class _IMPEXP_TRACKER BRecentAppsList;
/* mail kit */
class _IMPEXP_MAIL BMailMessage;
/* device kit */
class _IMPEXP_DEVICE BA2D;
class _IMPEXP_DEVICE BD2A;
class _IMPEXP_DEVICE BDigitalPort;
class _IMPEXP_DEVICE BJoystick;
class _IMPEXP_DEVICE BSerialPort;
/* media kit */
class _IMPEXP_MEDIA BDACRenderer;
class _IMPEXP_MEDIA BAudioFileStream;
class _IMPEXP_MEDIA BADCStream;
class _IMPEXP_MEDIA BDACStream;
class _IMPEXP_MEDIA BAbstractBufferStream;
class _IMPEXP_MEDIA BBufferStreamManager;
class _IMPEXP_MEDIA BBufferStream;
class _IMPEXP_MEDIA BSoundFile;
class _IMPEXP_MEDIA BSubscriber;
class _IMPEXP_MEDIA BMediaRoster;
class _IMPEXP_MEDIA BMediaNode;
class _IMPEXP_MEDIA BTimeSource;
class _IMPEXP_MEDIA BBufferProducer;
class _IMPEXP_MEDIA BBufferConsumer;
class _IMPEXP_MEDIA BBuffer;
class _IMPEXP_MEDIA BBufferGroup;
class _IMPEXP_MEDIA BControllable;
class _IMPEXP_MEDIA BFileInterface;
class _IMPEXP_MEDIA BEntityInterface;
class _IMPEXP_MEDIA BMediaAddOn;
class _IMPEXP_MEDIA BMediaTheme;
class _IMPEXP_MEDIA BParameterWeb;
class _IMPEXP_MEDIA BParameterGroup;
class _IMPEXP_MEDIA BParameter;
class _IMPEXP_MEDIA BNullParameter;
class _IMPEXP_MEDIA BDiscreteParameter;
class _IMPEXP_MEDIA BContinuousParameter;
class _IMPEXP_MEDIA BMediaFiles;
class _IMPEXP_MEDIA BSound;
class _IMPEXP_MEDIA BSoundCard;
class _IMPEXP_MEDIA BSoundPlayer;
class _IMPEXP_MEDIA BMediaFormats;
class _IMPEXP_MEDIA BTimedEventQueue;
//class _IMPEXP_MEDIA BEventIterator;
class _IMPEXP_MEDIA BMediaEventLooper;
class _IMPEXP_MEDIA BMediaFile;
class _IMPEXP_MEDIA BMediaTrack;
class _IMPEXP_MEDIA media_node;
struct _IMPEXP_MEDIA media_input;
struct _IMPEXP_MEDIA media_output;
struct _IMPEXP_MEDIA live_node_info;
struct _IMPEXP_MEDIA buffer_clone_info;
struct _IMPEXP_MEDIA media_source;
struct _IMPEXP_MEDIA media_destination;
struct _IMPEXP_MEDIA media_raw_audio_format;
struct _IMPEXP_MEDIA media_raw_video_format;
struct _IMPEXP_MEDIA media_video_display_info;
struct _IMPEXP_MEDIA flavor_info;
struct _IMPEXP_MEDIA dormant_node_info;
struct _IMPEXP_MEDIA dormant_flavor_info;
struct _IMPEXP_MEDIA media_source;
struct _IMPEXP_MEDIA media_destination;
struct _IMPEXP_MEDIA _media_format_description;
struct _IMPEXP_MEDIA media_timed_event;
/* midi kit */
class _IMPEXP_MIDI BMidi;
class _IMPEXP_MIDI BMidiPort;
class _IMPEXP_MIDI BMidiStore;
class _IMPEXP_MIDI BMidiSynth;
class _IMPEXP_MIDI BMidiSynthFile;
class _IMPEXP_MIDI BMidiText;
class _IMPEXP_MIDI BSamples;
class _IMPEXP_MIDI BSynth;
class _IMPEXP_MIDI2 BMidiEndpoint;
class _IMPEXP_MIDI2 BMidiProducer;
class _IMPEXP_MIDI2 BMidiConsumer;
class _IMPEXP_MIDI2 BMidiLocalProducer;
class _IMPEXP_MIDI2 BMidiLocalConsumer;
class _IMPEXP_MIDI2 BMidiRoster;
/* game kit */
class _IMPEXP_GAME BWindowScreen;
class _IMPEXP_GAME BDirectWindow;
/* gamesound kit */
class _IMPEXP_GSOUND BGameSound;
class _IMPEXP_GSOUND BSimpleGameSound;
class _IMPEXP_GSOUND BStreamingGameSound;
class _IMPEXP_GSOUND BFileGameSound;
class _IMPEXP_GSOUND BPushGameSound;
/* translation kit */
class _IMPEXP_TRANSLATION BTranslatorRoster;
class _IMPEXP_TRANSLATION BTranslationUtils;
class _IMPEXP_TRANSLATION BBitmapStream;
class _IMPEXP_TRANSLATION BTranslator;
struct _IMPEXP_TRANSLATION translation_format;
struct _IMPEXP_TRANSLATION translator_info;
/* GL */
class _IMPEXP_GL BGLView;
class _IMPEXP_GL BGLScreen;
class _IMPEXP_GL GLUnurbs;
class _IMPEXP_GL GLUquadric;
class _IMPEXP_GL GLUtesselator;
typedef class _IMPEXP_GL GLUnurbs GLUnurbsObj;
typedef class _IMPEXP_GL GLUquadric GLUquadricObj;
typedef class _IMPEXP_GL GLUtesselator GLUtesselatorObj;
typedef class _IMPEXP_GL GLUtesselator GLUtriangulatorObj;
/* input_server */
class _IMPEXP_INPUT BInputServerDevice;
class _IMPEXP_INPUT BInputServerFilter;
class _IMPEXP_INPUT BInputServerMethod;
#else /* __cplusplus */
/*
//typedef struct _IMPEXP_GL GLUnurbs GLUnurbs;
//typedef struct _IMPEXP_GL GLUquadric GLUquadric;
//typedef struct _IMPEXP_GL GLUtesselator GLUtesselator;
//typedef struct _IMPEXP_GL GLUnurbs GLUnurbsObj;
//typedef struct _IMPEXP_GL GLUquadric GLUquadricObj;
//typedef struct _IMPEXP_GL GLUtesselator GLUtesselatorObj;
//typedef struct _IMPEXP_GL GLUtesselator GLUtriangulatorObj;
*/
#endif /* __cplusplus */
#endif /* _BE_BUILD_H */
+4
View File
@@ -10,6 +10,10 @@
#include <Messenger.h>
struct app_info;
class BApplication {
public:
BApplication(const char* signature);
+1
View File
@@ -45,6 +45,7 @@
class BLooper;
class BMessageFilter;
class BMessage;
class BMessenger;
class BList;
class _ObserverList;
+4 -1
View File
@@ -22,7 +22,7 @@
// File Name: Roster.h
// Author: Ingo Weinhold ([email protected])
// Description: BRoster class lets you launch apps and keeps
// track of apps that are running.
// track of apps that are running.
// Global be_roster represents the default BRoster.
// app_info structure provides info for a running app.
//------------------------------------------------------------------------------
@@ -69,7 +69,10 @@ enum {
B_SOME_APP_ACTIVATED = 'BRAW',
};
class BFile;
class BList;
class BMimeType;
class BNodeInfo;
// BRoster
class BRoster {
+5 -4
View File
@@ -1,5 +1,5 @@
//----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//---------------------------------------------------------------------
/*!
@@ -19,17 +19,18 @@
namespace OpenBeOS {
#endif
class BFile;
class BSymLink;
/*!
\class BDirectory
\brief A directory in the filesystem
Provides an interface for manipulating directories and their contents.
\author <a href='mailto:[email protected]'>Ingo Weinhold</a>
\author <a href="mailto:[email protected]">Tyler Dauwalder</a>
\version 0.0.0
*/
class BDirectory : public BNode, public BEntryList {
@@ -90,7 +91,7 @@ private:
int get_fd() const;
status_t set_dir_fd(int fd);
private:
uint32 _reservedData[7];
int fDirFd;
+5 -2
View File
@@ -9,6 +9,9 @@
#include <Statable.h>
class BDirectory;
class BEntry;
class BString;
struct entry_ref;
//! Reference structure to a particular vnode on a particular device
/*! <b>node_ref</b> - A node reference.
@@ -18,7 +21,7 @@ class BDirectory;
@version 0.0.0
*/
struct node_ref {
node_ref();
node_ref();
node_ref(const node_ref &ref);
bool operator==(const node_ref &ref) const;
@@ -95,7 +98,7 @@ private:
friend class BDirectory;
friend class BSymLink;
virtual void _RudeNode1();
virtual void _RudeNode1();
virtual void _RudeNode2();
virtual void _RudeNode3();
virtual void _RudeNode4();
+5 -3
View File
@@ -1,5 +1,5 @@
//----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// File Name: SymLink.h
@@ -19,14 +19,16 @@
namespace OpenBeOS {
#endif
class BPath;
/*!
\class BSymLink
\brief A symbolic link in the filesystem
Provides an interface for manipulating symbolic links.
\author <a href='mailto:[email protected]'>Ingo Weinhold</a>
\version 0.0.0
*/
class BSymLink : public BNode {
+105 -120
View File
@@ -1,24 +1,19 @@
// Modified BeOS header. Just here to be able to compile and test BResources.
// To be replaced by the OpenBeOS version to be provided by the IK Team.
#ifndef _sk_byte_order_h_
#define _sk_byte_order_h_
/*
* Copyright 2007, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _BYTEORDER_H
#define _BYTEORDER_H
#include <BeBuild.h>
#include <SupportDefs.h>
#include <TypeConstants.h> /* For convenience */
#include <endian.h>
#include <SupportDefs.h>
#include <TypeConstants.h>
/* for convenience */
#ifdef __cplusplus
extern "C" {
#endif
/*----------------------------------------------------------------------*/
/*------- Swap-direction constants, and swapping functions -------------*/
/* swap directions */
typedef enum {
B_SWAP_HOST_TO_LENDIAN,
B_SWAP_HOST_TO_BENDIAN,
@@ -27,121 +22,111 @@ typedef enum {
B_SWAP_ALWAYS
} swap_action;
extern status_t swap_data(type_code type, void *data, size_t length,
swap_action action);
extern bool is_type_swapped(type_code type);
/*-----------------------------------------------------------------------*/
/*----- Private implementations -----------------------------------------*/
extern double __swap_double(double arg);
extern float __swap_float(float arg);
extern uint64 __swap_int64(uint64 uarg);
extern uint32 __swap_int32(uint32 uarg);
extern uint16 __swap_int16(uint16 uarg);
/*-------------------------------------------------------------*/
/* BSD/networking macros */
#ifndef htonl
# define htonl(x) B_HOST_TO_BENDIAN_INT32(x)
# define ntohl(x) B_BENDIAN_TO_HOST_INT32(x)
# define htons(x) B_HOST_TO_BENDIAN_INT16(x)
# define ntohs(x) B_BENDIAN_TO_HOST_INT16(x)
#endif
/*-------------------------------------------------------------*/
/*--------- Host is Little --------------------------------------*/
#if BYTE_ORDER == __LITTLE_ENDIAN
#define B_HOST_IS_LENDIAN 1
#define B_HOST_IS_BENDIAN 0
/*--------- Host Native -> Little --------------------*/
#define B_HOST_TO_LENDIAN_DOUBLE(arg) (double)(arg)
#define B_HOST_TO_LENDIAN_FLOAT(arg) (float)(arg)
#define B_HOST_TO_LENDIAN_INT64(arg) (uint64)(arg)
#define B_HOST_TO_LENDIAN_INT32(arg) (uint32)(arg)
#define B_HOST_TO_LENDIAN_INT16(arg) (uint16)(arg)
/*--------- Host Native -> Big ------------------------*/
#define B_HOST_TO_BENDIAN_DOUBLE(arg) __swap_double(arg)
#define B_HOST_TO_BENDIAN_FLOAT(arg) __swap_float(arg)
#define B_HOST_TO_BENDIAN_INT64(arg) __swap_int64(arg)
#define B_HOST_TO_BENDIAN_INT32(arg) __swap_int32(arg)
#define B_HOST_TO_BENDIAN_INT16(arg) __swap_int16(arg)
/*--------- Little -> Host Native ---------------------*/
#define B_LENDIAN_TO_HOST_DOUBLE(arg) (double)(arg)
#define B_LENDIAN_TO_HOST_FLOAT(arg) (float)(arg)
#define B_LENDIAN_TO_HOST_INT64(arg) (uint64)(arg)
#define B_LENDIAN_TO_HOST_INT32(arg) (uint32)(arg)
#define B_LENDIAN_TO_HOST_INT16(arg) (uint16)(arg)
/*--------- Big -> Host Native ------------------------*/
#define B_BENDIAN_TO_HOST_DOUBLE(arg) __swap_double(arg)
#define B_BENDIAN_TO_HOST_FLOAT(arg) __swap_float(arg)
#define B_BENDIAN_TO_HOST_INT64(arg) __swap_int64(arg)
#define B_BENDIAN_TO_HOST_INT32(arg) __swap_int32(arg)
#define B_BENDIAN_TO_HOST_INT16(arg) __swap_int16(arg)
#else /* __LITTLE_ENDIAN */
/*-------------------------------------------------------------*/
/*--------- Host is Big --------------------------------------*/
#define B_HOST_IS_LENDIAN 0
#define B_HOST_IS_BENDIAN 1
/*--------- Host Native -> Little -------------------*/
#define B_HOST_TO_LENDIAN_DOUBLE(arg) __swap_double(arg)
#define B_HOST_TO_LENDIAN_FLOAT(arg) __swap_float(arg)
#define B_HOST_TO_LENDIAN_INT64(arg) __swap_int64(arg)
#define B_HOST_TO_LENDIAN_INT32(arg) __swap_int32(arg)
#define B_HOST_TO_LENDIAN_INT16(arg) __swap_int16(arg)
/*--------- Host Native -> Big ------------------------*/
#define B_HOST_TO_BENDIAN_DOUBLE(arg) (double)(arg)
#define B_HOST_TO_BENDIAN_FLOAT(arg) (float)(arg)
#define B_HOST_TO_BENDIAN_INT64(arg) (uint64)(arg)
#define B_HOST_TO_BENDIAN_INT32(arg) (uint32)(arg)
#define B_HOST_TO_BENDIAN_INT16(arg) (uint16)(arg)
/*--------- Little -> Host Native ----------------------*/
#define B_LENDIAN_TO_HOST_DOUBLE(arg) __swap_double(arg)
#define B_LENDIAN_TO_HOST_FLOAT(arg) __swap_float(arg)
#define B_LENDIAN_TO_HOST_INT64(arg) __swap_int64(arg)
#define B_LENDIAN_TO_HOST_INT32(arg) __swap_int32(arg)
#define B_LENDIAN_TO_HOST_INT16(arg) __swap_int16(arg)
/*--------- Big -> Host Native -------------------------*/
#define B_BENDIAN_TO_HOST_DOUBLE(arg) (double)(arg)
#define B_BENDIAN_TO_HOST_FLOAT(arg) (float)(arg)
#define B_BENDIAN_TO_HOST_INT64(arg) (uint64)(arg)
#define B_BENDIAN_TO_HOST_INT32(arg) (uint32)(arg)
#define B_BENDIAN_TO_HOST_INT16(arg) (uint16)(arg)
#endif /* __LITTLE_ENDIAN */
/*-------------------------------------------------------------*/
/*--------- Just-do-it macros ---------------------------------*/
/* always swap macros */
#define B_SWAP_DOUBLE(arg) __swap_double(arg)
#define B_SWAP_FLOAT(arg) __swap_float(arg)
#define B_SWAP_INT64(arg) __swap_int64(arg)
#define B_SWAP_INT32(arg) __swap_int32(arg)
#define B_SWAP_INT16(arg) __swap_int16(arg)
#if BYTE_ORDER == __LITTLE_ENDIAN
/* Host is little endian */
/*-------------------------------------------------------------*/
/*---------Berkeley macros -----------------------------------*/
#ifndef htonl /* avoid collision with <netinet/in.h> */
#define htonl(x) B_HOST_TO_BENDIAN_INT32(x)
#define ntohl(x) B_BENDIAN_TO_HOST_INT32(x)
#define htons(x) B_HOST_TO_BENDIAN_INT16(x)
#define ntohs(x) B_BENDIAN_TO_HOST_INT16(x)
#endif
#define B_HOST_IS_LENDIAN 1
#define B_HOST_IS_BENDIAN 0
/* Host native to little endian */
#define B_HOST_TO_LENDIAN_DOUBLE(arg) (double)(arg)
#define B_HOST_TO_LENDIAN_FLOAT(arg) (float)(arg)
#define B_HOST_TO_LENDIAN_INT64(arg) (uint64)(arg)
#define B_HOST_TO_LENDIAN_INT32(arg) (uint32)(arg)
#define B_HOST_TO_LENDIAN_INT16(arg) (uint16)(arg)
/* Little endian to host native */
#define B_LENDIAN_TO_HOST_DOUBLE(arg) (double)(arg)
#define B_LENDIAN_TO_HOST_FLOAT(arg) (float)(arg)
#define B_LENDIAN_TO_HOST_INT64(arg) (uint64)(arg)
#define B_LENDIAN_TO_HOST_INT32(arg) (uint32)(arg)
#define B_LENDIAN_TO_HOST_INT16(arg) (uint16)(arg)
/* Host native to big endian */
#define B_HOST_TO_BENDIAN_DOUBLE(arg) __swap_double(arg)
#define B_HOST_TO_BENDIAN_FLOAT(arg) __swap_float(arg)
#define B_HOST_TO_BENDIAN_INT64(arg) __swap_int64(arg)
#define B_HOST_TO_BENDIAN_INT32(arg) __swap_int32(arg)
#define B_HOST_TO_BENDIAN_INT16(arg) __swap_int16(arg)
/* Big endian to host native */
#define B_BENDIAN_TO_HOST_DOUBLE(arg) __swap_double(arg)
#define B_BENDIAN_TO_HOST_FLOAT(arg) __swap_float(arg)
#define B_BENDIAN_TO_HOST_INT64(arg) __swap_int64(arg)
#define B_BENDIAN_TO_HOST_INT32(arg) __swap_int32(arg)
#define B_BENDIAN_TO_HOST_INT16(arg) __swap_int16(arg)
#else /* BYTE_ORDER */
/* Host is big endian */
#define B_HOST_IS_LENDIAN 0
#define B_HOST_IS_BENDIAN 1
/* Host native to little endian */
#define B_HOST_TO_LENDIAN_DOUBLE(arg) __swap_double(arg)
#define B_HOST_TO_LENDIAN_FLOAT(arg) __swap_float(arg)
#define B_HOST_TO_LENDIAN_INT64(arg) __swap_int64(arg)
#define B_HOST_TO_LENDIAN_INT32(arg) __swap_int32(arg)
#define B_HOST_TO_LENDIAN_INT16(arg) __swap_int16(arg)
/* Little endian to host native */
#define B_LENDIAN_TO_HOST_DOUBLE(arg) __swap_double(arg)
#define B_LENDIAN_TO_HOST_FLOAT(arg) __swap_float(arg)
#define B_LENDIAN_TO_HOST_INT64(arg) __swap_int64(arg)
#define B_LENDIAN_TO_HOST_INT32(arg) __swap_int32(arg)
#define B_LENDIAN_TO_HOST_INT16(arg) __swap_int16(arg)
/* Host native to big endian */
#define B_HOST_TO_BENDIAN_DOUBLE(arg) (double)(arg)
#define B_HOST_TO_BENDIAN_FLOAT(arg) (float)(arg)
#define B_HOST_TO_BENDIAN_INT64(arg) (uint64)(arg)
#define B_HOST_TO_BENDIAN_INT32(arg) (uint32)(arg)
#define B_HOST_TO_BENDIAN_INT16(arg) (uint16)(arg)
/* Big endian to host native */
#define B_BENDIAN_TO_HOST_DOUBLE(arg) (double)(arg)
#define B_BENDIAN_TO_HOST_FLOAT(arg) (float)(arg)
#define B_BENDIAN_TO_HOST_INT64(arg) (uint64)(arg)
#define B_BENDIAN_TO_HOST_INT32(arg) (uint32)(arg)
#define B_BENDIAN_TO_HOST_INT16(arg) (uint16)(arg)
#endif /* BYTE_ORDER */
#ifdef __cplusplus
extern "C" {
#endif
extern status_t swap_data(type_code type, void *data, size_t length,
swap_action action);
extern bool is_type_swapped(type_code type);
/* Private implementations */
extern double __swap_double(double arg);
extern float __swap_float(float arg);
extern uint64 __swap_int64(uint64 arg);
extern uint32 __swap_int32(uint32 arg);
extern uint16 __swap_int16(uint16 arg);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif
/*-------------------------------------------------------------*/
/*-------------------------------------------------------------*/
#endif // _sk_byte_order_h_
#endif /* _BYTEORDER_H */
+115 -41
View File
@@ -1,5 +1,5 @@
/*
* Copyright 2004-2007, Haiku, Inc. All Rights Reserved.
* Copyright 2004-2009, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*
* Author:
@@ -9,39 +9,34 @@
#define _SUPPORT_DEFS_H
/* this must be located before the include of sys/types.h */
#if !defined(_SYS_TYPES_H) && !defined(_SYS_TYPES_H_)
typedef unsigned long ulong;
typedef unsigned int uint;
typedef unsigned short ushort;
#endif
#include <config/types.h>
#include <BeBuild.h>
#include <Errors.h>
#include <inttypes.h>
#include <sys/types.h>
// Shorthand type formats
typedef signed char int8;
typedef unsigned char uint8;
typedef volatile signed char vint8;
typedef volatile unsigned char vuint8;
/* fixed-size integer types */
typedef __haiku_int8 int8;
typedef __haiku_uint8 uint8;
typedef __haiku_int16 int16;
typedef __haiku_uint16 uint16;
typedef __haiku_int32 int32;
typedef __haiku_uint32 uint32;
typedef __haiku_int64 int64;
typedef __haiku_uint64 uint64;
typedef short int16;
typedef unsigned short uint16;
typedef volatile short vint16;
typedef volatile unsigned short vuint16;
typedef long int32;
typedef unsigned long uint32;
typedef volatile long vint32;
typedef volatile unsigned long vuint32;
typedef long long int64;
typedef unsigned long long uint64;
typedef volatile long long vint64;
typedef volatile unsigned long long vuint64;
/* shorthand types */
typedef volatile int8 vint8;
typedef volatile uint8 vuint8;
typedef volatile int16 vint16;
typedef volatile uint16 vuint16;
typedef volatile int32 vint32;
typedef volatile uint32 vuint32;
typedef volatile int64 vint64;
typedef volatile uint64 vuint64;
typedef volatile long vlong;
typedef volatile int vint;
@@ -56,21 +51,100 @@ typedef volatile unsigned char vuchar;
typedef unsigned char uchar;
typedef unsigned short unichar;
// Descriptive formats
/* descriptive types */
typedef int32 status_t;
typedef int64 bigtime_t;
typedef uint32 type_code;
typedef uint32 perform_code;
// Empty string ("")
/* printf()/scanf() format strings for [u]int* types */
#define FSSH_B_PRId8 PRId8
#define FSSH_B_PRIi8 PRIi8
#define FSSH_B_PRId16 PRId16
#define FSSH_B_PRIi16 PRIi16
#define FSSH_B_PRId32 PRId32
#define FSSH_B_PRIi32 PRIi32
#define FSSH_B_PRId64 PRId64
#define FSSH_B_PRIi64 PRIi64
#define FSSH_B_PRIu8 PRIu8
#define FSSH_B_PRIo8 PRIo8
#define FSSH_B_PRIx8 PRIx8
#define FSSH_B_PRIX8 PRIX8
#define FSSH_B_PRIu16 PRIu16
#define FSSH_B_PRIo16 PRIo16
#define FSSH_B_PRIx16 PRIx16
#define FSSH_B_PRIX16 PRIX16
#define FSSH_B_PRIu32 PRIu32
#define FSSH_B_PRIo32 PRIo32
#define FSSH_B_PRIx32 PRIx32
#define FSSH_B_PRIX32 PRIX32
#define FSSH_B_PRIu64 PRIu64
#define FSSH_B_PRIo64 PRIo64
#define FSSH_B_PRIx64 PRIx64
#define FSSH_B_PRIX64 PRIX64
#define FSSH_B_SCNd8 SCNd8
#define FSSH_B_SCNi8 SCNi8
#define FSSH_B_SCNd16 SCNd16
#define FSSH_B_SCNi16 SCNi16
#define FSSH_B_SCNd32 SCNd32
#define FSSH_B_SCNi32 SCNi32
#define FSSH_B_SCNd64 SCNd64
#define FSSH_B_SCNi64 SCNi64
#define FSSH_B_SCNu8 SCNu8
#define FSSH_B_SCNo8 SCNo8
#define FSSH_B_SCNx8 SCNx8
#define FSSH_B_SCNu16 SCNu16
#define FSSH_B_SCNu16 SCNu16
#define FSSH_B_SCNx16 SCNx16
#define FSSH_B_SCNu32 SCNu32
#define FSSH_B_SCNo32 SCNo32
#define FSSH_B_SCNx32 SCNx32
#define FSSH_B_SCNu64 SCNu64
#define FSSH_B_SCNo64 SCNo64
#define FSSH_B_SCNx64 SCNx64
/* printf() format strings for some standard types */
/* size_t */
#define FSSH_B_PRIuSIZE FSSH_B_PRIu32
#define FSSH_B_PRIoSIZE FSSH_B_PRIo32
#define FSSH_B_PRIxSIZE FSSH_B_PRIx32
#define FSSH_B_PRIXSIZE FSSH_B_PRIX32
/* ssize_t */
#define FSSH_B_PRIdSSIZE FSSH_B_PRId32
#define FSSH_B_PRIiSSIZE FSSH_B_PRIi32
/* addr_t */
#ifdef HAIKU_HOST_PLATFORM_64_BIT
# define FSSH_B_PRIuADDR FSSH_B_PRIu64
# define FSSH_B_PRIoADDR FSSH_B_PRIo64
# define FSSH_B_PRIxADDR FSSH_B_PRIx64
# define FSSH_B_PRIXADDR FSSH_B_PRIX64
#else
# define FSSH_B_PRIuADDR FSSH_B_PRIu32
# define FSSH_B_PRIoADDR FSSH_B_PRIo32
# define FSSH_B_PRIxADDR FSSH_B_PRIx32
# define FSSH_B_PRIXADDR FSSH_B_PRIX32
#endif
/* off_t */
#define FSSH_B_PRIdOFF FSSH_B_PRId64
#define FSSH_B_PRIiOFF FSSH_B_PRIi64
/* dev_t */
#define FSSH_B_PRIdDEV FSSH_B_PRId32
#define FSSH_B_PRIiDEV FSSH_B_PRIi32
/* ino_t */
#define FSSH_B_PRIdINO FSSH_B_PRId64
#define FSSH_B_PRIiINO FSSH_B_PRIi64
/* Empty string ("") */
#ifdef __cplusplus
extern const char *B_EMPTY_STRING;
#endif
// min and max comparisons
/* min and max comparisons */
#ifndef __cplusplus
# ifndef min
# define min(a,b) ((a)>(b)?(b):(a))
@@ -78,17 +152,17 @@ extern const char *B_EMPTY_STRING;
# ifndef max
# define max(a,b) ((a)>(b)?(a):(b))
# endif
#endif
#endif
// min() and max() won't work in C++
/* min() and max() are functions in C++ */
#define min_c(a,b) ((a)>(b)?(b):(a))
#define max_c(a,b) ((a)>(b)?(a):(b))
// Grandfathering
/* Grandfathering */
#ifndef __cplusplus
# include <stdbool.h>
#endif
#endif
#ifndef NULL
# define NULL (0)
@@ -99,31 +173,31 @@ extern const char *B_EMPTY_STRING;
extern "C" {
#endif
// Atomic functions; previous value is returned
/* Atomic functions; previous value is returned */
extern int32 atomic_set(vint32 *value, int32 newValue);
extern int32 atomic_test_and_set(vint32 *value, int32 newValue, int32 testAgainst);
extern int32 atomic_add(vint32 *value, int32 addValue);
extern int32 atomic_and(vint32 *value, int32 andValue);
extern int32 atomic_or(vint32 *value, int32 orValue);
extern int32 atomic_or(vint32 *value, int32 orValue);
extern int32 atomic_get(vint32 *value);
extern int64 atomic_set64(vint64 *value, int64 newValue);
extern int64 atomic_test_and_set64(vint64 *value, int64 newValue, int64 testAgainst);
extern int64 atomic_add64(vint64 *value, int64 addValue);
extern int64 atomic_and64(vint64 *value, int64 andValue);
extern int64 atomic_or64(vint64 *value, int64 orValue);
extern int64 atomic_or64(vint64 *value, int64 orValue);
extern int64 atomic_get64(vint64 *value);
// Other stuff
/* Other stuff */
extern void* get_stack_frame(void);
#ifdef __cplusplus
}
#endif
// Obsolete or discouraged API
/* Obsolete or discouraged API */
// use 'true' and 'false'
/* use 'true' and 'false' */
#ifndef FALSE
# define FALSE 0
#endif
@@ -131,4 +205,4 @@ extern void* get_stack_frame(void);
# define TRUE 1
#endif
#endif // _SUPPORT_DEFS_H
#endif /* _SUPPORT_DEFS_H */