示例#1
0
/** Convert a PCSCHEMA to a human-readable JSON string */
char * 
pc_schema_to_json(const PCSCHEMA *pcs)
{
	int i;
	char *str;
	stringbuffer_t *sb = stringbuffer_create();
	stringbuffer_append(sb, "{");
	
	if ( pcs->pcid )
		stringbuffer_aprintf(sb, "\"pcid\" : %d,\n", pcs->pcid);
	if ( pcs->srid )
		stringbuffer_aprintf(sb, "\"srid\" : %d,\n", pcs->srid);
	if ( pcs->compression )
		stringbuffer_aprintf(sb, "\"compression\" : %d,\n", pcs->compression);


	if ( pcs->ndims )
	{
		
		stringbuffer_append(sb, "\"dims\" : [\n");
	
		for ( i = 0; i < pcs->ndims; i++ )
		{
			if ( pcs->dims[i] )
			{
				PCDIMENSION *d = pcs->dims[i];

				if ( i ) stringbuffer_append(sb, ",");
				stringbuffer_append(sb, "\n { \n");

				if ( d->name )
					stringbuffer_aprintf(sb, "  \"name\" : \"%s\",\n", d->name);
				if ( d->description )
					stringbuffer_aprintf(sb, "  \"description\" : \"%s\",\n", d->description);

				stringbuffer_aprintf(sb, "  \"size\" : %d,\n", d->size);
				stringbuffer_aprintf(sb, "  \"byteoffset\" : %d,\n", d->byteoffset);
				stringbuffer_aprintf(sb, "  \"scale\" : %g,\n", d->scale);
				stringbuffer_aprintf(sb, "  \"interpretation\" : \"%s\",\n", pc_interpretation_string(d->interpretation));
				stringbuffer_aprintf(sb, "  \"offset\" : %g,\n", d->offset);

				stringbuffer_aprintf(sb, "  \"active\" : %d\n", d->active);
				stringbuffer_append(sb, " }");
			}
		}
		stringbuffer_append(sb, "\n]\n");
	}
	stringbuffer_append(sb, "}\n");
	str = stringbuffer_getstringcopy(sb);
	stringbuffer_destroy(sb);
	return str;
}
示例#2
0
/**@brief * Convert a PCSDIMENSION to a human-readable JSON string 
 * @param the PCDIMENSION we want to print
 * @return q pointer to the string buff describing the object
 * */
char *
pc_dimension_to_json(const PCDIMENSION *d)
{
	int i;
	char *str;
	stringbuffer_t *sb = stringbuffer_create();
	stringbuffer_append(sb, "{");

	 
			if ( d )
			{
				 

				if ( i ) stringbuffer_append(sb, ",");
				stringbuffer_append(sb, "\n { \n");

				if ( d->name )
					stringbuffer_aprintf(sb, "  \"name\" : \"%s\",\n", d->name);
				if ( d->description )
					stringbuffer_aprintf(sb, "  \"description\" : \"%s\",\n", d->description);

				stringbuffer_aprintf(sb, "  \"size\" : %d,\n", d->size);
				stringbuffer_aprintf(sb, "  \"byteoffset\" : %d,\n", d->byteoffset);
				stringbuffer_aprintf(sb, "  \"scale\" : %g,\n", d->scale);
				stringbuffer_aprintf(sb, "  \"interpretation\" : \"%s\",\n", pc_interpretation_string(d->interpretation));
				stringbuffer_aprintf(sb, "  \"offset\" : %g,\n", d->offset);

				stringbuffer_aprintf(sb, "  \"active\" : %d\n", d->active);
				stringbuffer_append(sb, " }");
			}
		 
	stringbuffer_append(sb, "}\n");
	str = stringbuffer_getstringcopy(sb);
	stringbuffer_destroy(sb);
	return str;
}
示例#3
0
int
pc_double_to_ptr(uint8_t *ptr, uint32_t interpretation, double val)
{
	
	switch( interpretation )
	{
	case PC_UINT8:
	{
		uint8_t v = (uint8_t)lround(val);
		memcpy(ptr, &(v), sizeof(uint8_t));
		break;
	}
	case PC_UINT16:
	{
		uint16_t v = (uint16_t)lround(val);
		memcpy(ptr, &(v), sizeof(uint16_t));
		break;
	}
	case PC_UINT32:
	{
		uint32_t v = (uint32_t)lround(val);
		memcpy(ptr, &(v), sizeof(uint32_t));
		break;
	}
	case PC_UINT64:
	{
		uint64_t v = (uint64_t)lround(val);
		memcpy(ptr, &(v), sizeof(uint64_t));
		break;
	}
	case PC_INT8:
	{
		int8_t v = (int8_t)lround(val);
		memcpy(ptr, &(v), sizeof(int8_t));
		break;
	}
	case PC_INT16:
	{
		int16_t v = (int16_t)lround(val);
		memcpy(ptr, &(v), sizeof(int16_t));
		break;
	}
	case PC_INT32:
	{
		int32_t v = (int32_t)lround(val);
		memcpy(ptr, &(v), sizeof(int32_t));
		break;
	}
	case PC_INT64:
	{
		int64_t v = (int64_t)lround(val);
		memcpy(ptr, &(v), sizeof(int64_t));
		break;
	}
	case PC_FLOAT:
	{
		float v = (float)val;
		memcpy(ptr, &(v), sizeof(float));
		break;
	}
	case PC_DOUBLE:
	{
		double v = val;
		memcpy(ptr, &(v), sizeof(double));
		break;
	}
	default:
	{
		pcerror("unknown interpretation type \"%s\" encountered in pc_double_to_ptr", pc_interpretation_string( interpretation ));
		return PC_FAILURE;
	}
	}
	return PC_SUCCESS;
}