00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef HBCIVALUE_H
00029 #define HBCIVALUE_H
00030
00035 #ifdef __cplusplus
00036 #include <string>
00037
00038 using namespace std;
00039
00040 namespace HBCI {
00041
00046 class DLLIMPORT Value {
00047 public:
00060 Value();
00061
00068 Value(double value, const string ¤cy);
00069
00113 Value(const string &strvalue);
00114
00121 bool isValid() const { return _isvalid; };
00122
00127 double getValue() const { return _value;};
00128
00133 const string& getCurrency() const { return _currency;};
00134
00142 string toString() const;
00143
00150 string toReadableString() const;
00151
00169 static unsigned int currencyPrecision(const string& c);
00170
00171 private:
00175 double _value;
00176
00179 string _currency;
00180
00181 bool _isvalid;
00182 };
00183
00189 inline bool operator<(const Value &v1, const Value &v2) {
00190 return v1.getValue()<v2.getValue();
00191 }
00192
00198 inline bool operator>(const Value &v1, const Value &v2) {
00199 return v1.getValue()>v2.getValue();
00200 }
00201
00202
00205 inline bool operator==(const Value &v1, const Value &v2) {
00206 return (v1.getCurrency()==v2.getCurrency()) &&
00207 (v1.getValue()==v2.getValue());
00208 }
00209
00210 }
00211 typedef struct HBCI::Value HBCI_Value;
00212
00213 #else
00214 typedef struct HBCI_Value HBCI_Value;
00215 #endif
00216
00217
00218 #ifdef __cplusplus
00219 extern "C" {
00220 #endif
00221
00227 extern HBCI_Value *HBCI_Value_new_double(double value,
00228 const char *currency);
00234 extern int HBCI_Value_isValid(const HBCI_Value *v);
00239 extern double HBCI_Value_getValue(const HBCI_Value *v);
00245 extern const char* HBCI_Value_getCurrency(const HBCI_Value *v);
00254 extern char* HBCI_Value_toReadableString(const HBCI_Value *v);
00255
00256 #ifdef __cplusplus
00257 }
00258 #endif
00259
00260 #endif