source: to-imperative/trunk/runtime/rf_word.hh @ 773

Last change on this file since 773 was 773, checked in by luba, 18 years ago
  • is_number() method is corrected;
  • has_spaces() method is added;
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.7 KB
Line 
1#ifndef __rf_word_hh__
2#define __rf_word_hh__
3
4#include "rf_types.hh"
5#include "rf_term.hh"
6#include "rf_expr.hh"
7
8namespace rftype
9{
10
11using namespace rfrt ;
12
13class Word :
14  public Term
15{
16
17  struct Header
18  {
19    size_t ref_count ;
20    size_t length ;
21    uint32_t hash ;
22    wchar_t content[] ;
23  };
24
25public:
26  ///
27  /// Constructor from a string of wide characters
28  inline Word (wchar_t const* _wstr) ;
29  ///
30  /// Constructor from a locale-dependent string
31  inline Word (char const* _str, char const* _locale = null) ;
32  ///
33  /// Copy constructor
34  inline Word (Word const& _word) ;
35  ///
36  /// Destructor
37
38  inline ~Word () ;
39  ///
40  /// Assignment operator
41  inline Word& operator = (Word const& _word) ;
42
43  inline size_t get_len () const;
44
45  inline int is_number () const;
46
47  inline int has_space () const ;
48
49  static Expr create_expr (wchar_t const* _wstr) ;
50
51  static Expr create_expr (char const* _str, char const* _locale = null) ;
52
53  static Expr create_expr (Expr const& _expr) ;
54
55
56  static uintptr_t ctor (uintptr_t _data) ;
57  static void dtor (uintptr_t _data) ;
58  static bool eq (uintptr_t _data1, uintptr_t _data2) ;
59  static int compare (uintptr_t _data1, uintptr_t _data2) ;
60  static uint32_t hash (uintptr_t _data) ;
61  static pxx::WString to_string (uintptr_t _data) ;
62  static short_type_funcs_t funcs ;
63  static TypeRegister reg ;
64
65 
66  class NumIterator 
67  {
68  private:
69    const wchar_t* iter;
70    const wchar_t* bound;
71  public:
72    inline NumIterator(Word const& _word) ;
73    inline NumIterator& operator ++(int) ;
74    inline NumIterator const& operator =(Word const& _word) ;
75    inline bool in_bounds () const;
76    inline const char operator*() const;
77  }; 
78 
79};
80
81
82
83}
84
85#endif // __rf_word_hh__
86
Note: See TracBrowser for help on using the repository browser.