00001 /** 00002 * vim: set ts=4 : 00003 * ============================================================================= 00004 * SourcePawn 00005 * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved. 00006 * ============================================================================= 00007 * 00008 * This program is free software; you can redistribute it and/or modify it under 00009 * the terms of the GNU General Public License, version 3.0, as published by the 00010 * Free Software Foundation. 00011 * 00012 * This program is distributed in the hope that it will be useful, but WITHOUT 00013 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00014 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 00015 * details. 00016 * 00017 * You should have received a copy of the GNU General Public License along with 00018 * this program. If not, see <http://www.gnu.org/licenses/>. 00019 * 00020 * As a special exception, AlliedModders LLC gives you permission to link the 00021 * code of this program (as well as its derivative works) to "Half-Life 2," the 00022 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software 00023 * by the Valve Corporation. You must obey the GNU General Public License in 00024 * all respects for all other code used. Additionally, AlliedModders LLC grants 00025 * this exception to all derivative works. AlliedModders LLC defines further 00026 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007), 00027 * or <http://www.sourcemod.net/license.php>. 00028 * 00029 * Version: $Id$ 00030 */ 00031 00032 #ifndef _INCLUDE_SOURCEPAWN_VM_TYPEUTIL_H_ 00033 #define _INCLUDE_SOURCEPAWN_VM_TYPEUTIL_H_ 00034 00035 /** 00036 * @file sp_typeutil.h 00037 * @brief Defines type utility functions. 00038 */ 00039 00040 #include "sp_vm_types.h" 00041 00042 /** 00043 * @brief Reinterpret-casts a float to a cell (requires -fno-strict-aliasing for GCC). 00044 * 00045 * @param val Float value. 00046 * @return Cell typed version. 00047 */ 00048 inline cell_t sp_ftoc(float val) 00049 { 00050 return *(cell_t *)&val; 00051 } 00052 00053 /** 00054 * @brief Reinterpret-casts a cell to a float (requires -fno-strict-aliasing for GCC). 00055 * 00056 * @param val Cell-packed float value. 00057 * @return Float typed version. 00058 */ 00059 inline float sp_ctof(cell_t val) 00060 { 00061 return *(float *)&val; 00062 } 00063 00064 #endif //_INCLUDE_SOURCEPAWN_VM_TYPEUTIL_H_ 00065
1.5.1