Пример #1
0
inline
CType
CObject::GetType(void) const
{
    // ???
    PyObject* obj = PyObject_Type (Get());
    if ( !obj ) {
        throw CTypeError("Type does not exist");
    }
    return CType(obj, eTakeOwnership);
}
Пример #2
0
void CMyContextBase::InitContextClass(_S_MyContextBaseInfo* pInfo)
{
	if(pInfo)
	{
		if(pInfo->methCount)
		{
			pInfo->pMethMap=new CBLMap;
			const _S_MethDef* pDef=pInfo->pMethodDef;
			for(int i=0;i<pInfo->methCount;)
			{
				pInfo->pMethMap->InsertKey(pDef->Names[0],i);
				pInfo->pMethMap->InsertKey(pDef->Names[1],i++);
				pDef++;
			}
			pInfo->pMethMap->Optimize();
		}

		if(pInfo->propCount)
		{
			pInfo->pPropMap=new CBLMap;
			const _S_PropDef* pProp=pInfo->pPropDef;
			for(int i=0;i<pInfo->propCount;)
			{
				pInfo->pPropMap->InsertKey(pProp->Names[0],i);
				pInfo->pPropMap->InsertKey(pProp->Names[1],i++);
				pProp++;
			}
			pInfo->pPropMap->Optimize();
		}

		if (pInfo->RegToCreate)
		{
			CBLContext::RegisterContextClass((CRuntimeClass*)pInfo->pRTC,pInfo->EngTypeString,CType(100));
			CBLContext::RegisterContextClass((CRuntimeClass*)pInfo->pRTC,pInfo->RusTypeString,CType(100));
		}

		if(pInfo->pInitFunc)
			pInfo->pInitFunc();
	}
}
Пример #3
0
Message *GetMdsMsg(int id, int *status) {
  MsgHdr header;
  Message *msg = 0;
  int msglen = 0;
  //MdsSetClientAddr(0);
  *status = 0;
  *status = GetBytes(id, (void *)&header, sizeof(MsgHdr));
  if (*status &1){
    if ( Endian(header.client_type) != Endian(ClientType()) ) FlipHeader(&header);
#ifdef DEBUG
    printf("msglen = %d\nstatus = %d\nlength = %d\nnargs = %d\ndescriptor_idx = %d\nmessage_id = %d\ndtype = %d\n",
               header.msglen,header.status,header.length,header.nargs,header.descriptor_idx,header.message_id,header.dtype);
    printf("client_type = %d\nndims = %d\n",header.client_type,header.ndims);
#endif
    if (CType(header.client_type) > CRAY_CLIENT || header.ndims > MAX_DIMS)
    {
      DisconnectConnection(id);
      fprintf(stderr,"\rGetMdsMsg shutdown connection %d: bad msg header, header.ndims=%d, client_type=%d\n",id,header.ndims,CType(header.client_type));
      *status = 0;
      return 0;
    }  
    msglen = header.msglen;
    msg = malloc(header.msglen);
    msg->h = header;
    *status = GetBytes(id, msg->bytes, msglen - sizeof(MsgHdr));
    if (*status & 1 && IsCompressed(header.client_type))
    {
      Message *m;
      unsigned long dlen;
      memcpy(&msglen, msg->bytes, 4);
      if (Endian(header.client_type) != Endian(ClientType()))
        FlipBytes(4,(char *)&msglen);
      m = malloc(msglen);
      m->h = header;
      dlen = msglen - sizeof(MsgHdr);
      *status = uncompress(m->bytes, &dlen, msg->bytes + 4, header.msglen - sizeof(MsgHdr) - 4) == 0;
      if (*status & 1)
      {
	m->h.msglen = msglen;
        free(msg);
	msg = m;
      }
      else
	free(m);
    }
    if (*status & 1 && (Endian(header.client_type) != Endian(ClientType())))
      FlipData(msg);
  }
  return msg;
}
Пример #4
0
mdsip_message_t *mdsip_get_message(void *io_handle, int *status)
{
  mdsip_message_header_t header;
  globus_result_t result;
  mdsip_message_t *msg = NULL;
  int msglen = 0;
  globus_size_t nbytes;
  *status = 0;
  result = globus_xio_read(io_handle, (globus_byte_t *)&header, sizeof(header),sizeof(header),&nbytes, NULL);
  mdsip_test_status(io_handle,result,"mdsip_get_message, globus_xio_read");
  if (result != GLOBUS_SUCCESS) return NULL;
  if ( Endian(header.client_type) != Endian(mdsip_client_type()) )
    mdsip_flip_header(&header);
  if ( CType(header.client_type) > CRAY_CLIENT || header.ndims > MAX_DIMS || header.msglen < sizeof(header))
  {
    globus_xio_close(io_handle,NULL);
    fprintf(stderr,"ERROR: mdsip_get_message, bad message header - closing connection\n");
    return NULL;
  }
  msglen = header.msglen;
  msg = malloc(header.msglen);
  msg->h = header;
  if (msglen > sizeof(header))
  {
    result = globus_xio_read(io_handle,msg->bytes,msglen - sizeof(header),msglen - sizeof(header),&nbytes,NULL);
    mdsip_test_status(io_handle,result,"mdsip_get_message, globus_xio_read");
  }
  if (result != GLOBUS_SUCCESS)
  {
    free(msg);
    return NULL;
  }
  if (Endian(header.client_type) != Endian(mdsip_client_type()))
    mdsip_flip_data(msg);
  *status = 1;
  return msg;
}
Пример #5
0
void ViterbiDecoder::Run() {

	int      DataLength, CodeLength, i, j, index;
	int     *g_encoder;
	int      nn, KK, mm, max_states, code_type, dec_type;
	double   elm;
	float   *input_c_float;
	int     *output_u_int;
	int     *out0, *out1, *state0, *state1;


	///////////////////////////////////////////////
	///////////////////////////////////////////////
	///////////////////////////////////////////////

	  /* first input is the data word */
	  gsl_vector_class inputobj = vin1.GetDataObj();
	
	  CodeLength = inputobj.vec->size; /* number of data bits */
	  
	  /* convert the input into float */			
	  input_c_float = (float *)calloc( CodeLength, sizeof(float) );
	  for (i=0;i<CodeLength;i++)
	    input_c_float[i] = gsl_vector_get(inputobj.vec,i);


	  /* default values */
	  code_type = CType();

	  nn = gp_mat->size1;
	  KK = gp_mat->size2;
	  
	  mm = KK - 1;
	  max_states = 1 << mm;			/* 2^mm */
	  
	  /* determine the DataLength */
	  DataLength = (CodeLength/nn)-mm;	

	  /* Convert code polynomial to binary */
	  g_encoder = (int*)calloc(nn, sizeof(int) );
	  
	  for (i = 0;i<nn;i++) {
	    for (j=0;j<KK;j++) {
	      elm = gsl_matrix_get(gp_mat,i,j);
	      if (elm != 0) {
		g_encoder[i] = g_encoder[i] + (int) pow(2,(KK-j-1)); 
	      }
	    }
	  }


	/* create appropriate transition matrices */
	  out0 = (int *)calloc( max_states, sizeof(int) );
	  out1 = (int *)calloc( max_states, sizeof(int) );
	  state0 = (int *)calloc( max_states, sizeof(int) );
	  state1 = (int *)calloc( max_states, sizeof(int) );


	if ( code_type ) {
		nsc_transit( out0, state0, 0, g_encoder, KK, nn );
		nsc_transit( out1, state1, 1, g_encoder, KK, nn );
	} else {
		rsc_transit( out0, state0, 0, g_encoder, KK, nn );
		rsc_transit( out1, state1, 1, g_encoder, KK, nn );
	}

	
	gsl_vector_uint *output = gsl_vector_uint_alloc(DataLength);
	output_u_int = (int *)calloc( DataLength, sizeof(int) );


	/* Run the Viterib algorithm */
	Viterbi( output_u_int, out0, state0, out1, state1,
		input_c_float, KK, nn, DataLength ); 

	/* cast to outputs */
	for (j=0;j<DataLength;j++) {
	  gsl_vector_uint_set(output,j,output_u_int[j]);
	}



	gsl_vector_uint_class outobj(output);
	//	outobj.show();

	vout1.DeliverDataObj(outobj);

	///////////////////////////////////////////////
	///////////////////////////////////////////////
	///////////////////////////////////////////////

	
	/* Clean up memory */
	free( out0 );
	free( out1 );
	free( state0 );
	free( state1 );
	free( g_encoder );
	free( input_c_float );
	free( output_u_int );

	gsl_vector_uint_free(output);


}
Пример #6
0
inline Mat< CType(RType) > asMat(Rcpp::Matrix<RType>& m){
	return Mat< CType(RType) >(m.begin(), m.nrow(), m.ncol());
}
Пример #7
0
inline Vec< CType(RType) > asVec(Rcpp::Vector<RType>& v){
	return Vec< CType(RType) >(v.begin(), v.length());
}