Beispiel #1
0
CLIP_DLLEXPORT C_object*
_fetch_co_arg(ClipMachine* cm)
{
	C_object* cobj;

	if (_clip_parinfo(cm,1)==NUMERIC_t)
	{
		cobj = (C_object*)_clip_fetch_c_item(cm,_clip_parni(cm,1),
			_C_ITEM_TYPE_WIDGET);
	}
	else
	{
		if (_clip_parinfo(cm,1)==MAP_t)
		{
			double h;
			_clip_mgetn(cm, _clip_spar(cm,1), HASH_HANDLE, &h);
			cobj = (C_object *) _clip_fetch_c_item(cm, (int) h,
				_C_ITEM_TYPE_WIDGET);
		}
		else
		{
			_clip_trap_err(cm,EG_ARG,0,0,"CLIP_GTK_SYSTEM",
				EG_ARG,"Bad object descriptor");
			return NULL;
		}
	}
	if(!cobj)
	{
		_clip_trap_err(cm,EG_ARG,0,0,"CLIP_GTK_SYSTEM",
			EG_ARG,"Bad object descriptor");
		return NULL;
	}
	return cobj;
}
Beispiel #2
0
int clip_PG_OUT_DATETIME(ClipMachine* mp){
	PG_ROWSET* rowset = (PG_ROWSET*)_clip_fetch_c_item(
		mp,_clip_parni(mp,1),_C_ITEM_TYPE_SQL);
	long time;
	long date = _clip_pardtj(mp,2,&time);
	int totext = _clip_parl(mp,3);

	if(!rowset){
		_clip_trap_err(mp,0,0,0,subsys,ER_NOROWSET,er_norowset);
		return 1;
	}
	if((!totext)&&rowset->binary){
		long l = date - _clip_jdate(1,1,2000);
		double d = l*(24*60*60) + time/1000;
		_clip_retcn(mp,(char*)&d,8);
	} else {
		char str[26];
		int y,m,d,w,h,mm,s,t,q;

		_clip_cdate(date,&d,&m,&y,&w);
		h = time/(60*60*1000);
		q = time%(60*60*1000);
		mm = q/(60*1000);
		q %= 60*1000;
		s = q/(1000);
		t = q%1000;
		snprintf(str,sizeof(str),"%04d-%02d-%02d %02d:%02d:%02d.%02d+00",y,m,d,h,mm,s,t);
		_clip_retc(mp,str);
	}
	return 0;
}
Beispiel #3
0
int
clip_HS_REMOVE(ClipMachine * ClipMachineMemory)
{
   const char *__PROC__ = "HS_REMOVE";

   int h = _clip_parni(ClipMachineMemory, 1);

   unsigned int rno = _clip_parni(ClipMachineMemory, 2);

   HIPER *hs;

   int er;

   CHECKARG1(1, NUMERIC_type_of_ClipVarType);
   CHECKARG1(2, NUMERIC_type_of_ClipVarType);

   hs = _clip_fetch_c_item(ClipMachineMemory, h, _C_ITEM_TYPE_HIPER);
   if (!hs)
   {
      er = rdd_err(ClipMachineMemory, EG_ARG, 0, __FILE__, __LINE__, __PROC__, er_badhiper);
      goto err;
   }

   if ((er = hs_remove(ClipMachineMemory, hs, rno, __PROC__)))
      goto err;

   _clip_retni(ClipMachineMemory, 1);
   return 0;
 err:
   return er;
}
Beispiel #4
0
int
clip_M6_FILTCOPY(ClipMachine * ClipMachineMemory)
{
   const char *__PROC__ = "M6_FILTCOPY";

   int h = _clip_parni(ClipMachineMemory, 1);

   RDD_FILTER *fp;

   RDD_FILTER *ret;

   int er;

   ClipMachineMemory->m6_error = 0;
   CHECKARG1(1, NUMERIC_type_of_ClipVarType);
   fp = (RDD_FILTER *) _clip_fetch_c_item(ClipMachineMemory, h, _C_ITEM_TYPE_RYO);
   if (!fp)
   {
      er = rdd_err(ClipMachineMemory, EG_ARG, 0, __FILE__, __LINE__, __PROC__, er_badfilter);
      goto err;
   }
   if ((er = rm_copyfilter(ClipMachineMemory, fp, &ret, __PROC__)))
      goto err;
   _clip_retni(ClipMachineMemory, ret->handle);
   return 0;
 err:
   return er;
}
Beispiel #5
0
int
clip_FREAD(ClipMachine * ClipMachineMemory)
{
#if 0
   int ret, *err, bl;

   int fh = _clip_parni(ClipMachineMemory, 1);

   char *buf = _clip_parcl(ClipMachineMemory, 2, &bl);

   int kol = _clip_parni(ClipMachineMemory, 3);

   if (bl < kol)
      kol = bl;

   ret = read(fh, buf, kol);
   err = _clip_fetch_item(ClipMachineMemory, HASH_ferror);

   if (ret < 0)
      *err = errno;
   else
      *err = 0;
#else
   int *err = _clip_fetch_item(ClipMachineMemory, HASH_ferror);

   int fd = _clip_parni(ClipMachineMemory, 1), lenbuf = 0;

   char *buf = _clip_parcl(ClipMachineMemory, 2, &lenbuf);

   long ret = -1, nb = _clip_parnl(ClipMachineMemory, 3);

   C_FILE *cf = _clip_fetch_c_item(ClipMachineMemory, fd, _C_ITEM_TYPE_FILE);

   _clip_retnl(ClipMachineMemory, -1);

   if (cf == NULL)
   {
      *err = EBADF;
      return 0;
   }

   if (lenbuf < nb)
      nb = lenbuf;

   if (nb > 0)
   {
      if (cf->file_of_C_FILE == NULL || (cf->stat_of_C_FILE & FS_BUFFERED) == 0)
	 ret = _clip_read(cf, buf, nb);
      else
	 ret = fread(buf, 1, nb, cf->file_of_C_FILE);
   }
   else
      ret = 0;

   *err = ret < 0 ? errno : 0;
#endif

   _clip_retnl(ClipMachineMemory, ret);
   return 0;
}
Beispiel #6
0
int
clip_COM_RTS(ClipMachine * mp)
{
	v24_port_t *gz;
	int fd = _clip_parni(mp, 1);
	int flag = _clip_parl(mp, 2);
	int oflag;

	if (fd < 1 || fd > 32)
		return EG_ARG;
	fd = keys[fd];
	gz = (v24_port_t *) _clip_fetch_c_item(mp, fd, _C_ITEM_TYPE_COMPORT);
	if (!gz)
		return (EG_ARG);

	oflag = 0;

	if (mp->argc > 1)
	{
		oflag = v24SetRTS(gz, flag);
	}

	_clip_retl(mp, oflag ? 0 : 1);

	return 0;
}
Beispiel #7
0
/*
       COM_HARD(<nComPort>,<lNewHandshake>,[<lDTR/DSR>])
		 --> lOldHandshake
*/
int
clip_COM_HARD(ClipMachine * mp)
{
	v24_port_t *gz;
	int fd = _clip_parni(mp, 1);
	int flag = _clip_parl(mp, 2);
	int oflag;

	if (fd < 1 || fd > 32)
		return EG_ARG;
	fd = keys[fd];

	gz = (v24_port_t *) _clip_fetch_c_item(mp, fd, _C_ITEM_TYPE_COMPORT);
	if (!gz)
		return (EG_ARG);

	oflag = gz->OpenFlags & V24_RTS_CTS;

	if (mp->argc > 1)
	{
		if (flag)
			gz->OpenFlags |= V24_RTS_CTS;
		else
			gz->OpenFlags &= ~V24_RTS_CTS;

		v24SetParameters(gz, gz->Baudrate, gz->Datasize, gz->Parity);
	}

	_clip_retl(mp, oflag ? 1 : 0);

	return 0;
}
Beispiel #8
0
/*
       COM_TIMEOUT(<nComPort>,[<nTimeout]) --> nOldTimeout
       nTimeout in 1/10 sec
*/
int
clip_COM_TIMEOUT(ClipMachine * mp)
{
	v24_port_t *gz;
	int fd = _clip_parni(mp, 1);
	int to = _clip_parni(mp, 2);
	int oto;

	if (fd < 1 || fd > 32)
		return EG_ARG;
	fd = keys[fd];

	gz = (v24_port_t *) _clip_fetch_c_item(mp, fd, _C_ITEM_TYPE_COMPORT);

	if (gz == NULL)
	{
		return EG_ARG;
	}

	oto = gz->TimeoutValue;

	if (mp->argc > 1)
	{
		v24SetTimeouts(gz, to);
	}

	_clip_retni(mp, oto);
	return 0;
}
Beispiel #9
0
int
clip_COM_INIT(ClipMachine * mp)
{
	v24_port_t *gz;
	int ret = -1, *err;
	int fd = _clip_parni(mp, 1);
	int baud = 9600, data = 8, stop = 1;
	char *parity = "N";

	if (fd < 1 || fd > 32)
		return EG_ARG;
	fd = keys[fd];

	gz = (v24_port_t *) _clip_fetch_c_item(mp, fd, _C_ITEM_TYPE_COMPORT);

	if (!gz)
		return EG_ARG;

	if (_clip_parinfo(mp, 2) == NUMERIC_t)
		baud = _clip_parni(mp, 2);
	if (_clip_parinfo(mp, 3) == CHARACTER_t)
		parity = _clip_parc(mp, 3);
	if (_clip_parinfo(mp, 4) == NUMERIC_t)
		data = _clip_parni(mp, 4);
	if (_clip_parinfo(mp, 5) == NUMERIC_t)
		stop = _clip_parni(mp, 5);

	err = _clip_fetch_item(mp, HASH_ferror);

	ret = v24SetParameters(gz, baud_val(baud), data_val(data), parity_val(parity));

	_clip_retl(mp, ret ? 0 : 1);

	return 0;
}
Beispiel #10
0
int
clip_SQLPREPARE(ClipMachine * ClipMachineMemory)
{
   SQLCONN *conn = (SQLCONN *) _clip_fetch_c_item(ClipMachineMemory, _clip_parni(ClipMachineMemory, 1),
						  _C_ITEM_TYPE_SQL);

   char *sql = _clip_parc(ClipMachineMemory, 2);

   int res;

   if (!conn)
   {
      _clip_trap_err(ClipMachineMemory, 0, 0, 0, subsys, ER_NOCONNECT, er_noconnect);
      return 1;
   }
   if (!sql)
   {
      _clip_trap_err(ClipMachineMemory, 0, 0, 0, subsys, ER_NOSQL, er_nosql);
      return 1;
   }
   if ((res = conn->vtbl->prepare(ClipMachineMemory, conn, sql)) == -1)
      return 1;
   _clip_retni(ClipMachineMemory, res);
   return 0;
}
Beispiel #11
0
int clip_PG_OUT_TIMESTAMP(ClipMachine* mp){
	PG_ROWSET* rowset = (PG_ROWSET*)_clip_fetch_c_item(
		mp,_clip_parni(mp,1),_C_ITEM_TYPE_SQL);
	int totext = _clip_parl(mp,3);
	struct tm time;
	time_t bindate;
	char* date;
	int len;

	if(!rowset){
		_clip_trap_err(mp,0,0,0,subsys,ER_NOROWSET,er_norowset);
		return 1;
	}
	if((!totext)&&rowset->binary){
		
		memset(&time,0,sizeof(time));
		_clip_pardc(mp,2,&time.tm_year,&time.tm_mon,&time.tm_mday,&time.tm_wday);
		time.tm_year -= 1900;
		time.tm_mon--;

		bindate = mktime(&time);
		_clip_retcn(mp,(char*)(&bindate),4);
	} else {
		date = _clip_parcl(mp,2,&len);
	        _clip_retc(mp,date);

//		char str[25];
//		_pg_out_date(mp,str,rowset->conn->datestyle,rowset->conn->textdate,_clip_pardj(mp,2));
//		_clip_retc(mp,str);
	}
	return 0;
}
Beispiel #12
0
int clip_PG_IN_DATETIME(ClipMachine* mp){
	PG_ROWSET* rowset = (PG_ROWSET*)_clip_fetch_c_item(
		mp,_clip_parni(mp,1),_C_ITEM_TYPE_SQL);
	char* date;
	long dd,tt;

	if(!rowset){
		_clip_trap_err(mp,0,0,0,subsys,ER_NOROWSET,er_norowset);
		return 1;
	}
	if(rowset->binary){
		double d;
		int l;

		date = _clip_parcl(mp,2,&l);
		d = *(double*)date;
		dd = _clip_jdate(1,1,2000)+d/(24*60*60);
		tt = ((long long)d*1000) % (24*60*60*1000);
		if(tt < 0)
			tt += 24*60*60*1000;
		_clip_retdtj(mp,dd,tt);
	} else {
		int l;
		date = _clip_parcl(mp,2,&l);
		_pg_in_iso_datetime(date,l,&dd,&tt);
		_clip_retdtj(mp,dd,tt);
	}
	return 0;
}
Beispiel #13
0
int clip_PG_IN_DATE(ClipMachine* mp){
	PG_ROWSET* rowset = (PG_ROWSET*)_clip_fetch_c_item(
		mp,_clip_parni(mp,1),_C_ITEM_TYPE_SQL);
	char* date;
	int len;

	if(!rowset){
		_clip_trap_err(mp,0,0,0,subsys,ER_NOROWSET,er_norowset);
		return 1;
	}
	if(rowset->binary){
		date = _clip_parcl(mp,2,&len);
		if(date){
			_clip_retdj(mp,*((int*)date)+2451545);	// 2451545 - julian date
		}											// for 01/01/2000
	} else {
		int m,d,y;
		date = _clip_parc(mp,2);
		if(date){
			y = atoi(date);
			m = atoi(date+5);
			d = atoi(date+8);
			_clip_retdc(mp,y,m,d);
		} else {
			_clip_retdj(mp,0);
		}
	}
	return 0;
}
Beispiel #14
0
int
rdd_ii_skip(ClipMachine * ClipMachineMemory, int h, int recs, const char *__PROC__)
{
   RDD_ORDER *ro = (RDD_ORDER *) _clip_fetch_c_item(ClipMachineMemory, h, _C_ITEM_TYPE_I_ORDER);

   int i;

   int er;

   CHECKIO(ro);

   if (recs > 0)
   {
      for (i = 0; i < recs; i++)
      {
	 if ((er = ro->vtbl->ii_next(ClipMachineMemory, ro, __PROC__)))
	    return er;
      }
   }
   else
   {
      for (i = 0; i > recs; i--)
      {
	 if ((er = ro->vtbl->ii_prev(ClipMachineMemory, ro, __PROC__)))
	    return er;
      }
   }
   return 0;
}
Beispiel #15
0
int
clip_HS_DELETE(ClipMachine * ClipMachineMemory)
{
   const char *__PROC__ = "HS_DELETE";

   int h = _clip_parni(ClipMachineMemory, 1);

   unsigned int rec = _clip_parni(ClipMachineMemory, 2);

   HIPER *hs;

   int er;

   CHECKARG1(1, NUMERIC_type_of_ClipVarType);
   CHECKARG1(2, NUMERIC_type_of_ClipVarType);

   hs = _clip_fetch_c_item(ClipMachineMemory, h, _C_ITEM_TYPE_HIPER);
   if (!hs)
   {
      er = rdd_err(ClipMachineMemory, EG_ARG, 0, __FILE__, __LINE__, __PROC__, er_badhiper);
      goto err;
   }

   _rm_setbit(hs->map, hs->lastrec, rec);

   _clip_retni(ClipMachineMemory, 1);
   return 0;
 err:
   return er;
}
Beispiel #16
0
int
rdd_ii_gobottom(ClipMachine * ClipMachineMemory, int h, const char *__PROC__)
{
   RDD_ORDER *ro = (RDD_ORDER *) _clip_fetch_c_item(ClipMachineMemory, h, _C_ITEM_TYPE_I_ORDER);

   CHECKIO(ro);
   return ro->vtbl->ii_gobottom(ClipMachineMemory, ro, __PROC__);
}
Beispiel #17
0
int
clip_SQLFILLORDERS(ClipMachine * ClipMachineMemory)
{
   int rowset_item = _clip_parni(ClipMachineMemory, 1);

   SQLROWSET *rowset = (SQLROWSET *) _clip_fetch_c_item(ClipMachineMemory, rowset_item, _C_ITEM_TYPE_SQL);

   return sql_fillorders(ClipMachineMemory, rowset);
}
Beispiel #18
0
int
clip_UDPSENDTO(ClipMachine *mp)
// UDPSENDTO( nCF, cIPaddr, nPort, cMsg, [nLen], [nTimeout] )
{
	int fd = _clip_parni(mp, 1);
	C_FILE *cf = (C_FILE *) _clip_fetch_c_item(mp, fd, _C_ITEM_TYPE_FILE);
	char *ipaddr = _clip_parc(mp, 2);
	int port     = _clip_parni(mp,3), lenbuf;
	char *msg    = _clip_parcl(mp,4, &lenbuf);
	long len     = _clip_parnl(mp,5);
	int timeout  = _clip_parni(mp,6);
	int ret = -1, *err = _clip_fetch_item(mp, HASH_ferror);
	struct sockaddr_in sin;
	struct timeval tv;
	fd_set set;

	if (cf == NULL || cf->type != FT_SOCKET)
		*err = EBADF;
	else
	{
		if (_clip_parinfo(mp, 5) != NUMERIC_t)
			len = lenbuf;
		if (len > lenbuf)
			len = lenbuf;

		if (_clip_parinfo(mp, 6) != NUMERIC_t)
			timeout = cf->timeout;

		if ( timeout >= 0 ) {
			FD_ZERO(&set);
			FD_SET(cf->fileno, &set);
			tv.tv_sec = timeout / 1000;
			tv.tv_usec = (timeout % 1000) * 1000;
		}

		memset( (void *) &sin, 0, sizeof(sin) );
		sin.sin_family      = PF_INET;
		sin.sin_addr.s_addr = inet_addr(ipaddr);
		sin.sin_port        = htons(port);

		if ( timeout < 0 || select( cf->fileno+1, NULL, &set, NULL, &tv ) > 0 )
		{
			ret = sendto( cf->fileno, msg, len, 0, (struct sockaddr *) &sin, sizeof(sin) );
			*err = ret == -1 ? errno : 0;
		}
		else
#ifdef OS_MINGW
			*err = EAGAIN;
#else
			*err = ETIMEDOUT;
#endif

	}

	_clip_retnl(mp, ret);
	return 0;
}
Beispiel #19
0
int clip_PG_ISBINARY(ClipMachine* mp){
	PG_ROWSET* rowset = (PG_ROWSET*)_clip_fetch_c_item(
		mp,_clip_parni(mp,1),_C_ITEM_TYPE_SQL);

	if(!rowset){
		_clip_trap_err(mp,0,0,0,subsys,ER_NOROWSET,er_norowset);
		return 1;
	}
	_clip_retl(mp,rowset->binary);
	return 0;
}
Beispiel #20
0
int
clip_FSEEK(ClipMachine * ClipMachineMemory)
{
   int fd = _clip_parni(ClipMachineMemory, 1);

   long nb = _clip_parnl(ClipMachineMemory, 2);

   int whence = SEEK_SET, w = _clip_parni(ClipMachineMemory, 3), *err, ret = -1;

   C_FILE *cf = _clip_fetch_c_item(ClipMachineMemory, fd, _C_ITEM_TYPE_FILE);

   err = _clip_fetch_item(ClipMachineMemory, HASH_ferror);
   *err = 0;
   _clip_retnl(ClipMachineMemory, -1);

   if (cf == NULL)
   {
      *err = EBADF;
      return 0;
   }
   else if (cf->type_of_C_FILE == FT_FIFO || cf->type_of_C_FILE == FT_SOCKET)
   {
      *err = ESPIPE;
      return 0;
   }

   switch (w)
   {
   case 0:
      whence = SEEK_SET;
      break;
   case 1:
      whence = SEEK_CUR;
      break;
   case 2:
      whence = SEEK_END;
      break;
   }
   if (cf->file_of_C_FILE == NULL || (cf->stat_of_C_FILE & FS_BUFFERED) == 0)
   {
      if ((ret = lseek(cf->fileno_of_C_FILE, nb, whence)) == -1)
	 *err = errno;
   }
   else
   {
      if ((ret = fseek(cf->file_of_C_FILE, nb, whence)) == -1)
	 *err = errno;
      else
	 ret = ftell(cf->file_of_C_FILE);
   }
   _clip_retnl(ClipMachineMemory, ret);
   return 0;
}
Beispiel #21
0
int
clip_TCPGETPEERNAME(ClipMachine * ClipMachineMemory)
/* Get the address of the peer to which a socket is connected.
   using : tcpGetPeerName( sock, @cIPadr ) ->  0 - OK  | -1 == error
*/
{
   int ret = -1, sln;

   int *err = _clip_fetch_item(ClipMachineMemory, HASH_ferror);

   int fd = _clip_parni(ClipMachineMemory, 1);

   C_FILE *cf = _clip_fetch_c_item(ClipMachineMemory, fd, _C_ITEM_TYPE_FILE);

   char ipaddr[INET_ADDRSTRLEN];

   struct sockaddr_in sin;

   _clip_retnl(ClipMachineMemory, -1);

   if (cf == NULL || cf->type_of_C_FILE != FT_SOCKET)
   {
      *err = EBADF;
   }
   else
   {
      sln = sizeof(sin);
      ret = getpeername(cf->fileno_of_C_FILE, (struct sockaddr *) &sin, (socklen_t *) (&sln));

      *err = ret < 0 ? errno : 0;

      if (ret >= 0)
      {
#ifdef _WIN32
	 _clip_storc(ClipMachineMemory, inet_ntoa(*(struct in_addr *) ipaddr), 2, 0);
#else
	 if (inet_ntop(PF_INET, &sin.sin_addr.s_addr, ipaddr, INET_ADDRSTRLEN) == NULL)
	    ret = -1;
	 else
	    _clip_storc(ClipMachineMemory, ipaddr, 2, 0);
#endif
	 _clip_storni(ClipMachineMemory, ntohs(sin.sin_port), 3, 0);
      }
      else
	 _clip_storni(ClipMachineMemory, -1, 3, 0);

   }

   _clip_retnl(ClipMachineMemory, ret);
   return 0;
}
Beispiel #22
0
int
clip_SQLBOF(ClipMachine * ClipMachineMemory)
{
   SQLROWSET *rowset = (SQLROWSET *) _clip_fetch_c_item(ClipMachineMemory, _clip_parni(ClipMachineMemory, 1),
							_C_ITEM_TYPE_SQL);

   if (!rowset)
   {
      _clip_trap_err(ClipMachineMemory, 0, 0, 0, subsys, ER_NOROWSET, er_norowset);
      return 1;
   }
   _clip_retl(ClipMachineMemory, rowset->bof ? 1 : 0);
   return 0;
}
Beispiel #23
0
int
clip_SQLSETVALUE(ClipMachine * ClipMachineMemory)
{
   SQLROWSET *rowset = (SQLROWSET *) _clip_fetch_c_item(ClipMachineMemory, _clip_parni(ClipMachineMemory, 1),
							_C_ITEM_TYPE_SQL);

   int fieldno = _clip_parni(ClipMachineMemory, 2) - 1;

   int len, k;

   char *value = _clip_parcl(ClipMachineMemory, 3, &len);

   SQLORDER *order;

   if (!rowset)
   {
      _clip_trap_err(ClipMachineMemory, 0, 0, 0, subsys, ER_NOROWSET, er_norowset);
      return 1;
   }
   if (fieldno < 0 || fieldno >= rowset->nfields)
   {
      _clip_trap_err(ClipMachineMemory, 0, 0, 0, subsys, ER_NOFIELD, er_nofield);
      return 1;
   }

   if (!value)
      len = 0;
   if (!rowset->newrec)
   {
      for (k = 0; k < rowset->ntags; k++)
      {
	 order = (SQLORDER *) HashTable_fetch(rowset->orders, rowset->taghashes[k]);
	 if (sql_searchtree(ClipMachineMemory, rowset, order))
	    return 1;
	 if (sql_orderdel(ClipMachineMemory, rowset, rowset->taghashes[k]))
	    return 1;
      }
   }
   rowset->conn->vtbl->setvalue(rowset, fieldno, value, len);
   if (!rowset->newrec)
   {
      for (k = 0; k < rowset->ntags; k++)
      {
	 order = (SQLORDER *) HashTable_fetch(rowset->orders, rowset->taghashes[k]);
	 if (sql_orderadd(ClipMachineMemory, rowset, rowset->taghashes[k]))
	    return 1;
      }
   }
   return 0;
}
Beispiel #24
0
CLIP_DLLEXPORT C_object*
_fetch_cobjectn(ClipMachine* cm, int h)
{
	C_object* cobj;

	cobj = (C_object*)_clip_fetch_c_item(cm,h,_C_ITEM_TYPE_WIDGET);

	if(!cobj)
	{
/*		_clip_trap_err(cm,EG_ARG,0,0,"CLIP_GTK_SYSTEM",
			EG_ARG,"Bad widget descriptor"); */
		return NULL;
	}
	return cobj;
}
Beispiel #25
0
CLIP_DLLEXPORT C_object*
_fetch_cobject(ClipMachine* cm, ClipVar* cv)
{
	C_object* cobj;

	if (!cv) return NULL;

	if (cv->t.type == NUMERIC_t)
	{
		cobj = (C_object*)_clip_fetch_c_item(cm,cv->n.d,
			_C_ITEM_TYPE_WIDGET);
	}
	else
	{
		if (cv->t.type == MAP_t)
		{
			double h;
			_clip_mgetn(cm, cv, HASH_HANDLE, &h);
			cobj = (C_object *) _clip_fetch_c_item(cm, (int) h,
				_C_ITEM_TYPE_WIDGET);
		}
		else
		{
/*			_clip_trap_err(cm,EG_ARG,0,0,"CLIP_GTK_SYSTEM",
				EG_ARG,"Bad widget descriptor"); */
			return NULL;
		}
	}
	if(!cobj)
	{
/*		_clip_trap_err(cm,EG_ARG,0,0,"CLIP_GTK_SYSTEM",
			EG_ARG,"Bad widget descriptor"); */
		return NULL;
	}
	return cobj;
}
Beispiel #26
0
void *
map_get_data(ClipMachine * cm, ClipVar * map)
{
	double h;
	C_widget *cwid;

	if (!map || map->t.type != MAP_t) goto err;
	if (_clip_mgetn(cm, map, HASH_HANDLE, &h) != 0) goto err;
	cwid = (C_widget *) _clip_fetch_c_item(cm, (int) h, _C_ITEM_TYPE_WIDGET);
	if (cwid == NULL || cwid->data == NULL) goto err;

	return cwid->data;
err:
	return NULL;
}
Beispiel #27
0
CLIP_DLLEXPORT C_widget*
_fetch_cw_opt(ClipMachine* cm)
{
	C_widget* cwid;

	if (_clip_parinfo(cm,1)==UNDEF_t)
		return NULL;
	if (_clip_parinfo(cm,1)==NUMERIC_t)
	{
		cwid = (C_widget*)_clip_fetch_c_item(cm,_clip_parni(cm,1),
			_C_ITEM_TYPE_WIDGET);
	}
	else
	{
		if (_clip_parinfo(cm,1)==MAP_t)
		{
			double h;
			_clip_mgetn(cm, _clip_spar(cm,1), HASH_HANDLE, &h);
			cwid = (C_widget *) _clip_fetch_c_item(cm, (int) h,
				_C_ITEM_TYPE_WIDGET);
		}
		else
		{
			_clip_trap_err(cm,EG_ARG,0,0,"CLIP_GTK_SYSTEM",
				EG_ARG,"Bad widget descriptor");
			return NULL;
		}
	}
	if(!cwid)
	{
		_clip_trap_err(cm,EG_ARG,0,0,"CLIP_GTK_SYSTEM",
			EG_ARG,"Bad widget descriptor");
		return NULL;
	}
	return cwid;
}
Beispiel #28
0
int
clip_SQLFETCHED(ClipMachine * ClipMachineMemory)
{
   int rowset_item = _clip_parni(ClipMachineMemory, 1);

   SQLROWSET *rowset = (SQLROWSET *) _clip_fetch_c_item(ClipMachineMemory, rowset_item, _C_ITEM_TYPE_SQL);

   if (!rowset)
   {
      _clip_trap_err(ClipMachineMemory, 0, 0, 0, subsys, ER_NOROWSET, er_norowset);
      return 1;
   }

   _clip_retni(ClipMachineMemory, rowset->loaded);
   return 0;
}
Beispiel #29
0
int
clip_SQLBLOBCLOSE(ClipMachine * ClipMachineMemory)
{
   int conn_item = _clip_parni(ClipMachineMemory, 1);

   SQLCONN *conn = (SQLCONN *) _clip_fetch_c_item(ClipMachineMemory, conn_item, _C_ITEM_TYPE_SQL);

   int oid_fd = _clip_parni(ClipMachineMemory, 2);

   if (!conn)
   {
      _clip_trap_err(ClipMachineMemory, 0, 0, 0, subsys, ER_NOCONNECT, er_noconnect);
      return 1;
   }
   if (conn->vtbl->blob_close)
      return conn->vtbl->blob_close(ClipMachineMemory, conn, oid_fd);
   return 0;
}
Beispiel #30
0
int
rdd_ii_opentag(ClipMachine * ClipMachineMemory, int h, const char *tag, const char *__PROC__)
{
   RDD_INDEX *ri = (RDD_INDEX *) _clip_fetch_c_item(ClipMachineMemory, h, _C_ITEM_TYPE_I_INDEX);

   RDD_ORDER *ro;

   int er;

   CHECKII(ri);

   if ((er = ri->vtbl->ii_opentag(ClipMachineMemory, ri, tag, &ro, __PROC__)))
      return er;

   ro->c_item = _clip_store_c_item(ClipMachineMemory, ro, _C_ITEM_TYPE_I_ORDER, destroy_rdd_i_order);
   _clip_retni(ClipMachineMemory, ro->c_item);
   return 0;
}