3709192002-03-20Martin Nilsson #pike __REAL_VERSION__
29a20a2003-04-27Martin Nilsson #pragma strict_types
3709192002-03-20Martin Nilsson 
9da7f42001-06-05Martin Stjernholm // Pike core things that don't belong anywhere else. //
1a29982008-09-19Martin Stjernholm // $Id: module.pmod,v 1.22 2008/09/19 15:10:09 mast Exp $
9da7f42001-06-05Martin Stjernholm  constant WEAK_INDICES = __builtin.PIKE_WEAK_INDICES; constant WEAK_VALUES = __builtin.PIKE_WEAK_VALUES; constant WEAK = WEAK_INDICES|WEAK_VALUES; //! Flags for use together with @[set_weak_flag] and @[get_weak_flag]. //! See @[set_weak_flag] for details.
1f6fcf2001-08-15Martin Nilsson 
49162c2004-10-30Martin Stjernholm constant INDEX_FROM_BEG = __builtin.INDEX_FROM_BEG; constant INDEX_FROM_END = __builtin.INDEX_FROM_END; constant OPEN_BOUND = __builtin.OPEN_BOUND; //! Used with @[predef::`[..]] and @[lfun::`[..]] to specify how the //! corresponding index maps to an upper or lower range bound: //! //! @dl //! @item INDEX_FROM_BEG //! The index is relative to the beginning of the string or array //! (or any other sequence implemented through an object). //! Sequences typically start at zero. //! //! @item INDEX_FROM_END //! The index is relative to the end of the sequence. In strings //! and arrays, the last element is at zero, the one before that //! at one, etc. //! //! @item OPEN_BOUND //! The range is open in the corresponding direction. The index is //! irrelevant in this case. //! @enddl
1f6fcf2001-08-15Martin Nilsson constant BacktraceFrame = __builtin.backtrace_frame;
a501ee2002-03-08Henrik Grubbström (Grubba) 
b486d82008-07-24Henrik Grubbström (Grubba) constant __Backend = __builtin.Backend; //! The class of the @[DefaultBackend]. //! //! Typically something that has inherited @[__Backend]. //! //! @seealso //! @[__Backend], @[DefaultBackend]
6b96452008-06-06Henrik Grubbström (Grubba) constant Backend = __builtin.DefaultBackendClass; #if constant(__builtin.PollDeviceBackend) constant PollDeviceBackend = __builtin.PollDeviceBackend; #endif #if constant(__builtin.PollBackend) constant PollBackend = __builtin.PollBackend;
b19a902007-05-20Henrik Grubbström (Grubba) #endif
6b96452008-06-06Henrik Grubbström (Grubba) 
1a29982008-09-19Martin Stjernholm #if constant(__builtin.PollBackend) constant SmallBackend = __builtin.PollBackend; #elif constant(__builtin.PollDeviceBackend) constant SmallBackend = __builtin.PollDeviceBackend; #else constant SmallBackend = __builtin.SelectBackend; #endif //! @decl program(Pike.Backend) SmallBackend //! //! This is the most suitable backend implementation if you only want //! to monitor a small number of @[Stdio.File] objects.
6b96452008-06-06Henrik Grubbström (Grubba) constant SelectBackend = __builtin.SelectBackend;
34d1582002-03-12Henrik Grubbström (Grubba) constant DefaultBackend = __builtin.__backend;
9228502003-01-13Martin Stjernholm  constant gc_parameters = __builtin.gc_parameters;
ad8d052008-05-02Martin Stjernholm constant count_memory = __builtin.count_memory;
a15c272004-06-14Mirar (Pontus Hagland) 
5809812006-03-25Henrik Grubbström (Grubba) constant get_runtime_info = __builtin.get_runtime_info;
6e73f12007-03-26Henrik Grubbström (Grubba) // Type-checking:
fbf7e82007-03-30Henrik Grubbström (Grubba) constant low_check_call = predef::__low_check_call;
6e73f12007-03-26Henrik Grubbström (Grubba) constant get_return_type = predef::__get_return_type; constant get_first_arg_type = predef::__get_first_arg_type;
ead42e2004-07-04Martin Stjernholm program Encoder = [program] master()->Encoder; program Decoder = [program] master()->Decoder; program Codec = [program] master()->Codec;
fbf7e82007-03-30Henrik Grubbström (Grubba)  #if 0
9eaf1d2008-06-28Martin Nilsson protected constant TYPE = typeof(typeof([mixed]0));
fbf7e82007-03-30Henrik Grubbström (Grubba)  TYPE check_call(TYPE fun_type, TYPE ... arg_types) { array(TYPE) conts = allocate(sizeof(arg_types) + 1); conts[0] = fun_type; foreach(arg_types; int i; TYPE arg_type) { if (!(conts[i+1] = low_check_call(conts[i], arg_type, (i == (sizeof(arg_types)-1))?2:0))) { werror("Error: Bad argument %d to function, got %O, expected %O.\n", i+1, arg_type, get_first_arg_type(conts[i])); break; } } if (!conts[sizeof(arg_types)]) { int i; for(i = 0; (i < sizeof(arg_types)) && conts[i+1]; i++) { TYPE param_type = get_first_arg_type(conts[i]); if (arg_types[i] <= param_type) continue; werror("Warning: Potentially bad argument %d to function, got %O, expected %O.\n", i+1, arg_types[i], param_type); } return 0; } TYPE ret = get_return_type(conts[-1]); if (!ret) { werror("Error: Too few arguments.\n"); } return ret; } #endif /* 0 */