📄 sds_fdb.c
字号:
/* $Header: /cvsroot/sourcenav/src/snavigator/demo/c++_demo/sds/sds_fdb.c,v 1.1.1.1 2002/04/18 23:35:30 mdejong Exp $ *//************************************************************************** * ****** ISTK Release 1.2 ***** * * * * * * This code has been produced by numerous authors at the CERN centre for * * high energy physics, Geneve, Switzerland, at the SSC laboratory in * * Dallas, Texas, USA and at the Lawrence Berekeley Laboratory in * * California, USA. * * The latter two institutions perform work under US Government contract. * * The intent of the work is to provide useful code for people who need * * it, with an emphasis on free and collaborative exchange of ideas, * * techniques and implementations. * * Please read the disclaimer and copyright notices contained in the ISTK * * distribution and in distributed applications. * * * **************************************************************************//* Reference release Aug 10 1991 - C G Saltmarsh *//* Has the basics used at CDG & SSC 1988-1991, plus vxworks support*/#include <stdlib.h>#include <string.h>#ifndef vms#include <unistd.h>#endif#ifndef VXWORKS#include <memory.h>#endif#if defined(vms)#include "sdsgen.h"#include "sds_externs.h"#else#include "Sds/sdsgen.h"#include "Sds/sds_externs.h"#endifstatic int db_object[MAX_SDS];static long db_next_row[MAX_SDS];/************************************************************************/sds_handlesds_dbtab_make(nrows,basename,tlist,select_list)int nrows;char *select_list,*basename;struct type_list *tlist;/************************************************************************/{ sds_handle sds, obj; unsigned long tlist_index; if (!sds_initialised()) sds_init(); sds = sds_new(basename); if (!sds) { sds_perror("Making table sds:"); exit(1); } tlist_index = sds_define_structure(sds,tlist,select_list); obj = sds_declare_structure(sds, SDS_ALLOCATE, basename, nrows, tlist_index); if (!obj) { sds_perror("Making table sds:"); exit(1); } db_object[sds] = obj; db_next_row[sds] = 0; if (!(sds = sds_ass(sds,basename,SDS_PROC_MEM))) { sds_perror("Making table sds:"); exit(1); } return(sds);}/************************************************************************/sds_handlesds_dbrow_ins(sds,pointer)sds_handle sds;char *pointer;/************************************************************************/{ long next_row = db_next_row[sds]; int object = db_object[sds]; char *sptr; struct direc *dptr = sds_direc(sds); if (next_row > dptr[object].nelems) { sds_push_error(SDS_NO_MEM, SDS_ERROR,"No space for all these rows"); return 0L; } sptr = (char *)sds_getp(dptr,(long)object) + next_row * dptr[object].elemsz; memcpy(sptr,pointer,(int)dptr[object].elemsz); db_next_row[sds]++; return 1L;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -