Annotation of objc/Test/msgTest/ret1.m, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * "Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
        !             7:  * Reserved.  This file contains Original Code and/or Modifications of
        !             8:  * Original Code as defined in and that are subject to the Apple Public
        !             9:  * Source License Version 1.0 (the 'License').  You may not use this file
        !            10:  * except in compliance with the License.  Please obtain a copy of the
        !            11:  * License at http://www.apple.com/publicsource and read it before using
        !            12:  * this file.
        !            13:  * 
        !            14:  * The Original Code and all software distributed under the License are
        !            15:  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            19:  * License for the specific language governing rights and limitations
        !            20:  * under the License."
        !            21:  * 
        !            22:  * @APPLE_LICENSE_HEADER_END@
        !            23:  */
        !            24: // A class to test all possible return types
        !            25: 
        !            26: #include <objc/objc.h>
        !            27: #include "rettest.h"
        !            28: 
        !            29: #import "ret1.h"
        !            30: 
        !            31: @implementation MsgTest : Object 
        !            32: 
        !            33: #include <stdio.h>
        !            34: 
        !            35: // Exit handler
        !            36: + retTest$exitCleanup:arg/*;*/, int estat {
        !            37:        extern myCleanup();
        !            38:        myCleanup(estat, arg);
        !            39: }
        !            40: // enable trap catching and install an exit handler
        !            41: + initialize {
        !            42:        extern (*_onExit)();
        !            43: 
        !            44:        if (self == [MsgTest class]) {
        !            45:                // enable trap catching
        !            46:                //settrap();
        !            47: 
        !            48:                // arrange to get sent a message on exit.
        !            49:                //(*_onExit)(self,@selector(retTest$exitCleanup:),(id)0);
        !            50:        }
        !            51:        return self;
        !            52: }
        !            53: 
        !            54:        // scalar types
        !            55: #define THIS_CLASS [MsgTest class]
        !            56: makeMethod(char,99,;)
        !            57: makeMethod(uchar_t, 199,;)
        !            58: makeMethod(short, 1999,;)
        !            59: makeMethod(ushort_t, 19999,;)
        !            60: makeMethod(int, 2999,;)
        !            61: makeMethod(unsigned, 29999,;)
        !            62: makeMethod(long, 399999,;)
        !            63: makeMethod(ulong_t, 3999999,;)
        !            64: makeMethod(float, 3.1416,;)
        !            65: makeMethod(double, 2.7123456789876,;)
        !            66: makeMethod(id,self,;)
        !            67: makeMethod(STR,junk,char* junk = "hello there")
        !            68: 
        !            69: 
        !            70:        //
        !            71:        // structure-returning methods
        !            72:        //
        !            73: static struct S_BITS_16 extStructBits16 = { 101, 102 };
        !            74: static struct S_BITS_32 extStructBits32 = { 103, 104, 105, 106 };
        !            75: static struct S_BITS_64 extStructBits64 =
        !            76:        { 110, 111, 112, 113, 114, 115, 116, 117 };
        !            77: static struct S_BITS_BIG extStructBitsBig ={
        !            78:        0,1,2,3,4,5,6,7,
        !            79:        8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23,
        !            80:        24,25,26,27,28,29,30,31,
        !            81:        32,33,34,35,36,37,38,39,
        !            82:        40,41,42,43,44,45,46,47,
        !            83:        48,49,50,51,52,53,54,55,
        !            84:        56,57,58,59,60,61,62,63,
        !            85: };
        !            86: 
        !            87: makeMethod(S_BITS_16_t,junk,S_BITS_16_t junk; junk = extStructBits16)
        !            88: makeMethod(S_BITS_32_t,junk,S_BITS_32_t junk; junk = extStructBits32)
        !            89: makeMethod(S_BITS_64_t,junk,S_BITS_64_t junk; junk = extStructBits64)
        !            90: makeMethod(S_BITS_BIG_t,junk,S_BITS_BIG_t junk; junk = extStructBitsBig)
        !            91: 
        !            92:        //
        !            93:        // union-returning methods
        !            94:        //
        !            95: 
        !            96: makeMethod(U_BITS_16_t,junk,U_BITS_16_t junk; junk.mem = extStructBits16)
        !            97: makeMethod(U_BITS_32_t,junk,U_BITS_32_t junk; junk.mem = extStructBits32)
        !            98: 
        !            99: #if 1
        !           100: makeMethod(U_BITS_64_t,junk,U_BITS_64_t junk; junk.mem = extStructBits64)
        !           101: #else
        !           102: // deliberately make bad method to see if diagnostics work
        !           103: - (U_BITS_64_t) ret_U_BITS_64_t:(U_BITS_64_t*) retRef {
        !           104:        U_BITS_64_t junk;
        !           105:        junk.mem = extStructBits64;
        !           106:        // force a fault
        !           107:        *(int*)0 = *(int*)0;
        !           108:        return junk;
        !           109: }
        !           110: #endif
        !           111: 
        !           112: makeMethod(U_BITS_BIG_t,junk,U_BITS_BIG_t junk; junk.mem = extStructBitsBig)
        !           113: 
        !           114:        // Enum types
        !           115: 
        !           116: makeMethod(E_BITS_8_t,junk,E_BITS_8_t junk; junk = e8_two)
        !           117: makeMethod(E_BITS_16_t,junk,E_BITS_16_t junk; junk = e16_two)
        !           118: #ifdef INT_32
        !           119: makeMethod(E_BITS_32_t,junk,E_BITS_32_t junk; junk = e32_two)
        !           120: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.