Skip to content

File class_description.hpp

File List > cubrid > src > object > class_description.hpp

Go to the documentation of this file

/*
 * Copyright 2008 Search Solution Corporation
 * Copyright 2016 CUBRID Corporation
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 */

/*
 * class_description.hpp
 */

#ifndef _CLASS_DESCRIPTION_HPP_
#define _CLASS_DESCRIPTION_HPP_

#if defined(SERVER_MODE)
#error Does not belong to server module
#endif //defined(SERVER_MODE)

#include <vector>

struct db_object;
struct sm_class;
class string_buffer;
struct tr_triglist;

/*
 * CLASS_HELP
 *
 * Note :
 *    This structure contains information about a class defined in the database.
 *    This will be built and returned by help_class or help_class_name.
 */
//all members should be refactored but for the moment is only triggers and partition are...
struct class_description
{
  enum type
  {
    /*OBJ_PRINT_*/ CSQL_SCHEMA_COMMAND,
    /*OBJ_PRINT_*/ SHOW_CREATE_TABLE
  };

  char *name;
  char *class_type;
  char *collation;
  char **supers;
  char **subs;
  char **attributes;
  char **class_attributes;
  char **methods;
  char **class_methods;
  char **resolutions;
  char **method_files;
  char **query_spec;
  char *object_id;
  std::vector<char *> triggers;
  char **constraints;
  std::vector<char *> partition;
  char *comment;

  class_description ();                                   //former obj_print_make_class_help()
  ~class_description ();                                  //former obj_print_help_free_class()

  int init (const char *name);                           //former obj_print_help_class()
  int init (struct db_object *op, type prt_type);
  int init (struct db_object *op, type prt_type, string_buffer &sb);//to be used in object_printer::describe_class()

  //ToDo: other special methods: copy&move ctor/assign
};

#endif // _CLASS_DESCRIPTION_HPP_