source: git/factory/templates/ftmpl_factor.h @ dce1e3

spielwiese
Last change on this file since dce1e3 was 341696, checked in by Hans Schönemann <hannes@…>, 14 years ago
Adding Id property to all files git-svn-id: file:///usr/local/Singular/svn/trunk@12231 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 1.3 KB
Line 
1/* emacs edit mode for this file is -*- C++ -*- */
2/* $Id$ */
3
4#ifndef INCL_FACTOR_H
5#define INCL_FACTOR_H
6
7#include <factoryconf.h>
8
9#ifndef NOSTREAMIO
10#ifdef HAVE_IOSTREAM
11#include <iostream>
12#define OSTREAM std::ostream
13#elif defined(HAVE_IOSTREAM_H)
14#include <iostream.h>
15#define OSTREAM ostream
16#endif
17#endif /* NOSTREAMIO */
18
19
20template <class T>
21class Factor {
22private:
23    T _factor;
24    int _exp;
25public:
26    Factor() : _factor(1), _exp(0) {}
27    Factor( const Factor<T> & f ) : _factor(f._factor), _exp(f._exp) {}
28    Factor( const T & f, int e ) : _factor(f), _exp(e) {}
29    Factor( const T & f ) : _factor(f), _exp(1) {}
30    ~Factor() {}
31    Factor<T>& operator= ( const Factor<T>& );
32    Factor<T>& operator= ( const T& );
33    T factor() const { return _factor; }
34    int exp() const { return _exp; }
35    T value() const { return power( _factor, _exp ); }
36    Factor<T>& operator+= ( int i ) { _exp += i; return *this; }
37    Factor<T>& operator*= ( int i ) { _exp *= i; return *this; }
38    Factor<T>& operator*= ( const T & f ) { _factor *= f; return *this; }
39#ifndef NOSTREAMIO
40    void print ( OSTREAM& ) const;
41#endif /* NOSTREAMIO */
42};
43
44template <class T> int
45operator== ( const Factor<T>&, const Factor<T>& );
46
47#ifndef NOSTREAMIO
48template <class T>
49OSTREAM& operator<< ( OSTREAM & os, const Factor<T> & f );
50#endif /* NOSTREAMIO */
51
52#endif /* ! INCL_FACTOR_H */
Note: See TracBrowser for help on using the repository browser.