totdecl.h
上传用户:dgyhgb
上传日期:2007-01-07
资源大小:676k
文件大小:2k
源码类别:

SQL Server

开发平台:

Unix_Linux

  1. /*
  2.  *  totdecl.h - Function declaration of pack functions
  3.  *              Kernel of GNU SQL-server
  4.  *                
  5.  *  This file is a part of GNU SQL Server
  6.  *
  7.  *  Copyright (c) 1996, 1997, Free Software Foundation, Inc
  8.  *  Developed at the Institute of System Programming
  9.  *  This file is written by Vera Ponomarenko
  10.  * 
  11.  *  This program is free software; you can redistribute it and/or modify
  12.  *  it under the terms of the GNU General Public License as published by
  13.  *  the Free Software Foundation; either version 2 of the License, or
  14.  *  (at your option) any later version.
  15.  *
  16.  *  This program is distributed in the hope that it will be useful,
  17.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  *  GNU General Public License for more details.
  20.  *
  21.  *  You should have received a copy of the GNU General Public License
  22.  *  along with this program; if not, write to the Free Software
  23.  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  24.  *
  25.  *  Contacts: gss@ispras.ru
  26.  *
  27.  *  $Id: totdecl.h,v 1.245 1997/03/31 03:46:38 kml Exp $
  28.  */
  29. #ifndef __TOTFTN_H__
  30. #define __TOTFTN_H__
  31. #include "setup_os.h"
  32. #if 1
  33. void t4bpack __P((i4_t n, char *pnt));
  34. i4_t t4bunpack __P((char *pnt));
  35. void t2bpack __P((u2_t n, char *pnt));
  36. u2_t t2bunpack __P((char *pnt));
  37. #define PROC_PACK
  38. #elif 1
  39. # error should be here
  40. #define p_byte(i4,p,i)      ((unsigned char*)(p))[i] = ((((i4_t)(i4))>>(8*i)) & 0xff)
  41. #define up_byte(p,i)        ((i4_t)(((unsigned char*)(p))[i]) << (8*i))
  42. #define t4bpack(n,p)        { p_byte(n,p,0);p_byte(n,p,1);p_byte(n,p,2);p_byte(n,p,3);}
  43. #define t4bunpack(p)        (up_byte(p,0) + up_byte(p,1) + up_byte(p,2)+ up_byte(p,3))
  44. #define t2bpack(n,p)        { p_byte(n,p,0); p_byte(n,p,1);}
  45. #define t2bunpack(p)        ((u2_t)(up_byte(p,0) + up_byte(p,1)))
  46. #else
  47. # error should be here too
  48. #define t4bpack(n,p)        { *(i4_t*)(p) = (i4_t)(n); }
  49. #define t4bunpack(p)        ( *(i4_t*)(p))
  50. #define t2bpack(n,p)        { *(i2_t*)(p) = (i2_t)(n); }
  51. #define t2bunpack(p)         ((u2_t)*(i2_t*)(p))
  52. #endif
  53. #ifdef PROC_PACK
  54. #include "xmem.h"
  55. #include <assert.h>
  56. #define TPACK(i,p)      bcopy(&i,p,sizeof(i))
  57. #define TUPACK(p,i)     bcopy(p,&i,sizeof(i))
  58. #define BUFPACK(i,p)    { TPACK(i,p) ; *((char**)&p) += sizeof(i); }
  59. #define BUFUPACK(p,i)   { TUPACK(p,i); *((char**)&p) += sizeof(i); }
  60. #endif
  61. #endif