Tesseract  3.02
tesseract-ocr/ccutil/serialis.cpp
Go to the documentation of this file.
00001 /**********************************************************************
00002  * File:        serialis.h  (Formerly serialmac.h)
00003  * Description: Inline routines and macros for serialisation functions
00004  * Author:      Phil Cheatle
00005  * Created:     Tue Oct 08 08:33:12 BST 1991
00006  *
00007  * (C) Copyright 1990, Hewlett-Packard Ltd.
00008  ** Licensed under the Apache License, Version 2.0 (the "License");
00009  ** you may not use this file except in compliance with the License.
00010  ** You may obtain a copy of the License at
00011  ** http://www.apache.org/licenses/LICENSE-2.0
00012  ** Unless required by applicable law or agreed to in writing, software
00013  ** distributed under the License is distributed on an "AS IS" BASIS,
00014  ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015  ** See the License for the specific language governing permissions and
00016  ** limitations under the License.
00017  *
00018  **********************************************************************/
00019 
00020 #include          "mfcpch.h"     //precompiled headers
00021 #include "serialis.h"
00022 #include "scanutils.h"
00023 
00024 // Byte swap an inT64 or uinT64.
00025 DLLSYM uinT64 reverse64(uinT64 num) {
00026   return ((uinT64)reverse32((uinT32)(num & 0xffffffff)) << 32)
00027     | reverse32((uinT32)((num >> 32) & 0xffffffff));
00028 }
00029 
00030 /**********************************************************************
00031  * reverse32
00032  *
00033  * Byte swap an inT32 or uinT32.
00034  **********************************************************************/
00035 
00036 DLLSYM uinT32 reverse32(            //switch endian
00037                         uinT32 num  //number to fix
00038                        ) {
00039   return (reverse16 ((uinT16) (num & 0xffff)) << 16)
00040     | reverse16 ((uinT16) ((num >> 16) & 0xffff));
00041 }
00042 
00043 
00044 /**********************************************************************
00045  * reverse16
00046  *
00047  * Byte swap an inT16 or uinT16.
00048  **********************************************************************/
00049 
00050 DLLSYM uinT16 reverse16(            //switch endian
00051                         uinT16 num  //number to fix
00052                        ) {
00053   return ((num & 0xff) << 8) | ((num >> 8) & 0xff);
00054 }