ftp.nice.ch/pub/next/connectivity/news/Alexandra-0.9.s.tar.gz#/alex/Message.subproj/Utilities.h

This is Utilities.h in view mode; [Download] [Up]

//---------------------------------------------------------------------------------------
//	Utilities.h created by erik on Mon 20-Jan-1997
//	This code is part of the Alexandra Newsreader Project. For copyright details see
//	GNU public license version 2 or above. No warranties implied. Use at own risk.
//	More information can be found at <http://www.object-factory.com/Alexandra>.
//	@(#)$Id: Utilities.h,v 1.5 1998/05/20 11:38:44 erik Exp $
//---------------------------------------------------------------------------------------

#if NeXT && NS_TARGET_MAJOR < 4
#	import <foundation/foundation.h>
#	import <ansi/ansi.h>
#	import <appkit/nextstd.h>
#	import "LFCompatibility.h"
#	define LITTLE_FOUNDATION
#	define LOG(T)	NXLogError([(T) cString])
#else
#	import <Foundation/Foundation.h>
#	ifdef OF_COMMON
#		import "oflog.h"
#		define LOG(T)	OFLog(LOG_INFO, self, (T))
#	else
#		define LOG(T)	NSLog((T))
#	endif
#endif


//---------------------------------------------------------------------------------------
//	Constants
//---------------------------------------------------------------------------------------

#define LF '\x0A'
#define CR '\x0D'
#define TAB '\x09'
#define SPACE '\x20'
#define EQUALS '\x3D'
#define QMARK '\x3F'
#define UNDERSCORE '\x5F'
#define COLON ':'

#define DOUBLEQUOTE @"\""


//---------------------------------------------------------------------------------------
//	Macros
//---------------------------------------------------------------------------------------

static __inline__ unsigned int umin(unsigned int a, unsigned int b)
{
    return (a < b) ? a : b;
}


static __inline__ unsigned int udivroundup(unsigned int a, unsigned int b)
{
    return (a / b) + ((a % b > 0) ? 1 : 0);
}


static __inline__ BOOL iscrlf(char c)
{
    return (c == CR) || (c == LF);
}

static __inline__ BOOL iswhitespace(char c)
{
    return (c == SPACE) || (c == TAB);
}


static __inline__ const char *skipnewline(const char *ptr, const char *limit)
{
    if(*ptr == CR)
        ptr += 1;
    if((ptr < limit) && (*ptr == LF))
        ptr += 1;
    return ptr;
}


static __inline__ const char *skiptonewline(const char *ptr, const char *limit)
{
    while(iscrlf(*ptr) == NO)
        {
        ptr += 1;
        if(ptr == limit)
            return NULL;
        }
    return ptr;
}


static __inline__ const char *skipspace(const char *ptr, const char *limit)
{
    while(iswhitespace(*ptr) == YES)
        {
        ptr += 1;
        if(ptr == limit)
            return NULL;
        }
    return ptr;
}


//---------------------------------------------------------------------------------------
//	DEBUGGING
//---------------------------------------------------------------------------------------

#ifdef METHOD_TRACE
#define TRACE_IN	fprintf(stderr, "-> %s 0x%p %s\n", object_getClassName(isa), (void *)self, sel_getName(_cmd));
#else
#define TRACE_IN
#endif

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.