您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ va_arg函数代码示例

51自学网 2021-06-03 09:32:14
  C++
这篇教程C++ va_arg函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中va_arg函数的典型用法代码示例。如果您正苦于以下问题:C++ va_arg函数的具体用法?C++ va_arg怎么用?C++ va_arg使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了va_arg函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: va_start

void CSearchList::KademliaSearchKeyword(uint32 searchID, const Kademlia::CUInt128* fileID, 										LPCTSTR name, uint32 size, LPCTSTR type, UINT numProperties, ...){	va_list args;	va_start(args, numProperties);	EUtf8Str eStrEncode = utf8strRaw;	CSafeMemFile* temp = new CSafeMemFile(250);	uchar fileid[16];	fileID->toByteArray(fileid);	temp->WriteHash16(fileid);		temp->WriteUInt32(0);	// client IP	temp->WriteUInt16(0);	// client port		// write tag list	UINT uFilePosTagCount = (UINT)temp->GetPosition();	uint32 tagcount = 0;	temp->WriteUInt32(tagcount); // dummy tag count, will be filled later	// standard tags	CTag tagName(FT_FILENAME, name);	tagName.WriteTagToFile(temp, eStrEncode);	tagcount++;	CTag tagSize(FT_FILESIZE, size);	tagSize.WriteTagToFile(temp, eStrEncode);	tagcount++;	if (type != NULL && type[0] != _T('/0'))	{		CTag tagType(FT_FILETYPE, type);		tagType.WriteTagToFile(temp, eStrEncode);		tagcount++;	}	// additional tags	while (numProperties-- > 0)	{		UINT uPropType = va_arg(args, UINT);		LPCSTR pszPropName = va_arg(args, LPCSTR);		LPVOID pvPropValue = va_arg(args, LPVOID);		if (uPropType == 2 /*TAGTYPE_STRING*/)		{			if ((LPCTSTR)pvPropValue != NULL && ((LPCTSTR)pvPropValue)[0] != _T('/0'))			{				if (strlen(pszPropName) == 1)				{					CTag tagProp((uint8)*pszPropName, (LPCTSTR)pvPropValue);					tagProp.WriteTagToFile(temp, eStrEncode);				}				else				{					CTag tagProp(pszPropName, (LPCTSTR)pvPropValue);					tagProp.WriteTagToFile(temp, eStrEncode);				}				tagcount++;			}		}		else if (uPropType == 3 /*TAGTYPE_UINT32*/)		{			if ((uint32)pvPropValue != 0)			{				CTag tagProp(pszPropName, (uint32)pvPropValue);				tagProp.WriteTagToFile(temp, eStrEncode);				tagcount++;			}		}		else		{			ASSERT(0);		}	}	va_end(args);	temp->Seek(uFilePosTagCount, SEEK_SET);	temp->WriteUInt32(tagcount);		temp->SeekToBegin();	CSearchFile* tempFile = new CSearchFile(temp, eStrEncode == utf8strRaw, searchID, 0, 0, 0, true);	AddToList(tempFile);		delete temp;}
开发者ID:BackupTheBerlios,项目名称:resurrection,代码行数:83,


示例2: expand_data

// Take each parsed format and expands the result into the 'print_buffer' based on the given 'options'.// The 'print_buffer' size  is passed in so it not to overflow it.static uint16_t expand_data(va_list *ap, PARSEOPTION_TYPE *options, char *print_buffer, int16_t buffer_size){  uint16_t out_size = 0;  if (!buffer_size) return 0; // We can probably trust outer loop won't call when there's no buffer left, but just in case  if (options->MinWidth > buffer_size) options->MinWidth = buffer_size;  switch (options->ParseType)  {    case PARSE_NONE:      break;    case PARSE_PERCENT:      {        *print_buffer++ = '%';        out_size++;      }      break;    case PARSE_NONSENSE:      // write error code as a complete unit or not at all      if (buffer_size > 4)      {        *print_buffer++ = '%';        *print_buffer++ = '?';        *print_buffer++ = '?';        *print_buffer++ = '?';        out_size += 4;      }      break;    case PARSE_BINARY:      {        uint8_t temp_num[BITS_PER_BYTE * sizeof(uint32_t)];        uint8_t *temp_num_ptr = temp_num;        int16_t temp_num_size = 0;        // Get value from argument list and convert it to digits        // Decode the number to temporary storage as we need to write Most Significant Digit first        // to the output buffer and we don't know how much to pad yet for MinWidth.        if (options->Long == true)        {          uint32_t value = va_arg(*ap, uint32_t);          do          {            *temp_num_ptr++ = (value & 1);            value >>= 1;            temp_num_size++;          }          while (value != 0);        }        else        {          uint16_t value = va_arg(*ap, uint16_t);          do          {            *temp_num_ptr++ = (value & 1);            value >>= 1;            temp_num_size++;          }          while (value != 0);        }        // Pad and zero fill if the user wants it.        {          // calculate what's left for leading zero's.          int16_t num_zeros = options->MinWidth - (temp_num_size + out_size);          while ((num_zeros-- > 0) && (out_size < buffer_size))          {            *print_buffer++ = (options->ZeroFill == true) ? '0' : ' ';            out_size++;          }        }        // Write the converted number.        while ((temp_num_size-- > 0) && (out_size < buffer_size))        {          // Write the digit converted to ascii          *print_buffer++ = *(--temp_num_ptr) ? '1' : '0';          out_size++;        }      }
开发者ID:mthoren-adi,项目名称:Linduino,代码行数:86,


示例3: egg_desktop_file_launchv

static gbooleanegg_desktop_file_launchv (EggDesktopFile *desktop_file,			  GSList *documents, va_list args,			  GError **error){  EggDesktopFileLaunchOption option;  GSList *translated_documents = NULL, *docs = NULL;  char *command, **argv;  int argc, i, screen_num;  gboolean success, current_success;  GdkDisplay *display;  char *startup_id;  GPtrArray   *env = NULL;  char       **variables = NULL;  GdkScreen   *screen = NULL;  int          workspace = -1;  const char  *directory = NULL;  guint32      launch_time = (guint32)-1;  GSpawnFlags  flags = G_SPAWN_SEARCH_PATH;  GSpawnChildSetupFunc setup_func = NULL;  gpointer     setup_data = NULL;  GPid        *ret_pid = NULL;  int         *ret_stdin = NULL, *ret_stdout = NULL, *ret_stderr = NULL;  char       **ret_startup_id = NULL;  if (documents && desktop_file->document_code == 0)    {      g_set_error (error, EGG_DESKTOP_FILE_ERROR,		   EGG_DESKTOP_FILE_ERROR_NOT_LAUNCHABLE,		   _("Application does not accept documents on command line"));      return FALSE;    }  /* Read the options: technically it's incorrect for the caller to   * NULL-terminate the list of options (rather than 0-terminating   * it), but NULL-terminating lets us use G_GNUC_NULL_TERMINATED,   * it's more consistent with other glib/gtk methods, and it will   * work as long as sizeof (int) <= sizeof (NULL), and NULL is   * represented as 0. (Which is true everywhere we care about.)   */  while ((option = va_arg (args, EggDesktopFileLaunchOption)))    {      switch (option)	{	case EGG_DESKTOP_FILE_LAUNCH_CLEARENV:	  if (env)	    g_ptr_array_free (env, TRUE);	  env = g_ptr_array_new ();	  break;	case EGG_DESKTOP_FILE_LAUNCH_PUTENV:	  variables = va_arg (args, char **);	  for (i = 0; variables[i]; i++)	    env = array_putenv (env, variables[i]);	  break;	case EGG_DESKTOP_FILE_LAUNCH_SCREEN:	  screen = va_arg (args, GdkScreen *);	  break;	case EGG_DESKTOP_FILE_LAUNCH_WORKSPACE:	  workspace = va_arg (args, int);	  break;	case EGG_DESKTOP_FILE_LAUNCH_DIRECTORY:	  directory = va_arg (args, const char *);	  break;	case EGG_DESKTOP_FILE_LAUNCH_TIME:	  launch_time = va_arg (args, guint32);	  break;	case EGG_DESKTOP_FILE_LAUNCH_FLAGS:	  flags |= va_arg (args, GSpawnFlags);	  /* Make sure they didn't set any flags that don't make sense. */	  flags &= ~G_SPAWN_FILE_AND_ARGV_ZERO;	  break;	case EGG_DESKTOP_FILE_LAUNCH_SETUP_FUNC:	  setup_func = va_arg (args, GSpawnChildSetupFunc);	  setup_data = va_arg (args, gpointer);	  break;	case EGG_DESKTOP_FILE_LAUNCH_RETURN_PID:	  ret_pid = va_arg (args, GPid *);	  break;	case EGG_DESKTOP_FILE_LAUNCH_RETURN_STDIN_PIPE:	  ret_stdin = va_arg (args, int *);	  break;	case EGG_DESKTOP_FILE_LAUNCH_RETURN_STDOUT_PIPE:	  ret_stdout = va_arg (args, int *);	  break;	case EGG_DESKTOP_FILE_LAUNCH_RETURN_STDERR_PIPE:	  ret_stderr = va_arg (args, int *);	  break;	case EGG_DESKTOP_FILE_LAUNCH_RETURN_STARTUP_ID:	  ret_startup_id = va_arg (args, char **);	  break;	default:	  g_set_error (error, EGG_DESKTOP_FILE_ERROR,		       EGG_DESKTOP_FILE_ERROR_UNRECOGNIZED_OPTION,		       _("Unrecognized launch option: %d"),//.........这里部分代码省略.........
开发者ID:DylanMcCall,项目名称:rhythmbox-songinfo-context-menu,代码行数:101,


示例4: response_to_link_parent

static int response_to_link_parent (entity_messages message, entity *receiver, entity *sender, va_list pargs){	list_types		list_type;	#if DEBUG_MODULE	debug_log_entity_message (message, receiver, sender, pargs);	#endif	list_type = va_arg (pargs, list_types);	switch (list_type)	{		////////////////////////////////////////		case LIST_TYPE_GUNSHIP_TARGET:		////////////////////////////////////////		{			set_local_entity_int_value (receiver, INT_TYPE_GUNSHIP_RADAR_LOS_CLEAR, TRUE);			set_local_entity_float_value (receiver, FLOAT_TYPE_AIR_RADAR_CONTACT_TIMEOUT, AIR_RADAR_CONTACT_TIMEOUT);			// show icon on map if gunship scans it./*			if (get_local_entity_int_value (receiver, INT_TYPE_SIDE) == get_global_gunship_side ())			{				set_planner_icon_update (receiver, FALSE);			}*/			break;		}		////////////////////////////////////////		case LIST_TYPE_TARGET:		////////////////////////////////////////		{			entity				*group;			//			// Notify the group that it has been targeted			//						if (get_comms_model () == COMMS_MODEL_SERVER)			{				if (get_local_entity_int_value (sender, INT_TYPE_IDENTIFY_MOBILE))				{					group = get_local_entity_parent (sender, LIST_TYPE_MEMBER);					if (group)					{						notify_local_entity (ENTITY_MESSAGE_ENTITY_TARGETED, group, receiver, sender);					}				}			}			//			// if targetting the player then insert into the gunship target list if not already there			//			if (sender == get_gunship_entity ())			{				if (!get_local_entity_parent (receiver, LIST_TYPE_GUNSHIP_TARGET))				{					if (get_local_entity_int_value (receiver, INT_TYPE_TARGET_TYPE) != TARGET_TYPE_INVALID)					{						if (get_local_entity_int_value (receiver, INT_TYPE_THREAT_TYPE) != THREAT_TYPE_INVALID)						{							insert_local_entity_into_parents_child_list (receiver, LIST_TYPE_GUNSHIP_TARGET, sender, NULL);						}					}				}			}			break;		}	}	return (TRUE);}
开发者ID:Comanche93,项目名称:eech,代码行数:81,


示例5: opengl_post_hook

static inline void opengl_post_hook(const char* name, void* fptr, int len_args, ...){    /* Shader errors */    const char* shdr_err = 0;    if (fptr == glCompileShader || fptr == glLinkProgram) {        GLuint s;        va_list l;        va_start(l, len_args);        s = va_arg(l, GLuint);        va_end(l);        if (fptr == glCompileShader)            shdr_err = gl_check_last_compile_error(s);        else if (fptr == glLinkProgram)            shdr_err = gl_check_last_link_error(s);    }    GLenum code = REAL_GL_FUNC(glGetError)();    if (code != GL_NO_ERROR || shdr_err) {        /* Header */        size_t sz = 0;        char* buf = 0;        const char* header_fmt = "PANIC!/nOpenGL error in %s():/n";        sz += snprintf(0, 0, header_fmt, name) + 1;        buf = realloc(buf, sz);        snprintf(buf, sz, header_fmt, name);        /* Shader errors */        if (shdr_err) {            sz += strlen(shdr_err);            buf = realloc(buf, sz);            strcat(buf, shdr_err);            free((void*)shdr_err);            shdr_err = 0;        }        /* Messages */        for (;;) {            GLint next_log_len = 0;            glGetIntegerv(GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH, &next_log_len);            if (!next_log_len)                break;            char* msg_buf = calloc(1, next_log_len);            GLsizei length;            GLenum source, type, id, severity;            glGetDebugMessageLog(1, next_log_len, &source, &type, &id, &severity, &length, (GLchar*)msg_buf);            if (type == GL_DEBUG_TYPE_ERROR) {                const char* msg = construct_opengl_debug_msg(source, type, id, severity, length, (const char*)msg_buf);                sz += strlen(msg);                buf = realloc(buf, sz);                strcat(buf, msg);                free((void*)msg);            }            free(msg_buf);        }        /* Backtrace */#ifdef __GLIBC__        const char* bt = btrace();        sz += strlen(bt);        buf = realloc(buf, sz);        strcat(buf, bt);        free((void*)bt);#endif        /* Show */        showerr_cb(showerr_ud, buf);        free(buf);    }}
开发者ID:ElArtista,项目名称:EnergyCore,代码行数:69,


示例6: while

char *FmtStr( char *buff, const char *fmt, va_list args ){    char                *ptr;    unsigned            len;    long                val;    address             addr;    char                *res;    sym_handle          *sym;    char                save_buff[UTIL_LEN + 1];    while( *fmt != NULLCHAR ) {        if( *fmt != '%' ) {            *buff = *fmt;            ++buff;        } else {            ++fmt;            switch( *fmt ) {            case 'c':                val = va_arg( args, int );                *buff++ = val;                break;            case 's':                ptr = va_arg( args, char * );                buff = StrCopy( ptr, buff );                break;            case 't':                ptr = va_arg( args, char * );                len = va_arg( args, unsigned );                memcpy( buff, ptr, len );                buff += len;                break;            case 'l':                addr = va_arg( args, address );                buff = StrAddr( &addr, buff, TXT_LEN ); // nyi - overflow?                res = LineAddr( &addr, save_buff, sizeof( save_buff ) );                if( res != NULL ) {                    *buff++ = '(';                    buff = StrCopy( save_buff, buff );                    *buff++ = ')';                }                break;            case 'A':                addr = va_arg( args, address );                buff = UniqStrAddr( &addr, buff, TXT_LEN ); // nyi - overflow?                break;            case 'a':                addr = va_arg( args, address );                buff = StrAddr( &addr, buff, TXT_LEN ); // nyi - overflow?                break;            case 'p':                addr = va_arg( args, address );                buff = AddrToIOString( &addr, buff, TXT_LEN ); // nyi - overflow?                break;            case 'e':                val = va_arg( args, unsigned );                buff = SysErrMsg( val, buff );                break;            case 'U':                buff = CnvULongDec( va_arg( args, unsigned long), buff, TXT_LEN );                break;            case 'd':                val = va_arg( args, int );                buff = CnvLongDec( val, buff, TXT_LEN );                break;            case 'u':                val = va_arg( args, unsigned );                buff = CnvULongDec( val, buff, TXT_LEN );                break;            case '%':                *buff++ = '%';                break;            case 'o':                val = va_arg( args, long );                if( val < 0 ) {                    *buff++ = '-';                    val = -val;                } else {                    *buff++ = '+';                }                buff = AddHexSpec( buff );                buff = CnvULongHex( val, buff, TXT_LEN );                break;            case 'S':                sym = va_arg( args, sym_handle * );                buff += SymName( sym, NULL, SN_SOURCE, buff, TXT_LEN );                break;            }        }        ++fmt;    }    *buff = NULLCHAR;    return( buff );}
开发者ID:ABratovic,项目名称:open-watcom-v2,代码行数:93,


示例7: as_operations_cdt_op

/** * Call with AS_OPERATIONS_CDT_OP only. */static bool as_operations_cdt_op(as_operations *ops, const as_bin_name name, as_cdt_optype op, size_t n, ...){	if (op >= cdt_op_table_size) {		return false;	}	const cdt_op_table_entry *entry = &cdt_op_table[op];	if (n < entry->count - entry->opt_args || n > entry->count) {		return false;	}	va_list vl;	if (n > 0) {		va_start(vl, n);	}	as_arraylist list;	as_arraylist_inita(&list, (uint32_t)n + 1); // +1 to avoid alloca(0) undefined behavior	for (size_t i = 0; i < n; i++) {		as_cdt_paramtype type = entry->args[i];		switch (type) {		case AS_CDT_PARAM_PAYLOAD: {			as_val *arg = va_arg(vl, as_val *);			if (as_arraylist_append(&list, arg) != AS_ARRAYLIST_OK) {				va_end(vl);				as_arraylist_destroy(&list);				return false;			}			break;		}		case AS_CDT_PARAM_COUNT: {			uint64_t arg = va_arg(vl, uint64_t);			if (as_arraylist_append(&list, (as_val *)as_integer_new(arg)) != AS_ARRAYLIST_OK) {				va_end(vl);				as_arraylist_destroy(&list);				return false;			}			break;		}		case AS_CDT_PARAM_INDEX: {			int64_t arg = va_arg(vl, int64_t);			if (as_arraylist_append(&list, (as_val *)as_integer_new(arg)) != AS_ARRAYLIST_OK) {				va_end(vl);				as_arraylist_destroy(&list);				return false;			}			break;		}		default:			break;		}	}	if (n > 0) {		va_end(vl);	}	as_serializer ser;	as_msgpack_init(&ser);	uint32_t list_size = as_serializer_serialize_getsize(&ser, (as_val *) &list);	as_bytes *bytes = as_bytes_new(sizeof(uint16_t) + list_size);	uint8_t *list_write = as_bytes_get(bytes);	uint16_t *list_write_op = (uint16_t *)list_write;	*list_write_op = cf_swap_to_be16(op);	list_write += sizeof(uint16_t);	as_serializer_serialize_presized(&ser, (const as_val *) &list, list_write);	as_serializer_destroy(&ser);	as_arraylist_destroy(&list);	bytes->size = bytes->capacity;	// as_bytes->type default to AS_BYTES_BLOB	if (entry->rw_type == CDT_RW_TYPE_MODIFY) {		return as_operations_add_cdt_modify(ops, name, (as_bin_value *) bytes);	}	return as_operations_add_cdt_read(ops, name, (as_bin_value *) bytes);}
开发者ID:BeeswaxIO,项目名称:aerospike-client-c,代码行数:87,


示例8: API_dev_read

/* * pseudo signature: * * int API_dev_read( *	struct device_info *di, *	void *buf, *	size_t *len, *	unsigned long *start *	size_t *act_len * ) * * buf:	ptr to buffer where to put the read data * * len: ptr to length to be read *      - network: len of packet to read (in bytes) *      - storage: # of blocks to read (can vary in size depending on define) * * start: ptr to start block (only used for storage devices, ignored for *        network) * * act_len: ptr to where to put the len actually read */static int API_dev_read(va_list ap){	struct device_info *di;	void *buf;	lbasize_t *len_stor, *act_len_stor;	lbastart_t *start;	int *len_net, *act_len_net;	/* 1. arg is ptr to the device_info struct */	di = (struct device_info *)va_arg(ap, u_int32_t);	if (di == NULL)		return API_EINVAL;	/* XXX should we check if device is open? i.e. the ->state ? */	if (di->cookie == NULL)		return API_ENODEV;	/* 2. arg is ptr to buffer from where to put the read data */	buf = (void *)va_arg(ap, u_int32_t);	if (buf == NULL)		return API_EINVAL;	if (di->type & DEV_TYP_STOR) {		/* 3. arg - ptr to var with # of blocks to read */		len_stor = (lbasize_t *)va_arg(ap, u_int32_t);		if (!len_stor)			return API_EINVAL;		if (*len_stor <= 0)			return API_EINVAL;		/* 4. arg - ptr to var with start block */		start = (lbastart_t *)va_arg(ap, u_int32_t);		/* 5. arg - ptr to var where to put the len actually read */		act_len_stor = (lbasize_t *)va_arg(ap, u_int32_t);		if (!act_len_stor)			return API_EINVAL;		*act_len_stor = dev_read_stor(di->cookie, buf, *len_stor, *start);	} else if (di->type & DEV_TYP_NET) {		/* 3. arg points to the var with length of packet to read */		len_net = (int *)va_arg(ap, u_int32_t);		if (!len_net)			return API_EINVAL;		if (*len_net <= 0)			return API_EINVAL;		/* 4. - ptr to var where to put the len actually read */		act_len_net = (int *)va_arg(ap, u_int32_t);		if (!act_len_net)			return API_EINVAL;		*act_len_net = dev_read_net(di->cookie, buf, *len_net);	} else		return API_ENODEV;	return 0;}
开发者ID:5victor,项目名称:u-boot-mini2440,代码行数:84,


示例9: NET_vReadFormat

/** * @brief Reads from a buffer according to format; version without syntactic sugar for variable arguments, to call it from other functions with variable arguments * @sa SV_ReadFormat * @param[in] buf The buffer we read the data from * @param[in] format The format string may not be nullptr */void NET_vReadFormat (dbuffer* buf, const char* format, va_list ap){	while (*format) {		const char typeID = *format++;		switch (typeID) {		case 'c':			*va_arg(ap, int*) = NET_ReadChar(buf);			break;		case 'b':			*va_arg(ap, int*) = NET_ReadByte(buf);			break;		case 's':			*va_arg(ap, int*) = NET_ReadShort(buf);			break;		case 'l':			*va_arg(ap, int*) = NET_ReadLong(buf);			break;		case 'p':			NET_ReadPos(buf, *va_arg(ap, vec3_t*));			break;		case 'g':			NET_ReadGPos(buf, *va_arg(ap, pos3_t*));			break;		case 'd':			NET_ReadDir(buf, *va_arg(ap, vec3_t*));			break;		case 'a':			*va_arg(ap, float*) = NET_ReadAngle(buf);			break;		case '!':			format++;			break;		case '&': {			char* str = va_arg(ap, char*);			const size_t length = va_arg(ap, size_t);			NET_ReadString(buf, str, length);			break;		}		case '*':			{				int i;				byte* p;				const int n = NET_ReadShort(buf);				*va_arg(ap, int*) = n;				p = va_arg(ap, byte*);				for (i = 0; i < n; i++)					*p++ = NET_ReadByte(buf);			}			break;		default:			Com_Error(ERR_DROP, "ReadFormat: Unknown type!");		}	}	/* Too many arguments for the given format; too few cause crash above */#ifdef PARANOID	if (!ap)		Com_Error(ERR_DROP, "ReadFormat: Too many arguments!");#endif}
开发者ID:Isaacssv552,项目名称:ufoai,代码行数:68,


示例10: DBG_Callback

int idaapi DBG_Callback(void *ud, int notification_code, va_list va){  // This hook gets called from the kernel. Ensure we hold the GIL.  PYW_GIL_GET;  class DBG_Hooks *proxy = (class DBG_Hooks *)ud;  debug_event_t *event;  int code = 0;  try  {    switch (notification_code)    {    case dbg_process_start:      event = va_arg(va, debug_event_t *);      proxy->dbg_process_start(event->pid,        event->tid,        event->ea,        event->modinfo.name,        event->modinfo.base,        event->modinfo.size);      break;    case dbg_process_exit:      event = va_arg(va, debug_event_t *);      proxy->dbg_process_exit(        event->pid,        event->tid,        event->ea,        event->exit_code);      break;    case dbg_process_attach:      event = va_arg(va, debug_event_t *);      proxy->dbg_process_attach(        event->pid,        event->tid,        event->ea,        event->modinfo.name,        event->modinfo.base,        event->modinfo.size);      break;    case dbg_process_detach:      event = va_arg(va, debug_event_t *);      proxy->dbg_process_detach(        event->pid,        event->tid,        event->ea);      break;    case dbg_thread_start:      event = va_arg(va, debug_event_t *);      proxy->dbg_thread_start(        event->pid,        event->tid,        event->ea);      break;    case dbg_thread_exit:      event = va_arg(va, debug_event_t *);      proxy->dbg_thread_exit(        event->pid,        event->tid,        event->ea,        event->exit_code);      break;    case dbg_library_load:      event = va_arg(va, debug_event_t *);      proxy->dbg_library_load(        event->pid,        event->tid,        event->ea,        event->modinfo.name,        event->modinfo.base,        event->modinfo.size);      break;    case dbg_library_unload:      event = va_arg(va, debug_event_t *);      proxy->dbg_library_unload(        event->pid,        event->tid,        event->ea,        event->info);      break;    case dbg_information:      event = va_arg(va, debug_event_t *);      proxy->dbg_information(        event->pid,        event->tid,        event->ea,        event->info);      break;    case dbg_exception:    {      event = va_arg(va, debug_event_t *);//.........这里部分代码省略.........
开发者ID:EiNSTeiN-,项目名称:idapython,代码行数:101,


示例11: flush_pending_metadata_to_save

static void flush_pending_metadata_to_save (ItemHandler *item, ...){    gboolean to_free;    gchar *stats;    gchar *query;    gchar *useless;    gchar *uri;    va_list params;    gpointer key;    gpointer value;    GList *statements;    GHashTable *table;    GHashTableIter iter;    GVariant *results;    GVariant *rows;    GVariant *sub_value;    GVariant *sub_sub_value;    GVariantIter r_iter;    GVariantIter sub_iter;    GVariantIter sub_sub_iter;    GError *error;    Property *prop;    statements = NULL;    va_start (params, item);    while ((table = va_arg (params, GHashTable*)) != NULL) {        to_free = va_arg (params, gboolean);        g_hash_table_iter_init (&iter, table);        while (g_hash_table_iter_next (&iter, &key, &value)) {            prop = properties_pool_get_by_name ((gchar*) key);            switch (property_get_datatype (prop)) {                case PROPERTY_TYPE_STRING:                    stats = g_strdup_printf ("%s /"%s/"", (gchar*) key, (gchar*) value);                    statements = g_list_prepend (statements, stats);                    break;                case PROPERTY_TYPE_RESOURCE:                    stats = g_strdup_printf ("%s <%s>", (gchar*) key, (gchar*) value);                    statements = g_list_prepend (statements, stats);                    break;                default:                    stats = g_strdup_printf ("%s %s", (gchar*) key, (gchar*) value);                    statements = g_list_prepend (statements, stats);                    break;            }        }        if (to_free == TRUE)            g_hash_table_foreach_remove (table, destroy_value_in_hash, NULL);    }    va_end (params);    if (statements == NULL)        return;    stats = from_glist_to_string (statements, " ; ", TRUE);    query = g_strdup_printf ("INSERT { _:item a nfo:FileDataObject ; a nie:InformationElement ; %s }", stats);    g_free (stats);    error = NULL;    results = execute_update_blank (query, &error);    if (error != NULL) {        g_warning ("Error while saving metadata: %s", error->message);        g_error_free (error);    }    else {        /*            To know how to iter a SparqlUpdateBlank response, cfr.            http://mail.gnome.org/archives/commits-list/2011-February/msg05384.html        */        g_variant_iter_init (&r_iter, results);        if ((rows = g_variant_iter_next_value (&r_iter))) {            g_variant_iter_init (&sub_iter, rows);            if ((sub_value = g_variant_iter_next_value (&sub_iter))) {                g_variant_iter_init (&sub_sub_iter, sub_value);                if ((sub_sub_value = g_variant_iter_next_value (&sub_sub_iter))) {                    useless = NULL;                    uri = NULL;                    g_variant_get (sub_sub_value, "a{ss}", &useless, &uri);                    item->priv->subject = g_strdup (uri);                    g_variant_unref (sub_sub_value);                }                g_variant_unref (sub_value);            }            g_variant_unref (rows);        }    }    g_free (query);//.........这里部分代码省略.........
开发者ID:madbob,项目名称:FSter,代码行数:101,


示例12: _nis_getnetbyaddr

int_nis_getnetbyaddr(void *rval, void *cb_data, va_list ap){#ifdef YP	uint32_t addr;	int af;	char *buffer;	size_t buflen;	int *errnop, *h_errnop;	struct netent *nptr, ne;	struct netent_data *ned;	char *str, *cp;	uint32_t net2;	int nn;	unsigned int netbr[4];	char buf[MAXDNAME];	res_state statp;	addr = va_arg(ap, uint32_t);	af = va_arg(ap, int);	nptr = va_arg(ap, struct netent *);	buffer = va_arg(ap, char *);	buflen = va_arg(ap, size_t);	errnop = va_arg(ap, int *);	h_errnop = va_arg(ap, int *);	statp = __res_state();	if ((ned = __netent_data_init()) == NULL) {		RES_SET_H_ERRNO(statp, NETDB_INTERNAL);		*h_errnop = statp->res_h_errno;		return (NS_UNAVAIL);	}	if (af != AF_INET) {		RES_SET_H_ERRNO(statp, NETDB_INTERNAL);		*h_errnop = statp->res_h_errno;		errno = EAFNOSUPPORT;		return (NS_UNAVAIL);	}        for (nn = 4, net2 = addr; net2; net2 >>= 8) {                netbr[--nn] = net2 & 0xff;	}	switch (nn) {	case 3:		/* Class A */		sprintf(buf, "%u", netbr[3]);		break;        case 2:		/* Class B */		sprintf(buf, "%u.%u", netbr[2], netbr[3]);		break;        case 1:		/* Class C */		sprintf(buf, "%u.%u.%u", netbr[1], netbr[2], netbr[3]);                break;        case 0:		/* Class D - E */		sprintf(buf, "%u.%u.%u.%u", netbr[0], netbr[1],			netbr[2], netbr[3]);		break;	}	str = (char *)&buf;	cp = str + (strlen(str) - 2);	while(!strcmp(cp, ".0")) {		*cp = '/0';		cp = str + (strlen(str) - 2);	}	if (_getnetbynis(str, "networks.byaddr", af, &ne, ned) != 0) {		*h_errnop = statp->res_h_errno;		return (NS_NOTFOUND);	}	if (__copy_netent(&ne, nptr, buffer, buflen) != 0) {		*errnop = errno;		RES_SET_H_ERRNO(statp, NETDB_INTERNAL);		*h_errnop = statp->res_h_errno;		return (NS_RETURN);	}	*((struct netent **)rval) = nptr;	return (NS_SUCCESS);#else	return (NS_UNAVAIL);#endif /* YP */}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:84,


示例13: vcprintf

/** * Write a formatted string to a printf context * * @v ctx		Context * @v fmt		Format string * @v args		Arguments corresponding to the format string * @ret len		Length of formatted string */size_t vcprintf ( struct printf_context *ctx, const char *fmt, va_list args ) {	int flags;	int width;	uint8_t *length;	char *ptr;	char tmp_buf[32]; /* 32 is enough for all numerical formats.			   * Insane width fields could overflow this buffer. */	wchar_t *wptr;	/* Initialise context */	ctx->len = 0;	for ( ; *fmt ; fmt++ ) {		/* Pass through ordinary characters */		if ( *fmt != '%' ) {			cputchar ( ctx, *fmt );			continue;		}		fmt++;		/* Process flag characters */		flags = 0;		for ( ; ; fmt++ ) {			if ( *fmt == '#' ) {				flags |= ALT_FORM;			} else if ( *fmt == '0' ) {				flags |= ZPAD;			} else {				/* End of flag characters */				break;			}		}		/* Process field width */		width = 0;		for ( ; ; fmt++ ) {			if ( ( ( unsigned ) ( *fmt - '0' ) ) < 10 ) {				width = ( width * 10 ) + ( *fmt - '0' );			} else {				break;			}		}		/* We don't do floating point */		/* Process length modifier */		length = &type_sizes[INT_LEN];		for ( ; ; fmt++ ) {			if ( *fmt == 'h' ) {				length--;			} else if ( *fmt == 'l' ) {				length++;			} else if ( *fmt == 'z' ) {				length = &type_sizes[SIZE_T_LEN];			} else {				break;			}		}		/* Process conversion specifier */		ptr = tmp_buf + sizeof ( tmp_buf ) - 1;		*ptr = '/0';		wptr = NULL;		if ( *fmt == 'c' ) {			if ( length < &type_sizes[LONG_LEN] ) {				cputchar ( ctx, va_arg ( args, unsigned int ) );			} else {				wchar_t wc;				size_t len;				wc = va_arg ( args, wint_t );				len = wcrtomb ( tmp_buf, wc, NULL );				tmp_buf[len] = '/0';				ptr = tmp_buf;			}		} else if ( *fmt == 's' ) {			if ( length < &type_sizes[LONG_LEN] ) {				ptr = va_arg ( args, char * );			} else {				wptr = va_arg ( args, wchar_t * );			}			if ( ( ptr == NULL ) && ( wptr == NULL ) )				ptr = "<NULL>";		} else if ( *fmt == 'p' ) {
开发者ID:Afterglow,项目名称:ipxe,代码行数:87,


示例14: cd_state_set_steps_real

/** * cd_state_set_steps_real: **/gbooleancd_state_set_steps_real (CdState *state, GError **error, const gchar *strloc, gint value, ...){	va_list args;	guint i;	gint value_temp;	guint total;	g_return_val_if_fail (state != NULL, FALSE);	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);	/* we must set at least one thing */	total = value;	/* process the valist */	va_start (args, value);	for (i = 0;; i++) {		value_temp = va_arg (args, gint);		if (value_temp == -1)			break;		total += (guint) value_temp;	}	va_end (args);	/* does not sum to 100% */	if (total != 100) {		g_set_error (error,			     CD_STATE_ERROR,			     CD_STATE_ERROR_INVALID,			     "percentage not 100: %u",			     total);		return FALSE;	}	/* set step number */	if (!cd_state_set_number_steps_real (state, i+1, strloc)) {		g_set_error (error,			     CD_STATE_ERROR,			     CD_STATE_ERROR_INVALID,			     "failed to set number steps: %u",			     i+1);		return FALSE;	}	/* save this data */	total = value;	state->priv->step_data = g_new0 (guint, i+2);	state->priv->step_profile = g_new0 (gdouble, i+2);	state->priv->step_data[0] = total;	va_start (args, value);	for (i = 0;; i++) {		value_temp = va_arg (args, gint);		if (value_temp == -1)			break;		/* we pre-add the data to make access simpler */		total += (guint) value_temp;		state->priv->step_data[i+1] = total;	}	va_end (args);	return TRUE;}
开发者ID:hughsie,项目名称:colord,代码行数:65,


示例15: debug_print

/* Print a formatted string to screen. Only used for debugging. This   is NOT a POSIX compliant function. */void debug_print (const char *format_string, ...){    va_list va_arguments;    int index = 0;        va_start (va_arguments, format_string);        if (format_string == NULL)    {        debug_print ("%s: format_string == NULL./n", __FUNCTION__);        return;    }    /* Main parser loop. */    while (format_string[index] != 0)    {        switch (format_string[index])        {            /* Percent sign means we get a formatting code as the next               character. */            case '%':            {                index++;                                switch (format_string[index])                {                    /* Character. */                    case 'c':                    {                        char character = va_arg (va_arguments, int);                                                put_character (x_position, y_position, character,                                       text_attribute);                                                /* Move the cursor. */                        x_position++;                                                if (x_position >= DEBUG_SCREEN_WIDTH)                        {                            y_position++;                            x_position = 0;                        }                                                break;                    }                                        /* String. */                    case 's':                    {                        print_simple (va_arg (va_arguments, char *));                                                break;                    }                                        /* Signed number. */                    case 'd':                    {                        char string[11];                        signed number = va_arg (va_arguments, signed);                                                /* If the number is negative, print it with a                           hyphen before. */                        if (number < 0)                        {                            string[0] = '-';                            decimal_string (string + 1, -number);                        }                        else                        {                            decimal_string (string, number);                        }                                                print_simple (string);                        break;                    }                                        /* Unsigned number. */                    case 'u':                    {                        char string[11];                                                decimal_string (string,                                         va_arg (va_arguments, unsigned));                        print_simple (string);                                                break;                    }                                        /* Hexadecimal number. Padded to eight characters                       with zeroes. */                    case 'p':                    case 'x':                    {                        char string[9];                                                hex_string (string, va_arg (va_arguments, unsigned));                        print_simple (string);                        //.........这里部分代码省略.........
开发者ID:chaos4ever,项目名称:stormG3,代码行数:101,


示例16: at_parse_command

//-----------------------------------------------------------------------------int at_parse_command(const unsigned char *input, const char *format, ...)//-----------------------------------------------------------------------------{  const char *fmt = format;  const char *inp = (const char *)input;  char *endptr;  unsigned char *out_us;  unsigned char *buffer;  size_t length;  size_t storage_size;  int *out_i;  long int *out_l;  va_list ap;  int error = 1;  printf("PARSER_LOG:Parsing %s/n with %s/n", input, format);  va_start(ap, format);  while (*fmt) {    switch(*fmt++) {    case '@':      if (*fmt == 0) {        printf("PARSER_LOG:Invalid format string: %s/n", format);        error = 0;        goto end;      }      switch(*fmt++) {      case 'i':        out_i = va_arg(ap, int *);        *out_i = strtol(inp, &endptr, 10);        if (endptr == inp) {          error = 0;          goto end;        }        printf("PARSER_LOG:Parsed int %d/n", *out_i);        inp = endptr;        break;      case 'I':        out_i = va_arg(ap, int *);        *out_i = strtol(inp, &endptr, 10);        if (endptr == inp) {          printf("PARSER_LOG:Number empty/n");          *out_i = 0;        } else {          printf("PARSER_LOG:Parsed int %d/n", *out_i);          inp = endptr;        }        break;      case 'l':        out_l = va_arg(ap, long int *);        *out_l = strtol(inp, &endptr, 10);        if (endptr == inp) {          error = 0;          goto end;        }        printf("PARSER_LOG:Parsed long int %ld/n", *out_l);        inp = endptr;        break;      case 'r':        out_us = va_arg(ap, unsigned char *);        storage_size = va_arg(ap, size_t);        length = at_grab_string(inp, &buffer);        printf("PARSER_LOG:Parsed raw string /"%s/"/n", buffer);        if (strlen(buffer) > storage_size) {          free(buffer);          error = 0;          goto end;        }        strcpy(out_us, buffer);        free(buffer);        inp += length;        break;      case '@':        if (*inp++ != '@') {          error = 0;          goto end;        }        break;      case '0':        /* Just skip the rest */        goto end;      default://.........这里部分代码省略.........
开发者ID:debashish216,项目名称:lte-testbed-news,代码行数:101,


示例17: IDB_Callback

//<code(py_idbhooks)>//---------------------------------------------------------------------------int idaapi IDB_Callback(void *ud, int notification_code, va_list va){  // This hook gets called from the kernel. Ensure we hold the GIL.  PYW_GIL_GET;  class IDB_Hooks *proxy = (class IDB_Hooks *)ud;  int ret = 0;  try  {    switch ( notification_code )    {      // hookgenIDB:notificationscase idb_event::byte_patched:{  ea_t ea = va_arg(va, ea_t);  uint32 old_value = va_arg(va, uint32);  ret = proxy->byte_patched(ea, old_value);}break;case idb_event::cmt_changed:{  ea_t ea = va_arg(va, ea_t);  bool repeatable_cmt = bool(va_arg(va, int));  ret = proxy->cmt_changed(ea, repeatable_cmt);}break;case idb_event::ti_changed:{  ea_t ea = va_arg(va, ea_t);  const type_t * type = va_arg(va, const type_t *);  const p_list * fnames = va_arg(va, const p_list *);  ret = proxy->ti_changed(ea, type, fnames);}break;case idb_event::op_ti_changed:{  ea_t ea = va_arg(va, ea_t);  int n = va_arg(va, int);  const type_t * type = va_arg(va, const type_t *);  const p_list * fnames = va_arg(va, const p_list *);  ret = proxy->op_ti_changed(ea, n, type, fnames);}break;case idb_event::op_type_changed:{  ea_t ea = va_arg(va, ea_t);  int n = va_arg(va, int);  ret = proxy->op_type_changed(ea, n);}break;case idb_event::enum_created:{  enum_t id = va_arg(va, enum_t);  ret = proxy->enum_created(id);}break;case idb_event::enum_deleted:{  enum_t id = va_arg(va, enum_t);  ret = proxy->enum_deleted(id);}break;case idb_event::enum_bf_changed:{  enum_t id = va_arg(va, enum_t);  ret = proxy->enum_bf_changed(id);}break;case idb_event::enum_renamed:{  tid_t id = va_arg(va, tid_t);  ret = proxy->enum_renamed(id);}break;case idb_event::enum_cmt_changed:{  tid_t id = va_arg(va, tid_t);  bool repeatable = bool(va_arg(va, int));  ret = proxy->enum_cmt_changed(id, repeatable);}break;case idb_event::enum_const_created:{  enum_t id = va_arg(va, enum_t);  const_t cid = va_arg(va, const_t);  ret = proxy->enum_member_created(id, cid);}break;//.........这里部分代码省略.........
开发者ID:aisling-kells,项目名称:src,代码行数:101,


示例18: notify

//----------------------------------------------------------------------static int notify(processor_t::idp_notify msgid, ...) { // Various messages:  va_list va;  va_start(va, msgid);// A well behaving processor module should call invoke_callbacks()// in his notify() function. If this function returns 0, then// the processor module should process the notification itself// Otherwise the code should be returned to the caller:  int code = invoke_callbacks(HT_IDP, msgid, va);  if ( code ) return code;  int retcode = 1;  segment_t *sptr;  static uchar first = 0;  switch(msgid) {    case processor_t::newseg:      sptr = va_arg(va, segment_t *);      sptr->defsr[rVds-ph.regFirstSreg] = find_selector(inf.start_cs); //sptr->sel;      break;    case processor_t::init:      ovrtrans.create(ovrtrans_name);   // it makes no harm to create it again    default:      break;    case processor_t::oldfile:      m.asect_top = (ushort)ovrtrans.altval(n_asect);      m.ovrcallbeg = (ushort)ovrtrans.altval(n_ovrbeg);      m.ovrcallend = (ushort)ovrtrans.altval(n_ovrend);      if(ovrtrans.altval(n_asciiX))         ash.XlatAsciiOutput = macro11.XlatAsciiOutput = NULL;      m.ovrtbl_base = (uint32)ovrtrans.altval(n_ovrbas);    case processor_t::newfile:      first = 1;      break;    case processor_t::loader:      {        pdp_ml_t **ml = va_arg(va, pdp_ml_t **);        netnode  **mn  = va_arg(va, netnode **);        if(ml && mn) {          *ml = &m;          *mn = &ovrtrans;          retcode = 0;        }      }      break;    case processor_t::move_segm:                                // A segment is moved                                // Fix processor dependent address sensitive information                                // args: ea_t from - old segment address                                //       segment_t - moved segment      {        ea_t from    = va_arg(va, ea_t);        segment_t *s = va_arg(va, segment_t *);        ovrtrans.altshift(from, s->startEA, s->size()); // i'm not sure about this      }      break;  }  va_end(va);  return(retcode);}
开发者ID:nealey,项目名称:vera,代码行数:67,


示例19: lib_RawDoFmt

va_list lib_RawDoFmt(struct SysBase *SysBase, const char *fmt, va_list ap, void (*PutCh)(INT32, APTR), APTR PutChData){	char *p;	int ch;	unsigned long ul;	int lflag;	int pad0flag;	int wflag;	int width;	int pflag;	int precision;	int total_chars;	int chars_to_print;	int pad_spaces;	//if(fmt == NULL || ap == NULL || PutCh == NULL) return ap;	if(fmt == NULL || PutCh == NULL) return ap;	for (;;) {		while ((ch = *fmt++) != '%') {			if (ch == '/0')			{				PutCh(ch, PutChData); // report the /0				return ap;			}			PutCh(ch, PutChData);		}		lflag = 0;		pad0flag = 0;		wflag = 0;		width = 0;		pflag = 0;		precision = 0;reswitch:	switch (ch = *fmt++) {		case '/0':			PutCh(ch, PutChData); // report the /0			return ap;		case '%':			PutCh(ch, PutChData); // report one % character			break;		case 'l':			lflag = 1;			goto reswitch;		case 'c':			ch = va_arg(ap, int);			PutCh(ch & 0xff, PutChData);			break;		case 's':			p = va_arg(ap, char *);			if(p == NULL)				break;			if(pflag == 0 && wflag == 0)			{				while ((ch = *p++) != '/0')					PutCh(ch, PutChData);			}			else			{				char *q = p;				total_chars = 0;				chars_to_print = 0;				pad_spaces = 0;				//calculate string length				while ((ch = *q++) != '/0') total_chars++;				//count max chars to print				if(pflag == 1)				{					chars_to_print = (precision < total_chars) ? precision : total_chars;				}				else				{					chars_to_print = total_chars;				}				//count spaces to pad				if(wflag == 1)				{					pad_spaces = (width > chars_to_print) ? (width - chars_to_print) : 0;				}				else				{					pad_spaces = 0;				}				//print spaces				while (pad_spaces-- > 0)					PutCh(' ', PutChData);//.........这里部分代码省略.........
开发者ID:cycl0ne,项目名称:poweros_x86,代码行数:101,


示例20: host_id_func

static inthost_id_func(char *buffer, size_t *buffer_size, va_list ap, void *cache_mdata){	res_state statp;	u_long res_options;	const int op_id = 1;	char *str;	void *addr;	socklen_t len;	int type;	size_t desired_size, size;	enum nss_lookup_type lookup_type;	char *p;	int res = NS_UNAVAIL;	statp = __res_state();	res_options = statp->options & (RES_RECURSE | RES_DEFNAMES |	    RES_DNSRCH | RES_NOALIASES | RES_USE_INET6);	lookup_type = (enum nss_lookup_type)cache_mdata;	switch (lookup_type) {	case nss_lt_name:		str = va_arg(ap, char *);		type = va_arg(ap, int);		size = strlen(str);		desired_size = sizeof(res_options) + sizeof(int) +		    sizeof(enum nss_lookup_type) + sizeof(int) + size + 1;		if (desired_size > *buffer_size) {			res = NS_RETURN;			goto fin;		}		p = buffer;		memcpy(p, &res_options, sizeof(res_options));		p += sizeof(res_options);		memcpy(p, &op_id, sizeof(int));		p += sizeof(int);		memcpy(p, &lookup_type, sizeof(enum nss_lookup_type));		p += sizeof(int);		memcpy(p, &type, sizeof(int));		p += sizeof(int);		memcpy(p, str, size + 1);		res = NS_SUCCESS;		break;	case nss_lt_id:		addr = va_arg(ap, void *);		len = va_arg(ap, socklen_t);		type = va_arg(ap, int);		desired_size = sizeof(res_options) + sizeof(int) +		    sizeof(enum nss_lookup_type) + sizeof(int) +		    sizeof(socklen_t) + len;		if (desired_size > *buffer_size) {			res = NS_RETURN;			goto fin;		}		p = buffer;		memcpy(p, &res_options, sizeof(res_options));		p += sizeof(res_options);		memcpy(p, &op_id, sizeof(int));		p += sizeof(int);		memcpy(p, &lookup_type, sizeof(enum nss_lookup_type));		p += sizeof(int);		memcpy(p, &type, sizeof(int));		p += sizeof(int);		memcpy(p, &len, sizeof(socklen_t));		p += sizeof(socklen_t);		memcpy(p, addr, len);		res = NS_SUCCESS;		break;	default:		/* should be unreachable */		return (NS_UNAVAIL);	}fin:	*buffer_size = desired_size;	return (res);}
开发者ID:mihaicarabas,项目名称:dragonfly,代码行数:97,


示例21: open

int open(const char *path, int oflags, ...){    struct filelist  *list;    FAR struct inode *inode;    const char       *relpath = NULL;#if defined(CONFIG_FILE_MODE) || !defined(CONFIG_DISABLE_MOUNTPOINT)    mode_t            mode = 0666;#endif    int               ret;    int               fd;    /* Get the thread-specific file list */    list = sched_getfiles();    if (!list)    {        ret = EMFILE;        goto errout;    }#ifdef CONFIG_FILE_MODE#  ifdef CONFIG_CPP_HAVE_WARNING#    warning "File creation not implemented"#  endif    /* If the file is opened for creation, then get the mode bits */    if (oflags & (O_WRONLY|O_CREAT) != 0)    {        va_list ap;        va_start(ap, oflags);        mode = va_arg(ap, mode_t);        va_end(ap);    }#endif    /* Get an inode for this file */    inode = inode_find(path, &relpath);    if (!inode)    {        /* "O_CREAT is not set and the named file does not exist.  Or,         *  a directory component in pathname does not exist or is a         *  dangling symbolic link."         */        ret = ENOENT;        goto errout;    }    /* Verify that the inode is valid and either a "normal" or a mountpoint.  We     * specifically exclude block drivers.     */    if ((!INODE_IS_DRIVER(inode) && !INODE_IS_MOUNTPT(inode)) || !inode->u.i_ops)    {        ret = ENXIO;        goto errout_with_inode;    }    /* Make sure that the inode supports the requested access */    ret = inode_checkflags(inode, oflags);    if (ret < 0)    {        ret = -ret;        goto errout_with_inode;    }    /* Associate the inode with a file structure */    fd = files_allocate(inode, oflags, 0, 0);    if (fd < 0)    {        ret = EMFILE;        goto errout_with_inode;    }    /* Perform the driver open operation.  NOTE that the open method may     * be called many times.  The driver/mountpoint logic should handled this     * becuase it may also be closed that many times.     */    ret = OK;    if (inode->u.i_ops->open)    {#ifndef CONFIG_DISABLE_MOUNTPOINT        if (INODE_IS_MOUNTPT(inode))        {            ret = inode->u.i_mops->open((FAR struct file*)&list->fl_files[fd],                                        relpath, oflags, mode);        }        else#endif        {            ret = inode->u.i_ops->open((FAR struct file*)&list->fl_files[fd]);        }    }    if (ret < 0)//.........这里部分代码省略.........
开发者ID:andrewms,项目名称:nuttx_ap,代码行数:101,


示例22: _TIFFVSetField

static int_TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap){	TIFFDirectory* td = &tif->tif_dir;	int status = 1;	uint32 v32;	int i, v;	double d;	char* s;	switch (tag) {	case TIFFTAG_SUBFILETYPE:		td->td_subfiletype = va_arg(ap, uint32);		break;	case TIFFTAG_IMAGEWIDTH:		td->td_imagewidth = va_arg(ap, uint32);		break;	case TIFFTAG_IMAGELENGTH:		td->td_imagelength = va_arg(ap, uint32);		break;	case TIFFTAG_BITSPERSAMPLE:		td->td_bitspersample = (uint16) va_arg(ap, int);		/*		 * If the data require post-decoding processing		 * to byte-swap samples, set it up here.  Note		 * that since tags are required to be ordered,		 * compression code can override this behaviour		 * in the setup method if it wants to roll the		 * post decoding work in with its normal work.		 */		if (tif->tif_flags & TIFF_SWAB) {			if (td->td_bitspersample == 16)				tif->tif_postdecode = _TIFFSwab16BitData;			else if (td->td_bitspersample == 32)				tif->tif_postdecode = _TIFFSwab32BitData;			else if (td->td_bitspersample == 64)				tif->tif_postdecode = _TIFFSwab64BitData;		}		break;	case TIFFTAG_COMPRESSION:		v = va_arg(ap, int) & 0xffff;		/*		 * If we're changing the compression scheme,		 * the notify the previous module so that it		 * can cleanup any state it's setup.		 */		if (TIFFFieldSet(tif, FIELD_COMPRESSION)) {			if (td->td_compression == v)				break;			(*tif->tif_cleanup)(tif);			tif->tif_flags &= ~TIFF_CODERSETUP;		}		/*		 * Setup new compression routine state.		 */		if ( ! tif->tif_mode == O_RDONLY ) { 		  /* Handle removal of LZW compression */ 		  if ( v == COMPRESSION_LZW ) { 		    TIFFError(tif->tif_name, 			      "LZW compression no longer supported due to Unisys patent enforcement"); 		    v=COMPRESSION_NONE;		  }		}		if( (status = TIFFSetCompressionScheme(tif, v)) != 0 )		  td->td_compression = v;		break;	case TIFFTAG_PHOTOMETRIC:		td->td_photometric = (uint16) va_arg(ap, int);		break;	case TIFFTAG_THRESHHOLDING:		td->td_threshholding = (uint16) va_arg(ap, int);		break;	case TIFFTAG_FILLORDER:		v = va_arg(ap, int);		if (v != FILLORDER_LSB2MSB && v != FILLORDER_MSB2LSB)			goto badvalue;		td->td_fillorder = (uint16) v;		break;	case TIFFTAG_DOCUMENTNAME:		_TIFFsetString(&td->td_documentname, va_arg(ap, char*));		break;	case TIFFTAG_ARTIST:		_TIFFsetString(&td->td_artist, va_arg(ap, char*));		break;	case TIFFTAG_DATETIME:		_TIFFsetString(&td->td_datetime, va_arg(ap, char*));		break;	case TIFFTAG_HOSTCOMPUTER:		_TIFFsetString(&td->td_hostcomputer, va_arg(ap, char*));		break;	case TIFFTAG_IMAGEDESCRIPTION:		_TIFFsetString(&td->td_imagedescription, va_arg(ap, char*));		break;	case TIFFTAG_MAKE:		_TIFFsetString(&td->td_make, va_arg(ap, char*));		break;	case TIFFTAG_MODEL:		_TIFFsetString(&td->td_model, va_arg(ap, char*));		break;	case TIFFTAG_SOFTWARE://.........这里部分代码省略.........
开发者ID:abhineet123,项目名称:Xvision-Nov_2014,代码行数:101,


示例23: va_arg_fill

static void va_arg_fill( v_paramlst * plst, va_list va ){   int iArg;   for( iArg = 0; iArg < plst->maxarg; ++iArg )   {      switch( plst->arglst[ iArg ].id )      {         case v_x_uint:             plst->arglst[ iArg ].value.as_x_uint = va_arg( va, _x_uint );             break;         case v_x_long:             plst->arglst[ iArg ].value.as_x_long = va_arg( va, _x_long );             break;         case v_x_ulong:             plst->arglst[ iArg ].value.as_x_ulong = va_arg( va, _x_ulong );             break;         case v_x_longlong:             plst->arglst[ iArg ].value.as_x_longlong = va_arg( va, _x_longlong );             break;         case v_x_ulonglong:             plst->arglst[ iArg ].value.as_x_ulonglong = va_arg( va, _x_ulonglong );             break;         case v_x_intmax_t:             plst->arglst[ iArg ].value.as_x_intmax_t = va_arg( va, _x_intmax_t );             break;         case v_x_uintmax_t:             plst->arglst[ iArg ].value.as_x_uintmax_t = va_arg( va, _x_uintmax_t );             break;         case v_x_size_t:             plst->arglst[ iArg ].value.as_x_size_t = va_arg( va, _x_size_t );             break;         case v_x_ptrdiff_t:             plst->arglst[ iArg ].value.as_x_ptrdiff_t = va_arg( va, _x_ptrdiff_t );             break;         case v_x_ptr:             plst->arglst[ iArg ].value.as_x_ptr = va_arg( va, _x_ptr );             break;         case v_x_str:             plst->arglst[ iArg ].value.as_x_str = va_arg( va, _x_str );             break;         case v_x_wstr:             plst->arglst[ iArg ].value.as_x_wstr = va_arg( va, _x_wstr );             break;         case v_x_intptr:             plst->arglst[ iArg ].value.as_x_intptr = va_arg( va, _x_intptr );             break;         case v_x_double:             plst->arglst[ iArg ].value.as_x_double = va_arg( va, _x_double );             break;         case v_x_long_dbl:             plst->arglst[ iArg ].value.as_x_long_dbl = va_arg( va, _x_long_dbl );             break;         default:             plst->arglst[ iArg ].value.as_x_int = va_arg( va, _x_int );             break;      }   }}
开发者ID:mikomc,项目名称:harbour-core,代码行数:59,


示例24: va_start

Node *Node_cons(const char *format, ...) {  const char *cur = format;  va_list args;  va_start (args, format);  Node *root = NULL;  Node *cur_node = NULL;  assert_not(format, NULL);#define UP() { cur_node = cur_node->parent; if(cur_node == NULL) break; }  for(; *cur != '/0'; cur++) {    switch(*cur) {      case '[':        cur_node = Node_new_group(cur_node);        if(root == NULL) {          root = cur_node;        }        break;      case 'n': {                  uint64_t number = va_arg(args, uint64_t);                  Node *n = Node_new_number(cur_node, number);                  assert_not(n,NULL);                  break;                }      case 'f': {                  double floating = va_arg(args, double);                  Node *n = Node_new_float(cur_node, floating);                  assert_not(n,NULL);                  break;                }      case 'b': {                  bstring blob = va_arg(args, bstring);                  check(blob != NULL, "NULL given for blob");                  Node *n = Node_new_blob(cur_node, blob);                  assert_not(n,NULL);                  break;                }      case 's': {                  bstring string = va_arg(args, bstring);                  check(string != NULL, "NULL given for string");                  Node *n = Node_new_string(cur_node, string);                  check(n != NULL, "Failed to create new string node");                  break;                }      case ']': {                  UP();                  break;                }      case '@': {                  const char *attr = va_arg(args, const char *);                  check(attr != NULL, "NULL given for attr");                  Node_name(cur_node->child, bfromcstr(attr));                  break;                }      case 'w': {                  const char *word = va_arg(args, const char *);                  check(word != NULL, "NULL given for word name");                  Node_name(cur_node, bfromcstr(word));                  UP();                  break;                }      case 'G': {                  Node *group = va_arg(args, Node *);                  check(group != NULL, "NULL given for group to add");                  LIST_ADD(Node, cur_node->child, group, sibling);                  break;                }      case ' ':      case '/t':      case '/n': {                   break;                 }      default: {                 fail("invalid character in spec");                 break;               }    }  }  assert(*cur == '/0');  assert(cur_node == NULL);  va_end(args);  return root;  on_fail(return NULL);}
开发者ID:dardevelin,项目名称:utu,代码行数:88,


示例25: Timer_DefConstruct

/*** ===================================================================**     Method      :  Timer_DefConstruct **    Description : Constructor por defecto** ===================================================================*/void Timer_DefConstruct(struct Timer * self,va_list *args){  Timer_Construct(self,va_arg(*args,ulong));}
开发者ID:jonyMarino,项目名称:microsdhacel,代码行数:9,


示例26: vlc_plugin_set

int vlc_plugin_set (module_t *module, module_config_t *item, int propid, ...){    va_list ap;    int ret = 0;    va_start (ap, propid);    switch (propid)    {        case VLC_SUBMODULE_CREATE:        {            module_t **pp = va_arg (ap, module_t **);            *pp = vlc_submodule_create (module);            if (*pp == NULL)                ret = -1;            break;        }        case VLC_CONFIG_CREATE:        {            int type = va_arg (ap, int);            module_config_t **pp = va_arg (ap, module_config_t **);            *pp = vlc_config_create (module, type);            if (*pp == NULL)                ret = -1;            break;        }        case VLC_MODULE_CPU_REQUIREMENT:            assert (!module->b_submodule);            module->i_cpu |= va_arg (ap, int);            break;        case VLC_MODULE_SHORTCUT:        {            unsigned i;            for (i = 0; module->pp_shortcuts[i] != NULL; i++);                if (i >= (MODULE_SHORTCUT_MAX - 1))                    break;            module->pp_shortcuts[i] = va_arg (ap, char *);            break;        }        case VLC_MODULE_CAPABILITY:            module->psz_capability = va_arg (ap, char *);            break;        case VLC_MODULE_SCORE:            module->i_score = va_arg (ap, int);            break;        case VLC_MODULE_CB_OPEN:            module->pf_activate = va_arg (ap, int (*) (vlc_object_t *));            break;        case VLC_MODULE_CB_CLOSE:            module->pf_deactivate = va_arg (ap, void (*) (vlc_object_t *));            break;        case VLC_MODULE_NO_UNLOAD:            module->b_unloadable = false;            break;        case VLC_MODULE_NAME:        {            const char *value = va_arg (ap, const char *);            free( module->psz_object_name );            module->psz_object_name = strdup( value );            module->pp_shortcuts[0] = (char*)value; /* dooh! */            if (module->psz_longname == default_name)                module->psz_longname = (char*)value; /* dooh! */            break;        }        case VLC_MODULE_SHORTNAME:        {            const char *domain = va_arg (ap, const char *);            if (domain == NULL)                domain = PACKAGE;            module->psz_shortname = mdgettext (domain, va_arg (ap, char *));            break;        }        case VLC_MODULE_DESCRIPTION:        {            const char *domain = va_arg (ap, const char *);            if (domain == NULL)                domain = PACKAGE;            module->psz_longname = mdgettext (domain, va_arg (ap, char *));            break;        }        case VLC_MODULE_HELP:        {            const char *domain = va_arg (ap, const char *);            if (domain == NULL)                domain = PACKAGE;            module->psz_help = mdgettext (domain, va_arg (ap, char *));            break;        }//.........这里部分代码省略.........
开发者ID:MisTelochka,项目名称:vlc,代码行数:101,


示例27: __mockart_expect_entrance

void__mockart_expect_entrance(const char *file, int lineno, const char *fname, ...){    va_list args;    GList *sched_list;    sched_entry_t *sched_entry;    GList *mock_args;    mockart_arg_t *mock_arg;    mockart_arg_type_t mock_arg_type;    sched_list = g_hash_table_lookup(entrance_schedule_table, fname);    sched_entry = malloc(sizeof(sched_entry_t));    sched_entry->file = file;    sched_entry->lineno = lineno;    mock_args = NULL;    va_start(args, fname);    for(;;) {        mock_arg_type = va_arg(args, mockart_arg_type_t);        if (mock_arg_type == 0) {            break;        }        mock_arg = malloc(sizeof(mockart_arg_t));        mock_arg->type = mock_arg_type;        switch(mock_arg_type) {        case MOCK_ARG_SKIP:            va_arg(args, void *);            break;        case MOCK_ARG_INT:            mock_arg->u._int = va_arg(args, int);            break;        case MOCK_ARG_LONG:            mock_arg->u._long = va_arg(args, long);            break;        case MOCK_ARG_STR:            mock_arg->u._str = va_arg(args, const char *);            break;        case MOCK_ARG_PTR:            mock_arg->u._ptr = va_arg(args, void *);            break;        default:            fprintf(stderr,                    "mockart_assert_will_call: unimplemented type %d/n",                    mock_arg_type);            exit(EXIT_FAILURE);        }        mock_args = g_list_append(mock_args, mock_arg);    }    sched_entry->mock_args = mock_args;    sched_list = g_list_append(sched_list, sched_entry);    g_hash_table_insert(entrance_schedule_table, (char *) fname, sched_list);    va_end(args);}
开发者ID:hayamiz,项目名称:mockart,代码行数:61,


示例28: u_printf_parse

//.........这里部分代码省略.........                /* short */            case MOD_H:                info->fIsShort = TRUE;                break;                /* long or long long */            case MOD_LOWERL:                if(*alias == MOD_LOWERL) {                    info->fIsLongLong = TRUE;                    /* skip over the next 'l' */                    alias++;                }                else                    info->fIsLong = TRUE;                break;                /* long double */            case MOD_L:                info->fIsLongDouble = TRUE;                break;            }        }        /* finally, get the specifier letter */        info->fSpec = *alias++;        info->fOrigSpec = info->fSpec;        /* fill in the precision and width, if specified out of line */        /* width specified out of line */        if(spec.fInfo.fWidth == -2) {            if(spec.fWidthPos == -1) {                /* read the width from the argument list */                info->fWidth = va_arg(ap, int32_t);            }            /* else handle positional parameter */            /* if it's negative, take the absolute value and set left alignment */            if(info->fWidth < 0) {                info->fWidth *= -1; /* Make positive */                info->fLeft = TRUE;            }        }        /* precision specified out of line */        if(info->fPrecision == -2) {            if(spec.fPrecisionPos == -1) {                /* read the precision from the argument list */                info->fPrecision = va_arg(ap, int32_t);            }            /* else handle positional parameter */            /* if it's negative, set it to zero */            if(info->fPrecision < 0)                info->fPrecision = 0;        }        handlerNum = (uint16_t)(info->fSpec - UPRINTF_BASE_FMT_HANDLERS);        if (handlerNum < UPRINTF_NUM_FMT_HANDLERS) {            /* query the info function for argument information */            argType = g_u_printf_infos[ handlerNum ].info;            switch(argType) {            case ufmt_count:                /* set the spec's width to the # of chars written */                info->fWidth = *written;                /* fall through to set the pointer */
开发者ID:Katarzynasrom,项目名称:patch-hosting-for-android-x86-support,代码行数:67,


示例29: va_arg

          stock_id = va_arg (args, const gchar *);          label = va_arg (args, const gchar *);          response = va_arg (args, gint);          /* add a mixed button to the dialog */          button = xfce_gtk_button_new_mixed (stock_id, label);          gtk_widget_set_can_default (button, TRUE);          gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, response);          gtk_widget_show (button);        }      else if (strcmp (text, XFCE_BUTTON_TYPE_PIXBUF) == 0)        {          /* get arguments */          pixbuf = va_arg (args, GdkPixbuf *);          label = va_arg (args, const gchar *);          response = va_arg (args, gint);          /* lookup real icons size for button icons */          gtk_icon_size_lookup (GTK_ICON_SIZE_BUTTON, &w, &h);          /* scale the pixbuf if needed */          if (gdk_pixbuf_get_width (pixbuf) != w || gdk_pixbuf_get_height (pixbuf) != h)            scaled = gdk_pixbuf_scale_simple (pixbuf, w, h, GDK_INTERP_BILINEAR);          else            scaled = NULL;          image = gtk_image_new_from_pixbuf (scaled ? scaled : pixbuf);          /* release scaled image */          if (scaled != NULL)            g_object_unref (G_OBJECT (scaled));
开发者ID:xfce-mirror,项目名称:libxfce4ui,代码行数:31,


示例30: EO_EVENT_DESCRIPTION

EAPI const Eo_Event_Description _EV_CLICKED =        EO_EVENT_DESCRIPTION("clicked");typedef struct{   Evas_Object *bt;} Widget_Data;#define MY_CLASS ELW_BUTTON_CLASSstatic void_position_set(Eo *obj, void *class_data EINA_UNUSED, va_list *list){   (void) obj;   Evas_Coord x, y;   x = va_arg(*list, Evas_Coord);   y = va_arg(*list, Evas_Coord);   printf("But set position %d,%d/n", x, y);   eo_do_super(obj, MY_CLASS, exevas_obj_position_set(x, y));}static void_text_set(Eo *obj EINA_UNUSED, void *class_data, va_list *list){   Widget_Data *wd = class_data;   const char *text;   text = va_arg(*list, const char *);   elm_object_text_set(wd->bt, text);}static void
开发者ID:tguillem,项目名称:efl,代码行数:31,



注:本文中的va_arg函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ va_copy函数代码示例
C++ va2la函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。