/* * File: ref.h * ----------- * This interface exports several simple functions for allocating * pointers to the atomic types. */ /*************************************************************************/ /* Stanford Portable Library */ /* Copyright (C) 2013 by Eric Roberts */ /* */ /* 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 3 of the License, 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, see . */ /*************************************************************************/ #ifndef _ref_h #define _ref_h #include "cslib.h" /* * Function: newRefInt * Usage: ref = newRefInt(value); * ------------------------------ * Allocates a ref pointing to the specified int value. */ void *newRefInt(int value); /* * Function: newRefShort * Usage: ref = newRefShort(value); * -------------------------------- * Allocates a ref pointing to the specified short value. */ void *newRefShort(short value); /* * Function: newRefLong * Usage: ref = newRefLong(value); * ------------------------------- * Allocates a ref pointing to the specified long value. */ void *newRefLong(long value); /* * Function: newRefFloat * Usage: ref = newRefFloat(value); * -------------------------------- * Allocates a ref pointing to the specified float value. */ void *newRefFloat(float value); /* * Function: newRefDouble * Usage: ref = newRefDouble(value); * --------------------------------- * Allocates a ref pointing to the specified double value. */ void *newRefDouble(double value); /* * Function: newRefChar * Usage: ref = newRefChar(value); * ------------------------------- * Allocates a ref pointing to the specified char value. */ void *newRefChar(char value); /* * Function: newRefBool * Usage: ref = newRefBool(value); * ------------------------------- * Allocates a ref pointing to the specified bool value. */ void *newRefBool(bool value); /* * Function: newRefUnsigned * Usage: ref = newRefUnsigned(value); * ----------------------------------- * Allocates a ref pointing to the specified unsigned value. */ void *newRefUnsigned(unsigned value); /* * Function: newRefUnsignedShort * Usage: ref = newRefUnsignedShort(value); * ---------------------------------------- * Allocates a ref pointing to the specified unsigned short value. */ void *newRefUnsignedShort(unsigned short value); /* * Function: newRefUnsignedLong * Usage: ref = newRefUnsignedLong(value); * --------------------------------------- * Allocates a ref pointing to the specified unsigned long value. */ void *newRefUnsignedLong(unsigned long value); /* * Function: newRefUnsignedChar * Usage: ref = newRefUnsignedChar(value); * --------------------------------------- * Allocates a ref pointing to the specified unsigned char value. */ void *newRefUnsignedChar(unsigned char value); /* * Part 2 -- Functions to dereference generic pointers * --------------------------------------------------- * These functions take a generic pointer of type void * and return * the value to which it points, which must be of the type indicated * by the function name. For example, refToInt(ref) interprets ref * as a pointer to an int and returns the integer at that address. */ /* * Function: refToInt * Usage: i = refToInt(ref); * ------------------------- * Returns the int to which this reference points. */ int refToInt(void *ref); /* * Function: refToShort * Usage: s = refToShort(ref); * --------------------------- * Returns the short to which this reference points. */ short refToShort(void *ref); /* * Function: refToLong * Usage: l = refToLong(ref); * -------------------------- * Returns the long to which this reference points. */ long refToLong(void *ref); /* * Function: refToFloat * Usage: f = refToFloat(ref); * --------------------------- * Returns the float to which this reference points. */ float refToFloat(void *ref); /* * Function: refToDouble * Usage: d = refToDouble(ref); * ---------------------------- * Returns the double to which this reference points. */ double refToDouble(void *ref); /* * Function: refToChar * Usage: c = refToChar(ref); * -------------------------- * Returns the char to which this reference points. */ char refToChar(void *ref); /* * Function: refToBool * Usage: b = refToBool(ref); * -------------------------- * Returns the bool to which this reference points. */ bool refToBool(void *ref); /* * Function: refToUnsigned * Usage: u = refToUnsigned(ref); * ------------------------------ * Returns the unsigned to which this reference points. */ unsigned refToUnsigned(void *ref); /* * Function: refToUnsignedShort * Usage: us = refToUnsignedShort(ref); * ------------------------------------ * Returns the unsigned short to which this reference points. */ unsigned short refToUnsignedShort(void *ref); /* * Function: refToUnsignedLong * Usage: ul = refToUnsignedLong(ref); * ----------------------------------- * Returns the unsigned long to which this reference points. */ unsigned long refToUnsignedLong(void *ref); /* * Function: refToUnsignedChar * Usage: uc = refToUnsignedChar(ref); * ----------------------------------- * Returns the unsigned char to which this reference points. */ unsigned char refToUnsignedChar(void *ref); #endif