/*! \page vlibLists Vector Library Structures and Functions

by GRASS Development Team (https://grass.osgeo.org)

\tableofcontents

\section vlibStructures List of vector library data structures

All data structure used by the vector library are defined in
include/vect/dig_structs.h. See the lists below.

\subsection vlibStructuresMajor Major

- \ref Map_info
- \ref Plus_head
- \ref dig_head

\subsection vlibStructuresSupporting Supporting

- \ref bound_box
- \ref gvfile
- \ref Port_info
- \ref Coor_info
- \ref spatial_index

\subsection vlibStructuresFormat-related Format-related

- \ref Format_info
- \ref Format_info_ogr

\subsection vlibStructuresDB-related DB-related

- \ref field_info
- \ref dblinks

\subsection vlibStructuresGeometry-related Geometry-related

- \ref line_pnts

\subsection vlibStructuresCategory-related Category-related

- \ref line_cats
- \ref cat_list
- \ref Cat_index

\subsection vlibStructuresTopology-related Topology-related

- \ref P_node
- \ref P_line
- \ref P_area
- \ref P_isle

\subsection vlibStructuresMisc Misc

- \ref ilist
- \ref varray

\subsection vlibStructuresObsolete Obsolete

- \ref site_att
- \ref recycle


\section vlibFunc List of vector library functions

The vector library provides the GRASS programmer with routines to
process vector data. The routines in the vector library are presented
in functional groupings, rather than in alphabetical order. The order
of presentation will, it is hoped, provide better understanding of how
the library is to be used, as well as show the interrelationships
among the various routines. Note that a good way to understand how to
use these routines is to look at the source code for GRASS modules
which use them.

Note: All routines start with one of following prefixes Vect_, V1_,
V2_ or dig_. To avoid name conficts, programmers should not create
variables or routines in their own modules which use this prefix.

The Vect_*() functions are the programmer's API for GRASS vector
programming. The programmer should use only routines with this prefix.

\subsection vlibArea Vector area functions

 - Vect_get_area_area()

 - Vect_get_area_boundaries()

 - Vect_get_area_centroid()

 - Vect_get_area_isle()

 - Vect_get_area_num_isles()

 - Vect_area_perimeter()

 - Vect_get_area_points()

 - Vect_get_isle_area()

 - Vect_get_isle_boundaries()

 - Vect_get_isle_points()

 - Vect_point_in_area()


\subsection vlibArray Vector array functions

 - Vect_new_varray()

 - Vect_set_varray_from_cat_list()

 - Vect_set_varray_from_cat_string()

 - Vect_set_varray_from_db()


\subsection vlibBox Vector bounding box functions

 - Vect_box_copy()

 - Vect_box_clip()

 - Vect_box_extend()

 - Vect_box_overlap()

 - Vect_get_area_box()

 - Vect_get_isle_box()

 - Vect_get_line_box()

 - Vect_get_map_box()

 - Vect_point_in_box()

 - Vect_region_box()


\subsection vlibBreakLines Vector break lines functions

 - Vect_break_lines()

 - Vect_break_lines_list()


\subsection vlibBreakPolygons Vector break polygons functions

 - Vect_break_polygons()


\subsection vlibBridges Vector bridges functions

 - Vect_chtype_bridges()

 - Vect_remove_bridges()


\subsection vlibBuffer Vector buffer functions

 - Vect_line_buffer2()

 - Vect_line_parallel()


\subsection vlibBuild Vector build functions

\subsubsection vlibBuildMain Main build functions

 - Vect_build()

 - Vect_build_partial()

 - Vect_get_built()

 - Vect_build_sidx_from_topo()

 - Vect_build_sidx()

 - Vect_save_sidx()

 - Vect_save_topo()

 - Vect_sidx_dump()

 - Vect_topo_dump()


\subsubsection vlibBuildNat Native build functions

 - Vect_attach_centroids()

 - Vect_attach_isle()

 - Vect_attach_isles()

 - Vect_build_line_area()

 - Vect_build_nat()

 - Vect_isle_find_area()


\subsubsection vlibBuildOgr OGR build functions

 - Vect_build_ogr()


\subsection vlibCats Vector categories functions

 - Vect_array_to_cat_list()

 - Vect_cat_del()

 - Vect_cat_get()

 - Vect_cat_in_array()

 - Vect_cat_in_cat_list()

 - Vect_cat_set()

 - Vect_destroy_cat_list()

 - Vect_destroy_cats_struct()

 - Vect_field_cat_del()

 - Vect_get_area_cats()

 - Vect_get_area_cat()

 - Vect_get_line_cat()

 - Vect_new_cat_list()

 - Vect_new_cats_struct()

 - Vect_reset_cats()

 - Vect_str_to_cat_list()


\subsection vlibCleanNodes Vector clean nodes functions

 - Vect_clean_small_angles_at_nodes()


\subsection vlibClose Vector close functions

 - Vect_close()


\subsection vlibConstraint Vector constraint functions

 - Vect_get_constraint_box()

 - Vect_remove_constraints()

 - Vect_set_constraint_region()

 - Vect_set_constraint_type()


\section vlibDangles Vector dangles functions

 - Vect_chtype_dangles()

 - Vect_remove_dangles()

 - Vect_select_dangles()


\subsection vlibDbcolumns Vector dbcolumns functions

 - Vect_get_column_names()

 - Vect_get_column_names_types()

 - Vect_get_column_types()


\subsection vlibError Vector error functions

 - Vect_get_fatal_error()

 - Vect_set_fatal_error()


\subsection vlibField Vector layer (field) functions

(note: vector layer is historically called "field")

 - Vect_add_dblink()

 - Vect_check_dblink()

 - Vect_default_field_info()

 - Vect_get_dblink()

 - Vect_get_field()

 - Vect_get_field_by_name()

 - Vect_map_add_dblink()

 - Vect_map_check_dblink()

 - Vect_map_del_dblink()

 - Vect_new_dblinks_struct()

 - Vect_read_dblinks()

 - Vect_reset_dblinks()

 - Vect_set_db_updated()

 - Vect_subst_var()

 - Vect_write_dblinks()


\subsection vlibFind Vector find functions

 - Vect_find_area()

 - Vect_find_island()

 - Vect_find_line()

 - Vect_find_line_list()

 - Vect_find_node()


\subsection vlibGraph Vector graph functions

 - Vect_graph_add_edge()

 - Vect_graph_build()

 - Vect_graph_init()

 - Vect_graph_set_node_costs()

 - Vect_graph_shortest_path()


\subsection vlibHeader Vector header functions

 - Vect_get_comment()

 - Vect_get_constraint_box()

 - Vect_get_date()

 - Vect_get_full_name()

 - Vect_get_map_date()

 - Vect_get_map_name()

 - Vect_get_mapset()

 - Vect_get_name()

 - Vect_get_organization()

 - Vect_get_person()

 - Vect_get_proj()

 - Vect_get_proj_name()

 - Vect_get_scale()

 - Vect_get_thresh()

 - Vect_get_zone()

 - Vect_is_3d()

 - Vect_print_header()

 - Vect_read_header()

 - Vect_set_comment()

 - Vect_set_date()

 - Vect_set_map_date()

 - Vect_set_map_name()

 - Vect_set_organization()

 - Vect_set_person()

 - Vect_set_scale()

 - Vect_set_thresh()

 - Vect_set_zone()

 - Vect_write_header()


\subsection vlibHist Vector history functions

 - Vect_hist_command()

 - Vect_hist_copy()

 - Vect_hist_read()

 - Vect_hist_rewind()

 - Vect_hist_write()


\subsection vlibInitHead Vector header functions

 - Vect_copy_head_data()


\subsection vlibIntersect Vector intersection functions

 - Vect_line_check_intersection()

 - Vect_line_intersection()

 - Vect_segment_intersection()


\subsection vlibLegalVname Vector valid map name functions

 - Vect_check_input_output_name()

 - Vect_legal_filename()


\subsection vlibLevel Vector level functions

 - Vect_level()


\subsection vlibLevelTwo Vector topological (level 2) functions

 - Vect_get_centroid_area()

 - Vect_get_line_areas()

 - Vect_get_line_nodes()

 - Vect_get_node_coor()

 - Vect_get_node_line()

 - Vect_get_node_line_angle()

 - Vect_get_node_n_lines()

 - Vect_get_num_areas()

 - Vect_get_num_dblinks()

 - Vect_get_num_faces()

 - Vect_get_num_islands()

 - Vect_get_num_lines()

 - Vect_get_num_nodes()

 - Vect_get_num_primitives()

 - Vect_get_num_updated_lines()

 - Vect_get_num_updated_nodes()

 - Vect_get_updated_line()

 - Vect_get_updated_node()

 - Vect_set_release_support()


\subsection vlibLine Vector feature functions

 - Vect_append_point()

 - Vect_append_points()

 - Vect_copy_pnts_to_xyz()

 - Vect_copy_xyz_to_pnts()

 - Vect_destroy_line_struct()

 - Vect_get_num_line_points()

 - Vect_line_box()

 - Vect_line_delete_point()

 - Vect_line_distance()

 - Vect_line_geodesic_length()

 - Vect_line_get_point()

 - Vect_line_insert_point()

 - Vect_line_length()

 - Vect_line_prune()

 - Vect_line_prune_thresh()

 - Vect_line_reverse()

 - Vect_line_segment()

 - Vect_new_line_struct()

 - Vect_point_on_line()

 - Vect_points_distance()

 - Vect_reset_line()


\subsection vlibList Vector list functions

 - Vect_destroy_list()

 - Vect_list_append()

 - Vect_list_append_list()

 - Vect_list_delete()

 - Vect_list_delete_list()

 - Vect_new_list()

 - Vect_reset_list()

 - Vect_val_in_list()

 - Vect_destroy_boxlist()

 - Vect_boxlist_append()

 - Vect_boxlist_append_boxlist()

 - Vect_boxlist_delete()

 - Vect_boxlist_delete_boxlist()

 - Vect_new_boxlist()

 - Vect_reset_boxlist()

 - Vect_val_in_boxlist()


\subsection vlibMap Vector map functions

 - Vect_copy()

 - Vect_copy_map_lines()

 - Vect_copy_table()

 - Vect_copy_table_by_cats()

 - Vect_copy_tables()

 - Vect_delete()

 - Vect_rename()


\subsection vlibMergeLines Vector merge line functions

 - Vect_merge_lines()


\subsection vlibNet Vector network functions

 - Vect_net_build_graph()

 - Vect_net_get_line_cost()

 - Vect_net_get_node_cost()

 - Vect_net_nearest_nodes()

 - Vect_net_shortest_path()

 - Vect_net_shortest_path_coor()


\subsection vlibOpen Vector open functions

 - Vect_coor_info()

 - Vect_maptype_info()

 - Vect_maptype()

 - Vect_open_new()

 - Vect__open_old()

 - Vect_open_old()

 - Vect_open_old_head()

 - Vect_open_sidx()

 - Vect_open_topo()

 - Vect_open_update()

 - Vect_open_update_head()

 - Vect_set_open_level()

\subsection vlibOverlay Vector overlay functions

 - Vect_overlay()

 - Vect_overlay_str_to_operator()


\subsection vlibVpoly Vector polygon functions

 - Vect_find_poly_centroid()

 - Vect_get_point_in_area()

 - Vect_point_in_area_outer_ring()

 - Vect_point_in_island()

 - Vect_get_point_in_poly()

 - Vect_get_point_in_poly_isl()


\subsection vlibRead Vector read functions

\subsubsection vlibread1_2 Level 1 and 2

 - Vect_read_next_line()

\subsubsection vlibRead2 Level 2 only

 - Vect_area_alive()

 - Vect_isle_alive()

 - Vect_line_alive()

 - Vect_node_alive()

 - Vect_read_line()


\subsection vlibRemoveAreas Vector remove functions

\subsubsection vlibRemoveAreas Vector remove areas functions

 - Vect_remove_small_areas()


\subsubsection vlibRemoveDuplicates Vector remove duplicates functions

 - Vect_line_check_duplicate()

 - Vect_remove_duplicates()


\subsection vlibRewind Vector rewind functions

 - Vect_rewind()


\subsection vlibSelect Vector select functions

 - Vect_select_areas_by_box()

 - Vect_select_areas_by_polygon()

 - Vect_select_isles_by_box()

 - Vect_select_lines_by_box()

 - Vect_select_lines_by_polygon()

 - Vect_select_nodes_by_box()


\subsection vlibIndex Vector index functions


\subsubsection vlibSindex Vector spatial index functions

 - Vect_spatial_index_add_item()

 - Vect_spatial_index_del_item()

 - Vect_spatial_index_destroy()

 - Vect_spatial_index_init()

 - Vect_spatial_index_select()


\subsection vlibCindex Vector category index functions

(note: vector layer is historically called "field")

 - Vect_cidx_dump()

 - Vect_cidx_find_next()

 - Vect_cidx_find_all()

 - Vect_cidx_get_cat_by_index()

 - Vect_cidx_get_field_index()

 - Vect_cidx_get_field_number()

 - Vect_cidx_get_num_cats_by_index()

 - Vect_cidx_get_num_fields()

 - Vect_cidx_get_num_types_by_index()

 - Vect_cidx_get_num_unique_cats_by_index()

 - Vect_cidx_get_type_count()

 - Vect_cidx_get_type_count_by_index()

 - Vect_cidx_open()

 - Vect_cidx_save()

 - Vect_set_category_index_update()


\subsection vlibSnap Vector snap functions

 - Vect_snap_lines()

 - Vect_snap_lines_list()


\subsection vlibTinFuns Vector TIN functions

 - Vect_tin_get_z()


\subsection vlibType Vector type option functions

 - Vect_option_to_types()


\subsection vlibDelete Vector delete functions

\subsubsection vlibDelete2 Level 2 only

 - Vect_delete_line()

\subsection vlibWrite Vector write functions

\subsubsection vlibWrite1_2 Level 1 and 2

 - Vect_write_line()

\subsubsection vlibWrite2 Level 2 only

 - Vect_rewrite_line()

\subsection vlibAsciiFn Vector ASCII functions

 - Vect_read_ascii()
 
 - Vect_read_ascii_head()

 - Vect_write_ascii()
 
 - Vect_write_ascii_head()

\subsection vlibSFAFn Vector Simple Feature Access API

Functions from GRASS Simple Feature API (in progress, incomplete).

 - Vect_sfa_get_line_type()

 - Vect_sfa_check_line_type()

 - Vect_sfa_line_dimension()

 - Vect_sfa_line_geometry_type()

 - Vect_sfa_line_astext()

 - Vect_sfa_is_line_simple()

 - Vect_sfa_is_line_closed()

\subsection vlibGeosFn Vector GEOS functions

Note: The functions are available only if GRASS is compiled with
<tt>--with-geos</tt> switch.

 - Vect_read_line_geos()

 - Vect_read_area_geos()

 - Vect_line_to_geos()

 - Vect_get_area_points_geos()

 - Vect_get_isle_points_geos()

\subsection vlibPgFn Vector PostgreSQL/PostGIS functions

Note: The functions are available only if GRASS is compiled with
<tt>--with-postgres</tt> switch.

 - Vect_open_topo_pg()

 - Vect_build_pg()

(For internal use only)

 - V1_open_old_pg(), V2_open_old_pg() called by Vect_open_old()

 - V1_open_new_pg(), V2_open_new_pg() called by Vect_open_new()

 - V1_rewind_pg(), V2_rewind_pg() called by Vect_rewind()

 - V1_close_pg(), V2_close_pg() called by Vect_close()

 - V1_read_line_pg(), V2_read_line_pg() called by Vect_read_line()

 - V1_read_next_line_pg(), V2_read_next_line_pg() called by Vect_read_next_line()

 - V1_delete_line_pg(), V2_delete_line_sfa() called by Vect_delete_line()

 - V1_write_line_pg(), V2_write_line_pg() called by Vect_write_line()

 - V1_rewrite_line_pg(), V2_rewrite_line_sfa() called by Vect_rewrite_line()

 - V2_write_area_pg(), see \gmod{v.out.postgis} for implementation issues


*/
