Loading...
Searching...
No Matches
gsds.c File Reference

OGSF library - dataset loading and management (lower level functions). More...

`#include <stdlib.h>`
`#include <string.h>`
`#include <grass/gis.h>`
`#include <grass/glocale.h>`
`#include <grass/ogsf.h>`
Include dependency graph for gsds.c:

Go to the source code of this file.

## Macros

#define | LUCKY 33
#define | BLOC 20
#define | MAX_DS 100

## Functions

int | gsds_findh (const char *name, IFLAG *changes, IFLAG *types, int begin)
| Get handle to gsds.
int | gsds_newh (const char *name)
| Get handle to gsds.
typbuff * | gsds_get_typbuff (int id, IFLAG change_flag)
| Get data buffer.
char * | gsds_get_name (int id)
| Get name.
int | gsds_free_datah (int id)
| Free allocated dataset.
int | gsds_free_data_buff (int id, int typ)
| Free allocated buffer.
size_t | free_data_buffs (dataset *ds, int typ)
| Free data buffer.
size_t | gsds_alloc_typbuff (int id, int *dims, int ndims, int type)
| Allocates correct buffer according to type, keeps track of total mem.
int | gsds_get_changed (int id)
| ADD.
int | gsds_set_changed (int id, IFLAG reason)
| ADD.
int | gsds_get_type (int id)
| ADD.

## Detailed Description

OGSF library - dataset loading and management (lower level functions).

GRASS OpenGL gsurf OGSF Library

The idea here is to treat datasets as separate objects, which SHOULD:

- allow easier reuse of data for different attributes.
- allow a mechanism for changing data and have changes reflected in each attribute using that data.
- allow a mechanism to automatically update data when the data source is changed.
- allow easier weaning from GRASS.
- allow easier use of shared memory between processes.

These structures are defined in gstypes.h:

`typedef struct{ float *fb; int *ib; short *sb; char *cb; struct BM *bm; } typbuff;`

How about adding a transform func here, so GET_MAPATT would do an on-the-fly transformation? Or even a transform func LIST!

`typedef struct{ int data_id; int dims[MAXDIMS]; int ndims; int numbytes; char unique_name[80]; typbuff databuff; int changed; int need_reload; } dataset;`

(C) 1999-2008 by the GRASS Development Team

This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details.

Author
  Bill Brown UI GMS Lab
  Doxygenized by Martin Landa <landa.martin gmail.com> (May 2008)

Definition in file gsds.c.

## Macro Definition Documentation

## BLOC

#define BLOC 20

Definition at line 64 of file gsds.c.

## LUCKY

#define LUCKY 33

Definition at line 63 of file gsds.c.

## MAX_DS

#define MAX_DS 100

Definition at line 65 of file gsds.c.

## Function Documentation

## free_data_buffs()

size_t free_data_buffs | ( | dataset * | ds,
|  | int | typ )

Free data buffer.

Parameters

  ds | pointer to dataset struct
  typ | data type

Returns
  freed size

Definition at line 393 of file gsds.c.

References BM_destroy(), BM_get_map_size(), G_debug(), and NULL.

Referenced by gsds_free_data_buff(), and gsds_free_datah().

## gsds_alloc_typbuff()

size_t gsds_alloc_typbuff | ( | int | id,
|  | int * | dims,
|  | int | ndims,
|  | int | type )

Allocates correct buffer according to type, keeps track of total mem.

Todo
  add ATTY_CONST

Parameters

  id | dataset id
  dims | array of dimensions
  ndims | number of dimensions
  type | data type

Returns
  amount of allocated memory

Definition at line 480 of file gsds.c.

References BM_create(), BM_get_map_size(), G_debug(), and NULL.

Referenced by gs_malloc_att_buff().

## gsds_findh()

int gsds_findh | ( | const char * | name,
|  | IFLAG * | changes,
|  | IFLAG * | types,
|  | int | begin )

Get handle to gsds.

Successive calls will continue search until "begin" is set (problem here is, unique_name no longer uniquely identifies dataset, since changes may be made; but unique_name should still be useful for reloading dataset) changes & types are set to actual for dataset if found.

Parameters

  name |
  changes,types | acceptable changes & types, flags may be or'd not changed is assumed to always be acceptable
  begin | flag to indicate search from beginning

Returns
  data id
  -1 not found

Definition at line 188 of file gsds.c.

References name.

Referenced by GS_load_att_map().

## gsds_free_data_buff()

int gsds_free_data_buff | ( | int | id,
|  | int | typ )

Free allocated buffer.

Parameters

  id | dataset id
  typ | data type

Returns
  0 not found
  1 found

Definition at line 369 of file gsds.c.

References free_data_buffs().

Referenced by GS_load_att_map().

## gsds_free_datah()

int gsds_free_datah | ( | int | id | ) |

Free allocated dataset.

Parameters

  id |

Returns
  0 not found
  1 found

Definition at line 329 of file gsds.c.

References free_data_buffs(), G_debug(), G_free(), and NULL.

Referenced by gs_free_unshared_buffs(), and gs_set_att_src().

## gsds_get_changed()

int gsds_get_changed | ( | int | id | ) |

ADD.

Parameters

  id |

Returns
  -1 on error

Definition at line 613 of file gsds.c.

Referenced by Gs_update_attrange().

## gsds_get_name()

char * gsds_get_name | ( | int | id | ) |

Get name.

Parameters

  id |

Returns
  name
  NULL on failure

Definition at line 303 of file gsds.c.

References NULL, and strcpy.

Referenced by GS_get_att(), and GS_get_cat_at_xy().

## gsds_get_typbuff()

typbuff * gsds_get_typbuff | ( | int | id,
|  | IFLAG | change_flag )

Get data buffer.

Doesn't prevent writing a buff thats's been gotten with change_flag == 0 (could return a copy, but willing to trust calling func for now)

Parameters

  id | dataset id
  change_flag | set changed flag

Returns
  pointer to typbuff struct
  NULL on failure

Definition at line 281 of file gsds.c.

References NULL.

Referenced by gs_get_att_typbuff(), and Gs_update_attrange().

## gsds_get_type()

int gsds_get_type | ( | int | id | ) |

ADD.

Parameters

  id |

Returns

Definition at line 651 of file gsds.c.

## gsds_newh()

int gsds_newh | ( | const char * | name | ) |

Get handle to gsds.

Parameters

  name | raster map name

Returns
  -1 on failure
  data id

Definition at line 219 of file gsds.c.

References G_store(), name, and NULL.

Referenced by GS_load_att_map().

## gsds_set_changed()

int gsds_set_changed | ( | int | id,
|  | IFLAG | reason )

ADD.

Parameters

  id |
  reason |

Returns
  -1 on error

Definition at line 633 of file gsds.c.

Referenced by GS_load_att_map().