source: to-imperative/trunk/runtime/rf_integer.hh @ 1117

Last change on this file since 1117 was 1117, checked in by orlov, 17 years ago
  • Added methods for comparison with long int and conversion to it.
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.7 KB
Line 
1#ifndef __rf_integer_hh__
2#define __rf_integer_hh__
3
4#include "rf_types.hh"
5#include "rf_expr.hh"
6#include "rf_term.hh"
7#include "pxx_string.hh"
8#include <gmp.h>
9#include <wchar.h>
10
11namespace rftype
12{
13
14using namespace rfrt;
15
16class Integer :
17  public Term
18{
19
20public:
21
22  inline Integer (intptr_t _n) ;
23  inline Integer (Integer const& _n) ;
24  inline Integer (char const* _str) ;
25  inline Integer (wchar_t const* _str) ;
26  inline Integer (pxx::WString& _str) ;
27  inline ~Integer () ;
28  inline Integer& operator = (Integer const& _n) ;
29
30  inline bool operator == (Integer const& _n) const ;
31  inline bool operator == (intptr_t _n) const ;
32  inline int cmp (Integer const& _n) const ;
33  inline int cmp (intptr_t _n) const ;
34
35  inline Integer operator + (Integer const& _n) const ;
36  inline Integer operator + (intptr_t _n) const ;
37  friend inline Integer operator + (intptr_t _n1, Integer const& _n2) ;
38  inline Integer operator - (Integer const& _n) const ;
39  inline Integer operator - (intptr_t _n) const ;
40  friend inline Integer operator - (intptr_t _n1, Integer const& _n2) ;
41  inline Integer operator * (Integer const& _n) const ;
42  inline Integer operator * (intptr_t _n) const ;
43  friend inline Integer operator * (intptr_t _n1, Integer const& _n2) ;
44  inline Integer operator / (Integer const& _n) const ;
45  inline Integer operator / (intptr_t _n) const ;
46  friend inline Integer operator / (intptr_t _n1, Integer const& _n2) ;
47  inline Integer operator % (Integer const& _n) const ;
48  inline Integer operator % (intptr_t _n) const ;
49  friend inline Integer operator % (intptr_t _n1, Integer const& _n2) ;
50  inline Integer div_rem (Integer const& _n, Integer* _remp) const ;
51  inline Integer div_rem (intptr_t _n, Integer* _remp) const ;
52  friend inline Integer div_rem (
53    intptr_t _n1, Integer const& _n2, Integer* _remp) ;
54  inline Integer operator - () const ;
55  inline int sign () const ;
56
57  inline long to_int () const ;
58
59  inline operator pxx::WString () const ;
60
61  static inline Expr create_expr (intptr_t _n) ;
62  static inline Expr create_expr (char const* _str) ;
63  static inline Expr create_expr (wchar_t const* _str) ;
64  static inline Expr create_expr (pxx::WString& _str) ;
65  static inline Expr create_expr (Integer const& _n) ;
66  inline mpz_t* get_mpz_ptr () const ;
67
68  inline size_t get_char_len () const ;
69
70  static void ctor (Integer* _to, Integer const* _from) ;
71  static void dtor (Integer* _n) ;
72  static bool eq (Integer const* _n1, Integer const* _n2) ;
73  static int compare (Integer const* _n1, Integer const* _n2) ;
74  static uint32_t hash (Integer const* _shint) ;
75  static pxx::WString to_string (Integer const* _shint) ;
76  static short_type_funcs_t funcs ;
77  static TypeRegister reg ;
78
79};
80
81}
82
83#endif // __rf_integer_hh__
Note: See TracBrowser for help on using the repository browser.