[A] Added some docs for C++

This commit is contained in:
seleznevae 2018-07-22 22:52:55 +03:00
parent 59718f4f8d
commit fb6d6c0acc
5 changed files with 74 additions and 24 deletions

View File

@ -8,14 +8,14 @@ int main()
fort::Table table; fort::Table table;
// Fill table with data // Fill table with data
table << fort::header table << fort::header
<< "Rank" << "Title" << "Year" << "Rating" << fort::endl << "Rank" << "Title" << "Year" << "Rating" << fort::endr
<< "1" << "The Shawshank Redemption" << "1994" << "9.5" << fort::endl << "1" << "The Shawshank Redemption" << "1994" << "9.5" << fort::endr
<< "2" << "12 Angry Men" << "1957" << "8.8" << fort::endl << "2" << "12 Angry Men" << "1957" << "8.8" << fort::endr
<< "3" << "It's a Wonderful Life" << "1946" << "8.6" << fort::endl << "3" << "It's a Wonderful Life" << "1946" << "8.6" << fort::endr
<< fort::separator << fort::separator
<< "4" << "2001: A Space Odyssey" << "1968" << "8.5" << fort::endl << "4" << "2001: A Space Odyssey" << "1968" << "8.5" << fort::endr
<< "5" << "Blade Runner" << "1982" << "8.1" << fort::endl << "5" << "Blade Runner" << "1982" << "8.1" << fort::endr
<< fort::endl; << fort::endr;
std::cout << table.to_string() << std::endl; std::cout << table.to_string() << std::endl;
} }
@ -30,6 +30,8 @@ int main()
table.write_ln("3", "It's a Wonderful Life", "1946", "8.6"); table.write_ln("3", "It's a Wonderful Life", "1946", "8.6");
table.write_ln("4", "2001: A Space Odyssey", "1968", "8.5"); table.write_ln("4", "2001: A Space Odyssey", "1968", "8.5");
table.write_ln("5", "Blade Runner", "1982", "8.1"); table.write_ln("5", "Blade Runner", "1982", "8.1");
table.set_border_style(FT_SOLID_STYLE);
std::cout << table.to_string(); std::cout << table.to_string();
} }
return 0; return 0;

View File

@ -2350,7 +2350,7 @@ struct ft_border_style *FT_FRAME_STYLE = (struct ft_border_style *) &FORT_FRAME
static void set_border_options_for_options(fort_table_options_t *options, struct ft_border_style *style) static void set_border_options_for_options(fort_table_options_t *options, const struct ft_border_style *style)
{ {
if ((struct fort_border_style *)style == &FORT_BASIC_STYLE if ((struct fort_border_style *)style == &FORT_BASIC_STYLE
|| (struct fort_border_style *)style == &FORT_BASIC2_STYLE || (struct fort_border_style *)style == &FORT_BASIC2_STYLE
@ -2369,8 +2369,8 @@ static void set_border_options_for_options(fort_table_options_t *options, struct
return; return;
} }
struct ft_border_chars *border_chs = &(style->border_chs); const struct ft_border_chars *border_chs = &(style->border_chs);
struct ft_border_chars *header_border_chs = &(style->header_border_chs); const struct ft_border_chars *header_border_chs = &(style->header_border_chs);
#define BOR_CHARS options->border_style.border_chars #define BOR_CHARS options->border_style.border_chars
#define H_BOR_CHARS options->border_style.header_border_chars #define H_BOR_CHARS options->border_style.header_border_chars
@ -2433,13 +2433,13 @@ static void set_border_options_for_options(fort_table_options_t *options, struct
} }
int ft_set_default_border_style(struct ft_border_style *style) int ft_set_default_border_style(const struct ft_border_style *style)
{ {
set_border_options_for_options(&g_table_options, style); set_border_options_for_options(&g_table_options, style);
return FT_SUCCESS; return FT_SUCCESS;
} }
int ft_set_border_style(ft_table_t *table, struct ft_border_style *style) int ft_set_border_style(ft_table_t *table, const struct ft_border_style *style)
{ {
assert(table); assert(table);
if (table->options == NULL) { if (table->options == NULL) {

View File

@ -563,7 +563,7 @@ int ft_add_separator(ft_table_t *table);
* Formatted table. * Formatted table.
* @return * @return
* - The pointer to the string representation of formatted table, on success. * - The pointer to the string representation of formatted table, on success.
* - NULL on error with ft_errno set appropriately. * - NULL on error.
*/ */
const char *ft_to_string(const ft_table_t *table); const char *ft_to_string(const ft_table_t *table);
@ -631,7 +631,7 @@ extern struct ft_border_style *FT_FRAME_STYLE;
* - 0: Success; default border style was changed. * - 0: Success; default border style was changed.
* - (<0): In case of error * - (<0): In case of error
*/ */
int ft_set_default_border_style(struct ft_border_style *style); int ft_set_default_border_style(const struct ft_border_style *style);
/** /**
* Set border style for the table. * Set border style for the table.
@ -644,7 +644,7 @@ int ft_set_default_border_style(struct ft_border_style *style);
* - 0: Success; table border style was changed. * - 0: Success; table border style was changed.
* - (<0): In case of error * - (<0): In case of error
*/ */
int ft_set_border_style(ft_table_t *table, struct ft_border_style *style); int ft_set_border_style(ft_table_t *table, const struct ft_border_style *style);

View File

@ -54,13 +54,13 @@ private:
}; };
const TableManipulator header(0); const TableManipulator header(0);
const TableManipulator endl(1); const TableManipulator endr(1);
const TableManipulator separator(2); const TableManipulator separator(2);
/** /**
* Table - here is a short description. * Table - formatted table.
* *
* Here is detailed description. * Table class is a C++ wrapper around struct ft_table.
*/ */
class Table { class Table {
public: public:
@ -76,6 +76,13 @@ public:
ft_destroy_table(table); ft_destroy_table(table);
} }
/**
* Convert table to string representation.
*
* @return
* - String representation of formatted table, on success.
* - In case of error std::runtime_error is thrown.
*/
std::string to_string() const std::string to_string() const
{ {
const char *str = ft_to_string(table); const char *str = ft_to_string(table);
@ -84,11 +91,37 @@ public:
return str; return str;
} }
/**
* Convert table to string representation.
*
* Table object has ownership of the returned pointer. So there is no need to
* free it. To take ownership user should explicitly copy the returned
* string with strdup or similar functions.
*
* Returned pointer may be later invalidated by:
* - Calling destroying the table;
* - Other invocations of c_str or to_string.
*
* @return
* - The pointer to the string representation of formatted table, on success.
* - NULL on error.
*/
const char *c_str() const const char *c_str() const
{ {
return ft_to_string(table); return ft_to_string(table);
} }
/**
* Write provided object to the the table.
*
* To convert object to the string representation conversion for
* std::ostream is used.
*
* @param arg
* Obect that would be inserted in the current cell.
* @return
* - Reference to the current table.
*/
template <typename T> template <typename T>
Table &operator<<(const T &arg) Table &operator<<(const T &arg)
{ {
@ -104,7 +137,7 @@ public:
{ {
if (arg.value == header.value) if (arg.value == header.value)
ft_set_cell_option(table, FT_CUR_ROW, FT_ANY_ROW, FT_COPT_ROW_TYPE, FT_ROW_HEADER); ft_set_cell_option(table, FT_CUR_ROW, FT_ANY_ROW, FT_COPT_ROW_TYPE, FT_ROW_HEADER);
else if (arg.value == endl.value) else if (arg.value == endr.value)
ft_ln(table); ft_ln(table);
else if (arg.value == separator.value) else if (arg.value == separator.value)
ft_add_separator(table); ft_add_separator(table);
@ -235,6 +268,21 @@ public:
#endif /* __cpp_variadic_templates */ #endif /* __cpp_variadic_templates */
/**
* Set border style for the table.
*
* @param style
* Pointer to border style.
* @return
* - True: Success; table border style was changed.
* - False: Error
*/
bool set_border_style(struct ft_border_style *style)
{
return FT_IS_SUCCESS(ft_set_border_style(table, style));
}
private: private:
ft_table_t *table; ft_table_t *table;
std::stringstream stream; std::stringstream stream;

View File

@ -809,7 +809,7 @@ struct ft_border_style *FT_FRAME_STYLE = (struct ft_border_style *) &FORT_FRAME
static void set_border_options_for_options(fort_table_options_t *options, struct ft_border_style *style) static void set_border_options_for_options(fort_table_options_t *options, const struct ft_border_style *style)
{ {
if ((struct fort_border_style *)style == &FORT_BASIC_STYLE if ((struct fort_border_style *)style == &FORT_BASIC_STYLE
|| (struct fort_border_style *)style == &FORT_BASIC2_STYLE || (struct fort_border_style *)style == &FORT_BASIC2_STYLE
@ -828,8 +828,8 @@ static void set_border_options_for_options(fort_table_options_t *options, struct
return; return;
} }
struct ft_border_chars *border_chs = &(style->border_chs); const struct ft_border_chars *border_chs = &(style->border_chs);
struct ft_border_chars *header_border_chs = &(style->header_border_chs); const struct ft_border_chars *header_border_chs = &(style->header_border_chs);
#define BOR_CHARS options->border_style.border_chars #define BOR_CHARS options->border_style.border_chars
#define H_BOR_CHARS options->border_style.header_border_chars #define H_BOR_CHARS options->border_style.header_border_chars
@ -892,13 +892,13 @@ static void set_border_options_for_options(fort_table_options_t *options, struct
} }
int ft_set_default_border_style(struct ft_border_style *style) int ft_set_default_border_style(const struct ft_border_style *style)
{ {
set_border_options_for_options(&g_table_options, style); set_border_options_for_options(&g_table_options, style);
return FT_SUCCESS; return FT_SUCCESS;
} }
int ft_set_border_style(ft_table_t *table, struct ft_border_style *style) int ft_set_border_style(ft_table_t *table, const struct ft_border_style *style)
{ {
assert(table); assert(table);
if (table->options == NULL) { if (table->options == NULL) {