Boost logo

Boost Users :

Subject: [Boost-users] [crc] why static data members used in class?
From: U.Mutlu (for-gmane_at_[hidden])
Date: 2015-07-09 12:30:06


U.Mutlu wrote on 07/09/2015 04:38 PM:
> Hi,
> I need to calc the crc chunkwise (ie. calc crc of a block,
> then continue with the next block etc.).
> Is this (not) possible with the boost crc?
>
> In other words: how can the type "crc_32_type" be initialized
> with a user supplied uint32_t value?
>
> boost::crc_32_type crc;
> crc = 0x1234; // <-- this brings compile error
> crc.process_bytes(buf, len);
>
> error: no match for ‘operator=’ (operand types are ‘boost::crc_32_type {aka
> boost::crc_optimal<32ul, 79764919u, 4294967295u, 4294967295u, true, true>}’
> and ‘const uint32_t {aka const unsigned int}’)

I don't understand why the author has used static data members in the class below.
Isn't that an indication that this class cannot be used in a multithreaded
environment?

class boost::crc_optimal
{
public:
     // Type
     typedef implementation_defined value_type;

     // Constants reflecting template parameters
     static std::size_t const bit_count = Bits;
     static value_type const truncated_polynominal = TruncPoly;
     static value_type const initial_remainder = InitRem;
     static value_type const final_xor_value = FinalXor;
     static bool const reflect_input = ReflectIn;
     static bool const reflect_remainder = ReflectRem;
...

http://www.boost.org/doc/libs/1_55_0/libs/crc/crc.html


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net