/*dumb marshalling hack */
static void
matecomponent_activation_registration_iterate (const MateComponentActivationBaseService *base_service,
			  CORBA_Object obj, CORBA_Environment *ev,
			  gulong offset, int nargs)
{
	GSList *link;
	char *ior = NULL;

	if (nargs == 4)
		ior = CORBA_ORB_object_to_string (matecomponent_activation_orb_get (), obj, ev);

	for (link = registries; link; link = link->next) {
		RegistryInfo *ri;
		void (*func_ptr) ();

		ri = link->data;

		func_ptr = *(gpointer *) ((guchar *) ri->registry + offset);

		if (!func_ptr)
			continue;

		switch (nargs) {
		case 4:
			func_ptr (ri->registry, ior, base_service, ri->user_data);
			break;
		case 2:
			func_ptr (ri->registry, ri->user_data);
			break;
		}
	}

	if (nargs == 4)
		CORBA_free (ior);
}
Пример #2
0
int main() {
    int a;
    int* b = &a;
    int** c = &b;
    int*** d = &c;

    func_ptr(b);
    func_ptr(*c);
    func_ptr(**d);

    func_ref(*b);
    func_ref(**c);
    func_ref(***d);
}
Пример #3
0
/* Helper function to traverse the entire splaytree */
static inline void splay_traverse_helper (void (*func_ptr)(), splaynode_t * splaynode) {  

  /* Normal if this happens, its a base case of recursion */
  if (splaynode == NULL)
    return;

  /* Recursively traverse to the left */
  splay_traverse_helper(func_ptr, splaynode->left);
  
  
  /* Node is a of regular type, so its ok to perform the function on it */
  if (splaynode->type == REGULAR_NODE_TYPE)
  	func_ptr(splaynode->data);
  
  /* Node is of symbolic link type, do nothing */
  else if (splaynode->type == SYMBOLIC_NODE_TYPE)
	;
  
  /* Unknown node type */
  else
    ;
  
  /* Recursively traverse to the right */
  splay_traverse_helper(func_ptr, splaynode->right);

  /* Done */
  return;
}
Пример #4
0
/*FUNCTION*-------------------------------------------------------------------
* 
* Function Name    : _io_mputc
* Returned Value   : _mqx_int number_of_character_printed_out
* Comments         :
*    This function outputs given character count times.
*
* NOTE: I/O is performed by calling given function pointer using following
*         (*func_ptr)(c,farg);
*
*END*----------------------------------------------------------------------*/
static _mqx_int _io_mputc(
/* [IN] Argument to func_ptr             */
MQX_FILE_PTR farg,

/* [IN] Function to put character out */
_mqx_int (_CODE_PTR_ func_ptr)(_mqx_int, MQX_FILE_PTR),

/* [IN] The character to put out */
char c,

/* Number of character prints out */
_mqx_int count
)
{
   int_32   cnt = 0;
   
   if (count < 0) {
      count = 0;
   }
   
   for (; (cnt < count) ; cnt++) {
      if (c != func_ptr((_mqx_int) c, farg)) {
          break;
      }
   }

   return cnt;
}
Пример #5
0
void ndsloadstub()
{
	void (*func_ptr)(void) = (void*)ARM9STUBVMA;
	#ifndef BOOTHB
	swiDecompressLZSSWram((void*)ndsloader_lz, (void*)BOOTLDR_NDS);
	*((u32*)(BOOTLDR_NDS-8)) = *((u32*)ndsloader_lz) >> 8;
	#endif
	DC_FlushAll();
	DC_InvalidateAll();
	IC_InvalidateAll();

	BOOTFLAG = 0;
	VRAM_C_CR = VRAM_ENABLE | VRAM_C_LCD;
	#ifndef BOOTHB
	NDSHEADER->arm7executeAddress = 0x06000000;
	#endif
	memcpy16((void*)ARM9STUBVMA, arm9stub_bin, arm9stub_bin_size);
	memcpy16(VRAM_C, arm7stub_bin, arm7stub_bin_size);
	VRAM_C_CR = VRAM_ENABLE | VRAM_C_ARM7_0x06000000;

	DC_FlushAll();
	DC_InvalidateAll();
	IC_InvalidateAll();
	#ifdef BOOTHB
	resetARM7(0x06000000);
	#endif
	func_ptr();
}
Пример #6
0
inline
Binder<FunctionPtr<RT,P1,P2,P3>,
       PNum,
       BoundVal<typename FunctorParam<FunctionPtr<RT,P1,P2,P3>,
                                      PNum
                                     >::Type
               >
      >
bindfp (RT (*fp)(P1,P2,P3),
        typename ForwardParamT<typename FunctorParam<FunctionPtr<RT,P1,P2,P3>,
                                                     PNum
                                                    >::Type  
                              >::Type val)
{
    return Binder<FunctionPtr<RT,P1,P2,P3>, PNum,
                  BoundVal<typename FunctorParam<FunctionPtr<RT,P1,P2,P3>,
                                                             PNum
                                                >::Type>
                          >(func_ptr(fp),
                            BoundVal<typename FunctorParam
                                       <FunctionPtr<RT,P1,P2,P3>,
                                        PNum
                                       >::Type
                                    >(val));
}
Пример #7
0
int main( int argc, char **argv )
{
	ip2region_entry ip2rEntry;
	datablock_entry datablock;
	char *dbFile = NULL, *algorithm = NULL;
	char line[256];
	uint_t (*func_ptr)(ip2region_t, char *, datablock_t);
	double s_time, c_time;
	memset(&datablock, 0x00, sizeof(datablock_entry));

	if ( argc < 2  ) {
		printf("Usage: a.out [ip2region db file path] [algorithm]");
		return 0;
	}

	dbFile	  = argv[1];
	algorithm = "B-tree";
	func_ptr  = ip2region_btree_search_string;
	if ( argc >= 3 && strcmp(argv[2], "binary") == 0 ) {
		algorithm = "Binary";
		func_ptr = ip2region_binary_search_string;
	}

	//create a new ip2rObj
	printf("+--initializing %s ... \n", algorithm);
	if ( ip2region_create(&ip2rEntry, dbFile) == 0 )
	{
		println("Error: Fail to create the ip2region object");
		return 0;
	}

	__PRINT_ABOUT__;

	while ( 1 )
	{
		print("ip2region>> ");
		getLine( stdin, line );
		if ( strlen(line) < 2 ) continue;
		if ( strcasecmp( line, "quit" ) == 0 ) {
			println("+--Bye!");
			break;
		}

		s_time = getTime();
		func_ptr(&ip2rEntry, line, &datablock);
		c_time = getTime() - s_time;
		printf("%d|%s in %.5f millseconds\n", datablock.city_id, datablock.region, c_time);
	}

	//destory the ip2rObj
	ip2region_destroy(&ip2rEntry);

	return 0;
}
int main(int argc, char **argv)
{
    typedef std::vector<void (*)(int, int)> container;
    container vec;
    vec.push_back(print_plus);
    vec.push_back(print_minus);
    vec.push_back(print_times);
    vec.push_back(print_divide);
    for (container::iterator i = vec.begin(), e = vec.end(); i < e; i++)
        func_ptr(*i, 100, 20);
    return 0;
}
int advanced_search(int *arr, int n, int (*func_ptr)(int))
{
    int i;

    for (i = 0; i < n; i++)
    {
        if (func_ptr(arr[i]))
            return 1;
    }

    return -1;
}
Пример #10
0
int main(){
	func();
	//注意是函数名,不带小括号的这种方式
	printf("func:%p &func:%p\n",func,&func);
	//有地址说明是占内存的
	
	//定义一个指针变量指向函数
	//第一个void是返回值类型,第二个void是参数
	void(*func_ptr)(void) = func;
	//直接用函数就调用了
	func_ptr();
	return 0;
}
Пример #11
0
/*FUNCTION*-------------------------------------------------------------------
* 
* Function Name    : _io_putstr
* Returned Value   : _mqx_int number_of_character_printed_out
* Comments         :
*    This function outputs given string.
*
* NOTE: I/O is performed by calling given function pointer using following
*         (*func_ptr)(c,farg);
*
*END*----------------------------------------------------------------------*/
static _mqx_int _io_putstr(
/* [IN] Argument to func_ptr             */
MQX_FILE_PTR farg,

/* [IN] Function to put character out */
_mqx_int (_CODE_PTR_ func_ptr)(_mqx_int, MQX_FILE_PTR),

/* [IN] The string to put out */
char_ptr str
)
{
   _mqx_int res = 0;
   for ( ; *str && ((_mqx_int) *str == func_ptr((_mqx_int) *str, farg)); res++, str++) {}
   
   if (*str) {
       res--;
   }
   return res;
}
Пример #12
0
int main(int argc, char **argv) {
    GridTable<HtmlRenderer> gt;
    test_func_2 func_ptr = reinterpret_cast<test_func_2>(test_);
    
    func_ptr(4,5);
    call(increase);
    
//    inline_call();

    return 0;

    gt.print();
    gt.set(0,0,"abc");
    gt.print();

    gt.set(0,0,"name");
    gt.set(1,0,"tel");
    gt.set(2,0,"addr");
    gt.print();

    gt.set(0,0,"no");
    gt.set(1,0,"name");
    gt.set(2,0,"tel");
    gt.set(3,0,"addr");
    gt.print();

    gt.set(0, 1, 1);
    gt.set(1, 1, "Younwoo");
    gt.set(2, 1, "010-2565-3903");
    gt.set(3, 1, "Ahnyang");
    gt.print();

    gt.set(0, 2, 1);
    gt.set(1, 2, "Younwoo");
    gt.set(2, 2, "010-2565-3903");
    gt.set(3, 2, "Ahnyang");
    gt.set_bar(1);
    gt.set(1, 3, "[               ]");
    gt.print();

    return 0;
}
Пример #13
0
LST_EXPORT LIST *
ListSort( LIST ** list, PFI func_ptr )
{
   LIST **parent_a;
   LIST **parent_b;

   for( parent_a = list; *parent_a; parent_a = &(*parent_a) -> next )
   {
      for( parent_b = &(*parent_a) -> next; *parent_b; parent_b = &(*parent_b) -> next )
      {
         if( func_ptr(*parent_a, *parent_b) > 0 )
         {
            LIST *swap_a, *swap_a_child;
            LIST *swap_b, *swap_b_child;

            swap_a       = *parent_a;
            swap_a_child = (*parent_a) -> next;
            swap_b       = *parent_b;
            swap_b_child = (*parent_b) -> next;

            (*parent_a) -> next = swap_b_child;
            (*parent_a)         = swap_b;

            if( swap_b == swap_a_child )
            {
                (*parent_a) -> next = swap_a;
                parent_b            = &(*parent_a) -> next;
            }
            else {
                (*parent_b) -> next = swap_a_child;
                (*parent_b)         = swap_a;
            }
         }

      }
   }

   return( *list );
}
Пример #14
0
int
main (void)
{
  print_var ();

  printf ("We see var = %d\n", var);
  printf ("Setting var = 456\n");

  var = 456;

  print_var ();
  printf ("We see var = %d\n\n", var);

  var = 90;
  print_var ();
  printf ("We see var = %d\n\n", var);

  print_foo ();
  printf ("We see foo = %d\n", foo);
  printf ("Setting foo = 19\n");
  foo = 19;
  print_foo ();
  printf ("We see foo = %d\n\n", foo);
  fflush (stdout);

  printf ("Calling dllimported function pointer\n");
  func_ptr ();

  printf ("Calling functions using global structure\n"); 
  xyz.func_ptr ();
  * xyz.var = 40;
  xyz.func_ptr ();

  printf ("We see var2[0] = %d\n\n", var2[0]);

  printf ("We see const xyz %x %x\n", const_xyz.var, const_xyz.var_with_offset);

  return 0;
}
Пример #15
0
BOOL CImageUtility::GetDisplayMonitorICC( wchar_t* full_path, int char_count )
{
	if( !IS_Vista_Or_More() )
		return FALSE;
	DISPLAY_DEVICE device_info;
	device_info.cb = sizeof( DISPLAY_DEVICE );
	int card_id=0;
	while( TRUE )
	{
		BOOL ret = EnumDisplayDevices( NULL, card_id, &device_info, 0 );
		if( !ret )
			break;
		if(device_info.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP )
		{
			int monitor_id=0;
			wchar_t card_name[256];
			::memcpy( card_name,device_info.DeviceName,32*2);
			ret = EnumDisplayDevices( card_name, monitor_id, &device_info, 0 );
			if( !ret )
				return FALSE;
			DWORD buf_size = char_count*2;
			ret = GetColorDirectory( NULL, full_path, &buf_size );
			if( !ret )
				return FALSE;
			if( char_count*2 < buf_size+10 )
				return FALSE;
			full_path[buf_size/2-1] = L'\\';
			WcsGetDefaultColorProfileType func_ptr = GetProfileFunctionAddress();
			if( func_ptr == NULL )
				return FALSE;
			ret = func_ptr(WCS_PROFILE_MANAGEMENT_SCOPE_CURRENT_USER,device_info.DeviceID,CPT_ICC,
				CPST_NONE, 0, char_count*2 - buf_size, full_path + buf_size/2 );
			return ret;
		}
		++card_id;
	}
	return FALSE;
}
Пример #16
0
static size_t my_get_system_windows_directory(char *buffer, size_t size)
{
  size_t count;
  GET_SYSTEM_WINDOWS_DIRECTORY
    func_ptr= (GET_SYSTEM_WINDOWS_DIRECTORY)
              GetProcAddress(GetModuleHandle("kernel32.dll"),
                                             "GetSystemWindowsDirectoryA");

  if (func_ptr)
    return func_ptr(buffer, (uint) size);

  /*
    Windows NT 4.0 Terminal Server Edition:  
    To retrieve the shared Windows directory, call GetSystemDirectory and
    trim the "System32" element from the end of the returned path.
  */
  count= GetSystemDirectory(buffer, (uint) size);
  if (count > 8 && stricmp(buffer+(count-8), "\\System32") == 0)
  {
    count-= 8;
    buffer[count] = '\0';
  }
  return count;
}
Пример #17
0
int main( int argc, char* argv[] )
{

	if( argc < 2)
	{
		printf("Usage: %s <a number 1 - 20>\n", argv[0]);
		printf("Use %s help or %s -h  for more help\n", argv[0], argv[0]);
		exit(0);
	}

	srand(time(NULL));

	func_ptr = game;

	printf("--DEBUG---\n");
	printf("[before strcpy] funct_ptr @ %p: %p\n", &func_ptr, func_ptr);
	strcpy( buffer, argv[1]);

	printf("[*] buffer @ %p: %s\n", buffer, buffer);
	printf("[after strcpy] funct_ptr @ %p: %p\n", &func_ptr, func_ptr);

	func_ptr( atoi( buffer) );

}
Пример #18
0
cmr_int cmr_sns_ioctl(struct sensor_drv_context *sensor_cxt, cmr_uint cmd, cmr_uint arg)
{
	SENSOR_IOCTL_FUNC_PTR func_ptr;
	SENSOR_IOCTL_FUNC_TAB_T *func_tab_ptr;
	cmr_uint temp;
	cmr_u32 ret = CMR_CAMERA_SUCCESS;
	cmr_u32 sns_cmd = SENSOR_IOCTL_GET_STATUS;

	ret = cmr_sns_get_ioctl_cmd(&sns_cmd, cmd);
	if (ret) {
		CMR_LOGE("can't get correct command !\n");
		return CMR_CAMERA_INVALID_PARAM;
	}

	if (SENSOR_IOCTL_GET_STATUS != sns_cmd) {
		CMR_LOGI("cmd = %d, arg = 0x%lx.\n", sns_cmd, arg);
	}

	SENSOR_DRV_CHECK_ZERO(sensor_cxt);

	if (!sensor_is_init_common(sensor_cxt)) {
		CMR_LOGE("sensor has not init.\n");
		return SENSOR_OP_STATUS_ERR;
	}

	if (SENSOR_IOCTL_CUS_FUNC_1 > sns_cmd) {
		CMR_LOGW("can't access internal command !\n");
		return SENSOR_SUCCESS;
	}

	if (PNULL == sensor_cxt->sensor_info_ptr) {
		CMR_LOGE("No sensor info!");
		return -1;
	}

	func_tab_ptr = sensor_cxt->sensor_info_ptr->ioctl_func_tab_ptr;
#ifdef __LP64__
	temp = *(cmr_uint *) ((cmr_uint) func_tab_ptr + sns_cmd * S_BIT_3);
#else
	temp = *(cmr_uint *) ((cmr_uint) func_tab_ptr + sns_cmd * S_BIT_2);
#endif
	func_ptr = (SENSOR_IOCTL_FUNC_PTR) temp;


#if (CONFIG_READOTP_METHOD != 0)
	if( SENSOR_ACCESS_VAL == cmd) {
		SENSOR_VAL_T	*val = (SENSOR_VAL_T	*)arg;
		if(val->type == SENSOR_VAL_TYPE_READ_OTP) {
			SENSOR_OTP_PARAM_T   *param_ptr = (SENSOR_OTP_PARAM_T   *)val->pval;
			CMR_LOGD("SENSOR_IO_READ_OTPDATA %p, %d", param_ptr, param_ptr->type);
			ret = ioctl(sensor_cxt->fd_sensor, SENSOR_IO_READ_OTPDATA, param_ptr);
			if(!ret && param_ptr->type == SENSOR_OTP_PARAM_NORMAL) {
				val->type = SENSOR_VAL_TYPE_PARSE_OTP;
				ret = func_ptr(arg);
			}
			return ret;
		}
	}
#endif

	if (PNULL != func_ptr) {
		ret = func_ptr(arg);
	}
	return ret;
}
Пример #19
0
Object_ptr unCalcedData::calc()
{
	return func_ptr(getObject(basefunction)).inputArgument(lst);
}
int main() 
{
    bool result = bind<1>(func_ptr(func), "Comparing")(1.0, 2.0);
    std::cout << "bound function returned " << result << '\n';
}
Пример #21
0
int main() 
{
    std::cout << "compute (20+7)*2: "
              << compose(func_ptr(add),func_ptr(twice))(20,7)
              << '\n';
}