// $Source$ // $Revision$ // $Date$ // $Author$ #ifndef __rf_short_int_ih__ #define __rf_short_int_ih__ #include "rf_short_int.hh" #include "rf_term.ih" namespace rftype { using namespace rfrt; inline Int32::Int32(intptr_t _n) : Term(type_int32) { int_data2 = _n; } inline intptr_t Int32::to_int() const { return int_data2; } inline Expr Int32::create_expr (intptr_t _n) { Expr e = Term::create_flat_expr(1); new(e.get_first()) Int32(_n); return e; } inline Expr Int32::create_expr (char const* _str) { return Int32::create_expr(strtol(_str, null, 10)); } inline Expr Int32::create_expr (pxx::WString& _str) { size_t len = _str.get_length(); wchar_t const* s = _str.get_data(); intptr_t _res = 0; intptr_t sign = 1; intptr_t k = 1; size_t i = 0; if (s[1] == '-') { i++; sign = -1; } for (; i < len; i++) k*=10; k/=10; i = 0; for (; i < len; i++) { _res = _res + (s[i] - 48)*k; k/=10; } return Int32::create_expr(_res * sign); } inline size_t Int32::get_char_len() const { intptr_t n = int_data2; uintptr_t k = 0; if (!n) k = 1; else { if (n < 0) k++; while (n) { n /= 10; k++; }; }; return k; }; } #endif // __rf_short_int_ih__