ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/Represent/Binary.hpp
(Generate patch)

Comparing:
Represent/represent.cpp (file contents), Revision 362 by douglas, 2004-12-21T01:12:18-08:00 vs.
Represent/Binary.hpp (file contents), Revision 422 by douglas, 2005-03-09T19:08:17-08:00

# Line 4 | Line 4
4   //
5   // $Id$
6  
7 < #include <iostream>
8 < #include <string>
9 < #include <vector>
7 > #ifndef _Binary_hpp_
8 > #define _Binary_hpp_
9  
10 < #include <foreach.hpp>
10 > #include "Represent.hpp"
11  
12 < /*template <typename Type>
13 < std::string binary(const Type& type)
14 < {
16 <        std::ostringstream string;
17 <
18 <        _rforu (index, 0, 8 * sizeof (type))
19 <        {
20 <                bool bit(1 & type >> index);
21 <
22 <                string << bit;
23 <        }
24 <
25 <        return string.str();
26 < }*/
12 > #ifdef MENES_PRAGMA_ONCE
13 > #pragma once
14 > #endif
15  
16   class Binary
17   {
18 < private:
19 <        std::vector<char> bytes;
18 > protected:
19 >        ext::Vector<byte_t> bytes;
20 >        Binary(size_t size, byte_t value) : bytes(size, value) {}
21   public:
22 <        Binary(const std::string& string);
23 <        template <typename Type>
24 <        Binary(const Type& type);
25 <        operator std::string() const;
22 >        Binary() : bytes(size_t(1), 0) {}
23 >        Binary(const ext::String& string, bool signed_);
24 >        template <typename Type> Binary(const Type& type);
25 >        template <typename Type> Type convert(bool signed_);
26 >        virtual operator ext::String() const;
27   };
28  
39 Binary::Binary(const std::string& string)
40 {
41        throw;
42 }
43
29   template <typename Type>
30   Binary::Binary(const Type& type) : bytes(sizeof (type))
31   {
32 <        char* type_(reinterpret_cast<char*>(const_cast<Type*>(&type)));
32 >        byte_t* type_(reinterpret_cast<byte_t*>(const_cast<Type*>(&type)));
33  
34 <        _mforeach (std::vector<char>, byte, bytes) *byte = *type_++;
34 >        _foreach (ext::Vector<byte_t>, byte, bytes) *byte = *type_++;
35   }
36  
37 < Binary::operator std::string() const
37 > template <typename Type>
38 > Type Binary::convert(bool signed_)
39   {
40 <        std::string string;
40 >        Type type;
41  
42 <        _rforeach (std::vector<char>, byte, bytes)
57 <        {
58 <                _rfor (char, bit, 0, 8)
59 <                {
60 <                        string += 1 & *byte >> bit ? '1' : '0';
61 <                }
62 <        }
42 >        if (sizeof (type) != bytes.GetSize()) bytes.SetSize(sizeof (type), signed_ && bytes.Last() >> 7 ? ~0 : 0);
43  
44 <        return string;
65 < }
44 >        byte_t* type_(reinterpret_cast<byte_t*>(&type));
45  
46 < std::ostream& operator<<(std::ostream& out, const Binary& binary)
68 < {
69 <        return out << std::string(binary);
70 < }
46 >        _foreach (ext::Vector<byte_t>, byte, bytes) *type_++ = *byte;
47  
48 < int main(int argc, char* argv[])
73 < {
74 <        std::string hello("Hello, World!");
75 <
76 <        _foreach (std::string, atom, hello)
77 <        {
78 <                std::cout << Binary(*atom) << " = " << *atom << std::endl;
79 <        }
80 <
81 <        _fori (index, -10, 11)
82 <        {
83 <                std::cout << Binary(index) << " = " << index << std::endl;
84 <        }
85 <
86 <        _foru (index, -10, 11)
87 <        {
88 <                std::cout << Binary(index) << " = " << index << std::endl;
89 <        }
90 <
91 <        for (float index(-1.0); index < 1.0; index += 0.1)
92 <        {
93 <                std::cout << Binary(index) << " = " << index << std::endl;
94 <        }
95 <
96 <        for (double index(-1.0); index < 1.0; index += 0.1)
97 <        {
98 <                std::cout << Binary(index) << " = " << index << std::endl;
99 <        }
100 <
101 <        return 0;
48 >        return type;
49   }
50 +
51 + #endif // _Binary_hpp_

Comparing:
Represent/represent.cpp (property svn:eol-style), Revision 362 by douglas, 2004-12-21T01:12:18-08:00 vs.
Represent/Binary.hpp (property svn:eol-style), Revision 422 by douglas, 2005-03-09T19:08:17-08:00

# Line 0 | Line 1
1 + native

Comparing:
Represent/represent.cpp (property svn:keywords), Revision 362 by douglas, 2004-12-21T01:12:18-08:00 vs.
Represent/Binary.hpp (property svn:keywords), Revision 422 by douglas, 2005-03-09T19:08:17-08:00

# Line 0 | Line 1
1 + Id

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines