#pragma once#include <iostream>#include "storage/common/table.h"#include "storage/common/field_meta.h"classField{public:Field()=default;Field(FieldMeta*meta,char*data):Field(nullptr,meta,data){}Field(Table*table,FieldMeta*meta,char*data):table_(table),meta_(meta),data_(data){}voidset_table(Table*table){this->table_=table;}voidset_meta(constFieldMeta*meta){this->meta_=meta;}voidset_data(char*data){this->data_=data;}constFieldMeta*meta()const{returnmeta_;}voidto_string(std::ostream&os)const;private:Table*table_=nullptr;constFieldMeta*meta_=nullptr;char*data_=nullptr;// real data. no need to move to field_meta.offset};