コード例 #1
0
ファイル: slang_link.c プロジェクト: Magister/x11rdp_xorg71
static GLboolean insert_binding (slang_uniform_bindings *bind, slang_export_data_quant *q,
	char *name, slang_atom_pool *atoms, GLuint index, GLuint addr)
{
	GLuint count, i;

	slang_string_concat (name, slang_atom_pool_id (atoms, q->name));

	if (q->array_len == 0)
		count = 1;
	else
		count = q->array_len;

	for (i = 0; i < count; i++)
	{
		GLuint save;

		save = slang_string_length (name);
		if (q->array_len != 0)
			_mesa_sprintf (name + slang_string_length (name), "[%d]", i);

		if (q->structure != NULL)
		{
			GLuint save, i;

			slang_string_concat (name, ".");
			save = slang_string_length (name);

			for (i = 0; i < q->u.field_count; i++)
			{
				if (!insert_binding (bind, &q->structure[i], name, atoms, index, addr))
					return GL_FALSE;
				name[save] = '\0';
				addr += q->structure[i].size;
			}
		}
		else
		{
			if (!slang_uniform_bindings_add (bind, q, name, index, addr))
				return GL_FALSE;
			addr += q->size;
		}
		name[save] = '\0';
	}

	return GL_TRUE;
}
コード例 #2
0
ファイル: slang_link.c プロジェクト: Magister/x11rdp_xorg71
static GLboolean gather_uniform_bindings (slang_uniform_bindings *bind, slang_export_data_table *tbl,
	GLuint index)
{
	GLuint i;

	for (i = 0; i < tbl->count; i++)
		if (tbl->entries[i].access == slang_exp_uniform)
		{
			char name[1024] = "";

			if (!insert_binding (bind, &tbl->entries[i].quant, name, tbl->atoms, index,
					tbl->entries[i].address))
				return GL_FALSE;
		}

	return GL_TRUE;
}
コード例 #3
0
SG_EXTENSION_ENTRY void CDECL Sg_Init_sagittarius__zlib()
{
  SgLibrary *lib;
  SG_INIT_EXTENSION(sagittarius__zlib);

  lib = SG_LIBRARY(Sg_FindLibrary(SG_SYMBOL(SG_INTERN("(rfc zlib)")),
				  FALSE));
  Sg__Init_zlib_stub(lib);

#define insert_binding_rec(n, v)					\
  Sg_MakeBinding(lib, SG_SYMBOL(SG_INTERN(#n)), SG_MAKE_INT(v), TRUE)
#define insert_binding(v)						\
Sg_MakeBinding(lib, SG_SYMBOL(SG_INTERN(#v)), SG_MAKE_INT(v), TRUE)

insert_binding(Z_NO_FLUSH     );
insert_binding(Z_PARTIAL_FLUSH);
insert_binding(Z_SYNC_FLUSH   );
insert_binding(Z_FULL_FLUSH   );
insert_binding(Z_FINISH       );
insert_binding(Z_BLOCK        );
/* as far as I know this is after 1.2.3
   and some platform (say OpenBSD) is using 1.2.3
   so check it.*/
#ifdef Z_TREES
 insert_binding(Z_TREES        );
#else
 /* ok not sure if this should be default... */
 insert_binding_rec(Z_TREES,  Z_NO_FLUSH);
#endif
insert_binding(Z_OK           );
insert_binding(Z_STREAM_END   );
insert_binding(Z_NEED_DICT    );
insert_binding(Z_ERRNO        );
insert_binding(Z_STREAM_ERROR );
insert_binding(Z_DATA_ERROR   );
insert_binding(Z_MEM_ERROR    );
insert_binding(Z_BUF_ERROR    );
insert_binding(Z_VERSION_ERROR);
insert_binding(Z_NO_COMPRESSION     );
insert_binding(Z_BEST_SPEED         );
insert_binding(Z_BEST_COMPRESSION   );
insert_binding(Z_DEFAULT_COMPRESSION);
insert_binding(Z_FILTERED        );
insert_binding(Z_HUFFMAN_ONLY    );
insert_binding(Z_RLE             );
insert_binding(Z_FIXED           );
insert_binding(Z_DEFAULT_STRATEGY);
insert_binding(Z_BINARY );
insert_binding(Z_TEXT   );
insert_binding(Z_ASCII  );
insert_binding(Z_UNKNOWN);

#undef insert_binding
 z_version = SG_MAKE_STRING(ZLIB_VERSION);
 /* well this class should not be used, but for consistancy */
 Sg_InitStaticClassWithMeta(SG_CLASS_ZSTREAM, UC("<z-stream>"), lib, NULL,
			    SG_FALSE, NULL, 0);
}