示例#1
0
文件: manager.cpp 项目: ankitC/meld
void
manager::event_tuple_send(const db::node *from, const db::node *to, const vm::tuple *tpl)
{
	DECLARE_JSON("tuple_send");
	
	ADD_FIELD("from", (int)(from->get_id()));
	ADD_FIELD("to", (int)(to->get_id()));
	ADD_TUPLE_FIELD(tpl);
	
   SEND_CURRENT_CLIENT();
}
示例#2
0
文件: manager.cpp 项目: ankitC/meld
void
manager::event_set_edge_label(const vm::node_val from, const vm::node_val to, const string& label)
{
	DECLARE_JSON("set_edge_label");
	
	ADD_FIELD("from", (int)from);
	ADD_FIELD("to", (int)to);
	ADD_FIELD("label", label);
	
   SEND_CURRENT_CLIENT();
}
示例#3
0
文件: manager.cpp 项目: ankitC/meld
void
manager::event_set_color(const db::node *n, const int r, const int g, const int b)
{
	DECLARE_JSON("set_color");
	
	ADD_NODE_FIELD(n);
	ADD_FIELD("r", r);
	ADD_FIELD("g", g);
	ADD_FIELD("b", b);
	
   SEND_CURRENT_CLIENT();
}
示例#4
0
int CMP4Tag::WriteAacTag(char *Filename)
{
char	buf[512], *faac_id_string, *faac_copyright_string;
ID3_Tag id3Tag;
FILE *file;

	if((file=fopen(Filename,"r"))==NULL)
	{
	char buf[25+MAX_PATH+1];
		sprintf(buf,"WriteAacTag: can't open \"%s\"",Filename);
		MessageBox(NULL,buf,NULL,MB_OK);
		return 1;
	}
	else
		fclose(file);
	id3Tag.Link(Filename);

	sprintf(buf, "FAAC v%s", (faacEncGetVersion(&faac_id_string, &faac_copyright_string)==FAAC_CFG_VERSION) ? faac_id_string : " wrong libfaac version");
	ADD_FIELD(id3Tag,ID3FID_ENCODEDBY,ID3FN_TEXT,buf);

	ADD_FIELD(id3Tag,ID3FID_LEADARTIST,ID3FN_TEXT,artist);
	ADD_FIELD(id3Tag,ID3FID_COMPOSER,ID3FN_TEXT,writer);
	ADD_FIELD(id3Tag,ID3FID_TITLE,ID3FN_TEXT,title);
	ADD_FIELD(id3Tag,ID3FID_ALBUM,ID3FN_TEXT,album);
	sprintf(buf,"%d",trackno);
	ADD_FIELD(id3Tag,ID3FID_TRACKNUM,ID3FN_TEXT,buf);
	ADD_FIELD(id3Tag,ID3FID_YEAR,ID3FN_TEXT,year);
	ADD_FIELD(id3Tag,ID3FID_CONTENTTYPE,ID3FN_TEXT,genre);
	ADD_FIELD(id3Tag,ID3FID_COMMENT,ID3FN_TEXT,comment);
	art.size=ReadCoverArtFile(artFilename,&art.data);
	if(art.size)
	{
	ID3_Frame *NewFrame=new ID3_Frame(ID3FID_PICTURE);
	char name[_MAX_FNAME], ext[_MAX_EXT];
		_splitpath(artFilename,NULL,NULL,name,ext);

		NewFrame->Field(ID3FN_DESCRIPTION)=name;
	char buf[15];
		sprintf(buf,"image/%s",check_image_header(art.data)==2 ? "jpeg" : strlwr(ext+1));
		NewFrame->Field(ID3FN_MIMETYPE)=buf;
//		NewFrame->Field(ID3FN_IMAGEFORMAT)=;
		NewFrame->Field(ID3FN_PICTURETYPE)=(DWORD)art.pictureType;
		NewFrame->Field(ID3FN_DATA).Set((BYTE *)art.data,art.size);
		id3Tag.AttachFrame(NewFrame);
	}

	// setup all our rendering parameters
    id3Tag.SetUnsync(false);
    id3Tag.SetExtendedHeader(true);
    id3Tag.SetCompression(true);
    id3Tag.SetPadding(true);
 
	// write any changes to the file
    id3Tag.Update();

	FREE_ARRAY(art.data);
	return 0;
}
示例#5
0
static void
now_playing(sr_session_t *s,
		sr_track_t *t)
{
	struct sr_session_priv *priv = s->priv;
	SoupMessage *message;
	GString *data;
	char *artist, *title;
	char *album = NULL, *mbid = NULL;

	/* haven't got the session yet? */
	if (!priv->session_id)
		return;

	data = g_string_new(NULL);
	g_string_append_printf(data, "s=%s", priv->session_id);

	artist = soup_uri_encode(t->artist, EXTRA_URI_ENCODE_CHARS);
	title = soup_uri_encode(t->title, EXTRA_URI_ENCODE_CHARS);
	if (t->album)
		album = soup_uri_encode(t->album, EXTRA_URI_ENCODE_CHARS);
	if (t->mbid)
		mbid = soup_uri_encode(t->mbid, EXTRA_URI_ENCODE_CHARS);

	/* required fields */
	g_string_append_printf(data, "&a=%s&t=%s", artist, title);

	/* optional fields */
	ADD_FIELD("b", "s", album);
	ADD_FIELD("l", "i", t->length);
	ADD_FIELD("n", "i", t->position);
	ADD_FIELD("m", "s", mbid);

	g_free(artist);
	g_free(title);
	g_free(album);
	g_free(mbid);

	message = soup_message_new("POST", priv->now_playing_url);
	soup_message_set_request(message,
			"application/x-www-form-urlencoded",
			SOUP_MEMORY_TAKE,
			data->str,
			data->len);
	soup_session_queue_message(priv->soup,
			message,
			now_playing_cb,
			s);
	g_string_free(data, false); /* soup gets ownership */
}
示例#6
0
文件: manager.cpp 项目: ankitC/meld
void
manager::event_program(vm::program *pgrm)
{
	DECLARE_JSON("program");

	ADD_FIELD("program", pgrm->dump_json());

	Array rules;

   for(size_t i(0); i < pgrm->num_rules(); i++)
      UI_ADD_ELEM(rules, pgrm->get_rule(i)->get_string());

   ADD_FIELD("rules", rules);

   SEND_CURRENT_CLIENT();
}
示例#7
0
文件: manager.cpp 项目: ankitC/meld
void
manager::event_database(db::database *db)
{
	DECLARE_JSON("database");

	ADD_FIELD("database", db->dump_json());
		
   SEND_CURRENT_CLIENT();
}
示例#8
0
文件: manager.cpp 项目: ankitC/meld
void
manager::event_rule_applied(const db::node *who, const vm::rule *rule)
{
   DECLARE_JSON("rule_applied");

   ADD_NODE_FIELD(who);
   ADD_FIELD("rule", (int)rule->get_id());

   SEND_CURRENT_CLIENT();
}
示例#9
0
文件: manager.cpp 项目: ankitC/meld
void
manager::event_new_node(const db::node *node)
{
   DECLARE_JSON("new_node");
   
   ADD_NODE_FIELD(node);
   ADD_FIELD("translated", (int)node->get_translated_id());

   SEND_CURRENT_CLIENT();
}
示例#10
0
文件: manager.cpp 项目: ankitC/meld
void
manager::event_program_running(void)
{
   client *cl((client*)pthread_getspecific(client_key));

	DECLARE_JSON("program_running");
		
	ADD_FIELD("running", cl->all->PROGRAM->get_name());
		
   SEND_CURRENT_CLIENT();
}
示例#11
0
文件: darrays.c 项目: bq/qeo-core
void test_dyn_array2 (void)
{
	DDS_DynamicTypeSupport ts;
	DDS_DynamicTypeBuilder sb1, sb1a, abi64, abs1a;
	DDS_DynamicType s1, s1a, ai64, as1a;
	DDS_TypeDescriptor *desc;
	DDS_MemberDescriptor *md;
	DDS_DynamicData dd, dds, dda, ddas, dd2;
	DDS_ReturnCode_t rc;
	DDS_BoundSeq bounds;
	unsigned i, j;

	v_printf ("test_dyn_array2 - ");

	/* 1. Create the type. */
	desc = DDS_TypeDescriptor__alloc ();
	fail_unless (desc != NULL);

	desc->kind = DDS_STRUCTURE_TYPE;
	desc->name = "dstruct2a";
	sb1a = DDS_DynamicTypeBuilderFactory_create_type (desc);
	fail_unless (sb1a != NULL);

	md = DDS_MemberDescriptor__alloc ();
	fail_unless (md != NULL);

	DDS_SEQ_INIT (bounds);
	dds_seq_require (&bounds, 1);
	DDS_SEQ_LENGTH (bounds) = 1;
	DDS_SEQ_ITEM (bounds, 0) = 5;

	abi64 = DDS_DynamicTypeBuilderFactory_create_array_type (
		DDS_DynamicTypeBuilderFactory_get_primitive_type (DDS_INT_64_TYPE),
		&bounds);
	fail_unless (abi64 != NULL);

	ai64 = DDS_DynamicTypeBuilder_build (abi64);
	fail_unless (ai64 != NULL);

	DDS_DynamicTypeBuilderFactory_delete_type (abi64);

	md->name = "i64";
	md->index = md->id = 0;
	md->type = ai64;

	rc = DDS_DynamicTypeBuilder_add_member (sb1a, md);
	fail_unless (rc == DDS_RETCODE_OK);

	ADD_FIELD (sb1a, md, "ch", 1, 1, DDS_CHAR_8_TYPE);

	s1a = DDS_DynamicTypeBuilder_build (sb1a);
	fail_unless (s1a != NULL);

	DDS_DynamicTypeBuilderFactory_delete_type (sb1a);

	DDS_SEQ_ITEM (bounds, 0) = 7;
	abs1a = DDS_DynamicTypeBuilderFactory_create_array_type (s1a, &bounds);
	fail_unless (abs1a != NULL);

	dds_seq_cleanup (&bounds);

	as1a = DDS_DynamicTypeBuilder_build (abs1a);
	fail_unless (as1a != NULL);

	DDS_DynamicTypeBuilderFactory_delete_type (abs1a);
	desc->kind = DDS_STRUCTURE_TYPE;
	desc->name = "dstruct2";
	sb1 = DDS_DynamicTypeBuilderFactory_create_type (desc);
	fail_unless (sb1 != NULL);

	ADD_FIELD (sb1, md, "c", 0, 0, DDS_CHAR_8_TYPE);

	md->name = "str2";
	md->index = md->id = 1;
	md->type = as1a;
	rc = DDS_DynamicTypeBuilder_add_member (sb1, md);
	fail_unless (rc == DDS_RETCODE_OK);

	ADD_FIELD (sb1, md, "u16", 2, 2, DDS_UINT_16_TYPE);

	s1 = DDS_DynamicTypeBuilder_build (sb1);
	fail_unless (s1 != NULL);

	DDS_DynamicTypeBuilderFactory_delete_type (sb1);
	ts = DDS_DynamicTypeSupport_create_type_support (s1);
	fail_unless (ts != NULL);

	DDS_TypeDescriptor__free (desc);
	DDS_MemberDescriptor__free (md);

	/* 2. Create a Dynamic Data item for this type. */
	dd = DDS_DynamicDataFactory_create_data (s1);
	fail_unless (dd != NULL);

	ddas = DDS_DynamicDataFactory_create_data (as1a);
	fail_unless (ddas != NULL);

	SET_FIELD (dd, 0, char8, 'A');
	for (i = 0; i < 7; i++) {
		dds = DDS_DynamicDataFactory_create_data (s1a);
		fail_unless (dds != NULL);

		dda = DDS_DynamicDataFactory_create_data (ai64);
		fail_unless (dda != NULL);

		for (j = 0; j < 5; j++) {
			SET_FIELD (dda, j, int64, ((i + 6) * j) << i);
		}
		SET_FIELD (dds, 0, complex, dda);
		DDS_DynamicDataFactory_delete_data (dda);

		SET_FIELD (dds, 1, char8, i + 0x30);

		SET_FIELD (ddas, i, complex, dds);
		DDS_DynamicDataFactory_delete_data (dds);
	}
	SET_FIELD (dd, 1, complex, ddas);
	DDS_DynamicDataFactory_delete_data (ddas);

	SET_FIELD (dd, 2, uint16, 1366);

	marshallDynamic (dd, &dd2, ts);

	DDS_DynamicDataFactory_delete_data (dd);
	DDS_DynamicTypeBuilderFactory_delete_type (s1);
	DDS_DynamicTypeBuilderFactory_delete_type (as1a);
	DDS_DynamicTypeBuilderFactory_delete_type (s1a);
	DDS_DynamicTypeBuilderFactory_delete_type (ai64);
	DDS_DynamicTypeSupport_delete_type_support (ts);
	v_printf ("success!\r\n");
}
示例#12
0
static void rtsp_build_common (char *buffer, int *at, rtsp_client_t *client, rtsp_command_t *cmd)
{
	int ret;

	ADD_FIELD("CSeq: %u\r\n", client->next_cseq);

	if (cmd && cmd->accept)
	{
		ADD_FIELD("Accept: %s\r\n", cmd->accept);
	}
    if (cmd && cmd->authorization)
	{
		ADD_FIELD("Authorization: %s\r\n", cmd->authorization);
	}
	if (cmd && cmd->session)
	{
		ADD_FIELD("Session: %s\r\n", cmd->session);
	}

	if (cmd && cmd->range)
	{
		ADD_FIELD("Range: %s\r\n", cmd->range);
	}
	if (cmd && cmd->scale != 0)
	{
		ADD_FIELD("Scale: %d\r\n", cmd->scale);
	}
	if (cmd && cmd->speed != 0)
	{
		ADD_FIELD("Speed: %d\r\n", cmd->speed);
	}
    if (cmd && cmd->transport)
	{
		ADD_FIELD("Transport: %s;ServiceGroup=%d\r\n", cmd->transport,
                cmd->serviceGroupID);
	}

	if (cmd && cmd->x_RegionID)
	{
        ADD_FIELD("x-RegionID: %s\r\n", "2561");
	}

	if (cmd && cmd->x_Info)
	{
		ADD_FIELD("x-Info: %s\r\n", cmd->x_Info);
	}

	ADD_FIELD("User-Agent: %s\r\n", USER_AGENT);
}
示例#13
0
文件: mutable.c 项目: bq/qeo-core
void test_dyn_mutable2 (void)
{
	DDS_DynamicTypeSupport ts;
	DDS_DynamicTypeBuilder sb2, stb, sstb;
	DDS_DynamicType s2, st, sst;
	DDS_TypeDescriptor *desc;
	DDS_MemberDescriptor *md;
	DDS_DynamicData dd, dd2, dds;
	DDS_ReturnCode_t rc;
	DDS_StringSeq ss;
	unsigned n;
	char *strings [] = {
		"Hi there", "blabla", "\0", NULL, 
		"got here", "not yet done", "", "num8",
		"9", "10", "11", "12",
		"13", "14", "15", "16",
		"17", "18", "19", "done :)"
	};

	v_printf ("test_mutable2 - ");

	/* 1. Create the type. */
	desc = DDS_TypeDescriptor__alloc ();
	fail_unless (desc != NULL);
	desc->kind = DDS_STRUCTURE_TYPE;
	desc->name = "dstruct2m";

	sb2 = DDS_DynamicTypeBuilderFactory_create_type (desc);
	fail_unless (sb2 != NULL);

	md = DDS_MemberDescriptor__alloc ();
	fail_unless (md != NULL);

	ADD_FIELD (sb2, md, "u16", 0, 5, DDS_UINT_16_TYPE);
	set_key_annotation (sb2, "u16");

	stb = DDS_DynamicTypeBuilderFactory_create_string_type (DDS_UNBOUNDED_COLLECTION);
	fail_unless (stb != NULL);

	st = DDS_DynamicTypeBuilder_build (stb);
	fail_unless (st != NULL);

	DDS_DynamicTypeBuilderFactory_delete_type (stb);

	sstb = DDS_DynamicTypeBuilderFactory_create_sequence_type (st, 
							DDS_UNBOUNDED_COLLECTION);
	fail_unless (sstb != NULL);

	sst = DDS_DynamicTypeBuilder_build (sstb);
	fail_unless (sst != NULL);

	DDS_DynamicTypeBuilderFactory_delete_type (sstb);

	md->name = "s";
	md->index = 1;
	md->id = 6;
	md->type = sst;
	rc = DDS_DynamicTypeBuilder_add_member (sb2, md);
	fail_unless (rc == DDS_RETCODE_OK);

	set_ext_annotation (sb2, "MUTABLE_EXTENSIBILITY");

	s2 = DDS_DynamicTypeBuilder_build (sb2);
	fail_unless (s2 != NULL);

	DDS_DynamicTypeBuilderFactory_delete_type (sb2);

	ts = DDS_DynamicTypeSupport_create_type_support (s2);
	fail_unless (ts != NULL);

	DDS_TypeDescriptor__free (desc);
	DDS_MemberDescriptor__free (md);

	/* 2. Create a Dynamic data item for this type. */

	DDS_SEQ_INIT (ss);
	dds_seq_from_array (&ss, strings, sizeof (strings) / sizeof (char *));

	for (n = 0; n <= DDS_SEQ_MAXIMUM (ss); n++) {

		dd = DDS_DynamicDataFactory_create_data (s2);
		fail_unless (dd != NULL);

		SET_FIELD (dd, 5, uint16, n);

		dds = DDS_DynamicDataFactory_create_data (sst);
		fail_unless (dds != NULL);

		DDS_SEQ_LENGTH (ss) = n;
		rc = DDS_DynamicData_set_string_values (dds, 0, &ss);

		fail_unless (rc == DDS_RETCODE_OK);

		SET_FIELD (dd, 6, complex, dds);

		marshallDynamic (dd, &dd2, ts);

		DDS_DynamicDataFactory_delete_data (dd);
		DDS_DynamicDataFactory_delete_data (dds);
		if (n > 2) {
			n += 3;
			if (n == 18)
				n++;
		}
	}
	dds_seq_cleanup (&ss);

	DDS_DynamicTypeBuilderFactory_delete_type (s2);
	DDS_DynamicTypeBuilderFactory_delete_type (sst);
	DDS_DynamicTypeBuilderFactory_delete_type (st);

	DDS_DynamicTypeSupport_delete_type_support (ts);

	set_key_annotation (NULL, NULL);
	set_ext_annotation (NULL, NULL);

	v_printf ("success!\r\n");
}
示例#14
0
void
sr_session_submit(sr_session_t *s)
{
	struct sr_session_priv *priv = s->priv;
	SoupMessage *message;
	int i = 0;
	GString *data;
	GList *c;

	/* haven't got the session yet? */
	if (!priv->session_id)
		return;

	g_mutex_lock(priv->queue_mutex);
	if (g_queue_is_empty(priv->queue) || priv->submit_count) {
		g_mutex_unlock(priv->queue_mutex);
		return;
	}

	data = g_string_new(NULL);
	g_string_append_printf(data, "s=%s", priv->session_id);

	for (c = priv->queue->head; c; c = c->next) {
		sr_track_t *t = c->data;
		char *artist, *title;
		char *album = NULL, *mbid = NULL;

		artist = soup_uri_encode(t->artist, EXTRA_URI_ENCODE_CHARS);
		title = soup_uri_encode(t->title, EXTRA_URI_ENCODE_CHARS);
		if (t->album)
			album = soup_uri_encode(t->album, EXTRA_URI_ENCODE_CHARS);
		if (t->mbid)
			mbid = soup_uri_encode(t->mbid, EXTRA_URI_ENCODE_CHARS);

		/* required fields */
		g_string_append_printf(data, "&a[%i]=%s&t[%i]=%s&i[%i]=%i&o[%i]=%c",
				i, artist,
				i, title,
				i, t->timestamp,
				i, t->source);

		/* optional fields */
		ADD_FIELD("r", "c", t->rating);
		ADD_FIELD("l", "i", t->length);
		ADD_FIELD("b", "s", album);
		ADD_FIELD("n", "i", t->position);
		ADD_FIELD("m", "s", mbid);

		g_free(artist);
		g_free(title);
		g_free(album);
		g_free(mbid);

		if (++i >= 50)
			break;
	}
	priv->submit_count = i;

	g_mutex_unlock(priv->queue_mutex);

	message = soup_message_new("POST", priv->submit_url);
	soup_message_set_request(message,
			"application/x-www-form-urlencoded",
			SOUP_MEMORY_TAKE,
			data->str,
			data->len);
	soup_session_queue_message(priv->soup,
			message,
			scrobble_cb,
			s);
	g_string_free(data, false); /* soup gets ownership */
}
示例#15
0
文件: pica.cpp 项目: alistanis/citra
std::string Regs::GetCommandName(int index) {
    static std::unordered_map<u32, std::string> map;

    if (map.empty()) {
        #define ADD_FIELD(name) \
                map.insert({static_cast<u32>(PICA_REG_INDEX(name)), #name}); \
                /* TODO: change to Regs::name when VS2015 and other compilers support it  */ \
                for (u32 i = PICA_REG_INDEX(name) + 1; i < PICA_REG_INDEX(name) + sizeof(Regs().name) / 4; ++i) \
                    map.insert({i, #name + std::string("+") + std::to_string(i-PICA_REG_INDEX(name))}); \

        ADD_FIELD(trigger_irq);
        ADD_FIELD(cull_mode);
        ADD_FIELD(viewport_size_x);
        ADD_FIELD(viewport_size_y);
        ADD_FIELD(viewport_depth_range);
        ADD_FIELD(viewport_depth_far_plane);
        ADD_FIELD(viewport_corner);
        ADD_FIELD(texture0_enable);
        ADD_FIELD(texture0);
        ADD_FIELD(texture0_format);
        ADD_FIELD(texture1);
        ADD_FIELD(texture1_format);
        ADD_FIELD(texture2);
        ADD_FIELD(texture2_format);
        ADD_FIELD(tev_stage0);
        ADD_FIELD(tev_stage1);
        ADD_FIELD(tev_stage2);
        ADD_FIELD(tev_stage3);
        ADD_FIELD(tev_combiner_buffer_input);
        ADD_FIELD(tev_stage4);
        ADD_FIELD(tev_stage5);
        ADD_FIELD(tev_combiner_buffer_color);
        ADD_FIELD(output_merger);
        ADD_FIELD(framebuffer);
        ADD_FIELD(vertex_attributes);
        ADD_FIELD(index_array);
        ADD_FIELD(num_vertices);
        ADD_FIELD(vertex_offset);
        ADD_FIELD(trigger_draw);
        ADD_FIELD(trigger_draw_indexed);
        ADD_FIELD(vs_default_attributes_setup);
        ADD_FIELD(command_buffer);
        ADD_FIELD(triangle_topology);
        ADD_FIELD(restart_primitive);
        ADD_FIELD(gs.bool_uniforms);
        ADD_FIELD(gs.int_uniforms);
        ADD_FIELD(gs.main_offset);
        ADD_FIELD(gs.input_register_map);
        ADD_FIELD(gs.uniform_setup);
        ADD_FIELD(gs.program);
        ADD_FIELD(gs.swizzle_patterns);
        ADD_FIELD(vs.bool_uniforms);
        ADD_FIELD(vs.int_uniforms);
        ADD_FIELD(vs.main_offset);
        ADD_FIELD(vs.input_register_map);
        ADD_FIELD(vs.uniform_setup);
        ADD_FIELD(vs.program);
        ADD_FIELD(vs.swizzle_patterns);

#undef ADD_FIELD
    }

    // Return empty string if no match is found
    auto it = map.find(index);
    if (it != map.end()) {
        return it->second;
    } else {
        return std::string();
    }
}
示例#16
0
inline bool CGPX_Import::Add_Fields(CSG_MetaData *pNode, CSG_Shapes *pPoints)
{
	if( pPoints->Get_Field_Count() == 0 )
	{
		ADD_FIELD("ele"				, SG_DATATYPE_Double);	// <ele>			xsd:decimal				(Höhe)
		ADD_FIELD("time"			, SG_DATATYPE_String);	// <time>			xsd:dateTime			(Datum und Zeit)
		ADD_FIELD("magvar"			, SG_DATATYPE_Double);	// <magvar>			degreesType				(lokale magn. Missweisung)
		ADD_FIELD("geoidheight"		, SG_DATATYPE_Double);	// <geoidheight>	xsd:decimal				(Höhe bezogen auf Geoid)
		ADD_FIELD("name"			, SG_DATATYPE_String);	// <name>			xsd:string				(Beschreibung)
		ADD_FIELD("cmt"				, SG_DATATYPE_String);	// <cmt>			xsd:string				(Kommentar)
		ADD_FIELD("desc"			, SG_DATATYPE_String);	// <desc>			xsd:string				(Elementbeschreibung)
		ADD_FIELD("src"				, SG_DATATYPE_String);	// <src>			xsd:string				(Quelle)
		ADD_FIELD("link"			, SG_DATATYPE_String);	// <link>			linkType				(Link)
		ADD_FIELD("sym"				, SG_DATATYPE_String);	// <sym>			xsd:string				(Darstellungssymbol)
		ADD_FIELD("type"			, SG_DATATYPE_String);	// <type>			xsd:string				(Klassifikation)
		ADD_FIELD("fix"				, SG_DATATYPE_Double);	// <fix>			fixType
		ADD_FIELD("sat"				, SG_DATATYPE_Int   );	// <sat>			xsd:nonNegativeInteger	(Anzahl der empfangenen Satelliten)
		ADD_FIELD("hdop"			, SG_DATATYPE_Double);	// <hdop>			xsd:decimal				(hDOP)
		ADD_FIELD("vdop"			, SG_DATATYPE_Double);	// <vdop>			xsd:decimal				(vDOP)
		ADD_FIELD("pdop"			, SG_DATATYPE_Double);	// <pdop>			xsd:decimal				(3D DOP)
		ADD_FIELD("ageofdgpsdata"	, SG_DATATYPE_Double);	// <ageofdgpsdata>	xsd:decimal				(Letzter DGPS update)
		ADD_FIELD("dgpsid"			, SG_DATATYPE_Int   );	// <dgpsid>			dgpsStationType			(DGPS ID)

		if( m_bTime && pNode->Get_Child(SG_T("time")) )
		{
			pPoints->Add_Field(SG_T("dtime"), SG_DATATYPE_Double);
		}
		else
		{
			m_bTime	= false;
		}
	}

	return( pPoints->Get_Field_Count() > 0 );
}
示例#17
0
static void sapi_webjames_register_variables(zval *track_vars_array)
{
	char buf[BUF_SIZE + 1];
	char *docroot;

	buf[BUF_SIZE] = '\0';

	ADD_STRING("SERVER_SOFTWARE", configuration.server);
	ADD_STRING("SERVER_NAME", configuration.serverip);
	ADD_FIELD("SERVER_PROTOCOL", protocol);
	ADD_NUM("SERVER_PORT", port);
	ADD_STRING("SERVER_ADMIN",configuration.webmaster);
	ADD_STRING("GATEWAY_INTERFACE", "CGI/1.1");

	docroot = __unixify(WG(conn)->homedir,0,NULL,1024,0);
	if (docroot) ADD_STRING("DOCUMENT_ROOT", docroot);

	ADD_FIELD("REQUEST_METHOD", methodstr);
	ADD_FIELD("REQUEST_URI", requesturi);
	ADD_STRING("PATH_TRANSLATED", SG(request_info).path_translated);
	ADD_FIELD("SCRIPT_NAME", uri);
	ADD_FIELD("PHP_SELF", uri);
	ADD_FIELD("QUERY_STRING", args);


	snprintf(buf, BUF_SIZE, "%d.%d.%d.%d", WG(conn)->ipaddr[0], WG(conn)->ipaddr[1], WG(conn)->ipaddr[2], WG(conn)->ipaddr[3]);
	ADD_STRING("REMOTE_ADDR", buf);
	if (WG(conn)->dnsstatus == DNS_OK) ADD_FIELD("REMOTE_HOST", host);

	if ((WG(conn)->method == METHOD_POST) || (WG(conn)->method == METHOD_PUT)) {
		ADD_NUM("CONTENT_LENGTH", bodysize);
		ADD_FIELD("CONTENT_TYPE", type);
	}

	if ((WG(conn)->method == METHOD_PUT) || (WG(conn)->method == METHOD_DELETE)) ADD_FIELD("ENTITY_PATH", requesturi);

	if (WG(conn)->pwd) {
		ADD_STRING("AUTH_TYPE", "basic");
		ADD_FIELD("REMOTE_USER", authorization);
	}

	ADD_FIELD("HTTP_COOKIE", cookie);
	ADD_FIELD("HTTP_USER_AGENT", useragent);
	ADD_FIELD("HTTP_REFERER", referer);
	ADD_FIELD("HTTP_ACCEPT", accept);
	ADD_FIELD("HTTP_ACCEPT_LANGUAGE", acceptlanguage);
	ADD_FIELD("HTTP_ACCEPT_CHARSET", acceptcharset);
	ADD_FIELD("HTTP_ACCEPT_ENCODING", acceptencoding);
}
示例#18
0
//---------------------------------------------------------------//
void CTableInitializer::InitializeWriter()
{
	ADD_FIELD(DDS::FIELD_STOCK_SYMBOL,			STREAM_STRING_ID);
	ADD_FIELD(DDS::FIELD_BID,					STREAM_FLOAT_ID);
	ADD_FIELD(DDS::FIELD_BID_DATE,				STREAM_DATETIME_ID);
	ADD_FIELD(DDS::FIELD_BID_EXCHANGE,			STREAM_EXCHANGE_ID);
	ADD_FIELD(DDS::FIELD_BID_SIZE,				STREAM_INT_ID);
	ADD_FIELD(DDS::FIELD_ASK,					STREAM_FLOAT_ID);
	ADD_FIELD(DDS::FIELD_ASK_DATE,				STREAM_DATETIME_ID);
	ADD_FIELD(DDS::FIELD_ASK_EXCHANGE,			STREAM_EXCHANGE_ID);
	ADD_FIELD(DDS::FIELD_ASK_SIZE,				STREAM_INT_ID);
	ADD_FIELD(DDS::FIELD_LAST,					STREAM_FLOAT_ID);
	ADD_FIELD(DDS::FIELD_LAST_DATE,				STREAM_DATETIME_ID);
	ADD_FIELD(DDS::FIELD_LAST_EXCHANGE,			STREAM_EXCHANGE_ID);
	ADD_FIELD(DDS::FIELD_LAST_SIZE,				STREAM_INT_ID);
	ADD_FIELD(DDS::FIELD_VOLUME,				STREAM_INT_ID);
	ADD_FIELD(DDS::FIELD_OPTION_SYMBOL,			STREAM_64BYTE_STRING_ID);
	ADD_FIELD(DDS::FIELD_FUTURE_SYMBOL,			STREAM_STRING_ID);
	ADD_FIELD(DDS::FIELD_FUTURE_ROOT_SYMBOL,	STREAM_STRING_ID);
	ADD_FIELD(DDS::FIELD_FUTURE_OPTION_SYMBOL,	STREAM_64BYTE_STRING_ID);
	ADD_FIELD(DDS::FIELD_OPEN_INTEREST,			STREAM_INT_ID);
	ADD_FIELD(DDS::FIELD_PRICE_HIGH,			STREAM_FLOAT_ID);
	ADD_FIELD(DDS::FIELD_PRICE_LOW,				STREAM_FLOAT_ID);
	ADD_FIELD(IVRMFields::FIELD_OPEN_PRICE,		STREAM_FLOAT_ID);
	ADD_FIELD(IVRMFields::FIELD_NET_CHANGE_1,	STREAM_FLOAT_ID);
	ADD_FIELD(IVRMFields::FIELD_PRICE_TICK,		STREAM_INT_ID);
};
示例#19
0
文件: mutable.c 项目: bq/qeo-core
void test_dyn_mutable1 (void)
{
	DDS_DynamicTypeSupport ts;
	DDS_DynamicTypeBuilder sb2, ostb;
	DDS_DynamicType s2, ot, ost;
	DDS_TypeDescriptor *desc;
	DDS_MemberDescriptor *md;
	DDS_DynamicData dd, dd2, dds;
	DDS_ReturnCode_t rc;
	DDS_ByteSeq bseq;
	unsigned char values [] = { 0x22, 0x33, 0x4f, 0x5e, 0x6d, 0x7c, 0x8b };

	v_printf ("test_mutable1 - ");

	/* 1. Create the type. */
	desc = DDS_TypeDescriptor__alloc ();
	fail_unless (desc != NULL);
	desc->kind = DDS_STRUCTURE_TYPE;
	desc->name = "dstruct1m";

	sb2 = DDS_DynamicTypeBuilderFactory_create_type (desc);
	fail_unless (sb2 != NULL);

	md = DDS_MemberDescriptor__alloc ();
	fail_unless (md != NULL);

	ADD_FIELD (sb2, md, "i16", 0, 99, DDS_INT_16_TYPE);
	set_id_annotation (sb2, "i16", 20);

	ADD_FIELD (sb2, md, "u32", 1, 2, DDS_UINT_32_TYPE);
	set_key_annotation (sb2, "u32");

	ADD_FIELD (sb2, md, "i32", 2, 100, DDS_INT_32_TYPE);
	set_id_annotation (sb2, "i32", 50);
	ADD_FIELD (sb2, md, "u16", 0, DDS_MEMBER_ID_INVALID, DDS_UINT_16_TYPE);
	set_id_annotation (sb2, "u16", 10);
	set_key_annotation (sb2, "u16");
	ADD_FIELD (sb2, md, "u64", 5, 51, DDS_UINT_64_TYPE);
	ADD_FIELD (sb2, md, "i64", 5, DDS_MEMBER_ID_INVALID, DDS_INT_64_TYPE);
	ADD_FIELD (sb2, md, "fl",  6, 53, DDS_FLOAT_32_TYPE);
	ADD_FIELD (sb2, md, "d",   7, 54, DDS_FLOAT_64_TYPE);
	ADD_FIELD (sb2, md, "ch",  8, 55, DDS_CHAR_8_TYPE);
	set_id_annotation (sb2, "ch", 5);
	set_key_annotation (sb2, "ch");
	set_id_annotation (sb2, "fl", 4);

	ot = DDS_DynamicTypeBuilderFactory_get_primitive_type (DDS_BYTE_TYPE);
	fail_unless (ot != NULL);

	ostb = DDS_DynamicTypeBuilderFactory_create_sequence_type (ot, 
							DDS_UNBOUNDED_COLLECTION);
	fail_unless (ostb != NULL);

	ost = DDS_DynamicTypeBuilder_build (ostb);
	fail_unless (ost != NULL);

	DDS_DynamicTypeBuilderFactory_delete_type (ostb);

	md->name = "s";
	md->index = 9;
	md->id = 9;
	md->type = ost;
	rc = DDS_DynamicTypeBuilder_add_member (sb2, md);
	fail_unless (rc == DDS_RETCODE_OK);

	set_ext_annotation (sb2, "MUTABLE_EXTENSIBILITY");

	s2 = DDS_DynamicTypeBuilder_build (sb2);
	fail_unless (s2 != NULL);

	DDS_DynamicTypeBuilderFactory_delete_type (sb2);

	ts = DDS_DynamicTypeSupport_create_type_support (s2);
	fail_unless (ts != NULL);

	DDS_TypeDescriptor__free (desc);
	DDS_MemberDescriptor__free (md);

	/* 2. Create a Dynamic data item for this type. */
	dd = DDS_DynamicDataFactory_create_data (s2);
	fail_unless (dd != NULL);

	SET_FIELD (dd, 50, int32, -5);
	SET_FIELD (dd, 10, uint16, 0xDEAD);
	SET_FIELD (dd, 20, int16, INT16_MIN);
	SET_FIELD (dd, 2, uint32, UINT32_MAX);
	SET_FIELD (dd, 52, int64, 100);
	SET_FIELD (dd, 4, float32, 0.5f);
	SET_FIELD (dd, 54, float64, 100e-5);
	SET_FIELD (dd, 5, char8, 'd');
	SET_FIELD (dd, 51, uint64, 5010000);

	dds = DDS_DynamicDataFactory_create_data (ost);
	fail_unless (dds != NULL);

	DDS_SEQ_INIT (bseq);
	dds_seq_from_array (&bseq, values, sizeof (values));
	rc = DDS_DynamicData_set_byte_values (dds, 0, &bseq);
	dds_seq_cleanup (&bseq);

	fail_unless (rc == DDS_RETCODE_OK);

	SET_FIELD (dd, 9, complex, dds);

	marshallDynamic (dd, &dd2, ts);

	DDS_DynamicDataFactory_delete_data (dd);
	DDS_DynamicDataFactory_delete_data (dds);

	DDS_DynamicTypeBuilderFactory_delete_type (s2);
	DDS_DynamicTypeBuilderFactory_delete_type (ost);

	DDS_DynamicTypeSupport_delete_type_support (ts);

	set_id_annotation (NULL, NULL, 0);
	set_key_annotation (NULL, NULL);
	set_ext_annotation (NULL, NULL);

	v_printf ("success!\r\n");
}
示例#20
0
文件: darrays.c 项目: bq/qeo-core
void test_dyn_oseq (void)
{
	DDS_DynamicTypeSupport ts;
	DDS_DynamicTypeBuilder sb, oseqb;
	DDS_TypeDescriptor *desc;
	DDS_MemberDescriptor *md;
	DDS_DynamicType s, oseq;
	DDS_DynamicData dd, dda, dd2;
	DDS_ReturnCode_t rc;
	DDS_ByteSeq values;
	unsigned i;

	v_printf ("test_dyn_oseq - ");

	/* 1. Create the type. */
	desc = DDS_TypeDescriptor__alloc ();
	fail_unless (desc != NULL);

	desc->kind = DDS_STRUCTURE_TYPE;
	desc->name = "dstruct3";
	sb = DDS_DynamicTypeBuilderFactory_create_type (desc);
	fail_unless (sb != NULL);

	md = DDS_MemberDescriptor__alloc ();
	fail_unless (md != NULL);

	ADD_FIELD (sb, md, "anuint", 0, 0, DDS_UINT_32_TYPE);

	oseqb = DDS_DynamicTypeBuilderFactory_create_sequence_type (
		DDS_DynamicTypeBuilderFactory_get_primitive_type (DDS_BYTE_TYPE),
		0);
	fail_unless (oseqb != NULL);

	oseq = DDS_DynamicTypeBuilder_build (oseqb);
	fail_unless (oseq != NULL);

	DDS_DynamicTypeBuilderFactory_delete_type (oseqb);

	md->name = "oseq";
	md->index = md->id = 1;
	md->type = oseq;

	rc = DDS_DynamicTypeBuilder_add_member (sb, md);
	fail_unless (rc == DDS_RETCODE_OK);

	ADD_FIELD (sb, md, "ch", 2, 2, DDS_CHAR_8_TYPE);

	s = DDS_DynamicTypeBuilder_build (sb);
	fail_unless (s != NULL);

	DDS_DynamicTypeBuilderFactory_delete_type (sb);
	ts = DDS_DynamicTypeSupport_create_type_support (s);
	fail_unless (ts != NULL);

	DDS_TypeDescriptor__free (desc);
	DDS_MemberDescriptor__free (md);

	/* 2. Create a Dynamic Data item for this type. */
	dd = DDS_DynamicDataFactory_create_data (s);
	fail_unless (dd != NULL);

	dda = DDS_DynamicDataFactory_create_data (oseq);
	fail_unless (dda != NULL);

	SET_FIELD (dd, 0, uint32, 1000);
	DDS_SEQ_INIT (values);
	rc = dds_seq_require (&values, 21);
	fail_unless (rc == DDS_RETCODE_OK);

	for (i = 0; i < 21; i++)
		DDS_SEQ_ITEM (values, i) = i + '0';

	rc = DDS_DynamicData_set_byte_values (dda, 0, &values);
	fail_unless (rc == DDS_RETCODE_OK);

	SET_FIELD (dd, 1, complex, dda);
	SET_FIELD (dd, 2, char8, 'X');

	marshallDynamic (dd, &dd2, ts);

	DDS_DynamicDataFactory_delete_data (dd);
	DDS_DynamicDataFactory_delete_data (dda);

	DDS_DynamicTypeBuilderFactory_delete_type (oseq);
	DDS_DynamicTypeBuilderFactory_delete_type (s);
	DDS_DynamicTypeSupport_delete_type_support (ts);
	v_printf ("success!\r\n");
}
示例#21
0
static PyObject *
build_filter_spec(const lzma_filter *f)
{
    PyObject *spec;

    spec = PyDict_New();
    if (spec == NULL)
        return NULL;

#define ADD_FIELD(SOURCE, FIELD) \
    do { \
        _Py_IDENTIFIER(FIELD); \
        if (spec_add_field(spec, &PyId_##FIELD, SOURCE->FIELD) == -1) \
            goto error;\
    } while (0)

    ADD_FIELD(f, id);

    switch (f->id) {
        /* For LZMA1 filters, lzma_properties_{encode,decode}() only look at the
           lc, lp, pb, and dict_size fields. For LZMA2 filters, only the
           dict_size field is used. */
        case LZMA_FILTER_LZMA1: {
            lzma_options_lzma *options = f->options;
            ADD_FIELD(options, lc);
            ADD_FIELD(options, lp);
            ADD_FIELD(options, pb);
            ADD_FIELD(options, dict_size);
            break;
        }
        case LZMA_FILTER_LZMA2: {
            lzma_options_lzma *options = f->options;
            ADD_FIELD(options, dict_size);
            break;
        }
        case LZMA_FILTER_DELTA: {
            lzma_options_delta *options = f->options;
            ADD_FIELD(options, dist);
            break;
        }
        case LZMA_FILTER_X86:
        case LZMA_FILTER_POWERPC:
        case LZMA_FILTER_IA64:
        case LZMA_FILTER_ARM:
        case LZMA_FILTER_ARMTHUMB:
        case LZMA_FILTER_SPARC: {
            lzma_options_bcj *options = f->options;
            ADD_FIELD(options, start_offset);
            break;
        }
        default:
            PyErr_Format(PyExc_ValueError, "Invalid filter ID: %llu", f->id);
            goto error;
    }

#undef ADD_FIELD

    return spec;

error:
    Py_DECREF(spec);
    return NULL;
}
示例#22
0
文件: manager.cpp 项目: ankitC/meld
void
manager::on_message(connection_ptr conn, message_ptr msg)
{
	const string content(msg->get_payload());

	Value ret;

   cleanup(); // do some maintenance

	if(read(content, ret) && is_obj(ret)) {
		Object obj(ret.get_obj());
		Value type(get_field_from_obj(obj, "msg"));

		if(is_string(type)) {
			const string& str(type.get_str());
			
			if(str == "next") {
            client *cl(get_client(conn));
            cl->counter++;
         } else if(str == "load_temp") {

            Value filev(get_field_from_obj(obj, "file"));
            string file(filev.get_str());

            if(valid_temp_file(file)) {
               client *cl(get_client(conn));
               cl->done = false;
               cl->counter = 0;

               if(cl->th != NULL) {
                  delete cl->th;
                  cl->th = NULL;
               }

               boost::thread *th = new boost::thread(boost::bind(&ui::manager::start_file, this, file, cl, true));

               cl->th = th;
            }
         } else if(str == "load" || str == "load_temp") {
            Value filev(get_field_from_obj(obj, "file"));
            string file(filev.get_str());
            client *cl(get_client(conn));
            cl->done = false;
            cl->counter = 0;

            if(cl->th != NULL) {
               delete cl->th;
               cl->th = NULL;
            }

            boost::thread *th = new boost::thread(boost::bind(&ui::manager::start_file, this, file, cl, false));

            cl->th = th;

         } else if(str == "jump") {
            Value node(get_field_from_obj(obj, "steps"));

            if(is_int(node)) {
               const int steps(node.get_int());
               client *cl(get_client(conn));

               cl->counter += steps;
            }
         } else if(str == "get_node") {
				Value node(get_field_from_obj(obj, "node"));
				
				if(is_int(node)) {
					db::node::node_id id((db::node::node_id)node.get_int());

					DECLARE_JSON("node");
					
					ADD_FIELD("node", (int)id);
					ADD_FIELD("info", sched::serial_ui_local::dump_node(id));
					
					SEND_JSON(conn);
				}
			} else if(str == "change_node") {
				Value node(get_field_from_obj(obj, "node"));
				
				if(is_int(node)) {
					db::node::node_id id((db::node::node_id)node.get_int());

					sched::serial_ui_local::change_node(id);
					
					DECLARE_JSON("changed_node");
					ADD_FIELD("node", (int)id);
					SEND_JSON(conn);
				}
			} else if(str == "terminate") {
            client* cl(get_client(conn));
            cl->done = true;
			} else {
				cerr << "Message not recognized: " << str << endl;
			}
		}
	}
}
示例#23
0
static int
parse_row_json(pycbc_Bucket *bucket, pycbc_ViewResult *vres,
               pycbc_MultiResult *mres, const lcb_RESPVIEWQUERY *resp)
{
    PyObject *dd = PyDict_New();
    PyObject *docid;
    int is_ok, rv = 0;

    if (resp->ndocid) {
        rv = pycbc_tc_decode_key(bucket, resp->docid, resp->ndocid, &docid);
        if (rv == -1) {
            goto GT_DONE;
        } else {
            PyDict_SetItem(dd, pycbc_helpers.vkey_id, docid);
            Py_XDECREF(docid);
        }
    }

    #define ADD_FIELD(helpname, fbase) \
    add_view_field(dd, pycbc_helpers.helpname, resp->fbase, resp->n##fbase)

    is_ok = ADD_FIELD(vkey_key, key) == 0 &&
            ADD_FIELD(vkey_value, value) == 0 &&
            ADD_FIELD(vkey_geo, geometry) == 0;

    #undef ADD_FIELD

    if (!is_ok) {
        rv = -1;
        goto GT_DONE;
    } else {
        PyList_Append(vres->rows, dd);
    }

    if (resp->docresp) {
        /* include_docs */
        const lcb_RESPGET *rg = resp->docresp;
        pycbc_ValueResult *docres = pycbc_valresult_new(bucket);

        docres->key = docid;
        Py_INCREF(docid);
        docres->rc = rg->rc;

        if (rg->rc == LCB_SUCCESS) {
            docres->cas = rg->cas;
            docres->flags = rg->itmflags;
            rv = pycbc_tc_decode_value(
                    bucket, rg->value, rg->nvalue, rg->itmflags, &docres->value);
            if (rv != 0) {
                pycbc_multiresult_adderr(mres);
            }
        }

        PyDict_SetItem(dd, pycbc_helpers.vkey_docresp, (PyObject*)docres);
        Py_DECREF(docres);
    }

    GT_DONE:
    Py_DECREF(dd);
    return rv;
}
示例#24
0
//---------------------------------------------------------
bool CLAS_Import::On_Execute(void)
{
	CSG_Parameter_PointCloud_List	*pPointsList;
	bool			bValidity;
	CSG_Strings		Files;
	int				RGBrange;
	int				cntInvalid = 0;


	bValidity		= Parameters("VALID")->asBool();
	RGBrange		= Parameters("RGB_RANGE")->asInt();
	
	//-----------------------------------------------------
	if( !Parameters("FILES")->asFilePath()->Get_FilePaths(Files) )
	{
		return( false );
	}

	//-----------------------------------------------------
	pPointsList	= Parameters("POINTS")->asPointCloudList();
	pPointsList	->Del_Items();

	for(int i=0; i<Files.Get_Count(); i++)
	{
		SG_UI_Msg_Add(CSG_String::Format(_TL("Parsing %s ... "), SG_File_Get_Name(Files[i], true).c_str()), true);

		std::ifstream   ifs;

		ifs.open(Files[i].b_str(), std::ios::in | std::ios::binary);
		if( !ifs )
		{
			SG_UI_Msg_Add_Error(CSG_String::Format(_TL("Unable to open LAS file!")));
			continue;
		}

		//-----------------------------------------------------
		// Check if LAS version is supported
		liblas::LASReader *pReader;
		try {
			pReader = new liblas::LASReader(ifs);
		}
		catch(std::exception &e) {
			SG_UI_Msg_Add_Error(CSG_String::Format(_TL("LAS header exception: %s"), e.what()));
			ifs.close();
			return( false );
		}
		catch(...) {
			SG_UI_Msg_Add_Error(CSG_String::Format(_TL("Unknown LAS header exception!")));
			ifs.close();
			return( false );
		}
	
		delete (pReader);
		ifs.clear();
		//-----------------------------------------------------


		liblas::LASReader reader(ifs);

		liblas::LASHeader const& header = reader.GetHeader();


		//-----------------------------------------------------
		int		nFields, iField[VAR_Count];

		CSG_PointCloud	*pPoints	= SG_Create_PointCloud();
		pPoints->Set_Name(SG_File_Get_Name(Files[i], false));

		nFields		= 3;

		ADD_FIELD("T", VAR_T, _TL("gps-time")							, SG_DATATYPE_Double);	// SG_DATATYPE_Long
		ADD_FIELD("i", VAR_i, _TL("intensity")							, SG_DATATYPE_Float);	// SG_DATATYPE_Word
		ADD_FIELD("a", VAR_a, _TL("scan angle")							, SG_DATATYPE_Float);	// SG_DATATYPE_Byte
		ADD_FIELD("r", VAR_r, _TL("number of the return")				, SG_DATATYPE_Int);
		ADD_FIELD("c", VAR_c, _TL("classification")						, SG_DATATYPE_Int);		// SG_DATATYPE_Byte
		ADD_FIELD("u", VAR_u, _TL("user data")							, SG_DATATYPE_Double);	// SG_DATATYPE_Byte
		ADD_FIELD("n", VAR_n, _TL("number of returns of given pulse")	, SG_DATATYPE_Int);
		ADD_FIELD("R", VAR_R, _TL("red channel color")					, SG_DATATYPE_Int);		// SG_DATATYPE_Word
		ADD_FIELD("G", VAR_G, _TL("green channel color")				, SG_DATATYPE_Int);
		ADD_FIELD("B", VAR_B, _TL("blue channel color")					, SG_DATATYPE_Int);
		ADD_FIELD("e", VAR_e, _TL("edge of flight line flag")			, SG_DATATYPE_Char);
		ADD_FIELD("d", VAR_d, _TL("direction of scan flag")				, SG_DATATYPE_Char);
		ADD_FIELD("p", VAR_p, _TL("point source ID")					, SG_DATATYPE_Int);		// SG_DATATYPE_Word
		ADD_FIELD("C", VAR_C, _TL("rgb color")							, SG_DATATYPE_Int);

		//-----------------------------------------------------
		int		iPoint	= 0;

		try {
			while( reader.ReadNextPoint() )
			{
				if (iPoint % 100000)
					SG_UI_Process_Set_Progress(iPoint, header.GetPointRecordsCount()); 

				liblas::LASPoint const& point = reader.GetPoint();

				if( bValidity )
				{
					if( !point.IsValid() )
					{
						cntInvalid++;
						continue;
					}
				}

				pPoints->Add_Point(point.GetX(), point.GetY(), point.GetZ());

				if( iField[VAR_T] > 0 )	pPoints->Set_Value(iPoint, iField[VAR_T], point.GetTime());
				if( iField[VAR_i] > 0 )	pPoints->Set_Value(iPoint, iField[VAR_i], point.GetIntensity());
				if( iField[VAR_a] > 0 )	pPoints->Set_Value(iPoint, iField[VAR_a], point.GetScanAngleRank());
				if( iField[VAR_r] > 0 )	pPoints->Set_Value(iPoint, iField[VAR_r], point.GetReturnNumber());
				if( iField[VAR_c] > 0 )	pPoints->Set_Value(iPoint, iField[VAR_c], point.GetClassification());
				if( iField[VAR_u] > 0 )	pPoints->Set_Value(iPoint, iField[VAR_u], point.GetUserData());
				if( iField[VAR_n] > 0 )	pPoints->Set_Value(iPoint, iField[VAR_n], point.GetNumberOfReturns());
				if( iField[VAR_R] > 0 )	pPoints->Set_Value(iPoint, iField[VAR_R], point.GetColor().GetRed());
				if( iField[VAR_G] > 0 )	pPoints->Set_Value(iPoint, iField[VAR_G], point.GetColor().GetGreen());
				if( iField[VAR_B] > 0 )	pPoints->Set_Value(iPoint, iField[VAR_B], point.GetColor().GetBlue());
				if( iField[VAR_e] > 0 )	pPoints->Set_Value(iPoint, iField[VAR_e], point.GetFlightLineEdge());
				if( iField[VAR_d] > 0 )	pPoints->Set_Value(iPoint, iField[VAR_d], point.GetScanDirection());
				if( iField[VAR_p] > 0 )	pPoints->Set_Value(iPoint, iField[VAR_p], point.GetPointSourceID());
				if( iField[VAR_C] > 0 )
				{
					double	r, g, b;
					r = point.GetColor().GetRed();
					g = point.GetColor().GetGreen();
					b = point.GetColor().GetBlue();

					if (RGBrange == 0)		// 16 bit
					{
						r = r / 65535 * 255;
						g = g / 65535 * 255;
						b = b / 65535 * 255;
					}
			
					pPoints->Set_Value(iPoint, iField[VAR_C], SG_GET_RGB(r, g, b));
				}

				iPoint++;
			}
		}
		catch(std::exception &e) {
			SG_UI_Msg_Add_Error(CSG_String::Format(_TL("LAS reader exception: %s"), e.what()));
			ifs.close();
			return( false );
		}
		catch(...) {
			SG_UI_Msg_Add_Error(CSG_String::Format(_TL("Unknown LAS reader exception!")));
			ifs.close();
			return( false );
		}

		ifs.close();

		pPointsList->Add_Item(pPoints);

		DataObject_Add(pPoints);

		//-----------------------------------------------------
		CSG_Parameters		sParms;

		DataObject_Get_Parameters(pPoints, sParms);

		if (sParms("METRIC_ATTRIB")	&& sParms("COLORS_TYPE") && sParms("METRIC_COLORS")
			&& sParms("METRIC_ZRANGE") && sParms("DISPLAY_VALUE_AGGREGATE"))
		{
			sParms("DISPLAY_VALUE_AGGREGATE")->Set_Value(3);		// highest z
			sParms("COLORS_TYPE")->Set_Value(2);                    // graduated color
			sParms("METRIC_COLORS")->asColors()->Set_Count(255);    // number of colors
			sParms("METRIC_ATTRIB")->Set_Value(2);					// z attrib
			sParms("METRIC_ZRANGE")->asRange()->Set_Range(pPoints->Get_Minimum(2),pPoints->Get_Maximum(2));
		}

		DataObject_Set_Parameters(pPoints, sParms);

		SG_UI_Msg_Add(_TL("okay"), false);
	}

	//-----------------------------------------------------
	if( bValidity && cntInvalid > 0 )
		SG_UI_Msg_Add(CSG_String::Format(_TL("WARNING: %d invalid points skipped!"), cntInvalid), true);

	return( true );
}