cgv
Loading...
Searching...
No Matches
packing_info.h
1#pragma once
2
3#include <stddef.h>
4
5#include <cgv/data/lib_begin.h>
6
7namespace cgv {
8 namespace data {
9
24class CGV_API packing_info
25{
26protected:
27 bool is_packed : 1;
28 unsigned bd0 : 6;
29 unsigned bd1 : 6;
30 unsigned bd2 : 6;
31 unsigned bd3 : 6;
32 unsigned ca : 6;
34 bool prepare_bit_operation(unsigned ci, void* ptr, unsigned &off, unsigned &bd, unsigned* &iptr) const;
35 bool prepare_bit_operation(unsigned ci, const void* ptr, unsigned &off, unsigned &bd, const unsigned* &iptr) const;
36 unsigned int get_bit_offset(unsigned ci) const;
37public:
41 packing_info(unsigned align = 1, unsigned d0 = 0, unsigned d1 = 0, unsigned d2 = 0, unsigned d3 = 0);
43 void clear();
45 unsigned get_bit_depth(unsigned ci) const;
47 void set_bit_depth(unsigned ci, unsigned depth);
49 bool is_packing() const;
51 void set_packing(bool enable = true);
53 unsigned int get_component_alignment() const;
55 void set_component_alignment(unsigned a);
57 static size_t align(size_t v, unsigned a);
59 int get_signed(unsigned ci, const void* ptr) const;
61 unsigned int get_unsigned(unsigned ci, const void* ptr) const;
63 bool set_signed(unsigned ci, void* ptr, int v) const;
65 bool set_unsigned(unsigned ci, void* ptr, unsigned v) const;
67 bool operator == (const packing_info& pi) const;
69 bool operator != (const packing_info& pi) const;
70};
71
72 }
73}
74
75#include <cgv/config/lib_end.h>
the packing_info class stores information about packed integers structures.
the cgv namespace
Definition print.h:11