コード例 #1
0
ファイル: set.c プロジェクト: mrmacete/shadernet
void            
set_element_free( set_element ** p_element )
{
	if ( p_element != NULL && (*p_element) != NULL )
	{
		sn_free( (void**) &(*p_element)->data );
		sn_free( (void**) p_element );
	}
}
コード例 #2
0
void
sn_launchee_context_unref (SnLauncheeContext *context)
{
  context->refcount -= 1;
  if (context->refcount == 0)
    {
      sn_display_unref (context->display);
      sn_free (context->startup_id);
      
      sn_free (context);
    }
}
コード例 #3
0
ファイル: set.c プロジェクト: mrmacete/shadernet
void
set_soft_free( set ** p_set )
{
        if ( p_set != NULL && (*p_set) != NULL )
        {
                while( (*p_set)->size > 0 )
                {
                        set_element * to_be_deleted = set_pop_element( (*p_set) );
			sn_free( (void**) &to_be_deleted );
                }

                sn_free( (void**) p_set );
        }
}
コード例 #4
0
/**
 * sn_display_unref:
 * @display: an #SnDisplay
 * 
 * Decrement the reference count for @display, freeing
 * display if the reference count reaches zero.
 **/
void
sn_display_unref (SnDisplay *display)
{
  display->refcount -= 1;
  if (display->refcount == 0)
    {
      if (display->xmessage_funcs)
        sn_list_free (display->xmessage_funcs);
      if (display->pending_messages)
        sn_list_free (display->pending_messages);
      sn_free (display->screens);
      sn_free (display);
    }
}
コード例 #5
0
ファイル: sn_string.c プロジェクト: mrmacete/shadernet
void            
sn_string_free( sn_string ** pp_string )
{
	if ( pp_string != NULL && (*pp_string) != NULL )
	{
		if ( (*pp_string)->is_ref == 0 )
		{
			sn_free( (void**) &(*pp_string)->buffer );
		}

		(*pp_string)->len = 0;
		(*pp_string)->is_ref = 1;
		sn_free( (void**) pp_string );
	}
}
コード例 #6
0
ファイル: sn_storage.c プロジェクト: sguzwf/serenity
int sn_storageclose(snstorage *s)
{
	if (s->env == NULL)
		return 0;
	int rcret = sp_destroy(s->env);
	int i = 0;
	while (i < s->count) {
		sndb *db = &s->storage[i];
		if (db->name)
			sn_free(db->name);
		if (db->path)
			sn_free(db->path);
		if (db->key)
			sn_free(db->key);
		i++;
	}
	if (s->storage)
		sn_free(s->storage);
	return rcret;
}
コード例 #7
0
ファイル: sn_string.c プロジェクト: mrmacete/shadernet
void            
sn_string_cat( sn_string * p_dst, const sn_string * p_src )
{
	if ( p_dst != NULL && p_src != NULL )
	{
		char * old_buffer = p_dst->buffer;
		p_dst->buffer = (char*) malloc( (p_dst->len + p_src->len ) * sizeof( char ) );
		memcpy( p_dst->buffer, old_buffer, p_dst->len );
		memcpy( &p_dst->buffer[p_dst->len], p_src->buffer, p_src->len );
		p_dst->len += p_src->len;
		sn_free( (void**) &old_buffer );
	}
}
コード例 #8
0
ファイル: sn_error.cpp プロジェクト: HanLuo/pskynet
void skynet_error(skynet_context *context, const char *msg, ...)
{
	static uint32_t logger = 0;
	if (logger == 0) {
		logger = SNServer::Get()->GetHandle().FindName("logger");
	}
	if (logger == 0) {
		return;
	}

	char tmp[LOG_MESSAGE_SIZE];
	char *data = NULL;

	va_list va;
	va_start(va, msg);
	int len = sn_vsprintf(tmp, LOG_MESSAGE_SIZE, msg, va);
	va_end(va);
	if (len != -1 && len < LOG_MESSAGE_SIZE) {
		data = skynet_strdup(tmp);
	}
	else {
		int max_size = LOG_MESSAGE_SIZE;
		for (;;) {
			max_size *= 2;
			data = (char *)sn_malloc(max_size);
			va_start(va, msg);
			len = sn_vsprintf(data, max_size, msg, va);
			va_end(va);
			if (len != -1 && len < max_size) {
				break;
			}
			sn_free(data);
		}
	}

	sn_message smsg;
	if (context == NULL) {
		smsg.source = 0;
	}
	else {
		smsg.source = context->Handle();
	}
	smsg.session = 0;
	smsg.data = data;
	smsg.sz = len | (PTYPE_TEXT << HANDLE_REMOTE_SHIFT);
	SNServer::Get()->ContextPush(logger, &smsg);
}
コード例 #9
0
void                    
block_parameter_set_free( block_parameter_set ** p_set )
{
	if ( p_set != NULL && (*p_set) != NULL )
	{
		while( (*p_set)->parameter_set.size > 0 )
		{
			set_element * el = set_pop_element( &(*p_set)->parameter_set );
			if ( el != NULL )
			{
				block_parameter_free( (block_parameter**) &el->data );
				set_element_free( &el );
			}
		}
		sn_free( (void**) p_set );
	}
}
コード例 #10
0
ファイル: test_set.c プロジェクト: mrmacete/shadernet
int main( int argc, char*argv[] )
{
	set * p_set = NULL;

	test_set_output( TEST_OUTPUT_BOTH );

	p_set = set_create();

	if ( test_assert_true ( p_set != NULL, "set creation" ) )
	{
		/* create a set with 35 elements */
		int i, *test_search;
		for( i=0; i<35; i++ )
		{
			int * test_element = (int*) malloc( sizeof(int) );
			*test_element = i;
			set_push_element( p_set, (void*) test_element );

			if ( ! test_assert_true( p_set->size == (i + 1) , "set element pushing") )
				break;

		}		

		test_search = (int*) malloc( sizeof(int) );

		/* search for an existing element */
		*test_search = 10;
		test_assert_true( set_contains( p_set, test_search, &test_set_int_compare ), "set search existing" ); 
		
		/* search for a non-existing element */
		*test_search = 56;
		test_assert_true( !set_contains( p_set, test_search, &test_set_int_compare ), "set search non-existing" ); 

		sn_free( (void**) &test_search );

		set_free( &p_set );
		
	}

	
	exit(0);
	
}
コード例 #11
0
/**
 * sn_launchee_context_complete:
 * @context: an #SnLauncheeContext
 *
 * Called by the launchee when it is fully started up and the startup
 * sequence should end.
 * 
 **/
void
sn_launchee_context_complete (SnLauncheeContext *context)
{
  char *keys[2];
  char *vals[2];
  char *message;
  
  keys[0] = "ID";
  keys[1] = NULL;
  vals[0] = context->startup_id;
  vals[1] = NULL; 

  message = sn_internal_serialize_message ("remove",
                                           (const char**) keys,
                                           (const char**) vals);

  sn_internal_broadcast_xmessage (context->display,
                                  context->screen,
                                  sn_internal_get_net_startup_info_atom(context->display),
                                  sn_internal_get_net_startup_info_begin_atom(context->display),
                                  message);

  sn_free (message);
}