12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- use anchor_lang::prelude::*;
- macro_rules! size {
- ($name: ident, $size:expr) => {
- impl $name {
- pub const LEN: usize = $size;
- }
- };
- }
- pub const MAX_SIZE: usize = 10;
- pub const MAX_SIZE_U8: u8 = 11;
- #[account]
- pub struct Data {
- pub udata: u128, // 16
- pub idata: i128, // 16
- }
- size!(Data, 32);
- #[account]
- pub struct DataU16 {
- pub data: u16, // 2
- }
- size!(DataU16, 32);
- #[account]
- pub struct DataI8 {
- pub data: i8, // 1
- }
- size!(DataI8, 1);
- #[account]
- pub struct DataI16 {
- pub data: i16, // 2
- }
- size!(DataI16, 2);
- #[account]
- pub struct DataEnum {
- pub data: TestEnum, // 1 + 16
- }
- size!(DataEnum, 17);
- #[account(zero_copy)]
- pub struct DataZeroCopy {
- pub data: u16, // 2
- pub _padding: u8, // 1
- pub bump: u8, // 1
- }
- size!(DataZeroCopy, 4);
- #[account]
- pub struct DataWithFilter {
- pub authority: Pubkey, // 32
- pub filterable: Pubkey, // 32
- }
- size!(DataWithFilter, 64);
- #[account]
- pub struct DataMultidimensionalArray {
- pub data: [[u8; 10]; 10], // 100
- }
- size!(DataMultidimensionalArray, 100);
- #[account]
- pub struct DataConstArraySize {
- pub data: [u8; MAX_SIZE], // 10
- }
- size!(DataConstArraySize, MAX_SIZE);
- #[account]
- pub struct DataConstCastArraySize {
- pub data_one: [u8; MAX_SIZE as usize],
- pub data_two: [u8; MAX_SIZE_U8 as usize],
- }
- #[account]
- pub struct DataMultidimensionalArrayConstSizes {
- pub data: [[u8; MAX_SIZE_U8 as usize]; MAX_SIZE],
- }
- #[derive(Debug, Clone, Copy, AnchorSerialize, AnchorDeserialize, PartialEq, Eq)]
- pub enum TestEnum {
- First,
- Second { x: u64, y: u64 },
- TupleTest(u8, u8, u16, u16),
- TupleStructTest(TestStruct),
- }
- #[derive(Debug, Clone, Copy, AnchorSerialize, AnchorDeserialize, PartialEq, Eq)]
- pub struct TestStruct {
- pub data1: u8,
- pub data2: u16,
- pub data3: u32,
- pub data4: u64,
- }
|