|
00001 /* ///////////////////////////////////////////////////////////////////////// 00002 * File: pantheios/inserters/xp.hpp 00003 * 00004 * Purpose: Defines shorthand name for pantheios::pointer inserter 00005 * class for inserting pointers in hexadecimal format. 00006 * 00007 * Created: 23rd March 2010 00008 * Updated: 26th November 2010 00009 * 00010 * Home: http://www.pantheios.org/ 00011 * 00012 * Copyright (c) 2010, Matthew Wilson and Synesis Software 00013 * All rights reserved. 00014 * 00015 * Redistribution and use in source and binary forms, with or without 00016 * modification, are permitted provided that the following conditions are 00017 * met: 00018 * 00019 * - Redistributions of source code must retain the above copyright notice, 00020 * this list of conditions and the following disclaimer. 00021 * - Redistributions in binary form must reproduce the above copyright 00022 * notice, this list of conditions and the following disclaimer in the 00023 * documentation and/or other materials provided with the distribution. 00024 * - Neither the name(s) of Matthew Wilson and Synesis Software nor the 00025 * names of any contributors may be used to endorse or promote products 00026 * derived from this software without specific prior written permission. 00027 * 00028 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 00029 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 00030 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00031 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 00032 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00033 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00034 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00035 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00036 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00037 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00038 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00039 * 00040 * ////////////////////////////////////////////////////////////////////// */ 00041 00042 00049 #ifndef PANTHEIOS_INCL_PANTHEIOS_INSERTERS_HPP_XP 00050 #define PANTHEIOS_INCL_PANTHEIOS_INSERTERS_HPP_XP 00051 00052 /* ///////////////////////////////////////////////////////////////////////// 00053 * Version information 00054 */ 00055 00056 #ifndef PANTHEIOS_DOCUMENTATION_SKIP_SECTION 00057 # define PANTHEIOS_VER_PANTHEIOS_INSERTERS_HPP_XP_MAJOR 1 00058 # define PANTHEIOS_VER_PANTHEIOS_INSERTERS_HPP_XP_MINOR 1 00059 # define PANTHEIOS_VER_PANTHEIOS_INSERTERS_HPP_XP_REVISION 1 00060 # define PANTHEIOS_VER_PANTHEIOS_INSERTERS_HPP_XP_EDIT 4 00061 #endif /* !PANTHEIOS_DOCUMENTATION_SKIP_SECTION */ 00062 00063 /* ///////////////////////////////////////////////////////////////////////// 00064 * Includes 00065 */ 00066 00067 #ifndef PANTHEIOS_INCL_PANTHEIOS_H_PANTHEIOS 00068 # include <pantheios/pantheios.h> 00069 #endif /* !PANTHEIOS_INCL_PANTHEIOS_H_PANTHEIOS */ 00070 00071 #ifndef PANTHEIOS_INCL_PANTHEIOS_INSERTERS_HPP_POINTER 00072 # include <pantheios/inserters/pointer.hpp> 00073 #endif /* !PANTHEIOS_INCL_PANTHEIOS_INSERTERS_HPP_POINTER */ 00074 00075 /* ///////////////////////////////////////////////////////////////////////// 00076 * Namespace 00077 */ 00078 00079 #if !defined(PANTHEIOS_NO_NAMESPACE) 00080 namespace pantheios 00081 { 00082 #endif /* !PANTHEIOS_NO_NAMESPACE */ 00083 00084 /* ///////////////////////////////////////////////////////////////////////// 00085 * Classes 00086 */ 00087 00090 class xp 00091 : public pointer 00092 { 00093 public: 00095 typedef pointer parent_class_type; 00097 typedef xp class_type; 00098 00099 private: 00100 // These helpers have to be here, otherwise CodeWarrior doesn't see them 00101 static int get_default_width_(size_t numBytes) 00102 { 00103 // TODO: Add the 2 back in when pointer writing adjusted as integer was done in 1.0.1b197 00104 return /* 2 + */ int(2 * numBytes); 00105 } 00106 static int validate_width_(int width) 00107 { 00108 return width; 00109 } 00110 00111 public: 00113 explicit xp(void const volatile* pv, int width = get_default_width_(sizeof(void*))) 00114 : parent_class_type(pv, validate_width_(width), int(fmt::fullHex)) 00115 {} 00116 }; 00117 00118 /* ///////////////////////////////////////////////////////////////////////// 00119 * Namespace 00120 */ 00121 00122 #if !defined(PANTHEIOS_NO_NAMESPACE) 00123 } /* namespace pantheios */ 00124 #endif /* !PANTHEIOS_NO_NAMESPACE */ 00125 00126 /* ///////////////////////////////////////////////////////////////////////// 00127 * Inclusion 00128 */ 00129 00130 #ifdef STLSOFT_PPF_pragma_once_SUPPORT 00131 # pragma once 00132 #endif /* STLSOFT_PPF_pragma_once_SUPPORT */ 00133 00134 /* ////////////////////////////////////////////////////////////////////// */ 00135 00136 #endif /* !PANTHEIOS_INCL_PANTHEIOS_INSERTERS_HPP_XP */ 00137 00138 /* ///////////////////////////// end of file //////////////////////////// */
|
|
pantheios Library documentation © Matthew Wilson & Synesis Software, 2006-2011 |