This is common.h in view mode; [Download] [Up]
/*********************************************************************** Common header code for Convert programs Copyright (C) 1993 David John Burrowes 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 the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. The author, David John Burrowes, can be reached at: davidjohn@kira.net.netcom.com David John Burrowes 1926 Ivy #10 San Mateo, CA 94403-1367 ***********************************************************************/ /* ==================================================================== This file declares several data types that varoious applications may wish to use. This is $Revision: 1.3 $ of this file It was last modified by $Author: death $ on $Date: 93/04/04 23:45:35 $ Note that this file was created while using the New Century Schoolbook Roman typeface. You may find that some things line up strangely if you don't use that family. $Log: common.h,v $ * Revision 1.3 93/04/04 23:45:35 death * Sun Apr 4 23:45:34 PDT 1993 * * Revision 1.2 93/01/10 15:09:00 death * Sun Jan 10 15:09:00 PST 1993 * * Revision 1.1 92/07/26 13:57:07 death * Initial revision * * Revision 1.1 92/02/09 18:41:40 death * Initial revision * ==================================================================== */ // // 92.11.08 djb Added NSmajor and NSMinor flags, since there don't seem to // be any in the NS headers (probably I'm not looking in the // right place). This isn't the right place for them, but... // #define NSmajor 3 #define NSminor 0 #define DoNS3DragNDrop 1 #import <objc/objc.h> // // Draft 1 of standard types. I can see this is a small step towards making everything an // object. But, we'll see how we like what we have. I'm a bit bothered by Cstring, for now, // but... // // Integer should be the largest available signed intergral number on the system. // It is capitalized and fully spelled to help distnguish from normal int's in C. // Naturally, PositiveInteger is it's unsigned counterpart. Note that PositiveInteger, // despite it's name, does include 0! =) // typedef long int Integer; typedef unsigned long int PositiveInteger; // // 92.06.21 djb added 'Real' type. // typedef double Real; // // Character is used to represent a letter, digit, or symbol on the local system. It makes no // pretenses at being able to deal with an ideographic, or potentially even a sylabic writing // system. In general, it should not be used as a number (C's char type is a signed thing, so // CString, below, does NOT refer to an array of Character. =( ) // typedef unsigned char Character; // // Cstring is a special case, since one just ends up using pointers to chars frequently. // roCString is a read only cstring. I could have made rocstring as char const *, but // it seemed more appropriate to make the name refer to read-only (constant) data, // rather than pointer. // How about fixedCString for those that are char const *?? // typedef char* CString; typedef const char* roCString; // // id is all well and good, but let's be a bit more general and readable. So, we define // Instance to be a reference to an object // NOTE: Seems I can't call it Object bcause there is already a class called Object (oops). // Naming it thus Instance. Since id/object/instance is the default type in Objective C, // one really won't need to use the name all that often. // typedef id Instance; // // Pointer is a reference to an untyped pointer. // typedef void* Pointer; // // Boolean is, of course, a type for storing true or false values. no others (undefined, etc) // typedef BOOL Boolean; // // GenericType is used to store any of the preceeding types. // typedef union { Integer integer; PositiveInteger positiveinteger; Character character; CString cstring; Instance instance; Pointer pointer; Boolean boolean; } GenericType; // // DataType is used to store any of the primary data types here, like GenericType, but // also to record which type is stored, and thus allow for some type checking by the // programmer. // typedef struct { GenericType data; Integer type; } DataType; // // Now, define some values that correspond to thse types... // // (Ahh, for C++'s ability to define constants...) // #define CARRIAGERETURN 0x0D #define LINEFEED 0x0A #define NEWLINE 0x0A #define TAB 0x09 //#define NULL 0x00 /* already defined, I believe */ #define ESCAPE 0x1B #define NullCharacter 0x00 // // Cstring definitions // #define NullCString ((CString) 0x00) #define EndOfCString ((char) 0x00) // // Object definitions // (nil is defined as part of Objective c. note the case! Nil is a nil Class structure). // #define NullInstance ((Instance) nil) // // Pointer definitions // #define NullPointer 0x00 // // Boolean definitions. // //#define YES /* Defined by Objective C. uncomment if this changes or this moves*/ //#define NO /* Defined by Objective C. uncomment if this changes or this moves*/ #define True YES #define False NO // // Define constants for use in the DataType struct // #define TYPE_NONE 0 #define TYPE_INTEGER 1 #define TYPE_POSITIVEINTEGER 2 #define TYPE_CHARACTER 3 #define TYPE_CSTRING 4 #define TYPE_INSTANCE 5 #define TYPE_POINTER 6 #define TYPE_BOOLEAN 7 // // Define some types. // These can all be considered as special cases of PositiveInteger, below. // 92.08.02 Added signed versions, for those cases where one needs specific sized // signed integers. // typedef unsigned char Byte; typedef char SignedByte; typedef unsigned char bits8; typedef char Signed8Bits; typedef unsigned short int bits16; typedef short int Signed16Bits; typedef unsigned int bits32; typedef int Signed32Bits; typedef Byte* ByteString; typedef const Byte* ConstByteString; typedef Integer ErrorCode; #define NullByteString ((ByteString) 0x00) // 92.05.25 djb Added a ConstCString. The name is misleading in that it suggests the // data, not the pointer, is constant. But, its what comes to mind first, andI'm using this // far and away more frequently than any other const construct... // typedef char const * ConstCString; // // Prototypes // Boolean EvenUnsignedNum (PositiveInteger); CString NewCString(PositiveInteger); void FreeCString(CString theString); ByteString NewByteString(PositiveInteger); void FreeByteString(ByteString theString); Pointer NewPointer(PositiveInteger length); void FreePointer(Pointer thePointer);
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.