summaryrefslogtreecommitdiffstats
path: root/khexedit/lib/koffsetformat.h
blob: 8bd90e26f4b2eab5067605d0ff4c481309114a58 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/***************************************************************************
                          koffsetformat.h  -  description
                             -------------------
    begin                : Mit Mai 21 2003
    copyright            : (C) 2003 by Friedrich W. H. Kossebau
    email                : Friedrich.W.H@Kossebau.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This library is free software; you can redistribute it and/or         *
 *   modify it under the terms of the GNU Library General Public           *
 *   License version 2 as published by the Free Software Foundation.       *
 *                                                                         *
 ***************************************************************************/


#ifndef KHE_KOFFSETFORMAT_H
#define KHE_KOFFSETFORMAT_H

namespace KHE
{

/**
  *@author Friedrich W. H. Kossebau
  */

class KOffsetFormat
{
  public:
    /** */
    typedef void (*print)( char *Buffer, unsigned int Offset );
    /** */
    enum KFormat { Hexadecimal=0, Decimal, None };
    /** */
    static const int MaxFormatWidth = 9;

  private:
    KOffsetFormat();
    ~KOffsetFormat();

  public:
    /** */
    static unsigned int codingWidth( int i );
    /** */
    static print printFunction( int i );

  public:
    static void printHexadecimalOffset( char *Buffer, unsigned int Offset );
    static void printHexadecimalSmallOffset( char *Buffer, unsigned int Offset );
    static void printDecimalOffset( char *Buffer, unsigned int Offset );

  protected:
    /** */
    static const unsigned int CodingWidth[2]; //TODO: would sizeof(Coding} work?
    /** */
    static const print PrintFunction[2];
};


inline unsigned int KOffsetFormat::codingWidth( int i )
{ return CodingWidth[i]; }

inline KOffsetFormat::print KOffsetFormat::printFunction( int i )
{ return PrintFunction[i]; }


}

#endif