/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright (C) Yeico S. A. de C. V. * xlsLib -- A multiplatform, C++ library for dynamic generation of Excel (TM) * files. * * 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 2 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, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * $Source: /cvsroot/xlslib/xlslib/src/common/systype.h,v $ * $Revision: 1.2 $ * $Author: darioglz $ * $Date: 2004/09/01 00:47:04 $ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * File description: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #ifndef SYSTYPE_H #define SYSTYPE_H #if defined(_MSC_VER) && defined(WIN32) #pragma warning(disable: 4786) // Long debug information related to STL #pragma warning(disable: 4290) // C++ Exception Specification ignored #endif //# define PHPEXT_TSRMLS_C tsrm_ls //# define PHPEXT_TSRMLS_D void ***tsrm_ls // Global includes #include #include #include #include #include #include #include #include "overnew.h" #define INLINE inline //#define NULL ((void*)(0)) #define NO_ERRORS 0 #define FILE_ERROR -1 #define GENERAL_ERROR -100 #define PTYPE_DIRECTORY ((unsigned8_t)(0x01)) #define PTYPE_FILE ((unsigned8_t)(0x02)) #define PTYPE_ROOT ((unsigned8_t)(0x05)) #define PCOLOR_BLACK ((unsigned8_t)(0x01)) #define PCOLOR_RED ((unsigned8_t)(0x00)) #define PLINK_EMPTY ((signed32_t)(-1)) #define PBLOCK_END ((signed32_t)(-2)) #if USE_ALLOCATOR==ALLOCATOR_STL #define XLSLIB_DFLT_ALLOCATOR #elif USE_ALLOCATOR==ALLOCATOR_BTI #include "bti_thread_alloc.h" #define XLSLIB_DFLT_ALLOCATOR ,bti::thr_alloc #else # error ERROR: Invalid allocator option #endif typedef unsigned char unsigned8_t; typedef unsigned short int unsigned16_t; typedef unsigned int unsigned32_t; #if defined(_MSC_VER) && defined(WIN32) typedef __int64 unsigned64_t; #else typedef long long unsigned int unsigned64_t; #endif typedef char signed8_t; typedef short int signed16_t; typedef int signed32_t; typedef std::list StringList_t; typedef StringList_t::const_iterator StringListItor_t; // Macros #if defined(_MSC_VER) && defined(WIN32) # define MASK_BYTE0 0x00000000000000ff # define MASK_BYTE1 0x000000000000ff00 # define MASK_BYTE2 0x0000000000ff0000 # define MASK_BYTE3 0x00000000ff000000 # define MASK_BYTE4 0x000000ff00000000 # define MASK_BYTE5 0x0000ff0000000000 # define MASK_BYTE6 0x00ff000000000000 # define MASK_BYTE7 0xff00000000000000 #else # define MASK_BYTE0 0x00000000000000ffLL # define MASK_BYTE1 0x000000000000ff00LL # define MASK_BYTE2 0x0000000000ff0000LL # define MASK_BYTE3 0x00000000ff000000LL # define MASK_BYTE4 0x000000ff00000000LL # define MASK_BYTE5 0x0000ff0000000000LL # define MASK_BYTE6 0x00ff000000000000LL # define MASK_BYTE7 0xff00000000000000LL #endif #define BYTE_0(num) (unsigned8_t) (num & MASK_BYTE0) #define BYTE_1(num) (unsigned8_t)((num & MASK_BYTE1)>>0x08) #define BYTE_2(num) (unsigned8_t)((num & MASK_BYTE2)>>0x10) #define BYTE_3(num) (unsigned8_t)((num & MASK_BYTE3)>>0x18) #define BYTE_4(num) (unsigned8_t)((num & MASK_BYTE4)>>0x20) #define BYTE_5(num) (unsigned8_t)((num & MASK_BYTE5)>>0x28) #define BYTE_6(num) (unsigned8_t)((num & MASK_BYTE6)>>0x30) #define BYTE_7(num) (unsigned8_t)((num & MASK_BYTE7)>>0x38) #define HEADPOS_ID ((unsigned16_t)(0x00)) #define HEADPOS_UK1 ((unsigned16_t)(0x08)) #define HEADPOS_UK2 ((unsigned16_t)(0x0c)) #define HEADPOS_UK2b ((unsigned16_t)(0x10)) /* According to the Excel sample... but undocummented */ #define HEADPOS_UK3 ((unsigned16_t)(0x14)) #define HEADPOS_UK4 ((unsigned16_t)(0x18)) #define HEADPOS_UK5 ((unsigned16_t)(0x1a)) #define HEADPOS_UK6 ((unsigned16_t)(0x1c)) #define HEADPOS_LOG2_BIGBLOCK ((unsigned16_t)(0x1e)) #define HEADPOS_LOG2_SMALLBLOCK ((unsigned16_t)(0x20)) #define HEADPOS_UK7 ((unsigned16_t)(0x24)) #define HEADPOS_UK8 ((unsigned16_t)(0x28)) #define HEADPOS_BAT_COUNT ((unsigned16_t)(0x2c)) #define HEADPOS_PROPERTIES_SB ((unsigned16_t)(0x30)) #define HEADPOS_UK9 ((unsigned16_t)(0x34)) #define HEADPOS_UK10 ((unsigned16_t)(0x38)) #define HEADPOS_SBAT_COUNT ((unsigned16_t)(0x40)) #define HEADPOS_SBAT_START ((unsigned16_t)(0x3c)) #define HEADPOS_XBAT_START ((unsigned16_t)(0x44)) #define HEADPOS_XBAT_COUNT ((unsigned16_t)(0x48)) #define HEADPOS_BAT_ARRAY ((unsigned16_t)(0x4c)) #define HEADVAL_DFLT_NOTUSED ((unsigned8_t) (0xff) ) #define HEADVAL_DFLT_UK1 ((signed32_t) (0x00) ) #define HEADVAL_DFLT_UK2 ((signed32_t) (0x00) ) #define HEADVAL_DFLT_UK2b ((signed32_t) (0x00) )/* According to the Excel sample... but undocummented */ #define HEADVAL_DFLT_UK3 ((signed32_t) (0x00) ) #define HEADVAL_DFLT_UK4 ((signed16_t) (0x3e) )/*POIFS documentations says 0x3b... let's stick with the Excel sample ...*/ #define HEADVAL_DFLT_UK5 ((signed16_t) (0x03) ) #define HEADVAL_DFLT_UK6 ((signed16_t) (-2) ) #define HEADVAL_DFLT_UK7 ((signed32_t) (0x00) ) #define HEADVAL_DFLT_UK8 ((signed32_t) (0x00) ) #define HEADVAL_DFLT_UK9 ((signed32_t) (0x00) ) #define HEADVAL_DFLT_UK10 ((signed32_t) (0x1000)) #define HEADVAL_DFLT_LOG2_BIGBLOCK ((signed16_t)(9)) #define HEADVAL_DFLT_LOG2_SMALLBLOCK ((signed32_t)(6)) #define HEADVAL_DFLT_BATCOUNT ((signed32_t)(0) ) #define HEADVAL_DFLT_PROPERTIES_SB ((signed32_t)(-2) ) #define HEADVAL_DFLT_SBAT_START ((signed32_t)(-2) ) #define HEADVAL_DFLT_SBAT_COUNT ((signed32_t)(0) ) //POIFS says it should be 1 ... let's stick to M$ #define HEADVAL_DFLT_XBAT_START ((signed32_t)(-2) ) #define HEADVAL_DFLT_XBAT_COUNT ((signed32_t)(0) ) #define HEADVAL_DFLT_BAT_ARRAY /* Cannot have a default value */ #define HEAD_SIZE BIG_BLOCK_SIZE #define HEAD_ID_SZ (0x08) #define HEAD_UNUSED_BYTE ((unsigned32_t) (0xff)) #define BAT_END_CHAIN ((signed32_t)(-2) ) #define BAT_SELF_PLACE ((signed32_t)(-3) ) #define BAT_NOT_USED_BYTE ((unsigned8_t)(0xff) ) #define PROPERTY_DFLT_NOTUSED ((unsigned8_t)(0x00)) #define PROPERTY_MAX_NAME_LENGTH ((unsigned8_t)(32)) #define PROPERTY_TYPE_DIR ((unsigned8_t)(0x01)) #define PROPERTY_TYPE_FILE ((unsigned8_t)(0x02)) #define PROPERTY_TYPE_ROOT ((unsigned8_t)(0x05)) #define PROPERTY_COLOR_NODE_RED ((unsigned8_t)(0x00)) #define PROPERTY_COLOR_NODE_BLACK ((unsigned8_t)(0x01)) #define PROPERTY_LINK_EMPTY ((signed32_t)(-1)) #define PPTPOS_NAME ((unsigned8_t)(0x00)) #define PPTPOS_NAMELENGTH ((unsigned8_t)(0x40)) #define PPTPOS_TYPE ((unsigned8_t)(0x42)) #define PPTPOS_NODECOLOR ((unsigned8_t)(0x43)) #define PPTPOS_PREVIOUS ((unsigned8_t)(0x44)) #define PPTPOS_NEXT ((unsigned8_t)(0x48)) #define PPTPOS_CHILD ((unsigned8_t)(0x4C)) #define PPTPOS_UNUSED_EMPTY0 ((unsigned8_t)(0x50)) #define PPTPOS_SECS1 ((unsigned32_t)(0x64)) #define PPTPOS_SECS2 ((unsigned32_t)(0x68)) #define PPTPOS_DAYS1 ((unsigned32_t)(0x6c)) #define PPTPOS_DAYS2 ((unsigned32_t)(0x70)) #define PPTPOS_STARTBLOCK ((unsigned8_t)(0x74)) #define PPTPOS_SIZE ((unsigned8_t)(0x78)) #define PPT_DFLT_SECS1 ((signed32_t)(0)) #define PPT_DFLT_SECS2 ((signed32_t)(0)) #define PPT_DFLT_DAYS1 ((signed32_t)(0)) #define PPT_DFLT_DAYS2 ((signed32_t)(0)) // More macros /* **************************************** **************************************** */ #define Delete_Pointer(pt) { \ if(pt != NULL) \ { \ delete pt; \ pt = NULL; \ } \ } /* **************************************** **************************************** */ #ifdef __DEBUG__ #define XTRACE(str) { \ cout<<"DEBUG: "<