[GRASS5] Library Issues
Byars, Bruce W.
Bruce_Byars at baylor.edu
Fri Apr 12 09:00:39 EDT 2002
Much of this is relics from the old digitizing and air photo routines.
Some
date back as far as FHIS if memory serves me correctly. It's hard code
for specific (and non-exsistant anymore) devices. Most of this can I
think
safely go away, but there are some global calls that should remain. I
remember this from hacking up r.nntool. I will try and dig up my notes
on what is/was junk.
Bruce
-----Original Message-----
From: Glynn Clements
Sent: Fri 4/12/2002 5:45 AM
To: grass5 at grass.itc.it
Cc:
Subject: [GRASS5] Library Issues
I've been analysing the interdependencies between the various
GRASS
libraries, and wished to discuss some of the results.
1. The following symbols are referenced in libimage_sup.a, but
don't
appear to be defined anywhere:
symbol |object
-------------------+-------------
mark_control |photo_init.o
Menu_msg |ltm_anal.o
Menu_msg |photo_anal.o
Menu_msg |poly_anal.o
read_elev |ltm_anal.o
read_elev |ltm_trans.o
read_elev |photo_anal.o
read_elev |photo_trans.o
select_current_env |convert_ll.o
select_target_env |convert_ll.o
Can anyone shed any light on this? Are they meant to be defined
by the
application? If so, the interface should probably be changed to
use an
explicit callback.
There are also a number of undefined symbols in libgeo.a:
D_ask_driver_raw
D_clear_driver
D_cursor_buttons
D_foot_switch
D_get_scale
D_read_raw
D_setup_driver
D_setup_origin
D_start_button
It appears that these are meant to be provided by a "driver"
(although
the only implementation which I can find is
src.contrib/OTHER/numonics).
Is this the case?
2. A significant number of global symbols are defined in
multiple
libraries; in particular, the following are defined in both
libortho.a
and libimage_sup.a:
I_ask_camera_any
I_ask_camera_new
I_ask_camera_old
I_compute_ortho_equations
I_find_camera
I_find_initial
I_get_con_points
I_get_group_camera
I_get_group_elev
I_get_ref_points
I_inverse_ortho_ref
I_list_cameras
I_new_con_point
I_new_ref_point
I_ortho_ref
I_put_con_points
I_put_group_camera
I_put_group_elev
I_put_ref_points
I_read_con_points
I_read_ref_points
I_write_con_points
I_write_ref_points
The following symbols are also multiply defined:
symbol |object |library
------------+-------------+--------------
Bugs2 |error.o |libimage_sup.a
Bugs2 |error.o |libortho.a
I_georef |georef.o |libI.a
I_georef |georef.o |libortho.a
inverse |m_inverse.o |libortho.a
inverse |inverse.o |libtrans.a
isnull |isnull.o |libortho.a
isnull |inverse.o |libtrans.a
m_add |matrix_ops.o |libimage_sup.a
m_add |m_add.o |libortho.a
matrix_error|ref_ortho.o |libimage_sup.a
matrix_error|orthoref.o |libortho.a
m_copy |matrix_ops.o |libimage_sup.a
m_copy |m_copy.o |libortho.a
m_mult |matrix_ops.o |libimage_sup.a
m_mult |m_mult.o |libortho.a
m_mult |m_mult.o |libtrans.a
transpose |jacobi.o |libgmath.a
transpose |m_transpose.o|libortho.a
Can someone who is familiar with the imagery code look into the
apparent duplication, and whether it can be eliminated?
The matrix stuff will ultimately be handled by the gmath
library.
3. There are three pairs of libraries which are mutually
dependent:
im_lib |ex_lib
------------+------------
libgis.a |libcoorcnv.a
libstubs.a |libdbmi.a
libvect.a |libdig2.a
a)
libgis.a references:
CC_datum_name
CC_datum_shift
CC_get_datum_by_name
libcoorcnv.a references:
G_realloc
G_fatal_error
G_warning
G_ellipsoid_name
G_get_ellipsoid_by_name
G_get_spheroid_by_name
G_getl
G_gisbase
G_store
G_strcasecmp
G_strcat
G_strcpy
G_strip
The obvious solution is to move coorcnv/datum.c into libgis.
b)
libstubs.a references:
db_procedure_not_implemented
libdbmi.a references:
db_driver_add_column
db_driver_bind_update
db_driver_close_cursor
db_driver_close_database
db_driver_create_database
db_driver_create_index
db_driver_create_table
db_driver_delete
db_driver_delete_database
db_driver_describe_table
db_driver_drop_column
db_driver_drop_index
db_driver_drop_table
db_driver_execute_immediate
db_driver_fetch
db_driver_find_database
db_driver_finish
db_driver_init
db_driver_insert
db_driver_list_databases
db_driver_list_indexes
db_driver_list_tables
db_driver_open_database
db_driver_open_insert_cursor
db_driver_open_select_cursor
db_driver_open_update_cursor
db_driver_update
I haven't looked very far into this, but libdbmi probably needs
to be
split into two separate libraries; a high-level library above
the
drivers, which provides the API to clients, and a low-level
library
which provides utilities for the drivers.
c)
libvect.a references:
dig_alloc_points
dig_bound_box2
dig__fill_head_portable
dig__fread_port_C
dig__fread_port_D
dig__fread_port_I
dig__fread_port_L
dig__fwrite_port_C
dig__fwrite_port_D
dig__fwrite_port_I
dig__fwrite_port_L
dig__Init_portable_code
dig_load_plus
dig_new_to_old_type
dig_old_to_new_type
dig_point_in_poly
dig__set_cur_in_head
dig__set_cur_out_head
dig_struct_copy
dig_x_Rd_P_area
dig_x_Rd_P_att
dig_x_Rd_P_isle
dig_x_Rd_P_line
dig_x_Rd_Plus_head
dig_x_Rd_P_node
dig_x_Wr_P_area
dig_x_Wr_P_att
dig_x_Wr_P_isle
dig_x_Wr_P_line
dig_x_Wr_Plus_head
dig_x_Wr_P_node
libdig2.a references:
dig_Rd_P_area
dig_Rd_P_att
dig_Rd_P_isle
dig_Rd_P_line
dig_Rd_Plus_head
dig_Rd_P_node
dig_Wr_P_area
dig_Wr_P_att
dig_Wr_P_isle
dig_Wr_P_line
dig_Wr_Plus_head
dig_Wr_P_node
V2_read_line
What is the distiction between libvect.a and libdig2.a? Should
they be
combined? Or is all of this going to be replaced in 5.1?
--
Glynn Clements <glynn.clements at virgin.net>
_______________________________________________
grass5 mailing list
grass5 at grass.itc.it
http://grass.itc.it/mailman/listinfo/grass5
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/ms-tnef
Size: 17534 bytes
Desc: not available
Url : http://lists.osgeo.org/pipermail/grass-dev/attachments/20020412/d4cdbbb1/attachment.bin
More information about the grass-dev
mailing list