field_meta.h 1.4 KB
Newer Older
羽飞's avatar
羽飞 已提交
1
/* Copyright (c) 2021 OceanBase and/or its affiliates. All rights reserved.
羽飞's avatar
羽飞 已提交
2 3 4 5 6 7 8 9 10 11
miniob is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
         http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details. */

//
12
// Created by Meiyi & Wangyunlai on 2021/5/12.
羽飞's avatar
羽飞 已提交
13 14
//

羽飞's avatar
羽飞 已提交
15
#pragma once
羽飞's avatar
羽飞 已提交
16 17 18

#include <string>

羽飞's avatar
羽飞 已提交
19
#include "common/rc.h"
羽飞's avatar
羽飞 已提交
20 21 22 23
#include "sql/parser/parse_defs.h"

namespace Json {
class Value;
L
Longda 已提交
24
}  // namespace Json
羽飞's avatar
羽飞 已提交
25

羽飞's avatar
羽飞 已提交
26 27 28 29
/**
 * @brief 字段元数据
 * 
 */
羽飞's avatar
羽飞 已提交
30 31
class FieldMeta 
{
羽飞's avatar
羽飞 已提交
32 33
public:
  FieldMeta();
羽飞's avatar
羽飞 已提交
34
  FieldMeta(const char *name, AttrType attr_type, int attr_offset, int attr_len, bool visible);
羽飞's avatar
羽飞 已提交
35 36 37 38 39 40
  ~FieldMeta() = default;

  RC init(const char *name, AttrType attr_type, int attr_offset, int attr_len, bool visible);

public:
  const char *name() const;
L
Longda 已提交
41 42 43 44
  AttrType type() const;
  int offset() const;
  int len() const;
  bool visible() const;
羽飞's avatar
羽飞 已提交
45 46 47

public:
  void desc(std::ostream &os) const;
L
Longda 已提交
48

羽飞's avatar
羽飞 已提交
49 50 51 52
public:
  void to_json(Json::Value &json_value) const;
  static RC from_json(const Json::Value &json_value, FieldMeta &field);

L
Longda 已提交
53 54 55 56 57 58
protected:
  std::string name_;
  AttrType attr_type_;
  int attr_offset_;
  int attr_len_;
  bool visible_;
羽飞's avatar
羽飞 已提交
59
};
反馈
建议
客服 返回
顶部