27. The rest
Namespace 9.0::
- Description
Pike 9.0 compatibility.
The symbols in this namespace will appear in programs that use #pike 9.0 or lower.
Namespace cpp::
- Description
Pike has a builtin C-style preprocessor. It works similar to the ANSI-C preprocessor but has a few extra features. These and the default set of preprocessor macros are described here.
The preprocessor is usually accessed via
MasterObject->compile_file()
orMasterObject->compile_string()
, but may be accessed directly by callingcpp()
.- See also
compile()
,cpp()
,CompilerEnvironment.CPP
Namespace predef::
- Description
This is the default namespace and contains lots of global symbols.
- Typedefutf8_string
typedef
__attribute__("utf8_string",string(8bit)
)utf8_string
- Description
String containing UTF-8 encoded data.
This is similar to a
string(8bit)
, but allows the compiler to keep track of whether strings are UTF-8 or not.- See also
string_to_utf8()
,utf8_to_string()
- ConstantUNDEFINED
constant
UNDEFINED
- Description
The undefined value; ie a zero for which
zero_type()
returns 1.
- Constant__null_program
constant
__null_program
- Description
Program used internally by the compiler to create objects that are later modified into instances of the compiled program by the compiler.
- See also
__placeholder_object
- Constant__placeholder_object
constant
__placeholder_object
- Description
Object used internally by the compiler.
- See also
__null_program
- Constantsprintf_args
constant
sprintf_args
- Description
Type constant used for typing extra arguments that are sent to
sprintf()
.- See also
strict_sprintf_format
,sprintf_format
,sprintf()
- Constantsprintf_format
constant
sprintf_format
- Description
Type constant used for typing arguments that are optionally sent to
sprintf()
depending on the presence of extra arguments.- See also
strict_sprintf_format
,sprintf_args
,sprintf()
- Constantsprintf_result
constant
sprintf_result
- Description
Type constant used for typing the return value from
sprintf()
.- See also
strict_sprintf_format
,sprintf_format
,sprintf()
- Constantstrict_sprintf_format
constant
strict_sprintf_format
- Description
Type constant used for typing arguments that are always sent to
sprintf()
regardless of the presence of extra arguments.- See also
sprintf_format
,sprintf_args
,sprintf()
- Constantthis
constant
this
- Description
Builtin read only variable that evaluates to the current object.
- See also
this_program
,this_object()
- Constantthis_function
constant
this_function
- Description
Builtin constant that evaluates to the current function.
- See also
continue::this_function
,this
,this_object()
- Constantthis_program
constant
this_program
- Description
Builtin constant that evaluates to the current program.
- See also
this
,this_object()
- MethodProxyFactory
program
ProxyFactory(program
p
)- Description
Create a class that acts as a proxy for the specified program.
- Parameter
p
Program to generate a proxy for.
The generated class will have the same symbols (public and private) with the same types as in
p
, where accesses to these will proxy the access to the same symbol in the proxied (aka wrapped) object. With the following exceptions:Initialize the object to act as a proxy for
obj
.Special case for
c
=='O'
, where it will returnsprintf("%O(%O)", this_program, obj)
, and otherwise proxy the call.These lfuns will not be present as the act of them being proxied would likely confuse the proxied object.
protected void create(object(p) obj)
_sprintf(int c, mapping|void params)
void _destruct()
/void destroy()
- Note
The same proxy class will be returned if this function is called with the same program multiple times.
- Method_Static_assert
void
_Static_assert(int
constant_expression
,string
constant_message
)- Description
Perform a compile-time assertion check.
If
constant_expression
is false, a compiler error message containingconstant_message
will be generated.- Note
Note that the function call compiles to the null statement, and thus does not affect the run-time.
- See also
cpp::static_assert
- Method__automap__
array
__automap__(function
(:void
)fun
,mixed
...args
)- Description
Automap execution function.
- Parameter
fun
Function to call for each of the mapped arguments.
- Parameter
args
Arguments for
fun
. EitherBuiltin.automap_marker
Wrapper for an array to loop over. All of the arrays will be looped over in parallel.
mixed
All other arguments will be held constant during the automap, and sent as is to
fun
.- Note
This function is used by the compiler to implement the automap syntax, and should in normal circumstances never be used directly.
It may however show up during module dumping and in backtraces.
- Note
It is an error not to have any
Builtin.automap_marker
s inargs
.- See also
Builtin.automap_marker
,map()
- Method__cast
mixed
__cast(mixed
val
,string
|type
type_name
)- Description
Cast
val
to the type indicated bytype_name
.- See also
lfun::cast()
- Method__empty_program
program
__empty_program(int
|void
line
,string
|void
file
)- Parameter
line
Optional line number of
file
where the program to be compiled definition starts.- Parameter
file
Optional file name where the program to be compiled is defined.
- Returns
Returns a virgin (ie empty) program suitable as the target argument to
PikeCompiler()
.- See also
__null_program
,PikeCompiler
,compile_string()
- Method__handle_sprintf_format
type
__handle_sprintf_format(string
attr
,string
|zero
fmt
,type
arg_type
,type
|zero
cont_type
,mapping
state
)- Description
Type attribute handler for
"sprintf_format"
.- Parameter
attr
Attribute to handle, either
"sprintf_format"
or"strict_sprintf_format"
.- Parameter
fmt
Sprintf-style formatting string to generate type information from.
- Parameter
arg_type
Declared type of the
fmt
argument (typicallystring
).- Parameter
cont_type
Continuation function type after the
fmt
argument. This is scanned for the type attribute"sprintf_args"
to determine where the remaining arguments tosprintf()
will come from.- Parameter
state
State mapping.
This function is typically called from
PikeCompiler()->apply_attribute_constant()
and is used to perform stricter compile-time argument checking ofsprintf()
-style functions.It currently implements two operating modes depending on the value of
attr
:"strict_sprintf_format"
The formatting string
fmt
is known to always be passed tosprintf()
."sprintf_format"
The formatting string
fmt
is passed tosprintf()
only if there are"sprintf_args"
.- Returns
Returns
cont_type
with"sprintf_args"
replaced by the arguments required by thefmt
formatting string, and"sprintf_result"
replaced by the resulting string type.- See also
PikeCompiler()->apply_attribute_constant()
,sprintf()
- Method_gdb_breakpoint
void
_gdb_breakpoint()- Description
This function only exists so that it is possible to set a gdb breakpoint on the function pike_gdb_breakpoint.
- Methodabs
float
abs(float
f
)int
abs(int
f
)object
abs(object
f
)- Description
Return the absolute value for
f
. Iff
is an object it must implementlfun::`<
and unarylfun::`-
.
- Methodacos
float
acos(int
|float
f
)- Description
Return the arcus cosine value for
f
. The result will be in radians.- See also
cos()
,asin()
- Methodacosh
float
acosh(int
|float
f
)- Description
Return the hyperbolic arcus cosine value for
f
.- See also
cosh()
,asinh()
- Methodadd_constant
void
add_constant(string
name
,mixed
value
)void
add_constant(string
name
)- Description
Add a new predefined constant.
This function is often used to add builtin functions. All programs compiled after the
add_constant()
function has been called can accessvalue
by the namename
.If there is a constant called
name
already, it will be replaced by by the new definition. This will not affect already compiled programs.Calling
add_constant()
without a value will remove that name from the list of constants. As with replacing, this will not affect already compiled programs.- See also
all_constants()
- Methodadd_include_path
void
add_include_path(string
tmp
)- Description
Add a directory to search for include files.
This is the same as the command line option -I.
- Note
Note that the added directory will only be searched when using < > to quote the included file.
- See also
remove_include_path()
- Methodadd_module_path
void
add_module_path(string
path
,string
|void
subpath
)- Description
Add a directory to search for modules.
This is the same as the command line option -M.
- See also
remove_module_path()
- Parameter
path
a string containing a path to search for Pike modules. May be a directory, or a path to a ZIP archive. If a ZIP archive path is provided, modules will be loaded from a directory, "modules" within the ZIP archive (see the subpath argument).
- Parameter
subpath
if path is a ZIP archive, this argument will determine the path within the archive to be searched.
- Methodadd_program_path
void
add_program_path(string
tmp
)- Description
Add a directory to search for programs.
This is the same as the command line option -P.
- See also
remove_program_path()
- Methodaggregate
array
aggregate(mixed
...elements
)- Description
Construct an array with the arguments as indices.
This function could be written in Pike as:
array aggregate(mixed ... elems){return elems;}
- Note
Arrays are dynamically allocated there is no need to declare them like
int a[10]=allocate(10);
(and it isn't possible either) like in C, justarray(int) a=allocate(10);
will do.- See also
sizeof()
,arrayp()
,allocate()
- Methodaggregate_mapping
mapping
aggregate_mapping(mixed
...elems
)- Description
Construct a mapping.
Groups the arguments together two and two in key-index pairs and creates a mapping of those pairs. Generally, the mapping literal syntax is handier:
([ key1:val1, key2:val2, ... ])
- See also
sizeof()
,mappingp()
,mkmapping()
- Methodaggregate_multiset
multiset
aggregate_multiset(mixed
...elems
)- Description
Construct a multiset with the arguments as indices. The multiset will not contain any values. This method is most useful when constructing multisets with
map
or similar; generally, the multiset literal syntax is handier:(<elem1, elem2, ...>)
With it, it's also possible to construct a multiset with values:(<index1: value1, index2: value2, ...>)
- See also
sizeof()
,multisetp()
,mkmultiset()
- Methodall_constants
mapping
(string
:mixed
) all_constants()- Description
Returns a mapping containing all global constants, indexed on the name of the constant, and with the value of the constant as value.
- See also
add_constant()
- Methodallocate
array
allocate(int
size
)array
allocate(int
size
,mixed
init
)- Description
Allocate an array of
size
elements. Ifinit
is specified then each element is initialized by copying that value recursively.- See also
sizeof()
,aggregate()
,arrayp()
- Methodarray_sscanf
array
array_sscanf(string
data
,string
format
)- Description
This function works just like
sscanf()
, but returns the matched results in an array instead of assigning them to lvalues. This is often useful for user-defined sscanf strings.- See also
sscanf()
,`/()
- Methodasin
float
asin(int
|float
f
)- Description
Return the arcus sine value for
f
. The result will be in radians.- See also
sin()
,acos()
- Methodasinh
float
asinh(int
|float
f
)- Description
Return the hyperbolic arcus sine value for
f
.- See also
sinh()
,acosh()
- Methodatan
float
atan(int
|float
f
)- Description
Returns the arcus tangent value for
f
. The result will be in radians.- See also
tan()
,asin()
,acos()
,atan2()
- Methodatan2
float
atan2(float
f1
,float
f2
)- Description
Returns the arcus tangent value for
f1
/f2
, and uses the signs off1
andf2
to determine the quadrant. The result will be in radians.- See also
tan()
,asin()
,acos()
,atan()
- Methodatanh
float
atanh(int
|float
f
)- Description
Returns the hyperbolic arcus tangent value for
f
.- See also
tanh()
,asinh()
,acosh()
- Methodatomic_get_set
mixed
atomic_get_set(mapping
|object
map
,mixed
key
,mixed
val
)mixed
atomic_get_set(array
arr
,int
index
,mixed
val
)- Description
Replace atomically the value for a key in a mapping or array.
- Parameter
map
- Parameter
arr
Mapping or array to alter.
- Parameter
key
- Parameter
index
Key or index to change the value for.
- Parameter
val
Value to change to. If value is
UNDEFINED
andmap
is a mapping this function function behaves exactly asm_delete(map, key)
.- Returns
Returns the previous value for
key
. Ifmap
is a mapping and there was no previous valueUNDEFINED
is returned.If
map
is an objectlfun::_m_replace()
will be called in it.- See also
m_delete()
- Methodawait
mixed
await(Concurrent.Future
future
)- Description
Stop execution of the current restartable function for now. Resume when the future completes.
- Returns
Evaluates to the result of the future if it succeeds.
- Throws
Throws an error if the future failed.
Calling this special form is similar to the expression:
(future->on_await(continue::this_function), yield())
- Note
Use of this from a non-restartable functions causes a compilation warning and falls back to calling
future->get()
. This will thus then perform a wait blocking the current thread.- Note
No checks that the
future
has actually completed are performed. It is assumed that nothing else will call the restartable function during the wait.- See also
Concurrent.Future()->get()
,yield()
,continue::this_function
, Restartable functions
- Methodceil
float
ceil(int
|float
f
)- Description
Return the closest integer value greater or equal to
f
.- Note
ceil()
does not return anint
, merely an integer value stored in afloat
.- See also
floor()
,round()
- Methodclone_to
object
clone_to(object
placeholder
,program
p
,mixed
...p_args
)- Description
Coerce a placeholder object into a clone of a program.
- Parameter
placeholder
Clone of
__null_program
to alter.- Parameter
p
Program to coerce the object to be a clone of.
- Parameter
p_args
Arguments to pass to
lfun::create()
inp
.- Returns
Returns
placeholder
after successful coercion.- Note
placeholder
may also already be a clone of [p], in which case this operation is a no-op.- See also
__null_program
- Methodcolumn
array
column(array
data
,mixed
index
)- Description
Extract a column from a two-dimensional array.
This function is exactly equivalent to:
map(data,lambda(mixed x,mixed y){return x[y];}, index)
Except of course it is a lot shorter and faster. That is, it indices every index in the array data on the value of the argument index and returns an array with the results.
- See also
rows()
- Methodcompile
program
compile(string
source
,CompilationHandler
|void
handler
,int
|void
major
,int
|void
minor
,program
|void
target
,object
|void
placeholder
)- Description
Compile a string to a program.
This function takes a piece of Pike code as a string and compiles it into a clonable program.
The optional argument
handler
is used to specify an alternative error handler. If it is not specified the current master object will be used.The optional arguments
major
andminor
are used to tell the compiler to attempt to be compatible with Pikemajor
.minor
.- Note
Note that
source
must contain the complete source for a program. It is not possible to compile a single expression or statement.Also note that
compile()
does not preprocess the program. To preprocess the program you can usecompile_string()
or call the preprocessor manually by callingcpp()
.- See also
compile_string()
,compile_file()
,cpp()
,master()
,CompilationHandler
,DefaultCompilerEnvironment
- Methodcompile_file
program
compile_file(string
filename
,CompilationHandler
|void
handler
,void
|program
p
,void
|object
o
)- Description
Compile the Pike code contained in the file
filename
into a program.This function will compile the file
filename
to a Pike program that can later be instantiated. It is the same as doing
.compile_string
(Stdio.read_file
(filename
),filename
)- See also
compile()
,compile_string()
,cpp()
- Methodcompile_string
program
compile_string(string
source
,string
|void
filename
,CompilationHandler
|void
handler
,void
|program
p
,void
|object
o
,int
|void
show_if_constant_errors
)- Description
Compile the Pike code in the string
source
into a program. Iffilename
is not specified, it will default to"-"
.Functionally equal to
.compile
(cpp
(source
,filename
))- See also
compile()
,cpp()
,compile_file()
- Methodcopy_value
mixed
copy_value(mixed
value
)- Description
Copy a value recursively.
If the result value is changed destructively (only possible for multisets, arrays and mappings) the copied value will not be changed.
The resulting value will always be equal to the copied (as tested with the function
equal()
), but they may not the the same value (as tested with`==()
).- See also
equal()
- Methodcos
float
cos(int
|float
f
)- Description
Return the cosine value for
f
.f
should be specified in radians.- See also
acos()
,sin()
,tan()
- Methodcosh
float
cosh(int
|float
f
)- Description
Return the hyperbolic cosine value for
f
.- See also
acosh()
,sinh()
,tanh()
- Methodcpp
string
cpp(string
data
,mapping
|string
|void
current_file
,int
|string
|void
charset
,object
|void
handler
,void
|int
compat_major
,void
|int
compat_minor
,void
|int
picky_cpp
)- Description
Run a string through the preprocessor.
Preprocesses the string
data
with Pike's builtin ANSI-C look-alike preprocessor. If thecurrent_file
argument has not been specified, it will default to"-"
.charset
defaults to"ISO-10646"
.If the second argument is a mapping, no other arguments may follow. Instead, they have to be given as members of the mapping (if wanted). The following members are recognized:
"current_file"
:string
Name of the current file. It is used for generating #line directives and for locating include files.
"charset"
:int
|string
Charset to use when processing
data
."handler"
:object
Compilation handler.
"compat_major"
:int
Sets the major pike version used for compat handling.
"compat_minor"
:int
Sets the minor pike version used for compat handling.
"picky_cpp"
:int
Generate more warnings.
"keep_comments"
:int
This option keeps
cpp()
from removing comments. Useful in combination with the prefix feature below."prefix"
:string
If a prefix is given, only prefixed directives will be processed. For example, if the prefix is
"foo"
, then#foo_ifdef COND
andfoo___LINE__
would be processed,#ifdef COND
and__LINE__
would not."predefines"
:mapping
(string
:mixed
)Mapping of predefined macros in addition to those returned by
CPP()->get_predefines()
.- See also
compile()
- Methodctime
string
ctime(int
timestamp
)- Description
Convert the output from a previous call to
time()
into a readable string containing the current year, month, day and time.Like
localtime
, this function might throw an error if the ctime(2) call failed on the system. It's platform dependent what time ranges that function can handle, e.g. Windows doesn't handle a negativetimestamp
.- See also
strftime()
,time()
,localtime()
,gmtime()
,mktime()
- Methoddecode_value
mixed
decode_value(string(8bit)
coded_value
,void
|Codec
|int(-1)
codec
)- Description
Decode a value from the string
coded_value
.- Parameter
coded_value
Value to decode.
- Parameter
codec
Codec
to use when encoding objects and programs.- Parameter
trace
String.Buffer
to contain a readable dump of the value.- Parameter
debug
Debug level. Only available when the runtime has been compiled --with-rtl-debug.
This function takes a string created with
encode_value()
orencode_value_canonic()
and converts it back to the value that was coded.If
codec
is specified, it's used as the codec for the decode. If none is specified, then one is instantiated throughmaster()->Decoder()
. As a compatibility fallback, the master itself is used if it has noDecoder
class. Ifcodec
is the special value-1
, then decoding of types, functions, programs and objects is disabled.- Note
Decoding a
coded_value
that you have not generated yourself is a security risk that can lead to execution of arbitrary code, unlesscodec
is specified as-1
.- See also
encode_value()
,encode_value_canonic()
- Methoddelay
void
delay(int
|float
s
)- Description
This function makes the thread stop for
s
seconds.Only signal handlers can interrupt the sleep. Other callbacks are not called during delay. Beware that this function uses busy-waiting to achieve the highest possible accuracy.
- See also
signal()
,sleep()
- Methoddescribe_backtrace
string
describe_backtrace(mixed
trace
,void
|int
linewidth
)- Description
Return a readable message that describes where the backtrace
trace
was made (bybacktrace
).It may also be an error object or array (typically caught by a
catch
), in which case the error message also is included in the description.Pass
linewidth
-1 to disable wrapping of the output.- See also
backtrace()
,describe_error()
,catch()
,throw()
- Methoddescribe_error
string
describe_error(mixed
err
)- Description
Return the error message from an error object or array (typically caught by a
catch
). The type of the error is checked, henceerr
is declared asmixed
and notobject|array
.If an error message couldn't be obtained, a fallback message describing the failure is returned. No errors due to incorrectness in
err
are thrown.- See also
describe_backtrace()
,get_backtrace
- Methoddestruct
bool
destruct(void
|object
o
)- Description
Mark an object as destructed.
Calls
o->_destruct()
, and then clears all variables in the object. If no argument is given, the current object is destructed.All pointers and function pointers to this object will become zero. The destructed object will be freed from memory as soon as possible.
- Returns
Returns
1
ifo
has anlfun::_destruct()
that returned1
and inhibited destruction.
- Methodencode_value
string(8bit)
encode_value(mixed
value
,Codec
|void
codec
)string(8bit)
encode_value(mixed
value
,Codec
|void
codec
,String.Buffer
trace
)string(8bit)
encode_value(mixed
value
,Codec
|void
codec
,int(0..)
debug
)- Description
Code a value into a string.
- Parameter
value
Value to encode.
- Parameter
codec
Codec
to use when encoding objects and programs.- Parameter
trace
String.Buffer
to contain a readable dump of the value.- Parameter
debug
Debug level. Only available when the runtime has been compiled --with-rtl-debug.
This function takes a value, and converts it to a string. This string can then be saved, sent to another Pike process, packed or used in any way you like. When you want your value back you simply send this string to
decode_value()
and it will return the value you encoded.Almost any value can be coded, mappings, floats, arrays, circular structures etc.
If
codec
is specified, it's used as the codec for the encode. If none is specified, then one is instantiated throughmaster()->Encoder()
. As a compatibility fallback, the master itself is used if it has noEncoder
class.If
returns UNDEFINED for an object,codec
->nameof(o)val = o->encode_object(o)
will be called. The returned value will be passed too->decode_object(o, val)
when the object is decoded.- Note
When only simple types like int, floats, strings, mappings, multisets and arrays are encoded, the produced string is very portable between pike versions. It can at least be read by any later version.
The portability when objects, programs and functions are involved depends mostly on the codec. If the byte code is encoded, i.e. when Pike programs are actually dumped in full, then the string can probably only be read by the same pike version.
- See also
decode_value()
,sprintf()
,encode_value_canonic()
- Methodencode_value_canonic
string(8bit)
encode_value_canonic(mixed
value
,object
|void
codec
)string(8bit)
encode_value_canonic(mixed
value
,object
|void
codec
,String.buffer
trace
)string(8bit)
encode_value_canonic(mixed
value
,object
|void
codec
,int(0..)
debug
)- Description
Code a value into a string on canonical form.
- Parameter
value
Value to encode.
- Parameter
codec
Codec
to use when encoding objects and programs.- Parameter
trace
String.Buffer
to contain a readable dump of the value.- Parameter
debug
Debug level. Only available when the runtime has been compiled --with-rtl-debug.
Takes a value and converts it to a string on canonical form, much like
encode_value()
. The canonical form means that if an identical value is encoded, it will produce exactly the same string again, even if it's done at a later time and/or in another Pike process. The produced string is compatible withdecode_value()
.- Note
Note that this function is more restrictive than
encode_value()
with respect to the types of values it can encode. It will throw an error if it can't encode to a canonical form.- See also
encode_value()
,decode_value()
- Methodenumerate
array
(int
) enumerate(int
n
)array
enumerate(int
n
,void
|mixed
step
,void
|mixed
start
,void
|function
(:void
)operator
)- Description
Create an array with an enumeration, useful for initializing arrays or as first argument to
map()
orforeach()
.The defaults are:
step
= 1,start
= 0,operator
=`+
Advanced use
The resulting array is calculated like this:
array enumerate(int n,mixed step,mixed start,function operator){array res = allocate(n);for(int i=0; i < n; i++){ res[i]= start; start = operator(start, step);}return res;}
- See also
map()
,foreach()
- Methodequal
int
equal(mixed
a
,mixed
b
)- Description
This function checks if the values
a
andb
are equivalent.- Returns
If either of the values is an object the (normalized) result of calling
lfun::_equal()
will be returned.Returns
1
if both values are false (zero, destructed objects, prototype functions, etc).Returns
0
(zero) if the values have different types.Otherwise depending on the type of the values:
int
Returns the same as
a == b
.array
The contents of
a
andb
are checked recursively, and if all their contents areequal
and in the same place, they are considered equal.Note that for objects this case is only reached if neither
a
norb
implementslfun::_equal()
.type
Returns
(a <= b) && (b <= a)
.- See also
copy_value()
,`==()
- Methoderror
void
error(sprintf_format
f
,sprintf_args
...args
)- Description
Throws an error. A more readable version of the code
throw( ({ sprintf(f, @args), backtrace() }) )
.
- Methodexp
float
exp(float
|int
f
)- Description
Return the natural exponential of
f
.log( exp( x ) ) == x
as long as exp(x) doesn't overflow an int.- See also
pow()
,log()
- Methodfilter
mixed
filter(mixed
arr
,void
|mixed
fun
,mixed
...extra
)- Description
Filters the elements in
arr
throughfun
.- Parameter
arr
arr
is treated as a set of elements to be filtered, as follows:array
Each element is filtered with
fun
. The return value is of the same type asarr
and it contains the elements thatfun
accepted.fun
is applied in order to each element, and that order is retained between the kept elements.mapping
The values are filtered with
fun
, and the index/value pairs it accepts are kept in the returned mapping.program
The program is treated as a mapping containing the identifiers that are indexable from it and their values.
object
If there is a
lfun::cast
method in the object, it's called to try to cast the object to an array, a mapping, or a multiset, in that order, which is then filtered as described above.- Parameter
fun
Unless something else is mentioned above,
fun
is used as filter like this:array
When both
arr
andfun
are arrays, they should have the same lengths. In this case, the elements inarr
are kept where the corresponding positions infun
are nonzero.function
(mixed
... :mixed
)fun
is called for each element. It gets the current element as the first argument andextra
as the rest. The element is kept iffun
returns true, otherwise it's filtered out.object
The object is used as a
function
like above, i.e. thelfun::`()
method in it is called.multiset
fun
is indexed with each element. The element is kept if the result is nonzero, otherwise it's filtered out.zero
|void
Each element that is callable is called with
extra
as arguments. The element is kept if the result of the call is nonzero, otherwise it's filtered out. Elements that aren't callable are also filtered out.string
Each element is indexed with the given string. If the result of that is zero then the element is filtered out, otherwise the result is called with
extra
as arguments. The element is kept if the return value is nonzero, otherwise it's filtered out.This is typically used when
arr
is a collection of objects, andfun
is the name of some predicate function in them.- Note
The function is never destructive on
arr
.- See also
map()
,foreach()
- Methodfloor
float
floor(int
|float
f
)- Description
Return the closest integer value less or equal to
f
.- Note
floor()
does not return anint
, merely an integer value stored in afloat
.- See also
ceil()
,round()
- Methodget_active_compilation_handler
CompilationHandler
get_active_compilation_handler()- Description
Returns the currently active compilation compatibility handler, or 0 (zero) if none is active.
- Note
This function should only be used during a call of
compile()
.- See also
get_active_error_handler()
,compile()
,master()->get_compilation_handler()
,CompilationHandler
- Methodget_active_compiler
CompilerEnvironment.PikeCompiler
|zero
get_active_compiler()- Description
Returns the most recent of the currently active pike compilers, or
UNDEFINED
if none is active.- Note
This function should only be used during a call of
compile()
.- See also
get_active_error_handler()
,compile()
,master()->get_compilation_handler()
,CompilationHandler
- Methodget_active_error_handler
CompilationHandler
get_active_error_handler()- Description
Returns the currently active compilation error handler (second argument to
compile()
), or 0 (zero) if none is active.- Note
This function should only be used during a call of
compile()
.- See also
get_active_compilation_handler()
,compile()
,CompilationHandler
- Methodget_all_groups
array
(array
(int
|string
|array
(string
))) get_all_groups()- Description
Returns an array of arrays with all groups in the system groups source. Each element in the returned array has the same structure as in
getgrent
function.- Note
The groups source is system dependant. Refer to your system manuals for information about how to set the source.
- Returns
Array array
(int
|string
|array
(string
))0..
Array with info about the group
- See also
getgrent()
- Methodget_all_users
array
(array
(int
|string
)) get_all_users()- Description
Returns an array with all users in the system.
- Returns
An array with arrays of userinfo as in
getpwent
.- See also
getpwent()
getpwnam()
getpwuid()
- Methodget_backtrace
array
get_backtrace(object
|array
err
)- Description
Return the backtrace array from an error object or array (typically caught by a
catch
), or zero if there is none. Errors are thrown on if there are problems retrieving the backtrace.- See also
describe_backtrace()
,describe_error()
- Methodget_groups_for_user
array
(int
) get_groups_for_user(int
|string
user
)- Description
Gets all groups which a given user is a member of.
- Parameter
user
UID or loginname of the user
- Returns
Array array
0..
Information about all the users groups
- See also
get_all_groups()
getgrgid()
getgrnam()
getpwuid()
getpwnam()
- Methodget_iterator
Iterator
get_iterator(function
(:void
)|object
|array
|mapping
|multiset
|string
data
,mixed
...args
)- Description
Creates and returns a canonical iterator for
data
.- Returns
data
can have any of the following types:object
If
data
is an object withlfun::_get_iterator
defined then that function will be called with the argumentsargs
to create the iterator.If
data
is an object that lackslfun::_get_iterator
then it is assumed to already be an iterator object. In this caseargs
will be ignored (note this behavior may be changed).The iterator object is then checked whether it has
lfun::_iterator_next()
in which case it will simply be returned. Otherwise an attempt to wrap it in aCompatIterator
will be performed.array
If
data
is an array, anArray.Iterator
object will be returned.function
(:void
)If
data
is a function, aFunction.Iterator
object will be returned.mapping
If
data
is a mapping, aMapping.Iterator
object will be returnedmultiset
If
data
is a multiset, aMultiset.Iterator
object will be returnedstring
If
data
is a string, aString.Iterator
object will be returned- Note
This function is used by
foreach
to get an iterator for an object.- See also
Iterator
,lfun::_get_iterator
- Methodgetenv
mapping
(string
:string
) getenv(void
|int
force_update
)- Description
Queries the environment variables.
- Parameter
force_update
A cached copy of the real environment is kept to make this function quicker. If the optional flag
force_update
is nonzero then the real environment is queried and the cache is updated from it. That can be necessary if the environment changes through other means thanputenv
, typically from a C-level library.- Returns
Returns the whole environment as a mapping. Destructive operations on the mapping will not affect the internal environment representation.
Variable names and values cannot be wide strings nor contain
'\0'
characters. Variable names also cannot contain'='
characters.- Note
On NT the environment variable name is case insensitive.
- See also
putenv()
- Methodgetenv
string
getenv(string
varname
,void
|int
force_update
)- Description
Query the value of a specific environment variable.
- Parameter
varname
Environment variable to query.
- Parameter
force_update
A cached copy of the real environment is kept to make this function quicker. If the optional flag
force_update
is nonzero then the real environment is queried and the cache is updated from it. That can be necessary if the environment changes through other means thanputenv
, typically from a C-level library.- Returns
Returns the value of the environment variable
varname
if it exists, and0
(zero) otherwise.Variable names and values cannot be wide strings nor contain
'\0'
characters. Variable names also cannot contain'='
characters.- Note
On NT the environment variable name is case insensitive.
- See also
putenv()
- Methodgetgrgid
array
(int
|string
|array
(string
)) getgrgid(int
gid
)- Description
Get the group entry for the group with the id
gid
using the systemfunction getgrid(3).- Parameter
gid
The id of the group
- Returns
An array with the information about the group
Array string
0
Group name
string
1
Group password (encrypted)
int
2
ID of the group
array
3..
Array with UIDs of group members
- See also
getgrent()
getgrnam()
- Methodgetgrnam
array
(int
|string
|array
(string
)) getgrnam(string
str
)- Description
Get the group entry for the group with the name
str
using the systemfunction getgrnam(3).- Parameter
str
The name of the group
- Returns
An array with the information about the group
Array string
0
Group name
string
1
Group password (encrypted)
int
2
ID of the group
array
3..
Array with UIDs of group members
- See also
getgrent()
getgrgid()
- Methodgethrdtime
int
gethrdtime(void
|int
nsec
)- Description
Return the high resolution real time spent with threads disabled since the Pike interpreter was started. The time is normally returned in microseconds, but if the optional argument
nsec
is nonzero it's returned in nanoseconds.- Note
The actual accuracy on many systems is significantly less than microseconds or nanoseconds. See
System.REAL_TIME_RESOLUTION
.- See also
_disable_threads()
,gethrtime()
- Methodgethrtime
int
gethrtime(void
|int
nsec
)- Description
Return the high resolution real time since some arbitrary event in the past. The time is normally returned in microseconds, but if the optional argument
nsec
is nonzero it's returned in nanoseconds.It's system dependent whether or not this time is monotonic, i.e. if it's unaffected by adjustments of the calendaric clock in the system.
System.REAL_TIME_IS_MONOTONIC
tells what it is. Pike tries to use monotonic time for this function if it's available.- Note
The actual accuracy on many systems is significantly less than microseconds or nanoseconds. See
System.REAL_TIME_RESOLUTION
.- See also
System.REAL_TIME_IS_MONOTONIC
,System.REAL_TIME_RESOLUTION
,time()
,System.gettimeofday()
,gethrvtime()
,Pike.implicit_gc_real_time
- Methodgethrvtime
int
gethrvtime(void
|int
nsec
)- Description
Return the CPU time that has been consumed by this process or thread. -1 is returned if the system couldn't determine it. The time is normally returned in microseconds, but if the optional argument
nsec
is nonzero it's returned in nanoseconds.The CPU time includes both user and system time, i.e. it's approximately the same thing you would get by adding together the "utime" and "stime" fields returned by
System.getrusage
(but perhaps with better accuracy).It's however system dependent whether or not it's the time consumed in all threads or in the current one only;
System.CPU_TIME_IS_THREAD_LOCAL
tells which. If both types are available then thread local time is preferred.- Note
The actual accuracy on many systems is significantly less than microseconds or nanoseconds. See
System.CPU_TIME_RESOLUTION
.- Note
The garbage collector might run automatically at any time. The time it takes is not included in the figure returned by this function, so that normal measurements aren't randomly clobbered by it. Explicit calls to
gc
are still included, though.- Note
The special function
gauge
is implemented with this function.- See also
System.CPU_TIME_IS_THREAD_LOCAL
,System.CPU_TIME_RESOLUTION
,gauge()
,System.getrusage()
,gethrtime()
- Methodgetpid
int
getpid()- Description
Returns the process ID of this process.
- See also
System.getppid()
,System.getpgrp()
- Methodgetpwnam
array
(int
|string
) getpwnam(string
str
)- Description
Get the user entry for login
str
using the systemfunction getpwnam(3).- Parameter
str
The login name of the user whos userrecord is requested.
- Returns
An array with the information about the user
Array string
0
Users username (loginname)
string
1
User password (encrypted)
int
2
Users ID
int
3
Users primary group ID
string
4
Users real name an possibly some other info
string
5
Users home directory
string
6
Users shell
- See also
getpwuid()
getpwent()
- Methodgetpwuid
array
(int
|string
) getpwuid(int
uid
)- Description
Get the user entry for UID
uid
using the systemfunction getpwuid(3).- Parameter
uid
The uid of the user whos userrecord is requested.
- Returns
An array with the information about the user
Array string
0
Users username (loginname)
string
1
User password (encrypted)
int
2
Users ID
int
3
Users primary group ID
string
4
Users real name an possibly some other info
string
5
Users home directory
string
6
Users shell
- See also
getpwnam()
getpwent()
- Methodgetxattr
string
getxattr(string
file
,string
attr
,void
|bool
symlink
)- Description
Return the value of a specified attribute, or 0 if it does not exist.
- Methodglob
bool
glob(string
glob
,string
str
)zero
|string
glob(array
(string
)glob
,string
str
)array
(string
) glob(string
glob
,array
(string
)str
)array
(string
) glob(array
(string
)glob
,array
(string
)str
)- Description
Match strings against a glob pattern.
- Parameter
glob
string
The glob pattern.
Some characters have special meanings.
When a character range is not started the following characters have special meanings:
'?'
A question sign (
'?'
) matches any character.'*'
An asterisk (
'*'
) matches a string of arbitrary length.'\\'
A back-slash (
'\\'
) escapes the following character so that it is matched verbatim.'['
A left-bracket (
'['
) starts a character range.If a character range is started the following characters have special meanings:
'\\'
Escape (as above).
']'
A right-bracket (
']'
) ends a character range.'^'
The characters
'^'
and'!'
invert the character range if they are the first character in the range and otherwise match themselves.'!'
'-'
The character
'-'
separates the first and last characters in a character sequence.All other characters only match themselves.
array
(string
)An array of glob patterns (as above).
The function returns the matching glob if any of the given patterns match. Otherwise
0
. If the second argument (str
) is an array it will behave as if the first argument is a string (see below).- Parameter
str
string
1
is returned if the stringstr
matchesglob
,0
(zero) otherwise.array
(string
)All strings in the array
str
are matched againstglob
, and those that match are returned in an array (in the same order).- Note
In Pike 8.0 and earlier only
'?'
and'*'
had special meanings. The old implementation is available as8.0::glob()
.- Note
In Pike 8.0 and earlier
1
was also returned when matching an array of globs against a single string.- See also
8.0::glob()
,sscanf()
,Regexp
- Methodgmtime
mapping
(string
:int
) gmtime(int
timestamp
)- Description
Convert seconds since 00:00:00 UTC, Jan 1, 1970 into components.
This function works like
localtime()
but the result is not adjusted for the local time zone.- Note
Timestamps prior to 1970-01-01T00:00:00 (ie negative timestamps) were not supported on NT and AIX prior to Pike 9.0.
- See also
localtime()
,time()
,ctime()
,mktime()
,strptime()
- Methodhas_index
int
has_index(string
haystack
,int
index
)int
has_index(array
haystack
,int
index
)int
has_index(mapping
|multiset
|object
|program
haystack
,mixed
index
)- Description
Search for
index
inhaystack
.- Returns
Returns
1
ifindex
is in the index domain ofhaystack
, or0
(zero) if not found.This function is equivalent to (but sometimes faster than):
search(indices(haystack), index) != -1
- Note
A negative index in strings and arrays as recognized by the index operators
`[]()
and`[]=()
is not considered a proper index byhas_index()
- See also
has_value()
,has_prefix()
,has_suffix()
,indices()
,search()
,values()
,zero_type()
- Methodhas_prefix
int
has_prefix(string
|object
s
,string
prefix
)- Description
Returns
1
if the strings
starts withprefix
, returns0
(zero) otherwise.When
s
is an object, it needs to implementlfun::_sizeof()
andlfun::`[]
.- See also
has_suffix()
,has_value()
,search()
- Methodhas_suffix
int
has_suffix(string
s
,string
suffix
)- Description
Returns
1
if the strings
ends withsuffix
, returns0
(zero) otherwise.- See also
has_prefix()
,has_value()
,search()
- Methodhas_value
int
has_value(string
haystack
,string
value
)int
has_value(string
haystack
,int
value
)int
has_value(array
|mapping
|object
|program
haystack
,mixed
value
)- Description
Search for
value
inhaystack
.- Returns
Returns
1
ifvalue
is in the value domain ofhaystack
, or0
(zero) if not found.This function is in all cases except when both arguments are strings equivalent to (but sometimes faster than):
search(values(haystack), value) != -1
If both arguments are strings,
has_value()
is equivalent to:search(haystack, value) != -1
- See also
has_index()
,indices()
,search()
,has_prefix()
,has_suffix()
,values()
,zero_type()
- Methodhash
int
hash(string
s
)int
hash(string
s
,int
max
)- Description
Return an integer derived from the string
s
. The same string always hashes to the same value, also between processes, architectures, and Pike versions (see compatibility notes below, though).If
max
is given, the result will be >= 0 and <max
, otherwise the result will be >= 0 and <= 0x7fffffff.- Note
The hash algorithm was changed in Pike 8.1. If you want a hash that is compatible with Pike 8.0 and earlier, use
hash_8_0()
.The hash algorithm was also changed in Pike 7.5. If you want a hash that is compatible with Pike 7.4 and earlier, use
hash_7_4()
. The difference with regards tohash_8_0()
only affects wide strings.The hash algorithm was also changed in Pike 7.1. If you want a hash that is compatible with Pike 7.0 and earlier, use
hash_7_0()
.- Note
This hash function differs from the one provided by
hash_value()
, in thathash_value()
returns a process specific value.- See also
hash_7_0()
,hash_7_4()
,hash_8_0()
,hash_value
- Methodhash_7_0
int
hash_7_0(string
s
)int
hash_7_0(string
s
,int
max
)- Description
Return an integer derived from the string
s
. The same string always hashes to the same value, also between processes.If
max
is given, the result will be >= 0 and <max
, otherwise the result will be >= 0 and <= 0x7fffffff.- Note
This function is provided for backward compatibility with code written for Pike up and including version 7.0.
This function is not NUL-safe, and is byte-order dependant.
- See also
hash()
,hash_7_4
- Methodhash_7_4
int
hash_7_4(string
s
)int
hash_7_4(string
s
,int
max
)- Description
Return an integer derived from the string
s
. The same string always hashes to the same value, also between processes.If
max
is given, the result will be >= 0 and <max
, otherwise the result will be >= 0 and <= 0x7fffffff.- Note
This function is provided for backward compatibility with code written for Pike up and including version 7.4.
This function is byte-order dependant for wide strings.
- See also
hash_7_6()
,hash_7_0
- Methodhash_8_0
int
hash_8_0(string
s
)int
hash_8_0(string
s
,int
max
)- Description
Return an integer derived from the string
s
. The same string always hashes to the same value, also between processes, architectures, and Pike versions (see compatibility notes below, though).If
max
is given, the result will be >= 0 and <max
, otherwise the result will be >= 0 and <= 0x7fffffff.- Deprecated
Use
hash_value()
for in-process hashing (eg, for implementinglfun::_hash()
) or one of the cryptographic hash functions.- Note
This function is really bad at hashing strings. Similar string often return similar hash values.
It is especially bad for url:s, paths and similarly formatted strings.
- Note
The hash algorithm was changed in Pike 7.5. If you want a hash that is compatible with Pike 7.4 and earlier, use
hash_7_4()
. The difference only affects wide strings.The hash algorithm was also changed in Pike 7.1. If you want a hash that is compatible with Pike 7.0 and earlier, use
hash_7_0()
.- Note
This hash function differs from the one provided by
hash_value()
, in thathash_value()
returns a process specific value.- See also
hash()
,hash_7_0()
,hash_7_4()
,hash_value
- Methodhash_value
int
hash_value(mixed
value
)- Description
Return a hash value for the argument. It's an integer in the native integer range.
The hash will be the same for the same value in the running process only (the memory address is typically used as the basis for the hash value).
If the value is an object with an
lfun::__hash
, that function is called and its result returned.- Note
This is the hashing method used by mappings.
- See also
lfun::__hash()
- Methodis_absolute_path
int
is_absolute_path(string
p
)- Description
Check if a path
p
is fully qualified (ie not relative).- Returns
Returns 1 if the path is absolute, 0 otherwise.
- Methoditerator_index
mixed
iterator_index(Iterator
iter
)- Description
Get the current index for
iter
.- See also
iterator_value()
,lfun::_iterator_index()
,get_iterator()
- Methoditerator_next
mixed
iterator_next(Iterator
iter
)- Description
Advance
iter
one step.- See also
iterator_prev()
,lfun::_iterator_next()
,get_iterator()
- Methoditerator_prev
mixed
iterator_prev(Iterator
iter
)- Description
Advance
iter
one step backward (if supported).- See also
iterator_next()
,lfun::_iterator_prev()
,get_iterator()
- Methoditerator_value
mixed
iterator_value(Iterator
iter
)- Description
Get the current value for
iter
.- See also
iterator_index()
,lfun::_iterator_value()
,get_iterator()
- Methodkill
bool
kill(int
pid
,int
signal
)- Description
Send a signal to another process.
Some signals and their supposed purpose:
SIGHUP
Hang-up, sent to process when user logs out.
SIGINT
Interrupt, normally sent by ctrl-c.
SIGQUIT
Quit, sent by ctrl-\.
SIGILL
Illegal instruction.
SIGTRAP
Trap, mostly used by debuggers.
SIGABRT
Aborts process, can be caught, used by Pike whenever something goes seriously wrong.
SIGEMT
Emulation trap.
SIGFPE
Floating point error (such as division by zero).
SIGKILL
Really kill a process, cannot be caught.
SIGBUS
Bus error.
SIGSEGV
Segmentation fault, caused by accessing memory where you shouldn't. Should never happen to Pike.
SIGSYS
Bad system call. Should never happen to Pike.
SIGPIPE
Broken pipe.
SIGALRM
Signal used for timer interrupts.
SIGTERM
Termination signal.
SIGUSR1
Signal reserved for whatever you want to use it for. Note that some OSs reserve this signal for the thread library.
SIGUSR2
Signal reserved for whatever you want to use it for. Note that some OSs reserve this signal for the thread library.
SIGCHLD
Child process died. This signal is reserved for internal use by the Pike run-time.
SIGPWR
Power failure or restart.
SIGWINCH
Window change signal.
SIGURG
Urgent socket data.
SIGIO
Pollable event.
SIGSTOP
Stop (suspend) process.
SIGTSTP
Stop (suspend) process. Sent by ctrl-z.
SIGCONT
Continue suspended.
SIGTTIN
TTY input for background process.
SIGTTOU
TTY output for background process.
SIGVTALRM
Virtual timer expired.
SIGPROF
Profiling trap.
SIGXCPU
Out of CPU.
SIGXFSZ
File size limit exceeded.
SIGSTKFLT
Stack fault
- Returns
1
Success.
0
Failure.
errno()
is set to EINVAL, EPERM or ESRCH.- Note
Note that you have to use signame to translate the name of a signal to its number.
Note that the kill function is not available on platforms that do not support signals. Some platforms may also have signals not listed here.
- See also
signal()
,signum()
,signame()
,fork()
- Methodlimit
int
|float
|object
limit(int
|float
|object
minval
,int
|float
|object
x
,int
|float
|object
maxval
)- Description
Limits the value
x
so that it's betweenminval
andmaxval
. Ifx
is an object, it must implement thelfun::`<
method.- See also
max()
andmin()
- Methodlistxattr
array
(string
) listxattr(string
file
,void
|bool
symlink
)- Description
Return an array of all extended attributes set on the file
- Methodload_module
program
load_module(string
module_name
)- Description
Load a binary module.
This function loads a module written in C or some other language into Pike. The module is initialized and any programs or constants defined will immediately be available.
When a module is loaded the C function pike_module_init() will be called to initialize it. When Pike exits pike_module_exit() will be called. These two functions must be available in the module.
- Note
The current working directory is normally not searched for dynamic modules. Please use
"./name.so"
instead of just"name.so"
to load modules from the current directory.
- Methodlocaltime
mapping
(string
:int
) localtime(int
timestamp
)- Description
Convert seconds since 00:00:00 UTC, 1 Jan 1970 into components.
- Returns
This function returns a mapping with the following components:
"sec"
:int(0..60)
Seconds over the minute.
"min"
:int(0..59)
Minutes over the hour.
"hour"
:int(0..23)
Hour of the day.
"mday"
:int(1..31)
Day of the month.
"mon"
:int(0..11)
Month of the year.
"year"
:int(0..)
Year since 1900.
"wday"
:int(0..6)
Day of week (0 = Sunday).
"yday"
:int(0..365)
Day of the year.
"isdst"
:bool
Is daylight-saving time active.
"timezone"
:int
Offset from UTC, including daylight-saving time adjustment.
An error is thrown if the localtime(2) call failed on the system. It's platform dependent what time ranges that function can handle, e.g. Windows doesn't handle a negative
timestamp
.- Note
Prior to Pike 7.5 the field
"timezone"
was sometimes not present, and was sometimes not adjusted for daylight-saving time.- Note
Timestamps prior to 1970-01-01T00:00:00 (ie negative timestamps) were not supported on NT and AIX prior to Pike 9.0. Note also that dst-handling may be incorrect for such timestamps.
- See also
Calendar
,gmtime()
,time()
,ctime()
,mktime()
,strptime()
- Methodlog
float
log(int
|float
f
)- Description
Return the natural logarithm of
f
.exp( log(x) ) == x
for x > 0.- See also
pow()
,exp()
- Methodlower_case
string
lower_case(string
s
)int
lower_case(int
c
)- Description
Convert a string or character to lower case.
- Returns
Returns a copy of the string
s
with all upper case characters converted to lower case, or the characterc
converted to lower case.- Note
Assumes the string or character to be coded according to ISO-10646 (aka Unicode). If they are not,
Charset.decoder
can do the initial conversion for you.- Note
Prior to Pike 7.5 this function only accepted strings.
- See also
upper_case()
,Charset.decoder
- Methodm_add
void
m_add(multiset
|object
l
,mixed
val
)- Description
Add a member to a multiset.
- See also
m_delete()
- Methodm_clear
void
m_clear(mapping
|multiset
|object
map
)- Description
Clear the contents of a mapping or multiset.
This function clears the content of the mapping or multiset
map
so that it becomes empty. This is an atomic operation.If
map
is an objectlfun::_m_clear()
will be called in it.- See also
m_delete()
- Methodm_delete
mixed
m_delete(object
|mapping
|multiset
map
,mixed
index
)- Description
If
map
is an object that implementslfun::_m_delete()
, that function will be called withindex
as its single argument.Otherwise if
map
is a mapping or multiset the entry with indexindex
will be removed frommap
destructively.If the mapping or multiset does not have an entry with index
index
, nothing is done.- Returns
The value that was removed will be returned, and
UNDEFINED
otherwise.- Note
Note that
m_delete()
changesmap
destructively.- See also
mappingp()
- Methodmap
mixed
map(mixed
arr
,void
|mixed
fun
,mixed
...extra
)- Description
Applies
fun
to the elements inarr
and collects the results.- Parameter
arr
arr
is treated as a set of elements, as follows:array
fun
is applied in order to each element. The results are collected, also in order, to a value of the same type asarr
, which is returned.mapping
fun
is applied to the values, and each result is assigned to the same index in a new mapping, which is returned.program
The program is treated as a mapping containing the identifiers that are indexable from it and their values.
object
If there is a
lfun::cast
method in the object, it's called to try to cast the object to an array, a mapping, or a multiset, in that order, which is then handled as described above.- Parameter
fun
fun
is applied in different ways depending on its type:function
(mixed
... :mixed
)fun
is called for each element. It gets the current element as the first argument andextra
as the rest. The result of the call is collected.object
fun
is used as a function like above, i.e. thelfun::`()
method in it is called.array
Each element of the
fun
array will be called for each element ofarr
.multiset
fun
is indexed with each element. The result of that is collected.zero
|void
Each element that is callable is called with
extra
as arguments. The result of the calls are collected. Elements that aren't callable gets zero as result.string
Each element is indexed with the given string. If the result of that is zero then a zero is collected, otherwise it's called with
extra
as arguments and the result of that call is collected.This is typically used when
arr
is a collection of objects, andfun
is the name of some function in them.- Note
The function is never destructive on
arr
.- See also
filter()
,enumerate()
,foreach()
- Methodmaster
object
master()- Description
Return the current master object.
- Note
May return
UNDEFINED
if no master has been loaded yet.- See also
replace_master()
- Methodmax
int
|float
|object
max(int
|float
|object
,int
|float
|object
...args
)string
max(string
,string
...args
)int(0)
max()- Description
Returns the largest value among
args
. Compared objects must implement thelfun::`<
method.- See also
min()
andlimit()
- Methodmin
int
|float
|object
min(int
|float
|object
,int
|float
|object
...args
)string
min(string
,string
...args
)int(0)
min()- Description
Returns the smallest value among
args
. Compared objects must implement thelfun::`<
method.- See also
max()
andlimit()
- Methodmkmapping
mapping
mkmapping(array
ind
,array
val
)- Description
Make a mapping from two arrays.
Makes a mapping
ind[x]
:val[x]
, 0 <= x < sizeof(ind).ind
andval
must have the same size.This is the inverse operation of
indices()
andvalues()
.- See also
indices()
,values()
- Methodmkmultiset
multiset
mkmultiset(array
a
)- Description
This function creates a multiset from an array.
- See also
aggregate_multiset()
- Methodmktime
int
mktime(mapping
(string
:int
)tm
)int
mktime(int
sec
,int
min
,int
hour
,int
mday
,int
mon
,int
year
,int
|void
isdst
,int
|void
tz
)- Description
This function converts information about date and time into an integer which contains the number of seconds since 00:00:00 UTC, Jan 1, 1970.
You can either call this function with a mapping containing the following elements:
"sec"
:int(0..60)
Seconds over the minute.
"min"
:int(0..59)
Minutes over the hour.
"hour"
:int(0..23)
Hour of the day.
"mday"
:int(1..31)
Day of the month.
"mon"
:int(0..11)
Month of the year.
"year"
:int(0..)
Year since 1900.
"isdst"
:int(-1..1)
Is daylight-saving time active. If omitted or set to
-1
, it means that the information is not available."timezone"
:int
The timezone offset from UTC in seconds. If omitted, the time will be calculated in the local timezone.
Or you can just send them all on one line as the second syntax suggests.
- Note
For proper UTC calculations ensure that
isdst = 0
andtimezone = 0
; omitting either one of these parameters will mess up the UTC calculation.- Note
On some operating systems (notably AIX and Win32), dates before 00:00:00 UTC, Jan 1, 1970 were not supported prior to Pike 9.0.
On most 32-bit systems, the supported range of dates is from Dec 13, 1901 20:45:52 UTC through to Jan 19, 2038 03:14:07 UTC (inclusive).
On most 64-bit systems, the supported range of dates is expressed in 56 bits and is thus practically unlimited (at least up to 1141 milion years in the past and into the future).
- See also
time()
,ctime()
,localtime()
,gmtime()
,strftime()
- Methodnormalize_path
string
normalize_path(string
path
)- Description
Replaces "\" with "/" if runing on MS Windows. It is adviced to use
System.normalize_path
instead.
- Methodobject_variablep
bool
object_variablep(object
o
,string
var
)- Description
Find out if an object identifier is a variable.
- Returns
This function returns
1
ifvar
exists as a non-protected variable ino
, and returns0
(zero) otherwise.- See also
indices()
,values()
- Methodobjectp
int
objectp(mixed
arg
)- Description
Returns
1
ifarg
is an object,0
(zero) otherwise.- See also
mappingp()
,programp()
,arrayp()
,stringp()
,functionp()
,multisetp()
,floatp()
,intp()
- Methodpow
int
|float
pow(float
|int
n
,float
|int
x
)mixed
pow(object
n
,float
|int
|object
x
)- Description
Return
n
raised to the power ofx
. If bothn
andx
are integers the result will be an integer. Ifn
is an object its pow method will be called withx
as argument.- See also
exp()
,log()
- Methodputenv
void
putenv(string
varname
,void
|string
value
)- Description
Sets the environment variable
varname
tovalue
.If
value
is omitted or zero, the environment variablevarname
is removed.varname
andvalue
cannot be wide strings nor contain'\0'
characters.varname
also cannot contain'='
characters.- Note
On NT the environment variable name is case insensitive.
- See also
getenv()
- Methodrandom
array
random(mapping
m
)float
random(float
max
)int
random(int
max
)mixed
random(object
o
)mixed
random(array
|multiset
x
)- Description
Get a random value generated by the default
RandomSystem
.- See also
RandomSystem()->random()
,random_string()
- Methodrandom_seed
void
random_seed(int
seed
)- Description
This function sets the initial value for the random generator.
- See also
random()
- Deprecated
Random.Deterministic
- Methodrandom_string
string
random_string(int
len
)- Description
Get a string of random characters
0..255
with the lengthlen
from the defaultRandomSystem
.- See also
RandomSystem()->random_string()
,random()
- Methodremove_include_path
void
remove_include_path(string
tmp
)- Description
Remove a directory to search for include files.
This function performs the reverse operation of
add_include_path()
.- See also
add_include_path()
- Methodremove_module_path
void
remove_module_path(string
tmp
)- Description
Remove a directory to search for modules.
This function performs the reverse operation of
add_module_path()
.- See also
add_module_path()
- Methodremove_program_path
void
remove_program_path(string
tmp
)- Description
Remove a directory to search for programs.
This function performs the reverse operation of
add_program_path()
.- See also
add_program_path()
- Methodremovexattr
void
removexattr(string
file
,string
attr
,void
|bool
symlink
)- Description
Remove the specified extended attribute.
- Methodreplace
string
replace(string
s
,string
from
,string
to
)string
replace(string
s
,array
(string
)from
,array
(string
)to
)string
replace(string
s
,array
(string
)from
,string
to
)string
replace(string
s
,mapping
(string
:string
)replacements
)array
replace(array
a
,mixed
from
,mixed
to
)mapping
replace(mapping
a
,mixed
from
,mixed
to
)- Description
Generic replace function.
This function can do several kinds replacement operations, the different syntaxes do different things as follows:
If all the arguments are strings, a copy of
s
with every occurrence offrom
replaced withto
will be returned. Special case:to
will be inserted between every character ins
iffrom
is the empty string.If the first argument is a string, and the others array(string), a string with every occurrance of
from
[i] ins
replaced withto
[i] will be returned. Instead of the arraysfrom
andto
a mapping equivalent to
can be used.mkmapping
(from
,to
)If the first argument is an array or mapping, the values of
a
which are`==()
withfrom
will be replaced withto
destructively.a
will then be returned.- Note
Note that
replace()
on arrays and mappings is a destructive operation.
- Methodreplace_master
void
replace_master(object
o
)- Description
Replace the master object with
o
.This will let you control many aspects of how Pike works, but beware that master.pike may be required to fill certain functions, so it is usually a good idea to have your master inherit the original master and only re-define certain functions.
FIXME: Tell how to inherit the master.
- See also
master()
- Methodreverse
string
reverse(string
s
,int
|void
start
,int
|void
end
)array
reverse(array
a
,int
|void
start
,int
|void
end
)int
reverse(int
i
,int
|void
start
,int
|void
end
)mixed
reverse(object
o
,mixed
...options
)- Description
Reverses a string, array or int.
- Parameter
s
String to reverse.
- Parameter
a
Array to reverse.
- Parameter
i
Integer to reverse.
- Parameter
o
Object to reverse.
- Parameter
start
Optional start index of the range to reverse. Default:
0
(zero).- Parameter
end
Optional end index of the range to reverse. Default for strings:
sizeof(s)-1
. Default for arrays:sizeof(a)-1
. Default for integers:Pike.get_runtime_info()->int_size - 1
.- Parameter
options
Optional arguments that are to be passed to
lfun::_reverse()
.This function reverses a string, char by char, an array, value by value or an int, bit by bit and returns the result. It's not destructive on the input value. For objects it simply calls
lfun::_reverse()
in the object, and returns the result.Reversing strings can be particularly useful for parsing difficult syntaxes which require scanning backwards.
- See also
sscanf()
- Methodround
float
round(int
|float
f
)- Description
Return the closest integer value to
f
.- Note
round()
does not return anint
, merely an integer value stored in afloat
.- See also
floor()
,ceil()
- Methodrows
array
rows(mixed
data
,array
index
)- Description
Select a set of rows from an array.
This function is en optimized equivalent to:
map(index,lambda(mixed x){return data[x];})
That is, it indices data on every index in the array index and returns an array with the results.
- See also
column()
- Methodsearch
int
search(string
haystack
,string
|int
needle
,int
|void
start
,int
|void
end
)int
search(array
haystack
,mixed
needle
,int
|void
start
,int
|void
end
)mixed
search(mapping
haystack
,mixed
needle
,mixed
|void
start
)mixed
search(object
haystack
,mixed
needle
,mixed
|void
start
,mixed
...extra_args
)- Description
Search for
needle
inhaystack
.- Parameter
haystack
Item to search in. This can be one of:
string
When
haystack
is a stringneedle
must be a string or an int, and the first occurrence of the string or int is returned.array
When
haystack
is an array,needle
is compared only to one value at a time inhaystack
.mapping
When
haystack
is a mapping,search()
tries to find the index connected to the dataneedle
. That is, it tries to lookup the mapping backwards.object
When
haystack
is an object implementinglfun::_search()
, the result of callinglfun::_search()
withneedle
,start
and anyextra_args
will be returned.If
haystack
is an object that doesn't implementlfun::_search()
it is assumed to be anIterator
, and implementIterator()->index()
,Iterator()->value()
, andIterator()->next()
.search()
will then start comparing elements with`==()
until a match withneedle
is found. Ifneedle
is foundhaystack
will be advanced to the element, and the iterator index will be returned. Ifneedle
is not found,haystack
will be advanced to the end.- Parameter
start
If the optional argument
start
is present search is started at this position. This has no effect on mappings.- Parameter
end
If the optional argument
end
is present, the search will terminate at this position (exclusive) if not found earlier.- Returns
Returns the position of
needle
inhaystack
if found.If not found the returned value depends on the type of
haystack
:string
|array
-1
.mapping
|Iterator
UNDEFINED
.object
The value returned by
lfun::_search()
.- Note
If
start
is supplied to an iterator object without anlfun::_search()
,haystack
will need to implementIterator()->set_index()
.- Note
For mappings and object
UNDEFINED
will be returned when not found. In all other cases-1
will be returned when not found.- See also
indices()
,values()
,zero_type()
,has_value()
,has_prefix()
,has_suffix()
- Methodset_weak_flag
array
|mapping
|multiset
set_weak_flag(array
|mapping
|multiset
m
,int
state
)- Description
Set the value
m
to use weak or normal references in its indices and/or values (whatever is applicable).state
is a bitfield built by using|
between the following flags:Pike.WEAK_INDICES
Use weak references for indices. Only applicable for multisets and mappings.
Pike.WEAK_VALUES
Use weak references for values. Only applicable for arrays and mappings.
Pike.WEAK
Shorthand for
Pike.WEAK_INDICES|Pike.WEAK_VALUES
.If a flag is absent, the corresponding field will use normal references.
state
can also be1
as a compatibility measure; it's treated likePike.WEAK
.- Returns
m
will be returned.
- Methodsetxattr
void
setxattr(string
file
,string
attr
,string
value
,int
flags
,void
|bool
symlink
)- Description
Set the attribute
attr
to the valuevalue
.The flags parameter can be used to refine the semantics of the operation.
Stdio.XATTR_CREATE
specifies a pure create, which fails if the named attribute exists already.Stdio.XATTR_REPLACE
specifies a pure replace operation, which fails if the named attribute does not already exist.By default (no flags), the extended attribute will be created if need be, or will simply replace the value if the attribute exists.
- Returns
1 if successful, 0 otherwise, setting errno.
- Methodsgn
int
sgn(mixed
value
)int
sgn(mixed
value
,mixed
zero
)- Description
Check the sign of a value.
- Returns
Returns
-1
ifvalue
is less thanzero
,1
ifvalue
is greater thanzero
and0
(zero) otherwise.- See also
abs()
- Methodsignal
function
(int
|void
:void
) signal(int
sig
,function
(int
|void
:void
)callback
)function
(int
|void
:void
) signal(int
sig
)- Description
Trap signals.
This function allows you to trap a signal and have a function called when the process receives a signal. Although it IS possible to trap SIGBUS, SIGSEGV etc, I advise you not to; Pike should not receive any such signals, and if it does, it is because of bugs in the Pike interpreter. And all bugs should be reported, no matter how trifle.
The callback will receive the signal number as its only argument.
See the documentation for
kill()
for a list of signals.If no second argument is given, the signal handler for that signal is restored to the default handler.
If the second argument is zero, the signal will be completely ignored.
- Returns
Returns the previous signal function, or 0 if none had been registered.
- See also
kill()
,signame()
,signum()
- Methodsigname
string
signame(int
sig
)- Description
Returns a string describing the signal
sig
.- See also
kill()
,signum()
,signal()
- Methodsignum
int
signum(string
sig
)- Description
Get a signal number given a descriptive string.
This function is the inverse of
signame()
.- See also
signame()
,kill()
,signal()
- Methodsin
float
sin(int
|float
f
)- Description
Returns the sine value for
f
.f
should be specified in radians.- See also
asin()
,cos()
,tan()
- Methodsinh
float
sinh(int
|float
f
)- Description
Returns the hyperbolic sine value for
f
.- See also
asinh()
,cosh()
,tanh()
- Methodsizeof
int(0..)
sizeof(string
arg
)int(0..)
sizeof(array
arg
)int(0..)
sizeof(mapping
arg
)int(0..)
sizeof(multiset
arg
)int(0..)
sizeof(object
arg
)- Description
Size query.
- Returns
The result will be as follows:
arg
can have any of the following types:string
The number of characters in
arg
will be returned.array
|multiset
The number of elements in
arg
will be returned.mapping
The number of key-value pairs in
arg
will be returned.object
If
arg
implementslfun::_sizeof()
, that function will be called. Otherwise the number of non-protected (ie public) symbols inarg
will be returned.- See also
lfun::_sizeof()
- Methodsleep
void
sleep(int
|float
s
,void
|int
abort_on_signal
)- Description
This function makes the thread stop for
s
seconds.Only signal handlers can interrupt the sleep, and only when
abort_on_signal
is set. If more than one thread is running the signal must be sent to the sleeping thread. Other callbacks are not called during sleep.If
s
is zero then this thread will yield to other threads but not sleep otherwise. Note that Pike yields internally at regular intervals so it's normally not necessary to do this.- See also
signal()
,delay()
- Methodsort
array
sort(array
(mixed
)index
,array
(mixed
) ...data
)- Description
Sort arrays destructively.
This function sorts the array
index
destructively. That means that the array itself is changed and returned, no copy is created.If extra arguments are given, they are supposed to be arrays of the same size as
index
. Each of these arrays will be modified in the same way asindex
. I.e. if index 3 is moved to position 0 inindex
index 3 will be moved to position 0 in all the other arrays as well.The sort order is as follows:
Integers and floats are sorted in ascending order.
Strings are sorted primarily on the first characters that are different, and secondarily with shorter strings before longer. Different characters are sorted in ascending order on the character value. Thus the sort order is not locale dependent.
Arrays are sorted recursively on the first element. Empty arrays are sorted before nonempty ones.
Multisets are sorted recursively on the first index. Empty multisets are sorted before nonempty ones.
Objects are sorted in ascending order according to
`<()
,`>()
and`==()
.Other types aren't reordered.
Different types are sorted in this order: Arrays, mappings, multisets, objects, functions, programs, strings, types, integers and floats. Note however that objects can control their ordering wrt other types with
`<
,`>
and`==
, so this ordering of types only applies to objects without those functions.
- Returns
The first argument is returned.
- Note
The sort is stable, i.e. elements that are compare-wise equal aren't reordered.
- See also
Array.sort_array
,reverse()
- Methodsprintf
string
sprintf(strict_sprintf_format
format
,sprintf_args
...args
)- Description
Print formated output to string.
The
format
string is a string containing a description of how to output the data inargs
. This string should generally speaking have one %<modifiers><operator> format specifier (examples: %s, %0d, %-=20s) for each of the arguments.The following modifiers are supported:
'0'
Zero pad numbers (implies right justification).
'!'
Toggle truncation.
' '
Pad positive integers with a space.
'+'
Pad positive integers with a plus sign.
'-'
Left adjust within field size (default is right).
'|'
Centered within field size.
'='
Column mode if strings are greater than field width. Breaks between words (possibly skipping or adding spaces). Can not be used together with
'/'
.'/'
Column mode with rough line break (break at exactly field width instead of between words). Can not be used together with
'='
.'#'
Table mode, print a list of
'\n'
separated words (top-to-bottom order).'$'
Inverse table mode (left-to-right order).
'n'
(Where n is a number or *) field width specifier.
':n'
'.n'
Precision specifier.
';n'
Column width specifier.
'*'
If n is a * then next argument is used for precision/field size. The argument may either be an integer, or a modifier mapping as received by
lfun::_sprintf()
:"precision"
:int
|void
Precision (aka
'.n'
where n is a number)."width"
:int(0..)
|void
Field width (aka
'n'
or':n'
where n is a number)."flag_left"
:bool
|void
Indicates that the output should be left-aligned (aka
'-'
)."indent"
:int(0..)
|void
Base indentation level in number of spaces in %O-mode.
"'"
Set a pad string. ' cannot be a part of the pad string (yet).
'~'
Get pad string from argument list.
'<'
Use same argument again.
'^'
Repeat this on every line produced.
'@'
Repeat this format for each element in the argument array.
'>'
Put the string at the bottom end of column instead of top.
'_'
Set width to the length of data.
'[n]'
Select argument number n. Use * to use the next argument as selector. The arguments are numbered starting from
0
(zero) for the first argument after theformat
. Note that this only affects where the current operand is fetched.The following operators are supported:
'%'
Percent.
'b'
Signed binary integer.
'd'
Signed decimal integer.
'u'
Unsigned decimal integer.
'o'
Signed octal integer.
'x'
Lowercase signed hexadecimal integer or 8-bit string.
'X'
Uppercase signed hexadecimal integer or 8-bit string.
'c'
Character (integer). If a fieldsize has been specified this will output the low-order bytes of the integer in network (big endian) byte order. To get little endian byte order, negate the field size.
'f'
Float. (Locale dependent formatting.)
'g'
Heuristically chosen representation of float. (Locale dependent formatting.)
'G'
Like %g, but uses uppercase E for exponent.
'e'
Exponential notation float. (Locale dependent output.)
'E'
Like %e, but uses uppercase E for exponent.
'F'
Binary IEEE representation of float (%4F gives single precision, %8F gives double precision) in network (big endian) byte order. To get little endian byte order, negate the field size.
's'
String.
'q'
Quoted string. Escapes all control and non-8-bit characters, as well as the quote characters '\\' and '\"'.
'O'
Any value, debug style. Do not rely on the exact formatting; how the result looks can vary depending on locale, phase of the moon or anything else the
lfun::_sprintf()
method implementor wanted for debugging.'p'
Hexadecimal representation of the memory address of the object. Integers and floats have no address, and are printed as themselves.
'H'
Binary Hollerith string. Equivalent to
sprintf("%c%s", strlen(str), str)
. Arguments (such as width etc) adjust the length-part of the format. Requires 8-bit strings.'n'
No argument. Same as
"%s"
with an empty string as argument. Note: Does take an argument array (but ignores its content) if the modifier'@'
is active.'t'
Type of the argument.
'{'
Perform the enclosed format for every element of the argument array.
'}'
Most modifiers and operators are combinable in any fashion, but some combinations may render strange results.
If an argument is an object that implements
lfun::_sprintf()
, that callback will be called with the operator as the first argument, and the current modifiers as the second. The callback is expected to return a string.- Note
sprintf-style formatting is applied by many formatting functions, such
write()
andwerror()
. It is also possible to get sprintf-style compile-time argument checking by using the type-attributessprintf_format
orstrict_sprintf_format
in combination withsprintf_args
.- Note
Most formats are available in all versions of Pike; the exceptions are:
Format Version Availability constant Notes '*'
Pike 7.8.238 String.__HAVE_SPRINTF_STAR_MAPPING__
Support for specifying modifiers via a mapping. 'b'
Pike 0.7.62 'c'
Pike 0.7.3 Support for wide characters. 'c'
Pike 0.7.64 Support for little endian output. 'E'
Pike 0.6.38 'F'
Pike 0.6.38 'F'
Pike 7.8.242 String.__HAVE_SPRINTF_NEGATIVE_F__
Support for litte endian byte order. 'G'
Pike 0.6.38 'H'
Pike 7.7.31 'p'
Pike 7.5.4 Implemented but disabled ( #if 0
-block).'p'
Pike 8.1.14 Enabled. 'q'
Pike 7.7.28 'x'
Pike 8.1.5 Support for hex-formatting strings. 'X'
Pike 8.1.5 Support for hex-formatting strings. '[n]'
Pike 7.1.5 - Example
Pike v7.8 release 263 running Hilfe v3.5 (Incremental Pike Frontend)> sprintf("The unicode character %c has character code %04X.",'A','A');(1) Result:"The unicode character A has character code 0041."> sprintf("#%@02X is the HTML code for purple.",Image.Color.purple->rgb());(2) Result:"#A020F0 is the HTML code for purple.">int n=4711;> sprintf("%d = hexadecimal %x = octal %o = %b binary", n, n, n, n);(3) Result:"4711 = hexadecimal 1267 = octal 11147 = 1001001100111 binary"> write(#"Formatting examples: Left adjusted [%-10d] Centered [%|10d] Right adjusted [%10d] Zero padded [%010d] ", n, n, n, n);
Formatting examples: Left adjusted [4711 ] Centered [ 4711 ] Right adjusted [ 4711] Zero padded [0000004711]
(5) Result: 142 int screen_width=70;> write("%-=*s\n", screen_width, >> "This will wordwrap the specified string within the "+ >> "specified field size, this is useful say, if you let "+ >> "users specify their screen size, then the room "+ >> "descriptions will automagically word-wrap as appropriate.\n"+ >> "slosh-n's will of course force a new-line when needed.\n");
This will wordwrap the specified string within the specified field size, this is useful say, if you let users specify their screen size, then the room descriptions will automagically word-wrap as appropriate. slosh-n's will of course force a new-line when needed.
(6) Result: 355 > write("%-=*s %-=*s\n", screen_width/2, >> "Two columns next to each other (any number of columns will "+ >> "of course work) independantly word-wrapped, can be useful.", >> screen_width/2-1, >> "The - is to specify justification, this is in addherence "+ >> "to std sprintf which defaults to right-justification, "+ >> "this version also supports centre and right justification.");
Two columns next to each other (any The - is to specify justification, number of columns will of course this is in addherence to std work) independantly word-wrapped, sprintf which defaults to can be useful. right-justification, this version also supports centre and right justification.
(7) Result: 426 > write("%-$*s\n", screen_width, >> "Given a\nlist of\nslosh-n\nseparated\n'words',\nthis option\n"+ >> "creates a\ntable out\nof them\nthe number of\ncolumns\n"+ >> "be forced\nby specifying a\npresision.\nThe most obvious\n"+ >> "use is for\nformatted\nls output.");
Given a list of slosh-n separated 'words', this option creates a table out of them the number of columns be forced by specifying a presision. The most obvious use is for formatted ls output.
(8) Result: 312 > write("%-#*s\n", screen_width, >> "Given a\nlist of\nslosh-n\nseparated\n'words',\nthis option\n"+ >> "creates a\ntable out\nof them\nthe number of\ncolumns\n"+ >> "be forced\nby specifying a\npresision.\nThe most obvious\n"+ >> "use is for\nformatted\nls output.");
Given a creates a by specifying a list of table out presision. slosh-n of them The most obvious separated the number of use is for 'words', columns formatted this option be forced ls output.
(9) Result: 312 > sample =(["align":"left","valign":"middle"]);(10) Result:([/* 2 elements */"align":"left","valign":"middle"])> write("<td%{ %s='%s'%}>\n",(array)sample);
<td valign='middle' align='left'>
(11) Result: 34 > write("Of course all the simple printf options "+ >> "are supported:\n %s: %d %x %o %c\n", >> "65 as decimal, hex, octal and a char", >> 65, 65, 65, 65);
Of course all the simple printf options are supported: 65 as decimal, hex, octal and a char: 65 41 101 A
(12) Result: 106 > write("%[0]d, %[0]x, %[0]X, %[0]o, %[0]c\n", 75);
75, 4b, 4B, 113, K
(13) Result: 19 > write("#%|*s\n#%|*s\n", screen_width,"THE END", >> (["width":screen_width ]),"ALTERNATIVE END");
# THE END # ALTERNATIVE END
(14) Result: 144
- See also
lfun::_sprintf()
,strict_sprintf_format
,sprintf_format
,sprintf_args
,String.__HAVE_SPRINTF_STAR_MAPPING__
,String.__HAVE_SPRINTF_NEGATIVE_F__
.
- Methodsqrt
float
sqrt(float
f
)int(0..)
sqrt(int(0..)
i
)mixed
sqrt(object
o
)- Description
Returns the square root of
f
, or in the integer case, the square root truncated to the closest lower integer. If the argument is an object, the lfun _sqrt in the object will be called.- See also
pow()
,log()
,exp()
,floor()
,lfun::_sqrt
- Methodsscanf
int
sscanf(string
data
,string
format
,mixed
...lvalues
)- Description
The purpose of sscanf is to match a string
data
against aformat
string and place the matching results into a list of variables. The list oflvalues
are destructively modified (which is only possible because sscanf really is a special form, rather than a pike function) with the values extracted from thedata
according to theformat
specification. Only the variables up to the last matching directive of the format string are touched.The
format
string may contain strings separated by special matching directives like %d, %s%c and %f. Every such directive corresponds to one of thelvalues
, in the order they are listed. An lvalue is the name of a variable, a name of a local variable, an index into an array, mapping or object. It is because of these lvalues that sscanf can not be implemented as a normal function.Whenever a percent character is found in the format string, a match is performed, according to which operator and modifiers follow it:
"%b"
Reads a binary integer (
"0101"
makes5
)"%d"
Reads a decimal integer (
"0101"
makes101
)."%o"
Reads an octal integer (
"0101"
makes65
)."%x"
Reads a hexadecimal integer (
"0101"
makes257
)."%D"
Reads an integer that is either octal (leading zero), hexadecimal (leading
0x
) or decimal. ("0101"
makes65
)."%c"
Reads one character and returns it as an integer (
"0101"
makes48
, or'0'
, leaving"101"
for later directives). Using the field width and endianness modifiers, you can decode integers of any size and endianness. For example"%-2c"
decodes"0101"
into12592
, leaving"01"
for later directives. The sign modifiers can be used to modify the signature of the data, making"%+1c"
decode"ä"
into-28
."%n"
Returns the current character offset in
data
. Note that any characters matching fields scanned with the"!"
-modifier are removed from the count (see below)."%f"
Reads a float ("0101" makes 101.0).
"%F"
Reads a float encoded according to the IEEE single precision binary format (
"0101"
makes6.45e-10
, approximately). Given a field width modifier of 8 (4 is the default), the data will be decoded according to the IEEE double precision binary format instead. (You will however still get a float, unless your pike was compiled with the configure argument --with-double-precision.)"%s"
Reads a string. If followed by %d, %s will only read non-numerical characters. If followed by a %[], %s will only read characters not present in the set. If followed by normal text, %s will match all characters up to but not including the first occurrence of that text.
"%H"
Reads a Hollerith-encoded string, i.e. first reads the length of the string and then that number of characters. The size and byte order of the length descriptor can be modified in the same way as %c. As an example
"%2H"
first reads"%2c"
and then the resulting number of characters."%[set]"
Matches a string containing a given set of characters (those given inside the brackets). Ranges of characters can be defined by using a minus character between the first and the last character to be included in the range. Example:
%[0-9H]
means any number or 'H'. Note that sets that includes the character '-' must have it first (not possible in complemented sets, see below) or last in the brackets to avoid having a range defined. Sets including the character ']' must list this first too. If both '-' and ']' should be included then put ']' first and '-' last. It is not possible to make a range that ends with ']'; make the range end with '\' instead and put ']' at the beginning of the set. Likewise it is generally not possible to have a range start with '-'; make the range start with '.' instead and put '-' at the end of the set. If the first character after the [ bracket is '^' (%[^set]), and this character does not begin a range, it means that the set is complemented, which is to say that any character except those inside brackets is matched. To include '-' in a complemented set, it must be put last, not first. To include '^' in a non-complemented set, it can be put anywhere but first, or be specified as a range ("^-^")."%{format%}"
Repeatedly matches 'format' as many times as possible and assigns an array of arrays with the results to the lvalue.
"%O"
Match a Pike constant, such as string or integer (currently only integer, string and character constants are functional).
"%%"
Match a single percent character (hence this is how you quote the % character to just match, and not start an lvalue matcher directive).
Similar to
sprintf
, you may supply modifiers between the % character and the operator, to slightly change its behaviour from the default:"*"
The operator will only match its argument, without assigning any variable.
number
You may define a field width by supplying a numeric modifier. This means that the format should match that number of characters in the input data; be it a number characters long string, integer or otherwise (
"0101"
using the format %2c would read an unsigned short12337
, leaving the final"01"
for later operators, for instance)."-"
Supplying a minus sign toggles the decoding to read the data encoded in little-endian byte order, rather than the default network (big-endian) byte order.
"+"
Interpret the data as a signed entity. In other words,
"%+1c"
will read"\xFF"
as-1
instead of255
, as"%1c"
would have."!"
Ignore the matched characters with respect to any following
"%n"
.- Note
Sscanf does not use backtracking. Sscanf simply looks at the format string up to the next % and tries to match that with the string. It then proceeds to look at the next part. If a part does not match, sscanf immediately returns how many % were matched. If this happens, the lvalues for % that were not matched will not be changed.
- Example
// a will be assigned "oo" and 1 will be returned sscanf("foo","f%s", a);// a will be 4711 and b will be "bar", 2 will be returned sscanf("4711bar","%d%s", a, b);// a will be 4711, 2 will be returned sscanf("bar4711foo","%*s%d", a);// a will become "test", 2 will be returned sscanf(" \t test","%*[ \t]%s", a);// Remove "the " from the beginning of a string// If 'str' does not begin with "the " it will not be changed sscanf(str,"the %s", str);// It is also possible to declare a variable directly in the sscanf call;// another reason for sscanf not to be an ordinary function: sscanf("abc def","%s %s",string a,string b);
- Returns
The number of directives matched in the format string. Note that a string directive (%s or %[]) counts as a match even when matching just the empty string (which either may do).
- See also
sprintf
,array_sscanf
- Methodstrftime
string(1..255)
strftime(string(1..255)
format
,mapping
(string
:int
)tm
)- Description
Convert the structure to a string.
- %a
The abbreviated weekday name according to the current locale
- %A
The full weekday name according to the current locale.
- %b
The abbreviated month name according to the current locale.
- %B
The full month name according to the current locale.
- %c
The preferred date and time representation for the current locale.
- %C
The century number (year/100) as a 2-digit integer.
- %d
The day of the month as a decimal number (range 01 to 31).
- %D
Equivalent to
%m/%d/%y
. (for Americans only. Americans should note that in other countries%d/%m/%y
is rather common. This means that in international context this format is ambiguous and should not be used.)- %e
Like
%d
, the day of the month as a decimal number, but a leading zero is replaced by a space.- %E
Modifier: use alternative format, see below.
- %F
Equivalent to %Y-%m-%d (the ISO 8601 date format). (C99)
- %G
The ISO 8601 week-based year (see NOTES) with century as a decimal number. The 4-digit year corresponding to the ISO week number (see
%V
). This has the same format and value as%Y
, except that if the ISO week number belongs to the previous or next year, that year is used instead.- %g
Like
%G
, but without century, that is, with a 2-digit year (00-99). (TZ)- %h
Equivalent to %b.
- %H
The hour as a decimal number using a 24-hour clock (range 00 to 23).
- %I
The hour as a decimal number using a 12-hour clock (range 01 to 12).
- %j
The day of the year as a decimal number (range 001 to 366).
- %m
The month as a decimal number (range 01 to 12).
- %M
The minute as a decimal number (range 00 to 59).
- %n
A newline character. (SU)
- %O
Modifier: use alternative format, see below. (SU)
- %p
Either
"AM"
or"PM"
according to the given time value, or the corresponding strings for the current locale. Noon is treated as"PM"
and midnight as"AM"
.- %P
Like
%p
but in lowercase:"am"
or"pm"
or a corresponding string for the current locale.- %r
The time in a.m. or p.m. notation. In the POSIX locale this is equivalent to
%I:%M:%S %p
.- %R
The time in 24-hour notation (
%H:%M
). (SU) For a version including the seconds, see%T
below.- %s
The number of seconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC). (TZ)
- %S
The second as a decimal number (range 00 to 60). (The range is up to 60 to allow for occasional leap seconds.)
- %t
A tab character. (SU)
- %T
The time in 24-hour notation (
%H:%M:%S
). (SU)- %u
The day of the week as a decimal, range 1 to 7, Monday being 1. See also
%w
. (SU)- %U
The week number of the current year as a decimal number, range 00 to 53, starting with the first Sunday as the first day of week 01. See also
%V
and%W
.- %V
The ISO 8601 week number of the current year as a decimal number, range 01 to 53, where week 1 is the first week that has at least 4 days in the new year. See also
%U
and%W
.- %w
The day of the week as a decimal, range 0 to 6, Sunday being 0. See also
%u
.
- See also
ctime()
,mktime()
,strptime()
,Gettext.setlocale
- Methodstring_filter_non_unicode
string(1..)
string_filter_non_unicode(string
s
)- Description
Replace the most obviously non-unicode characters from
s
with the unicode replacement character.- Note
This will replace characters outside the ranges
0x00000000-0x0000d7ff
and0x0000e000-0x0010ffff
with 0xffea (the replacement character).- See also
Charset.encoder()
,string_to_unicode()
,unicode_to_string()
,utf8_to_string()
,string_to_utf8()
- Methodstring_to_unicode
string(8bit)
string_to_unicode(string
s
,int(0..2)
|void
byteorder
)- Description
Converts a string into an UTF16 compliant byte-stream.
- Parameter
s
String to convert to UTF16.
- Parameter
byteorder
Byte-order for the output. One of:
0
Network (aka big-endian) byte-order (default).
1
Little-endian byte-order.
2
Native byte-order.
- Note
Throws an error if characters not legal in an UTF16 stream are encountered. Valid characters are in the range 0x00000 - 0x10ffff, except for characters 0xfffe and 0xffff.
Characters in range 0x010000 - 0x10ffff are encoded using surrogates.
- See also
Charset.decoder()
,string_to_utf8()
,unicode_to_string()
,utf8_to_string()
- Methodstring_to_utf8
utf8_string
string_to_utf8(string
s
)utf8_string
string_to_utf8(string
s
,int
extended
)- Description
Convert a string into a UTF-8 compliant byte-stream.
- Parameter
s
String to encode into UTF-8.
- Parameter
extended
Bitmask with extension options.
1
Accept and encode the characters outside the valid ranges using the same algorithm. Such encoded characters are however not UTF-8 compliant.
2
Encode characters outside the BMP with UTF-8 encoded UTF-16 (ie split them into surrogate pairs and encode).
- Note
Throws an error if characters not valid in an UTF-8 stream are encountered. Valid characters are in the ranges
0x00000000-0x0000d7ff
and0x0000e000-0x0010ffff
.- See also
Charset.encoder()
,string_to_unicode()
,unicode_to_string()
,utf8_to_string()
- Methodstringp
int
stringp(mixed
arg
)- Description
Returns
1
ifarg
is a string,0
(zero) otherwise.- See also
intp()
,programp()
,arrayp()
,multisetp()
,objectp()
,mappingp()
,floatp()
,functionp()
- Methodstrptime
mapping
(string
:int
) strptime(string(1..255)
data
,string(1..255)
format
)- Description
Parse the given
data
using the format informat
as a date.- %%
The % character.
- %a or %A
The weekday name according to the C locale, in abbreviated form or the full name.
- %b or %B or %h
The month name according to the C locale, in abbreviated form or the full name.
- %c
The date and time representation for the C locale.
- %C
The century number (0-99).
- %d or %e
The day of month (1-31).
- %D
Equivalent to %m/%d/%y.
- %H
The hour (0-23).
- %I
The hour on a 12-hour clock (1-12).
- %j
The day number in the year (1-366).
- %m
The month number (1-12).
- %M
The minute (0-59).
- %n
Arbitrary whitespace.
- %p
The C locale's equivalent of AM or PM.
- %R
Equivalent to %H:%M.
- %S
The second (0-60; 60 may occur for leap seconds; earlier also 61 was allowed).
- %t
Arbitrary whitespace.
- %T
Equivalent to %H:%M:%S.
- %U
The week number with Sunday the first day of the week (0-53).
- %w
The weekday number (0-6) with Sunday = 0.
- %W
The week number with Monday the first day of the week (0-53).
- %x
The date, using the C locale's date format.
- %X
The time, using the C locale's time format.
- %y
The year within century (0-99). When a century is not otherwise specified, values in the range 69-99 refer to years in the twentieth century (1969-1999); values in the range 00-68 refer to years in the twenty-first century (2000-2068).
- %Y
The year, including century (for example, 1991).
- See also
localtime()
,gmtime()
,strftime()
- Methodtan
float
tan(int
|float
f
)- Description
Returns the tangent value for
f
.f
should be specified in radians.- See also
atan()
,sin()
,cos()
- Methodtanh
float
tanh(int
|float
f
)- Description
Returns the hyperbolic tangent value for
f
.- See also
atanh()
,sinh()
,cosh()
- Methodthis_object
object
this_object(void
|int
level
)- Description
Returns the object we are currently evaluating in.
- Parameter
level
level
may be used to access the object of a surrounding class: The object at level 0 is the current object, the object at level 1 is the one belonging to the class that surrounds the class that the object comes from, and so on.- Note
As opposed to a qualified
this
reference such asglobal::this
, this function doesn't always access the objects belonging to the lexically surrounding classes. If the class containing the call has been inherited then the objects surrounding the inheriting class are accessed.
- Methodthread_local
Thread.Local
thread_local()- Returns
Returns
Thread.Local()
.This is primarily intended as a convenience function and detection symbol for use by the master before the module system has been fully initiated.
- See also
Thread.Local
- Methodthrow
mixed
|void
throw(mixed
value
)- Description
Throw
value
to a waitingcatch
.If no
catch
is waiting the global error handling will send the value tomaster()->handle_error()
.If you throw an array with where the first index contains an error message and the second index is a backtrace, (the output from
backtrace()
) then it will be treated exactly like a real error by overlying functions.- See also
catch
- Methodtime
int
time()int
time(int(1)
one
)float
time(int(2..)
t
)- Description
This function returns the number of seconds since 00:00:00 UTC, 1 Jan 1970.
The second syntax does not query the system for the current time, instead the last time value used by the pike process is returned again. It avoids a system call, and thus is slightly faster, but can be wildly inaccurate. Pike queries the time internally when a thread has waited for something, typically in
sleep
or in a backend (seePike.Backend
).The third syntax can be used to measure time more precisely than one second. It returns how many seconds have passed since
t
. The precision of this function varies from system to system.- See also
ctime()
,localtime()
,mktime()
,gmtime()
,System.gettimeofday()
,gethrtime()
- Methodualarm
int
ualarm(int
useconds
)- Description
Set an alarm clock for delivery of a signal.
alarm()
arranges for a SIGALRM signal to be delivered to the process inuseconds
microseconds.If
useconds
is0
(zero), no new alarm will be scheduled.Any previous alarms will in any case be canceled.
- Returns
Returns the number of microseconds remaining until any previously scheduled alarm was due to be delivered, or zero if there was no previously scheduled alarm.
- Note
This function is only available on platforms that support signals.
- See also
alarm()
,signal()
,call_out()
- Methodunicode_to_string
string
unicode_to_string(string(8bit)
s
,int(0..2)
|void
byteorder
)- Description
Converts an UTF16 byte-stream into a string.
- Parameter
s
String to convert to UTF16.
- Parameter
byteorder
Default input byte-order. One of:
0
Network (aka big-endian) byte-order (default).
1
Little-endian byte-order.
2
Native byte-order.
Note that this argument is disregarded if
s
starts with a BOM.- See also
Charset.decoder()
,string_to_unicode()
,string_to_utf8()
,utf8_to_string()
- Methodupper_case
string
upper_case(string
s
)int
upper_case(int
c
)- Description
Convert a string or character to upper case.
- Returns
Returns a copy of the string
s
with all lower case characters converted to upper case, or the characterc
converted to upper case.- Note
Assumes the string or character to be coded according to ISO-10646 (aka Unicode). If they are not,
Charset.decoder
can do the initial conversion for you.- Note
Prior to Pike 7.5 this function only accepted strings.
- See also
lower_case()
,Charset.decoder
- Methodutf8_to_string
string
utf8_to_string(utf8_string
s
)string
utf8_to_string(utf8_string
s
,int
extended
)- Description
Converts an UTF-8 byte-stream into a string.
- Parameter
s
String of UTF-8 encoded data to decode.
- Parameter
extended
Bitmask with extension options.
1
Accept and decode the extension used by
string_to_utf8()
.2
Accept and decode UTF-8 encoded UTF-16 (ie accept and decode valid surrogates).
- Note
Throws an error if the stream is not a legal UTF-8 byte-stream.
- Note
In conformance with RFC 3629 and Unicode 3.1 and later, non-shortest forms are not decoded. An error is thrown instead.
- See also
Charset.encoder()
,string_to_unicode()
,string_to_utf8()
,unicode_to_string()
,validate_utf8()
- Methodvalidate_utf8
bool
validate_utf8(utf8_string
s
)bool
validate_utf8(utf8_string
s
,int
extended
)- Description
Checks whether a string is a valid UTF-8 byte-stream.
- Parameter
s
String of UTF-8 encoded data to validate.
- Parameter
extended
Bitmask with extension options.
1
Accept the extension used by
string_to_utf8()
, including lone UTF-16 surrogates.2
Accept UTF-8 encoded UTF-16 (ie accept valid surrogate-pairs).
- Returns
Returns
0
(zero) if the stream is not a legal UTF-8 byte-stream, and1
if it is.- Note
In conformance with RFC 3629 and Unicode 3.1 and later, non-shortest forms are considered invalid.
- See also
Charset.encoder()
,string_to_unicode()
,string_to_utf8()
,unicode_to_string()
,utf8_to_string()
- Methodwerror
int
werror(string
fmt
,mixed
...args
)- Description
Writes a string on stderr. Works just like
Stdio.File.write
onStdio.stderr
.
- Methodwrite
int
write(string
fmt
,mixed
...args
)- Description
Writes a string on stdout. Works just like
Stdio.File.write
onStdio.stdout
.
- Methodyield
mixed
yield(mixed
|void
val
)- Description
Stop execution of the current restartable function for now, and return the value
val
.- Parameter
val
Value to be returned from the restartable function.
May be omitted in functions returning
void
(including asynchronous functions). For asynchronous functions this means thatConcurrent.Promise()->success()
in the implicitConcurrent.Promise
will not be called.- Returns
Evaluates to the first argument passed to the restartable function on restart, or if it has already been called, the value passed at that time.
Calling this special form is similar to the statement:
continue return val;
This syntax is however an expression and can thus be used to pass a value back.
- Note
Use of this function is only valid in restartable functions.
- Throws
The second argument to a restartable function may be a function that throws a value. That value will appear to have been thrown via
yield()
.- See also
await()
, Restartable functions
Class Codec
- Description
An
Encoder
and aDecoder
lumped into a single instance which can be used for both encoding and decoding.
Class CompilationHandler
- Description
Objects used by the compiler to handle references to global symbols, modules, external files, etc.
There can be up to three compilation handlers active at the same time during a compilation. They are in order of precedence:
The error handler
This is the object passed to
compile()
as the second argument (if any). This object is returned byget_active_error_handler()
during a compilation.The compatibility handler
This is the object returned by
master()->get_compilation_handler()
(if any), which the compiler calls when it sees #pike-directives, or expressions using the version scope (eg7.4::rusage
). This object is returned byget_active_compilation_handler()
during a compilation.The master object.
This is returned by
master()
at any time.
Any of the objects may implement a subset of the
CompilationHandler
functions, and the first object that implements a function will be used. The error handler object can thus be used to block certain functionality (eg to restrict the number of available functions).- See also
master()->get_compilation_handler()
,get_active_error_handler()
,get_active_compilation_handler()
,compile()
- Methodcompile_error
void
compile_error(string
filename
,int
line
,string
msg
)- Description
Called by
compile()
andcpp()
when they encounter errors in the code they compile.- Parameter
filename
File where the error was detected.
- Parameter
line
Line where the error was detected.
- Parameter
msg
Description of error.
- See also
compile_warning()
.
- Methodcompile_exception
void
compile_exception(mixed
exception
)- Description
Called by
compile()
andcpp()
if they trigger exceptions.
- Methodcompile_warning
void
compile_warning(string
filename
,int
line
,string
msg
)- Description
Called by
compile()
to report warnings.- Parameter
filename
File which triggered the warning.
- Parameter
line
Line which triggered the warning.
- Parameter
msg
Warning message.
- See also
compile_error()
- Methodget_default_module
mapping
(string
:mixed
)|object
get_default_module()- Description
Returns the default module from which global symbols will be fetched.
- Returns
Returns the default module, or
0
(zero).If
0
(zero) is returned the compiler use the mapping returned byall_constants()
as fallback.- See also
get_predefines()
- Methodget_predefines
mapping
(string
:mixed
) get_predefines()- Description
Called by
cpp()
to get the set of global symbols.- Returns
Returns a mapping from symbol name to symbol value. Returns zero on failure.
- See also
resolv()
,get_default_module()
- Methodhandle_import
mapping
(string
:mixed
)|object
|program
|zero
handle_import(string
path
,string
filename
,CompilationHandler
handler
)- Description
Called by
compile()
andcpp()
to handle import directives specifying specific paths.- Returns
Returns the resolved value, or
UNDEFINED
on failure.- See also
resolv()
- Methodhandle_include
string
handle_include(string
header_file
,string
current_file
,bool
is_local_ref
)- Description
Called by
cpp()
to resolv#include
and#string
directives.- Parameter
header_file
File that was requested for inclusion.
- Parameter
current_file
File where the directive was found.
- Parameter
is_local_ref
Specifies reference method.
0
Directive was
#include <header_file>
.1
Directive was
#include "header_file"
.- Returns
Returns the filename to pass to
read_include()
if found, and0
(zero) on failure.- See also
read_include()
- Methodread_include
string
read_include(string
filename
)- Description
Called by
cpp()
to read included files.- Parameter
filename
Filename as returned by
handle_include()
.- Returns
Returns a string with the content of the header file on success, and
0
(zero) on failure.- See also
handle_include()
Class CompilerEnvironment
- Description
predef::CompilerEnvironment
that supports handlers.The compiler environment.
By inheriting this class and overloading the functions, it is possible to make a custom Pike compiler.
- Note
Prior to Pike 7.8 this sort of customization has to be done either via custom master objects, or via
CompilationHandler
s.- See also
CompilationHandler
,MasterObject
,master()
,replace_master()
- InheritReporter
inherit Reporter : Reporter
- Description
Implements the
Reporter
API.- See also
Reporter()->report()
,Reporter()->SeverityLevel
- Methodcompile
program
compile(string
source
,CompilationHandler
|void
handler
,int
|void
major
,int
|void
minor
,program
|void
target
,object
|void
placeholder
)- Description
Compile a string to a program.
This function takes a piece of Pike code as a string and compiles it into a clonable program.
The optional argument
handler
is used to specify an alternative error handler. If it is not specified the current master object will be used.The optional arguments
major
andminor
are used to tell the compiler to attempt to be compatible with Pikemajor
.minor
.- Note
This function essentially performs
program compile(mixed ... args){return PikeCompiler(@args)->compile();}
- Note
Note that
source
must contain the complete source for a program. It is not possible to compile a single expression or statement.Also note that
compile()
does not preprocess the program. To preprocess the program you can usecompile_string()
or call the preprocessor manually by callingcpp()
.- See also
compile_string()
,compile_file()
,cpp()
,master()
,CompilationHandler
- Methodget_compilation_handler
object
get_compilation_handler(int
major
,int
minor
)- Description
Get compatibility handler for Pike
major
.minor
.The default implementation calls the corresponding function in the master object.
- Note
This function is typically called by
PikeCompiler()->get_compilation_handler()
.- See also
MasterObject()->get_compilation_handler()
.
- Methodget_default_module
mapping
(string
:mixed
)|object
get_default_module()- Description
Get the default module for the current compatibility level (ie typically the value returned by
predef::all_constants()
).The default implementation calls the corresponding function in the master object.
- Returns
mapping
(string
:mixed
)|object
Constant table to use.
int(0)
Use the builtin constant table.
- Note
This function is typically called by
Pike_compiler()->get_default_module()
.- See also
MasterObject()->get_default_module()
.
- Methodhandle_import
program
handle_import(string
module
,string
current_file
,object
|void
handler
)- Description
Look up an import
module
.The default implementation calls the corresponding function in the master object.
- See also
MasterObject()->handle_import()
.
- Methodhandle_inherit
program
handle_inherit(string
inh
,string
current_file
,object
|void
handler
)- Description
Look up an inherit
inh
.The default implementation calls the corresponding function in the master object.
- See also
MasterObject()->handle_inherit()
.
- Methodresolv
mixed
resolv(string
identifier
,string
filename
,object
|void
handler
,object
|void
compat_handler
)- Description
Look up
identifier
in the current context.The default implementation calls the corresponding function in the handlers (if any), falling back to the master object.
- Returns
Returns the value of the
identifier
if found, andUNDEFINED
if not.
Class CompilerEnvironment.CPP
- Description
The state for an instance of the preprocessor.
- See also
predef::cpp()
- Variablehandler
Variablecompat_handler CompilationHandler
CompilerEnvironment.CPP.handlerCompilationHandler
CompilerEnvironment.CPP.compat_handler
- Methodchange_cpp_compatibility
void
change_cpp_compatibility(int
major
,int
minor
)- Description
Change the pike compatibility level for this preprocessor to the specified version of Pike.
- Parameter
major
Major version of Pike to attempt to be compatible with. Specifying a major version of
-1
is a short hand for specifying__REAL_MAJOR__
and__REAL_MINOR__
.- Parameter
minor
Minor version of Pike to attempt to be compatible with.
This function is called by the preprocessor to set the compatibility level.
The default implementation performs some normalization, and then sets
compat_major
andcompat_minor
to their respective values (which in turn affects symbols such as__MAJOR__
and__MINOR__
).
- Methodclear_macros
void
clear_macros()- Description
Clear the set of macros.
It is recomended to call this function when the
CPP
object is no longer to be used.- See also
define_macro()
- Methodcpp_error
void
cpp_error(sprintf_format
msg
,sprintf_args
...arguments
)- Description
Convenience function for reporting a cpp error at the current position.
This function calls
report()
with the same arguments, but prefixed with suitable defaults.- See also
report()
- Methodcreate
CompilerEnvironment.CPPCompilerEnvironment.CPP(
string
|void
current_file
,int
|string
|void
charset
,object
|void
handler
,void
|int
compat_major
,void
|int
compat_minor
,void
|int
picky_cpp
)CompilerEnvironment.CPPCompilerEnvironment.CPP(
mapping
(string
:mixed
)options
)- Description
Initialize the preprocessor.
- Parameter
options
If the first argument is a mapping, no other arguments may follow. Instead, they have to be given as members of the mapping (if wanted). The following members are then recognized:
"current_file"
:string
Name of the current file. It is used for generating #line directives and for locating include files.
"charset"
:int
|string
Charset to use when processing
data
."handler"
:object
Compilation handler.
"compat_major"
:int
Sets the major pike version used for compat handling.
"compat_minor"
:int
Sets the minor pike version used for compat handling.
"picky_cpp"
:int
Generate more warnings.
"keep_comments"
:int
This option keeps
cpp()
from removing comments. Useful in combination with the prefix feature below."prefix"
:string
If a prefix is given, only prefixed directives will be processed. For example, if the prefix is
"foo"
, then#foo_ifdef COND
andfoo___LINE__
would be processed,#ifdef COND
and__LINE__
would not."predefines"
:mapping
(string
:mixed
)Mapping of predefined macros in addition to those returned by
CPP()->get_predefines()
.- Parameter
current_file
If the
current_file
argument has not been specified, it will default to"-"
.- Parameter
charset
Turn on automatic character set detection if
1
, otherwise specifies the character set used by the input. Defaults to"ISO-10646"
.- See also
compile()
- Methodcreate
CompilerEnvironment.CPPCompilerEnvironment.CPP(
string
|void
current_file
,int
|string
|void
charset
,CompilationHandler
|void
handler
,void
|int
compat_major
,void
|int
compat_minor
,void
|int
picky_cpp
)CompilerEnvironment.CPPCompilerEnvironment.CPP(
mapping
(string
:mixed
)options
)- Description
Initialize the preprocessor.
- Parameter
options
If the first argument is a mapping, no other arguments may follow. Instead, they have to be given as members of the mapping (if wanted). The following members are then recognized:
"current_file"
:string
Name of the current file. It is used for generating #line directives and for locating include files.
"charset"
:int
|string
Charset to use when processing
data
."handler"
:CompilationHandler
Compilation handler.
"compat_major"
:int
Sets the major pike version used for compat handling.
"compat_minor"
:int
Sets the minor pike version used for compat handling.
"picky_cpp"
:int
Generate more warnings.
"keep_comments"
:int
This option keeps
cpp()
from removing comments. Useful in combination with the prefix feature below."prefix"
:string
If a prefix is given, only prefixed directives will be processed. For example, if the prefix is
"foo"
, then#foo_ifdef COND
andfoo___LINE__
would be processed,#ifdef COND
and__LINE__
would not.- Parameter
current_file
If the
current_file
argument has not been specified, it will default to"-"
.- Parameter
charset
Turn on automatic character set detection if
1
, otherwise specifies the character set used by the input. Defaults to"ISO-10646"
.- See also
compile()
- Methoddefine_ansi_macros
void
define_ansi_macros()- Description
Adds some cpp macros defined by the ANSI-C standards, such as
__FILE__
,__LINE__
, etc.- See also
define_macro()
,define_pike_macros()
- Methoddefine_macro
void
define_macro(string
name
,string
|object
|array
|function
(:void
)|void
value
,int(-1..)
|void
numargs
,int(2bit)
|void
flags
)- Description
Define a cpp macro.
- Parameter
name
Name of macro to define. Ending the name with
"()"
changes the defaults fornumargs
andflags
to0
and3
respectively.- Parameter
value
Macro definition. Defaults to
"1"
.- Parameter
numargs
Number of required arguments to a function-style macro.
-1
indicates not function-style. Defaults to-1
.- Parameter
flags
Bit-wise or of flags affecting the macro behavior:
1
Function style macro with a variable number of arguments. Invalid if
numargs
is-1
.2
Keep newlines emitted by the macro.
Defaults to
0
.- See also
define_multiple_macros()
- Methoddefine_multiple_macros
void
define_multiple_macros(mapping
(string
:string
|function
(:void
)|object
|array
(string
|int
))|void
predefs
)- Description
Define multiple macros in one operation.
- Parameter
predefs
Macros to define.
- Note
The values
predefs
mapping may get updated by the function in order to improve performance of a second call.- See also
define_macro()
,CompilationHandler()->get_predefines()
,_take_over_initial_predefines()
- Methoddefine_pike_macros
void
define_pike_macros()- Description
Adds some pike-specific cpp macros, such as
__DIR__
,__VERSION__
, [__PIKE__], etc.- See also
define_macro()
,define_ansi_macros()
- Methodformat_exception
string
format_exception(mixed
err
)- Description
Format an exception caught by cpp as a suitable cpp error message.
- Parameter
err
Caught value.
- Returns
Returns one of:
zero
Generate a cpp error using the default format (ie call
master()->describe_error()
, and replace any newlines with spaces).string
Cpp error message to
report()
. The empty string supresses the cpp error.The default implementation just returns
0
.
- Methodget_predefines
mapping
(string
:string
|function
(:void
)|object
|array
(string
|int
)) get_predefines()- Description
Get the predefined macros for this preprocessor.
This function is called by
init_pike_cpp()
to retrieve the set of macros to define at initialization.The default implementation returns the internal set of predefined macros unless
_take_over_initial_predefines()
has been called, in which case it instead calls the corresponding function in the master.- Note
This function does NOT return the set of currently defined macros.
- See also
init_pike_cpp()
,define_multiple_macros()
,_take_over_initial_predefines()
- Methodinit_pike_cpp
void
init_pike_cpp()- Description
Convenience function for initializing the preprocessor to Pike defaults.
The default implementation is essentially:
{ define_ansi_macros(); define_pike_macros(); define_multiple_macros(get_predefines());}
- Methodreport
void
report(SeverityLevel
severity
,string
filename
,int(1..)
linenumber
,string
subsystem
,sprintf_format
message
,sprintf_args
...extra_args
)- Description
Report a diagnostic from the preprocessor.
- Parameter
severity
The severity of the diagnostic.
- Parameter
filename
- Parameter
linenumber
Location which triggered the diagnostic.
- Parameter
subsystem
Typically
"cpp"
.- Parameter
message
String with the diagnostic message, with optional
sprintf()
-style formatting (if anyextra_args
).- Parameter
extra_args
Extra arguments to
sprintf()
.The default implementation does the following:
If there's a handler which implements
Reporter()->report()
, call it with the same arguments.Otherwise if there's a handler which implements
compile_warning()
orcompile_error()
that matchesseverity
, call it with suitable arguments.Otherwise if there's a compat handler, use it in the same manner as the handler.
Otherwise fall back to calling
::report()
with the same arguments.
- Note
In Pike 8.0 and earlier
MasterObject()->report()
was not called.- See also
Reporter()->report()
- Methodreport
void
report(SeverityLevel
severity
,string
filename
,int(1..)
linenumber
,string
subsystem
,string
message
,mixed
...extra_args
)- Description
Report a diagnostic from the preprocessor.
- Parameter
severity
The severity of the diagnostic.
- Parameter
filename
- Parameter
linenumber
Location which triggered the diagnostic.
- Parameter
subsystem
Always
"cpp"
.- Parameter
message
String with the diagnostic message, with optional
sprintf()
-style formatting (if anyextra_args
).- Parameter
extra_args
Extra arguments to
sprintf()
.The default implementation just calls
CompilerEnviroment::report()
in the parent with the same arguments.- See also
Reporter()->report()
,cpp_error()
Class CompilerEnvironment.PikeCompiler
- Description
The Pike compiler.
An object of this class compiles a single string of Pike code.
- Variablehandler
Variablecompat_handler CompilationHandler
CompilerEnvironment.PikeCompiler.handlerCompilationHandler
CompilerEnvironment.PikeCompiler.compat_handler
- Variablecurrent_file
string
CompilerEnvironment.PikeCompiler.current_file- Description
The name of the file currently being compiled (during an active compilation).
- Variablecurrent_line
int
CompilerEnvironment.PikeCompiler.current_line- Description
The current line number (during an active compilation).
- Methodapply_attribute_constant
type
apply_attribute_constant(string
attr
,mixed
value
,type
arg_type
,void
cont_type
,mapping
state
)- Description
Handle constant arguments to attributed function argument types.
- Parameter
attr
Attribute that
arg_type
had.- Parameter
value
Constant value sent as parameter.
- Parameter
arg_type
Declared type of the function argument.
- Parameter
cont_type
Continuation function type after the current argument.
- Parameter
state
Mapping intended to hold state during checking of multiple arguments.
This function is called when a function is called with the constant value
value
and it has been successfully matched againstarg_type
, andarg_type
had the type attributeattr
.This function is typically used to perform specialized argument checking and to allow for a strengthening of the function type based on
value
.The default implementation handles the following attributes:
This marks the arguments to
sprintf()
.These mark arguments that will be sent as the first argument to
sprintf()
.This marks the return value for
sprintf()
.These mark arguments that will be sent as the second argument to
sscanf()
.This is the input for
sscanf()
.
sprintf_args
sprintf_format
andstrict_sprintf_format
sprintf_result
sscanf_format
andsscanf_76_format
sscanf_input
- Returns
Returns a continuation type if it succeeded in strengthening the type.
Returns UNDEFINED otherwise (this is not an error indication).
- See also
pop_type_attribute()
,push_type_attribute()
- Methodapply_type_attribute
bool
apply_type_attribute(string
attribute
,type
a
,mapping
|void
state
)- Description
Type attribute handler.
- Parameter
attribute
Attribute that
a
had.- Parameter
a
Continuation of the function being called or
UNDEFINED
indicating that there are no further arguments.- Parameter
state
Mapping intended to hold state during checking of multiple arguments.
Called during type checking when there has been successfull partial evaluation of a function type that had the type attribute
attribute
before the evaluation.The default implementation implements the attributes:
__deprecated__
__experimental__
- Returns
Returns
1
if the type check should be allowed (ie__attribute__(attribute, a)(b)
) is valid, and0
(zero) otherwise.- See also
pop_type_attribute()
,push_type_attribute()
- Methodchange_compiler_compatibility
void
change_compiler_compatibility(int
major
,int
minor
)- Description
Change compiler to attempt to be compatible with Pike
major
.minor
.
- Methodcompile
program
compile()- Description
Compile the current source into a program.
This function compiles the current Pike source code into a clonable program.
- See also
compile_string()
,compile_file()
,cpp()
,master()
,CompilationHandler
,create()
- Methodcreate
CompilerEnvironment.PikeCompilerCompilerEnvironment.PikeCompiler(
string
|void
source
,CompilationHandler
|void
handler
,int
|void
major
,int
|void
minor
,program
|void
target
,object
|void
placeholder
)- Description
Create a PikeCompiler object for a source string.
This function takes a piece of Pike code as a string and initializes a compiler object accordingly.
- Parameter
source
Source code to compile.
- Parameter
handler
The optional argument
handler
is used to specify an alternative error handler. If it is not specified the current master object at compile time will be used.- Parameter
major
- Parameter
minor
The optional arguments
major
andminor
are used to tell the compiler to attempt to be compatible with Pikemajor
.minor
.- Parameter
target
__empty_program()
program to fill in. The virgin program returned by__empty_program()
will be modified and returned bycompile()
on success.- Parameter
placeholder
__null_program()
placeholder object to fill in. The object will be modified into an instance of the resulting program on successfull compile. Note thatlfun::create()
in the program will be called without any arguments.- Note
Note that
source
must contain the complete source for a program. It is not possible to compile a single expression or statement.Also note that no preprocessing is performed. To preprocess the program you can use
compile_string()
or call the preprocessor manually by callingcpp()
.- Note
Note that all references to
target
andplaceholder
should removed ifcompile()
failes. On failure theplaceholder
object will be destructed.- See also
compile_string()
,compile_file()
,cpp()
,master()
,CompilationHandler
- Methodget_compilation_handler
object
get_compilation_handler(int
major
,int
minor
)- Description
Get compatibility handler for Pike
major
.minor
.- Note
This function is called by
change_compiler_compatibility()
.
- Methodget_default_module
mapping
(string
:mixed
)|object
get_default_module()- Description
Get the default module for the current compatibility level (ie typically the value returned by
predef::all_constants()
).The default implementation calls the corresponding function in the current handler, the current compatibility handler or in the parent
CompilerEnvironment
in that order.- Returns
mapping
(string
:mixed
)|object
Constant table to use.
int(0)
Use the builtin constant table.
- Note
This function is called by
change_compiler_compatibility()
.
- Methodhandle_inherit
program
handle_inherit(string
inh
)- Description
Look up an inherit
inh
in the current program.
- Methodindex_type_attribute
bool
index_type_attribute(string
attribute
,type
a
,type
i
)- Description
Type attribute handler.
Called during type checking when a value of the type
a
is indexed with a value of typei
anda
had the type attributeattribute
before the comparison.The default implementation implements the
"deprecated"
and"experimental"
attributes.- Returns
Returns
1
if the type check should be allowed (ie__attribute__(attribute, a)[i]
), and0
(zero) otherwise.- See also
pop_type_attribute()
,push_type_attribute()
- Methodpop_type_attribute
bool
|type
pop_type_attribute(string
attribute
,type
a
,type
b
,mapping
|void
state
)- Description
Type attribute handler.
Called during type checking when
a <= b
anda
had the type attributeattribute
before the comparison.The default implementation implements the
"deprecated"
and"experimental"
attributes.- Returns
Returns one of:
type
An alternative type for
a
against whichb
will be matched again.int(1)
Allow the check (ie
__attribute__(attribute, a) <= b
).int(0)
Do not allow the check.
- See also
push_type_attribute()
,index_type_attribute()
- Methodpush_type_attribute
bool
|type
push_type_attribute(string
attribute
,type
a
,type
b
,mapping
|void
state
)- Description
Type attribute handler.
Called during type checking when
a <= b
andb
had the type attributeattribute
before the comparison.The default implementation implements the
"deprecated"
and"experimental"
attributes.- Returns
Returns one of:
type
An alternative type for
b
against whicha
will be matched again.int(1)
Allow the check (ie
a <= __attribute__(attribute, b)
).int(0)
Do not allow the check.
- See also
pop_type_attribute()
,index_type_attribute()
- Methodreport
void
report(SeverityLevel
severity
,string
filename
,int
linenumber
,string
subsystem
,string
message
,mixed
...extra_args
)- Description
Report a diagnostic from the compiler.
The default implementation attempts to call the first corresponding function in the active handlers in priority order:
Call handler->report().
Call handler->compile_warning() or handler->compile_error() depending on
severity
.Call compat->report().
Call compat->compile_warning() or compat->compile_error() depending on
severity
.Fallback: Call
CompilerEnvironment()->report()
in the parent object.
The arguments will be as follows:
- report()
The report() function will be called with the same arguments as this function.
- compile_warning()/compile_error()
Depending on the
severity
either compile_warning() or compile_error() will be called.They will be called with the
filename
,linenumber
and formattedmessage
as arguments.Note that these will not be called for the
NOTICE
severity, and that compile_error() will be used for bothERROR
andFATAL
.
- Note
In Pike 7.8 and earlier the report() function was not called in the handlers.
- See also
CompilerEnvironment()->report()
- Methodresolv
mixed
resolv(string
identifier
)- Description
Resolve the symbol
identifier
.The default implementation calls
CompilerEnvironment()->resolv()
in the parent object, with the remaining arguments taken from the currentPikeCompiler
context.- Returns
Returns the value of
sym
if found, andUNDEFINED
if not.
- Methodsuppress_deprecation_warnings
int(0..2)
suppress_deprecation_warnings()- Description
Allows to query whether (during an active compilation) deprecation and experimental warnings are supposed to be suppressed.
- Returns
2
if deprecation and experimental warnings should be suppressed,1
if experimental warnings should be suppressed,0
otherwise.
Class CompilerEnvironment.PikeCompiler.CompilerState
- Description
Keeps the state of a single program/class during compilation.
- Note
Not in use yet!
Class CompilerEnvironment.define
Class CompilerEnvironment.lock
- Description
This class acts as a lock against other threads accessing the compiler.
The lock is released when the object is destructed.
Class Decoder
- Description
Codec used by
decode_value()
to decode objects, functions and programs which have been encoded byEncoder.nameof
in the correspondingEncoder
object.
- Method__register_new_program
object
__register_new_program(program
p
)- Description
Called to register the program that is being decoded. Might get called repeatedly with several other programs that are being decoded recursively. The only safe assumption is that when the top level thing being decoded is a program, then the first call will be with the unfinished embryo that will later become that program.
- Returns
Returns either zero or a placeholder object. A placeholder object must be a clone of
__null_program
. When the program is finished, the placeholder object will be converted to a clone of it. This is used for pike module objects.
- Methodfunctionof
function
(:void
) functionof(string
data
)- Description
Decode function encoded in
data
.This function is called by
decode_value()
when it encounters encoded functions.- Parameter
data
Encoding of some function as returned by
Encoder.nameof()
.- Returns
Returns the decoded function.
- See also
objectof()
,programof()
- Methodobjectof
object
objectof(string
data
)- Description
Decode object encoded in
data
.This function is called by
decode_value()
when it encounters encoded objects.- Parameter
data
Encoding of some object as returned by
Encoder.nameof()
.- Returns
Returns the decoded object.
- See also
functionof()
,programof()
- Methodprogramof
program
programof(string
data
)- Description
Decode program encoded in
data
.This function is called by
decode_value()
when it encounters encoded programs.- Parameter
data
Encoding of some program as returned by
Encoder.nameof()
.- Returns
Returns the decoded program.
- See also
functionof()
,objectof()
Class Encoder
- Description
Codec used by
encode_value()
to encode objects, functions and programs. Its purpose is to look up some kind of identifier for them, so they can be mapped back to the corresponding instance bydecode_value()
, rather than creating a new copy.
- Methodnameof
mixed
nameof(object
|function
(:void
)|program
x
)- Description
Called by
encode_value()
to encode objects, functions and programs.- Returns
Returns something encodable on success, typically a string. The returned value will be passed to the corresponding
objectof()
,functionof()
orprogramof()
bydecode_value()
.If it returns
UNDEFINED
thenencode_value
starts to encode the thing recursively, so thatdecode_value
later will rebuild a copy.- Note
encode_value()
has fallbacks for some classes of objects, functions and programs.- See also
Decoder.objectof()
,Decoder.functionof()
,Decoder.objectof()
Class Iterator
- Description
This is the interface for iterator objects. They implement an interface to a collection or stream of data items and a cursor that can be used to iterate over and examine individual items in the data set.
Iterators are typically created to access a data set in some specific object, array, mapping, multiset or string. An object can have several iterators that access different data sets in it, or the same in different ways. E.g. strings have both an iterator for access char-by-char (
String.Iterator
), and another for access over splitted substrings (String.SplitIterator
).lfun::_get_iterator
may be defined in an object to get an instance of the canonical iterator type for it. It's used by e.g.foreach
to iterate over objects conveniently.It's not an error to advance an iterator past the beginning or end of the data set;
_iterator_index
and_iterator_value
will just returnUNDEFINED
then. An iterator in that state need not keep track of positions, so it's undefined what happens if it's "moved back" into the set of items.Backward movement for iterators is currently not supported.
- See also
predef::get_iterator
,lfun::_get_iterator
,Array.Iterator
,Mapping.Iterator
,Multiset.Iterator
,String.Iterator
,String.SplitIterator
,8.0::Iterator
.
- Method_iterator_index
optional
protected
mixed
_iterator_index()- Description
Returns the current index, or
UNDEFINED
if the iterator doesn't point to any item.If there's no obvious index set then the index is the current position in the data set, counting from
0
(zero).- See also
_iterator_value()
,lfun::_iterator_index()
,iterator_index()
- Method_iterator_next
protected
mixed
_iterator_next()- Description
This function advances the iterator one step.
- Note
This is the only function that is required in the Pike 9.0 and later iterator API. Presence of this function indicates that the iterator implements the Pike 9.0 API.
- Returns
Returns
UNDEFINED
if there are no more values in the set of elements. It may return any other value if it succeeded in advancing to a new element. The returned value is used as the result for_iterator_index()
and_iterator_value()
if they are not implemented.- See also
_iterator_prev()
,lfun::_iterator_next()
,iterator_next()
,_iterator_index()
,_iterator_value()
- Method_iterator_prev
optional
protected
mixed
_iterator_prev()- Description
This function advances the iterator one step backwards.
- Returns
Returns
UNDEFINED
if there are no more values in the set of elements. It may return any other value if it succeeded in advancing to the previous element. The returned value may be used as the result for_iterator_index()
and_iterator_value()
if they are not implemented.- See also
_iterator_next()
,lfun::_iterator_prev()
,iterator_prev()
,_iterator_index()
,_iterator_value()
- Method_iterator_value
optional
protected
mixed
_iterator_value()- Description
Returns the current value, or
UNDEFINED
if the iterator doesn't point to any item.- See also
_iterator_index()
,lfun::_iterator_value()
,iterator_value()
- Method_random
void
random(Iteratorarg)- Description
If this function is defined then it sets the iterator to point to before a random item in the accessible set. The random distribution should be rectangular within that set, and the pseudorandom sequence provided by
random
should be used.- See also
random()
- Method_sizeof
int
sizeof(Iteratorarg)- Description
Returns the total number of items in the data set according to this iterator. If the size of the data set is unlimited or unknown then this function shouldn't be defined.
- Method`+
Iterator
res =Iterator()
+steps
- Description
Returns a clone of this iterator which is advanced the specified number of steps. The amount may be negative to move backwards.
If the iterator doesn't support backward movement it should throw an exception in that case.
- See also
_iterator_next
,`-
- Method`-
Iterator
res =Iterator()
-steps
- Description
Returns a clone of this iterator which is backed up the specified number of steps. The amount may be negative to move forward.
- See also
_iterator_next
,`+
,
- Methodcreate
IteratorIterator(
void
|mixed
data
)- Description
Initialize this iterator to access a data set in
data
. The type ofdata
is specific to the iterator implementation. An iterator may also access some implicit data set, in which casedata
isn't specified at all.The iterator initially points to before the first item in the data set, if there is any.
The iterator does not need to support being reused, so this function is typically declared
protected
.- Note
In the iterator API in Pike 8.0 and earlier the iterators initially pointed to the first element.
- See also
CompatIterator
- Methodfirst
optional
bool
first()- Description
If this function is defined then it resets the iterator to point to before the first item.
- Returns
Returns zero if there are no items at all in the data set, one otherwise.
- Note
It's not enough to set the iterator to the earliest accessible item. If the iterator doesn't support backing up to the original start position then this function should not be implemented.
- Methodset_index
optional
void
set_index(zero
index
)- Description
If this function is defined it should set the iterator at the specified index.
- Note
It should be possible to set the index at the end of the iterator.
Class Iterator.CompatIterator
- Description
Wrapper for iterators implementing the Pike 8.0 and earlier iterator API (
8.0::Iterator
). Used transparently bypredef::get_iterator()
to provide an iterator suitable forforeach()
.- Note
This class provides only those functions that are required by the iterator API. It does not proxy any other functions.
- See also
get_iterator()
,8.0::Iterator
Class MasterObject
- Description
Master control program for Pike.
- See also
predef::master()
,predef::replace_master()
- InheritCompilationHandler
inherit CompilationHandler : CompilationHandler
- Description
The master object acts as fallback compilation handler for
compile()
andcpp()
.
- InheritPike_9_0_master
protected
inherit Pike_9_0_master : Pike_9_0_master- Description
Namespaces for compat masters.
This inherit is used to provide compatibility namespaces for
get_compat_master()
.- See also
get_compat_master()
- Constantbt_max_string_len
constant
int
MasterObject.bt_max_string_len
- Description
This constant contains the maximum length of a function entry in a backtrace. Defaults to 200 if no BT_MAX_STRING_LEN define has been given.
- Constantout_of_date_warning
constant
int
MasterObject.out_of_date_warning
- Description
Should Pike complain about out of date compiled files. 1 means yes and 0 means no. Controlled by the OUT_OF_DATE_WARNING define.
- VariableDecoder
program
MasterObject.Decoder- Description
This program in the master is cloned and used as codec by
decode_value
if it wasn't given any codec. An instance is only created on-demand the first timedecode_value
encounters something for which it needs a codec, i.e. the result of a call toPike.Encoder.nameof
.- See also
Decoder
,Pike.Decoder
- VariableEncoder
program
MasterObject.Encoder- Description
This program in the master is cloned and used as codec by
encode_value
if it wasn't given any codec. An instance is only created on-demand the first timeencode_value
encounters something for which it needs a codec, i.e. an object, program, or function.- See also
Encoder
,Pike.Encoder
- Variable_pike_file_name
Variable_master_file_name string
MasterObject._pike_file_namestring
MasterObject._master_file_name- Description
These are useful if you want to start other Pike processes with the same options as this one was started with.
- Variablecflags
string
MasterObject.cflags- Description
Flags suitable for use when compiling Pike C modules
- Variablecompat_major
int
MasterObject.compat_major- Description
Major pike version to emulate.
This is typically set via the option
"-V"
.- See also
compat_minor
- Variablecompat_minor
int
MasterObject.compat_minor- Description
Minor pike version to emulate.
This is typically set via the option
"-V"
.- See also
compat_major
- Variablecurrentversion
Version
MasterObject.currentversion- Description
Version information about the current Pike version.
- Variableprograms
Variabledocumentation
Variablesource_cache mapping
(string
:program
|NoValue
) MasterObject.programsmapping
(program
:object
) MasterObject.documentationmapping
(program
:string
) MasterObject.source_cache- Description
Mapping containing the cache of currently compiled files.
This mapping currently has the following structure:
filename
:program
The filename path separator is / on both NT and UNIX.
- Note
Special cases: The current master program is available under the name
"/master"
, and the program containing themain
function under"/main"
.
- Variableinclude_prefix
string
MasterObject.include_prefix- Description
Prefix for Pike-related C header files.
- Variableis_pike_master
int
MasterObject.is_pike_master- Description
This integer variable should exist in any object that aspires to be the master. It gets set to 1 when the master is installed, and is therefore set in any object that is or has been the master. That makes the Encoder class encode references to the master and all ex-masters as references to the current master object.
- Variableldflags
string
MasterObject.ldflags- Description
Flags suitable for use when linking Pike C modules
- Variableno_precompile
int
MasterObject.no_precompile- Description
Turn off loading of precompiled modules.
- Variableshow_if_constant_errors
int
MasterObject.show_if_constant_errors- Description
Show compilation warnings from compilation of
cpp()
#if constant()
expressions.This is typically set via the option
"--picky-cpp"
.
- Variablewant_warnings
int
MasterObject.want_warnings- Description
If not zero compilation warnings will be written out on stderr.
- Method_main
void
_main(array
(string(8bit)
)orig_argv
)- Description
This function is called when all the driver is done with all setup of modules, efuns, tables etc. etc. and is ready to start executing _real_ programs. It receives the arguments not meant for the driver.
- Methodadd_filesystem_handler
Filesystem.Base
|zero
add_filesystem_handler(string
mountpoint
,Filesystem.Base
|zero
filesystem
)- Description
Mount a filesystem handler to be used by the resolver. On its own does nothing, but may be used with
add_module_path()
and friends to enable modules to be loaded fromFilesystem
objects.- Parameter
mountpoint
The location in the filesystem to mount the handler
- Parameter
filesystem
A filesystem object that will handle requests for the given mountpoint.
- Example
master()->add_filesystem_handler("/foo/bar.zip",Filesystem.Zip("/foo/bar.zip")); master()->add_module_path("/foo/bar.zip/lib");
- See also
find_handler_for_path()
- Methodasyncp
bool
asyncp()- Description
Returns 1 if we're in async-mode, e.g. if the main method has returned a negative number.
- Methodbackend_thread
object
backend_thread()- Description
The backend_thread() function is useful to determine if you are the backend thread - important when doing async/sync protocols. This method is only available if thread_create is present.
- Methodcast_to_object
object
cast_to_object(string
oname
,string
current_file
,CompilationHandler
|void
current_handler
)- Description
This function is called when the drivers wants to cast a string to an object because of an implict or explicit cast. This function may also receive more arguments in the future.
- Methodcast_to_object
object
cast_to_object(string
str
,string
|void
current_file
)- Description
Called by the Pike runtime to cast strings to objects.
- Parameter
str
String to cast to object.
- Parameter
current_file
Filename of the file that attempts to perform the cast.
- Returns
Returns the resulting object.
- See also
cast_to_program()
- Methodcast_to_program
program
cast_to_program(string
pname
,string
current_file
,CompilationHandler
|void
handler
)- Description
This function is called when the driver wants to cast a string to a program, this might be because of an explicit cast, an inherit or a implict cast. In the future it might receive more arguments, to aid the master finding the right program.
- Methodcast_to_program
program
cast_to_program(string
str
,string
|void
current_file
)- Description
Called by the Pike runtime to cast strings to programs.
- Parameter
str
String to cast to object.
- Parameter
current_file
Filename of the file that attempts to perform the cast.
- Returns
Returns the resulting program.
- See also
cast_to_object()
- Methodcompile_error
void
compile_error(string
file
,int
line
,string
err
)- Description
This function is called whenever a compile error occurs.
line
is zero for errors that aren't associated with any specific line.err
is not newline terminated.- See also
compile_warning()
,compile_exception()
,get_inhibit_compile_errors()
,set_inhibit_compile_errors()
,
- Methodcompile_exception
int
compile_exception(array
|object
trace
)- Description
This function is called when an exception is caught during compilation. Its message is also reported to
compile_error
if this function returns zero.- See also
compile_error()
,compile_warning()
,get_inhibit_compile_errors()
,set_inhibit_compile_errors()
,
- Methodcompile_warning
void
compile_warning(string
file
,int
line
,string
err
)- Description
This function is called whenever a compile warning occurs.
line
is zero for warnings that aren't associated with any specific line.err
is not newline terminated.- See also
compile_error()
,compile_exception()
,get_inhibit_compile_errors()
,set_inhibit_compile_errors()
,
- Methoddecode_charset
string
decode_charset(string
data
,string
charset
)- Description
This function is called by cpp() when it wants to do character code conversion.
- Methoddecode_charset
string
decode_charset(string
raw
,string
charset
)- Description
Convert
raw
from encodingcharset
to UNICODE.This function is called by
cpp()
when it encounters#charset
directives.- Parameter
raw
String to convert.
- Parameter
charset
Name of encoding that
raw
uses.- Returns
raw
decoded to UNICODE, or0
(zero) if the decoding failed.- See also
Charset
- Methoddescribe_backtrace
string
describe_backtrace(mixed
exception
)- Description
Called by various routines to format a readable description of an exception.
- Parameter
exception
Something that was thrown. Usually an
Error.Generic
object, or an array with the following content:Array string
msg
Error message.
array
(backtrace_frame
|array
(mixed
))backtrace
Backtrace to the point where the exception occurred.
- Returns
Returns a string describing the exeception.
- Note
Usually added by the initialization code the global name space with
add_constant()
.- See also
predef::describe_backtrace()
- Methoddescribe_function
string
|zero
describe_function(function
(:void
)f
)- Description
Function called by
describe_backtrace()
to describe functions in the backtrace.
- Methoddescribe_module
string
describe_module(object
|program
mod
,array
(object
)|void
ret_obj
)- Description
Describe the path to the module
mod
.- Parameter
mod
If
mod
is a program, attempt to describe the path to a clone ofmod
.- Parameter
ret_obj
If an instance of
mod
is found, it will be returned by changing element0
ofret_obj
.- Returns
The a description of the path.
- Note
The returned description will end with a proper indexing method currently either
"."
or"->"
.
- Methoddescribe_object
string
|zero
describe_object(object
o
)- Description
Function called by
sprintf("%O")
for objects that don't have anlfun::_sprintf()
, or have one that returnsUNDEFINED
.
- Methoddescribe_program
string
|zero
describe_program(program
|function
(:void
)p
)- Description
Function called by
sprintf("%O")
for programs.
- Methodenable_source_cache
void
enable_source_cache()- Description
Enable caching of sources from compile_string()
- Methodfc_reverse_lookup
string
fc_reverse_lookup(object
obj
)- Description
Returns the path for
obj
infc
, if it got any.
- Methodfind_handler_for_path
string
|zero
find_handler_for_path(string
file
)- Description
Return the mountpoint for the filesystem handler handling the
file
(if any).- See also
add_filesystem_handler()
- Methodget_compat_master
object
get_compat_master(int
major
,int
minor
)- Description
Return a master object compatible with the specified version of Pike.
This function is used to implement the various compatibility versions of
master()
.- See also
get_compilation_handler()
,master()
- Methodget_compilation_handler
CompilationHandler
get_compilation_handler(int
major
,int
minor
)- Description
Get compilation handler for simulation of Pike v
major
.minor
.This function is called by
cpp()
when it encounters#pike
directives.- Parameter
major
Major version.
- Parameter
minor
Minor version.
- Returns
Returns a compilation handler for Pike >=
major
.minor
.
- Methodget_inhibit_compile_errors
bool
|CompilationHandler
|function
(string
,int
,string
:void
) get_inhibit_compile_errors()- Description
Get the current compile error, warning and exception behaviour.
See
set_inhibit_compile_errors()
for details.- See also
set_inhibit_compile_errors()
- Methodget_precompiled_mtime
int
get_precompiled_mtime(string
id
)- Description
Given an identifier returned by query_precompiled_names, returns the mtime of the precompiled entry. Returns -1 if there is no entry.
- Methodhandle_attribute
optional
bool
handle_attribute(mixed
value
,string
attribute
)- Description
This function is called in runtime check_types mode (-rt), when encountering a soft cast to an attributed type.
- Parameter
value
Value that is about to receive the attribute.
- Parameter
attribute
Type attribute to validate.
- Returns
Returns one of:
1
If the attribute is valid for the value.
0
If the attribute is not valid for the value.
UNDEFINED
If the attribute is unsupported.
The default master implements validation of the
"utf8"
attribute.
- Methodhandle_error
void
handle_error(mixed
exception
)- Description
Called by the Pike runtime if an exception isn't caught.
- Parameter
exception
Value that was
throw()
'n.- See also
describe_backtrace()
- Methodhandle_error
void
handle_error(array
|object
trace
)- Description
This function is called when an error occurs that is not caught with catch().
- Methodhandle_inherit
program
handle_inherit(string
pname
,string
current_file
,CompilationHandler
|void
handler
)- Description
This function is called whenever a inherit is called for. It is supposed to return the program to inherit. The first argument is the argument given to inherit, and the second is the file name of the program currently compiling. Note that the file name can be changed with #line, or set by compile_string, so it can not be 100% trusted to be a filename. previous_object(), can be virtually anything in this function, as it is called from the compiler.
- Methodmaster_read_file
string
|zero
master_read_file(string
file
)- Description
Read a file from the master filesystem.
The master filesystem defaults to the system filesystem, but additional mountpoints may be added via
add_filesystem_handler()
.All file I/O performed by the
MasterObject
is performed via this function and its related functions.- See also
add_filesystem_handler()
,find_handler_for_path()
,master_get_dir()
,master_file_stat()
- Methodmodule_defined
array
(string
) module_defined(object
|program
mod
)- Description
Find the files in which
mod
is defined, as they may be hidden away in joinnodes and dirnodes- Parameter
mod
The module we are looking for.
- Returns
An array of strings with filenames. (one for each file in a joinnode, or just one otherwise)
- Methodobjects_reverse_lookup
program
objects_reverse_lookup(object
obj
)- Description
Returns the program for
obj
, if known to the master.
- Methodprogram_path_to_name
string
program_path_to_name(string
path
,string
|void
module_prefix
,string
|void
module_suffix
,string
|void
object_suffix
)- Description
Converts a module path on the form
"Foo.pmod/Bar.pmod"
or"/path/to/pike/lib/modules/Foo.pmod/Bar.pmod"
to a module identifier on the form"Foo.Bar"
.If
module_prefix
ormodule_suffix
are given, they are prepended and appended, respectively, to the returned string if it's a module file (i.e. ends with".pmod"
or".so"
). Ifobject_suffix
is given, it's appended to the returned string if it's an object file (i.e. ends with".pike"
).
- Methodprograms_reverse_lookup
string
programs_reverse_lookup(program
prog
)- Description
Returns the path for
prog
inprograms
, if it got any.
- Methodquery_precompiled_names
array
(string
) query_precompiled_names(string
fname
)- Description
Returns identifiers (e.g. file names) of potentially precompiled files in priority order.
- Methodread_precompiled
string
read_precompiled(string
id
)- Description
Given an identifier returned by query_precompiled_names, returns the precompiled entry. Can assume the entry exists.
- Methodruntime_warning
void
runtime_warning(string
subsystem
,string
msg
,mixed
|void
data
)- Description
Called by the Pike runtime to warn about data inconsistencies.
- Parameter
subsystem
Runtime subsystem where the warning was generated. Currently the following subsystems may call this function:
"gc"
The garbage collector.
"runtime"
The runtime itself.
- Parameter
msg
Warning message.
- Parameter
data
Optional data that further describes the warning specified by
msg
.Currently the following subsystems and messages are defined:
subsystem message data "gc"
"bad_cycle"
array cycle
A cycle where the destruction order isn't deterministic was detected by the garbage collector.
cycle is an array of the elements in the cycle.
"runtime"
"unsupported_compat"
Version
requested_version
Compatibility with a version older than the oldest supported version was requested.
requested_version is the requested version.
- Methodruntime_warning
void
runtime_warning(string
where
,string
what
,mixed
...args
)- Description
Called for every runtime warning. The first argument identifies where the warning comes from, the second identifies the specific message, and the rest depends on that. See code below for currently implemented warnings.
- Methodset_inhibit_compile_errors
void
set_inhibit_compile_errors(bool
|CompilationHandler
|function
(string
,int
,string
:void
)behaviour
)- Description
Set the compile error, warning and exception behaviour.
- Parameter
behaviour
The desired behaviour. One of:
int(0)
Output compilation errors and warnings to stderr. This is the default behaviour.
int(1)
Inhibit output of compilator diagnostics.
function
(string
,int
,string
:void
)Function to call for compilation errors. Compilation warnings and exceptions are inhibited.
The function will be called with the same arguments as those passed to
compile_error()
.CompilationHandler
Compilation handler to use for diagnostics.
- Note
Note that the behaviour is thread local, and is not copied to new threads when they are created.
- See also
get_inhibit_compile_errors()
- Methodshow_doc
object
show_doc(program
|object
|function
(:void
)obj
)- Description
Show documentation for the item
obj
- Parameter
obj
The object for which the documentation should be shown
- Returns
an AutoDoc object
- Methodthread_quanta_exceeded
void
thread_quanta_exceeded(Thread.Thread
thread
,int
ns
)- Description
Function called when a thread has exceeded the thread quanta.
- Parameter
thread
Thread that exceeded the thread quanta.
- Parameter
ns
Number of nanoseconds that the thread executed before allowing other threads to run.
The default master prints a diagnostic and the thread backtrace to
Stdio.stderr
.- Note
This function runs in a signal handler context, and should thus avoid handling of mutexes, etc.
- See also
get_thread_quanta()
,set_thread_quanta()
- Methodunregister
void
unregister(program
p
)- Description
Unregister a program that was only partially compiled.
Called by
compile()
to clean up references to partially compiled programs.- Parameter
p
Partially compiled program that should no longer be referenced.
- FIXME
Shouldn't this function be in the compilation handler?
Class MasterObject.Codec
- Description
Encoder
andDecoder
rolled into one. This is for mainly compatibility; there's typically no use combining encoding and decoding into the same object.
Class MasterObject.CompatResolver
- Description
Resolver of symbols not located in the program being compiled.
- Variablefallback_resolver
CompatResolver
MasterObject.CompatResolver.fallback_resolver- Description
If we fail to resolv, try the fallback.
Typical configuration:
0.6->7.0->7.2-> ... ->master
- Variablehandler_root_modules
mapping
(CompilationHandler
:joinnode
) MasterObject.CompatResolver.handler_root_modules- Description
Lookup from handler module to corresponding root_module.
- Variablepike_include_path
array
(string
) MasterObject.CompatResolver.pike_include_path- Description
The complete include search path
- Variablepike_module_path
array
(string
) MasterObject.CompatResolver.pike_module_path- Description
The complete module search path
- Variablepike_program_path
array
(string
) MasterObject.CompatResolver.pike_program_path- Description
The complete program search path
- Variableroot_module
joinnode
MasterObject.CompatResolver.root_module- Description
Join node of the root modules for this resolver.
- Variablesystem_module_path
array
(string
) MasterObject.CompatResolver.system_module_path- Description
The pike system module path, not including any set by the user.
- Methodadd_include_path
void
add_include_path(string
tmp
)- Description
Add a directory to search for include files.
This is the same as the command line option -I.
- Note
Note that the added directory will only be searched when using < > to quote the included file.
- See also
remove_include_path()
- Methodadd_module_path
void
add_module_path(string
path
,string
|void
subpath
)- Description
Add a directory to search for modules.
This is the same as the command line option -M.
- See also
remove_module_path()
- Parameter
path
a string containing a path to search for Pike modules. May be a directory, or a path to a ZIP archive. If a ZIP archive path is provided, modules will be loaded from a directory, "modules" within the ZIP archive (see the subpath argument).
- Parameter
subpath
if path is a ZIP archive, this argument will determine the path within the archive to be searched.
- Methodadd_predefine
void
add_predefine(string
name
,mixed
value
)- Description
Add a define (without arguments) which will be implicitly defined in
cpp
calls.
- Methodadd_program_path
void
add_program_path(string
tmp
)- Description
Add a directory to search for programs.
This is the same as the command line option -P.
- See also
remove_program_path()
- Methodcreate
MasterObject.CompatResolverMasterObject.CompatResolver(
mixed
version
,CompatResolver
|void
fallback_resolver
)- Description
The CompatResolver is initialized with a value that can be casted into a "%d.%d" string, e.g. a version object.
It can also optionally be initialized with a fallback resolver.
- Methodget_default_module
mapping
get_default_module()- Description
Return the default module for the
CompatResolver
.This is the mapping that corresponds to the
predef::
name space for the compatibility level, and is the value returned byall_constants()
for the same.
- Methodget_predefines
mapping
get_predefines()- Description
Returns a mapping with the current predefines.
- Methodhandle_include
string
|zero
handle_include(string
f
,string
current_file
,int
local_include
)- Description
This function is called whenever an #include directive is encountered. It receives the argument for #include and should return the file name of the file to include.
- See also
read_include()
- Methodinstantiate_static_modules
protected
mapping
(string
:mixed
) instantiate_static_modules(object
|mapping
static_modules
)- Description
Instantiate static modules in the same way that dynamic modules are instantiated.
- Methodread_include
string
read_include(string
f
)- Description
Read the file specified by
handle_include()
.- See also
handle_include()
- Methodremove_include_path
void
remove_include_path(string
tmp
)- Description
Remove a directory to search for include files.
This function performs the reverse operation of
add_include_path()
.- See also
add_include_path()
- Methodremove_module_path
void
remove_module_path(string
tmp
)- Description
Remove a directory to search for modules.
This function performs the reverse operation of
add_module_path()
.- See also
add_module_path()
- Methodremove_predefine
void
remove_predefine(string
name
)- Description
Remove a define from the set that are implicitly defined in
cpp
calls.
- Methodremove_program_path
void
remove_program_path(string
tmp
)- Description
Remove a directory to search for programs.
This function performs the reverse operation of
add_program_path()
.- See also
add_program_path()
- Methodresolv
mixed
resolv(string
identifier
,string
|void
current_file
,CompilationHandler
|void
current_handler
,CompilationHandler
|void
current_compat_handler
)- Description
Resolve the
identifier
expression.- Returns
Returns the value of the
identifier
if it exists, andUNDEFINED
otherwise.
- Methodresolv_base
mixed
resolv_base(string
identifier
,string
|void
current_file
,CompilationHandler
|void
current_handler
,CompilationHandler
|void
current_compat_handler
)- Description
Look up
identifier
in the root module.
Class MasterObject.Decoder
- Description
Codec for use with
decode_value
. This is the decoder corresponding toEncoder
. See that one for more details.- Parameter
fname
Name of file being decoded.
- Parameter
placeholder
Make a singleton object of the program being decoded. One of:
void
|zero
Do not make an object.
object
Object to alter into the singleton. MUST be a clone of
__null_program()
.__deprecated__
(int(1)
)Old API: Generate a singleton object.
- Parameter
handler
Handler object to use.
- Variablefname
Variableplaceholder
Variablehandler void
|string
MasterObject.Decoder.fnamevoid
|__deprecated__
(int
)|object
MasterObject.Decoder.placeholdervoid
|CompilationHandler
MasterObject.Decoder.handler
- Method__create__
protected
local
void
__create__(void
|string
fname
,void
|__deprecated__
(int
)|object
placeholder
,void
|CompilationHandler
handler
)
- Methodcreate
MasterObject.DecoderMasterObject.Decoder(
void
|string
fname
,void
|__deprecated__
(int
)|object
placeholder
,void
|CompilationHandler
handler
)
- Methoddecode_object
array
(mixed
)|zero
decode_object(object
o
,mixed
data
)- Description
Restore the state of an encoded object.
- Parameter
o
Object to modify.
- Parameter
data
State information from
Encoder()->encode_object()
.The default implementation calls
o->_decode(data)
if the object has an_decode()
, otherwise ifdata
is an array, returns it to indicate thatlfun::create()
should be called.- Note
This function is called before
lfun::create()
in the object has been called, but afterlfun::__INIT()
has been called.- Returns
Returns an array to indicate to the caller that
lfun::create()
should be called with the elements of the array as arguments.Returns
0
(zero) to inhibit calling oflfun::create()
.- See also
Encoder()->encode_object()
Class MasterObject.Describer
- Description
Class used by
describe_backtrace()
to describe values in backtraces.
Class MasterObject.Encoder
- Description
Codec for use with
encode_value
. It understands all the standard references to builtin functions, pike modules, and the main program script.The format of the produced identifiers are documented here to allow extension of this class:
The produced names are either strings or arrays. The string variant specifies the thing to look up according to the first character:
'c' Look up in all_constants(). 's' Look up in _static_modules. 'r' Look up with resolv(). 'p' Look up in programs. 'o' Look up in programs, then look up the result in objects. 'f' Look up in fc.
In the array format, the first element is a string as above and the rest specify a series of things to do with the result:
A string Look up this string in the result. 'm' Get module object in dirnode. 'p' Do object_program(result).
All lowercase letters and the symbols ':', '/' and '.' are reserved for internal use in both cases where characters are used above.
- Methodcreate
MasterObject.EncoderMasterObject.Encoder(
void
|mixed
encoded
)- Description
Creates an encoder instance. If
encoded
is specified, it's encoded instead of being reverse resolved to a name. That's necessary to encode programs.
Class MasterObject.Pike_7_8_master
- Description
Pike 7.8 master compatibility interface.
Most of the interface is implemented via mixin, or overloading by more recent masters.
This interface is used for compatibility with Pike 7.8.
- Deprecated
Replaced by
predef::MasterObject
.- See also
get_compat_master()
,master()
,predef::MasterObject
Class MasterObject.Pike_8_0_master
- Description
Pike 8.0 master compatibility interface.
Most of the interface is implemented via mixin, or overloading by more recent masters.
This interface is used for compatibility with Pike 8.0.
- Deprecated
Replaced by
predef::MasterObject
.- See also
get_compat_master()
,master()
,predef::MasterObject
Class MasterObject.Pike_9_0_master
- Description
Pike 9.0 master compatibility interface.
Most of the interface is implemented via mixin, or overloading by more recent masters.
This interface is used for compatibility with Pike 9.0.
- Deprecated
Replaced by
predef::MasterObject
.- See also
get_compat_master()
,master()
,predef::MasterObject
Class MasterObject.Version
- Description
Contains version information about a Pike version.
- Variablemajor
Variableminor int
MasterObject.Version.majorint
MasterObject.Version.minor- Description
The major and minor parts of the version.
- Method`<
Method`>
Method`==
Method__hash int
res =MasterObject.Version()
<v
int
res =MasterObject.Version()
>v
int
res =MasterObject.Version()
==v
int
hash_value(MasterObject.Versionarg)- Description
Methods define so that version objects can be compared and ordered.
- Methodcast
(int)MasterObject.Version()
(float)MasterObject.Version()
(string)MasterObject.Version()
(array)MasterObject.Version()
(mapping)MasterObject.Version()
(multiset)MasterObject.Version()- Description
The version object can be casted into a string.
Class MasterObject.dirnode
- Description
Module node representing a single directory.
- See also
joinnode
- Variabledirname
Variablecompilation_handler
Variablename string
MasterObject.dirnode.dirnameCompilationHandler
|void
MasterObject.dirnode.compilation_handlerstring
|void
MasterObject.dirnode.name
Class MasterObject.joinnode
- Description
Module node holding possibly multiple directories, and optionally falling back to another level.
- See also
dirnode
- Variablejoined_modules
Variablecompilation_handler
Variablefallback_module
Variablename array
(object
|mapping
) MasterObject.joinnode.joined_modulesCompilationHandler
|void
MasterObject.joinnode.compilation_handlerjoinnode
|mapping
(mixed
:int(0)
)|void
MasterObject.joinnode.fallback_modulestring
|void
MasterObject.joinnode.name
Class RandomInterface
- Methodrandom
array
random(mapping
m
)- Description
Returns a random index-value pair from the mapping.
Array mixed
0
The index of the mapping entry.
mixed
1
The value f the mapping entry.
- Throws
Throws an exception if the mapping is empty.
- Methodrandom
float
random(float
max
)- Description
This function returns a random number in the range
0 ..
.max
-ɛ- See also
Random
- Methodrandom
int
random(int
max
)- Description
This function returns a random number in the range
0 ..
.max
-1- See also
Random
- Methodrandom
mixed
random(object
o
)- Description
If random is called with an object,
lfun::_random
will be called in the object.- Throws
Throws an exception if the object doesn't have a _random method.
- See also
lfun::_random()
- Methodrandom
mixed
random(array
|multiset
x
)- Description
Returns a random element from
x
.- Throws
Throws an exception if the array or multiset is empty.
- Methodrandom
Class RandomSystem
Class Reporter
- Description
API for reporting parse errors and similar.
- Methodreport
void
report(SeverityLevel
severity
,string
filename
,int(1..)
linenumber
,string
subsystem
,string
message
,mixed
...extra_args
)- Description
Report a diagnostic from the compiler.
- Parameter
severity
The severity of the diagnostic.
- Parameter
filename
- Parameter
linenumber
Location which triggered the diagnostic.
- Parameter
subsystem
Compiler subsystem that generated the diagnostic.
- Parameter
message
sprintf()
-style formatting string with the diagnostic message.- Parameter
extra_args
Extra arguments to
sprintf()
.The default implementation does the following:
If there's a
MasterObject()->report()
, call it with the same arguments as ourselves.Otherwise depending on
severity
:NOTICE
Ignored.
WARNING
Calls
MasterObject()->compile_warning()
.ERROR
Calls
MasterObject()->compile_error()
.FATAL
If there's no master object yet, the diagnostic is UTF8-encoded and output to
Stdio.stderr
.- Note
In Pike 7.8 and earlier
MasterObject()->report()
was not called.In Pike 8.0 the fallback output was not UTF8-encoded.
- See also
PikeCompiler()->report()
Class mklibpike
Class string_assignment
Module Arg
- Description
Argument parsing module
This module supports two rather different methods of argument parsing. The first is suitable quick argument parsing without much in the way of checking:
int main(int c,array(string) argv ){mapping arguments =Arg.parse(argv);array files = arguments[Arg.REST];if( arguments->help ) print_help(); ... }
The
Arg.parse
method will return a mapping from argument name to the argument value, if any.Non-option arguments will be placed in the index Arg.REST
The second way to use this module is to inherit the Options class and add supported arguments.
class MyArguments {inheritArg.Options;string help_pre ="Usage: somecommand"; Opt verbose = NoOpt("-v")|NoOpt("--verbose");string verbose_help ="Turn on verbose output"; Opt help = MaybeOpt("--help"); Opt output = HasOpt("--output")|HasOpt("-o");string output_help ="Determine where output goes to";string help_post ="Command aborted";};
Then, in main:
MyArguments args = MyArguments(argv);
See the documentation for
OptLibrary
for details about the various Opt classes.
- ConstantAPP
constant
Arg.APP
- Description
Constant used to represent the name of the application from the command line. Can be used when indexing an
Options
object.
- ConstantPATH
constant
Arg.PATH
- Description
Constant used to represent the full path of the application from the command line. Can be used when indexing an
Options
object.
- ConstantREST
constant
Arg.REST
- Description
Constant used to represent command line arguments not identified as options. Can be used both in the response mapping from
parse
and when indexing anOptions
object.
- Methodparse
mapping
(string
:string
|int(1..)
) parse(array
(string
)argv
)- Description
Convenience function for simple argument parsing.
Handles the most common cases.
The return value is a mapping from option name to the option value.
The special index Arg.REST will be set to the remaining arguments after all options have been parsed.
The following argument syntaxes are supported:
--foo -> "foo":1 --foo=bar -> "foo":"bar"-bar -> "b":1,"a":1,"r":1 -bar=foo -> "b":1,"a":1,"r":"foo"(?) --foo --bar -> "foo":1,"bar":1 --foo - --bar -> "foo":1 --foo x --bar -> "foo":1 (?)-foo -> "f":1,"o":2 -x -x -x -> "x":3
- Example
void main(int n,array argv){mapping opts =Arg.parse(argv); argv = opts[Arg.REST];if( opts->help )/*... */}
Class Arg.LowOptions
- Methodcast
(int)Arg.LowOptions()
(float)Arg.LowOptions()
(string)Arg.LowOptions()
(array)Arg.LowOptions()
(mapping)Arg.LowOptions()
(multiset)Arg.LowOptions()
- Methodcast
Class Arg.OptLibrary
- Description
This class contains a library of parser for different type of options.
Class Arg.OptLibrary.Default
- Description
Default value for a setting.
- Example
Opt output = HasOpt("-o")|Default("a.out");
Class Arg.OptLibrary.Env
- Description
Environment fallback for an option. Can of course be used as only Opt source.
- Example
Opt debug = NoOpt("--debug")|Env("MY_DEBUG");
Class Arg.OptLibrary.HasOpt
- Description
Parses an option that has a parameter. --foo=bar, -x bar and -x=bar will set the variable to
bar
.- Example
Opt user = HasOpt("--user")|HasOpt("-u");
Class Arg.OptLibrary.Int
- Description
Wrapper class that converts the option argument to an integer.
- Example
Opt foo = Int(HasOpt("--foo")|Default(4711));
Class Arg.OptLibrary.MaybeOpt
- Description
Parses an option that may have a parameter. --foo, -x and x in a sequence like -axb will set the variable to
1
. --foo=bar, -x bar and -x=bar will set the variable tobar
.- Example
Opt debug = MaybeOpt("--debug");
Class Arg.OptLibrary.Multiple
- Description
Wrapper class that allows multiple instances of an option.
- Example
Opt filter = Multiple(HasOpt("--filter"));
Class Arg.OptLibrary.NoOpt
- Description
Parses an option without parameter, such as --help, -x or "x" from -axb.
- Example
Opt verbose = NoOpt("-v")|NoOpt("--verbose");
Class Arg.OptLibrary.Opt
- Description
Base class for parsing an argument. Inherit this class to create custom made option types.
- Method__sprintf
protected
string
__sprintf()- Description
This function will be called by
_sprintf
, which handles formatting of chaining between objects.
- Methodget_opts
array
(string
) get_opts()- Description
Should return a list of options that are parsed. To properly chain argument parsers, return
your_opts + ::get_opts()
.
- Methodget_value
mixed
get_value(array
(string
)argv
,mapping
(string
:string
)env
,mixed
previous
)- Description
The overloading method should calculate the value of the option and return it. Methods processing
argv
should only look at argv[0] and if it matches, set it to 0. ReturningUNDEFINED
means the option was not set (or matched). To properly chain arguments parsers, return::get_value(argv, env, previous)
instead ofUNDEFINED
, unless you want to explicitly stop the chain and not set this option.
Class Arg.Options
- Description
The option parser class that contains all the argument objects.
- Variablehelp
Variablehelp_help Opt
Arg.Options.helpprotected
string
Arg.Options.help_help- Description
Options that trigger help output.
Class Arg.SimpleOptions
- Description
Options parser with a unhandled_argument implementation that parses most common argument formats.
Module Audio
Module Audio.Codec
Class Audio.Codec.decoder
- Description
Decoder object.
- Note
It needs
_Ffmpeg.ffmpeg
module for real work.
- Methodcreate
Audio.Codec.decoderAudio.Codec.decoder(
string
|void
codecname
,object
|void
_codec
)- Description
Creates decoder object
- Parameter
codecnum
Some of supported codec, like _Ffmpeg.CODEC_ID_*
- Parameter
_codec
The low level object will be used for decoder. By default
_Ffmpeg.ffmpeg
object will be used.- Note
Until additional library is implemented the second parameter
_codec
hasn't effect.- See also
_Ffmpeg.ffmpeg
,_Ffmpeg.CODEC_ID_MP2
- Methoddecode
mapping
|int
decode(int
|void
partial
)- Description
Decodes audio data
- Parameter
partial
Only one frame will be decoded per call.
- Returns
If successfull a mapping with decoded data and byte number of used input data is returned, 0 otherwise.
- Methodfrom_file
this_program
|zero
from_file(Audio.Format.ANY
file
)- Description
Set codec type from file
It uses
Audio.Format.ANY
's method get_map() to determine which codec should be used.- Parameter
file
The object
Audio.Format.ANY
.
Module Audio.Format
- Description
Audio data format handling
- Note
API remains marked "unstable".
Class Audio.Format.ANY
- Methodget_data
string
get_data()- Description
Returns data only.
- Note
The operation is destructive. Ie. current data cursor is moved over.
- See also
get_frame
,get_sample
- Methodget_frame
string
get_frame()- Description
Returns frame for current position and moves cursor forward.
- Note
The operation is destructive. Ie. current data cursor is moved over.
- See also
get_data
,get_sample
- Methodget_sample
mapping
get_sample()- Description
Returns sample for current position and moves cursor forward.
- Note
The operation is destructive. Ie. current data cursor is moved over.
- See also
get_frame
,get_data
- Methodread_file
this_program
read_file(string
filename
,int
|void
nocheck
)- Description
Reads data from file
- See also
read_streamed
- Methodread_streamed
this_program
read_streamed(string
filename
,int
|void
nocheck
)- Description
Reads data from stream
Ie. for packetized data source the beggining of data is searched.
- See also
read_file
- Methodget_data
Class Audio.Format.MP3
- Description
A MP3 file parser with ID3 tag support.
- Methodget_frame
mapping
|int
get_frame()- Description
Gets next frame from file
Frame is represented by the following mapping. It contains from parsed frame headers and frame data itself.
([ "bitrate": int "copyright": int(0..1), "data": frame_data, "emphasis": emphasis, "extension": "channels":0, "id":1, "layer":3, "original": int(0..1), "padding": int(0..1), "private": int(0..1), "sampling": int ])
Module COM
Module Cache
- Description
Common Caching implementation
This module serves as a front-end to different kinds of caching systems. It uses two helper objects to actually store data, and to determine expiration policies.
To create a new cache, do
Cache.cache
(Cache.Storage.Base
storage_type,Cache.Policy.Base
expiration_policy )The cache store instances of
Cache.Data
.
Class Cache.Data
- Description
Base stored object for the cache system.
- Methodcreate
Cache.DataCache.Data(
void
|mixed
value
,void
|int
expire_time
,void
|float
preciousness
)- Description
expire_time is relative and in seconds.
- Methodrecursive_low_size
int
recursive_low_size(mixed
whatfor
)- Description
Attempts a wild guess of an object's size. It's left here as a common utility. Some classes won't even need it.
Class Cache.cache
- Description
This module serves as a front-end to different kinds of caching systems. It uses two helper objects to actually store data, and to determine expiration policies. Mechanisms to allow for distributed caching systems will be added in time, or at least that is the plan.
- Methodalookup
void
alookup(string
key
,function
(string
,mixed
,mixed
... :void
)callback
,int
|float
timeout
,mixed
...args
)- Description
Asynchronously look the cache up. The callback will be given as arguments the key, the value, and then any user-supplied arguments. If the timeout (in seconds) expires before any data could be retrieved, the callback is called anyways, with 0 as value.
- Methodcreate
Cache.cacheCache.cache(
Cache.Storage.Base
storage_mgr
,Cache.Policy.Base
policy_mgr
,void
|int
cleanup_cycle_delay
)- Description
Creates a new cache object. Required are a storage manager, and an expiration policy object.
- Methoddelete
void
delete(string
key
,void
|bool
hard
)- Description
Forcibly removes some key. If the 'hard' parameter is supplied and true, deleted objects will also have their
lfun::_destruct
method called upon removal by some backends (i.e. memory)
- Methodlookup
mixed
lookup(string
key
)- Description
Looks in the cache for an element with the given key and, if available, returns it. Returns 0 if the element is not available
- Methodstore
void
store(string
key
,mixed
value
,void
|int
max_life
,void
|float
preciousness
,void
|multiset
(string
)dependants
)- Description
Sets some value in the cache. Notice that the actual set operation might even not happen at all if the set data doesn't make sense. For instance, storing an object or a program in an SQL-based backend will not be done, and no error will be given about the operation not being performed.
Notice that while max_life will most likely be respected (objects will be garbage-collected at pre-determined intervals anyways), the preciousness . is to be seen as advisory only for the garbage collector If some data was stored with the same key, it gets returned. Also notice that max_life is relative and in seconds. dependants are not fully implemented yet. They are implemented after a request by Martin Stjerrholm, and their purpose is to have some weak form of referential integrity. Simply speaking, they are a list of keys which (if present) will be deleted when the stored entry is deleted (either forcibly or not). They must be handled by the storage manager.
Module Cache.Policy
Class Cache.Policy.Base
- Description
Base class for cache expiration policies.
Class Cache.Policy.Multiple
- Description
A multiple-policies expiration policy manager.
- Thanks
Thanks to Francesco Chemolli <kinkie@roxen.com> for the contribution.
Class Cache.Policy.Null
- Description
Null policy-manager for the generic Caching system
This is a policy manager that doesn't actually expire anything. It is useful in multilevel and/or network-based caches.
- Thanks
Thanks to Francesco Chemolli <kinkie@roxen.com> for the contribution.
Class Cache.Policy.Sized
- Description
An LRU, size-constrained expiration policy manager.
- Thanks
Thanks to Francesco Chemolli <kinkie@roxen.com> for the contribution.
Module Cache.Storage
Class Cache.Storage.Base
- Description
Base class for cache storage managers.
All
Cache.Storage
managers must provide these methods.
- Methodaget
void
aget(string
key
,function
(string
,int(0)
|Cache.Data
,mixed
... :void
)callback
,mixed
...extra_callback_args
)- Description
Fetch some data from the cache asynchronously.
callback()
will get as first argumentkey
, and as second argument 0 (cache miss) or anCache.Data
object, plus any additional argument that the user may have supplied.
- Methoddelete
mixed
delete(string
key
,void
|bool
hard
)- Description
Delete the entry specified by
key
from the cache (if present).If
hard
is 1, some backends may force adestruct()
on the deleted value.Dependants (if present) are automatically deleted.
- Returns
Returns the deleted entry.
- Methodfirst
Methodnext int(0)
|string
first()int(0)
|string
next()- Description
These two functions are an iterator over the cache. There is an internal cursor, which is reset by each call to
first()
. Subsequent calls tonext()
will iterate over all the contents of the cache.These functions are not meant to be exported to the user, but are solely for the policy managers' benefit.
- Methodget
int(0)
|Cache.Data
get(string
key
,void
|bool
notouch
)- Description
Fetch some data from the cache synchronously.
- Note
Be careful, as with some storage managers it might block the calling thread for some time.
Class Cache.Storage.Gdbm
- Description
A GBM-based storage manager.
This storage manager provides the means to save data to memory. In this manager I'll add reference documentation as comments to interfaces. It will be organized later in a more comprehensive format
Settings will be added later.
- Thanks
Thanks to Francesco Chemolli <kinkie@roxen.com> for the contribution.
Class Cache.Storage.Memory
- Description
A RAM-based storage manager.
This storage manager provides the means to save data to memory. In this manager I'll add reference documentation as comments to interfaces. It will be organized later in a more comprehensive format
Settings will be added later.
- Thanks
Thanks to Francesco Chemolli <kinkie@roxen.com> for the contribution.
Class Cache.Storage.MySQL
- Description
An SQL-based storage manager
This storage manager provides the means to save data to an SQL-based backend.
For now it's mysql only, dialectization will be added at a later time. Serialization should be taken care of by the low-level SQL drivers.
- Note
An administrator is supposed to create the database and give the user enough privileges to write to it. It will be care of this driver to create the database tables itself.
- Thanks
Thanks to Francesco Chemolli <kinkie@roxen.com> for the contribution.
Class Cache.Storage.Yabu
- Description
A Yabu-based storage manager.
Settings will be added later.
- Thanks
Thanks to Francesco Chemolli <kinkie@roxen.com> for the contribution.
Module CommonLog
- Description
The CommonLog module is used to parse the lines in a www server's logfile, which must be in "common log" format -- such as used by default for the access log by Roxen, Caudium, Apache et al.
- Methodread
int
read(function
(array
(int
|string
),int
:void
)callback
,Stdio.File
|string
logfile
,void
|int
offset
)- Description
Reads the log file and calls the callback function for every parsed line. For lines that fails to be parsed the callback is not called not is any error thrown. The number of bytes read are returned.
- Parameter
callback
The callbacks first argument is an array with the different parts of the log entry.
Array string
remote_host
int(0)
|string
ident_user
int(0)
|string
auth_user
int
year
int
month
int
day
int
hours
int
minutes
int
seconds
int
timezone
int(0)
|string
method
One of "GET", "POST", "HEAD" etc.
int(0)
|string
path
string
protocol
E.g. "HTTP/1.0"
int
reply_code
One of 200, 404 etc.
int
bytes
The second callback argument is the current offset to the end of the current line.
- Parameter
logfile
The logfile to parse. Either an open
Stdio.File
object, or a string with the path to the logfile.- Parameter
offset
The absolute position in the file where the parser should begin. Note that the offset defaults to 0 (zero), NOT the current offset of
logfile
.
Module DVB
- Description
Implements Digital Video Broadcasting interface
- Note
Only Linux version is supported.
Class DVB.Audio
- Description
Object for controlling an audio subsystem on full featured cards.
- Methodcreate
DVB.AudioDVB.Audio(
int
card_number
)DVB.AudioDVB.Audio()
- Description
Create a Audio object.
- Parameter
card_number
The number of card equipment.
- Methodmixer
int
mixer(int
left
,int
right
)int
mixer(int
both
)- Description
Sets output level on DVB audio device.
- See also
mute()
Class DVB.Stream
- Description
Represents an elementary data stream (PES).
- Methodread
string
|int
read()- Description
Read data from a stream. It reads up to read buffer size data.
- Note
Read buffer size is 4096 by default.
- See also
DVB.dvb()->stream()
,close()
Class DVB.dvb
- Description
Main class.
- Methodanalyze_pmt
array
(mapping
)|int
analyze_pmt(int
sid
,int
prognum
)- Description
Parse PMT table.
- See also
analyze_pat()
- Methodcreate
DVB.dvbDVB.dvb(
int
card_number
)- Description
Create a DVB object.
- Parameter
card_number
The number of card equipment.
- Note
The number specifies which device will be opened. Ie. /dev/ost/demux0, /dev/ost/demux1 ... for DVB v0.9.4 or /dev/dvb/demux0, /dev/dvb/demux1 ... for versions 2.0+
- Methodfe_info
mapping
fe_info()- Description
Return info of a frondend device.
- Note
The information heavily depends on driver. Many fields contain dumb values.
- Methodfe_status
mapping
|int
fe_status()- Description
Return status of a DVB object's frondend device.
- Returns
The resulting mapping contains the following fields:
"power"
:string
If 1 the frontend is powered up and is ready to be used.
"signal"
:string
If 1 the frontend detects a signal above a normal noise level
"lock"
:string
If 1 the frontend successfully locked to a DVB signal
"carrier"
:string
If 1 carrier dectected in signal
"biterbi"
:string
If 1 then lock at viterbi state
"sync"
:string
If 1 then TS sync byte detected
"tuner_lock"
:string
If 1 then tuner has a frequency lock
- Methodget_pids
mapping
|int
get_pids()- Description
Returns mapping with info of currently tuned program's pids.
- See also
tune()
- Methodstream
DVB.Stream
stream(int
pid
,int
|function
(:void
)rcb
,int
ptype
)DVB.Stream
stream(int
pid
,int
|function
(:void
)rcb
)DVB.Stream
stream(int
pid
)- Description
Create a new stream reader object for PID.
- Parameter
pid
PID of stream.
- Parameter
rcb
Callback function called whenever there is the data to read from stream. Only for nonblocking mode.
- Parameter
ptype
Type of payload data to read. By default, audio data is fetched.
- Note
Setting async callback doesn't set the object to nonblocking state.
- See also
DVB.Stream()->read()
- Methodtune
int
tune(int(2bit)
lnb
,int
freq
,bool
|string
pol
,int
sr
)- Description
Tunes to apropriate transponder's parameters.
- Parameter
lnb
DiSeQc number of LNB.
- Parameter
freq
Frequency divided by 1000.
- Parameter
pol
Polarization.
0
or"v"
for vertical type,1
or"h"
for horizontal one.- Parameter
sr
The service rate parameter.
Module Debug
- Variableglobals
mapping
Debug.globals- Description
Can be custom filled from within your program in order to have global references to explore live datastructures using
Inspect
; comes preinitialised with the empty mapping, ready for use.
- Methodadd_to_perf_map
void
add_to_perf_map(program
p
)- Description
Updates the perf map file with new program
p
.- See also
generate_perf_map()
- Note
Expects
generate_perf_map()
to have been called before.
- Methodassembler_debug
int(0..)
assembler_debug(int(0..)
level
)- Description
Set the assembler debug level.
- Returns
The old assembler debug level will be returned.
- Note
This function is only available if the Pike runtime has been compiled with RTL debug.
- Methodcompiler_trace
int(0..)
compiler_trace(int(0..)
level
)- Description
Set the compiler trace level.
- Returns
The old compiler trace level will be returned.
- Note
This function is only available if the Pike runtime has been compiled with RTL debug.
- Methodcount_objects
mapping
(string
:int
) count_objects()- Description
Returns the number of objects of every kind in memory.
- Methoddebug
int(0..)
debug(int(0..)
level
)- Description
Set the run-time debug level.
- Returns
The old debug level will be returned.
- Note
This function is only available if the Pike runtime has been compiled with RTL debug.
- Methoddescribe
mixed
describe(mixed
x
)- Description
Prints out a description of the thing
x
to standard error. The description contains various internal info associated withx
.- Note
This function only exists if the Pike runtime has been compiled with RTL debug.
- Methoddescribe_encoded_value
int
describe_encoded_value(string
data
)- Description
Describe the contents of an
encode_value()
string.- Returns
Returns the number of encoding errors that were detected (if any).
- Methoddescribe_program
array
(array
(int
|string
|type
)) describe_program(program
p
)- Description
Debug function for showing the symbol table of a program.
- Returns
Returns an array of arrays with the following information for each symbol in
p
:Array int
modifiers
Bitfield with the modifiers for the symbol.
string
symbol_name
Name of the symbol.
type
value_type
Value type for the symbol.
int
symbol_type
Type of symbol.
int
symbol_offset
Offset into the code or data area for the symbol.
int
inherit_offset
Offset in the inherit table to the inherit containing the symbol.
int
inherit_level
Depth in the inherit tree for the inherit containing the symbol.
- Note
The API for this function is not fixed, and has changed since Pike 7.6. In particular it would make sense to return an array of objects instead, and more information about the symbols might be added.
- Methoddisassemble
void
disassemble(function
(:void
)fun
)- Description
Disassemble a Pike function to
Stdio.stderr
.- Note
This function is only available if the Pike runtime has been compiled with debug enabled.
- Methoddmalloc_set_name
void
dmalloc_set_name(string
filename
,int(1..)
linenumber
)- Note
Only available when compiled with dmalloc.
- Methoddump_backlog
void
dump_backlog()- Description
Dumps the 1024 latest executed opcodes, along with the source code lines, to standard error. The backlog is only collected on debug level 1 or higher, set with
_debug
or with the -d argument on the command line.- Note
This function only exists if the Pike runtime has been compiled with RTL debug.
- Methoddump_dmalloc_locations
void
dump_dmalloc_locations(string
|array
|mapping
|multiset
|function
(:void
)|object
|program
|type
o
)- Note
Only available when compiled with dmalloc.
- Methoddump_program_tables
void
dump_program_tables(program
p
,int(0..)
|void
indent
)- Description
Dumps the internal tables for the program
p
on stderr.- Parameter
p
Program to dump.
- Parameter
indent
Number of spaces to indent the output.
- Methodfind_all_clones
array
(object
) find_all_clones(program
p
,bool
|void
include_subclasses
)- Description
Return an array with all objects that are clones of
p
.- Parameter
p
Program that the objects should be a clone of.
- Parameter
include_subclasses
If true, include also objects that are clones of programs that have inherited
p
. Note that this adds significant overhead.This function is only intended to be used for debug purposes.
- See also
map_all_objects()
- Methodgc_set_watch
void
gc_set_watch(array
|multiset
|mapping
|object
|function
(:void
)|program
|string
x
)- Description
Sets a watch on the given thing, so that the gc will print a message whenever it's encountered. Intended to be used together with breakpoints to debug the garbage collector.
- Note
This function only exists if the Pike runtime has been compiled with RTL debug.
- Methodgc_status
mapping
(string
:int
|float
) gc_status()- Description
Get statistics from the garbage collector.
- Returns
A mapping with the following content will be returned:
"num_objects"
:int
Number of arrays, mappings, multisets, objects and programs.
"num_allocs"
:int
Number of memory allocations since the last gc run.
"alloc_threshold"
:int
Threshold for "num_allocs" when another automatic gc run is scheduled.
"projected_garbage"
:float
Estimation of the current amount of garbage.
"objects_alloced"
:int
Decaying average over the number of allocated objects between gc runs.
"objects_freed"
:int
Decaying average over the number of freed objects in each gc run.
"last_garbage_ratio"
:float
Garbage ratio in the last gc run.
"non_gc_time"
:int
Decaying average over the interval between gc runs, measured in real time nanoseconds.
"gc_time"
:int
Decaying average over the length of the gc runs, measured in real time nanoseconds.
"last_garbage_strategy"
:string
The garbage accumulation goal that the gc aimed for when setting "alloc_threshold" in the last run. The value is either "garbage_ratio_low", "garbage_ratio_high" or "garbage_max_interval". The first two correspond to the gc parameters with the same names in
Pike.gc_parameters
, and the last is the minimum gc time limit specified through the "min_gc_time_ratio" parameter toPike.gc_parameters
."last_gc"
:int
Time when the garbage-collector last ran.
"total_gc_cpu_time"
:int
The total amount of CPU time that has been consumed in implicit GC runs, in nanoseconds. 0 on systems where Pike lacks support for CPU time measurement.
"total_gc_real_time"
:int
The total amount of real time that has been spent in implicit GC runs, in nanoseconds.
- See also
gc()
,Pike.gc_parameters()
,Pike.implicit_gc_real_time
- Methodgenerate_perf_map
void
generate_perf_map()- Description
Generates a
perf
map file of all Pike code and writes it to/tmp/perf-<pid>.map
. This is useful only if pike has been compiled with machine code support. It allows the linux perf tool to determine the correct name of Pike functions that were compiled to machine code by pike.
- Methodget_program_layout
mapping
(string
:int
) get_program_layout(program
p
)- Description
Returns a mapping which describes the layout of compiled machine code in the program
p
. The indices of the returned mapping are function names, the values the starting address of the compiled function. The total size of the program code is stored with index0
.
- Methodhexdump
void
hexdump(string(8bit)
raw
)- Description
Write a hexadecimal dump of the contents of
raw
toStdio.stderr
.
- Methodlocate_references
mixed
locate_references(string
|array
|mapping
|multiset
|function
(:void
)|object
|program
|type
o
)- Description
This function is mostly intended for debugging. It will search through all data structures in Pike looking for
o
and print the locations on stderr.o
can be anything butint
orfloat
.- Note
This function only exists if the Pike runtime has been compiled with RTL debug.
- Methodmap_all_objects
int(0..)
map_all_objects(function
(object
:void
)cb
)- Description
Call cb for all objects that currently exist. The callback will not be called with destructed objects as it's argument.
Objects might be missed if
cb
creates new objects or destroys old ones.This function is only intended to be used for debug purposes.
- Returns
The total number of objects
- See also
next_object()
,find_all_clones()
- Methodmap_all_programs
int(0..)
map_all_programs(function
(program
:void
)cb
)- Description
Call cb for all programs that currently exist.
Programs might be missed if
cb
creates new programs.This function is only intended to be used for debug purposes.
- Returns
The total number of programs
- See also
map_all_objects()
- Methodmap_all_strings
int(0..)
map_all_strings(function
(string
:void
)cb
)- Description
Call cb for all strings that currently exist.
strings might be missed if
cb
creates new strings or destroys old ones.This function is only intended to be used for debug purposes.
- Returns
The total number of strings
- See also
next_object()
- Methodmemory_usage
mapping
(string
:int
) memory_usage()- Description
Check memory usage.
This function is mostly intended for debugging. It delivers a mapping with information about how many arrays/mappings/strings etc. there are currently allocated and how much memory they use.
The entries in the mapping are typically paired, with one named
"num_" + SYMBOL + "s"
containing a count, and the other namedSYMBOL + "_bytes"
containing a best effort approximation of the size in bytes.- Note
Exactly what fields this function returns is version dependant.
- See also
_verify_internals()
- Methodnext
mixed
next(mixed
x
)- Description
Find the next object/array/mapping/multiset/program or string.
All objects, arrays, mappings, multisets, programs and strings are stored in linked lists inside Pike. This function returns the next item on the corresponding list. It is mainly meant for debugging the Pike runtime, but can also be used to control memory usage.
- See also
next_object()
,prev()
- Methodnext_object
object
next_object(object
o
)object
next_object()- Description
Returns the next object from the list of all objects.
All objects are stored in a linked list.
- Returns
If no arguments have been given
next_object()
will return the first object from the list.If
o
has been specified the object aftero
on the list will be returned.- Note
This function is not recomended to use.
- See also
destruct()
- Methodoptimizer_debug
int(0..)
optimizer_debug(int(0..)
level
)- Description
Set the optimizer debug level.
- Returns
The old optimizer debug level will be returned.
- Note
This function is only available if the Pike runtime has been compiled with RTL debug.
- Methodpp_memory_usage
string
pp_memory_usage()- Description
Returns a pretty printed version of the output from
memory_usage
.
- Methodpp_object_usage
string
pp_object_usage()- Description
Returns a pretty printed version of the output from
count_objects
(with added estimated RAM usage)
- Methodprev
mixed
prev(mixed
x
)- Description
Find the previous object/array/mapping/multiset or program.
All objects, arrays, mappings, multisets and programs are stored in linked lists inside Pike. This function returns the previous item on the corresponding list. It is mainly meant for debugging the Pike runtime, but can also be used to control memory usage.
- Note
Unlike
next()
this function does not work on strings.- See also
next_object()
,next()
- Methodrefs
int
refs(string
|array
|mapping
|multiset
|function
(:void
)|object
|program
o
)- Description
Return the number of references
o
has.It is mainly meant for debugging the Pike runtime, but can also be used to control memory usage.
- Note
Note that the number of references will always be at least one since the value is located on the stack when this function is executed.
- See also
next()
,prev()
- Methodremove_from_perf_map
void
remove_from_perf_map(program
p
)- Description
Removed
p
from the perf map file.
- Methodsize_object
int
size_object(object
o
)- Description
Return the aproximate size of the object, in bytes. This might not work very well for native objects
The function tries to estimate the memory usage of variables belonging to the object.
It will not, however, include the size of objects assigned to variables in the object.
If the object has a
lfun::_size_object()
it will be called without arguments, and the return value will be added to the final size. It is primarily intended to be used by C-objects that allocate memory that is not normally visible to pike.- See also
lfun::_size_object()
,sizeof()
- Methodverify_internals
void
verify_internals()- Description
Perform sanity checks.
This function goes through most of the internal Pike structures and generates a fatal error if one of them is found to be out of order. It is only used for debugging.
- Note
This function does a more thorough check if the Pike runtime has been compiled with RTL debug.
Enum Debug.DecoderFP
Enum Debug.DecoderTags
- ConstantTAG_ARRAY
ConstantTAG_MAPPING
ConstantTAG_MULTISET
ConstantTAG_OBJECT
ConstantTAG_FUNCTION
ConstantTAG_PROGRAM
ConstantTAG_STRING
ConstantTAG_FLOAT
ConstantTAG_INT
ConstantTAG_TYPE constant
Debug.TAG_ARRAY
constant
Debug.TAG_MAPPING
constant
Debug.TAG_MULTISET
constant
Debug.TAG_OBJECT
constant
Debug.TAG_FUNCTION
constant
Debug.TAG_PROGRAM
constant
Debug.TAG_STRING
constant
Debug.TAG_FLOAT
constant
Debug.TAG_INT
constant
Debug.TAG_TYPE
- ConstantTAG_ARRAY
Enum Debug.EntryTypes
- ConstantID_ENTRY_TYPE_CONSTANT
ConstantID_ENTRY_EFUN_CONSTANT
ConstantID_ENTRY_RAW
ConstantID_ENTRY_EOT
ConstantID_ENTRY_VARIABLE
ConstantID_ENTRY_FUNCTION
ConstantID_ENTRY_CONSTANT
ConstantID_ENTRY_INHERIT
ConstantID_ENTRY_ALIAS constant
Debug.ID_ENTRY_TYPE_CONSTANT
constant
Debug.ID_ENTRY_EFUN_CONSTANT
constant
Debug.ID_ENTRY_RAW
constant
Debug.ID_ENTRY_EOT
constant
Debug.ID_ENTRY_VARIABLE
constant
Debug.ID_ENTRY_FUNCTION
constant
Debug.ID_ENTRY_CONSTANT
constant
Debug.ID_ENTRY_INHERIT
constant
Debug.ID_ENTRY_ALIAS
- ConstantID_ENTRY_TYPE_CONSTANT
Enum Debug.PikeTypes
- ConstantT_ATTRIBUTE
ConstantT_NSTRING
ConstantT_NAME
ConstantT_SCOPE
ConstantT_ASSIGN
ConstantT_UNKNOWN
ConstantT_MIXED
ConstantT_NOT
ConstantT_AND
ConstantT_OR constant
Debug.T_ATTRIBUTE
constant
Debug.T_NSTRING
constant
Debug.T_NAME
constant
Debug.T_SCOPE
constant
Debug.T_ASSIGN
constant
Debug.T_UNKNOWN
constant
Debug.T_MIXED
constant
Debug.T_NOT
constant
Debug.T_AND
constant
Debug.T_OR
- ConstantT_ARRAY
ConstantT_MAPPING
ConstantT_MULTISET
ConstantT_OBJECT
ConstantT_FUNCTION
ConstantT_PROGRAM
ConstantT_STRING
ConstantT_TYPE
ConstantT_VOID
ConstantT_MANY constant
Debug.T_ARRAY
constant
Debug.T_MAPPING
constant
Debug.T_MULTISET
constant
Debug.T_OBJECT
constant
Debug.T_FUNCTION
constant
Debug.T_PROGRAM
constant
Debug.T_STRING
constant
Debug.T_TYPE
constant
Debug.T_VOID
constant
Debug.T_MANY
- ConstantT_ATTRIBUTE
Class Debug.Decoder
Class Debug.Inspect
- Description
Allows for interactive debugging and live data structure inspection in both single- and multi-threaded programs. Creates an independent background thread that every
pollinterval
will show a list of running threads. Optionally, atriggersignal
can be specified which allows the dump to be triggered by a signal.Example: In the program you'd like to inspect, insert the following one-liner:
Debug.Inspect("/tmp/test.pike");
Then start the program and keep it running. Next you create a /tmp/test.pike with the following content:
void create(){ werror("Only once per modification of test.pike\n");}int main(){ werror("This will run every iteration\n"); werror("By returning 1 here, we disable the stacktrace dumps\n");return 0;}void _destruct(){ werror("_destruct() runs just as often as create()\n");}
Whenever you edit /tmp/test.pike, it will automatically reload the file.
- Variable_callback
string
|function
(void
:void
) Debug.Inspect._callback- Description
Either the callback function which is invoked on each iteration, or the name of a file which contains a class which is (re)compiled automatically and called on each iteration.
- See also
create
- Variable_loopthread
Thread.Thread
Debug.Inspect._loopthread- Description
The inspect-thread. It will not appear in the displayed thread-list.
- Variablepollinterval
int
Debug.Inspect.pollinterval- Description
The polling interval in seconds, defaults to 4.
- Variabletriggersignal
int
Debug.Inspect.triggersignal- Description
If assigned to, it will allow the diagnostics inspection to be triggered by this signal.
- Methodcreate
Debug.InspectDebug.Inspect(
string
|function
(void
:void
)|void
cb
)- Description
Starts up the background thread.
- Parameter
cb
Specifies either the callback function which is invoked on each iteration, or the name of a file which contains a class which is (re)compiled automatically with an optional
main()
method, which will be called on each iteration. If themain()
method returns 0, new stacktraces will be dumped every iteration; if it returns 1, stacktrace dumping will be suppressed.- Note
The compilation and the running of the callback is guarded by a catch(), so that failures (to compile) in that section will not interfere with the running program.
- Note
If the list of running threads did not change, displaying the list again will be suppressed.
- See also
triggersignal
,pollinterval
,_loopthread
,_callback
,Debug.globals
Class Debug.Rapidlog
- Description
Allows for rapid collection of logdata, which is then fed to the real werror() at idle moments. This allows for logging to occur with minimal timing interference.
- Methodwerror
void
werror(string
format
,mixed
...args
)- Description
Overloads the
predef::werror()
function to allow floods of logentries while introducing minimal latency. Logs are buffered, and periodically flushed from another thread. If the arrival rate of logs is excessive, it simply skips part of the logs to keep up.- Note
When parts are skipped, records are skipped in whole and will never be split up.
- See also
werror_options()
- Methodwerror_options
void
werror_options(int
options
,void
|int
pollinterval
,void
|int
drainrate
,void
|int
maxbufentries
)- Parameter
options
Defaults to
0
, reserved for future enhancements.- Parameter
pollinterval
Pollinterval in seconds for the log-flush thread; defaults to
1
. Logs will only be flushed out, if during the last pollinterval no new logs have been added.- Parameter
drainrate
Maximum number of lines per second that will be dumped to stderr. Defaults to
10
.- Parameter
maxbufentries
Maximum number of buffered logrecords which have not been flushed to stderr yet. If this number is exceeded, the oldest
maxbufentries/2
entries will be skipped; a notice to that effect is logged to stderr.- See also
werror()
Class Debug.Subject
- Description
This is a probe subject which you can send in somewhere to get probed (not to be confused with a probe object, which does some active probing). All calls to LFUNs will be printed to stderr. It is possible to name the subject by passing a string as the first and only argument when creating the subject object.
- Example
> object s = Debug.Subject(); create() > random(s); _random() (1) Result: 0 > abs(s); `<(0) _sprintf(79, ([ ])) (2) Result: Debug.Subject > abs(class { inherit Debug.Subject; int `<(mixed ... args) { return 1; } }()); create() `-() _destruct() (3) Result: 0 > pow(s,2); `[]("pow") Attempt to call the NULL-value Unknown program: 0(2)
Class Debug.Tracer
- Description
A class that when instatiated will turn on trace, and when it's destroyed will turn it off again.
Class Debug.Wrapper
- Description
This wrapper can be placed around another object to get printouts about what is happening to it. Only a few LFUNs are currently supported.
- Example
> object x=Debug.Wrapper(Crypto.MD5()); Debug.Wrapper is proxying ___Nettle.MD5_State() > x->name(); ___Nettle.MD5_State()->name (1) Result: "md5" > !x; !___Nettle.MD5_State() (2) Result: 0
Module Debug.Profiling
- Methoddisplay
void
display(int
|void
num
,string
|array
(string
)|void
pattern
,string
|array
(string
)|void
exclude
)- Description
Show profiling information in a more-or-less readable manner. This only works if pike has been compiled with profiling support.
The function will print to stderr using werror.
This is mainly here for use from the
Debug.Watchdog
class, if you want to do your own formatting or output to some other channel useget_prof_info
instead.
- Methodget_prof_info
array
(array
(string
|float
|int
)) get_prof_info(string
|array
(string
)|void
include
,string
|array
(string
)|void
exclude
)- Description
Collect profiling data.
This will return the CPU usage, by function, since the last time the function was called.
The returned array contains the following entries per entry:
Array string
name
The name of the function.
int
number_of_calls
The number of calls.
float
total_self_time
Total self CPU time in milliseconds.
float
total_cpu_time
Total self CPU time in milliseconds, including children.
float
avg_self_time
Average self CPU time in microseconds.
float
avg_cpu_time
Average self CPU time in microseconds, including children.
float
self_time_pct
The self CPU time as percentage of total time.
float
cpu_time_pct
The self CPU time, including children, as percentage of total time.
string
function_line
Function's definition source location.
- Methoddisplay
- Variableglobals
Module DefaultCompilerEnvironment
- Description
The
CompilerEnvironment
object that is used for loading C-modules and bypredef::compile()
.- Note
predef::compile()
is essentially an alias for theCompilerEnvironment()->compile()
in this object.- See also
CompilerEnvironment
,predef::compile()
Module Error
- Methodmkerror
object
mkerror(mixed
error
)- Description
Returns an Error object for any argument it receives. If the argument already is an Error object or is empty, it does nothing.
Class Error.Generic
- Description
Class for exception objects for errors of unspecified type.
- Variableerror_backtrace
array
(backtrace_frame
|array
(mixed
)) Error.Generic.error_backtrace- Description
The backtrace as returned by
backtrace
where the error occurred.Code that catches and rethrows errors should ensure that this remains the same in the rethrown error.
- Variableerror_message
string
Error.Generic.error_message- Description
The error message. It always ends with a newline (
'\n'
) character and it might be more than one line.Code that catches and rethrows errors may extend this with more error information.
- Method_is_type
bool
res = is_type(Error.Generic()
)- Description
Claims that the error object is an array, for compatibility with old style error handling code.
- Method`[]
array
|string
res =Error.Generic()
[index
]- Description
Index operator.
Simulates an array
Array string
msg
Error message as returned by
message
.array
backtrace
Backtrace as returned by
backtrace
.- Note
The error message is always terminated with a newline.
- See also
backtrace()
- Methodbacktrace
array
backtrace()- Description
Return the backtrace where the error occurred. Normally simply returns
error_backtrace
.- See also
predef::backtrace()
- Methodcast
(
array
)Error.Generic()- Description
Cast operator.
- Note
The only supported type to cast to is
"array"
, which generates an old-style error({
.message
(),backtrace
()})
- Methodcreate
Error.GenericError.Generic(
string
message
,void
|array
(backtrace_frame
|array
(mixed
))backtrace
)
- Methoddescribe
string
describe()- Description
Return a readable error report that includes the backtrace.
- Methodmessage
string
message()- Description
Return a readable message describing the error. Normally simply returns
error_message
.If you override this function then you should ensure that
error_message
is included in the returned message, since there might be code that catches your error objects, extendserror_message
with more info, and rethrows the error.
- Methodmkerror
Module Filesystem
Class Filesystem.Base
- Description
Baseclass that can be extended to create new filesystems. Is used by the Tar and System filesystem classes.
- Methodcd
Base
cd(string
|void
directory
)- Description
Change directory within the filesystem. Returns a new filesystem object with the given directory as cwd.
- Methodchown
void
chown(string
filename
,int
|object
owner
,int
|object
group
)- Description
Change ownership of the file or directory
- Methodfind
array
find(void
|function
(Stat
:int
)mask
,mixed
...extra
)- Description
FIXME: Document this function
- Methodget_dir
array
(string
) get_dir(void
|string
directory
,void
|string
|array
glob
)- Description
Returns an array of all files and directories within a given directory.
- Parameter
directory
Directory where the search should be made within the filesystem. CWD is assumed if none (or 0) is given.
- Parameter
glob
Return only files and dirs matching the glob (if given).
- See also
[get_stats]
- Methodget_stats
array
(Stat
) get_stats(void
|string
directory
,void
|string
|array
glob
)- Description
Returns stat-objects for the files and directories matching the given glob within the given directory.
- See also
[get_dir]
- Methodopen
Stdio.File
open(string
filename
,string
mode
)- Description
Open a file within the filesystem
- Returns
A Stdio.File object.
Class Filesystem.Stat
- Description
Describes the stat of a file
- Variableisblk
bool
Filesystem.Stat.isblk- Description
- fifo
Is the file a FIFO?
- chr
Is the file a character device?
- dir
Is the file (?) a directory?
- blk
Is the file a block device?
- reg
Is the file a regular file?
- lnk
Is the file a link to some other file or directory?
- sock
Is the file a socket?
- door
FIXME: Document this function.
- Returns
1 if the file is of a specific type 0 if the file is not.
- See also
[set_type]
- Note
Read only
- Variableischr
bool
Filesystem.Stat.ischr- Description
- fifo
Is the file a FIFO?
- chr
Is the file a character device?
- dir
Is the file (?) a directory?
- blk
Is the file a block device?
- reg
Is the file a regular file?
- lnk
Is the file a link to some other file or directory?
- sock
Is the file a socket?
- door
FIXME: Document this function.
- Returns
1 if the file is of a specific type 0 if the file is not.
- See also
[set_type]
- Note
Read only
- Variableisdir
bool
Filesystem.Stat.isdir- Description
- fifo
Is the file a FIFO?
- chr
Is the file a character device?
- dir
Is the file (?) a directory?
- blk
Is the file a block device?
- reg
Is the file a regular file?
- lnk
Is the file a link to some other file or directory?
- sock
Is the file a socket?
- door
FIXME: Document this function.
- Returns
1 if the file is of a specific type 0 if the file is not.
- See also
[set_type]
- Note
Read only
- Variableisdoor
bool
Filesystem.Stat.isdoor- Description
- fifo
Is the file a FIFO?
- chr
Is the file a character device?
- dir
Is the file (?) a directory?
- blk
Is the file a block device?
- reg
Is the file a regular file?
- lnk
Is the file a link to some other file or directory?
- sock
Is the file a socket?
- door
FIXME: Document this function.
- Returns
1 if the file is of a specific type 0 if the file is not.
- See also
[set_type]
- Note
Read only
- Variableisfifo
bool
Filesystem.Stat.isfifo- Description
- fifo
Is the file a FIFO?
- chr
Is the file a character device?
- dir
Is the file (?) a directory?
- blk
Is the file a block device?
- reg
Is the file a regular file?
- lnk
Is the file a link to some other file or directory?
- sock
Is the file a socket?
- door
FIXME: Document this function.
- Returns
1 if the file is of a specific type 0 if the file is not.
- See also
[set_type]
- Note
Read only
- Variableislnk
bool
Filesystem.Stat.islnk- Description
- fifo
Is the file a FIFO?
- chr
Is the file a character device?
- dir
Is the file (?) a directory?
- blk
Is the file a block device?
- reg
Is the file a regular file?
- lnk
Is the file a link to some other file or directory?
- sock
Is the file a socket?
- door
FIXME: Document this function.
- Returns
1 if the file is of a specific type 0 if the file is not.
- See also
[set_type]
- Note
Read only
- Variableisreg
bool
Filesystem.Stat.isreg- Description
- fifo
Is the file a FIFO?
- chr
Is the file a character device?
- dir
Is the file (?) a directory?
- blk
Is the file a block device?
- reg
Is the file a regular file?
- lnk
Is the file a link to some other file or directory?
- sock
Is the file a socket?
- door
FIXME: Document this function.
- Returns
1 if the file is of a specific type 0 if the file is not.
- See also
[set_type]
- Note
Read only
- Variableissock
bool
Filesystem.Stat.issock- Description
- fifo
Is the file a FIFO?
- chr
Is the file a character device?
- dir
Is the file (?) a directory?
- blk
Is the file a block device?
- reg
Is the file a regular file?
- lnk
Is the file a link to some other file or directory?
- sock
Is the file a socket?
- door
FIXME: Document this function.
- Returns
1 if the file is of a specific type 0 if the file is not.
- See also
[set_type]
- Note
Read only
- Methodattach_statarray
void
attach_statarray(array
(int
)a
)- Description
Fills the stat-object with data from a Stdio.File.stat() call.
- Methodcd
object
|zero
cd()- Description
Change to the stated directory.
- Returns
the directory if the stated object was a directory, 0 otherwise.
- Methodopen
Stdio.File
open(string
mode
)- Description
Open the stated file within the filesystem
- Returns
a [Stdio.File] object
- See also
[Stdio.File]
- Methodset_type
void
set_type(string
x
)- Description
Set a type for the stat-object.
- Note
This call doesnot change the filetype in the underlaying filesystem.
- Parameter
x
Type to set. Type is one of the following:
- fifo
- chr
- dir
- blk
- reg
- lnk
- sock
- door
- See also
[isfifo], [ischr], [isdir], [isblk], [isreg], [islnk], [issock], [isdoor]
Class Filesystem.System
- Description
Implements an abstraction of the normal filesystem.
- Methodcreate
Filesystem.SystemFilesystem.System(
void
|string
directory
,void
|string
root
,void
|int
fast
,void
|Filesystem.Base
parent
)- Description
Instanciate a new object representing the filesystem.
- Parameter
directory
The directory (in the real filesystem) that should become the root of the filesystemobject.
- Parameter
root
Internal
- Parameter
fast
Internal
- Parameter
parent
Internal
Class Filesystem.Traversion
- Description
Iterator object that traverses a directory tree and returns files as values and paths as indices. Example that uses the iterator to create a really simple sort of make:
- Example
object i=Filesystem.Traversion("."); foreach(i; string dir; string file) { if(!has_suffix(file, ".c")) continue; file = dir+file; string ofile = file; ofile[-1]='o'; object s=file_stat(ofile); if(s && i->stat()->mtime<s->mtime) continue; // compile file }
- Methodcreate
Filesystem.TraversionFilesystem.Traversion(
string
path
,void
|bool
symlink
,void
|bool
ignore_errors
,void
|function
(array
:array
)sort_fun
)- Parameter
path
The root path from which to traverse.
- Parameter
symlink
Don't traverse symlink directories.
- Parameter
ignore_errors
Ignore directories that can not be accessed.
- Parameter
sort_fun
Sort function to be applied to directory entries before traversing. Can also be a filter function.
- Methodprogress
float
progress(void
|float
share
)- Description
Returns the current progress of the traversion as a value between 0.0 and 1.0. Note that this value isn't based on the number of files, but the directory structure.
Module Filesystem.Monitor
Class Filesystem.Monitor.basic
- Description
Basic filesystem monitor.
This module is intended to be used for incremental scanning of a filesystem.
Supports FSEvents on MacOS X and Inotify on Linux to provide low overhead monitoring; other systems use a less efficient polling approach.
- See also
Filesystem.Monitor.symlinks
,System.FSEvents
,System.Inotify
- Constantdefault_file_interval_factor
protected
constantint
Filesystem.Monitor.basic.default_file_interval_factor
- Description
The default factor to multiply
default_max_dir_check_interval
with to get the maximum number of seconds between checks of files.The value can be changed by calling
create()
.The value can be overridden for individual files or directories by calling
monitor()
.Overload this constant to change the default.
- Constantdefault_max_dir_check_interval
protected
constantint
Filesystem.Monitor.basic.default_max_dir_check_interval
- Description
The default maximum number of seconds between checks of directories in seconds.
This value is multiplied with
default_file_interval_factor
to get the corresponding default maximum number of seconds for files.The value can be changed by calling
create()
.The value can be overridden for individual files or directories by calling
monitor()
.Overload this constant to change the default.
- Constantdefault_stable_time
protected
constantint
Filesystem.Monitor.basic.default_stable_time
- Description
The default minimum number of seconds without changes for a change to be regarded as stable (see
stable_data_change()
.
- Variablebackend
protected
Pike.Backend
Filesystem.Monitor.basic.backend- Description
Backend to use.
If
0
(zero) - use the default backend.
- Variableco_id
protected
mixed
Filesystem.Monitor.basic.co_id- Description
Call-out identifier for
backend_check()
if in nonblocking mode.- See also
set_nonblocking()
,set_blocking()
- Variablemonitor_mutex
protected
Thread.Mutex
Filesystem.Monitor.basic.monitor_mutex- Description
Mutex controlling access to
monitor_queue
.
- Variablemonitor_queue
protected
ADT.Heap
Filesystem.Monitor.basic.monitor_queue- Description
Heap containing active
Monitor
s that need polling.The heap is sorted on
Monitor()->next_poll
.
- Variablemonitors
protected
mapping
(string
:Monitor
) Filesystem.Monitor.basic.monitors- Description
Mapping from monitored path to corresponding
Monitor
.The paths are normalized to
canonic_path(path)
,- Note
All filesystems are handled as if case-sensitive. This should not be a problem for case-insensitive filesystems as long as case is maintained.
- Methodadjust_monitor
protected
void
adjust_monitor(Monitor
m
)- Description
Update the position in the
monitor_queue
for the monitorm
to account for an updated next_poll value.
- Methodattr_changed
void
attr_changed(string
path
,Stdio.Stat
st
)- Description
File attribute changed callback.
- Parameter
path
Path of the file or directory which has changed attributes.
- Parameter
st
Status information for
path
as obtained byfile_stat(path, 1)
.This function is called when a change has been detected for an attribute for a monitored file or directory.
Called by
check()
andcheck_monitor()
.- Note
If there is a
data_changed()
callback, it may supersede this callback if the file content also has changed.Overload this to do something useful.
- Methodbackend_check
protected
void
backend_check()- Description
Backend check callback function.
This function is intended to be called from a backend, and performs a
check()
followed by rescheduling itself via a call toset_nonblocking()
.- See also
check()
,set_nonblocking()
- Methodcanonic_path
protected
string
canonic_path(string
path
)- Description
Canonicalize a path.
- Parameter
path
Path to canonicalize.
- Returns
The default implementation returns
combine_path(path, ".")
, i.e. no trailing slashes.
- Methodcheck
int
check(int
|void
max_wait
,int
|void
max_cnt
,mapping
(string
:int
)|void
ret_stats
)- Description
Check for changes.
- Parameter
max_wait
Maximum time in seconds to wait for changes.
-1
for infinite wait.- Parameter
max_cnt
Maximum number of paths to check in this call.
0
(zero) for unlimited.- Parameter
ret_stats
Optional mapping that will be filled with statistics (see below).
A suitable subset of the monitored files will be checked for changes.
- Returns
The function returns when either a change has been detected or when
max_wait
has expired. The returned value indicates the number of seconds until the next call ofcheck()
.If
ret_stats
has been provided, it will be filled with the following entries:"num_monitors"
:int
The total number of active monitors when the scan completed.
"scanned_monitors"
:int
The number of monitors that were scanned for updates during the call.
"updated_monitors"
:int
The number of monitors that were updated during the call.
"idle_time"
:int
The number of seconds that the call slept.
- Note
Any callbacks will be called from the same thread as the one calling
check()
.- See also
check_all()
,monitor()
- Methodcheck_all
void
check_all(mapping
(string
:int
)|void
ret_stats
)- Description
Check all monitors for changes.
- Parameter
ret_stats
Optional mapping that will be filled with statistics (see below).
All monitored paths will be checked for changes.
- Note
You typically don't want to call this function, but instead
check()
.- Note
Any callbacks will be called from the same thread as the one calling
check()
.- See also
check()
,monitor()
- Methodcheck_monitor
protected
bool
check_monitor(Monitor
m
,MonitorFlags
|void
flags
)- Description
Check a single
Monitor
for changes.- Parameter
m
Monitor
to check.- Parameter
flags
0
Don't recurse.
1
Check all monitors for the entire subtree rooted in
m
.This function is called by
check()
for theMonitor
s it considers need checking. If it detects any changes an appropriate callback will be called.- Returns
Returns
1
if a change was detected and0
(zero) otherwise.- Note
Any callbacks will be called from the same thread as the one calling
check_monitor()
.- Note
The return value can not be trusted to return
1
for all detected changes in recursive mode.- See also
check()
,data_changed()
,attr_changed()
,file_created()
,file_deleted()
,stable_data_change()
- Methodclear
void
clear()- Description
Clear the set of monitored files and directories.
- Note
Due to circular datastructures, it's recomended to call this function prior to discarding the object.
- Methodcreate
Filesystem.Monitor.basicFilesystem.Monitor.basic(
int
|void
max_dir_check_interval
,int
|void
file_interval_factor
,int
|void
stable_time
)- Description
Create a new monitor.
- Parameter
max_dir_check_interval
Override of
default_max_dir_check_interval
.- Parameter
file_interval_factor
Override of
default_file_interval_factor
.- Parameter
stable_time
Override of
default_stable_time
.
- Methoddata_changed
void
data_changed(string
path
)- Description
File content changed callback.
- Parameter
path
Path of the file which has had content changed.
This function is called when a change has been detected for a monitored file.
Called by
check()
andcheck_monitor()
.Overload this to do something useful.
- Methodfile_created
void
file_created(string
path
,Stdio.Stat
st
)- Description
File creation callback.
- Parameter
path
Path of the new file or directory.
- Parameter
st
Status information for
path
as obtained byfile_stat(path, 1)
.This function is called when either a monitored path has started existing, or when a new file or directory has been added to a monitored directory.
Called by
check()
andcheck_monitor()
.Overload this to do something useful.
- Note
This callback has similar semantics to
file_exists()
, but is called at run time.- See also
file_exists()
,file_deleted()
,stable_data_change()
- Methodfile_deleted
void
file_deleted(string
path
)- Description
File deletion callback.
- Parameter
path
Path of the new file or directory that has been deleted.
This function is called when either a monitored path has stopped to exist, or when a file or directory has been deleted from a monitored directory.
Called by
check()
andcheck_monitor()
.Overload this to do something useful.
- See also
file_created()
,file_exists()
,stable_data_change()
- Methodfile_exists
void
file_exists(string
path
,Stdio.Stat
st
)- Description
File existance callback.
- Parameter
path
Path of the file or directory.
- Parameter
st
Status information for
path
as obtained byfile_stat(path, 1)
.This function is called during initialization for all monitored paths, and subpaths for monitored directories. It represents the initial state for the monitor.
- Note
For directories,
file_exists()
will be called for the subpaths before the call for the directory itself. This can be used to detect when the initialization for a directory is finished.Called by
check()
andcheck_monitor()
the first time a monitored path is checked (and only if it exists).Overload this to do something useful.
- Note
This callback has similar semantics to
file_created()
, but is called at initialization time.- See also
file_created()
,file_deleted()
,stable_data_change()
- Methodinotify_event
protected
void
inotify_event(int
wd
,int
event
,int
cookie
,string(8bit)
path
)- Description
Event callback for Inotify.
- Methodis_monitored
bool
is_monitored(string
path
)- Description
Check whether a path is monitored or not.
- Parameter
path
Path to check.
- Returns
Returns
1
if there is a monitor onpath
, and0
(zero) otherwise.- See also
monitor()
,release()
- Methodlow_eventstream_callback
protected
void
low_eventstream_callback(string
path
,int
flags
,int
event_id
)- Description
This function is called when the FSEvents EventStream detects a change in one of the monitored directories.
- Methodmonitor
Monitor
|void
monitor(string
path
,MonitorFlags
|void
flags
,int(0..)
|void
max_dir_check_interval
,int(0..)
|void
file_interval_factor
,int(0..)
|void
stable_time
)- Description
Register a
path
for monitoring.- Parameter
path
Path to monitor.
- Parameter
flags
0
Don't recurse.
1
Monitor the entire subtree, and any directories or files that may appear later.
3
Monitor the entire subtree, and any directories or files that may appear later. Remove the monitor automatically when
path
is deleted.- Parameter
max_dir_check_interval
Override of
default_max_dir_check_interval
for this path or subtree.- Parameter
file_interval_factor
Override of
default_file_interval_factor
for this path or subtree.- Parameter
stable_time
Override of
default_stable_time
for this path or subtree.- See also
release()
- Methodmonitor_factory
protected
DefaultMonitor
monitor_factory(string
path
,MonitorFlags
|void
flags
,int(0..)
|void
max_dir_check_interval
,int(0..)
|void
file_interval_factor
,int(0..)
|void
stable_time
)- Description
Create a new
Monitor
for apath
.This function is called by
monitor()
to create a newMonitor
object.The default implementation just calls
DefaultMonitor
with the same arguments.- See also
monitor()
,DefaultMonitor
- Methodrelease
void
release(string
path
,MonitorFlags
|void
flags
)- Description
Release a
path
from monitoring.- Parameter
path
Path to stop monitoring.
- Parameter
flags
0
Don't recurse.
1
Release the entire subtree.
3
Release the entire subtree, but only those paths that were added automatically by a recursive monitor.
- See also
monitor()
- Methodrelease_monitor
protected
void
release_monitor(Monitor
m
)- Description
Release a single
Monitor
from monitoring.- See also
release()
- Methodreport
protected
void
report(SeverityLevel
level
,string(7bit)
fun
,sprintf_format
format
,sprintf_args
...args
)- Description
Event tracing callback.
- Parameter
level
Severity level of the event.
- Parameter
fun
Name of the function that called
report()
.- Parameter
format
sprintf()
formatting string describing the event.- Parameter
args
Optional extra arguments for the
format
string.This function is called in various places to provide granular tracing of the monitor state.
The default implementation calls
werror()
withformat
andargs
iflevel
isERROR
or higher, or if FILESYSTEM_MONITOR_DEBUG has been defined.
- Methodreschedule_backend_check
protected
void
reschedule_backend_check(int
|void
suggested_t
)- Description
Reschedule beckend check.
- Parameter
suggested_t
Suggested time in seconds until next call of
check()
.Register suitable callbacks with the backend to automatically call
check()
.check()
and thus all the callbacks will be called from the backend thread.
- Methodset_backend
void
set_backend(Pike.Backend
|void
backend
)- Description
Change backend.
- Parameter
backend
Backend to use.
0
(zero) for the default backend.
- Methodset_file_interval_factor
void
set_file_interval_factor(int
file_interval_factor
)- Description
Set the
file_interval_factor
.
- Methodset_max_dir_check_interval
void
set_max_dir_check_interval(int
max_dir_check_interval
)- Description
Set the
max_dir_check_interval
.
- Methodset_nonblocking
void
set_nonblocking(int
|void
suggested_t
)- Description
Turn on nonblocking mode.
- Parameter
suggested_t
Suggested time in seconds until next call of
check()
.Register suitable callbacks with the backend to automatically call
check()
.check()
and thus all the callbacks will be called from the backend thread.- Note
If nonblocking mode is already active, this function will be a noop.
- See also
set_blocking()
,check()
.
- Methodstable_data_change
void
stable_data_change(string
path
,Stdio.Stat
st
)- Description
Stable change callback.
- Parameter
path
Path of the file or directory that has stopped changing.
- Parameter
st
Status information for
path
as obtained byfile_stat(path, 1)
.This function is called when previous changes to
path
are considered "stable"."Stable" in this case means that there have been no detected changes for at lease
stable_time
seconds.Called by
check()
andcheck_monitor()
.Overload this to do something useful.
- Note
This callback being called does not mean that the contents or inode has changed, just that they don't seem to change any more. In particular it is called for paths found during initialization after
stable_time
seconds have passed.- See also
file_created()
,file_exists()
,file_deleted()
Enum Filesystem.Monitor.basic.MonitorFlags
- Description
Flags for
Monitor
s.
Class Filesystem.Monitor.basic.DefaultMonitor
- Description
This symbol evaluates to the
Monitor
class used by the default implementation ofmonitor_factory()
.It is currently one of the values
Monitor
,EventStreamMonitor
orInotifyMonitor
.- See also
monitor_factory()
Class Filesystem.Monitor.basic.EventStreamMonitor
- Description
FSEvents EventStream-accelerated
Monitor
.
Class Filesystem.Monitor.basic.InotifyMonitor
- Description
Inotify-accelerated
Monitor
.
Class Filesystem.Monitor.basic.Monitor
- Description
Monitoring information for a single filesystem path.
- See also
monitor()
- Variablepath
Variableflags
Variablemax_dir_check_interval
Variablefile_interval_factor
Variablestable_time string
Filesystem.Monitor.basic.Monitor.pathMonitorFlags
Filesystem.Monitor.basic.Monitor.flagsint
Filesystem.Monitor.basic.Monitor.max_dir_check_intervalint
Filesystem.Monitor.basic.Monitor.file_interval_factorint
Filesystem.Monitor.basic.Monitor.stable_time
- Method__create__
protected
local
void
__create__(string
path
,MonitorFlags
flags
,int
max_dir_check_interval
,int
file_interval_factor
,int
stable_time
)
- Methodattr_changed
protected
void
attr_changed(string
path
,Stdio.Stat
st
)- Description
File attribute or content changed callback.
- Parameter
st
Status information for
path
as obtained byfile_stat(path, 1)
.This function is called when a change has been detected for an attribute for a monitored file or directory.
Called by
check()
andcheck_monitor()
.The default implementation calls
global::attr_changed()
orglobal::data_changed()
depending on the state.- Note
If there is a
data_changed()
callback, it may supersede this callback if the file content also has changed.
- Methodbump
void
bump(MonitorFlags
|void
flags
,int
|void
seconds
)- Description
Bump the monitor to an earlier scan time.
- Parameter
flags
0
Don't recurse.
1
Check all monitors for the entire subtree.
- Parameter
seconds
Number of seconds from now to run next scan. Defaults to half of the remaining interval.
- Methodcall_callback
protected
void
call_callback(function
(string
,Stdio.Stat
|void
:void
)cb
,string
path
,Stdio.Stat
|void
st
)- Description
Call a notification callback.
- Parameter
cb
Callback to call or
UNDEFINED
for no operation.- Parameter
path
Path to notify on.
- Parameter
st
Stat for the
path
.
- Methodcheck
bool
check(MonitorFlags
|void
flags
)- Description
Check for changes.
- Parameter
flags
0
Don't recurse.
1
Check all monitors for the entire subtree rooted in
m
.This function is called by
check()
for theMonitor
s it considers need checking. If it detects any changes an appropriate callback will be called.- Returns
Returns
1
if a change was detected and0
(zero) otherwise.- Note
Any callbacks will be called from the same thread as the one calling
check_monitor()
.- Note
The return value can not be trusted to return
1
for all detected changes in recursive mode.- See also
check()
,data_changed()
,attr_changed()
,file_created()
,file_deleted()
,stable_data_change()
- Methodcheck_for_release
void
check_for_release(int
mask
,int
flags
)- Description
Check if this monitor should be removed automatically.
- Methodfile_created
protected
void
file_created(string
path
,Stdio.Stat
st
)- Description
File creation callback.
- Parameter
st
Status information for
path
as obtained byfile_stat(path, 1)
.This function is called when either a monitored path has started existing, or when a new file or directory has been added to a monitored directory.
Called by
check()
andcheck_monitor()
.The default implementation registers the path, and calls
global::file_deleted()
.- Note
This callback has similar semantics to
file_exists()
, but is called at run time.- See also
file_exists()
,file_deleted()
,stable_data_change()
- Methodfile_deleted
protected
void
file_deleted(string
path
,Stdio.Stat
|void
old_st
)- Description
File deletion callback.
- Parameter
path
Path of the new file or directory that has been deleted.
- Parameter
old_st
Stat for the file prior to deletion (if known). Note that this argument is not passed along to top level function.
This function is called when either a monitored path has stopped to exist, or when a file or directory has been deleted from a monitored directory.
Called by
check()
andcheck_monitor()
.The default implementation unregisters the path, and calls
global::file_deleted()
.- See also
file_created()
,file_exists()
,stable_data_change()
- Methodfile_exists
protected
void
file_exists(string
path
,Stdio.Stat
st
)- Description
File existance callback.
- Parameter
st
Status information for
path
as obtained byfile_stat(path, 1)
.This function is called during initialization for all monitored paths, and subpaths for monitored directories. It represents the initial state for the monitor.
- Note
For directories,
file_created()
will be called for the subpaths before the call for the directory itself. This can be used to detect when the initialization for a directory is finished.Called by
check()
andcheck_monitor()
the first time a monitored path is checked (and only if it exists).The default implementation registers the path, and calls
global::file_exists()
.- Note
This callback has similar semantics to
file_created()
, but is called at initialization time.- See also
file_created()
,file_deleted()
,stable_data_change()
- Methodmonitor
protected
void
monitor(string
path
,int
flags
,int
max_dir_interval
,int
file_interval_factor
,int
stable_time
)- Description
Called to create a sub monitor.
- Methodparent
this_program
parent()- Description
Returns the parent monitor, or UNDEFINED if no such monitor exists.
- Methodregister_path
protected
void
register_path(int
|void
initial
)- Description
Register the
Monitor
with the monitoring system.- Parameter
initial
Indicates that the
Monitor
is newly created.
- Methodreport
protected
void
report(SeverityLevel
level
,string(7bit)
fun
,sprintf_format
format
,sprintf_args
...args
)- Description
Event tracing callback.
- Parameter
level
Severity level of the event.
- Parameter
fun
Name of the function that called
report()
.- Parameter
format
sprintf()
formatting string describing the event.- Parameter
args
Optional extra arguments for the
format
string.This function is called in various places to provide granular tracing of the monitor state.
The default implementation just calls
global::report()
with the same arguments.
- Methodstable_data_change
protected
void
stable_data_change(string
path
,Stdio.Stat
st
)- Description
Stable change callback.
- Parameter
st
Status information for
path
as obtained byfile_stat(path, 1)
.This function is called when previous changes to
path
are considered "stable"."Stable" in this case means that there have been no detected changes for at lease
stable_time
seconds.Called by
check()
andcheck_monitor()
.The default implementation calls
global::stable_data_change()
.- Note
This callback being called does not mean that the contents or inode has changed, just that they don't seem to change any more. In particular it is called for paths found during initialization after
stable_time
seconds have passed.- See also
file_created()
,file_exists()
,file_deleted()
- Methodstatus_change
protected
bool
status_change(Stdio.Stat
old_st
,Stdio.Stat
st
,int
orig_flags
,int
flags
)- Description
Called when the status has changed for an existing file.
- Methodsubmonitor_released
void
submonitor_released(this_program
submon
)- Description
To be called when a (direct) submonitor is released.
- Methodunregister_path
protected
void
unregister_path(int
|void
dying
)- Description
Unregister the
Monitor
from the monitoring system.- Parameter
dying
Indicates that the
Monitor
is being destructed. It is the destruction cause value offset by one.
Class Filesystem.Monitor.debug
- Description
Debugging filesystem monitor.
This module behaves as
symlinks
, but has default implementations of all callbacks that callreport()
, as well as an implementation of [report()] that logs everything toStdio.stderr
.- See also
Filesystem.Monitor.basic
,Filesystem.Monitor.symlinks
Class Filesystem.Monitor.symlinks
- Description
Filesystem monitor with support for symbolic links.
This module extends
Filesystem.Monitor.basic
with support for symbolic links.- Note
For operating systems where symbolic links aren't supported, this module will behave exactly like
Filesystem.Monitor.basic
.- See also
Filesystem.Monitor.basic
- Variableavailable_ids
protected
int
Filesystem.Monitor.symlinks.available_ids- Description
Bitmask of all unallocated symlink ids.
- Variablesymlink_ids
protected
mapping
(string
:int
) Filesystem.Monitor.symlinks.symlink_ids- Description
Mapping from symlink name to symlink id.
- Variablesymlink_targets
protected
mapping
(string
:string
) Filesystem.Monitor.symlinks.symlink_targets- Description
Mapping from symlink name to symlink target.
- Methodallocate_symlink
protected
int
allocate_symlink(string
sym
)- Description
Allocates a symlink id for the link
sym
.
- Methodattr_changed
void
attr_changed(string
path
,Stdio.Stat
st
)- Description
File attribute changed callback.
- Parameter
path
Path of the file or directory which has changed attributes.
- Parameter
st
Status information for
path
as obtained byfile_stat(path)
.This function is called when a change has been detected for an attribute for a monitored file or directory.
Called by
check()
andcheck_monitor()
.- Note
If there is a
data_changed()
callback, it may supersede this callback if the file content also has changed.- Note
It differs from the
Filesystem.Monitor.basic
version in that symbolic links have thest
of their targets.Overload this to do something useful.
- Methodfile_created
void
file_created(string
path
,Stdio.Stat
st
)- Description
File creation callback.
- Parameter
path
Path of the new file or directory.
- Parameter
st
Status information for
path
as obtained byfile_stat(path)
.This function is called when either a monitored path has started existing, or when a new file or directory has been added to a monitored directory.
- Note
It differs from the
Filesystem.Monitor.basic
version in that symbolic links have thest
of their targets.Called by
check()
andcheck_monitor()
.Overload this to do something useful.
- Methodfile_exists
void
file_exists(string
path
,Stdio.Stat
st
)- Description
File existance callback.
- Parameter
path
Path of the file or directory.
- Parameter
st
Status information for
path
as obtained byfile_stat(path)
.This function is called during initialization for all monitored paths, and subpaths for monitored directories. It represents the initial state for the monitor.
- Note
For directories,
file_created()
will be called for the subpaths before the call for the directory itself. This can be used to detect when the initialization for a directory is finished.- Note
It differs from the
Filesystem.Monitor.basic
version in that symbolic links have thest
of their targets.Called by
check()
andcheck_monitor()
the first time a monitored path is checked (and only if it exists).Overload this to do something useful.
- Methodstable_data_change
void
stable_data_change(string
path
,Stdio.Stat
st
)- Description
Stable change callback.
- Parameter
path
Path of the file or directory that has stopped changing.
- Parameter
st
Status information for
path
as obtained byfile_stat(path)
.This function is called when previous changes to
path
are considered "stable"."Stable" in this case means that there have been no detected changes for at lease
stable_time
seconds.- Note
It differs from the
Filesystem.Monitor.basic
version in that symbolic links have thest
of their targets.Called by
check()
andcheck_monitor()
.Overload this to do something useful.
Class Filesystem.Monitor.symlinks.DefaultMonitor
- Description
Monitoring information for a single filesystem path.
With support for expansion of symbolic links.
- See also
monitor()
- InheritDefaultMonitor
inherit basic::DefaultMonitor : DefaultMonitor
- Description
Based on
Filesystem.Monitor.basic.DefaultMonitor
.
- Variablesymlinks
int
Filesystem.Monitor.symlinks.DefaultMonitor.symlinks- Description
Mask of symlink ids that can reach this monitor.
- Methodattr_changed
protected
void
attr_changed(string
path
,Stdio.Stat
st
)- Description
File attribute or content changed callback.
- Parameter
st
Status information for
path
as obtained byfile_stat(path, 1)
.This function is called when a change has been detected for an attribute for a monitored file or directory.
Called by
check()
andcheck_monitor()
.- Note
If there is a
data_changed()
callback, it may supersede this callback if the file content also has changed.
- Methodcall_callback
protected
void
call_callback(function
(string
,__unknown__
... :void
)cb
,string
path
,Stdio.Stat
|void
st
)- Description
Call a notification callback and handle symlink expansion.
- Parameter
cb
Callback to call or
UNDEFINED
for no operation.- Parameter
extras
Extra arguments after the
path
argument tocb
.
- Methodcheck_for_release
void
check_for_release(int
mask
,int
flags
)- Description
Check if this monitor should be removed automatically.
- Methodcheck_symlink
protected
void
check_symlink(string
path
,Stdio.Stat
|zero
st
,int
|void
inhibit_notify
)- Description
Check whether a symlink has changed.
- Methodfile_created
protected
void
file_created(string
path
,Stdio.Stat
st
)- Description
File creation callback.
- Parameter
st
Status information for
path
as obtained byfile_stat(path, 1)
.This function is called when either a monitored path has started existing, or when a new file or directory has been added to a monitored directory.
Called by
check()
andcheck_monitor()
.
- Methodfile_deleted
protected
void
file_deleted(string
path
,Stdio.Stat
old_st
)- Description
File deletion callback.
- Parameter
path
Path of the new file or directory that has been deleted.
This function is called when either a monitored path has stopped to exist, or when a file or directory has been deleted from a monitored directory.
Called by
check()
andcheck_monitor()
.
- Methodfile_exists
protected
void
file_exists(string
path
,Stdio.Stat
st
)- Description
File existance callback.
- Parameter
st
Status information for
path
as obtained byfile_stat(path, 1)
.This function is called during initialization for all monitored paths, and subpaths for monitored directories. It represents the initial state for the monitor.
- Note
For directories,
file_created()
will be called for the subpaths before the call for the directory itself. This can be used to detect when the initialization for a directory is finished.Called by
check()
andcheck_monitor()
the first time a monitored path is checked (and only if it exists).
- Methodlow_call_callback
void
low_call_callback(function
(string
,__unknown__
... :void
)cb
,mapping
(string
:int
)state
,mapping
(string
:string
)symlink_targets
,string
path
,Stdio.Stat
|void
st
,string
|void
symlink
)- Description
Call a notification callback and handle symlink expansion.
- Parameter
cb
Callback to call or
UNDEFINED
for no operation.- Parameter
state
State mapping to avoid multiple notification and infinite loops. Call with an empty mapping.
- Parameter
symlinks
Symlinks that have not been expanded yet.
- Parameter
path
Path to notify on.
- Parameter
extras
Extra arguments to
cb
.- Parameter
symlink
Symbolic link that must have been followed for the callback to be called.
- Methodmonitor
protected
void
monitor(string
path
,int
flags
,int
max_dir_interval
,int
file_interval_factor
,int
stable_time
)- Description
Called to create a sub monitor.
- Methodstable_data_change
protected
void
stable_data_change(string
path
,Stdio.Stat
st
)- Description
Stable change callback.
- Parameter
st
Status information for
path
as obtained byfile_stat(path, 1)
.This function is called when previous changes to
path
are considered "stable"."Stable" in this case means that there have been no detected changes for at lease
stable_time
seconds.Called by
check()
andcheck_monitor()
.
- Methodstatus_change
protected
bool
status_change(Stdio.Stat
old_st
,Stdio.Stat
st
,int
orig_flags
,int
flags
)- Description
Called when the status has changed for an existing file.
Module Filesystem.Tar
- Description
Filesystem which can be used to mount a Tar file.
Two kinds of extended tar file records are supported:
"ustar\0\60\60"
POSIX ustar (Version 0?).
"ustar \0"
GNU tar (POSIX draft)
- Note
For a quick start, you probably want to use
`()()
.- See also
`()()
- ConstantEXTRACT_CHOWN
constant
int
Filesystem.Tar.EXTRACT_CHOWN
- Description
Set owning user and group from the tar records.
- ConstantEXTRACT_ERR_ON_UNKNOWN
constant
int
Filesystem.Tar.EXTRACT_ERR_ON_UNKNOWN
- Description
Throw an error if an entry of an unsupported type is encountered. This is ignored otherwise.
- ConstantEXTRACT_SKIP_EXT_MODE
constant
int
Filesystem.Tar.EXTRACT_SKIP_EXT_MODE
- Description
Don't set set-user-ID, set-group-ID, or sticky bits from the tar records.
- ConstantEXTRACT_SKIP_MODE
constant
int
Filesystem.Tar.EXTRACT_SKIP_MODE
- Description
Don't set any permission bits from the tar records.
- ConstantEXTRACT_SKIP_MTIME
constant
int
Filesystem.Tar.EXTRACT_SKIP_MTIME
- Description
Don't set mtime from the tar records.
Class Filesystem.Tar._Tar
- Description
Low-level Tar Filesystem.
- Methodextract
void
extract(string
src_dir
,string
dest_dir
,void
|string
|function
(string
,Filesystem.Stat
:int
|string
)filter
,void
|int
flags
)- Description
Extracts files from the tar file in sequential order.
- Parameter
src_dir
The root directory in the tar file system to extract.
- Parameter
dest_dir
The root directory in the real file system that will receive the contents of
src_dir
. It is assumed to exist and be writable.- Parameter
filter
A filter for the entries under
src_dir
to extract. If it's a string then it's taken as a glob pattern which is matched against the path belowsrc_dir
. That path always begins with a/
. For directory entries it ends with a/
too, otherwise not.If it's a function then it's called for every entry under
src_dir
, and those where it returns nonzero are extracted. The function receives the path part belowsrc_dir
as the first argument, which is the same as in the glob case above, and the stat struct as the second. If the function returns a string, it's taken as the path belowdest_dir
where this entry should be extracted (any missing directories are created automatically).If
filter
is zero, then everything belowsrc_dir
is extracted.- Parameter
flags
Bitfield of flags to control the extraction:
Filesystem.Tar.EXTRACT_SKIP_MODE
Don't set any permission bits from the tar records.
Filesystem.Tar.EXTRACT_SKIP_EXT_MODE
Don't set set-user-ID, set-group-ID, or sticky bits from the tar records.
Filesystem.Tar.EXTRACT_SKIP_MTIME
Don't set mtime from the tar records.
Filesystem.Tar.EXTRACT_CHOWN
Set owning user and group from the tar records.
Filesystem.Tar.EXTRACT_ERR_ON_UNKNOWN
Throw an error if an entry of an unsupported type is encountered. This is ignored otherwise.
Files and directories are supported on all platforms, and symlinks are supported whereever
symlink
exists. Other record types are currently not supported.- Throws
I/O errors are thrown.
Class Filesystem.Tar._TarFS
- Methodcreate
Filesystem.Tar._TarFSFilesystem.Tar._TarFS(
_Tar
_tar
,string
_wd
,string
_root
,Filesystem.Base
_parent
)
- Methodcreate
Class Filesystem.Tar.`()
- Methodcreate
Filesystem.Tar.`()Filesystem.Tar.`()(
string
filename
,void
|Filesystem.Base
parent
,void
|object
file
)- Parameter
filename
The tar file to mount.
- Parameter
parent
The parent filesystem. If none is given, the normal system filesystem is assumed. This allows mounting a TAR-file within a tarfile.
- Parameter
file
If specified, this should be an open file descriptor. This object could e.g. be a
Stdio.File
,Gz.File
orBz2.File
object.
- Methodcreate
Module Filesystem.Zip
- Methodcreate
void
Filesystem.Zipcreate(string
filename
,void
|Filesystem.Base
parent
,void
|object
file
)- Description
Filesystem which can be used to mount a ZIP file.
- Parameter
filename
The tar file to mount.
- Parameter
parent
The parent filesystem. If non is given, the normal system filesystem is assumed. This allows mounting a ZIP-file within a zipfile.
- Parameter
file
If specified, this should be an open file descriptor. This object could e.g. be a
Stdio.File
or similar object.
Class Filesystem.Zip.Decrypt
- Description
traditional Zip encryption is CRC32 based, and rather insecure. support here exists to ease transition and to work with legacy files.
Class Filesystem.Zip._Zip
- Description
A class for reading and writing ZIP files.
Note that this class does not support the full ZIP format specification, but does support the most common features.
Storing, Deflating and Bzip2 (if the Bz2 module is available) are supported storage methods.
This class is able to extract data from traditional ZIP password encrypted archives.
Notably, advanced PKware encryption (beyond reading traditional password protected archives) and multi-part archives are not currently supported.
- Methodadd_dir
void
add_dir(string
path
,int
recurse
,string
|void
archiveroot
)- Description
adds a directory to an archive
- Methodadd_file
void
add_file(string
filename
,string
|Stdio.File
|zero
data
,int
|object
|void
stamp
,int
|void
no_compress
)- Description
add a file to an archive.
- Methodcreate
Filesystem.Zip._ZipFilesystem.Zip._Zip(
object
|void
fd
,string
|void
filename
,object
|void
parent
)
- Methoddate_dos2unix
int
date_dos2unix(int
time
,int
date
)- Description
Convert MS-DOS time/date pair to a linear UNIX date.
- Methoddate_unix2dos
array
date_unix2dos(int
unix_date
)- Description
Convert linear UNIX date to a MS-DOS time/date pair.
- Returns
an array containing ({time, date})
- Methodset_compression_value
void
set_compression_value(int(0..9)
v
)- Description
sets the compression value (0 to 9)
- Methodset_password
void
set_password(string
pw
)- Description
sets the password to be used for files encrypted using traditional PKZip encryption.
- Methodset_zip64
void
set_zip64(int
flag
)- Description
enable zip64 extensions (large files) for this archive
- Note
This setting may be used to force zip64 for files that do not otherwise require its use. If a file whose properties requires the use of zip65 is added to an archive, zip64 extensions will be enabled automatically.
- Methodcreate
Module Fuse
- Description
Fuse - Filesystem in USErspace
FUSE (Filesystem in USErspace) provides a simple interface for userspace programs to export a virtual filesystem to the Linux kernel. FUSE also aims to provide a secure method for non privileged users to create and mount their own filesystem implementations.
See http://sourceforge.net/projects/fuse/ for more information
This module maps the Fuse library more or less directly to pike.
In order to create a filesystem, create a subclass of the
Operations
class, clone it and pass it to therun
method.You do not need to implemnent all functions, but at least getattr, readdir and read are needed to make a useable filesystem.
A tip: ERRNO constants are available in the System module, and if one is missing /usr/include/asm[-generic]/errno.h can be included in pike programs on Linux.
- ConstantFUSE_MAJOR_VERSION
ConstantFUSE_MINOR_VERSION constant
Fuse.FUSE_MAJOR_VERSION
constant
Fuse.FUSE_MINOR_VERSION
- Description
The version of FUSE
- Methodrun
void
run(Operations
handler
,array
(string
)args
)- Description
Start fuse. Args is as in argv in main(). This function will not return.
The first argument (argv[0], program name) is used as the filesystem name. The first non-flag argument after argv[0] is used as the mountpoint. Otherwise these arguments are supported:
-d enable debug output (implies -f) -f foreground operation -s disable multithreaded operation -r mount read only (equivalent to '-o ro') -o opt,[opt...] mount options -h print help
Mount options:
rootmode=M permissions of the '/' directory in the filesystem (octal) user_id=N user of '/' (numeric) group_id=N group of '/' (numeric) default_permissions enable permission checking By default FUSE doesn't check file access permissions, the filesystem is free to implement it's access policy or leave it to the underlying file access mechanism (e.g. in case of network filesystems). This option enables permission checking, restricting access based on file mode. It is usually useful together with the 'allow_other' mount option. allow_other allow access to other users This option overrides the security measure restricting file access to the user mounting the filesystem. This option is by default only allowed to root, but this restriction can be removed with a (userspace) configuration option (in fuse.ini). large_read issue large read requests (2.4 only) max_read=N set maximum size of read requests (default 128K) hard_remove immediate removal (don't hide files) debug enable debug output fsname=NAME set filesystem name in mtab (overrides argv[0])
Class Fuse.Operations
- Description
This is the interface you have to implement to write a FUSE filesystem If something goes wrong in your callback, always return errno. Unless the function returns a specific value (Stat, string or similar), return 0 if all is well.
You do not have to implement all functions. Unimplemented functions have a default implementation that returns -ENOIMPL.
- ConstantDT_UNKNOWN
final
constantint
Fuse.Operations.DT_UNKNOWN
- Description
Unkown directory entry type
- ConstantF_GETLK
ConstantF_SETLK
ConstantF_SETLKW
ConstantF_RDLCK
ConstantF_WRLCK
ConstantF_UNLCK
Fuse.Operations.final
constantF_GETLK
Fuse.Operations.final
constantF_SETLK
Fuse.Operations.final
constantF_SETLKW
Fuse.Operations.final
constantF_RDLCK
Fuse.Operations.final
constantF_WRLCK
Fuse.Operations.final
constantF_UNLCK
- Description
lock() mode operations.
- Methodaccess
int
access(string
path
,int
mode
)- Description
Return if the user is allowed to access the
path
. If the 'default_permissions' mount option is given, this method is not called.
- Methodchmod
int
chmod(string
path
,int
mode
)- Description
Change the permission of a file or directory
- Returns
errno or 0
- Methodchown
int
chown(string
path
,int
uid
,int
gid
)- Description
Change the owner of a file or directory
- Returns
errno or 0
- Methodcreat
int
creat(string
path
,int
mode
,int
flag
)- Description
Create and open or just open the given
path
- Methodfsync
int
fsync(string
path
,int
datasync
)- Description
Flush data and user-data to disk. Not required. If the
datasync
parameter is non-zero, then only the user data should be flushed, not the meta data.
- Methodgetattr
Stdio.Stat
|int(1..)
getattr(string
path
)- Description
Stat a file.
- Note
This function is required.
- Returns
A
Stdio.Stat
object or an errno.
- Methodgetxattr
string
getxattr(string
path
,string
name
)- Description
Get the extended attribute
name
onpath
- Methodlink
int
link(string
source
,string
destination
)- Description
Create a hard link from source to destination.
- Returns
errno or 0
- Methodlistxattr
array
(string
)|int
listxattr(string
path
)- Description
Return a list of all available extended attributes on
path
- Methodlock
mapping
(string
:int
)|int
lock(string
path
,int
mode
,mapping
(string
:int
)how
)- Description
Lock, unlock or test for the existence of record locks (POSIX file locking). The owner of the lock is identified by
how->owner
If you only need local file-locking on the computer the filesystem is mounted on you do not need to implement this interface. This is only needed for network filesystems that want locking to work over the network.
The operation mode depends on the mode argument.
F_SETLK
Acquire a lock (when
how->type
isF_RDLCK
orF_WRLCK
) or release a lock (whenhow->type
isF_UNLCK
) on the bytes specified by the how->whence, how->start, and how->len fields of lock. If a conflicting lock is held by another process, you should return EACCES or EAGAIN.F_SETLKW
Identical to SETLK, but if a lock is held on the file, wait for it to be released before returning. You are allowed to return EINTR, to signal that the waiting has been interrupted and must be restarted.
F_GETLK
Identical to SETLK, but do not actually aquire the lock if it can be aquired. If one or more incompatible locks would prevent this lock being placed, then fcntl() returns details about one of these locks in the type, whence, start, and len fields of
how
and setpid
to be the PID of the process holding that lock. Then return the mapping.
- Methodmknod
int
mknod(string
path
,int
mode
,int
rdev
)- Description
Create a node (file, device special, or named pipe). See man 2 mknod
- Returns
errno or 0
- Methodopen
int
open(string
path
,int
mode
)- Description
Open
path
.mode
is as for the system call open. (mode & O_ACCMODE) is one of O_RDONLY, O_WRONLY and O_RDWR. The mode can also contain other flags, most notably O_APPEND.- Note
You do not really have to implement this function. It's useful to start prefetch and to cache open files, and check that the user has permission to read/write the file.
- Returns
errno or 0
- Methodread
string
|int(1..)
read(string
path
,int
len
,int
offset
)- Description
Read data from a file. You have to return at most
len
bytes, wunless an error occurs, or there is less than len bytes of data still left to read.- Returns
errno or the data
- Methodreaddir
int
readdir(string
path
,function
(string
:void
)callback
)- Description
Get directory contents.
Call the callback once per file in the directory with the filename as the argument.
- Note
This function is required.
- Returns
errno or 0
- Methodreadlink
string
|int(1..)
readlink(string
path
)- Description
Read a symlink.
- Returns
The symlink contents or errno
- Methodrelease
int
release(string
path
)- Description
The inverse of open.
- Note
The file might very well be openend multiple times. Keep reference counts.
- Methodremovexattr
int
removexattr(string
path
,string
name
)- Description
Remove the extended attribute
name
frompath
- Methodrename
int
rename(string
source
,string
destination
)- Description
Rename
source
todestination
.- Returns
errno or 0
- Methodsetxattr
int
setxattr(string
path
,string
name
,string
value
,int
flags
)- Description
Set the extended attrbiute
name
onpath
tovalue
- Methodstatfs
mapping
(string
:int
) statfs(string
path
)- Description
Stat a filesystem. Mapping as from
filesystem_stat
- Note
required for 'df' support, without this function there is an error each time 'df' is run.
- Methodsymlink
int
symlink(string
source
,string
destination
)- Description
Create a symlink from source to destination.
- Returns
errno or 0
- Methodtruncate
int
truncate(string
path
,int
new_length
)- Description
Shrink or enlarge a file
- Returns
errno or 0
- Methodutime
int
utime(string
path
,int
atime
,int
mtime
)- Description
Set access and modification time. The arguments are the number of seconds since jan 1 1970 00:00.
This function is deprecated, utimens is the recommended method.
- Returns
errno or 0
- Methodutimens
int
utimens(string
path
,int
atime
,int
mtime
)- Description
Set access and modification time, with nanosecond resolution. The arguments are the number of nanoseconds since jan 1 1970 00:00.
- Returns
errno or 0
Module Geography
Class Geography.Position
- Description
This class contains a geographical position, ie a point on the earths surface. The resulting position object implements comparision methods (__hash, `==, `< and `>) so that you can compare and sort positions as well as using them as index in mappings. Comparision is made primary on latidue and secondly on longitude. It does not currently take the ellipsoid into account.
It is possible to cast a position into an array, which will yield ({ float latitude, float longitude }), as well as into a string.
- Constantellipsoids
constant
Geography.Position.ellipsoids
- Description
A mapping with reference ellipsoids, which can be fed to the UTM converter. The mapping maps the name of the ellipsoid to an array where the first element is a float describing the equatorial radius and the second element is a float describing the polar radius.
- Variablealt
float
Geography.Position.alt- Description
Altitud of the position, in meters. Positive numbers is up. Zero is the shell of the current ellipsoid.
- Variableequatorial_radius
float
Geography.Position.equatorial_radius- Description
The equatorial radius is how many meters the earth radius is at the equator (east-west direction).
- Variablelat
float
Geography.Position.lat- Description
Latitude (N--S) of the position, in degrees. Positive number is north, negative number is south.
- Variablelong
float
Geography.Position.long- Description
Longitude (W--E) of the position, in degrees. Positive number is east, negative number is west.
- Variablepolar_radius
float
Geography.Position.polar_radius- Description
The polar radius is how many meters the earth radius is at the poles (north-south direction).
- MethodECEF
array
(float
) ECEF()- Description
Returns the current position as Earth Centered Earth Fixed Cartesian Coordinates.
- Returns
({ X, Y, Z })
- MethodGEOREF
string
GEOREF()- Description
Gives the full GEOREF position for the current position, e.g. "LDJA0511".
- MethodUTM
string
UTM(int
precision
)- Description
Returns the current UTM coordinates position. An example output is "32T 442063.562 5247479.500" where the parts are zone number + zone designator, easting and northing.
- MethodUTM_offset
array
(float
) UTM_offset()- Description
Returns the offset within the present UTM cell. The result will be returned in an array of floats, containing easting and northing.
- MethodUTM_zone_designator
string
UTM_zone_designator()- Description
Returns the UTM letter designator for the current latitude. Returns "Z" if latitude is outside the UTM limits of 84N to 80S.
- MethodUTM_zone_number
int
UTM_zone_number()- Description
Returns the UTM zone number for the current longitude, with correction for the Svalbard deviations.
- Methodapprox_height
float
approx_height()- Description
Returns a very crude approximation of where the ground level is at the current position, compared against the ellipsoid shell. WGS-84 is assumed, but the approximation is so bad that it doesn't matter which of the standard ellipsoids is used.
- Methodcreate
Geography.PositionGeography.Position(
int
|float
lat
,int
|float
long
,void
|int
|float
alt
)Geography.PositionGeography.Position(
string
lat
,string
long
)Geography.PositionGeography.Position(
string
position
)Geography.PositionGeography.Position()
- Description
Constructor for this class. If fed with strings, it will perform a dwim scan on the strings. If they fails to be understood, there will be an exception.
- Methodeccentricity_squared
float
eccentricity_squared()- Description
Returns the first eccentricity squared for the selected earth approximation ellipsoid.
- Methodeuclidian_distance
float
euclidian_distance(this_program
p
)- Description
Calculate the euclidian distance between two Geography.Position. Result is in meter. This uses the ECEF function.
- Methodflattening
float
flattening()- Description
Returns the flattening factor for the selected earth approximation ellipsoid.
- Methodlatitude
Methodlongitude string
latitude(void
|int
n
)string
longitude(void
|int
n
)- Description
Returns the nicely formatted latitude or longitude.
0
"17°42.19'N" / "42°22.2'W"
1
"17.703°N" / "42.37°W"
2
"17°42.18'N" / "42°22.2'W"
3
"17°42'10.4"N" / "42°22'12"W"
-1
"17.703" / "-42.37"
- Methodset_ellipsoid
bool
set_ellipsoid(string
name
)bool
set_ellipsoid(float
equatorial_radius
,float
polar_radius
)- Description
Sets the equatorial and polar radius to the provided values. A name can also be provided, in which case the radius will be looked up in the ellipsoid mapping. The function returns 1 upon success, 0 on failure.
"Airy 1830"
"ATS77"
"Australian National"
"Bessel 1841"
"Bessel 1841 Namibia"
"Clarke 1866"
"Clarke 1880"
"Everest"
"Everest 1830"
"Everest 1848"
"Everest 1856"
"Everest 1869"
"Everest Pakistan"
"Fisher 1960"
"Fisher 1968"
"G R S 1967"
"G R S 1975"
"G R S 1980"
"Helmert 1906"
"Hough 1956"
"Indonesian 1974"
"Krassovsky 1940"
"Mercury"
"Modified Airy"
"Modified Fisher 1960"
"New International 1967"
"SGS 85"
"South American 1969"
"Sphere"
"WGS 60"
"WGS 66"
"WGS 72"
"WGS 84"
- Note
The longitude and lattitude are not converted to the new ellipsoid.
- Methodset_from_RT38
void
set_from_RT38(int
|float
|string
x_n
,int
|float
|string
y_e
)- Description
Sets the longitude and lattitude from the given RT38 coordinates.
- Methodset_from_UTM
void
set_from_UTM(int
zone_number
,string
zone_designator
,float
UTME
,float
UTMN
)- Description
Sets the longitude and lattitude from the given UTM coordinates.
Class Geography.PositionRT38
- Description
Create a Position object from a RT38 coordinate
Module Geography.Countries
- Method`[]
Method`-> mixed
`[](string
what
)mixed
`->(string
what
)- Description
Convenience functions for getting a country the name-space way; it looks up whatever it is in the name- and domain-space and returns that country if possible:
>Geography.Countries.se; Result: Country(Sweden)>Geography.Countries.djibouti; Result: Country(Djibouti)>Geography.Countries.com; Result: Country(United States)>Geography.Countries.wallis_and_futuna_islands->iso2; Result:"WF"
- Methodcontinents
mapping
(string
:array
(Country
)) continents()- Description
Gives back a mapping from continent name to an array of the countries on that continent.
The continents are:
"Europe" "Africa" "Asia" "North America" "South America" "Oceania" "Antarctica"
- Note
Some countries are considered to be on more than one continent.
- Methodfrom_domain
Country
from_domain(string
domain
)- Description
Look up a country from a domain name. Returns zero if the domain doesn't map to a country. Note that there are some valid domains that don't:
- INT
International
- MIL
US Military
- NET
Network
- ORG
Non-Profit Organization
- ARPA
Old style Arpanet
- NATO
Nato field
And that US has five domains, Great Britain and france two: <dl compact> <dt>EDU <dd>US Educational <dt>MIL <dd>US Military <dt>GOV <dd>US Government <dt>UM <dd>US Minor Outlying Islands <dt>US <dd>US <dt>GB <dd>Great Britain (UK) <dt>UK <dd>United Kingdom <dt>FR <dd>France <dt>FX <dd>France, Metropolitan <dt>There's also three domains that for convinience maps to US: <dt>NET <dd>Network <dt>ORG <dd>Organization <dt>COM <dd>Commercial </dl>
- Methodfrom_domain
Country
from_domain(string
name
)- Description
Look up a country from its name or aka. The search is case-insensitive but regards whitespace and interpunctation.
Class Geography.Countries.Country
- Description
Country
- Variablename
Variableaka string
Geography.Countries.Country.namearray
(string
) Geography.Countries.Country.aka- Description
Country name and also-known-as, if any
- Variablefips10
string
|zero
Geography.Countries.Country.fips10- Description
FIPS 10-character code; "Federal Information Processing Standards 10-4" etc, previously used by some goverments in the US.
- Note
This character code is slightly different from
iso2
, and should only be used for compatibility with old code.- Deprecated
Replaced by
iso2
.FIPS 10-4 was withdrawn by NIST 2008-09-02.
- Variableformer
int
Geography.Countries.Country.former- Description
Flag that is set if this country doesn't exist anymore. (eg USSR.)
- Variableiso2
string
|zero
Geography.Countries.Country.iso2- Description
ISO-3166-1 2-character code aka domain name.
- Note
May be zero in some obscure cases where the ISO-3166-1 grouping differs from the FIPS-10 grouping.
- Methodcast
(
string
)Geography.Countries.Country()- Description
It is possible to cast a country to a string, which will be the same as performing
country->name;
.
- Method`[]
Module Geography.GeoIP
- Methodparse_77
void
parse_77(string
line
,object
tree
)- Description
Parsing function for geoip databases in the format used my http://software77.net/.
- Methodparse_maxmind
void
parse_maxmind(string
line
,object
tree
)- Description
Parsing function for geoip databases in the format used my http://www.maxmind.com/.
Class Geography.GeoIP.IP
- Description
Base class for GeoIP lookups. Use
Geography.GeoIP.IPv4
.
Class Geography.GeoIP.IPv4
- Description
Class for GeoIP lookups of ipv4 addresses. Uses
ADT.CritBit.IPv4Tree
objects internally to map IPv4 addresses to a geographical region.
- Methodcreate
Geography.GeoIP.IPv4Geography.GeoIP.IPv4(
string
file_name
,function
(string
,ADT.CritBit.IPv4Tree
:void
)fun
)Geography.GeoIP.IPv4Geography.GeoIP.IPv4(
ADT.CritBit.IPv4Tree
tree
)- Description
Objects of this class can either be created from a file
file_name
with an optional parsing functionfun
. Whenfun
is omitted, it defaults toGeography.GeoIP.parse_maxmind
.fun
will be called for each line infile_name
and the critbit tree to add the entry to.Alternatively, an instance of
ADT.CritBit.IPv4Tree
can be passed.tree
is expected to map the first address of each range to its geographical location.
- Methodparse_77
Module Getopt
- Description
Getopt
is a group of functions which can be used to find command line options.Command line options come in two flavors: long and short. The short ones consists of a dash followed by a character (-t), the long ones consist of two dashes followed by a string of text (--test). The short options can also be combined, which means that you can write -tda instead of -t -d -a.
Options can also require arguments, in which case they cannot be combined. To write an option with an argument you write -t argument or -targument or --test=argument.
- ConstantHAS_ARG
constant
int
Getopt.HAS_ARG
- Description
Used with
find_all_options()
to indicate that an option requires an argument.- See also
find_all_options()
- ConstantMAY_HAVE_ARG
constant
int
Getopt.MAY_HAVE_ARG
- Description
Used with
find_all_options()
to indicate that an option takes an optional argument.- See also
find_all_options()
- ConstantNO_ARG
constant
int
Getopt.NO_ARG
- Description
Used with
find_all_options()
to indicate that an option does not take an argument.- See also
find_all_options()
- Methodfind_all_options
array
(array
) find_all_options(array
(string
|zero
)argv
,array
(array
(array
(string
)|string
|int
))options
,void
|int(-1..1)
posix_me_harder
,void
|int
throw_errors
)- Description
This function does the job of several calls to
find_option()
. The main advantage of this is that it allows it to handle the POSIX_ME_HARDER environment variable better. When either the argumentposix_me_harder
or the environment variable POSIX_ME_HARDER is true, no arguments will be parsed after the first non-option on the command line.- Parameter
argv
The should be the array of strings that was sent as the second argument to your
main()
function.- Parameter
options
Each element in the array
options
should be an array on the following form:Array string
name
Name is a tag used to identify the option in the output.
int
type
Type is one of
Getopt.HAS_ARG
,Getopt.NO_ARG
andGetopt.MAY_HAVE_ARG
and it affects how the error handling and parsing works. You should useHAS_ARG
for options that require a path, a number or similar.NO_ARG
should be used for options that do not need an argument, such as --version.MAY_HAVE_ARG
should be used for options that may or may not need an argument.string
|array
(string
)aliases
This is a string or an array of string of options that will be looked for. Short and long options can be mixed, and short options can be combined into one string. Note that you must include the dashes so that
find_all_options()
can distinguish between long and short options. Example:({"-tT","--test"})
This would makefind_all_options
look for -t, -T and --test.void
|string
|array
(string
)env_var
This is a string or an array of strings containing names of environment variables that can be used instead of the command line option.
void
|mixed
default
This is the default value a
MAY_HAVE_ARG
option will have in the output if it was set but not assigned any value.Only the first three elements need to be included.
- Parameter
posix_me_harder
Don't scan for arguments after the first non-option.
- Parameter
throw_errors
If
throw_errors
has been specifiedfind_all_options()
will throw errors on failure. If it has been left out, or is0
(zero), it will instead print an error message onStdio.stderr
and exit the program with result code 1 on failure.- Returns
The good news is that the output from this function is a lot simpler.
find_all_options()
returns an array where each element is an array on this form:Array string
name
Option identifier name from the input.
mixed
value
Value given. If no value was specified, and no default has been specified, the value will be 1.
- Note
find_all_options()
modifiesargv
.Index
0
(zero) ofargv
is not scanned for options, since it is reserved for the program name.- See also
Getopt.get_args()
,Getopt.find_option()
- Methodfind_option
void
|string
|bool
find_option(array
(string
|zero
)argv
,array
(string
)|string
shortform
,array
(string
)|string
|void
longform
,array
(string
)|string
|void
envvars
,string
|bool
|void
def
,int
|void
throw_errors
)- Description
This is a generic function to parse command line options of the type -f, --foo or --foo=bar.
- Parameter
argv
The first argument should be the array of strings that was sent as the second argument to your
main()
function.- Parameter
shortform
The second is a string with the short form of your option. The short form must be only one character long. It can also be an array of strings, in which case any of the options in the array will be accepted.
- Parameter
longform
This is an alternative and maybe more readable way to give the same option. If you give
"foo"
aslongform
your program will accept --foo as argument. This argument can also be an array of strings, in which case any of the options in the array will be accepted.- Parameter
envvars
This argument specifies an environment variable that can be used to specify the same option, to make it easier to customize program usage. It can also be an array of strings, in which case any of the mentioned variables in the array may be used.
- Parameter
def
This argument has two functions: It specifies if the option takes an argument or not, and it informs
find_option()
what to return if the option is not present.The value may be one of:
int(0)
|zero
The option does not require a value.
int(1)
|string
The option requires a value, and
def
will be returned if the option is not present. If the option is present, but does not have an argumentfind_option()
will fail.Note that a set option will always return a
string
, so settingdef
to1
can be used to detect whether the option is present or not.- Parameter
throw_errors
If
throw_errors
has been specifiedfind_option()
will throw errors on failure. If it has been left out, or is0
(zero), it will instead print an error message onStdio.stderr
and exit the program with result code 1 on failure.- Returns
Returns the value the option has been set to if any.
If the option is present, but has not been set to anything
1
will be returned.Otherwise if any of the environment variables specified in
envvars
has been set, that value will be returned.If all else fails,
def
will be returned.- Throws
If an option that requires an argument lacks an argument and
throw_errors
is set an error will be thrown.- Note
find_option()
modifiesargv
. Parsed options will be removed fromargv
. Elements ofargv
that have been removed entirely will be replaced with zeroes.This function reads options even if they are written after the first non-option on the line.
Index
0
(zero) ofargv
is not scanned for options, since it is reserved for the program name.Only the first ocurrance of an option will be parsed. To parse multiple ocurrances, call
find_option()
multiple times.- See also
Getopt.get_args()
- Methodget_args
array
(string
) get_args(array
(string
|zero
)argv
,void
|int(-1..1)
posix_me_harder
,void
|int
throw_errors
)- Description
This function returns the remaining command line arguments after you have run
find_option()
orfind_all_options()
to find all the options in the argument list. If there are any options left not handled byfind_option()
orfind_all_options()
this function will fail.If
throw_errors
has been specifiedget_args()
will throw errors on failure. If it has been left out, or is 0 (zero), it will instead print an error message onStdio.stderr
and exit the program with result code 1 on failure.- Returns
On success a new
argv
array without the parsed options is returned.- See also
Getopt.find_option()
,Getopt.find_all_options()
Module Git
- Description
This is a module for interacting with the Git distributed version control system.
- Variablegit_binary
string
Git.git_binary- Description
The git binary to use.
Defaults to
"git"
, but may be overridden to select a different binary.
- Methodgit
string
git(string
|zero
git_dir
,string
command
,string
...args
)- Description
Run a git command, and get the output.
- Parameter
git_dir
Directory containing the Git repository. May be
UNDEFINED
to specify the Git repository for the current directory.- Parameter
command
Git subcommand to execute.
- Parameter
args
Arguemnts for
command
.- Returns
Returns the output on stdout from running the command on success, and throws an error on failure.
- See also
try_git()
,low_git()
- Methodhash_blob
string
hash_blob(string
data
)- Description
Hash algorithm for blobs that is compatible with git.
- Methodlow_git
Process.Process
low_git(mapping
(string
:mixed
)options
,string
|zero
git_dir
,string
command
,string
...args
)- Description
Start a git process.
- Parameter
options
Options for
Process.Process()
.- Parameter
git_dir
Directory containing the Git repository. May be
UNDEFINED
to specify the Git repository for the current directory.- Parameter
command
Git subcommand to execute.
- Parameter
args
Arguemnts for
command
.- Returns
Returns the corresponding
Process.Process
object.- See also
git()
,try_git()
- Methodtry_git
string
|zero
try_git(string
git_dir
,string
command
,string
...args
)- Description
Attempt to run a git command and get its output.
- Parameter
git_dir
Directory containing the Git repository. May be
UNDEFINED
to specify the Git repository for the current directory.- Parameter
command
Git subcommand to execute.
- Parameter
args
Arguemnts for
command
.- Returns
Returns the output on stdout from running the command on success, and
0
(zero) on failure.- Note
This is a convenience function, and there is no way to get the specific cause for failures other than rerunning the command with e.g.
git()
.- See also
git()
,low_git()
Class Git.Export
- Description
Framework for creating a command-stream suitable for git-fast-import.
- Methodblob
void
blob(string
blob
,string
|void
marker
)- Description
Upload data.
- Parameter
blob
Data to upload.
- Parameter
marker
Optional export marker for referring to the data.
- Methodcat_blob
void
cat_blob(string
dataref
)- Description
Output a blob on the
cat-blob-fd
.- Parameter
dataref
Reference to the blob to output.
- Methodcommit
void
commit(string
ref
,string
|void
commit_marker
,string
|void
author_info
,string
committer_info
,string
message
,string
|void
...parents
)- Description
Create a new commit on a branch.
- Parameter
ref
Reference to add the commit to. Typically
"refs/heads/"
followed by a branchname, or"refs/notes/commits"
.- Parameter
commit_marker
Optional export marker for referring to the new commit.
- Parameter
author_info
Optional author information. Defaults to
committer_info
.- Parameter
committer_info
Name, email and timestamp for the committer. See
format_author()
for details.- Parameter
message
Commit message.
- Parameter
parents
The ordered set of parents for the commit. Defaults to the current HEAD for
ref
, if it exists, and to the empty set otherwise.The set of files for the commit defaults to the set for the first of the
parents
, and can be modified withfilemodify
,filedelete
,filecopy
,filerename
,filedeleteall
andnotemodify
.
- Methodcreate
Git.ExportGit.Export()
Git.ExportGit.Export(
Stdio.File
fd
)Git.ExportGit.Export(
string
git_dir
)- Description
Create a new fast-import command-stream.
- Parameter
fd
File to write the command-stream to.
- Parameter
git_dir
Git directory to modify. If the directory doesn't exist, it will be created empty. A git-fast-import session will be started for the directory to receive the command-stream.
If neither
fd
norgit_dir
has been specified, the command stream will be output toStdio.stdout
.- Parameter
verbosity
The amount of verbosity on
Stdio.stderr
for various commands.
- Methodexport
void
export(string
file_name
,string
|void
git_name
)- Description
Convenience funtion for exporting a filesystem file or directory (recursively) to git.
- Parameter
file_name
Name of the file on disc.
- Parameter
git_name
Name of the file in git. Defaults to
file_name
.
- Methodfeature
void
feature(string
feature
,string
|void
arg
)- Description
Require that the backend for the stream supports a certian feature.
- Parameter
feature
Feature to require support for. Typically one of:
"date-format"
Same as the corresponding command-line option.
"export-marks"
"relative-marks"
"no-relative-marks"
"force"
"import-marks"
"import-marks-if-exists"
"cat-blob"
Require the
cat_blob
andls
commands to be supported."ls"
"notes"
Require that the backend supports the
notemodify
subcommand."done"
Require the stream to terminate with a
done
command.
- Methodfiledeleteall
void
filedeleteall()- Description
Delete all files.
Used to start a commit from a clean slate.
- Methodfilemodify
void
filemodify(int
mode
,string
path
,string
|void
dataref
)- Description
Create or modify a file.
- Parameter
mode
Mode for the file. See the MODE_* constants.
- Parameter
path
Path to the file relative to the repository root.
- Parameter
dataref
Reference to the data for the file. One of:
string
A mark reference set by a prior
blob
command or a full 40-byte SHA-1 of an existing Git blob.zero
Left out,
UNDEFINED
or"inline"
in which case thefilemodify
command must be followed by adata
command.
- Methodls
void
ls(string
path
,string
|void
dataref
)- Description
Output a file to the
cat-blob-fd
.- Parameter
path
Path to the file to output.
- Parameter
dataref
Marker, tag, commit or tree for the root. Defaults to the commit in progress.
- Methodnotemodify
void
notemodify(string
commit
,string
|void
dataref
)- Description
Annotate a commit.
- Parameter
commit
Commit to annotate.
- Parameter
dataref
Reference to the data for the annotation. One of:
string
A mark reference set by a prior
blob
command or a full 40-byte SHA-1 of an existing Git blob.zero
Left out,
UNDEFINED
or"inline"
in which case thenotemodify
command must be followed by adata
command.Note that this command is typically only used when a commit on a ref under
"refs/notes/"
is active.
- Methodprogress
void
progress(string
message
)- Description
Output a progress message.
- Parameter
message
Message to output.
- Note
Note that each line of the message will be prefixed with
"progress "
.
- Methodreset
void
reset(string
ref
,string
|void
committish
)- Description
Move a reference.
- Parameter
ref
Reference to move.
- Parameter
committish
Commit to reference.
This command can also be used to make light-weight tags.
- See also
tag
- Methodtag
void
tag(string
name
,string
committish
,string
tagger_info
,string
message
)- Description
Create an annotated tag referring to a specific commit.
- Parameter
name
Tag name. Note that it is automatically prefixed with
"refs/tags/"
.- Parameter
committish
Commit to tag.
- Parameter
tagger_info
Name, email and timestamp for the tagger. See
format_author()
for details.- Parameter
message
Message for the tag.
- See also
reset
Module Gmp
- Description
GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers. There is no practical limit to the precision except the ones implied by the available memory in the machine GMP runs on. http://www.swox.com/gmp/
Class Gmp.bignum
- Description
This program is used by the internal auto-bignum conversion. It can be used to explicitly type integers that are too big to be INT_TYPE. Best is however to not use this program unless you really know what you are doing.
Due to the auto-bignum conversion, all integers can be treated as
Gmp.mpz
objects insofar as that they can be indexed with the functions in theGmp.mpz
class. For instance, to calculate the greatest common divisor between51
and85
, you can do51->gcd(85)
. In other words, all the functions inGmp.mpz
are also available here.
Class Gmp.mpf
- Description
GMP floating point number.
The mantissa of each float has a user-selectable precision, limited only by available memory. Each variable has its own precision, and that can be increased or decreased at any time.
The exponent of each float is a fixed precision, one machine word on most systems. In the current implementation the exponent is a count of limbs, so for example on a 32-bit system this means a range of roughly 2^-68719476768 to 2^68719476736, or on a 64-bit system this will be greater.
Each variable keeps a size for the mantissa data actually in use. This means that if a float is exactly represented in only a few bits then only those bits will be used in a calculation, even if the selected precision is high.
All calculations are performed to the precision of the destination variable. Each function is defined to calculate with "infinite precision" followed by a truncation to the destination precision, but of course the work done is only what's needed to determine a result under that definition.
The precision selected for a variable is a minimum value, GMP may increase it a little to facilitate efficient calculation. Currently this means rounding up to a whole limb, and then sometimes having a further partial limb, depending on the high limb of the mantissa. But applications shouldn't be concerned by such details.
The mantissa in stored in binary, as might be imagined from the fact precisions are expressed in bits. One consequence of this is that decimal fractions like 0.1 cannot be represented exactly. The same is true of plain IEEE double floats. This makes both highly unsuitable for calculations involving money or other values that should be exact decimal fractions. (Suitably scaled integers, or perhaps rationals, are better choices.)
mpf functions and variables have no special notion of infinity or not-a-number, and applications must take care not to overflow the exponent or results will be unpredictable. This might change in a future release.
Note that the mpf functions are not intended as a smooth extension to IEEE P754 arithmetic. In particular results obtained on one computer often differ from the results on a computer with a different word size.
- Note
This class will use mpfr if available, in which case the precision will be exact and IEEE rules will be followed.
- Method_is_type
bool
res = is_type(Gmp.mpf()
)- Description
The Gmp.mpf object will claim to be a
"float"
.- FIXME
Perhaps it should also return true for
"object"
?
- Methodcreate
Gmp.mpfGmp.mpf(
void
|int
|string
|float
|object
x
,void
|int(0..)
precision
)Gmp.mpfGmp.mpf(
string
x
,int(0..)
precision
,int(2..36)
base
)
- Methodset_precision
Gmp.mpf
set_precision(int(0..)
prec
)- Description
Sets the precision of the current object to be at least
prec
bits. The precision is limited to 128Kb. The current object will be returned.
Class Gmp.mpq
- Description
Rational number stored in canonical form. The canonical from means that the denominator and the numerator have no common factors, and that the denominator is positive. Zero has the unique representation 0/1. All functions canonicalize their result.
- Methodcast
(
int
)Gmp.mpq()
(string
)Gmp.mpq()
(float
)Gmp.mpq()- Description
Casting to a string returns the number in the decimal fraction format, where both decimal point and quotient is included only if required. I.e. it is the same as calling
get_string
with 1 as argument.
- Methodcreate
Gmp.mpqGmp.mpq(
void
|string
|int
|float
|Gmp.mpz
|Gmp.mpq
x
)Gmp.mpqGmp.mpq(
int
|Gmp.mpz
numerator
,int
|Gmp.mpz
denominator
)Gmp.mpqGmp.mpq(
string
x
,int
base
)
- Methodget_string
string
get_string(void
|int
decimal_fraction
)- Description
If
decimal_fraction
is zero or left out, the number is returned as a string on the form"numerator/denominator"
, where both parts are decimal integers. The numerator may be negative, but the denominator is always positive.If
decimal_fraction
is set, then the number is returned as a (possibly negative) decimal fraction, i.e. a decimal number with a decimal point somewhere inside. There is always at least one digit before and after the decimal point.If the number can be accurately described that way, i.e. without an infinite number of decimals, then no denominator is included. Otherwise the remaining denominator is added to the decimal fraction after a "/". For example, 4711/100 is returned as
"47.11"
, 4711/200 as"23.555"
, and 4711/300 as"47.11/3"
.If
decimal_fraction
is 1 then the decimal fraction contains a '.' only if there are decimals in it. If it is 2 or higher then the decimal fraction always contains a '.' with at least one digit before and after it.- Note
In any case, there are no unnecessary padding zeroes at the beginning or end of any decimal number.
Class Gmp.mpz
- Description
Gmp.mpz implements very large integers. In fact, the only limitation on these integers is the available memory. The mpz object implements all the normal integer operations.
Note that the auto-bignum feature also makes these operations available "in" normal integers. For instance, to calculate the greatest common divisor between
51
and85
, you can do51->gcd(85)
.
- Method__hash
int
hash_value(Gmp.mpzarg)- Description
Calculate a hash of the value.
- Note
Prior to Pike 7.8.359 this function returned the low 32-bits as an unsigned integer. This could in some common cases lead to very unbalanced mappings.
- See also
hash_value()
- Method``**
Gmp.mpz
|Gmp.mpq
res =x
**Gmp.mpz()
- Description
Return
x
raised to the value of this object. The case when zero is raised to zero yields one. When this object has a negative value andx
is not a float, aGmp.mpq
object will be returned.- See also
pow
- Methodbin
Gmp.mpz
bin(int
k
)- Description
Return the binomial coefficient
n
overk
, wheren
is the value of this mpz object. Negative values ofn
are supported using the identity(-n)->bin(k) == (-1)->pow(k)*(n+k-1)->bin(k)
(See Knuth volume 1, section 1.2.6 part G.)
- Throws
The
k
value can't be arbitrarily large. An error is thrown if it's too large.
- Methodcast
(
string
)Gmp.mpz()
(int
)Gmp.mpz()
(float
)Gmp.mpz()- Description
Cast this mpz object to another type. Allowed types are string, int and float.
- Methodcreate
Gmp.mpzGmp.mpz()
Gmp.mpzGmp.mpz(
string
|int
|float
|object
value
)Gmp.mpzGmp.mpz(
string
value
,int(2..62)
|int(256)
|int(-256)
base
)- Description
Create and initialize a
Gmp.mpz
object.- Parameter
value
Initial value. If no value is specified, the object will be initialized to zero.
- Parameter
base
Base the value is specified in. The default base is base 10. The base can be either a value in the range [2..36] (inclusive), in which case the numbers are taken from the ASCII range 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ (case-insensitive), in the range [37..62] (inclusive), in which case the ASCII range will be case sensitive, or either of the values
256
or-256
, in which casevalue
is taken to be the unsigned binary representation in network byte order or reversed byte order respectively.Values in base [2..62] can be prefixed with
"+"
or"-"
. If no base is given, values prefixed with"0b"
or"0B"
will be interpreted as binary. Values prefixed with"0x"
or"0X"
will be interpreted as hexadecimal. Values prefixed with"0"
will be interpreted as octal.- Note
Leading zeroes in
value
are not significant when a base is explicitly given. In particular leading NUL characters are not preserved in the base 256 modes.Before GMP 5.0 only bases 2-36 and 256 were supported.
- Methoddigits
string
digits(void
|int(2..62)
|int(256)
|int(-256)
base
)- Description
Convert this mpz object to a string. If a
base
is given the number will be represented in that base. Valid bases are 2-62 and256
and-256
. The default base is 10.- Note
The bases 37 to 62 are not available when compiled with GMP earlier than version 5.
- See also
cast
- Methodfac
Gmp.mpz
fac()- Description
Return the factorial of this mpz object.
- Throws
Since factorials grow very quickly, only small integers are supported. An error is thrown if the value in this mpz object is too large.
- Methodgcd
Gmp.mpz
gcd(object
|int
|float
|string
...args
)- Description
Return the greatest common divisor between this mpz object and all the arguments.
- Methodgcdext
array
(Gmp.mpz
) gcdext(int
|float
|Gmp.mpz
x
)- Description
Compute the greatest common divisor between this mpz object and
x
. An array({g,s,t})
is returned whereg
is the greatest common divisor, ands
andt
are the coefficients that satisfiesthis * s + x * t = g
- See also
gcdext2
,gcd
- Methodgcdext2
array
(Gmp.mpz
) gcdext2(int
|float
|Gmp.mpz
x
)- Description
Compute the greatest common divisor between this mpz object and
x
. An array({g,s})
is returned whereg
is the greatest common divisor, ands
is a coefficient that satisfiesthis * s + x * t = g
where
t
is some integer value.- See also
gcdext
,gcd
- Methodinvert
Gmp.mpz
invert(int
|float
|Gmp.mpz
x
)- Description
Return the inverse of this mpz value modulo
x
. The returned value satisfies0 <= result < x
.- Throws
An error is thrown if no inverse exists.
- Methodnext_prime
Gmp.mpz
next_prime()- Description
Returns the next higher prime for positive numbers and the next lower for negative.
The prime number testing is using Donald Knuth's probabilistic primality test. The chance for a false positive is pow(0.25,25).
- Methodpopcount
int
popcount()- Description
For values >= 0, returns the population count (the number of set bits). For negative values (who have an infinite number of leading ones in a binary representation), -1 is returned.
- Methodpow
Gmp.mpz
res = pow([Gmp.mpz]a, b) orGmp.mpz
pow(int
|float
|Gmp.mpz
x
)- Description
Return this mpz object raised to
x
. The case when zero is raised to zero yields one.- See also
powm
- Methodpowm
Gmp.mpz
powm(int
|string
|float
|Gmp.mpz
exp
,int
|string
|float
|Gmp.mpz
mod
)- Description
Return
( this->pow(
.exp
) ) %mod
- See also
pow
- Methodprobably_prime_p
int(0..2)
probably_prime_p(void
|int
count
)- Description
Return 2 if this mpz object is a prime, 1 if it probably is a prime, and 0 if it definitely is not a prime. Testing values below 1000000 will only return 2 or 0.
- Parameter
count
The prime number testing is using Donald Knuth's probabilistic primality test. The chance for a false positive is pow(0.25,count). Default value is 25 and resonable values are between 15 and 50.
- Methodsgn
int
sgn()- Description
Return the sign of the integer, i.e.
1
for positive numbers and-1
for negative numbers.
- Methodsize
int(0..)
size(void
|int
base
)- Description
Return how long this mpz would be represented in the specified
base
. The default base is 2.
- Methodsqrt
Gmp.mpz
res = sqrt([Gmp.mpz]a) orGmp.mpz
sqrt()- Description
Return the the truncated integer part of the square root of this mpz object.
Module Gnome2
Module Graphics
Module Graphics.Graph
- Methodpie
Methodbars
Methodsumbars
Methodline
Methodnorm
Methodgraph Image.Image
pie(mapping
(string
:mixed
)diagram_data
)Image.Image
bars(mapping
(string
:mixed
)diagram_data
)Image.Image
sumbars(mapping
(string
:mixed
)diagram_data
)Image.Image
line(mapping
(string
:mixed
)diagram_data
)Image.Image
norm(mapping
(string
:mixed
)diagram_data
)Image.Image
graph(mapping
(string
:mixed
)diagram_data
)- Description
Generate a graph of the specified type. See
check_mapping
for an explanation of diagram_data.
- Methodcheck_mapping
mapping
(string
:mixed
) check_mapping(mapping
(string
:mixed
)diagram_data
,string
type
)- Description
This function sets all unset elements in diagram_data to its default value as well as performing some simple sanity checks. This function is called from within
pie
,bars
,sumbars
,line
,norm
andgraph
.- Parameter
diagram_data
"drawtype"
:mixed
Default: "linear"
Will be set to "2D" for pie below Only "linear" works for now.
"tone"
:mixed
Default: 0
If present a Pie-chart will be toned.
"3Ddepth"
:mixed
Default: 10
How much 3D-depth a graph will have in pixels Default is 10.
"data"
:array
(array
(float
))Default: ({({1.0}), ({2.0}), ({4.0})})
Will be set to something else with graph An array of arrays. Each array describing a data-set. The graph-function however should be fed with an array of arrays with X,Y-pairs. Example: ({({1.0, 2.0, 3.0}),({1.2, 2.2, 3.8})}) draws stuff in yellow with the values (1.0, 2.0, 3.0), and (1.2, 2.2, 3.8) in blue.
"labels"
:array
(string
)Default: 0
Should have four elements ({xquantity, yquantity, xunit, yunit}). The strings will be written on the axes.
"xnames"
:array
(string
)Default: 0
An array(string) with the text that will be written under the X-axis. This should be the same size as sizeof(data).
"ynames"
:array
(string
)Default: 0
An array(string) with the text that will be written to the left of the Y-axis.
"fontsize"
:mixed
Default: 10
The size of the text. Default is 10.
"graphlinewidth"
:mixed
Default: 1.0
Width of the lines that draws data in Graph and line. Default is 1.0
"labelsize"
:mixed
Default: same as fontsize
The size of the text for labels.
"legendfontsize"
:mixed
Default: same as fontsize
The size of the text for the legend.
"legend_texts"
:mixed
Default: 0
The texts that will be written the legend.
"values_for_xnames"
:array
(float
)Default: 0
An array(float) that describes where the ynames should be placed. The numbers are like the data-numbers. Default is equally distributed.
"values_for_ynames"
:array
(float
)Default: 0
An array(float) that describes where the ynames should be placed. The numbers are like the data-numbers. Default is equally distributed.
"xsize"
:int
Default: 100
X-size of the graph in pixels.
"ysize"
:int
Default: 100
Y-size of the graph in pixels.
"image"
:mixed
Default: 0
An image that the graph will be drawn on.
"legendcolor"
:mixed
Default: 0
The color of the text in the legend. Default is?
"legendimage"
:mixed
Default: 0
I have no idea.
"bgcolor"
:mixed
Default: 0
The bakground-color. If the the background is a image this color is used for antialias the texts.
"gbimage"
:mixed
Default: 0
Some sort of image...
"axcolor"
:mixed
Default: ({0,0,0})
The color of the axis.
"datacolors"
:mixed
Default: 0
An array of colors for the datasets.
"backdatacolors"
:mixed
Default: 0
An array of color that do something...
"textcolor"
:mixed
Default: ({0,0,0})
Color of the text. Default is black.
"labelcolor"
:mixed
Default: 0
Color of the labeltexts.
"orient"
:string
Default: "hor"
Can be "hor" or "vert". Orientation of the graph.
"linewidth"
:mixed
Default: 0
Width of lines (the axis and their like).
"backlinewidth"
:mixed
Default: 0
Width of the outline-lines. Default is 0.
"vertgrid"
:mixed
Default: 0
If the vertical grid should be present.
"horgrid"
:mixed
Default: 0
If the horizontal grid should be present.
"gridwidth"
:mixed
Default: 0
Width of the grid. Default is linewidth/4.
"rotate"
:mixed
Default: 0
How much a the Pie in a Pie-shart should be rotated in degrees.
"center"
:mixed
Default: 0
Makes the first Pie-slice be centered.
"bw"
:mixed
Default: 0
Draws the graph black and white.
"eng"
:mixed
Default: 0
Writes the numbers in eng format.
"neng"
:mixed
Default: 0
Writes the numbers in engformat except for 0.1 < x < 1.0
"xmin"
:mixed
Default: 0
Where the X-axis should start. This will be overrided by datavalues.
"ymin"
:mixed
Default: 0
Where the Y-axis should start. This will be overridden by datavalues.
"name"
:mixed
Default: 0
A string with the name of the graph that will be written at top of the graph.
"namecolor"
:mixed
Default: 0
The color of the name.
"font"
:mixed
Default: Image.Font()
The font that will be used.
"gridcolor"
:mixed
Default: ({0,0,0}
The color of the grid. Default is black.
Class Graphics.Graph.create_bars
- Description
Graph sub-module for drawing bars.
Class Graphics.Graph.create_graph
- Description
Graph sub-module for drawing graphs.
create_graph
draws a graph but there are also some other functions used bycreate_pie
andcreate_bars
.
Class Graphics.Graph.create_pie
- Description
Graph sub-module for drawing pie-charts.
Class Graphics.Graph.polyline
- Description
Graph sub-module providing draw functions.
- Methodpie
Module HTTPAccept
- Description
High performance webserver optimized for somewhat static content.
HTTPAccept is a less capable WWW-server than the
Protocols.HTTP.Server
server, but for some applications it can be preferable. It is significantly more optimized, for most uses, and can handle a very high number of requests per second on even low end machines.
Class HTTPAccept.LogEntry
Class HTTPAccept.Loop
- Methodcache_status
mapping
(string
:int
) cache_status()- Description
Returns information about the cache.
hits
:int
The number of hits since start
misses
:int
The number of misses since start
stale
:int
The number of misses that were stale hits, and not used
size
:int
The total current size
entries
:int
The number of entries in the cache
max_size
:int
The maximum size of the cache
sent_bytes
:int
The number of bytes sent since the last call to cache_status
received_bytes
:int
The number of bytes received since the last call to cache_status
num_requests
:int
The number of requests received since the last call to cache_status
- Methodcreate
HTTPAccept.LoopHTTPAccept.Loop(
Stdio.Port
port
,RequestProgram
program
,function
(RequestProgram
:void
)request_handler
,int
cache_size
,bool
keep_log
,int
timeout
)- Description
Create a new
HTTPAccept
.This will start a new thread that will listen for requests on the port, parse them and pass on requests, instanced from the
program
class (which has to inheritRequestProgram
to therequest_handler
callback function.cache_size
is the maximum size of the cache, in bytes.keep_log
indicates if a log of all requests should be kept.timeout
if non-zero indicates a maximum time the server will wait for requests.
- Methodlog_as_array
array
(LogEntry
) log_as_array()- Description
Return the current log as an array of LogEntry objects.
- Methodlog_as_commonlog_to_file
int
log_as_commonlog_to_file(Stdio.Stream
fd
)- Description
Write the current log to the specified file in a somewhat common commonlog format.
Will return the number of bytes written.
- Methodcache_status
Class HTTPAccept.RequestProgram
- Variabledata
string
HTTPAccept.RequestProgram.data- Description
Any payload that arrived with the request
- Variableheaders
mapping
(string
:array
(string
)) HTTPAccept.RequestProgram.headers- Description
All received headers
- Variablemy_fd
Stdio.NonblockingStream
HTTPAccept.RequestProgram.my_fd- Description
The filedescriptor for this request.
- Variablenot_query
string
HTTPAccept.RequestProgram.not_query- Description
The part of the URL before the first '?'.
- Variableprot
string
HTTPAccept.RequestProgram.prot- Description
The protocol part of the request. As an example "HTTP/1.1"
- Variablequery
string
HTTPAccept.RequestProgram.query- Description
The part of the URL after the first '?'
- Variableraw_url
string
HTTPAccept.RequestProgram.raw_url- Description
The raw URL received, the part after the method and before the protocol.
- Variablerest_query
string
HTTPAccept.RequestProgram.rest_query- Description
The part of the URL after the first '?' that does not seem to be query variables.
- Variabletime
int
HTTPAccept.RequestProgram.time- Description
The time_t when the request arrived to the server
- Variablevariables
mapping
(string
:string
) HTTPAccept.RequestProgram.variables- Description
Parsed query variables
- Methodreply
void
reply(string
data
)void
reply(string
headers
,Stdio.File
fd
,int
len
)void
reply(int(0)
ignore
,Stdio.File
fd
,int
len
)- Description
Send a reply to the remote side. In the first case the
data
will be sent. In the second case theheaders
will be sent, thenlen
bytes fromfd
. In the last caselen
bytes fromfd
will be sent.
- Variabledata
Module Java
- Variablepkg
object
Java.pkg- Description
Singleton 'package' object.
Usage: object cls = Java.pkg.java.lang.String;
or: object cls = Java.pkg["java/lang/String"];
cls is a jclass object; call it to create a jobject, which will have all the methods of the Java class.
Example: Java.pkg.FooClass()->getResult();
Class Java.jclass
- Description
Interface to one Java class. Can be called to construct a jobject.
Obtained normally via Java.pkg.`[] and not created directly.
Class Java.jobject
- Description
An instantiated Java object. Has methods for all the Java object's methods. Can be cast to string.
NOTE: Use indices(x) to get a list of the available methods.
Constructed from a jclass object.
- Variablepkg
Module Languages
Module Languages.PLIS
- Description
PLIS, Permuted Lisp. A Lisp language somewhat similar to scheme.
- Methoddefault_environment
Environment
default_environment()- Description
Creates a new environment on which it runs init_functions, init_specials and the following boot code.
(begin (defmacro (cddr x) (list (quote cdr) (list (quote cdr) x))) (defmacro (cadr x) (list (quote car) (list (quote cdr) x))) (defmacro (cdar x) (list (quote cdr) (list (quote car) x))) (defmacro (caar x) (list (quote car) (list (quote car) x))) (defmacro (when cond . body) (list (quote if) cond (cons (quote begin) body))) (define (map fun list) (if (null? list) (quote ()) (cons (fun (car list)) (map fun (cdr list))))) (defmacro (let decl . body) (cons (cons (quote lambda) (cons (map car decl) body)) (map cadr decl))))
- Methodinit_functions
void
init_functions(Environment
environment
)- Description
Adds the functions +, *, -, =, <, >, concat, read-string, eval, apply, global-environment, var, cdr, null?, setcar!, setcdr!, cons and list to the
environment
.
- Methodinit_specials
void
init_specials(Environment
environment
)- Description
Adds the special functions quote, set!, setq, while, define, defmacro, lambda, if, and, or, begin and catch to the
environment
.
- Methodmain
void
main()- Description
Instantiates a copy of the default environment and starts an interactive main loop that connects to standard I/O. The main loop is as follows:
(begin (define (loop)(let ((line (read-line
Class Languages.PLIS.Binding
Class Languages.PLIS.Builtin
Class Languages.PLIS.Lambda
Class Languages.PLIS.Number
Class Languages.PLIS.Parser
Class Languages.PLIS.SelfEvaluating
Module Local
- Description
Local
gives a local module namespace used for locally installed pike modules.Modules are searched for in the directory pike_modules which can be located in the user's home directory or profile directory, or in any of the system directories /opt/share, /usr/local/share, /opt or /usr/local/.
The user's home directory is determined by examining the environment variable HOME, and if that fails the environment variable USERPROFILE.
If the environment variable PIKE_LOCAL_PATH is set, the paths specified there will be searched first.
- Example
If the user has installed the pike module Mine.pmod in the directory $HOME/pike_modules. it can be accessed as Local.Mine.
- See also
Local.add_path()
,Local.remove_path()
- Methodadd_path
bool
add_path(string
path
)- Description
This function prepends
path
to theLocal
module searchpath.- Parameter
path
The path to the directory to be added.
- Returns
Returns 1 on success, otherwise 0.
Module Locale
- Description
The functions and classes in the top level of the Locale module implements a dynamic localization system, suitable for programs that need to change locale often. It is even possible for different threads to use different locales at the same time.
The highest level of the locale system is called projects. Usually one program consists of only one project, but for bigger applications, or highly modular applications it is possible for several projects to coexist.
Every project in turn contains several unique tokens, each one representing an entity that is different depending on the currently selected locale.
- Example
// The following line tells the locale extractor what to// look for.// <locale-token project="my_project">LOCALE</locale-token>// The localization macro.#define LOCALE(X,Y)Locale.translate("my_project", \ get_lang(), X, Y)string get_lang(){return random(2)?"eng":"swe";}int(0..0) main(){ write(LOCALE(0,"This is a line.")+"\n"); write(LOCALE(0,"This is another one.\n");return 0;}
- Note
In order to update your code to actually use the locale strings you need to run the locale extractor.
This is available as pike -x extract_locale
Syntax: pike -x extract_locale [arguments] infile(s) Arguments: --project=name default: first found in infile --config=file default: [project].xml --out=file default: [project]_eng.xml --nocopy update infile instead of infile.new --notime don't include dump time in xml files --wipe remove unused ids from xml --sync synchronize all locale projects --encoding=enc default: ISO-8859-1 --verbose more informative text in xml
- Methodcall
function
(:void
)|zero
call(string
project
,string
lang
,string
name
,void
|function
(:void
)|string
fb
)- Description
Returns a localized function If function not found, tries fallback function fb, or fallback language fb instead
- Methodget_objects
mapping
(string
:object
)|zero
get_objects(string
lang
)- Description
Reads in and returns a mapping with all the registred projects' LocaleObjects in the language 'lang'
- Methodlist_languages
array
(string
) list_languages(string
project
)- Description
Returns a list of all registered languages for a specific project.
- Methodregister_project
void
register_project(string
name
,string
path
,void
|string
path_base
)- Description
Make a connection between a project name and where its localization files can be found. The mapping from project name to locale file is stored in projects.
- Methodset_default_project_path
void
set_default_project_path(string
path
)- Description
In the event that a translation is requested in an unregistered project, this path will be used as the project path. %P will be replaced with the requested projects name.
- Methodtranslate
string
translate(string
project
,string
lang
,string
|int
id
,string
fallback
)- Description
Returns a translation for the given id, or the fallback string
Class Locale.DeferredLocale
- Description
This class simulates a multi-language "string". The actual language to use is determined as late as possible.
- Variableproject
Variableget_lang
Variablekey
Variablefallback protected
string
Locale.DeferredLocale.projectprotected
function
(:string
) Locale.DeferredLocale.get_langprotected
string
|int
Locale.DeferredLocale.keyprotected
string
Locale.DeferredLocale.fallback
- Method__create__
protected
local
void
__create__(string
project
,function
(:string
)get_lang
,string
|int
key
,string
fallback
)
- Methodcreate
Locale.DeferredLocaleLocale.DeferredLocale(
string
project
,function
(:string
)get_lang
,string
|int
key
,string
fallback
)
Class Locale.LanguageListObject
Module Locale.Charset
- Description
This is the old location for the
predef::Charset
module.- Deprecated
Replaced by
predef::Charset
.
Module Locale.Gettext
- Description
This module enables access to localization functions from within Pike.
- Note
The message conversion functions in this module do not handle Unicode strings. They only provide thin wrappers to gettext(3) etc, which means strings are assumed to be encoded according to the LC_* and LANG variables. See the docs for gettext(3) for details.
- ConstantLC_ALL
constant
Locale.Gettext.LC_ALL
- Description
Locale category for all of the locale.
Only supported as an argument to
setlocale()
.
- ConstantLC_COLLATE
constant
Locale.Gettext.LC_COLLATE
- Description
Locale category for the functions strcoll() and strxfrm() (used by pike, but not directly accessible).
- ConstantLC_CTYPE
constant
Locale.Gettext.LC_CTYPE
- Description
Locale category for the character classification and conversion routines.
- ConstantLC_NUMERIC
constant
Locale.Gettext.LC_NUMERIC
- Description
Locale category for the decimal character.
- ConstantLC_TIME
constant
Locale.Gettext.LC_TIME
- Description
Locale category for strftime() (currently not accessible from Pike).
- Methodbindtextdomain
string
bindtextdomain(string
|void
domainname
,string
|void
dirname
)- Description
Binds the path predicate for a message
domainname
domainname to the directory name specified bydirname
.If
domainname
is a non-empty string and has not been bound previously, bindtextdomain() bindsdomainname
withdirname
.If
domainname
is a non-empty string and has been bound previously, bindtextdomain() replaces the old binding withdirname
.The
dirname
argument can be an absolute or relative pathname being resolved whengettext()
,dgettext()
ordcgettext()
are called.If
domainname
is zero or an empty string,bindtextdomain()
returns 0.User defined domain names cannot begin with the string
"SYS_"
. Domain names beginning with this string are reserved for system use.- Returns
The return value from
bindtextdomain()
is a string containingdirname
or the directory binding associated withdomainname
ifdirname
is unspecified. If no binding is found, the default locale path is returned. Ifdomainname
is unspecified or is an empty string,bindtextdomain()
takes no action and returns a 0.- See also
textdomain
,gettext
,setlocale
,localeconv
- Methoddcgettext
string
dcgettext(string
domain
,string
msg
,int
category
)- Description
Return a translated version of
msg
within the context of the specifieddomain
and current locale for the specifiedcategory
. Calling dcgettext with categoryLocale.Gettext.LC_MESSAGES
gives the same result as dgettext.If there is no translation available,
msg
is returned.- Deprecated
Replaced by
gettext
.Obsoleted by
gettext()
in Pike 7.3.- See also
bindtextdomain
,textdomain
,gettext
,setlocale
,localeconv
- Methoddgettext
string
dgettext(string
domain
,string
msg
)- Description
Return a translated version of
msg
within the context of the specifieddomain
and current locale. If there is no translation available,msg
is returned.- Deprecated
Replaced by
gettext
.Obsoleted by
gettext()
in Pike 7.3.- See also
bindtextdomain
,textdomain
,gettext
,setlocale
,localeconv
- Methodgettext
string
gettext(string
msg
)string
gettext(string
msg
,string
domain
)string
gettext(string
msg
,string
domain
,int
category
)- Parameter
msg
Message to be translated.
- Parameter
domain
Domain from within the message should be translated. Defaults to the current domain.
- Parameter
category
Category from which the translation should be taken. Defaults to
Locale.Gettext.LC_MESSAGES
.Return a translated version of
msg
within the context of the specifieddomain
and current locale. If there is no translation available,msg
is returned.- See also
bindtextdomain
,textdomain
,setlocale
,localeconv
- Methodlocaleconv
mapping
localeconv()- Description
The localeconv() function returns a mapping with settings for the current locale. This mapping contains all values associated with the locale categories
LC_NUMERIC
andLC_MONETARY
."decimal_point"
:string
The decimal-point character used to format non-monetary quantities.
"thousands_sep"
:string
The character used to separate groups of digits to the left of the decimal-point character in formatted non-monetary quantities.
"int_curr_symbol"
:string
The international currency symbol applicable to the current locale, left-justified within a four-character space-padded field. The character sequences should match with those specified in ISO 4217 Codes for the Representation of Currency and Funds.
"currency_symbol"
:string
The local currency symbol applicable to the current locale.
"mon_decimal_point"
:string
The decimal point used to format monetary quantities.
"mon_thousands_sep"
:string
The separator for groups of digits to the left of the decimal point in formatted monetary quantities.
"positive_sign"
:string
The string used to indicate a non-negative-valued formatted monetary quantity.
"negative_sign"
:string
The string used to indicate a negative-valued formatted monetary quantity.
"int_frac_digits"
:int
The number of fractional digits (those to the right of the decimal point) to be displayed in an internationally formatted monetary quantity.
"frac_digits"
:int
The number of fractional digits (those to the right of the decimal point) to be displayed in a formatted monetary quantity.
"p_cs_precedes"
:bool
Set to 1 or 0 if the currency_symbol respectively precedes or succeeds the value for a non-negative formatted monetary quantity.
"p_sep_by_space"
:bool
Set to 1 or 0 if the currency_symbol respectively is or is not separated by a space from the value for a non-negative formatted monetary quantity.
"n_cs_precedes"
:bool
Set to 1 or 0 if the currency_symbol respectively precedes or succeeds the value for a negative formatted monetary quantity.
"n_sep_by_space"
:bool
Set to 1 or 0 if the currency_symbol respectively is or is not separated by a space from the value for a negative formatted monetary quantity.
"p_sign_posn"
:int(0..4)
Set to a value indicating the positioning of the positive_sign for a non-negative formatted monetary quantity. The value of p_sign_posn is interpreted according to the following:
0
Parentheses surround the quantity and currency_symbol.
1
The sign string precedes the quantity and currency_symbol.
2
The sign string succeeds the quantity and currency_symbol.
3
The sign string immediately precedes the currency_symbol.
4
The sign string immediately succeeds the currency_symbol.
"n_sign_posn"
:int
Set to a value indicating the positioning of the negative_sign for a negative formatted monetary quantity. The value of n_sign_posn is interpreted according to the rules described under p_sign_posn.
- See also
bindtextdomain
,textdomain
,gettext
,dgettext
,dcgettext
,setlocale
- Methodsetlocale
int
setlocale(int
category
,string
locale
)- Description
The setlocale() function is used to set the program's current locale. If
locale
is "C" or "POSIX", the current locale is set to the portable locale.If
locale
is "", the locale is set to the default locale which is selected from the environment variable LANG.The argument
category
determines which functions are influenced by the new locale areLC_ALL
,LC_COLLATE
,LC_CTYPE
,LC_MONETARY
,LC_NUMERIC
andLC_TIME
.- Returns
Returns 1 if the locale setting successed, 0 for failure
- See also
bindtextdomain
,textdomain
,gettext
,dgettext
,dcgettext
,localeconv
- Methodtextdomain
string
textdomain(void
|string
domain
)- Description
The textdomain() function sets or queries the name of the current domain of the active
LC_MESSAGES
locale category. Thedomain
argument is a string that can contain only the characters allowed in legal filenames. It must be non-empty.The domain argument is the unique name of a domain on the system. If there are multiple versions of the same domain on one system, namespace collisions can be avoided by using
bindtextdomain()
. If textdomain() is not called, a default domain is selected. The setting of domain made by the last valid call to textdomain() remains valid across subsequent calls tosetlocale()
, andgettext()
.- Returns
The normal return value from textdomain() is a string containing the current setting of the domain. If domainname is void, textdomain() returns a string containing the current domain. If textdomain() was not previously called and domainname is void, the name of the default domain is returned.
- See also
bindtextdomain
,gettext
,setlocale
,localeconv
Module Locale.Language
Class Locale.Language.abstract
- Description
Abstract language locale class, inherited by all the language locale classes.
- Constantdays
constant
Locale.Language.abstract.days
- Description
Array(string) with the days of the week, beginning with Sunday.
- Constantenglish_name
constant
string
Locale.Language.abstract.english_name
- Description
The name of the language in english.
- Constantiso_639_1
optional
constantint
Locale.Language.abstract.iso_639_1
- Description
String with the language code in ISO-639-1 (two character code). Note that all languages does not have a ISO-639-1 code.
- Constantiso_639_2
constant
int
Locale.Language.abstract.iso_639_2
- Description
String with the language code in ISO-639-2/T (three character code).
- Constantiso_639_2B
constant
int
Locale.Language.abstract.iso_639_2B
- Description
String with the language code in ISO-639-2/B (three character code). This is usually the same as the ISO-639-2/T code (
iso_639_2
).
- Constantlanguages
constant
Locale.Language.abstract.languages
- Description
Mapping(string:string) that maps an ISO-639-2/T id code to the name of that language.
- Constantmonths
constant
Locale.Language.abstract.months
- Description
Array(string) with the months of the year, beginning with January.
- Constantname
constant
string
Locale.Language.abstract.name
- Description
The name of the langauge. E.g. "svenska" for Swedish.
- Methoddate
string
date(int
timestamp
,string
|void
mode
)- Description
Returns the date for posix time
timestamp
as a textual string.- Parameter
mode
Determines what kind of textual string should be produced.
"time"
I.e. "06:36"
"date"
I.e. "January the 17th in the year of 2002"
"full"
I.e. "06:37, January the 17th, 2002"
- Example
> Locale.Language.eng()->date(time()); Result: "today, 06:36"
- Methodshort_day
string
short_day(int(1..7)
num
)- Description
Returns an abbreviated weekday name from the weekday number
num
.
Module Locale.Language.cat
- Description
Catalan language locale.
Module Locale.Language.ces
- Description
Czech language locale by Jan Petrous 16.10.1997, based on Slovenian language module by Iztok Umek.
Module Locale.Language.deu
- Description
German language locale by Tvns Böker.
Module Locale.Language.eng
- Description
English language locale.
Module Locale.Language.fin
- Description
Finnish language locale created by Janne Edelman, Turku Unix Users Group ry, Turku, Finland
Module Locale.Language.fra
- Description
French language locale by Patrick Kremer.
Module Locale.Language.hrv
- Description
Croatian language locale by Klara Makovac 1997/07/02
Module Locale.Language.hun
- Description
Hungarian language locale by Zsolt Varga.
Module Locale.Language.ita
- Description
Italian language locale by Francesco Chemolli
Module Locale.Language.jpn
- Description
Japanese language locale.
Module Locale.Language.mri
- Description
Maaori (New Zealand) language locale by Jason Rumney
Module Locale.Language.nld
- Description
Dutch language locale by Stephen R. van den Berg
Module Locale.Language.nor
- Description
Norwegian language locale
Module Locale.Language.pol
- Description
Polish language locale by Piotr Klaban <makler@man.torun.pl>.
Module Locale.Language.por
- Description
Portuguese language locale
Module Locale.Language.rus
- Description
Russian language locale
Module Locale.Language.slv
- Description
Slovenian language locale by Iztok Umek 7. 8. 1997
Module Locale.Language.spa
- Description
Spanish language locale
Module Locale.Language.srp
- Description
Serbian language locale by Goran Opacic 1996/12/11
Module MIME
- Description
RFC 1521, the Multipurpose Internet Mail Extensions memo, defines a structure which is the base for all messages read and written by modern mail and news programs. It is also partly the base for the HTTP protocol. Just like RFC 0822, MIME declares that a message should consist of two entities, the headers and the body. In addition, the following properties are given to these two entities:
- Headers
A MIME-Version header must be present to signal MIME compatibility
A Content-Type header should be present to describe the nature of the data in the message body. Seven major types are defined, and an extensive number of subtypes are available. The header can also contain attributes specific to the type and subtype.
A Content-Transfer-Encoding may be present to notify that the data of the body is encoded in some particular encoding.
- Body
Raw data to be interpreted according to the Content-Type header
Can be encoded using one of several Content-Transfer-Encodings to allow transport over non 8bit clean channels
The MIME module can extract and analyze these two entities from a stream of bytes. It can also recreate such a stream from these entities. To encapsulate the headers and body entities, the class
MIME.Message
is used. An object of this class holds all the headers as a mapping from string to string, and it is possible to obtain the body data in either raw or encoded form as a string. Common attributes such as message type and text char set are also extracted into separate variables for easy access.The Message class does not make any interpretation of the body data, unless the content type is multipart. A multipart message contains several individual messages separated by boundary strings. The
Message->create
method of the Message class will divide a multipart body on these boundaries, and then create individual Message objects for each part. These objects will be collected in the arrayMessage->body_parts
within the original Message object. If any of the newMessage
objects have a body of type multipart, the process is of course repeated recursively.
- ConstantTOKENIZE_KEEP_ESCAPES
constant
MIME.TOKENIZE_KEEP_ESCAPES
- Description
Don't unquote backslash-sequences in quoted strings during tokenizing. This is used for bug-compatibility with Microsoft...
- See also
tokenize()
,tokenize_labled()
- Methoddecode
string
|StringRange
decode(string
|StringRange
data
,void
|string
encoding
)- Description
Extract raw data from an encoded string suitable for transport between systems.
The encoding can be any of
"7bit"
"8bit"
"base64"
"binary"
"quoted-printable"
"x-uue"
"x-uuencode"
The encoding string is not case sensitive.
- See also
MIME.encode()
- Methoddecode_base32
string
decode_base32(string
encoded_data
)- Description
This function decodes data encoded using the base32 transfer encoding.
- See also
MIME.encode_base32()
,MIME.decode()
- Methoddecode_base32hex
string
decode_base32hex(string
encoded_data
)- Description
Decode strings according to RFC 4648 base32hex encoding.
- See also
MIME.decode_base32
- Methoddecode_base64
string
decode_base64(string
encoded_data
)- Description
This function decodes data encoded using the base64 transfer encoding.
- See also
MIME.encode_base64()
,MIME.decode()
- Methoddecode_base64url
string
decode_base64url(string
encoded_data
)- Description
Decode strings according to RFC 4648 base64url encoding.
- See also
MIME.decode_base64
- Methoddecode_crypt64
string(8bit)
decode_crypt64(string(7bit)
encoded_data
)- Description
This function decodes data encoded using the crypt64 encoding.
This is an ad hoc encoding similar to base64 that several password hashing algorithms use for entries in the password database.
- Note
This is NOT a MIME-compliant encoding, and MUST NOT be used as such.
- See also
MIME.encode_crypt64()
- Methoddecode_headerfield_params
array
(ADT.OrderedMapping
) decode_headerfield_params(string
s
)- Description
Decodes the given string as a key-value parameter cascade according to e.g. RFC 7239 section 4.
- Note
This function will decode all conforming inputs, but it will also be forgiving when presented with non-conforming inputs.
- See also
encode_headerfield_params
- Methoddecode_qp
string
decode_qp(string
encoded_data
)- Description
This function decodes data encoded using the quoted-printable (a.k.a. quoted-unreadable) transfer encoding.
- See also
MIME.encode_qp()
,MIME.decode()
- Methoddecode_uue
string
decode_uue(string
encoded_data
)- Description
This function decodes data encoded using the x-uue transfer encoding. It can also be used to decode generic UUEncoded files.
- See also
MIME.encode_uue()
,MIME.decode()
- Methoddecode_word
array
(string
) decode_word(string
word
)- Description
Extracts the textual content and character set from an encoded word as specified by RFC 1522/RFC 2047. The result is an array where the first element is the raw text, and the second element the name of the character set. If the input string is not an encoded word, the result is still an array, but the char set element will be set to 0.
- Note
Note that this function can only be applied to individual encoded words.
- See also
MIME.encode_word()
- Methoddecode_words_text
array
(array
(string
)) decode_words_text(string
txt
)- Description
Separates a header value containing text into units and calls
MIME.decode_word()
on them. The result is an array where each element is a result fromdecode_word()
.- See also
MIME.decode_words_tokenized
MIME.decode_words_text_remapped
- Methoddecode_words_text_remapped
string
decode_words_text_remapped(string
txt
)- Description
Like
MIME.decode_words_text()
, but the extracted strings are also remapped from their specified character encoding into UNICODE, and then pasted together. The result is thus a string in the original text format, without RFC 1522 escapes, and with all characters in UNICODE encoding.- See also
MIME.decode_words_tokenized_remapped
- Methoddecode_words_tokenized
array
(array
(string
)|int
) decode_words_tokenized(string
phrase
,int
|void
flags
)- Description
Tokenizes a header value just like
MIME.tokenize()
, but also converts encoded words usingMIME.decode_word()
. The result is an array where each element is either anint
representing a special character, or anarray
as returned bydecode_word()
representing an atom or a quoted string.- See also
MIME.decode_words_tokenized_labled
MIME.decode_words_tokenized_remapped
MIME.decode_words_text
- Methoddecode_words_tokenized_labled
array
(array
(string
|int
|array
(array
(string
)))) decode_words_tokenized_labled(string
phrase
,int
|void
flags
)- Description
Tokenizes and labels a header value just like
MIME.tokenize_labled()
, but also converts encoded words usingMIME.decode_word()
. The result is an array where each element is an array of two or more elements, the first being the label. The rest of the array depends on the label:"special"
One additional element, containing the character code for the special character as an
int
."word"
Two additional elements, the first being the word, and the second being the character set of this word (or 0 if it did not originate from an encoded word).
"domain-literal"
One additional element, containing the domain literal as a string.
"comment"
One additional element, containing an array as returned by
MIME.decode_words_text()
.- See also
MIME.decode_words_tokenized_labled_remapped
- Methoddecode_words_tokenized_labled_remapped
array
(array
(string
|int
)) decode_words_tokenized_labled_remapped(string
phrase
,int
|void
flags
)- Description
Like
MIME.decode_words_tokenized_labled()
, but the extracted words are also remapped from their specified character encoding into UNICODE. The result is identical to that ofMIME.tokenize_labled()
, but without RFC 1522 escapes, and with all characters in UNICODE encoding.
- Methoddecode_words_tokenized_remapped
array
(string
|int
) decode_words_tokenized_remapped(string
phrase
,int
|void
flags
)- Description
Like
MIME.decode_words_tokenized()
, but the extracted atoms are also remapped from their specified character encoding into UNICODE. The result is thus identical to that ofMIME.tokenize()
, but without RFC 1522 escapes, and with all characters in UNICODE encoding.- See also
MIME.decode_words_tokenized_labled_remapped
MIME.decode_words_text_remapped
- Methodencode
string
encode(string
data
,void
|string
encoding
,void
|string
filename
,void
|int
no_linebreaks
)- Description
Encode raw data into something suitable for transport to other systems.
The encoding can be any of
"7bit"
"8bit"
"base64"
"binary"
"quoted-printable"
"x-uue"
"x-uuencode"
The encoding string is not case sensitive. For the x-uue encoding, an optional
filename
string may be supplied.If a nonzero value is passed as
no_linebreaks
, the result string will not contain any linebreaks (base64 and quoted-printable only).- See also
MIME.decode()
- Methodencode_base32
string
encode_base32(string
data
,void
|int
no_linebreaks
,void
|int
no_pad
)- Description
Encode strings according to RFC 4648 base32 encoding.
If a nonzero value is passed as
no_linebreaks
, the result string will not contain any linebreaks.- See also
MIME.decode_base32()
,MIME.encode()
- Methodencode_base32hex
string
encode_base32hex(string
data
,void
|int
no_linebreaks
,void
|int
no_pad
)- Description
Encode strings according to RFC 4648 base32hex encoding.
If a nonzero value is passed as
no_linebreaks
, the result string will not contain any linebreaks.- See also
MIME.encode_base32hex
- Methodencode_base64
string
encode_base64(string
data
,void
|int
no_linebreaks
,void
|int
no_pad
)- Description
This function encodes data using the base64 transfer encoding.
If a nonzero value is passed as
no_linebreaks
, the result string will not contain any linebreaks.- See also
MIME.decode_base64()
,MIME.encode()
- Methodencode_base64url
string
encode_base64url(string
data
,void
|int
no_linebreaks
,void
|int
no_pad
)- Description
Encode strings according to RFC 4648 base64url encoding. No padding is performed and no_linebreaks defaults to true.
- See also
MIME.encode_base64
- Methodencode_crypt64
string
encode_crypt64(string(8bit)
data
)- Description
This function encodes data using the crypt64 encoding.
This is an ad hoc encoding similar to base64 that several password hashing algorithms use for entries in the password database.
- Note
This is NOT a MIME-compliant encoding, and MUST NOT be used as such.
- See also
MIME.decode_crypt64()
- Methodencode_headerfield_params
string
encode_headerfield_params(array
(mapping
|ADT.OrderedMapping
)params
)- Description
Encodes the given key-value parameters as a string according to e.g. RFC 7239 section 4.
- See also
decode_headerfield_params
- Methodencode_qp
string
encode_qp(string
data
,void
|int
no_linebreaks
)- Description
This function encodes data using the quoted-printable (a.k.a. quoted-unreadable) transfer encoding.
If a nonzero value is passed as
no_linebreaks
, the result string will not contain any linebreaks.- Note
Please do not use this function. QP is evil, and there's no excuse for using it.
- See also
MIME.decode_qp()
,MIME.encode()
- Methodencode_uue
string(7bit)
encode_uue(string(8bit)
encoded_data
,void
|string(7bit)
filename
)- Description
This function encodes data using the x-uue transfer encoding.
The optional argument
filename
specifies an advisory filename to include in the encoded data, for extraction purposes.This function can also be used to produce generic UUEncoded files.
- See also
MIME.decode_uue()
,MIME.encode()
- Methodencode_word
string
encode_word(string
|array
(string
|zero
)word
,string
|zero
encoding
)- Description
Create an encoded word as specified in RFC 1522 from an array containing a raw text string and a char set name.
The text will be transfer encoded according to the encoding argument, which can be either
"base64"
or"quoted-printable"
(or either"b"
or"q"
for short).If either the second element of the array (the char set name), or the encoding argument is 0, the raw text is returned as is.
- See also
MIME.decode_word()
- Methodencode_words_quoted
string
encode_words_quoted(array
(array
(string
)|int
)phrase
,string
encoding
)- Description
The inverse of
decode_words_tokenized()
, this functions accepts an array like the argument toquote()
, but instead of simple strings for atoms and quoted-strings, it will also accept pairs of strings to be passed toencode_word()
.- Parameter
encoding
Either
"base64"
or"quoted-printable"
(or either"b"
or"q"
for short).- See also
MIME.encode_words_quoted_remapped()
MIME.encode_words_quoted_labled()
- Methodencode_words_quoted_labled
string
encode_words_quoted_labled(array
(array
(string
|int
|array
(string
|array
(string
))))phrase
,string
encoding
)- Description
The inverse of
decode_words_tokenized_labled()
, this functions accepts an array like the argument toquote_labled()
, but "word" labled elements can optionally contain an additional string element specifying a character set, in which case an encoded-word will be used. Also, the format for "comment" labled elements is entirely different; instead of a single string, an array of strings or pairs like the first argument toencode_words_text()
is expected.- Parameter
encoding
Either
"base64"
or"quoted-printable"
(or either"b"
or"q"
for short).- See also
MIME.encode_words_quoted()
MIME.encode_words_quoted_labled_remapped()
- Methodencode_words_quoted_labled_remapped
string
encode_words_quoted_labled_remapped(array
(array
(string
|int
))phrase
,string
encoding
,string
|function
(string
:string
)charset
,string
|void
replacement
,function
(string
:string
)|void
repcb
)- Description
The inverse of
decode_words_tokenized_labled_remapped()
, this function accepts an array equivalent to the argument ofquote_labled()
, but also performs on demand word encoding in the same way asencode_words_text_remapped()
.
- Methodencode_words_quoted_remapped
string
encode_words_quoted_remapped(array
(string
|int
)phrase
,string
encoding
,string
|function
(string
:string
)charset
,string
|void
replacement
,function
(string
:string
)|void
repcb
)- Description
The inverse of
decode_words_tokenized_remapped()
, this functions accepts an array equivalent to the argument ofquote()
, but also performs on demand word encoding in the same way asencode_words_text_remapped()
.- See also
MIME.encode_words_text_remapped()
MIME.encode_words_quoted_labled_remapped()
- Methodencode_words_text
string
encode_words_text(array
(string
|array
(string
))phrase
,string
encoding
)- Description
The inverse of
decode_words_text()
, this function accepts an array of strings or pairs of strings which will each be encoded byencode_word()
, after which they are all pasted together.- Parameter
encoding
Either
"base64"
or"quoted-printable"
(or either"b"
or"q"
for short).- See also
MIME.encode_words_text_remapped
- Methodencode_words_text_remapped
string
encode_words_text_remapped(string
text
,string
encoding
,string
|function
(string
:string
)charset
,string
|void
replacement
,function
(string
:string
)|void
repcb
)- Description
This is the reverse of
MIME.decode_words_text_remapped()
. A single UNICODE string is provided, which is separated into fragments and transcoded to selected character sets by this function as needed.- Parameter
encoding
Either
"base64"
or"quoted-printable"
(or either"b"
or"q"
for short).- Parameter
charset
Either the name of a character set to use, or a function returning a character set to use given a text fragment as input.
- Parameter
replacement
The
replacement
argument to use when callingCharset.encoder
- Parameter
repcb
The
repcb
argument to use when callingCharset.encoder
- See also
MIME.encode_words_tokenized_remapped
- Methodext_to_media_type
string
ext_to_media_type(string
extension
)- Description
Returns the MIME media type for the provided filename
extension
. Currently 469 file extensions are known to this method. Zero will be returned on unknown file extensions.
- Methodgenerate_boundary
string
generate_boundary()- Description
This function will create a string that can be used as a separator string for multipart messages. If a boundary prefix has been set using
MIME.set_boundary_prefix()
, the generated string will be prefixed with the boundary prefix.The generated string is guaranteed not to appear in base64, quoted-printable, or x-uue encoded data. It is also unlikely to appear in normal text. This function is used by the cast method of the Message class if no boundary string is specified.
- See also
MIME.set_boundary_prefix()
- Methodget_boundary_prefix
string(8bit)
get_boundary_prefix()- Description
Returns the boundary_prefix set via
set_boundary_prefix()
.- See also
MIME.set_boundary_prefix()
,MIME.Message.setboundary()
- Methodguess_subtype
string
|zero
guess_subtype(string
type
)- Description
Provide a reasonable default for the subtype field.
Some pre-RFC 1521 mailers provide only a type and no subtype in the Content-Type header field. This function can be used to obtain a reasonable default subtype given the type of a message. (This is done automatically by the
MIME.Message
class.)Currently, the function uses the following guesses:
"text"
"plain"
"message"
"rfc822"
"multipart"
"mixed"
- Methodparse_headers
array
(mapping
(string
:string
)|string
) parse_headers(string
message
)array
(mapping
(string
:array
(string
))|string
) parse_headers(string
message
,int(1)
use_multiple
)- Description
This is a low level function that will separate the headers from the body of an encoded message. It will also translate the headers into a mapping. It will however not try to analyze the meaning of any particular header. This means that the body is returned as is, with any transfer-encoding intact.
It is possible to call this function with just the header part of a message, in which case an empty body will be returned.
The result is returned in the form of an array containing two elements. The first element is a mapping containing the headers found. The second element is a string containing the body.
Headers that occur multiple times will have their contents NUL separated, unless
use_multiple
has been specified, in which case the contents will be arrays.- Note
Some headers (eg Subject) may include RFC 1522/RFC 2047 encoded words. To decode these, see
decode_words_text
anddecode_words_tokenized
and their friends.
- Methodquote
string
quote(array
(string
|int
)lexical_elements
)- Description
This function is the inverse of the
MIME.tokenize
function.A header field value is constructed from a sequence of lexical elements. Characters (
int
s) are taken to be special-characters, whereas strings are encoded as atoms or quoted-strings, depending on whether they contain any special characters.- Note
There is no way to construct a domain-literal using this function. Neither can it be used to produce comments.
- See also
MIME.tokenize()
- Methodquote_labled
string
quote_labled(array
(array
(string
|int
))tokens
)- Description
This function performs the reverse operation of
tokenize_labled()
.- See also
MIME.quote()
,MIME.tokenize_labled()
- Methodreconstruct_partial
int
|object
reconstruct_partial(array
(object
)collection
)- Description
This function will attempt to reassemble a fragmented message from its parts.
The array
collection
should containMIME.Message
objects forming a complete set of parts for a single fragmented message. The order of the messages in the array is not important, but every part must exist at least once.Should the function succeed in reconstructing the original message, a new
MIME.Message
object will be returned.If the function fails to reconstruct an original message, an integer indicating the reason for the failure will be returned:
0
Returned if empty
collection
is passed in, or one that contains messages which are not of type message/partial, or parts of different fragmented messages.(1..)
If more fragments are needed to reconstruct the entire message, the number of additional messages needed is returned.
-1
If more fragments are needed, but the function can't determine exactly how many.
- Note
Note that the returned message may in turn be a part of another, larger, fragmented message.
- See also
MIME.Message->is_partial()
- Methodset_boundary_prefix
void
set_boundary_prefix(string(8bit)
boundary_prefix
)- Description
Set a message boundary prefix. The
MIME.generate_boundary()
will use this prefix when creating a boundary string.- Throws
An error is thrown if
boundary_prefix
doesn't adhere to RFC 1521.- See also
MIME.generate_boundary()
,MIME.get_boundary_prefix()
- Parameter
boundary_prefix
This must adhere to RFC 1521 and can not be longer than 56 characters.
- Methodtokenize
array
(string
|int
) tokenize(string
header
,int
|void
flags
)- Description
A structured header field, as specified by RFC 0822, is constructed from a sequence of lexical elements.
- Parameter
header
The header value to parse.
- Parameter
flags
An optional set of flags. Currently only one flag is defined:
TOKENIZE_KEEP_ESCAPES
Keep backslash-escapes in quoted-strings.
The lexical elements parsed are:
individual special characters
quoted-strings
domain-literals
comments
atoms
This function will analyze a string containing the header value, and produce an array containing the lexical elements.
Individual special characters will be returned as characters (i.e.
int
s).Quoted-strings, domain-literals and atoms will be decoded and returned as strings.
Comments are not returned in the array at all.
- Note
As domain-literals are returned as strings, there is no way to tell the domain-literal [127.0.0.1] from the quoted-string "[127.0.0.1]". Hopefully this won't cause any problems. Domain-literals are used seldom, if at all, anyway...
The set of special-characters is the one specified in RFC 1521 (i.e.
"<", ">", "@", ",", ";", ":", "\", "/", "?", "="
), and not the set specified in RFC 0822.- See also
MIME.quote()
,tokenize_labled()
,decode_words_tokenized_remapped()
.
- Methodtokenize_labled
array
(array
(string
|int
)) tokenize_labled(string
header
,int
|void
flags
)- Description
Similar to
tokenize()
, but labels the contents, by making arrays with two elements; the first a label, and the second the value thattokenize()
would have put there, except for that comments are kept.- Parameter
header
The header value to parse.
- Parameter
flags
An optional set of flags. Currently only one flag is defined:
TOKENIZE_KEEP_ESCAPES
Keep backslash-escapes in quoted-strings.
The following labels exist:
"encoded-word"
Word encoded according to =?...
"special"
Special character.
"word"
Word.
"domain-literal"
Domain literal.
"comment"
Comment.
- See also
MIME.quote()
,tokenize()
,decode_words_tokenized_labled_remapped()
Class MIME.Message
- Description
This class is used to hold a decoded MIME message.
- Variablebody_parts
array
(object
) MIME.Message.body_parts- Description
If the message is of type multipart, this is an array containing one Message object for each part of the message. If the message is not a multipart, this field is
0
(zero).- See also
type
,boundary
- Variableboundary
string
MIME.Message.boundary- Description
For multipart messages, this Content-Type parameter gives a delimiter string for separating the individual messages. As multiparts are handled internally by the module, you should not need to access this field.
- See also
setboundary()
- Variablecharset
string
MIME.Message.charset- Description
One of the possible parameters of the Content-Type header is the charset attribute. It determines the character encoding used in bodies of type text.
If there is no Content-Type header, the value of this field is
"us-ascii"
.- See also
type
- Variabledata
string
MIME.Message.data- Description
This variable contains the raw data of the message body entity.
The
type
andsubtype
attributes indicate how this data should be interpreted.- Note
In Pike 7.6 and earlier you had to use
getdata()
andsetdata()
to access this value.- See also
getdata()
,setdata()
- Variabledisp_params
mapping
(string
:string
) MIME.Message.disp_params- Description
A mapping containing all the additional parameters to the Content-Disposition header.
- See also
setdisp_param()
,get_filename()
- Variabledisposition
string
MIME.Message.disposition- Description
The first part of the Content-Disposition header, hinting on how this part of a multipart message should be presented in an interactive application.
If there is no Content-Disposition header, this field is
0
.
- Variableheaders
mapping
(string
:string
) MIME.Message.headers- Description
This mapping contains all the headers of the message.
The key is the header name (in lower case) and the value is the header value.
Although the mapping contains all headers, some particular headers get special treatment by the module and should not be accessed through this mapping. These fields are currently:
"content-type"
"content-disposition"
"content-length"
"content-transfer-encoding"
The contents of these fields can be accessed and/or modified through a set of variables and methods available for this purpose.
- See also
type
,subtype
,charset
,boundary
,transfer_encoding
,params
,disposition
,disp_params
,setencoding()
,setparam()
,setdisp_param()
,setcharset()
,setboundary()
- Note
Some headers (eg Subject) may include RFC 1522/RFC 2047 encoded words. To decode these, see
decode_words_text
anddecode_words_tokenized
and their friends.
- Variableparams
mapping
(string
:string
) MIME.Message.params- Description
A mapping containing all the additional parameters to the Content-Type header.
Some of these parameters have fields of their own, which should be accessed instead of this mapping wherever applicable.
- See also
charset
,boundary
,setparam()
- Variablesubtype
string
MIME.Message.subtype- Description
The Content-Type header contains a type, a subtype, and optionally some parameters. This field contains the subtype attribute extracted from the header.
If there is no Content-Type header, the value of this field is
"plain"
.- See also
type
,params
- Variabletransfer_encoding
string
MIME.Message.transfer_encoding- Description
The contents of the Content-Transfer-Encoding header.
If no Content-Transfer-Encoding header is given, this field is
0
(zero).Transfer encoding and decoding is done transparently by the module, so this field should be interesting only to applications wishing to do auto conversion of certain transfer encodings.
- See also
setencoding()
- Variabletype
string
MIME.Message.type- Description
The Content-Type header contains a type, a subtype, and optionally some parameters. This field contains the type attribute extracted from the header.
If there is no Content-Type header, the value of this field is
"text"
.- See also
subtype
,params
- Methodcast
(
string
)MIME.Message()- Description
Casting the message object to a string will yield a byte stream suitable for transmitting the message over protocols such as ESMTP and NNTP.
The body will be encoded using the current transfer encoding, and subparts of a multipart will be collected recursively. If the message is a multipart and no boundary string has been set, one will be generated using
generate_boundary()
.- See also
create()
- Methodcreate
MIME.MessageMIME.Message()
MIME.MessageMIME.Message(
string
message
)MIME.MessageMIME.Message(
string
message
,mapping
(string
:string
|array
(string
))headers
,array
(object
)|void
parts
)MIME.MessageMIME.Message(
string
message
,mapping
(string
:string
|array
(string
))headers
,array
(object
)|void
parts
,bool
guess
)- Description
There are several ways to call the constructor of the Message class:
With zero arguments, you will get a dummy message with neither headers nor body. Not very useful.
With one argument, the argument is taken to be a byte stream containing a message in encoded form. The constructor will analyze the string and extract headers and body.
With two or three arguments, the first argument is taken to be the raw body data, and the second argument a desired set of headers. The keys of this mapping are not case-sensitive. If the given headers indicate that the message should be of type multipart, an array of Message objects constituting the subparts should be given as a third argument.
With the
guess
argument set to 1 (headers
andparts
may be 0 if you don't want to give any), you get a more forgiving MIME Message that will do its best to guess what broken input data really meant. It won't always guess right, but for applications like mail archives and similar where you can't get away with throwing an error at the user, this comes in handy. Only use theguess
mode only for situations where you need to process broken MIME messages silently; the abuse of overly lax tools is what poisons standards.
- See also
cast()
- Methodget_filename
string
get_filename()- Description
This method tries to find a suitable filename should you want to save the body data to disk.
It will examine the filename attribute of the Content-Disposition header, and failing that the name attribute of the Content-Type header. If neither attribute is set, the method returns 0.
- Note
An interactive application should always query the user for the actual filename to use. This method may provide a reasonable default though.
- Methodgetdata
string
getdata()- Description
This method returns the raw data of the message body entity.
The
type
andsubtype
attributes indicate how this data should be interpreted.- See also
setdata()
,getencoded()
,data
- Methodgetencoded
string
getencoded()- Description
This method returns the data of the message body entity, encoded using the current transfer encoding.
You should never have to call this function.
- See also
getdata()
- Methodis_partial
array
(string
|int
)|zero
is_partial()- Description
If this message is a part of a fragmented message (i.e. has a Content-Type of message/partial), an array with three elements is returned.
The first element is an identifier string. This string should be used to group this message with the other fragments of the message (which will have the same id string).
The second element is the sequence number of this fragment. The first part will have number 1, the next number 2 etc.
The third element of the array is either the total number of fragments that the original message has been split into, or 0 of this information is not available.
If this method is called in a message that is not a part of a fragmented message, it will return 0.
- See also
MIME.reconstruct_partial()
- Methodparse_param
protected
void
parse_param(mapping
(string
:string
)params
,array
(string
|int
)entry
,string
header
,int
|void
guess
,array
(string
|int
)|void
entry2
)- Description
Parse a Content-Type or Content-Disposition parameter.
- Parameter
params
Mapping to add parameters to.
- Parameter
entry
Array of tokens containing a parameter declaration.
- Parameter
header
Name of the header from which
entry
originated. This is only used to report errors.- Parameter
guess
Make a best-effort attempt to parse broken entries.
- Parameter
entry2
Same as
entry
, but tokenized withMIME.TOKENIZE_KEEP_ESCAPES
.- See also
create()
- Methodsetboundary
void
setboundary(string
boundary
)- Description
Sets the boundary parameter of the Content-Type header.
This is equivalent of calling
setparam("boundary",
.boundary
)- See also
setparam()
- Methodsetcharset
void
setcharset(string
charset
)- Description
Sets the charset parameter of the Content-Type header.
This is equivalent of calling
setparam("charset",
.charset
)- See also
setparam()
- Methodsetdata
void
setdata(string
data
)- Description
Replaces the body entity of the data with a new piece of raw data.
The new data should comply to the format indicated by the
type
andsubtype
attributes.- Note
Do not use this method unless you know what you are doing.
- See also
getdata()
,setencoded
,data
- Methodsetdisp_param
void
setdisp_param(string
param
,string
value
)- Description
Set or modify the named parameter of the Content-Disposition header.
A common parameters is e.g. filename.
- Note
It is not allowed to modify the Content-Disposition header directly, please use this function instead.
- See also
setparam()
,get_filename()
- Methodsetencoding
void
setencoding(string
encoding
)- Description
Select a new transfer encoding for this message.
The Content-Transfer-Encoding header will be modified accordingly, and subsequent calls to
getencoded
will produce data encoded using the new encoding.See
MIME.encode()
for a list of valid encodings.- See also
getencoded()
,MIME.encode()
- Methodsetparam
void
setparam(string
param
,string
value
)- Description
Set or modify the named parameter of the Content-Type header.
Common parameters include charset for text messages, and boundary for multipart messages.
- Note
It is not allowed to modify the Content-Type header directly, please use this function instead.
- See also
setcharset()
,setboundary()
,setdisp_param()
Class MIME.StringRange
- Description
Class representing a substring of a larger string.
This class is used to reduce the number of string copies during parsing of
MIME.Message
s.
Module MIME.ext_to_media_type
Module MPI
- MethodFinalize
void
Finalize()- Description
Cleans up the
MPI
stack. Will be called automatically upon termination of the Pike program, but can be called explicitly when it is required that some of the parallel processes continue running and some terminate.- See also
Init()
, MPI_Finalize(3)
- MethodInit
void
Init()- Description
Initializes
MPI
.MPI
in Pike will auto-initialize once the firstMPI
-operation is called. You can call this function to initialize the parallelMPI
at a specific time, since initialization is a collective operation and will block the process until all member processes of the parallel program are present.- Example
int main() { MPI.Init(); write("I am process %d of %d.\n", MPI.world->rank, MPI.world->size); MPI.Finalize(); return 0; }
- See also
Finalize()
, MPI_Init(3)
- MethodOp_create
Op
Op_create(function
(object
,object
:void
)ufun
,int
commute
)- Description
Creates a user-defined MPI operation.
- Parameter
ufun
The function that implements the
MPI.Op
to be created.- Parameter
commute
Set to
1
if the operation commutes.- Example
void my_add_fun(object invec, object outvec) { for (int i = 0; i < sizeof(outvec); i++) { outvec[i] += invec[i]; }
int main() { MPI.Op myadd; MPI.IntArray ia = MPI.IntArray(10), results;
MPI.Init();
myadd = MPI.Op_create(my_add_fun, 1);
for (int i = 0; i < sizeof(ia); i++) ia[i] = random(1000);
if (!MPI.world->rank) results = MPI.IntArray(sizeof(ia)); MPI.world->Reduce(ia, results, 0); if (!MPI.world->rank) for (int i; i < sizeof(results); i++) write("%02d: %d\n", i, results[i]);
MPI.Finalize(); return 0; }
- Note
User-defined MPI operations may not call any MPI operations themselves.
- See also
MPI.Comm->Reduce()
, MPI_Op_create(3)
Class MPI.Comm
- Description
A communicator object holds a group of processes both relate messages between those processes as well as perform collective operations, in which all member processes of the communicator are involved.
- MethodRecv
void
Recv(MPI.Pointer
buf
,int
source
,int
|void
tag
,MPI.Status
|void
status
)void
Recv(MPI.IntArray
buf
,int
source
,int
|void
tag
,MPI.Status
|void
status
)void
Recv(MPI.FloatArray
buf
,int
source
,int
|void
tag
,MPI.Status
|void
status
)void
Recv(MPI.SingleArray
buf
,int
source
,int
|void
tag
,MPI.Status
|void
status
)void
Recv(MPI.Sentinel
buf
,int
source
,int
|void
tag
,MPI.Status
|void
status
)- Description
Receives a message from
source
with matchingtag
intobuf
, storing the sender's rank and the tag used into the optionally givenMPI.Status
.- Note
The type of the buffer of the receiver site has to match the type of the buffer of the sender. Exception: If a string is sent, it has to be received into a
MPI.Pointer
.- Example
int main() { MPI.IntArray ia = MPI.IntArray(5);
MPI.Init();
write("This is rank %d, %d processes total.\n", MPI.world->rank, MPI.world->size);
if (MPI.world->rank) { for (int i = 0; i < sizeof(ia); i++) { ia[i] = MPI.world->rank + i; }
MPI.world->Send(ia, 0); // send to rank 0 } else { for (int i = 0; i < MPI.world->size; i++) { MPI.world->Recv(ia, i); write("Rank %d sent %O to rank 0.\n", i, (array)ia); } }
MPI.Finalize(); return 0; }
- See also
MPI.Comm->Send()
,MPI.Comm->Bcast()
,MPI.ANY_SOURCE
,MPI.ANY_TAG
, MPI_Send(3).
- MethodSend
void
Send(string
buf
,int
dest
,int
|void
tag
)void
Send(MPI.IntArray
buf
,int
dest
,int
|void
tag
)void
Send(MPI.FloatArray
buf
,int
dest
,int
|void
tag
)void
Send(MPI.SingleArray
buf
,int
dest
,int
|void
tag
)void
Send(MPI.Sentinel
buf
,int
dest
,int
|void
tag
)- Description
Sends the buffer
buf
to the process withrank
dest
, marked withtag
.- See also
MPI.Comm()->Recv()
,MPI.Comm()->Bcast()
, MPI_Send(3).
Class MPI.FloatArray
- Description
This class implements an array of double precision floats.
- Note
Values will be converted to and from the Pike float type, which may introduce rounding errors if the types don't match in your installation.
- Method_values
array
(float
) values(MPI.FloatArrayarg)- Returns
A Pike array copy of this array.
- Example
array pike_array = values(typed_array);
- Method`[]
float
res =MPI.FloatArray()
[idx
]- Description
Gives the
idx
ths element of the MPI_FloatArray .
- Method`[]=
MPI.FloatArray()
[idx
] =val
- Description
Sets the
idx
ths element of the MPI_FloatArray toval
.
- Methodassign
void
assign(MPI_FloatArray
other
)- Description
Assigns the first
sizeof(other)
entries fromother
to the respective entries in the current array.- Throws
If
sizeof(other) > sizeof(this)
- Methodcast
(int)MPI.FloatArray()
(float)MPI.FloatArray()
(string)MPI.FloatArray()
(array)MPI.FloatArray()
(mapping)MPI.FloatArray()
(multiset)MPI.FloatArray()- Description
Supports casting (by copy) this MPI_FloatArray to a Pike array.
- Example
array pike_array = (array)typed_array;
Class MPI.IntArray
- Description
This class implements an array of 32 bit integers.
- Method_values
array
(int
) values(MPI.IntArrayarg)- Returns
A Pike array copy of this array.
- Example
array pike_array = values(typed_array);
- Methodassign
void
assign(MPI_IntArray
other
)- Description
Assigns the first
sizeof(other)
entries fromother
to the respective entries in the current array.- Throws
If
sizeof(other) > sizeof(this)
- Methodcast
(int)MPI.IntArray()
(float)MPI.IntArray()
(string)MPI.IntArray()
(array)MPI.IntArray()
(mapping)MPI.IntArray()
(multiset)MPI.IntArray()- Description
Supports casting (by copy) this MPI_IntArray to a Pike array.
- Example
array pike_array = (array)typed_array;
Class MPI.Op
- Description
Objects of this class represent MPI operations used in collective operations like
MPI.Comm()->reduce()
. You can use operations predefined by MPI or create your own.Other than that,
Op
s are not that useful from Pike.- See also
MPI
constants,MPI.Op_create()
,MPI.Comm->Reduce()
.
Class MPI.Pointer
- Description
A pointer like class. Because
MPI.Comm->Recv()
et al do not return "results" but take references/pointers to the target storage, you need to pass aPointer
toMPI.Comm()->recv()
in order to receive the string.- Example
int main() { string s; MPI.Pointer p = MPI.Pointer();
MPI.Init();
if (MPI.world->rank()) MPI.world->Send(ctime(time(1)), 0); else for (int i = 1; i < MPI.world->size; i++) { MPI.world->Recv(p, i); write("Rank %03d says now is %s.\n", p()); }
MPI.Finalize(); return 0; }
- Method`()
mixed
res =MPI.Pointer()
()mixed
res =MPI.Pointer()
()- Description
If called with 0 arguments, returns the pointee. If called with argument
m
, now points tom
.
Class MPI.Sentinel
- Description
A
Sentinel
is a kind of handle that can be given out by objects if they want to allowMPI
to send from/receive into the memory areas pointed to by the Sentinel.Other than that,
Sentinel
s are not that useful from Pike.- See also
Math.FMatrix()->get_sentinel()
,Math.FMatrix
Class MPI.SingleArray
- Description
This class implements an array of single precision floats.
- Note
Values will be converted to and from the Pike float type, which may introduce rounding errors if the types don't match in your installation.
- Method_values
array
(float
) values(MPI.SingleArrayarg)- Returns
A Pike array copy of this array.
- Example
array pike_array = values(typed_array);
- Method`[]
float
res =MPI.SingleArray()
[idx
]- Description
Gives the
idx
ths element of the MPI_SingleArray .
- Method`[]=
MPI.SingleArray()
[idx
] =val
- Description
Sets the
idx
ths element of the MPI_SingleArray toval
.
- Methodassign
void
assign(MPI_SingleArray
other
)- Description
Assigns the first
sizeof(other)
entries fromother
to the respective entries in the current array.- Throws
If
sizeof(other) > sizeof(this)
- Methodcast
(int)MPI.SingleArray()
(float)MPI.SingleArray()
(string)MPI.SingleArray()
(array)MPI.SingleArray()
(mapping)MPI.SingleArray()
(multiset)MPI.SingleArray()- Description
Supports casting (by copy) this MPI_SingleArray to a Pike array.
- Example
array pike_array = (array)typed_array;
Class MPI.Status
- Description
Objects of this class can be passed as the last argument to the receive operation of
MPI.Comm
communicators. After the operation has finished, they will contain information about the sender the message was received from and the tag used for communication.Therefore, Status objects are particularly helpful in combination with
MPI.ANY_SOURCE
andMPI.ANY_TAG
.- See also
MPI.Comm()->Recv()
- VariableSOURCE
int
MPI.Status.SOURCE- Description
Contains the source that the message was received from.
- Example
int main() { if (MPI.world->rank) { sleep(random(MPI.world->size)/10.0); MPI.world->Send(gethostname(), MPI.world->rank), 0); } else { MPI.Status status; MPI.Pointer p;
for (int i = 0; i < MPI.world->size; i++) { MPI.world->Recv(p, MPI.ANY_SOURCE, 0, status); write("Rank %d has hostname %s.\n", status->SOURCE, p()); } }
return 0; }
- See also
MPI.Comm()->Recv()
- MethodFinalize
Module Math
- Constantnan
constant
Math.nan
- Description
Floating point not-a-number (e.g. inf/inf).
- See also
Float.isnan()
- Methodchoose
int(0..)
choose(int(0..)
n
,int(0..)
k
)- Description
Calculate the binomial coefficient
n
choosek
.This is equal to
n
!/(k
!*(n
-k
)!).
- Methodconvert_angle
int
|float
convert_angle(int
|float
angle
,string
from
,string
to
)- Description
This function converts between degrees, radians and gons. The
from
andto
arguments may be any of the follwoing strings: "deg", "rad", "gon" and "str" for degrees, radians, gon and streck respectivly. The output is not guaranteed to be within the first turn, e.g. converting 10 radians yields almost 573 degrees as output.
- Methodfactor
array
(int(-1..)
) factor(int
x
)- Description
Factorize the integer
x
. The returned list of factors will be sorted biggest to smallest factor.- Note
In Pike versions prior to v8.0, only primes
<= 8161
were considered.
Class Math.Angle
- Description
Represents an angle.
- Variabletype
string
Math.Angle.type- Description
The type of the angle value. Is either "deg", "rad", "gon" or "str".
- Method`%
float
|int
|Angle
res =Math.Angle()
%_angle
- Description
Returns this result of this angle modulo the provided value. If differenced with an angle, a new angle object is returned.
- Method`*
float
|int
|Angle
res =Math.Angle()
*_angle
- Description
Returns the product between this angle and the provided value. If differenced with an angle, a new angle object is returned.
- Method`+
float
|int
|Angle
res =Math.Angle()
+_angle
- Description
Returns the sum of this angle and what it is added with. If added with an angle, a new angle object is returnes.
- Method`-
float
|int
|Angle
res =Math.Angle()
-_angle
- Description
Returns the difference between this angle and the provided value. If differenced with an angle, a new angle object is returned.
- Method`/
float
|int
|Angle
res =Math.Angle()
/_angle
- Description
Returns the fraction between this angle and the provided value. If differenced with an angle, a new angle object is returned.
- Method`<
int
res =Math.Angle()
<_angle
- Description
Compares the unnormalized angle of two Angle objects.
- Method`==
int
res =Math.Angle()
==_angle
- Description
Compares the unnormalized angle of two Angle objects.
- Method`>
int
res =Math.Angle()
>_angle
- Description
Compares the unnormalized angle of two Angle objects.
- Methodabout_face
void
about_face()- Description
Turns the direction of the angle half a turn. Equal to
add(180,"deg")
.
- Methodadd
Angle
add(float
|int
angle
)Angle
add(float
|int
angle
,string
type
)Angle
add(Angle
angle
)- Description
Adds the provided angle to the current angle. The result is normalized within 360 degrees.
- Methodcast
(
float
)Math.Angle()
(int
)Math.Angle()
(string
)Math.Angle()- Description
An angle can be casted to float, int and string.
- Methodcreate
Math.AngleMath.Angle()
Math.AngleMath.Angle(
int
|float
radians
)Math.AngleMath.Angle(
int
|float
angle
,string
type
)- Description
If an angle object is created without arguments it will have the value 0 radians.
- Methoddegree
int
|float
degree()- Description
Returns the number of degrees, including minutes and seconds as decimals.
- Methodformat_dms
string
format_dms()- Description
Returns degrees, minutes and seconds as a string, e.g. 47°6'36.00".
- Methodleft_face
void
left_face()- Description
Turns the direction of the angle a quarter of a turn to the left. Equal to
add(90,"deg")
.
- Methodright_face
void
right_face()- Description
Turns the direction of the angle a quarter of a turn to the right. Equal to
subtract(90,"deg")
.
- Methodset
Angle
set(string
type
,int
|float
_angle
)- Description
Sets the angle value and type to the given value and type.
- Methodset_degree
Angle
set_degree(int
|float
degree
)- Description
Sets the angle to the provided degree. Alters the type to degrees. Returns the current object.
- Methodset_dms
Angle
set_dms(int
degrees
)Angle
set_dms(int
degrees
,int
minutes
)Angle
set_dms(int
degrees
,int
minutes
,float
seconds
)- Description
Set degrees, minues and seconds. Returns the current angle object.
- Methodset_gon
Angle
set_gon(int
|float
gon
)- Description
Set the angle to the provided gons. Alters the type to gons. Returns the current angle object.
- Methodset_rad
Angle
set_rad(int
|float
rad
)- Description
Set the angle to the provided radians. Alters the type to radians. Returns the current angle object.
- Methodset_streck
Angle
set_streck(int
|float
str
)- Description
Set the angle to the provided strecks. Alters the type to streck. Returns the current angle object.
- Methodsubtract
Angle
subtract(float
|int
angle
)Angle
subtract(float
|int
angle
,string
type
)Angle
subtract(Angle
angle
)- Description
Subtracts the provided angle from the current angle. The result is normalized within 360 degrees.
Class Math.FMatrix
- Description
Matrix representation with single precision floating point values.
Class Math.IMatrix
- Description
Matrix representation with 32 bit integer values.
Class Math.LMatrix
- Description
Matrix representation with 64 bit integer values.
Class Math.Matrix
- Description
Matrix representation with double precision floating point values.
- Method`*
Method``*
Methodmult Matrix
res =Math.Matrix()
*with
Matrix
res =with
*Math.Matrix()
Matrix
mult(object
with
)- Description
Matrix multiplication.
- Method`+
Method``+
Methodadd Matrix
res =Math.Matrix()
+with
Matrix
res =with
+Math.Matrix()
Matrix
add(object
with
)- Description
Add this matrix to another matrix. A new matrix is returned. The matrices must have the same size.
- Method`-
Method``-
Methodsub Matrix
res =Math.Matrix()
- xMatrix
res =Math.Matrix()
-with
Matrix
res =with
-Math.Matrix()
Matrix
sub(object
with
)- Description
Subtracts this matrix from another. A new matrix is returned.
-m
is equal to-1*m
.
- Methodcast
(
array
(array
(float
)))Math.Matrix()(
array
(array
(float
)))Math.Matrix()- Description
It is possible to cast the matrix to an array and get back a double array of floats with the matrix values.
- See also
vect
- Methodcreate
Math.MatrixMath.Matrix(
array
(array
(int
|float
))matrix_2d
)Math.MatrixMath.Matrix(
array
(int
|float
)matrix_1d
)- Description
Initializes the matrix as a 1D or 2D matrix, e.g.
Math.Matrix( ({({1,2}),({3,4})}) )
.
- Methodcreate
Math.MatrixMath.Matrix(
int
n
,int
m
)Math.MatrixMath.Matrix(
int
n
,int
m
,string
type
)Math.MatrixMath.Matrix(
int
n
,int
m
,float
|int
init
)- Description
Initializes the matrix as to be a
n
*m
matrix withinit
in every value. If no third argument is given, or the third argument is"identity"
, the matrix will be initialized with all zeroes except for the diagonal which will be1
.
- Methodcreate
Math.MatrixMath.Matrix(
string
type
,int
size
)- Description
When
type
is"identity"
the matrix is initializes as a square identity matrix.
- Methodcreate
Math.MatrixMath.Matrix(
string
type
,int
size
,float
rads
,Matrix
axis
)Math.MatrixMath.Matrix(
string
type
,int
size
,float
rads
,float
x
,float
y
,float
z
)- Description
When
type
is"rotate"
the matrix is initialized as a rotation matrix.
- Methodmax
Methodmin Matrix
max()Matrix
min()- Description
Produces the maximum or minimum value of all the elements in the matrix.
- Methodnorm
Methodnorm2
Methodnormv float
norm()float
norm2()Matrix
normv()- Description
Norm of the matrix, and the square of the norm of the matrix. (The later method is because you may skip a square root sometimes.)
This equals |A| or sqrt( A02 + A12 + ... + An2 ).
It is only usable with 1xn or nx1 matrices.
m->normv()
is equal tom*(1.0/m->norm())
, with the exception that the zero vector will still be the zero vector (no error).
Class Math.SMatrix
- Description
Matrix representation with 16 bit integer values.
Module Math.Transforms
Class Math.Transforms.FFT
- Methodcreate
Math.Transforms.FFTMath.Transforms.FFT(
void
|int
n
,void
|bool
exact
)- Description
Creates a new transform object. If n is specified, a plan is created for transformations of n-size arrays.
- Parameter
n
Size of the transform to be preformed. Note that the transform object will be initialized for this size, but if an array of different size is sent to the object, it will be reinitialized. This can be used to gain preformace if all transforms will be of a given size.
- Parameter
exact
If exact is 1, a "better" plan for the transform will be created. This will take more time though. Use only if preformance is needed.
- MethodrFFT
array
(array
(float
)) rFFT(array
(int
|float
)real_input
)- Description
Returns the FFT of the input array. The input must be real and the output is complex. The output consists of an array. It's first element is the amplitudes and the second element is the phases.
- Parameter
real_input
The array of floats and/or ints to transform.
- Note
rIFFT(rFFT()) returns the input array scaled by n=sizeof(input array). This is due to the nature of the DFT algorithm.
- See also
rIFFT()
- MethodrIFFT
array
(float
) rIFFT(array
(array
(float
))input
)- Description
Returns the inverse FFT of the input array. The input must be complex and guaranteed to generate a real output.
The input is an array. It's first element is the amplitudes and the second element is the phases.
The output is an array of the real values for the iFFT.
- Parameter
real_input
The array of floats and/or ints to transform.
- Note
rIFFT(rFFT()) returns the input array scaled by n=sizeof(input array). This is due to the nature of the DFT algorithm.
- See also
rFFT()
- Methodcreate
- Constantnan
Module NetUtils
- Description
Various networking-related utility functions.
- Constantlocality
constant
NetUtils.locality
- Description
Mapping from
NetworkType
to an integer between 0 and 10 that describes how local that type of network is.
- VariableANY
string
|zero
NetUtils.ANY- Description
Returns either 0 or "::" depending on whether or not this computer has IPv6 support.
The intent is to use this when binding addresses, like port->bind(portno,callback,NetUtils.ANY) to get ipv6 support if present.
The reason for the existence of this function is that using "::" on a computer that does not actually have any ipv6 addresses (and thus no support for ipv6), at least on linux, causes the bind call to fail entirely.
- Note
Read only
- Methodbroadcast_addresses
mapping
(string
:array
(string
)) broadcast_addresses()- Description
Returns a mapping from interface name to the broadcast addresses on that interface.
- Methodcidr_to_netmask
array
(int
)|zero
cidr_to_netmask(string
|zero
cidr
)- Description
Converts a string with an IP address and mask (in CIDR notation) into a binary IP address and bitmask.
- Parameter
cidr
The CIDR-notation input string.
- Returns
An array containing:
Array int
ip
The binary representation of the IP address.
int
mask
The bitmask.
Returns 0 if the string could not be parsed.
- Methodclear_cache
void
clear_cache()- Description
Clear any caches. This might be needed if the network setup on the system changes.
- Methodconnectable_network_types
array
(NetworkType
) connectable_network_types()- Description
Returns network types in priority order according to RFC 3484.
This function assumes a network category (ipv4 or ipv6) is available if the local host has a configured address (excluding localhost) of that network type.
This function will always list the v6 and non-v6 addresses separately.
- Methodget_network_type
NetworkType
get_network_type(int
|string
ipstr
,bool
|void
separate_6
)- Description
Determine the network type of a given host
- Parameter
ipstr
IP address in string or numerical form
- Parameter
separate_6
Adds a 'v6' to the category for ipv6 addresses (ie, "global" and "globalv6")
- Returns
"localhost", "local", "private", "multicast", "teredo", "6to4" or "global"
"localhost" is the local computer.
"local" is the local network
"private" is a private network, such as 10.0.0.0/8 or fc00::/7 that is not also a local network.
"multicast" is a multicast address
"teredo" and "6to4" is an address in the teredo and 6to4 tunneling system, respectively.
"global" is a global address that does not match any other category
- Methodhost_to_cidr
string
host_to_cidr(int
|string
ip
)- Description
Return the CIDR notation for the single host defined by
x
.- Parameter
ip
The host ip in either string or raw form
- Returns
either
ip
/128 orip
/32 depending on the IPV6-ness of the host IP.
- Methodip_and_port_of
array
(string
)|zero
ip_and_port_of(RemoteAddressObject
|string
|int(0)
inc
,bool
|void
local_address
)- Description
Similar to ip_of. Returns 2-element array containing IP address and port number. Second element will be 0 if no port number can be retrieved.
This function can return 0 if
inc
is aRemoteAddressObject
and query_address throws an error or does not return a string.
- Methodip_in_block
bool
ip_in_block(int
net
,int
mask
,int
|string
ip
)- Description
Checks whether an IP address is in a block.
The net and mask parameters should be as returned from
cidr_to_netmask
.Throws an error if the IP address could not be parsed.
- Parameter
net
The network component of the block.
- Parameter
mask
The bitmask of the block.
- Parameter
ip
The IP address to check, in either string or binary representation.
- Returns
true if the IP is in the given block, false otherwise.
- Methodip_less_global
bool
ip_less_global(int
|string
which
,int
|string
towhat
,bool
|void
prefer_v4
)- Description
Returns true if
which
is less globally accessible thantowhat
.
- Methodip_of
string
ip_of(RemoteAddressObject
|string
|int(0)
inc
,bool
|void
local_address
,string
|void
def
)- Description
If the argument is an object with a
query_address
method, return the IP# part of the string returned by calling that function withlocal_address
as the argument.This means that for Stdio.File objects the remote address is returned by default, but if
local_address
is true the local address is returned.If the argument is a string instead, the part of the string before the first space is returned.
If the argument is 0 the default
def
value is returned, UNDEFINED unless specified.If
def
is supplied, it is used both when query_address() fails or something that is not a file descriptor object or a string is passed as the argument to this function.
- Methodip_to_string
string
|zero
ip_to_string(int
ip
,bool
|void
v6_only
)- Description
Converts a binary representation of an IP address into the IPv4 or IPv6 string representation.
The reverse of string_to_ip.
- Parameter
ip
The binary representation of the address.
- Parameter
v6_only
Always return IPV6 addresses. IPV4 addresses will be formatted as ::FFFF:<ipv4>
- Returns
The string representation of the address, or 0 if the IP was invalid.
- Methodis_local_host
bool
is_local_host(RemoteAddressObject
|string
|int
host
,bool
|void
only_localhost
)- Description
Returns true if host points to the local host.
- Parameter
host
The host to check
- Parameter
only_localhost
Only check if it is ipv6 or ipv4 localhost, not if it is one of the public IP# of this host.
- Returns
true if the given
host
is the local host, false otherwise
- Methodis_local_network
string
is_local_network(RemoteAddressObject
|int
|string
host
)- Description
Returns non-zero if host is on one of the local networks, and if so which interface it is on.
- Methodlocal_host
string
local_host()- Description
Returns either ::1 or 127.0.0.1 depending on the availability of IPV6.
- Methodlocal_interfaces
mapping
(string
:array
(string
)) local_interfaces()- Description
Return a mapping from interface to address/netmask (only returns non link-local addresses for ipv6)
- Methodlocal_ips
multiset
(string
) local_ips(bool
|void
include_localhost
)- Description
Return an array with locally configured IP-numbers, excluding the ones configured on the loopback inteface, unless
include_localhost
is specified.
- Methodlocal_ips_raw
multiset
(int
) local_ips_raw(bool
|void
include_localhost
)- Description
Much like local_ips, but returns the IP:s parsed to the integer raw format.
- Methodlocal_networks
IpRangeLookup
local_networks()- Description
Returns an IpRangeLookup that can be used to find the interface for an IP address.
- Methodnetmask_to_cidr
int
netmask_to_cidr(string
mask
)- Description
Returns the CIDR of a given netmask. Only returns the correct value for netmasks with all-zeroes at the end (eg, 255.255.255.128 works, while 255.255.255.3 will give the wrong return value)
- See also
http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation
- Methodnormalize_address
string
|zero
normalize_address(string
a
)- Description
Normalize the IP specified in
a
. This normalizes IPv6 addresses and converts ::FFFF:<ipv4> and ::<ipv4> to "normal" IPV4 addresses.Will return 0 if
a
is not a valid address.
- Methodport_of
string
port_of(RemoteAddressObject
|string
|int(0)
inc
,bool
|void
local_address
,string
|void
def
)- Description
Similar to ip_of but instead of IP returns port number.
If the argument is an object with a
query_address
method, return the port# part of the string returned by calling that function withlocal_address
as the argument.This means that for Stdio.File objects the remote address is returned by default, but if
local_address
is true the local address is returned.If the argument is a string instead, the part of the string after the first space is returned.
If the argument is 0 the default
def
value is returned, UNDEFINED unless specified.If
def
is supplied, it is used both when query_address() fails or something that is not a file descriptor object or a string is passed as the argument to this function.
- Methodsort_addresses
array
(string
) sort_addresses(array
(string
)addresses
,array
(NetworkType
)|void
exclude_types
,bool
|void
separate_v6
)- Description
Given a list of addresses, sort them according to connectable priority order (RFC 3484).
If
exclude_types
is specified, addresses that match any of the network types (({"local", "localhost"}) for the local network as an example) in the given array will be exluded from the result.If
separate_v6
is true,exclude_types
separates v6 from v4. That is, you can disable "localhost" without also disabling "localhostv6".The addresses inside each group will be returned in random order.
- Methodspecial_networks
IpRangeLookup
special_networks()- Description
Return an
IpRangeLookup
instance useful for finding out the address category of a ip. Basically likeget_network_type
without the "local" category.
- Methodstring_to_ip
int
string_to_ip(string
ips
)- Description
Converts a string representation of an IPv4 address into the binary representation.
- Parameter
ips
The string representation of the address. For convenience this function accepts the notation returned from fd->query_adddress() ("ip port")
- Returns
The binary representation of the address, or -1 if the string could not be parsed.
- Methodvalid_domain_name
bool
valid_domain_name(string
hostname
)- Description
Perform a basic sanity check on hostname based on total and subdomain label length. Does not test for invalid chars.
- Parameter
hostname
Domain name string to test.
- Returns
True if
hostname
looks like a valid domain name
Enum NetUtils.NetworkType
- Description
A list of all known network type/classes
- ConstantLOCALHOST
ConstantLOCAL
ConstantMULTICAST
ConstantGLOBAL
ConstantPRIVATE constant
NetUtils.LOCALHOST
constant
NetUtils.LOCAL
constant
NetUtils.MULTICAST
constant
NetUtils.GLOBAL
constant
NetUtils.PRIVATE
- Description
V4 and in non-v6-separate mode also used for V6
- ConstantLOCALHOSTV6
ConstantLOCALV6
ConstantPRIVATEV6
ConstantMULTICASTV6
ConstantGLOBALV6 constant
NetUtils.LOCALHOSTV6
constant
NetUtils.LOCALV6
constant
NetUtils.PRIVATEV6
constant
NetUtils.MULTICASTV6
constant
NetUtils.GLOBALV6
- Description
V6 only versions
Enum NetUtils.System
Class NetUtils.IpRangeLookup
- Description
Class used for checking an IP against a list of IP ranges and looking up some associated information.
- Methodcreate
NetUtils.IpRangeLookupNetUtils.IpRangeLookup(
mapping
(mixed
:array
(string
))ranges
)- Description
Creates a new IpRangeLookup object and initialises the IP range table. Errors will be thrown if
ranges
contains invalid data.- Parameter
ranges
A mapping from information data to arrays of IP ranges.
Each range can be a single addresses ("192.168.1.1"), a range of addresses ("192.168.1.1-192.168.1.5") or be written in CIDR notation ("192.168.1.0/24").
- Methodget_ranges
mapping
(string
:array
(Range
)) get_ranges()- Description
Return a copy of the internal range to info mapping.
- Methodlookup
mixed
lookup(int
|string
ipstr
)- Description
Looks up an IP address and returns the associated information, if any.
- Parameter
ipstr
The IP address in string or binary form.
- Returns
The information associated with the most-specific IP range matching ipstr.
Class NetUtils.NetMask
- Description
Persistent representation of a network + mask.
- Methodcast
(int)NetUtils.NetMask()
(float)NetUtils.NetMask()
(string)NetUtils.NetMask()
(array)NetUtils.NetMask()
(mapping)NetUtils.NetMask()
(multiset)NetUtils.NetMask()- Description
Convert to either a string (back to CIDR notation) or an array (net,mask)
- Methodcreate
NetUtils.NetMaskNetUtils.NetMask(
string
cidr
)- Description
Construct a new NetMask object from the given CIDR.
- Parameter
cidr
An IP and mask in CIDR notation.
Class NetUtils.RemoteAddressObject
- Description
Interface for objects that can be sent to ip_of and friends.
This matches at least Stdio.File and Stdio.Port, Stdio.UDP and some other classes.
Module Object
- ConstantDESTRUCT_EXPLICIT
ConstantDESTRUCT_NO_REFS
ConstantDESTRUCT_GC
ConstantDESTRUCT_CLEANUP constant
Object.DESTRUCT_EXPLICIT
constant
Object.DESTRUCT_NO_REFS
constant
Object.DESTRUCT_GC
constant
Object.DESTRUCT_CLEANUP
- Description
Flags passed to
lfun::_destruct
.- Note
Object.DESTRUCT_EXPLICIT
is0
andObject.DESTRUCT_CLEANUP
is1
for compatibility.
- ConstantDESTRUCT_EXPLICIT
Module PDF
- Constanta0_width
Constanta0_height
Constanta1_width
Constanta1_height
Constanta2_width
Constanta2_height
Constanta3_width
Constanta3_height
Constanta4_width
Constanta4_height
Constanta5_width
Constanta5_height
Constanta6_width
Constanta6_height
Constantb5_width
Constantb5_height
Constantletter_width
Constantletter_height
Constantlegal_width
Constantlegal_height
Constantledger_width
Constantledger_height
Constantp11x17_width
Constantp11x17_height constant
PDF.a0_width
constant
PDF.a0_height
constant
PDF.a1_width
constant
PDF.a1_height
constant
PDF.a2_width
constant
PDF.a2_height
constant
PDF.a3_width
constant
PDF.a3_height
constant
PDF.a4_width
constant
PDF.a4_height
constant
PDF.a5_width
constant
PDF.a5_height
constant
PDF.a6_width
constant
PDF.a6_height
constant
PDF.b5_width
constant
PDF.b5_height
constant
PDF.letter_width
constant
PDF.letter_height
constant
PDF.legal_width
constant
PDF.legal_height
constant
PDF.ledger_width
constant
PDF.ledger_height
constant
PDF.p11x17_width
constant
PDF.p11x17_height
Class PDF.PDFgen
- Description
Interface to the pdflib pdf generator. For more information see http://www.pdflib.com
- Methodadd_pdflink
object
add_pdflink(float
llx
,float
lly
,float
urx
,float
ury
,string
filename
,int
page
,string
dest
)
- Methodattach_file
object
attach_file(float
llx
,float
lly
,float
urx
,float
ury
,string
filename
,string
description
,string
author
,string
mimetype
,string
icon
)
- Methodbegin_page
PDF
begin_page()PDF
begin_page(float
width
,float
height
)- Description
note: Defaults to a4, portrait
- Methodfindfont
int
findfont(string
fontname
)int
findfont(string
fontname
,void
|string
encoding
,void
|int
embed
)
- Methodopen_CCITT
int
open_CCITT(string
filename
,int
width
,int
height
,int
BitReverse
,int
K
,int
BlackIs1
)
- Methodopen_image
int
open_image(string
type
,string
source
,string
data
,int
width
,int
height
,int
components
,int
bpc
,string
params
)
- Methodopen_image_file
int
open_image_file(string
type
,string
filename
)int
open_image_file(string
type
,string
filename
,void
|string
stringparam
,void
|int
intparam
)
- Methodshow_boxed
int
show_boxed(string
text
,float
x
,float
y
,float
width
,float
height
,string
mode
)int
show_boxed(string
text
,float
x
,float
y
,float
width
,float
height
,string
mode
,string
feature
)
- Constanta0_width
Module Pango
Module Pike
- ConstantINDEX_FROM_BEG
ConstantINDEX_FROM_END
ConstantOPEN_BOUND
Pike.local
constantINDEX_FROM_BEG
Pike.local
constantINDEX_FROM_END
Pike.local
constantOPEN_BOUND
- Description
Used with
predef::`[..]
andlfun::`[..]
to specify how the corresponding index maps to an upper or lower range bound:- 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.
- 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.
- OPEN_BOUND
The range is open in the corresponding direction. The index is irrelevant in this case.
- ConstantWEAK_INDICES
ConstantWEAK_VALUES
ConstantWEAK
Pike.local
constantWEAK_INDICES
Pike.local
constantWEAK_VALUES
Pike.local
constantWEAK
- Description
Flags for use together with
set_weak_flag
andget_weak_flag
. Seeset_weak_flag
for details.
- Constant__HAVE_CPP_PREFIX_SUPPORT__
Pike.local
constant__HAVE_CPP_PREFIX_SUPPORT__
- Description
This constant exists and has the value 1 if cpp supports the prefix feature.
- See also
cpp()
- Methodcount_memory
int
count_memory(int
|mapping
(string
:int
)options
,mixed
...things
)- Description
In brief, if you call
Pike.count_memory(0,x)
you get back the number of bytesx
occupies in memory.The detailed story is a bit longer:
This function calculates the number of bytes that all
things
occupy. Or put another way, it calculates the number of bytes that would be freed if all those things would lose their references at the same time, i.e. not only the memory in the things themselves, but also in all the things that are directly and indirectly referenced from those things and not from anywhere else.The memory counted is only that which is directly occupied by the things in question, including any overallocation for mappings, multisets and arrays. Other memory overhead that they give rise to is not counted. This means that if you would count the memory occupied by all the pike accessible things you would get a figure significantly lower than what the OS gives for the pike process.
Also, if you were to actually free the things, you should not expect the size of the pike process to drop the amount of bytes returned by this function. That since Pike often retains the memory to be reused later.
However, what you should expect is that if you actually free the things and then later allocates some more things for which this function returns the same size, there should be essentially no increase in the size of the pike process (some increase might occur due to internal fragmentation and memory pooling, but it should be small in general and over time).
The search for things only referenced from
things
can handle limited cyclic structures. That is done by doing a "lookahead", i.e. searching through referenced things that apparently have other outside references. You can control how long this lookahead should be throughoptions
(see below). If the lookahead is too short to cover the cycles in a structure then a too low value is returned. If the lookahead is made gradually longer then the returned value will eventually become accurate and not increase anymore. If the lookahead is too long then unnecessary time might be spent searching through things that really have external references.Objects that are known to be part of cyclic structures are encouraged to have an integer constant or variable
pike_cycle_depth
that specifies the lookahead needed to discover those cycles. WhenPike.count_memory
visits such objects, it uses that as the lookahead when going through the references emanating from them. Thus, assuming objects adhere to this convention, you should rarely have to specify a lookahead higher than zero to this function.Note that
pike_cycle_depth
can also be set to zero to effectively stop the lookahead from continuing through the object. That can be useful to put in objects you know have global references, to speed up the traversal.- Parameter
options
If this is an integer, it specifies the maximum lookahead distance. -1 counts only the memory of the given
things
, without following any references. 0 extends the count to all their referenced things as long as there are no cycles (except ifpike_cycle_depth
is found in objects - see above). 1 makes it cover cycles of length 1 (e.g. a thing points to itself), 2 handles cycles of length 2 (e.g. where two things point at each other), and so on.However, the lookahead is by default blocked by programs, i.e. it never follows references emanating from programs. That since programs seldom are part of dynamic data structures, and they also typically contain numerous references to global data which would add a lot of work to the lookahead search.
To control the search in more detail,
options
can be a mapping instead:lookahead
:int
The maximum lookahead distance, as described above. Defaults to 0 if missing.
block_arrays
:int
When any of these are given with a nonzero value, the corresponding type is blocked when lookahead references are followed. They are unblocked if the flag is given with a zero value. Only programs are blocked by default.
These blocks are only active during the lookahead, so blocked things are still recursed and memory counted if they are given as arguments or only got internal references.
block_mappings
:int
block_multisets
:int
block_objects
:int
block_programs
:int
block_strings
:int
If positive then strings are always excluded (except any given directly in
things
), if negative they are always included. Otherwise they are counted if they have no other refs, but note that since strings are shared they might get refs from other unrelated parts of the program.block_pike_cycle_depth
:int
Do not heed
pike_cycle_depth
values found in objects. This is implicit if the lookahead is negative.return_count
:int
Return the number of things that memory was counted for, instead of the byte count. (This is the same number
internal
contains ifcollect_stats
is set.)collect_internals
:int
If this is nonzero then its value is replaced with an array that contains the things that memory was counted for.
collect_externals
:int
If set then the value is replaced with an array containing the things that were visited but turned out to have external references (within the limited lookahead).
collect_direct_externals
:int
If set then the value is replaced with an array containing the things found during the lookahead that (appears to) have direct external references. This list is a subset of the
collect_externals
list. It is useful if you get unexpected global references to your data structure which you want to track down.collect_stats
:int
If this is nonzero then the mapping is extended with more elements containing statistics from the search; see below.
When the
collect_stats
flag is set, the mapping is extended with these elements:internal
:int
Number of things that were marked internal and hence memory counted. It includes the things given as arguments.
cyclic
:int
Number of things that were marked internal only after resolving cycles.
external
:int
Number of things that were visited through the lookahead but were found to be external.
visits
:int
Number of times things were visited in total. This figure includes visits to various internal things that aren't visible from the pike level, so it might be larger than what is apparently motivated by the numbers above.
revisits
:int
Number of times the same things were revisited. This can occur in the lookahead when a thing is encountered through a shorter path than the one it first got visited through. It also occurs in resolved cycles. Like
visits
, this count can include things that aren't visible from pike.rounds
:int
Number of search rounds. This is usually 1 or 2. More rounds are necessary only when blocked types turn out to be (acyclic) internal, so that they need to be counted and recursed anyway.
work_queue_alloc
:int
The number of elements that were allocated to store the work queue which is used to keep track of the things to visit during the lookahead. This is usually bigger than the maximum number of things the queue actually held.
size
:int
The memory occupied by the internal things. This is the same as the normal return value, but it's put here too for convenience.
- Parameter
things
One or more things to count memory size for. Only things passed by reference are allowed, except for functions which are forbidden because a meaningful size calculation can't be done for them.
Integers are allowed because they are bignum objects when they become sufficiently large. However, passing an integer that is small enough to fit into the native integer type will return zero.
- Returns
Returns the number of bytes occupied by the counted things. If the
return_count
option is set then the number of things are returned instead.- Note
The result of
Pike.count_memory(0,a,b)
might be larger than the sum ofPike.count_memory(0,a)
andPike.count_memory(0,b)
sincea
andb
together might reference things that aren't referenced from anywhere else.- Note
It's possible that a string that is referenced still isn't counted, because strings are always shared in Pike and the same string may be in use in some unrelated part of the program.
- Methodgc_parameters
mapping
(string
:float
) gc_parameters(void
|mapping
(string
:mixed
)params
)- Description
Set and get various parameters that control the operation of the garbage collector. The passed mapping contains the parameters to set. If a parameter is missing from the mapping, the current value will be filled in instead. The same mapping is returned. Thus an empty mapping, or no argument at all, causes a mapping with all current settings to be returned.
The following parameters are recognized:
"enabled"
:int
If this is 1 then the gc is enabled as usual. If it's 0 then all automatically scheduled gc runs are disabled and the parameters below have no effect, but explicit runs through the
gc
function still works as usual. If it's -1 then the gc is completely disabled so that even explicitgc
calls won't do anything."garbage_ratio_low"
:float
As long as the gc time is less than time_ratio below, aim to run the gc approximately every time the ratio between the garbage and the total amount of allocated things is this.
"time_ratio"
:float
When more than this fraction of the time is spent in the gc, aim for garbage_ratio_high instead of garbage_ratio_low.
"garbage_ratio_high"
:float
Upper limit for the garbage ratio - run the gc as often as it takes to keep it below this.
"min_gc_time_ratio"
:float
This puts an upper limit on the gc interval, in addition to the factors above. It is specified as the minimum amount of time spent doing gc, as a factor of the total time. The reason for this limit is that the current amount of garbage can only be measured in a gc run, and if the gc starts to run very seldom due to very little garbage, it might get too slow to react to an increase in garbage generation. Set to 0.0 to turn this limit off.
"average_slowness"
:float
When predicting the next gc interval, use a decaying average with this slowness factor. It should be a value between 0.0 and 1.0 that specifies the weight to give to the old average value. The remaining weight up to 1.0 is given to the last reading.
"pre_cb"
:function
(:void
)This function is called when the gc starts.
"post_cb"
:function
(:void
)This function is called when the mark and sweep pass of the gc is done.
"destruct_cb"
:function
(object
,int
,int
:void
)This function is called once for each object that is part of a cycle just before the gc will destruct it. The arguments are:
The object to be destructed.
The reason for it being destructed. One of:
Object.DESTRUCT_CLEANUP
Destructed during exit.
Object.DESTRUCT_GC
Destructed during normal implicit or explicit
gc()
.The number of references it had.
"done_cb"
:function
(int
:void
)This function is called when the gc is done and about to exit. The argument is the same value as will be returned by gc().
- See also
gc
,Debug.gc_status
- Methodget_first_arg_type
type
|zero
get_first_arg_type(type
fun_type
)- Description
Check if a function of the type
fun_type
may be called with an argument, and return the type of that argument.- Returns
Returns the expected type of the first argument to the function.
Returns 0 (zero) if a function of the type
fun_type
may not be called with any argument, or if it is not callable.
- Methodget_return_type
type
|zero
get_return_type(type
fun_type
)type
|zero
get_return_type(type
fun_type
,mapping
state
)- Description
Check what a function of the type
fun_type
will return if called with no further arguments.- Parameter
state
State mapping. This mapping may be used by attribute handlers to store state between different arguments. Note that attribute handlers may alter the contents of the mapping.
- Returns
Returns the type of the returned value on success
Returns 0 (zero) on failure.
- Methodget_runtime_info
mapping
(string
:int
|string
) get_runtime_info()- Description
Get information about the Pike runtime.
- Returns
Returns a mapping with the following content:
"bytecode_method"
:string
A string describing the bytecode method used by the Pike interpreter.
"abi"
:int
The number of bits in the ABI. Usually
32
or64
."native_byteorder"
:int
The byte order used by the native cpu. Usually
1234
(aka little endian) or4321
(aka bigendian)."int_size"
:int
The number of bits in the native integer type. Usually
32
or64
."time_size"
:int
The number of bits in the native time_t type. This is typically the same value as
"int_size"
."float_size"
:int
The number of bits in the native floating point type. Usually
32
or64
."auto_bignum"
:int(1)
Integers larger than the native size are now always automatically converted into bignums.
- Methodget_type_attributes
array
(string
) get_type_attributes(type
t
)- Description
Get the attribute markers for a type.
- Returns
Returns an array with the attributes for the type
t
.- See also
get_return_type()
,get_first_arg_type()
- Methodidentify_cycle
array
(mixed
) identify_cycle(mixed
x
)- Description
Identify reference cycles in Pike datastructures.
This function is typically used to identify why certain datastructures need the
gc
to run to be freed.- Parameter
x
Value that is believed to be involved in a reference cycle.
- Returns
zero
Returns
UNDEFINED
ifx
is not member of a reference cycle.array
(mixed
)Otherwise returns an array identifying a cycle with
x
as the first element, and where the elements refer to each other in order, and the last element refers to the first.
- Methodimplicit_gc_real_time
int
implicit_gc_real_time(void
|int
nsec
)- Description
Returns the total amount of real time that has been spent in implicit GC runs. The time is normally returned in microseconds, but if the optional argument
nsec
is nonzero it's returned in nanoseconds.- See also
Debug.gc_status
- Methodlow_check_call
type
|zero
low_check_call(type
fun_type
,type
arg_type
)type
|zero
low_check_call(type
fun_type
,type
arg_type
,int
flags
)type
|zero
low_check_call(type
fun_type
,type
arg_type
,int
flags
,mapping
state
)type
|zero
low_check_call(type
fun_type
,type
arg_type
,int
flags
,mapping
state
,mixed
val
)- Description
Check whether a function of type
fun_type
may be called with a first argument of typearg_type
.- Parameter
flags
The following flags are currently defined:
1
Strict types. Fail if not all possible values in
arg_type
are valid as the first argument tofun_type
.2
Last argument.
arg_type
is the last argument tofun_type
.3
Both strict types and last argument as above.
- Parameter
state
State mapping. This mapping may be used by attribute handlers to store state between different arguments. Note that attribute handlers may alter the contents of the mapping.
- Parameter
val
Value of the argument if known.
- Returns
Returns a continuation type on success.
Returns 0 (zero) on failure.
- Methodsoft_cast
type
|zero
soft_cast(type
to
,type
from
)- Description
Return the resulting type from a soft cast of
from
toto
.- Returns
Returns
UNDEFINED
if the cast is invalid.- Note
The return value for the invalid case may in the future change to
__unknown__
.
- Methodswitch_lookup
int
switch_lookup(array
|mapping
switch_table
,mixed
val
)- Description
Lookup a
switch
-case.- Parameter
switch_table
Lookup table as generated by the compiler.
- Parameter
val
Value to lookup.
- Returns
Returns the entry number (ie
>= 0
) ifval
was found inswitch_table
, and the binary inverse of the next entry number (ie< 0
) if it was not found.
Class Pike.Annotation
- Description
This class describes the API that the compiler expects for the annotation syntax.
- Note
Classes implementing this API typically need to be marked constant.
- See also
Annotations
- Methodend_pass
optional
void
end_pass(int
pass
,program
prog
,CompilerEnvironment.PikeCompiler
compiler
)- Description
Callback called by the compiler when it is finishing a compilation pass.
- Parameter
pass
Compilation pass.
- Parameter
prog
Program being compiled.
- Parameter
compiler
CompilerEnvironment.PikeCompiler
state for the compiler.
Class Pike.BacktraceFrame
- Method_is_type
bool
res = is_type(Pike.BacktraceFrame()
)- Description
This object claims to be an array for backward compatibility.
- Method`[]
mixed
res =Pike.BacktraceFrame()
[index
]- Description
The BacktraceFrame object can be indexed as an array.
- Method_is_type
Class Pike.DestructImmediate
- Description
An empty class that can be inherited to get the PROGRAM_DESTRUCT_IMMEDIATE flag set.
- See also
InhibitDestruct
Class Pike.FakeObject
- Description
Used as a place holder in eg backtraces for objects that are unsuitable to have references to in backtraces.
Examples of such objects are instances of
Thread.MutexKey
, andNettle.Cipher.State
.- See also
backtrace()
Class Pike.InhibitDestruct
- Description
This is a class that implements a way to temporarily inhibit destruction by explicit calls of
destruct()
.This is mostly useful as a mix-in for modules implemented in C or similar.
All symbols in the class are either
protected
orprivate
in order to affect users minimally.- See also
DestructImmediate
- Method_destruct
bool
_destruct(int
|void
reason
)- Description
Returns
1
wheninhibit_destruct()
has been called more times thanpermit_destruct()
.- See also
inhibit_destruct()
,permit_destruct()
,destruct()
,lfun::_destruct()
- Methodinhibit_destruct
void
inhibit_destruct()- Description
Inhibit explicit destruction of this object.
- See also
permit_destruct()
,_destruct()
,destruct()
,lfun::_destruct()
Class Pike.LiveBacktraceFrame
- Description
A
BacktraceFrame
which retains access to the running code.This means that unless the corresponding thread running the code is halted (or similar), the values in the fields contained in this object may change at any time.
On the other hand it allows for inspection and altering of the local variables (if any) belonging to the frame. Typical use of this would be for debugging.
- See also
BacktraceFrame
- Method_is_type
bool
res = is_type(Pike.LiveBacktraceFrame()
)- Description
This object claims to be an array for backward compatibility.
Class Pike.MasterCodec
- Description
This is a bare-bones codec that is used when loading a dumped master.
- See also
Codec
Class Pike.PollBackend
- Description
Backend
implemented with poll(2) (SVr4, POSIX).- See also
Backend
- Method`()
float
|int(0)
res =Pike.PollBackend()
()- Description
Perform one pass through the backend.
Calls any outstanding call-outs and non-blocking I/O callbacks that are registred in this backend object.
- Parameter
sleep_time
Wait at most
sleep_time
seconds. The default when unspecified or the integer0
is no time limit.- Returns
If the backend did call any callbacks or call outs then the time spent in the backend is returned as a float. Otherwise the integer
0
is returned.- See also
Pike.DefaultBackend
,main()
Class Pike.PollDeviceBackend
- Description
Backend
implemented with /dev/poll (Solaris and OSF/1), epoll(2) (Linux) or kqueue(2) (MacOS X, FreeBSD, OpenBSD, etc).- See also
Backend
- Method`()
float
|int(0)
res =Pike.PollDeviceBackend()
()- Description
Perform one pass through the backend.
Calls any outstanding call-outs and non-blocking I/O callbacks that are registred in this backend object.
- Parameter
sleep_time
Wait at most
sleep_time
seconds. The default when unspecified or the integer0
is no time limit.- Returns
If the backend did call any callbacks or call outs then the time spent in the backend is returned as a float. Otherwise the integer
0
is returned.- See also
Pike.DefaultBackend
,main()
- Methodenable_core_foundation
int
enable_core_foundation(bool
enable
)- Description
On systems with CoreFoundation (OSX, iOS, etc), use CoreFoundation to poll for events. This enables system level technologies that rely on CoreFoundation Runloops to function properly.
- Parameter
enable
enable or disable this functionality
- Returns
the previous value of this setting.
- Methodenable_external_runloop
int
enable_external_runloop(bool
enable
)- Description
On systems with CoreFoundation (OSX, iOS, etc), delegate running of the Pike Backend to the main runloop of the process (such as a Cocoa application's NSRunLoop).
Enabling the external runloop allows Pike callouts and callback-based I/O to function normally while greatly reducing cpu utilization compared to running the external runloop manually.
- Parameter
enable
enable or disable this functionality
- Returns
the previous value of this setting.
- Methodquery_core_foundation_enabled
int
query_core_foundation_enabled()- Description
On systems with CoreFoundation (OSX, iOS, etc), indicate whether CoreFoundation is being used by this backend to poll for events.
- Returns
the current state of CoreFoundation polling: 1=enabled, 0=disabled
Class Pike.SelectBackend
- Description
Backend based on the classic select(2) system call from BSD.
- Method`()
float
|int(0)
res =Pike.SelectBackend()
()- Description
Perform one pass through the backend.
Calls any outstanding call-outs and non-blocking I/O callbacks that are registred in this backend object.
- Parameter
sleep_time
Wait at most
sleep_time
seconds. The default when unspecified or the integer0
is no time limit.- Returns
If the backend did call any callbacks or call outs then the time spent in the backend is returned as a float. Otherwise the integer
0
is returned.- See also
Pike.DefaultBackend
,main()
Class Pike.SmallBackend
- Annotations
@
@Pike.Annotations.Implements
(Pike.__Backend
)- Description
This is the most suitable backend implementation if you only want to monitor a small number of
Stdio.File
objects.
Class Pike.Watchdog
- Description
A Watchdog that ensures that the process is not hung for an extended period of time. The definition of 'hung' is: Has not used the default backend.
An important and useful side-effect of this class is that the process will start to respond to kill -QUIT by printing a lot of debug information to stderr, including memory usage, and if pike is compiled with profiling, the CPU used since the last time kill -QUIT was called.
- Methodadd_debug
void
add_debug(function
(void
:void
)f
)- Description
The function
f
will be called if the watchdog triggers, before the normal watchdog output is written.
- Methodadd_probe
void
add_probe(function
(void
:bool
)f
)- Description
Add additional functions to be called each time the watchdog is checked. If any of the probes return false, the watchdog will trigger.
- Methodalarm_alarm_alarm
void
alarm_alarm_alarm()- Description
Explicitly trigger the watchdog, if enough CPU time has been used. This is not normally called manually.
- Methodcreate
Pike.WatchdogPike.Watchdog(
int
t
)- Description
Create a new watchdog, with the intended delay.
Even though the actual watchdog functionality is currently not available on systems without sigalarm, such as Windows, the functionality can still be triggered by adding probe functions
- See also
add_probe()
andset_delay()
- Methodping
void
ping()- Description
Tell the watchdog that all is well, and the CPU is not really blocked. Can be used during long calculations that block the normal backend, note that this basically bypasses the main functionality of the watchdog, that is, detecting blocked backend threads.
- Methodprint_debug
void
print_debug()- Description
Output thread stacktraces, memory and profiling (if available) debug information to stderr.
- Methodreally_trigger_watchdog_promise
void
really_trigger_watchdog_promise()- Description
Really trigger the watchdog, killing the current process. This is not normally called manually.
Class Pike.__Backend
- Description
Base class for the various backend implementations.
Implements callback registration functions and defines the main backend APIs.
- Variablebefore_callback
Variableafter_callback function
(Backend
:void
) Pike.__Backend.before_callbackfunction
(Backend
:void
) Pike.__Backend.after_callback- Description
If set, these are called just before and after the backend waits for an event.
If an error is thrown from these callbacks then it is reported using
master()->handle_error()
- it doesn't interrupt the operation of the backend.
- Method_do_call_outs
int
_do_call_outs()- Description
Do all pending call_outs.
This function runs all pending call_outs that should have been run if Pike returned to the backend. It should not be used in normal operation.
As a side-effect, this function sets the value returned by
time(1)
to the current time.- Returns
Zero if no call outs were called, nonzero otherwise.
- See also
call_out()
,find_call_out()
,remove_call_out()
- Method`()
float
|int(0)
res =Pike.__Backend()
()- Description
Perform one pass through the backend.
Calls any outstanding call-outs and non-blocking I/O callbacks that are registred in this backend object.
- Parameter
sleep_time
Wait at most
sleep_time
seconds. The default when unspecified or the integer0
is no time limit.- Returns
If the backend did call any callbacks or call outs then the time spent in the backend is returned as a float. Otherwise the integer
0
is returned.- Note
If multiple threads concurrently call this function, then:
One of the threads will be the controlling thread.
All callbacks will be called from the controlling thread.
All threads will be woken up when the controlling thread is done. This may be prematurely if the controlling thread had a shorter timeout.
- Note
The backend may also be woken up prematurely if the set of events to monitor is changed.
- Note
Multiple concurrent calls was not supported prior to Pike 8.0.
- See also
Pike.DefaultBackend
,main()
- Methodadd_file
void
add_file(Stdio.File
|Stdio.FILE
f
)- Description
Register a file to be handled by this backend.
- Parameter
f
File to register.
Registers
f
to be handled by this backend. This simply doesf->set_backend(backend)
wherebackend
is this object.- See also
Pike.DefaultBackend
,main()
- Methodcall_out
array
call_out(function
(:void
)f
,float
|int
delay
,mixed
...args
)- Description
Make a delayed call to a function.
call_out()
places a call to the functionf
with the argumentargs
in a queue to be called in aboutdelay
seconds.If
f
returns-1
, no other call out or callback will be called by the backend in this round. I.e.`()
will return right away. For the main backend that means it will immediately start another round and check files and call outs anew.- Returns
Returns a call_out identifier that identifies this call_out. This value can be sent to eg
find_call_out()
orremove_call_out()
.- See also
remove_call_out()
,find_call_out()
,call_out_info()
,CallOut
- Methodcall_out_info
array
(array
) call_out_info()- Description
Get info about all call_outs.
This function returns an array with one entry for each entry in the call out queue. The first in the queue will be at index 0. Each index contains an array that looks like this:
Array int
time_left
Time remaining in seconds until the call_out is to be performed.
int(0)
zero
Used to be the object that scheduled the call_out.
function
(:void
)fun
Function to be called.
mixed
...args
Arguments to the function.
- See also
call_out()
,find_call_out()
,remove_call_out()
- Methodexecuting_thread
Thread.Thread
executing_thread()int
executing_thread()- Description
Return the thread currently executing in the backend. I.e. the thread that has called
`()
and hasn't exited from that call. Zero is returned if there's no thread in the backend.If Pike is compiled without thread support then
1
is returned if we're inside the backend,0
otherwise.
- Methodfind_call_out
int
find_call_out(function
(:void
)f
)int
find_call_out(array
id
)- Description
Find a call out in the queue.
This function searches the call out queue. If given a function as argument, it looks for the first call out scheduled to that function.
The argument can also be a call out id as returned by
call_out()
, in which case that call_out will be found (Unless it has already been called).- Returns
find_call_out()
returns the remaining time in seconds before that call_out will be executed. If no call_out is found,zero_type
(find_call_out
(f)) will return 1.- See also
call_out()
,remove_call_out()
,call_out_info()
- Methodget_stats
mapping
(string
:int
) get_stats()- Description
Get some statistics about the backend.
- Returns
Returns a mapping with the follwoing content:
"num_call_outs"
:int
The number of active call-outs.
"call_out_bytes"
:int
The amount of memory used by the call-outs.
- Methodid
int
id()- Description
Return an integer that uniquely identifies this backend. For the default backend that integer is
0
.
- Methodremove_call_out
int
remove_call_out(function
(:void
)f
)int
remove_call_out(array
id
)- Description
Remove a call out from the call out queue.
This function finds the first call to the function
f
in the call_out queue and removes it. You can also give a call out id as argument (as returned bycall_out()
).- Returns
The remaining time in seconds left to that call out will be returned. If no call_out was found,
zero_type
(remove_call_out
(f
)) will return 1.- See also
call_out_info()
,call_out()
,find_call_out()
Class Pike.__Backend.CallOut
- Description
Represents a single call_out in the call_out list.
- See also
call_out()
- Variableargs
protected
array
Pike.__Backend.CallOut.args- Description
The array containing the function and arguments.
- Methodcreate
Pike.__Backend.CallOutPike.__Backend.CallOut(
int
|float
seconds
,mixed
fun
,mixed
...args
)- Description
Start a new call out.
This is the low-level implementation of
call_out()
.call_out()
is essentially implemented as:array call_out(mixed fun,int|float seconds,mixed ... args){return CallOut(seconds, fun, @args)->args;}
- See also
call_out()
Module Pike.Annotations
- Description
This module contains the set of annotations that the compiler and runtime care about.
- ConstantAutoCodec
constant
Pike.Annotations.AutoCodec
- Description
This
Annotation
causes the compiler to automatically add an implementation of_encode()
that returns an array with suitable arguments tolfun::create
.- Note
This annotation is only useful for classes that use the implicit create()-syntax, or have a create() that doesn't need any arguments.
- ConstantInherited
constant
Pike.Annotations.Inherited
- Description
This
Annotation
informs the compiler that anyAnnotation
marked with it is to be inherited. The default is that annotations on classes are not inherited.
- ConstantOverride
constant
Pike.Annotations.Override
- Description
This
Annotation
informs the compiler that any symbol marked with it is expected to also have been inherited.
Class Pike.Annotations.AutoCodecClass
- Description
This is the class that implements the
AutoCodec
annotation.
Class Pike.Annotations.Implements
- Description
This annotation causes the compiler to validate that the annotated class implements the specified API.
Class Pike.Annotations.InheritedClass
- Description
This is the class for the
Inherited
annotation.
Module Pike.DefaultBackend
- Description
This is the
Backend
object that files and call_outs are handled by by default.This is also the
Backend
object that will be used ifmain()
returns-1
.- See also
Backend
,Stdio.File()->set_nonblocking()
,call_out()
Module Pike.Lazy
- Description
This module provides lazy resolving of functions.
- Example
The expression
Pike.Lazy.Standards.JSON.decode
will evaluate toStandards.JSON.decode
, but the resolution (and associated compilation) ofStandards.JSON
will be delayed until the first time that the expression is evaluated.- Note
Note that this destroys type information and delays resolver errors.
Typical use is to break circular compilation dependencies between modules.
- ConstantINDEX_FROM_BEG
Module Pipe
- Description
Single socket output.
Regular file output and (multiple, adding) socket output with no mmap input.
Multiple socket output without regular file output illegal.
- Note
It is preferable to use the
Shuffler
API, it is significantly more flexible.
Class Pipe.pipe
- Description
Concatenation pipe.
- Methodset_done_callback
void
set_done_callback(void
|function
(mixed
:mixed
)done_cb
,void
|mixed
id
)- Description
Set the callback function to be called when all the outputs have been sent.
- Methodset_output_closed_callback
void
set_output_closed_callback(void
|function
(mixed
,object
:mixed
)close_cb
,void
|mixed
id
)- Description
Set the callback function to be called when one of the outputs has been closed from the other side.
Module Process
- Methoddaemon
void
daemon(int
nochdir
,int
noclose
,void
|mapping
(string
:string
|Stdio.File
)modifiers
)- Description
A function to run current program in the background.
- Parameter
nochdir
If 0 the process will continue to run in / or the directory dictadet by modifiers.
- Parameter
noclose
If this is not 0 the process will keep current file descriptors open.
- Parameter
modifiers
Optional extra arguments. The parameters passed in this mapping will override the arguments nochdir and noclose.
"cwd"
:string
Change current working directory to this directory.
"stdin"
:string
|Stdio.File
If this is a string this will be interpreted as a filename pointing out a file to be used as stdandard input to the process. If this is a Stdio.File object the process will use this as standard input.
"stdout"
:string
|Stdio.File
If this is a string this will be interpreted as a filename pointing out a file to be used as stdandard output to the process. If this is a Stdio.File object the process will use this as standard output.
"stderr"
:string
|Stdio.File
If this is a string this will be interpreted as a filename pointing out a file to be used as stdandard error to the process. If this is a Stdio.File object the process will use this as standard error.
- See also
System.daemon
- Note
This function only works on UNIX-like operating systems.
- Example
/* close all fd:s and cd to '/' */ Process.daemon(0, 0);
/* Do not change working directory. Write stdout to a file called access.log and stderr to error.log. */ Process.daemon(1, 0, ([ "stdout": "access.log", "stderr": "error.log" ]) );
- Methodget_forkd_default
bool
get_forkd_default()- Description
Get the default value for the
"forkd"
modifier toProcess
.- Note
The default default value is
0
(zero).- See also
set_forkd_default()
,Process()->create()
- Methodpopen
string
popen(string
command
)- Description
Executes
command
as a shell statement ("/bin/sh -c
" for Unix, "command
cmd /c
" for Windows), waits until it has finished and returns the result as a string.command
- See also
system
,spawn
- Deprecated
Replaced by
Process.Process
.
- Methodpopen
Stdio.FILE
popen(string
command
,string
mode
)- Description
Open a "process" for reading or writing. The
command
is executed as a shell statement ("/bin/sh -c
" for Unix, "command
cmd /c
" for Windows). The parametercommand
mode
should be one of the following letters:"r"
Open for reading. Data written by the process to stdout is available for read.
"w"
Open for writing. Data written to the file is available to the process on stdin.
- See also
system
,spawn
- Deprecated
Replaced by
Process.Process
.
- Methodrun
mapping
run(string
|array
(string
)cmd
,mapping
|void
modifiers
)- Description
Easy and lazy way of using
Process.Process
that runs a process and returns a mapping with the output and exit code without having to make sure you read nonblocking yourself.- Parameter
args
Either a command line array, as the command_args argument to
create_process()
, or a string that will be splitted into a command line array by callingsplit_quoted_string()
in an operating system dependant mode.- Parameter
modifiers
It takes all the modifiers
Process.Process
accepts, with the exception of stdout and stderr. Each must be either absent, or a function accepting a string; if present, the functions will be called whenever output is made on the corresponding stream, otherwise the data will be collected and returned in the result mapping.If
modifiers->stdin
is set to a string it will automatically be converted to a pipe that is fed to stdin of the started process.- See also
Process.Process
create_process
- Returns
"stdout"
:string
Everything the process wrote on stdout, unless a stdout function was provided.
"stderr"
:string
Everything the process wrote on stderr, similarly.
"exitcode"
:int
The process' exitcode.
- Note
As the entire output of stderr and stdout is stored in the returned mapping it could potentially grow until memory runs out. It is therefore advisable to set up rlimits if the output has a potential to be very large, or else provide functions to handle partial data.
- Example
Process.run( ({ "ls", "-l" }) ); Process.run( ({ "ls", "-l" }), ([ "cwd":"/etc" ]) ); Process.run( "ls -l" ); Process.run( "awk -F: '{print $2}'", ([ "stdin":"foo:2\nbar:17\n" ]) ); Process.run( ({ "echo Output will be immediately written to stdout" }), ([ "stdout": lambda(string s) { write(s); }, "stderr": lambda(string e) { werror(e); } ]) );
- Methodsearch_path
string
search_path(string
command
)- Description
Search for the path to an executable.
- Parameter
command
Executable to search for.
Searches for
command
in the directories listed in the environment variable $PATH.- Returns
Returns the path to
command
if found, and0
(zero) on failure.- Note
This function is NOT thread safe if the environment variable $PATH is being changed concurrently.
- Note
In Pike 7.8.752 and earlier the environment variable $PATH was only read once.
- Methodset_forkd_default
void
set_forkd_default(bool
mode
)- Description
Set the default value for the
"forkd"
modifier toProcess
.- Note
The default default value is
0
(zero).- See also
get_forkd_default()
,Process()->create()
- Methodspawn
__deprecated__
Process
spawn(string
command
,void
|Stdio.Stream
stdin
,void
|Stdio.Stream
stdout
,void
|Stdio.Stream
stderr
)- Description
Spawns a process that executes
command
as a command shell statement ("/bin/sh -c
" for Unix, "command
cmd /c
" for Windows).command
- Parameter
stdin
- Parameter
stdout
- Parameter
stderr
Stream objects to use as standard input, standard output and standard error, respectively, for the created process. The corresponding streams for this process are used for those that are left out.
- Returns
Returns a
Process.Process
object for the created process.- See also
system
,popen
- Deprecated
Replaced by
Process.Process
.
- Methodspawn_pike
Process
spawn_pike(array
(string
)argv
,void
|mapping
(string
:mixed
)options
,array
(string
)|void
launcher
)- Description
Spawn a new pike process similar to the current.
- Parameter
argv
Arguments for the new process.
- Parameter
options
Process creation options. See
Process.Process
for details. May also specify "add_predefines", "add_program_path", or "add_include_path" in order to include these components in command path (module path is included by default.)- Parameter
launcher
Optional launcher prefix command used to spawn the pike binary.
When used this is typically something like
({ "/usr/bin/valgrind" })
.Defaults to the empty array.
- See also
Process.Process
- Methodsplit_quoted_string
array
(string
) split_quoted_string(string
s
,bool
|void
nt_mode
)- Description
Splits the given string into a list of arguments, according to common (i.e.
/bin/sh
-based) command line quoting rules:Sequences of whitespace, i.e. space, tab,
\n
or\r
, are treated as argument separators by default.Single or double quotes (
'
or"
) can be used around an argument to avoid whitespace splitting inside it. If such quoted strings are used next to each other then they get concatenated to one argument; e.g.a"b"'c'
becomes a single argumentabc
.Backslash (
\
) can be used in front of one of the space or quote characters mentioned above to treat them literally. E.g.x\ y
is a single argument with a space in the middle, andx\"y
is a single argument with a double quote in the middle.A backslash can also be used to quote itself; i.e.
\\
becomes\
.Backslashes in front of other characters are removed by default. However, if the optional
nt_mode
flag is set then they are retained as-is, to work better with Windows style paths.Backslashes are treated literally inside quoted strings, with the exception that
\"
is treated as a literal"
inside a"
-quoted string. It's therefore possible to include a literal"
in a"
-quoted string, as opposed to'
-quoted strings which cannot contain a'
.
- Methodsystem
__deprecated__
int
system(string
command
,void
|Stdio.Stream
stdin
,void
|Stdio.Stream
stdout
,void
|Stdio.Stream
stderr
)- Description
Executes
command
as a shell statement ("/bin/sh -c
" for Unix, "command
cmd /c
" for Windows), waits until it has finished and returns its return value.command
- Parameter
stdin
- Parameter
stdout
- Parameter
stderr
Stream objects to use as standard input, standard output and standard error, respectively, for the created process. The corresponding streams for this process are used for those that are left out.
- Returns
Returns the exit code for the subprocess on normal completion. Returns the negation of the last signal code if it terminated due to a signal.
- Note
In Pike 8.0 and earlier this function returned the result straight from
Process.Process()->wait()
.- Deprecated
Replaced by
Process.Process
.- See also
spawn
,popen
Class Process.ForkdDecoder
- Description
Decoder for data received by
Tools.Standalone.forkd
.- See also
ForkdEncoder
Class Process.ForkdEncoder
- Description
Encoder for data to be sent to
Tools.Standalone.forkd
.- See also
ForkdDecoder
Class Process.Process
- Description
Slightly polished version of
create_process
.In addition to the features supported by
create_process
, it also supports:Callbacks on timeout and process termination.
Using
Tools.Standalone.forkd
via RPC to spawn the new process.
- See also
create_process
,Tools.Standalone.forkd
- Methodcreate
Process.ProcessProcess.Process(
string
|array
(string
)command_args
,mapping
(string
:mixed
)|void
modifiers
)- Parameter
command_args
Either a command line array, as the command_args argument to
create_process()
, or a string that will be splitted into a command line array by callingsplit_quoted_string()
in an operating system dependant mode.- Parameter
modifiers
In addition to the modifiers that
create_process
accepts, this object also accepts"read_callback"
:function
(Process
:void
)This callback is called when there is data to be read from the process.
"timeout_callback"
:function
(Process
:void
)This callback is called if the process times out.
"timeout"
:int
The time it takes for the process to time out. Default is 15 seconds.
"forkd"
:bool
Use
Tools.Standalone.forkd
to actually spawn the process.- Note
The default value for the
"forkd"
modifier may be set viaset_forkd_default()
.- See also
create_process
,create_process()->create()
,split_quoted_string()
,Tools.Standalone.forkd
,set_forkd_default()
,get_forkd_default()
Class Process.Spawn
- Methodcreate
Process.SpawnProcess.Spawn(
string
cmd
,void
|array
(string
)args
,void
|mapping
(string
:string
)env
,string
|void
cwd
,void
|array
(Stdio.File
|void
)ownpipes
,void
|array
(Stdio.File
|void
)fds_to_close
)
- Methodcreate
Class Process.TraceProcess
- Description
Class that enables tracing of processes.
The new process will be started in stopped state. Use
cont()
to let it start executing.- Note
This class currently only exists on systems that implement ptrace().
- Methodcont
void
cont(int
|void
signal
)- Description
Allow a traced process to continue.
- Parameter
signal
Deliver this signal to the process.
- Note
This function may only be called for stopped processes.
- See also
wait()
- Methodexit
void
exit()- Description
Cause the traced process to exit.
- Note
This function may only be called for stopped processes.
- See also
cont()
,wait()
Class Process.create_process
- Description
This is the recommended and most portable way to start processes in Pike. The process object is a pike abstraction of the running system process, with methods for various process housekeeping.
- See also
Process
- Constantlimit_value
constant
Process.create_process.limit_value
- Description
Each limit_value may be either of:
- integer
sets current limit, max is left as it is.
- mapping
([ "hard":int, "soft":int ]) Both values are optional, hard <= soft.
- array
({ hard, soft }), both can be set to the string "unlimited". A value of -1 means 'keep the old value'.
- string
The string "unlimited" sets both the hard and soft limit to unlimited
- Methodcreate
Process.create_processProcess.create_process(
array
(string
)command_args
,void
|mapping
modifiers
)- Parameter
command_args
The command name and its command-line arguments. You do not have to worry about quoting them; pike does this for you.
- Parameter
modifiers
This optional mapping can can contain zero or more of the following parameters:
"callback"
:function
(Process.Process
:void
)Function called when the created process changes state.
Note that this function is called in a signal handler context, which means that it may be called by any thread at any time after the child process has changed state, and is thus not only called by the main thread when the main backend is idle. Indeed, you can specify a callback even if your program does not use a backend.
"cwd"
:string
|Stdio.Fd
Execute the command in another directory than the current directory of this process. Please note that if the command is given is a relative path, it will be relative to this directory rather than the current directory of this process.
Note also that the path is relative to the
"chroot"
if used.Note that support for the
Stdio.Fd
variant is not present prior to Pike 9.0, and is only present on some OSes."chroot"
:string
|Stdio.Fd
Chroot to this directory before executing the command.
Note that the current directory will be changed to
"/"
in the chroot environment, unless"cwd"
above has been set.Note that support for the
Stdio.Fd
variant is not present prior to Pike 9.0, and is only present on some OSes."stdin"
:Stdio.File
These parameters allows you to change the standard input, output and error streams of the newly created process. This is particularly useful in combination with
Stdio.File.pipe
."stdout"
:Stdio.File
"stderr"
:Stdio.File
"env"
:mapping
(string
:string
)This mapping will become the environment variables for the created process. Normally you will want to only add or change variables which can be achived by getting the environment mapping for this process with
getenv
. See the examples section."uid"
:int
|string
This parameter changes which user the new process will execute as. Note that the current process must be running as UID 0 to use this option. The uid can be given either as an integer as a string containing the login name of that user.
The "gid" and "groups" for the new process will be set to the right values for that user unless overriden by options below.
(See
setuid
andgetpwuid
for more info.)"gid"
:int
|string
This parameter changes the primary group for the new process. When the new process creates files, they will will be created with this group. The group can either be given as an int or a string containing the name of the group. (See
setuid
andgetgrgid
for more info.)"setsid"
:bool
|Stdio.File
Set this to
1
to create a new session group. It is also possible to set it to a File object, in which case a new session group will be created with this file as the controlling terminal."setgroups"
:array
(int
|string
)This parameter allows you to the set the list of groups that the new process belongs to. It is recommended that if you use this parameter you supply at least one and no more than 16 groups. (Some system only support up to 8...) The groups can be given as gids or as strings with the group names.
"noinitgroups"
:bool
This parameter overrides a behaviour of the "uid" parameter. If this parameter is used, the gid and groups of the new process will be inherited from the current process rather than changed to the approperiate values for that uid.
"priority"
:string
This sets the priority of the new process, see
set_priority
for more info."nice"
:int
This sets the nice level of the new process; the lower the number, the higher the priority of the process. Note that only UID 0 may use negative numbers.
"keep_signals"
:bool
This prevents Pike from restoring all signal handlers to their default values for the new process. Useful to ignore certain signals in the new process.
"fds"
:array
(Stdio.File
|int(0)
)This parameter allows you to map files to filedescriptors 3 and up. The file
fds[0]
will be remapped to fd 3 in the new process, etc."rlimit"
:mapping
(string
:limit_value
)There are two values for each limit, the soft limit and the hard limit. Processes that do not have UID 0 may not raise the hard limit, and the soft limit may never be increased over the hard limit. The indices of the mapping indicate what limit to impose, and the values dictate what the limit should be. (See also
System.setrlimit
)"core"
:limit_value
maximum core file size in bytes
"cpu"
:limit_value
maximum amount of cpu time used by the process in seconds
"data"
:limit_value
maximum heap (brk, malloc) size in bytes
"fsize"
:limit_value
maximum size of files created by the process in bytes
"map_mem"
:limit_value
maximum size of the process's mapped address space (mmap() and heap size) in bytes
"mem"
:limit_value
maximum size of the process's total amount of available memory (mmap, heap and stack size) in bytes
"nofile"
:limit_value
maximum number of file descriptors the process may create
"stack"
:limit_value
maximum stack size in bytes
"conpty"
:Stdio.File
Bind the process to the console associated with this pty slave. NT only.
- Example
Process.create_process(({ "/usr/bin/env" }), (["env" : getenv() + (["TERM":"vt100"]) ]));
- Example
//! Spawn a new process with the args @[args] and optionally a //! standard input if you provide such a @[Stdio.File] object. //! @returns //! Returns the new process and a pipe from which you can read //! its output. array(Process.Process|Stdio.File) spawn(Stdio.File|void stdin, string ... args) { Stdio.File stdout = Stdio.File(); mapping opts = ([ "stdout" : stdout->pipe() ]); if( stdin ) opts->stdin = stdin; return ({ Process.create_process( args, opts ), stdout }); }
- Note
All parameters that accept both string or int input can be noticeably slower using a string instead of an integer; if maximum performance is an issue, please use integers.
- Note
On NT the only supported modifiers are:
"cwd"
,"conpty"
,"stdin"
,"stdout"
,"stderr"
and"env"
. All other modifiers are silently ignored.- Note
Support for
"callback"
was added in Pike 7.7.- Note
Chroot changing directory to
"/"
was added in Pike 7.9.
- Methodkill
bool
kill(int
signal
)- Description
Send a signal to the process.
- Returns
1
Success.
0
Failure.
errno()
is set to EINVAL, EPERM or ESRCH.- Note
This function is only available on platforms that support signals.
- See also
predef::kill()
- Methodlast_signal
int(0..)
last_signal()- Description
Returns the last signal that was sent to the process.
- Methodset_priority
int
set_priority(string
priority
)- Description
Sets the priority of the process.
priority
is one of the strings- "realtime"
- "highest"
- "higher"
- "high"
- "normal"
- "low"
- "lowest"
- Methodstatus
int(-1..2)
status()- Description
Returns the status of the process:
-1
Unknown
0
Running
1
Stopped
2
Exited
- Methoddaemon
Module Random
Class Random.AES128_CTR_DRBG
- Description
Implements NIST SP800-90Ar1 pseudo random number generator CTR_DRBG using AES-128.
https://csrc.nist.gov/publications/detail/sp/800-90a/rev-1/final
- Methodcreate
Random.AES128_CTR_DRBGRandom.AES128_CTR_DRBG(
string(8bit)
entropy
,void
|string(8bit)
personalization
)- Description
Instantiate a random generator without derivation function, with the given initial entropy and personalization.
Class Random.Deterministic
- Description
This class implements a detministic random generator by combining a Fortuna random generator with the
Random.Interface
. The generator is not reseeded after the initial seed.In case of a process fork the random generators in both processes will continue to generate identical results.
Class Random.Fast
- Description
This class implements a fast and secure random generator. The generator is a Fortuna PRNG that is fed additional entropy from the system RNG (or hardware RNG, if available) for every generated megabyte of data.
If a hardware RNG is present it will be used instead of Fortuna for random strings shorter than 48 bytes.
In case of a process fork it is possible that the random generators will produce identical results for up to one megabyte of generated data.
Class Random.Hardware
- Description
This class implements a random generator based on the hardware generator available on some system. Currently only supports Intel RDRAND CPU extension.
In case of a process fork the generators in the two processes will generate independent random values.
Class Random.Interface
- Description
This class implements the Pike
predef::random
API on top of a byte stream random source. This source should be implemented in therandom_string
method and will be called by random(int) for random input. random(int) is in turned called by all the other variants of random and applied to their use cases.While it is possible to overload the random variants, care must be taken to not introduce any bias. The default implementation gathers enough bits to completely reach the limit value, and discards them if the result overshoots the limit.
- Methodrandom
int(0..)
random(int(0..)
max
)float
random(float
max
)mixed
random(array
|multiset
x
)array
random(mapping
m
)mixed
random(object
o
)- Description
Implementation of
predef::random
.
Class Random.System
- Description
This is the default implementation of the
random
functions. This is theRandom.Interface
combined with a system random source. On Windows this is the default crypto service while on Unix systems it is /dev/urandom.In case of a process fork the generators in the two processes will generate independent random values.
Module Regexp
- Method`()
protected
SimpleRegexp
`()(void
|string
regexp
)- Description
Convenience/compatibility method to get a
SimpleRegexp
object.
- Methodmatch
bool
match(string
regexp
,string
data
)- Description
Calls
Regexp.PCRE.Plain.match
in a temporary regexp object. Faster to type but slower to run...
- Methodreplace
string
replace(string
regexp
,string
data
,string
|function
(string
:string
)transform
)- Description
Calls
Regexp.PCRE.Plain.replace
in a temporary regexp object. Faster to type but slower to run...
- Methodsplit
array
split(string
regexp
,string
data
)- Description
Calls
Regexp.PCRE.Plain.split
in a temporary regexp object. Faster to type but slower to run...
- Methodsplit2
array
split2(string
regexp
,string
data
)- Description
Calls
Regexp.PCRE.Plain.split2
in a temporary regexp object. Faster to type but slower to run...
Class Regexp.SimpleRegexp
- Description
This class implements the interface to a simple regexp engine with the following capabilities:
. Matches any character. [abc] Matches a, b or c. [a-z] Matches any character a to z inclusive. [^ac] Matches any character except a and c. (x) Matches x (x might be any regexp) If used with split, this also puts the string matching x into the result array. x* Matches zero or more occurances of 'x' (x may be any regexp). x+ Matches one or more occurances of 'x' (x may be any regexp). x|y Matches x or y. (x or y may be any regexp). xy Matches xy (x and y may be any regexp). ^ Matches beginning of string (but no characters). $ Matches end of string (but no characters). \< Matches the beginning of a word (but no characters). \> Matches the end of a word (but no characters). Note that \ can be used to quote these characters in which case they match themselves, nothing else. Also note that when quoting these something in Pike you need two \ because Pike also uses this character for quoting.
- Method_encode
Method_decode string(8bit)encode_value(Regexp.SimpleRegexpdata)
Regexp.SimpleRegexpdecode_value(string(8bit)data)
- Description
Regexp objects can be encoded and decoded.
- See also
encode_value
,decode_value
- Methodcreate
Regexp.SimpleRegexpRegexp.SimpleRegexp(
string
re
)- Description
When create is called, the current regexp bound to this object is cleared. If a string is sent to create(), this string will be compiled to an internal representation of the regexp and bound to this object for laters calls to e.g.
match
orsplit
. Calling create() without an argument can be used to free up a little memory after the regexp has been used.
- Methodmatch
int
match(string
str
)- Description
Returns 1 if
str
matches the regexp bound to the regexp object. Zero otherwise.
- Methodmatch
array
(string
) match(array
(string
)strs
)- Description
Returns an array containing strings in
strs
that match the regexp bound to the regexp object.- Bugs
The current implementation doesn't support searching in strings containing the NUL character or any wide character.
- See also
split
- Methodsplit
array
(string
) split(string
s
)- Description
Works as
match
, but returns an array of the strings that matched the subregexps. Subregexps are those contained in "( )" in the regexp. Subregexps that were not matched will contain zero. If the total regexp didn't match, zero is returned.- Bugs
You can currently only have 39 subregexps.
- Bugs
The current implementation doesn't support searching in strings containing the NUL character or any wide character.
- See also
match
Module Regexp.PCRE
- Constantbuildconfig_LINK_SIZE
constant
Regexp.PCRE.buildconfig_LINK_SIZE
- Description
(from the pcreapi man-page) "The output is an integer that contains the number of bytes used for internal linkage in compiled regular expressions. The value is 2, 3, or 4. Larger values allow larger regular expressions to be compiled, at the expense of slower match- ing. The default value of 2 is sufficient for all but the most massive patterns, since it allows the compiled pattern to be up to 64K in size." This constant is calculated when the module is initiated by using pcre_config(3).
- Constantbuildconfig_MATCH_LIMIT
constant
Regexp.PCRE.buildconfig_MATCH_LIMIT
- Description
(from the pcreapi man-page) "The output is an integer that gives the default limit for the number of internal matching function calls in a pcre_exec() execution. Further details are given with pcre_exec() below." This constant is calculated when the module is initiated by using pcre_config(3).
- Constantbuildconfig_NEWLINE
constant
Regexp.PCRE.buildconfig_NEWLINE
- Description
(from the pcreapi man-page) "The output is an integer that is set to the value of the code that is used for the newline character. It is either linefeed (10) or carriage return (13), and should normally be the standard character for your operating system." This constant is calculated when the module is initiated by using pcre_config(3).
- Constantbuildconfig_POSIX_MALLOC_THRESHOLD
constant
Regexp.PCRE.buildconfig_POSIX_MALLOC_THRESHOLD
- Description
(from the pcreapi man-page) "The output is an integer that contains the threshold above which the POSIX interface uses malloc() for output vectors. Further details are given in the pcreposix documentation." This constant is calculated when the module is initiated by using pcre_config(3).
- Constantbuildconfig_UTF8
constant
Regexp.PCRE.buildconfig_UTF8
- Description
(from the pcreapi man-page) "The output is an integer that is set to one if UTF-8 support is available; otherwise it is set to zero." This constant is calculated when the module is initiated by using pcre_config(3).
- Method`()
StudiedWidestring
`()(string
pattern
,void
|int
options
,void
|object
table
)- Description
Convenience function to create a suitable PCRE Regexp object; will create a StudiedWidestring from the arguments.
That means the result will be able to handle widestrings, and will produce fast matchings by studying the pattern, but the widestring wrapping will on the other hand add overhead.
If you need a faster regexp and doesn't use widestring, create a Regexp.PCRE.Studied instead.
Widestring support will not be used if the linked libpcre lacks UTF8 support. This can be tested with checking that the Regexp.PCRE.Widestring class exist.
- Methodsplit_subject
array
(string
) split_subject(string
subject
,array
(int
)previous_result
)- Description
Convenience function that splits a subject string on the result from _pcre->exec()
equal to map(previous_result/2, lambda(array v) { return subject[v[0]..v[1]-1]; })
Class Regexp.PCRE.Plain
- Description
The main regexp class. Will provide anything needed for matching regexps.
There are subclasses that adds wrappers for widestrings, and to optimize the regexp pattern.
- Methodmatch
bool
match(string
subject
,void
|int
startoffset
)- Description
returns true (1) if a match is found, false otherwise
example:
>Regexp.PCRE.Plain("is fun")->match("pike is fun"); Result: 1 >Regexp.PCRE.Plain("is fun")->match("pike isn't fun"); Result: 0
- Methodmatchall
this_program
matchall(string
subject
,function
(array
(string
)|void
,array
(int
)|void
:mixed
|void
)callback
)- Description
Will give a callback for each match in a subject. Called arguments will be matching patterns and subpatterns in an array and as second argument the exec result array.
returns called object
example:
>Regexp.PCRE("b(a*)([^-\1234]*)(\1234*)m") ->matchall("abam-boom-fooabado\1234m",lambda(mixed s){ werror("%O\n",s);return"gurka";});({/* 4 elements */"bam","a","",""})({/* 4 elements */"boom","","oo",""})({/* 4 elements */"bado\1234m","a","do","\1234"}) Result:Regexp.PCRE.StudiedWidestring("b(a*)([^-Ê\234]*)(Ê\234*)m")
- Methodreplace
string
replace(string
subject
,string
|function
(:void
)with
,mixed
...args
)- Description
replace all occurances of a pattern in a subject; callbacks and replacements will be from the first occurance, not from the last as in Regexp.Builtin.replace.
if with is a function, the first argument will be the total match string, and the subsequent arguments will contain any submatches
example:
>Regexp.PCRE("b[^-]*m")->replace("abam-boom-fooabadoom","gurka"); Result:"agurka-gurka-fooagurka">Regexp.PCRE("b[^-]*m")->replace("abam-boom-fooabadoom",lambda(string s){ werror("%O\n",s);return"gurka";});"bam""boom""badoom" Result:"agurka-gurka-fooagurka"
example:
>Regexp.PCRE("([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})") ->replace("foo@bar.org",lambda(string whole,string user,string loc,string domain){return user +" from "+ loc +" dot "+ domain;});(4) Result:"foo from bar dot org"
- Methodreplace1
string
replace1(string
subject
,string
|function
(string
:string
)with
)- Description
replace one (first) occurance of a pattern in a subject
example:
>Regexp.PCRE("b[^-]*m")->replace1("abam-boom-fooabadoom","gurka"); Result:"agurka-boom-fooabadoom"
- Methodreplace_positional
string
replace_positional(string
subject
,string
subst
)- Description
replaces matches in a string, with support for backreferences (matched groups)
- Parameter
subject
the string to be tested against the regular expression
- Parameter
subst
string to be inserted in place of each match. backreferences can be inserted into the string to be substituted using the syntax %[n]s where n is the nth matching string group, and 0 (zero) is the full match.
example:
>Regexp.PCRE.Plain("my name is ([a-zA-Z]+)") ->replace_positional("allow me to introduce myself: my name is john","%[0]s is my name");(1) Result:"allow me to introduce myself: john is my name"
- Methodsplit
array
(string
)|int(0)
split(string
subject
,void
|int
startoffset
)- Description
Matches a subject against the pattern, compatible with the old split method: returns an array of the subpatterns, or if there are no subpattern but still a match, ({0}). Returns 0 if there was no match.
example:
>Regexp.PCRE.Plain("i\(.*\) is \(.*\)u")->split("pike is fun");(1) Result:({"ke","f"})>Regexp.PCRE.Plain("is fun")->split("pike is fun");(4) Result:({ 0 })
- Methodsplit2
array
(string
)|int(0)
split2(string
subject
,void
|int
startoffset
)- Description
Matches a subject against the pattern, returns an array where the first element are the whole match, and the subsequent are the matching subpatterns. Returns 0 if there was no match.
example:
>Regexp.PCRE.Plain("i\(.*\) is \(.*\)u")->split2("pike is fun"); Result:({"ike is fu","ke","f"})
Class Regexp.PCRE.Studied
- Description
Same as Plain, but will be studied to match faster; useful if you're doing many matches on the same pattern
Class Regexp.PCRE.StudiedWidestring
- Description
Same as Widestring, but will be studied to match faster; useful if you're doing many matches on the same pattern
Class Regexp.PCRE.Widestring
- Description
Wrapper class around Plain, that will allow widestring patterns and subjects.
Widestring support and this class will not be implemented if the linked libpcre lacks UTF8 support.
Class Regexp.PCRE._pcre
- Methodcreate
Regexp.PCRE._pcreRegexp.PCRE._pcre(
string
pattern
,void
|int
options
,void
|object
table
)- Description
The option bits are:
OPTION.ANCHORED
Force pattern anchoring
OPTION.CASELESS
Do caseless matching
OPTION.DOLLAR_ENDONLY
$ not to match newline at end
OPTION.DOTALL
. matches anything including NL
OPTION.EXTENDED
Ignore whitespace and # comments
OPTION.EXTRA
PCRE extra features (not much use currently)
OPTION.MULTILINE
^ and $ match newlines within data
OPTION.NO_AUTO_CAPTURE
Disable numbered capturing parentheses (named ones available)
OPTION.UNGREEDY
Invert greediness of quantifiers
OPTION.UTF8
Run in UTF-8 mode
- Methodexec
int
|array
exec(string
subject
,void
|int
startoffset
)- Description
Matches the regexp against
subject
, starting atstartoffset
if it is given.If the match is successful, the return value is an array that holds the offsets of all matches:
Elements 0 and 1 have the start and end offsets, respectively, of the match for the whole regexp. The start offset is inclusive while the end is exclusive, i.e. the matching string is
.subject
[res[0]..res[1]-1]Elements 2 and 3 have the offsets of the first capturing submatch (if any) in the same way, elements 4 and 5 are for the second capturing submatch, etc. If a submatch didn't match anything, the corresponding elements are set to -1. If a submatch has matched successfully several times, the offsets of the last match are returned.
The returned array is always of length 2*n + 1, where n is the total number of capturing submatches in the regexp.
If there is an error, an integer error code is returned:
ERROR.NOMATCH
The subject string did not match the pattern.
ERROR.NULL
Either code or subject was passed as NULL, or ovector was NULL and oversize was not zero.
ERROR.BADOPTION
An unrecognized bit was set in the options argument.
ERROR.BADMAGIC
PCRE stores a 4-byte "magic number" at the start of the compiled code, to catch the case when it is passed a junk pointer. This is the error it gives when the magic number isn't present.
ERROR.UNKNOWN_NODE
While running the pattern match, an unknown item was encountered in the compiled pattern. This error could be caused by a bug in PCRE or by overwriting of the compiled pattern.
ERROR.NOMEMORY
If a pattern contains back references, but the ovector that is passed to pcre_exec() is not big enough to remember the referenced substrings, PCRE gets a block of memory at the start of matching to use for this purpose. If the call via pcre_malloc() fails, this error is given. The memory is freed at the end of matching.
ERROR.NOSUBSTRING
This error is used by the pcre_copy_substring(), pcre_get_substring(), and pcre_get_substring_list() functions (see below). It is never returned by pcre_exec().
ERROR.MATCHLIMIT
The recursion and backtracking limit, as specified by the match_limit field in a pcre_extra structure (or defaulted) was reached. See the description above.
ERROR.CALLOUT
This error is never generated by pcre_exec() itself. It is provided for use by callout functions that want to yield a distinctive error code. See the pcrecallout documentation for details.
- Methodget_stringnumber
int
get_stringnumber(string
stringname
)- Description
returns the number of a named subpattern
- Methodinfo
mapping
info()- Description
Returns additional information about a compiled pattern. Only available if PCRE was compiled with Fullinfo.
- Returns
"backrefmax"
:int
Return the number of the highest back reference in the pattern. The fourth argument should point to an int variable. Zero is returned if there are no back references.
"capturecount"
:int
Return the number of capturing subpatterns in the pattern. The fourth argument should point to an int variable.
"firstbyte"
:int
Return information about the first byte of any matched string, for a non-anchored pattern. (This option used to be called PCRE_INFO_FIRSTCHAR; the old name is still recognized for backwards compatibility.)
If there is a fixed first byte, e.g. from a pattern such as (cat|cow|coyote), it is returned in the integer pointed to by where. Otherwise, if either
(a) the pattern was compiled with the PCRE_MULTILINE option, and every branch starts with
"^"
, or(b) every branch of the pattern starts with
".*"
and PCRE_DOTALL is not set (if it were set, the pattern would be anchored),-1
is returned, indicating that the pattern matches only at the start of a subject string or after any newline within the string. Otherwise-2
is returned. For anchored patterns,-2
is returned."lastliteral"
:int
Return the value of the rightmost literal byte that must exist in any matched string, other than at its start, if such a byte has been recorded. The fourth argument should point to an int variable. If there is no such byte,
-1
is returned. For anchored patterns, a last literal byte is recorded only if it follows something of variable length. For example, for the pattern /^a\d+z\d+/ the returned value is"z"
, but for /^a\dz\d/ the returned value is-1
."namecount"
:int
"nameentrysize"
:int
"options"
:int
Return a copy of the options with which the pattern was compiled. The fourth argument should point to an unsigned long int variable. These option bits are those specified in the call to pcre_compile(), modified by any top-level option settings within the pattern itself.
A pattern is automatically anchored by PCRE if all of its top-level alternatives begin with one of the following:
^ unless PCRE_MULTILINE is set \A always \G always .* if PCRE_DOTALL is set and there are no back references to the subpattern in which .* appears For such patterns, the PCRE_ANCHORED bit is set in the options returned.
"size"
:int
Return the size of the compiled pattern, that is, the value that was passed as the argument to pcre_malloc() when PCRE was getting memory in which to place the compiled data. The fourth argument should point to a size_t variable.
"studysize"
:int
Returns the size of the data block pointed to by the study_data field in a pcre_extra block. That is, it is the value that was passed to pcre_malloc() when PCRE was getting memory into which to place the data created by pcre_study(). The fourth argument should point to a size_t variable.
- Methodcreate
Module Regexp.PCRE.ERROR
- ConstantNOMATCH
ConstantNULL
ConstantBADOPTION
ConstantBADMAGIC
ConstantUNKNOWN_NODE
ConstantNOMEMORY
ConstantNOSUBSTRING
ConstantMATCHLIMIT
ConstantCALLOUT constant
Regexp.PCRE.ERROR.NOMATCH
constant
Regexp.PCRE.ERROR.NULL
constant
Regexp.PCRE.ERROR.BADOPTION
constant
Regexp.PCRE.ERROR.BADMAGIC
constant
Regexp.PCRE.ERROR.UNKNOWN_NODE
constant
Regexp.PCRE.ERROR.NOMEMORY
constant
Regexp.PCRE.ERROR.NOSUBSTRING
constant
Regexp.PCRE.ERROR.MATCHLIMIT
constant
Regexp.PCRE.ERROR.CALLOUT
- Description
Documented in
exec
.
- ConstantNOMATCH
Module Regexp.PCRE.OPTION
- Description
contains all option constants
- ConstantANCHORED
constant
Regexp.PCRE.OPTION.ANCHORED
- Description
(from the pcreapi manpage) If this bit is set, the pattern is forced to be "anchored", that is, it is constrained to match only at the first matching point in the string which is being searched (the "subject string"). This effect can also be achieved by appropriate constructs in the pattern itself, which is the only way to do it in Perl.
- ConstantCASELESS
constant
Regexp.PCRE.OPTION.CASELESS
- Description
(from the pcreapi manpage) If this bit is set, letters in the pattern match both upper and lower case letters. It is equivalent to Perl's /i option, and it can be changed within a pattern by a (?i) option setting.
- ConstantDOLLAR_ENDONLY
constant
Regexp.PCRE.OPTION.DOLLAR_ENDONLY
- Description
(from the pcreapi manpage) If this bit is set, a dollar metacharacter in the pattern matches only at the end of the subject string. Without this option, a dollar also matches immediately before the final character if it is a newline (but not before any other newlines). The PCRE_DOLLAR_ENDONLY option is ignored if PCRE_MULTILINE is set. There is no equivalent to this option in Perl, and no way to set it within a pattern.
- ConstantDOTALL
constant
Regexp.PCRE.OPTION.DOTALL
- Description
(from the pcreapi manpage) If this bit is set, a dot metacharater in the pattern matches all characters, including newlines. Without it, newlines are excluded. This option is equivalent to Perl's /s option, and it can be changed within a pattern by a (?s) option setting. A negative class such as [^a] always matches a newline character, independent of the setting of this option.
- ConstantEXTENDED
constant
Regexp.PCRE.OPTION.EXTENDED
- Description
(from the pcreapi manpage) If this bit is set, whitespace data characters in the pattern are totally ignored except when escaped or inside a character class. Whitespace does not include the VT character (code 11). In addition, characters between an unescaped # outside a character class and the next newline character, inclusive, are also ignored. This is equivalent to Perl's /x option, and it can be changed within a pattern by a (?x) option setting.
This option makes it possible to include comments inside complicated patterns. Note, however, that this applies only to data characters. Whitespace characters may never appear within special character sequences in a pattern, for example within the sequence (?( which introduces a conditional subpattern.
- ConstantEXTRA
constant
Regexp.PCRE.OPTION.EXTRA
- Description
(from the pcreapi manpage) This option was invented in order to turn on additional functionality of PCRE that is incompatible with Perl, but it is currently of very little use. When set, any backslash in a pattern that is followed by a letter that has no special meaning causes an error, thus reserving these combinations for future expansion. By default, as in Perl, a backslash followed by a letter with no special meaning is treated as a literal. There are at present no other features controlled by this option. It can also be set by a (?X) option setting within a pattern.
- ConstantMULTILINE
constant
Regexp.PCRE.OPTION.MULTILINE
- Description
(from the pcreapi manpage) By default, PCRE treats the subject string as consisting of a single "line" of characters (even if it actually contains several newlines). The "start of line" metacharacter (^) matches only at the start of the string, while the "end of line" metacharacter ($) matches only at the end of the string, or before a terminating newline (unless PCRE_DOL- LAR_ENDONLY is set). This is the same as Perl.
When PCRE_MULTILINE it is set, the "start of line" and "end of line" constructs match immediately following or immediately before any new- line in the subject string, respectively, as well as at the very start and end. This is equivalent to Perl's /m option, and it can be changed within a pattern by a (?m) option setting. If there are no "\n" charac- ters in a subject string, or no occurrences of ^ or $ in a pattern, setting PCRE_MULTILINE has no effect.
- ConstantNO_AUTO_CAPTURE
constant
Regexp.PCRE.OPTION.NO_AUTO_CAPTURE
- Description
(from the pcreapi manpage) If this option is set, it disables the use of numbered capturing paren- theses in the pattern. Any opening parenthesis that is not followed by ? behaves as if it were followed by ?: but named parentheses can still be used for capturing (and they acquire numbers in the usual way). There is no equivalent of this option in Perl.
- ConstantUNGREEDY
constant
Regexp.PCRE.OPTION.UNGREEDY
- Description
(from the pcreapi manpage) This option inverts the "greediness" of the quantifiers so that they are not greedy by default, but become greedy if followed by "?". It is not compatible with Perl. It can also be set by a (?U) option setting within the pattern.
- ConstantUTF8
constant
Regexp.PCRE.OPTION.UTF8
- Description
(from the pcreapi manpage) This option causes PCRE to regard both the pattern and the subject as strings of UTF-8 characters instead of single-byte character strings. However, it is available only if PCRE has been built to include UTF-8 support. If not, the use of this option provokes an error. Details of how this option changes the behaviour of PCRE are given in the section on UTF-8 support in the main pcre page.
- Constantbuildconfig_LINK_SIZE
- Method`()
Module Remote
- Description
Remote RPC system.
Class Remote.Call
- Description
Wrapper for a remote function.
- Method`()
mixed
res =Remote.Call()
()- Description
Call the wrapped function.
- Parameter
args
Arguments to pass to the wrapped function.
This function can operate in two modes depending on whether asynchronous mode has been activated or not. If it has it is equivalent to a call of
async()
and if not ofsync()
with the same arguments.- See also
async()
,sync()
,is_async()
,set_async()
- Methodasync
void
async(mixed
...args
)- Description
Call the wrapped remote function asynchronously.
- Parameter
args
Arguments to send to the remote function.
- See also
sync()
,`()()
- Methodcreate
Remote.CallRemote.Call(
string
|zero
objectid
,string
name
,object
connection
,object
context
,int
async
)
- Methodexists
int
exists()- Description
Check whether the wrapped function actually exists at the other end.
Class Remote.Client
- Description
Remote RPC Client.
- Methodcreate
Remote.ClientRemote.Client(
string
host
,int
port
,void
|int
nice
,void
|int
timeout
,void
|int
max_call_threads
)- Description
Connect to a
Remote.Server
.- Parameter
host
- Parameter
port
Hostname and port for the
Remote.Server
.- Parameter
nice
If set, inhibits throwing of errors from
call_sync()
.- Parameter
timeout
Connection timeout in seconds.
- Parameter
max_call_threads
Maximum number of concurrent threads.
- Methodprovide
void
provide(string
name
,mixed
thing
)- Description
Provide a named
thing
to theRemote.Server
.- Parameter
name
Name to provide
thing
under.- Parameter
thing
Thing to provide.
Class Remote.Connection
- Methodadd_close_callback
void
add_close_callback(function
(:void
)f
,mixed
...args
)- Description
Add a function that is called when the connection is closed.
- Methodclose
void
close()- Description
Closes the connection nicely, after waiting in outstanding calls in both directions.
- Methodconnect
int
connect(string
host
,int
port
,void
|int
timeout
)- Description
This function is called by clients to connect to a server.
- Methodcreate
Remote.ConnectionRemote.Connection(
void
|int
nice
,void
|int
max_call_threads
)- Parameter
nice
If set, no errors will be thrown.
- Methoderror_message
string
|zero
error_message()- Description
Returns an error message for the last error, in case
connect
returns zero. Returns zero if the lastconnect
call was successful.
- Methodget_named_object
object
get_named_object(string
name
)- Description
Get a named object provided by the server.
- Methodremove_close_callback
void
remove_close_callback(array
f
)- Description
Remove a function that is called when the connection is closed.
- Methodadd_close_callback
Class Remote.Context
- Description
Remote context tracker.
This class keeps track of what local things correspond to what remote things, and the reverse.
Class Remote.Obj
- Description
Wrapper for a remote object.
Class Remote.Server
- Description
Remote RPC server.
- Methodclose_all
void
close_all()- Description
Shut down the
Remote.Server
and terminate all current clients.
- Methodcreate
Remote.ServerRemote.Server(
string
host
,int
port
,void
|int
max_call_threads
)- Description
Create a
Remote.Server
.- Parameter
host
- Parameter
port
Hostname and port for the
Remote.Server
.- Parameter
max_call_threads
Maximum number of concurrent threads.
- Methodprovide
void
provide(string
name
,mixed
thing
)- Description
Provide a named
thing
to theRemote.Client
(s).- Parameter
name
Name to provide
thing
under.- Parameter
thing
Thing to provide.
Class Remote.Server.Minicontext
- Description
The server
Context
class.
Module SANE
- Description
This module enables access to the SANE (Scanner Access Now Easy) library from pike
- ConstantFrameGray
ConstantFrameRGB
ConstantFrameRed
ConstantFrameGreen
ConstantFrameBlue constant
SANE.FrameGray
constant
SANE.FrameRGB
constant
SANE.FrameRed
constant
SANE.FrameGreen
constant
SANE.FrameBlue
- Methodlist_scanners
array
(mapping
) list_scanners()- Description
Returns an array with all available scanners.
- Example
Pike v0.7 release 120 running Hilfe v2.0 (Incremental Pike Frontend) > SANE.list_scanners(); Result: ({ ([ "model":"Astra 1220S ", "name":"umax:/dev/scg1f", "type":"flatbed scanner", "vendor":"UMAX " ]), ([ "model":"Astra 1220S ", "name":"net:lain.idonex.se:umax:/dev/scg1f", "type":"flatbed scanner", "vendor":"UMAX " ]) })
Class SANE.Scanner
- Methodget_parameters
mapping
(string
:int
) get_parameters()- Returns
"format"
:int
"last_frame"
:int
"lines"
:int
"depth"
:int
"pixels_per_line"
:int
"bytes_per_line"
:int
- Methodlist_options
array
(mapping
) list_options()- Description
This method returns an array where every element is a mapping, layed out as follows.
"name"
:string
"title"
:string
"desc"
:string
"type"
:string
"boolean"
"int"
"float"
"string"
"button"
"group"
"unit"
:string
"none"
"pixel"
"bit"
"mm"
"dpi"
"percent"
"microsend"
"size"
:int
"cap"
:multiset
"soft_select"
"hard_select"
"emulate"
"automatic"
"inactive"
"advanced"
"constraint"
:int(0)
|mapping
Constraints can be of three different types; range, word list or string list. Constraint contains 0 if there are no constraints.
"type"
:string
Contains the value "range".
"max"
:int
"min"
:int
"quant"
:int
"type"
:string
Contains the value "list".
"list"
:array
(float
|int
)"type"
:string
Contains the value "list".
"list"
:array
(string
)
- Methodnonblocking_row_scan
void
nonblocking_row_scan(function
(Image.Image
,int
,Scanner
,int
:void
)callback
)
- Methodset_option
void
set_option(string
name
,mixed
new_value
)void
set_option(string
name
)- Description
If no value is specified, the option is set to it's default value
- Methodget_parameters
Module SDL
- Description
SDL or Simple DirectMedia Layer is a cross-platform multimedia library designed to provide fast access to the graphics framebuffer, audio device, input and other devices. This module implements a wrapper for SDL and other relevant libraries like SDL_mixer. The interface is similar to the C one, but using generally accepted Pike syntax.
This means that classes are used when appropriate and that method names use all lowercase letters with words separated by _. For example SDL_SetVideoMode is named
SDL.set_video_mode
. Also note that unless otherwise noted, errors result in an error being thrown rather than returning-1
or0
, as commonly done in SDL methods.
- Methodblit_surface
int
blit_surface(SDL.Surface
src
,SDL.Surface
dst
,SDL.Rect
|void
srcrect
,SDL.Rect
|void
dstrect
)- Description
Peforms a fast blit from the source surface to the destination surface.
The final blit rectangle is stored in dstrect. This may differ from srcrect if there was clipping.
This function should not be called on a locked surface.
- Parameter
src
The surface to be copied.
- Parameter
dst
The destination surface. This will usually be your main screen, initialized with a call to
SDL.set_video_mode()
.- Parameter
srcrect
The rectangular section of src to copy. If the whole surface is to be copied, you can set this to 0.
- Parameter
dstrect
Where the source surface should be copied to on the destination surface. Only the x and y fields of the
SDL.Rect
object are used. To copy src to the top-left corner of dst, i.e. at coordinates <0,0>, you can set this to 0.- Returns
If successful, 0, otherwise -1.
- See also
SDL.Surface()->blit()
- Methodcd_name
string
|void
cd_name(int
drive
)- Description
Returns a human-readable and system-dependent name for the given drive.
- Parameter
drive
The CD drive index.
- Returns
A human-readable and system-dependent name for the given drive, or
0
if no name is available.- See also
SDL.cd_num_drives()
- Methodcd_num_drives
int
cd_num_drives()- Returns
The number of CD-ROM drives on the system.
- See also
SDL.cd_name()
- Methodenable_unicode
int
enable_unicode(int
enable
)- Description
Enables/Disables UNICODE keyboard translation.
If you wish to translate a keysym to its printable representation, you need to enable UNICODE translation using this function and then look in the unicode member of the
SDL.Keysym
class. This value will be zero for keysyms that do not have a printable representation. UNICODE translation is disabled by default as the conversion can cause a slight overhead.- Parameter
enable
A value of
1
enables Unicode translation,0
disables it and-1
leaves it unchanged (useful for querying the current translation mode).- Returns
The previous translation mode (
1
enabled,0
disabled). If enable is-1
, the return value is the current translation mode.- See also
SDL.Keysym
- Methodflip
int
flip(SDL.Surface
|void
screen
)- Description
On hardware that supports double-buffering, this function sets up a flip and returns. The hardware will wait for vertical retrace, and then swap video buffers before the next video surface blit or lock will return. On hardware that doesn't support double-buffering, this is equivalent to calling
SDL.update_rect(screen, 0, 0, 0, 0)
The
SDL.DOUBLEBUF
flag must have been passed toSDL.set_video_mode()
when setting the video mode for this function to perform hardware flipping.- Parameter
screen
The screen object to flip. If missing, the default screen is used.
- Returns
This function returns 1 if successful, or 0 if there was an error.
- See also
SDL.update_rect()
- Methodget_caption
array
(string
) get_caption()- Returns
A 2-element array holding the window title and icon name.
- See also
SDL.set_caption()
- Methodget_error
string
|zero
get_error()- Description
Get the last internal SDL error.
- Returns
The error string, or zero if there was no error.
- Methodget_key_state
string
get_key_state()- Description
Gets a snapshot of the current keyboard state.
- Returns
The current state is returned as a string.
The string is indexed by the SDL.K_* symbols. A value of
1
means the key is pressed and a value of0
means it's not.- Note
Call
SDL.pump_events()
to update the state array.- See also
SDL.get_mod_state()
,SDL.pump_events()
- Example
// Test if the 'Escape' key is pressed.SDL.pump_events();string ks =SDL.get_key_state();if( ks[SDL.K_ESCAPE]){// handle key press...
- Methodget_mod_state
int
get_mod_state()- Description
Returns the current state of the modifier keys (CTRL, ALT, etc.).
- Returns
The return value can be an OR'd combination of the following: SDL.KMOD_NONE, SDL.KMOD_LSHIFT, SDL.KMOD_RSHIFT, SDL.KMOD_LCTRL, SDL.KMOD_RCTRL, SDL.KMOD_LALT, SDL.KMOD_RALT, SDL.KMOD_LMETA, SDL.KMOD_RMETA, SDL.KMOD_NUM, SDL.KMOD_CAPS, and SDL.KMOD_MODE.
For convenience, the following are also defined: SDL.KMOD_CTRL, SDL.KMOD_SHIFT, SDL.KMOD_ALT and SDL.KMOD_META
- See also
SDL.get_key_state()
,SDL.pump_events()
- Methodget_video_info
object
get_video_info()- Returns
Returns an
SDL.VideoInfo
object, which holds information about the video hardware, or 0 if the video device has not yet been initialized (with a call toSDL.init()
).
- Methodget_video_surface
object
get_video_surface()- Description
Returns the current display surface.
If SDL is doing format conversion on the display surface, this method returns the publicly visible surface, not the real video surface.
- Returns
The current display surface, or 0 if there is no display surface.
- See also
SDL.set_video_mode()
- Methodgl_get_attribute
int
gl_get_attribute(int
attribute
)- Description
Returns the value of the given SDL/OpenGL attribute. You might want to call this after
SDL.set_video_mode()
to check that attributes have been set as you expected.- Parameter
attribute
The SDL/OpenGL attribute to query.
- Returns
The value of the given attribute.
- Example
// Has double-buffering been set?int db =SDL.gl_get_attribute(SDL.GL_DOUBLEBUFFER );if( db ){// yes...
- Methodgl_set_attribute
void
gl_set_attribute(int
attribute
,int
value
)- Description
Sets an SDL/OpenGL attribute to the given value.
This won't take effect until after a call to
SDL.set_video_mode()
.- Parameter
attribute
The attribute to set. This will be one of
SDL.GL_RED_SIZE
,SDL.GL_GREEN_SIZE
,SDL.GL_BLUE_SIZE
,SDL.GL_DEPTH_SIZE
orSDL.GL_DOUBLEBUFFER
.- Parameter
value
The value to set for this attribute.
- See also
SDL.gl_get_attribute()
- Methodgl_swap_buffers
void
gl_swap_buffers()- Description
Swaps the OpenGL buffers on a double-buffered screen.
- See also
SDL.gl_set_attribute()
,SDL.gl_get_attribute()
,SDL.set_video_mode()
- Methodgrab_input
int
grab_input(int
mode
)- Description
Sets or queries the current 'grab' mode.
Grabbing input means asking that all mouse activity be confined to this application window and that nearly all keyboard events are passed directly to the application, bypassing the window manager.
- Parameter
mode
One of the following constants:
SDL.GRAB_ON
SDL.GRAB_OFF
SDL.GRAB_QUERY
- Returns
The current grab mode, either
SDL.GRAB_ON
orSDL.GRAB_OFF
.
- Methodiconify_window
int
iconify_window()- Description
Attempts to iconify (i.e. minimize) the application window.
If the call is successful, the application will receive an
SDL.APPACTIVE
loss event.- Returns
Non-zero if successful, otherwise
0
.
- Methodinit
void
init(int
flags
)- Description
Initializes SDL. This should be called before all other SDL functions.
- Parameter
flags
The flags parameter specifies what part(s) of SDL to initialize. It can be one of many of the following ORed together.
- SDL.INIT_TIMER
Initializes the timer subsystem.
- SDL.INIT_AUDIO
Initializes the audio subsystem.
- SDL.INIT_VIDEO
Initializes the video subsystem.
- SDL.INIT_CDROM
Initializes the cdrom subsystem.
- SDL.INIT_JOYSTICK
Initializes the joystick subsystem.
- SDL.INIT_EVERYTHING
Initialize all of the above.
- SDL.INIT_NOPARACHUTE
Prevents SDL from catching fatal signals.
- SDL.INIT_EVENTTHREAD
Run event polling in a separate thread. Not always supported.
- See also
SDL.quit()
,SDL.init_sub_system()
,SDL.quit_sub_system()
- Methodinit_sub_system
void
init_sub_system(int
flags
)- Description
After SDL has been initialized with
SDL.init()
you may initialize uninitialized subsystems with this method.- Parameter
flags
The same as what is used in
SDL.init()
.- See also
SDL.init()
,SDL.quit()
,SDL.quit_sub_system()
- Methodjoystick_event_state
int
joystick_event_state(int
state
)- Description
Enables, disables or queries the state of joystick event processing.
- Parameter
state
One of the following constants:
SDL.ENABLE
Enables joystick event processing.
SDL.IGNORE
Disables joystick event processing.
SDL.QUERY
Queries the current state and returns it.
- Returns
The current state of joystick event processing. If
state
wasSDL.ENABLE
orSDL.IGNORE
, then processing will now be enabled or disabled, respectively.
- Methodjoystick_name
string
joystick_name(int
device_index
)- Description
Returns the implementation-dependent name of the nth joystick device available to the system.
- Parameter
device_index
The nth joystick device.
- Returns
The implementation-dependent name of the given joystick device.
- See also
SDL.Joystick->name()
- Methodjoystick_opened
int
joystick_opened(int
device_index
)- Description
Determines whether the given joystick device has already been opened.
- Parameter
device_index
The nth joystick device.
- Returns
1
if this device has already been opened, otherwise0
.
- Methodjoystick_update
void
joystick_update()- Description
Updates the state of all open joysticks attached to the system.
- Methodnum_joysticks
int
num_joysticks()- Returns
The number of joysticks available to the system.
- See also
SDL.Joystick
- Methodopen_audio
void
open_audio(int
frequency
,int
format
,int
channels
,int
bufsize
)- Description
Initializes the audio API.
Throws an exception if audio can't be initialized.
- Parameter
frequency
Output sampling frequency, measured in samples per second (Hz). A value of
44100
provides CD-quality playback. A less CPU-intensive value for games is22050
.- Parameter
format
Output sample format. One of the following constants:
- SDL.AUDIO_U8
Unsigned 8-bit samples.
- SDL.AUDIO_S8
Signed 8-bit samples.
- SDL.AUDIO_U16LSB
Unsigned 16-bit samples in little-endian byte order.
- SDL.AUDIO_S16LSB
Signed 16-bit samples in little-endian byte order.
- SDL.AUDIO_U16MSB
Unsigned 16-bit samples in big-endian byte order.
- SDL.AUDIO_S16MSB
Signed 16-bit samples in big-endian byte order.
- SDL.AUDIO_U16
Same as SDL.AUDIO_U16LSB.
- SDL.AUDIO_S16
Same as SDL.AUDIO_S16LSB.
- SDL.AUDIO_U16SYS
Unsigned 16-bit samples in system byte order.
- SDL.AUDIO_S16SYS
Signed 16-bit samples in system byte order. If in doubt, try this one first.
- Parameter
channels
Number of sound channels in output:
1
for mono,2
for stereo.- Parameter
bufsize
How many bytes to use per output sample.
1024
is a typical value for games. If just playing music you might set this to4096
or higher.
- Methodpump_events
void
pump_events()- Description
Pumps the event loop, gathering events from the input devices.
Normally you won't need to call this method, as it's called implicitly by
SDL.Event->poll()
.- See also
get_key_state()
,get_mod_state()
- Methodquit
void
quit()- Description
Shuts down all SDL subsystems and frees the resources allocated to them. This should always be called before you exit.
- Note
You can use the
atexit()
method to ensure that this method is always called when Pike exits normally.- See also
SDL.init()
,SDL.init_sub_system()
,SDL.quit_sub_system()
- Methodquit_sub_system
void
quit_sub_system(int
flags
)- Description
After an SDL subsystem has been initialized with
SDL.init()
orSDL.init_sub_system()
, it may be shut down with this method.- Parameter
flags
A bitwise OR'd combination of the subsystems you wish to shut down (see
SDL.init()
for a list of subsystem flags).- See also
SDL.init()
,SDL.init_sub_system()
,SDL.quit()
- Methodset_caption
void
set_caption(string
title
,string
icon
)- Description
Sets the window's title and icon name. Icon name refers to the text that appears next to the application's icon in its minimized window.
- Parameter
title
The window's title.
- Parameter
icon
The minimized window's icon name.
- See also
SDL.get_caption()
- Methodset_video_mode
object
set_video_mode(int
width
,int
height
,int
bpp
,int
flags
)- Description
Sets up a video mode with the specified width, height and bits per pixel.
- Parameter
width
The desired width. Setting this to <= 0 results in an SDL error.
- Parameter
height
The desired height. Setting this to <= 0 results in an SDL error.
- Parameter
bpp
The bits per pixel. This should be either 0, 8, 16, 24 or 32. If you set this to 0, the bits-per-pixel value of the current display will be used.
- Parameter
flags
An OR'd combination of the desired
SDL.Surface
flags.- Returns
The framebuffer surface. An error is thrown if the video mode can't be set.
- See also
SDL.Surface
,SDL.video_mode_ok()
- Methodshow_cursor
int
show_cursor(int
show
)- Description
Sets the state of the mouse cursor on the SDL screen (visible or hidden), or queries its current state.
By default, the cursor is visible.
- Parameter
show
One of these constants:
- SDL.ENABLE
Show the cursor.
- SDL.DISABLE
Hide the cursor.
- SDL.QUERY
Determine the current state of the cursor.
- Returns
The current state of the mouse cursor, either
SDL.ENABLE
orSDL.DISABLE
.
- Methodtoggle_fullscreen
int
toggle_fullscreen(void
|SDL.Surface
screen
)- Description
Toggles the application between windowed and fullscreen mode, if supported. X11 is the only target currently supported.
- Parameter
screen
The framebuffer surface, as returned by
SDL.set_video_mode()
.- Returns
Returns 1 on success or 0 on failure.
- Methodupdate_rect
void
update_rect(int
x
,int
y
,int
w
,int
h
,SDL.Surface
|void
screen
)- Description
Makes sure the given area is updated on the given screen. The rectangle must be confined within the screen boundaries (no clipping is done).
If 'x', 'y', 'w' and 'h' are all 0,
SDL.update_rect()
will update the entire screen.This function should not be called while
screen
is locked.- Parameter
x
- Parameter
y
Top left corner of the rectangle to update.
- Parameter
w
- Parameter
h
Width and height of the rectangle to update.
- Parameter
screen
The screen object to flip. If missing, the default screen is used.
- See also
SDL.flip()
- Methodvideo_driver_name
string
video_driver_name()- Description
Obtains the name of the video driver. This is a simple one-word identifier such as 'x11' or 'windib'.
- Returns
The name of the video driver, or 0 if video has not yet been initialized (with a call to
SDL.init()
).
- Methodvideo_mode_ok
int
video_mode_ok(int
width
,int
height
,int
bpp
,int
flags
)- Description
Checks to see if a particular video mode is supported.
- Returns
Returns 0 if the requested mode isn't supported under any bit depth, or the bits-per-pixel of the closest available mode with the given width, height and
SDL.Surface
flags.- See also
SDL.Surface
,SDL.set_video_mode()
,SDL.get_video_info()
- Methodwarp_mouse
void
warp_mouse(int
xpos
,int
ypos
)- Description
Sets the position of the mouse cursor to the given coordinates. This generates an SDL.MOUSEMOTION event.
- Parameter
xpos
Requested position of the mouse cursor along the x-axis.
- Parameter
ypos
Requested position of the mouse cursor along the y-axis.
- Methodwas_init
int
was_init(int
flags
)- Description
This method allows you to see which SDL subsytems have been initialized.
- Parameter
flags
A bitwise OR'd combination of the subsystems you wish to check (see
SDL.init()
for a list of subsystem flags).- Returns
A bitwised OR'd combination of the initialized subsystems
- See also
SDL.init()
,SDL.init_sub_system()
Class SDL.CD
- Methodplay_tracks
int
play_tracks(int
start_track
,int
start_frame
,int
ntracks
,int
nframes
)- FIXME
Document this function
- Methodplay_tracks
Class SDL.CDTrack
Class SDL.Event
- Variableaxis
Variableball
Variablebutton
Variablecode
Variablegain
Variableh
Variablehat
Variablekeysym
Variablestate
Variabletype
Variablevalue
Variablew
Variablewhich
Variablex
Variablexrel
Variabley
Variableyrel int
SDL.Event.axisint
SDL.Event.ballint
SDL.Event.buttonint
SDL.Event.codeint
SDL.Event.gainint
SDL.Event.hint
SDL.Event.hatKeysym
SDL.Event.keysymint
SDL.Event.stateint
SDL.Event.typeint
SDL.Event.valueint
SDL.Event.wint
SDL.Event.whichint
SDL.Event.xint
SDL.Event.xrelint
SDL.Event.yint
SDL.Event.yrel
- Methodget
int
get()- Description
Removes the next event (if any) from the queue and stores it in this
SDL.Event
object.- Returns
1 if there was an event to 'get', otherwise 0.
- Methodpoll
int
poll()- Description
Polls for currently pending events.
- Returns
1 if there are currently pending events, otherwise 0.
- Variableaxis
Class SDL.Joystick
- Description
Represents a joystick, gamepad or other similar input device attached to the system.
You must call
SDL.init()
with theSDL.INIT_JOYSTICK
flag to enable joystick support.All index numbers count from
0
.All
SDL.Joystick
methods throw an exception if they are called on an uninitialized object.
- Methodcreate
SDL.JoystickSDL.Joystick(
int
device_index
)- Description
Opens the given joystick device for use.
- Parameter
device_index
The nth joystick device available to the system.
- See also
SDL.num_joysticks()
- Methodget_axis
float
get_axis(int
axis
)- Description
Returns the current position of the given axis.
The returned value is a float between
-1.0
and1.0
.- Parameter
axis
The axis index.
- Returns
The current position of the given axis.
- See also
num_axes()
- Methodget_ball
array
(int
) get_ball(int
ball
)- Description
Returns the axis change of the given trackball.
This is its relative motion along both axes since the last call to
get_ball()
. It is returned as a 2-element array holding the values of dx and dy (- the motion deltas).- Returns
The axis change of the given trackball.
- See also
num_balls()
- Methodget_button
int
get_button(int
button
)- Description
Returns the current state of the given button.
This is
1
if the button is pressed, otherwise0
.- Parameter
button
The button index.
- Returns
The current state of the given button.
- See also
num_buttons()
- Methodget_hat
int
get_hat(int
hat
)- Description
Returns the current state of the given hat.
This is represented as an OR'd combination of one or more of the following constants:
SDL.HAT_CENTERED
SDL.HAT_UP
SDL.HAT_RIGHT
SDL.HAT_DOWN
SDL.HAT_LEFT
SDL.HAT_RIGHTUP
SDL.HAT_RIGHTDOWN
SDL.HAT_LEFTUP
SDL.HAT_LEFTDOWN
- Parameter
hat
The hat index.
- Returns
The current state of the given hat.
- See also
num_hats()
- Methodname
string
name()- Returns
The implementation-dependent name of this joystick.
- See also
SDL.joystick_name()
Class SDL.Keysym
- Description
The Keysym class is used to report key presses and releases. It's available from the
SDL.Event
class for keyboard events.
- Variablemod
int
SDL.Keysym.mod- Description
Current key modifiers
mod
stores the current state of the keyboard modifiers as explained inSDL.get_mod_state()
.
- Variablescancode
int
SDL.Keysym.scancode- Description
Hardware specific scancode
The
scancode
field should generally be left alone - it is the hardware dependent scancode returned by the keyboard.
- Variablesym
int
SDL.Keysym.sym- Description
SDL virtual keysym
The
sym
field is extremely useful. It is the SDL-defined value of the key. This field is very useful when you are checking for certain key presses.
- Variableunicode
int
SDL.Keysym.unicode- Description
Translated character
The
unicode
field is only used when UNICODE translation has beed enabled withSDL.enable_unicode()
. Ifunicode
is non-zero then this the UNICODE character corresponding to the keypress.- Note
UNICODE translation does have a slight overhead so don't enable it unless its needed.
Class SDL.Music
- Description
Use an
SDL.Music
object to load in a music file or sample and then play it back using an internal player.You must call
SDL.init()
with theSDL.INIT_AUDIO
flag for audio support to be available. You must also first set up some audio parameters with a call toSDL.open_audio()
.- See also
SDL.open_audio()
- Methodcreate
SDL.MusicSDL.Music(
string
fname
)- Description
Loads in the given music file and initializes the object ready for playback.
Supported formats are OGG, MP3, MOD, MID and WAV.
An exception is thrown if the file fails to load.
- Parameter
fname
The name of the music file to be loaded.
- Methodfade_in
object
fade_in(int
ms
,int
|void
loops
)- Description
Fades the music in over the given number of milliseconds. Playback is repeated loops number of times.
The fade-in will only happen on the first play, not on subsequent loops. Likewise, calling this method on an object that is already playing has the same effect as
rewind()
: playback will start over at the beginning but without fading in.- Parameter
ms
Music fades in over this number of milliseconds.
- Parameter
loops
How many times the music should be repeated (looped). Passing a value of
0
here means the music plays once over - i.e. no repeats. A value of-1
loops the music indefinitely. This is the default if you don't specify a value.- Returns
The
SDL.Music
object.- See also
fade_out()
,fading()
- Methodfade_out
object
fade_out(int
ms
)- Description
Fades the music out over the given number of milliseconds.
After ms milliseconds have passed, the music will be stopped; i.e.
playing()
will return0
.- Parameter
ms
The number of milliseconds it will take to fade out the music, starting from now.
- Returns
The
SDL.Music
object.
- Methodfading
int
fading()- Description
Determines the current state of fading for this
SDL.Music
object.- Returns
One of the following constants:
SDL.MIX_NO_FADING
SDL.MIX_FADING_IN
SDL.MIX_FADING_OUT
- See also
fade_in()
,fade_out()
- Methodhalt
object
halt()- Description
Stops music playback immediately, including any fader effects.
- Returns
The
SDL.Music
object.
- Methodpause
object
pause()- Description
Pauses the music playback.
It is safe to call this method when the music is already paused.
- Returns
The
SDL.Music
object.- See also
resume()
,paused()
- Methodpaused
int
paused()- Description
Determines if the music is already paused.
- Returns
1
if the music is paused, otherwise0
.
- Methodplay
object
play(int
|void
loops
)- Description
Starts playback. Repeats loops number of times.
- Parameter
loops
The number of times the music should be looped (i.e. repeated). If loops is
-1
or omitted, the music will repeat indefinitely.- Returns
The
SDL.Music
object.
- Methodplaying
int
playing()- Description
Determines if the music is already playing.
This method will return
1
even if the music has been paused.- Returns
1
if the music is playing, otherwise0
.
- Methodresume
object
resume()- Description
Resume music playback after a call to
pause()
.It is safe to call this method when the music isn't paused.
- Returns
The
SDL.Music
object.- See also
pause()
,paused()
- Methodrewind
object
rewind()- Description
Rewinds the music to the start and resumes playback.
If the music was paused at the time of this call, you will still need to call
resume()
to restart playback.This function works only for MOD, OGG, MP3 and Native MIDI streams.
- Returns
The
SDL.Music
object.
- Methodset_volume
float
set_volume(float
vol
)- Description
Sets the volume for music playback.
- Parameter
vol
The volume to set. This is a float value from
0.0
(silent) to1.0
(full volume). Values above and below these limits will be clamped.- Returns
The previous volume setting.
Class SDL.PixelFormat
- Description
This describes the format of the pixel data stored at the pixels field of a
SDL.Surface
. Every surface stores aPixelFormat
in the format field.
- Variablerloss
Variablegloss
Variablebloss
Variablealoss int
SDL.PixelFormat.rlossint
SDL.PixelFormat.glossint
SDL.PixelFormat.blossint
SDL.PixelFormat.aloss- Description
Precision loss of each color component.
- Variablermask
Variablegmask
Variablebmask
Variableamask int
SDL.PixelFormat.rmaskint
SDL.PixelFormat.gmaskint
SDL.PixelFormat.bmaskint
SDL.PixelFormat.amask- Description
Binary mask used to retrieve individual color values.
- Variablershift
Variablegshift
Variablebshift
Variableashift int
SDL.PixelFormat.rshiftint
SDL.PixelFormat.gshiftint
SDL.PixelFormat.bshiftint
SDL.PixelFormat.ashift- Description
Binary left shift of each color component in the pixel value.
- Variablebits_per_pixel
int
SDL.PixelFormat.bits_per_pixel- Description
The number of bits used to represent each pixel in a surface. Usually 8, 16, 24 or 32.
- Variablebytes_per_pixel
int
SDL.PixelFormat.bytes_per_pixel- Description
The number of bytes used to represent each pixel in a surface. Usually one to four.
- Methodget_rgb
Image.Color.Color
get_rgb(int
pixel
)- Description
Get RGB component values from a pixel stored in this pixel format.
- Parameter
pixel
A pixel retrieved from a surface with this pixel format or a color previously mapped with
map_rgb()
ormap_rgba()
.- Returns
A
Image.Color.Color
object with the RGB components of the pixel.- See also
map_rgb()
,map_rgba()
,get_rgba()
- Methodget_rgba
mapping
(string
:Image.Color.Color
|int
) get_rgba(int
pixel
)- Description
Get RGB component values from a pixel stored in this pixel format.
- Parameter
pixel
A pixel retrieved from a surface with this pixel format or a color previously mapped with
map_rgb()
ormap_rgba()
.- Returns
A mapping containing the RGBA components of the pixel:
"color"
:Image.Color.Color
The RGB color value of the pixel.
"alpha"
:int
The alpha value of the pixel in the range 0-255.
- See also
map_rgb()
,map_rgba()
,get_rgb()
- Methodlosses
array
(int
) losses()- Description
Convenience method returning the RGBA precision loss as an array.
- Methodmap_rgb
int
map_rgb(int
r
,int
g
,int
b
)int
map_rgb(Image.Color.Color
color
)- Description
Maps the RGB color value to the specified pixel format and returns the pixel value as an integer.
If the format has a palette (8-bit) the index of the closest matching color in the palette will be returned.
If the pixel format has an alpha component it will be returned as all 1 bits (fully opaque).
- Parameter
r
- Parameter
g
- Parameter
b
The red, green and blue components specified as an integer between 0 and 255.
- Parameter
color
The color as represented by an
Image.Color.Color
object.- Returns
A pixel value best approximating the given RGB color value for a given pixel format.
- See also
map_rgba()
,get_rgb()
,get_rgba()
- Methodmap_rgba
int
map_rgba(int
r
,int
g
,int
b
,int
a
)int
map_rgba(Image.Color.Color
color
,int
a
)- Description
Maps the RGBA color value to the specified pixel format and returns the pixel value as an integer.
If the format has a palette (8-bit) the index of the closest matching color in the palette will be returned.
If the pixel format has an alpha component it will be returned as all 1 bits (fully opaque).
- Parameter
r
- Parameter
g
- Parameter
b
- Parameter
a
The red, green and blue components specified as an integer between 0 and 255.
- Parameter
color
The color as represented by an
Image.Color.Color
object.- Returns
A pixel value best approximating the given RGB color value for a given pixel format.
- See also
map_rgb()
,get_rgb()
,get_rgba()
Class SDL.Rect
- Description
Used in SDL to define a rectangular area. It is sometimes also used to specify only points or sizes (i.e only one of the position and dimension is used).
- Variablew
Variableh int(16bit)
SDL.Rect.wint(16bit)
SDL.Rect.h- Description
The width and height of the rectangle. Internally these are 16 bit unsigned integers. A runtime error will be generated when integer values are used that are too big.
- Variablex
Variabley int(-32768..32767)
SDL.Rect.xint(-32768..32767)
SDL.Rect.y- Description
Position of the upper-left corner of the rectangle. Internally these are 16 bit signed integers. A runtime error will be generated when integer values are used that are too big.
- Methodcast
(
array
)SDL.Rect()
(mapping
)SDL.Rect()- Description
It is possible to cast a Rect object to an array or to a mapping. The array will have the values in the order x, y, w, h and the mapping will have the values associated with the corresponding names.
- Methodcreate
SDL.RectSDL.Rect()
SDL.RectSDL.Rect(
int(-32768..32767)
x
,int(-32768..32767)
y
)SDL.RectSDL.Rect(
int(-32768..32767)
x
,int(-32768..32767)
y
,int(16bit)
w
,int(16bit)
h
)- Description
Create a new
Rect
.- Parameter
x
- Parameter
y
Optional initial values for
Rect()->x
andRect()->y
.- Parameter
w
- Parameter
h
Optional initial values for
Rect()->w
andRect()->h
.
Class SDL.Surface
- Description
Surface's represent areas of "graphical" memory, memory that can be drawn to. The video framebuffer is returned as a
SDL.Surface
bySDL.set_video_mode()
andSDL.get_video_surface()
.
- Variableclip_rect
SDL.Rect
SDL.Surface.clip_rect- Description
This is the clipping rectangle as set by
set_clip_rect()
.
- Variableflags
int
SDL.Surface.flags- Description
The following are supported in the flags field.
- SDL.SWSURFACE
Surface is stored in system memory
- SDL.HWSURFACE
Surface is stored in video memory
- SDL.ASYNCBLIT
Surface uses asynchronous blits if possible.
- SDL.ANYFORMAT
Allows any pixel-format (Display surface).
- SDL.HWPALETTE
Surface has exclusive palette.
- SDL.DOUBLEBUF
Surface is double buffered (Display surface).
- SDL.FULLSCREEN
Surface is full screen (Display Sur face).
- SDL.OPENGL
Surface has an OpenGL context (Display Surface).
- SDL.OPENGLBLIT
Surface supports OpenGL blitting (Display Surface).
- SDL.RESIZABLE
Surface is resizable (Display Surface).
- SDL.HWACCEL
Surface blit uses hardware acceleration.
- SDL.SRCCOLORKEY
Surface use colorkey blitting.
- SDL.RLEACCEL
Colorkey blitting is accelerated with RLE.
- SDL.SRCALPHA
Surface blit uses alpha blending.
- SDL.PREALLOC
Surface uses preallocated memory.
- Variablew
Variableh int
SDL.Surface.wint
SDL.Surface.h- Description
The width and height of the surface in pixels.
- Methodblit
object
blit(SDL.Surface
dst
,SDL.Rect
|void
srcrect
,SDL.Rect
|void
dstrect
)- Description
Perform a blit from this surface to the
dst
surface.- Parameter
dst
Destination
Surface
for the blit.- Parameter
srcrect
Optional source
Rect
. IfUNDEFINED
the entire sourceSurface
will be copied.- Parameter
dstrect
Optional destination
Rect
. Only the position fields x and y values are used. IfUNDEFINED
the blit will be performed to position 0, 0.
- Methoddisplay_format
SDL.Surface
display_format()- Description
This function takes a surface and copies it to a new surface of the pixel format and colors of the video framebuffer, suitable for fast blitting onto the display surface. It calls
convert_surface()
.If you want to take advantage of hardware colorkey or alpha blit acceleration, you should set the colorkey and / or alpha value before calling this function.
If you want an alpha channel, see
display_format_alpha()
.- Returns
The new surface. An error is thrown if the conversion fails.
- Methoddisplay_format_alpha
SDL.Surface
display_format_alpha()- Description
This function takes a surface and copies it to a new surface of the pixel format and colors of the video framebuffer, suitable for fast blitting onto the display surface. It calls
convert_surface()
.If you want to take advantage of hardware colorkey or alpha blit acceleration, you should set the colorkey and / or alpha value before calling this function.
This function can be used to convert a colourkey to an alpha channel, if the SDL.SRCCOLORKEY flag is set on the surface. The generated surface will then be transparent (alpha=0) where the pixels match the colourkey, and opaque (alpha=255) elsewhere.
- Returns
The new surface. An error is thrown if the conversion fails.
- Methodfill
object
fill(int
color
)- Description
Fill the entire surface with a solid color.
- See also
fill_rect()
- Methodfill_rect
object
fill_rect(int
color
,SDL.Rect
dstrect
)- Description
Fill a rectangle with a solid color.
- See also
fill()
- Methodget_pixel
int
get_pixel(int
x
,int
y
)- Description
Get the value of the specified pixel. The surface needs to be locked before this method can be used.
- Parameter
x
- Parameter
y
Pixel coordinate to get.
- Returns
The value of the specified pixel.
- See also
set_pixel()
,unlock()
,lock()
- Methodinit
SDL.Surface
init(int
flags
,int
width
,int
height
,int
depth
,int
Rmask
,int
Gmask
,int
Bmask
,int
Amask
)- Description
This (re)initializes this surface using the specified parameters.
Any previously allocated data will be freed.
- Parameter
depth
- Parameter
Rmask
- Parameter
Gmask
- Parameter
Bmask
- Parameter
Amask
If
depth
is 8 bits an empty palette is allocated for the surface, otherwise a 'packed-pixel'SDL.PixelFormat
is created using the [RGBA]mask's provided.- Parameter
width
- Parameter
height
width
andheight
specify the desired size of the image.- Parameter
flags
flags
specifies the type of surface that should be created. It is an OR'd combination of the following possible values:- SDL.SWSURFACE
SDL will create the surface in system memory. This improves the performance of pixel level access, however you may not be able to take advantage of some types of hardware blitting.
- SDL.HWSURFACE
SDL will attempt to create the surface in video memory. This will allow SDL to take advantage of Video->Video blits (which are often accelerated).
- SDL.SRCCOLORKEY
This flag turns on colourkeying for blits from this surface. If SDL.HWSURFACE is also specified and colourkeyed blits are hardware-accelerated, then SDL will attempt to place the surface in video memory. Use
set_color_key()
to set or clear this flag after surface creation.- SDL.SRCALPHA
This flag turns on alpha-blending for blits from this surface. If SDL.HWSURFACE is also specified and alpha blending blits are hardware-accelerated, then the surface will be placed in video memory if possible. Use
set_alpha()
to set or clear this flag after surface creation.
- Note
If an alpha-channel is specified (that is, if Amask is nonzero), then the SDL.SRCALPHA flag is automatically set. You may remove this flag by calling
set_alpha()
after surface creation.- Returns
A reference to itself.
- Note
If this method fails, the surface will become uninitialized.
- See also
set_image()
- Methodlock
int
lock()- Description
This methods locks the surface to allow direct access to the pixels using the
get_pixel()
andset_pixel()
methods.- Note
Note that although all surfaces in SDL don't require locking, you still need to call this method to enable the set/get pixel methods. You should unlock the surface when you're doing modifying it.
- Note
Calling this method multiple times means that you need to call unlock an equal number of times for the surface to become unlocked.
- Returns
1 for success or 0 if the surface couldn't be locked.
- See also
unlock()
,set_pixel()
,get_pixel()
- Methodset_color_key
object
set_color_key(int
flag
,int
key
)- Description
Set or clear the color key (aka transparent pixel) for a the surface. Also control whether RLE-accelleration is enabled or not.
- Parameter
flag
- FIXME
Document this function
- Methodset_image
SDL.Surface
set_image(Image.Image
image
,int
|void
flags
)SDL.Surface
set_image(Image.Image
image
,Image.Image
alpha
,int
|void
flags
)- Description
This (re)initializes this surface from the
Image.Image
inimage
.Any previously allocated data will be freed.
If initialization is successful, this surface will use RGBA8888 format. For good blitting performance, it should be converted to the display format using
display_format()
.- Parameter
image
The source image.
- Parameter
alpha
Optional alpha channel. In Pike, the alpha channel can have different alpha values for red, green and blue. Since SDL doesn't support this, only the alpha value of the red color is used in the conversion. When this calling convention is used, the surface alpha value of image is ignored.
- Parameter
flags
When present this specifies the type of surface that should be created. It is an OR'd combination of the following possible values:
- SDL.SWSURFACE
SDL will create the surface in system memory. This improves the performance of pixel level access, however you may not be able to take advantage of some types of hardware blitting.
- SDL.HWSURFACE
SDL will attempt to create the surface in video memory. This will allow SDL to take advantage of Video->Video blits (which are often accelerated).
- SDL.SRCCOLORKEY
This flag turns on colourkeying for blits from this surface. If SDL.HWSURFACE is also specified and colourkeyed blits are hardware-accelerated, then SDL will attempt to place the surface in video memory. Use
set_color_key()
to set or clear this flag after surface creation.- SDL.SRCALPHA
This flag turns on alpha-blending for blits from this surface. If SDL.HWSURFACE is also specified and alpha blending blits are hardware-accelerated, then the surface will be placed in video memory if possible. Note that if this surface has an alpha value specified, this flag is enabled automatically. Use
set_alpha()
to modify this flag at a later point.
- Note
If this method fails, the surface will become uninitialized.
- Returns
A reference to itself.
- See also
init()
- Methodset_pixel
int
set_pixel(int
x
,int
y
,int
pixel
)- Description
Set the value of the specified pixel. The surface needs to be locked before this method can be used.
- Parameter
x
- Parameter
y
Pixel coordinate to modify.
- Parameter
pixel
Pixel value to set to the specified pixel.
- Returns
A reference to the surface itself.
- See also
get_pixel()
,unlock()
,lock()
Class SDL.VideoInfo
- Description
This (read-only) class is returned by
SDL.get_video_info()
. It contains information on either the 'best' available mode (if called beforeSDL.set_video_mode()
) or the current video mode.
- Variableblit_hw_a
int
SDL.VideoInfo.blit_hw_a- Description
Are hardware to hardware alpha blits accelerated?
- Variableblit_hw_cc
int
SDL.VideoInfo.blit_hw_cc- Description
Are hardware to hardware colorkey blits accelerated?
- Variableblit_sw_a
int
SDL.VideoInfo.blit_sw_a- Description
Are software to hardware alpha blits accelerated?
- Variableblit_sw_cc
int
SDL.VideoInfo.blit_sw_cc- Description
Are software to hardware colorkey blits accelerated?
- Variablehw_available
int
SDL.VideoInfo.hw_available- Description
Is it possible to create hardware surfaces?
Module Search
- Methoddo_query_and
ResultSet
do_query_and(array
(string
)words
,array
(int
)field_coefficients
,array
(int
)proximity_coefficients
,int
cutoff
,function
(string
,int
,int
:string
)blobfeeder
)- Parameter
words
Arrays of word ids. Note that the order is significant for the ranking.
- Parameter
field_coefficients
An array of ranking coefficients for the different fields. In the range of [0x0000-0xffff]. The array (always) has 65 elements:
Array int
0
body
int
1..64
Special field 0..63.
- Parameter
proximity_coefficients
An array of ranking coefficients for the different proximity categories. Always has 8 elements, in the range of [0x0000-0xffff].
Array int
0
spread: 0 (Perfect hit)
int
1
spread: 1-5
int
2
spread: 6-10
int
3
spread: 11-20
int
4
spread: 21-40
int
5
spread: 41-80
int
6
spread: 81-160
int
7
spread: 161-
- Parameter
blobfeeder
This function returns a Pike string containing the word hits for a certain word. Call repeatedly until it returns
0
.
- Methoddo_query_or
ResultSet
do_query_or(array
(string
)words
,array
(int
)field_coefficients
,array
(int
)proximity_coefficients
,int
cutoff
,function
(string
,int
,int
:string
)blobfeeder
)- Parameter
words
Arrays of word ids. Note that the order is significant for the ranking.
- Parameter
field_coefficients
An array of ranking coefficients for the different fields. In the range of [0x0000-0xffff]. The array (always) has 65 elements:
Array int
0
body
int
1..64
Special field 0..63.
- Parameter
proximity_coefficients
An array of ranking coefficients for the different proximity categories. Always has 8 elements, in the range of [0x0000-0xffff].
Array int
0
spread: 0 (Perfect hit)
int
1
spread: 1-5
int
2
spread: 6-10
int
3
spread: 11-20
int
4
spread: 21-40
int
5
spread: 41-80
int
6
spread: 81-160
int
7
spread: 161-
- Parameter
blobfeeder
This function returns a Pike string containing the word hits for a certain word. Call repeatedly until it returns
0
.
- Methoddo_query_phrase
ResultSet
do_query_phrase(array
(string
)words
,array
(int
)field_coefficients
,function
(string
,int
,int
:string
)blobfeeder
)- Parameter
words
Arrays of word ids. Note that the order is significant for the ranking.
- Parameter
field_coefficients
An array of ranking coefficients for the different fields. In the range of [0x0000-0xffff]. The array (always) has 65 elements:
Array int
0
body
int
1..64
Special field 0..63.
- Parameter
blobfeeder
This function returns a Pike string containing the word hits for a certain word. Call repeatedly until it returns
0
.
- Methodget_filter
Search.Filer.Base
get_filter(string
mime_type
)- Description
Returns the appropriate filter object for the given mime type. This will be one of the objects in
Search.Filter
.
- Methodget_filter_fields
array
(string
) get_filter_fields()- Description
Returns an array of field types supported by the available set of media plugins.
- Methodget_filter_mime_types
mapping
(string
:Search.Filter.Base
) get_filter_mime_types()- Description
Returns a mapping from mime-type to filter objects. The filter objects are from
Search.Filter
.
Class Search.Blob
Class Search.Blobs
- Methodadd_words
void
add_words(int
docid
,array
(string
)words
,int
field_id
)- Description
Add all the words in the 'words' array to the blobs
- Methodread
array
read()- Description
returns ({ string word_id, string blob }) or ({0,0}) As a side-effect, this function frees the blob and the word_id, so you can only read the blobs struct once. Also, once you have called
read
,add_words
will no longer work as expected.
- Methodread_all_sorted
array
(array
(string
)) read_all_sorted()- Description
Returns ({({ string word1_id, string blob1 }),...}), sorted by word_id in octet order.
- Note
This function also frees the blobs and the word_ids, so you can only read the blobs struct once. Also, once you have called
read
orread_all_sorted
,add_words
will no longer work as expected.
- Methodadd_words
Class Search.LinkFarm
Class Search.MergeFile
Class Search.RankingProfile
- Methodcreate
Search.RankingProfileSearch.RankingProfile(
void
|int
cutoff
,void
|array
(int
)proximity_ranking
)Search.RankingProfileSearch.RankingProfile(
int
cutoff
,array
(int
)proximity_ranking
,Search.Database.Base
db
,array
(int
)|mapping
(string
:int
)field_ranking
)- Parameter
cutoff
Defaults to 8
- Parameter
proximity_ranking
Defaults to
({ 8, 7, 6, 5, 4, 3, 2, 1, })
- Parameter
field_ranking
Defaults to
({ 17, 0, 147 }) + allocate(62)
.- Parameter
db
Only needed if
field_ranking
is provided as a mapping.
- Methodcreate
Class Search.ResultSet
- Description
A resultset is basically an array of hits from the search.
Note: inheriting this class is _not_ supported (for performance reasons)
- Method_sizeof
Methodsize int
sizeof(Search.ResultSetarg)int
size()- Description
Return the size of this resultset, in entries.
- Methodintersect
Method`& ResultSet
intersect(ResultSet
a
)ResultSet
res =Search.ResultSet()
&a
- Description
Return a new resultset with all entries that are present in _both_ sets. Only the document_id is checked, the resulting ranking is the sum of the rankings if the two sets.
- Method`|
Method`+
Methodor ResultSet
res =Search.ResultSet()
|a
ResultSet
res =Search.ResultSet()
+a
ResultSet
or(ResultSet
a
)- Description
Add the given resultsets together, to generate a resultset with both sets included. The rankings will be added if a document exists in both resultsets.
- Methodsub
Method`- ResultSet
sub(ResultSet
a
)ResultSet
res =Search.ResultSet()
-a
- Description
Return a new resultset with all entries in a removed from the current ResultSet.
Only the document_id is checked, the ranking is irrelevalt.
- Methodadd_ranking
ResultSet
add_ranking(ResultSet
a
)- Description
Return a new resultset. All entries are the same as in this set, but if an entry exists in
a
, the ranking froma
is added to the ranking of the entry
- Methodcast
(
array
)Search.ResultSet()- Description
Only works when type ==
"array"
. Returns the resultset data as a array.
- Methodoverhead
int
overhead()- Description
Return the size of the memory overhead, in bytes.
You can minimize the overhead by calling dup(), which will create a new resultset with the exact size needed.
- Methodslice
array
(array
(int
)) slice(int
first
,int
nelems
)- Description
Return nelems entries from the result-set, starting with first. If 'first' is outside the resultset, or nelems is 0, 0 is returned.
Module Search.Database
Class Search.Database.Base
- Description
Base class for Search database storage abstraction implementations.
- Methodallocate_field_id
int
allocate_field_id(string
field
)- Description
Allocate a field id.
- Parameter
field
The (possibly wide string) field name wanted.
- Returns
An allocated numeric id, or -1 if the allocation failed.
- Methodcreate
Search.Database.BaseSearch.Database.Base(
string
db_url
)- Description
Initialize the database object.
- Parameter
path
The URL that identifies the underlying database storage
- Methodget_blob
string
get_blob(string
word
,int
num
,void
|mapping
(string
:mapping
(int
:string
))blobcache
)- Description
Retrieves a blob from the database.
- Parameter
word
The wanted word. Possibly in wide-string format. (Not UTF-8 encoded.)
- Parameter
num
- Parameter
blobcache
- Returns
The blob requested, or 0 if there's no more blobs.
- Methodget_database_size
int
get_database_size()- Description
Returns the size, in bytes, of the search database.
- Methodget_document_id
int
get_document_id(string
uri
,void
|string
language
,void
|int
do_not_create
)- Description
Retrieve and possibly creates the document id corresponding to the given URI and language code.
- Parameter
uri
The URI to be retrieved or created.
- Parameter
language
A two letter ISO-639-1 language code, or 0 if the document is language neutral.
- Parameter
do_not_create
If non-zero, do not create the document.
- Returns
The non-zero numeric identifier if the document identified by
uri
andlanguage_code
exists, or 0 otherwise.
- Methodget_field_id
int
get_field_id(string
field
,void
|int
do_not_create
)- Description
Retrieve and possibly creates the numeric id of a field
- Parameter
field
The (possibly wide string) field name wanted.
- Parameter
do_not_create
If non-zero, do not allocate a field id for this field
- Returns
An allocated numeric id, or -1 if it did not exist, or allocation failed.
- Methodget_language_stats
mapping
(string
|int
:int
) get_language_stats()- Description
Retrieve statistics about the number of documents in different languages.
- Returns
A mapping with the the language code in the index part, and the corresponding number of documents as values.
- Methodget_lastmodified
int
get_lastmodified(Standards.URI
|string
|array
(Standards.URI
|string
)uri
,void
|string
language
)- Description
Get last modification time for
uri
,language
.- Returns
Returns modification time in seconds since 1970-01-01T00:00:00 UTC) if known, and
0
(zero) otherwise.
- Methodget_metadata
mapping
(string
:string
) get_metadata(int
|Standards.URI
|string
uri
,void
|string
language
,void
|array
(string
)wanted_fields
)- Description
Retrieve a metadata collection for a document.
- Parameter
uri
The URI of the resource being indexed.
- Parameter
language
A two letter ISO-639-1 language code, or 0 if the document is language neutral.
- Parameter
wanted_fields
An array containing the wanted metadata field names, or 0.
- Returns
The metadata fields in
wanted_fields
or all existing fields ifwanted_fields
is 0.
- Methodget_most_common_words
array
(array
) get_most_common_words(void
|int
count
)- Description
Returns a list of the
count
most common words in the database.count
defaults to10
.
- Methodget_num_deleted_documents
int
get_num_deleted_documents()- Description
Returns the number of deleted documents in the database.
- Methodget_num_words
int
get_num_words()- Description
Returns the number of distinct words in the database.
- Methodget_uri_and_language
mapping
get_uri_and_language(int
|array
(int
)doc_id
)- Description
Retrieve the URI and language code associated with
doc_id
.- Returns
"uri"
:string
The URI of the document.
"language"
:void
|string
The ISO-639-1 language code of the document, or 0 if not set.
- Methodget_uri_id
int
get_uri_id(string
uri
,void
|int
do_not_create
)- Description
Retrieve and possibly creates the URI id corresponding to the given URI.
- Parameter
uri
The URI to be retrieved or created.
- Parameter
do_not_create
If non-zero, do not create the URI.
- Returns
The non-zero numeric identifier if
uri
exists, or 0 otherwise.
- Methodinsert_words
void
insert_words(Standards.URI
|string
uri
,void
|string
language
,string
field
,array
(string
)words
)- Description
Index words into the database. The data may be buffered until the next
sync
call.- Parameter
uri
The URI of the resource being indexed.
- Parameter
language
A two letter ISO-639-1 language code, or 0 if the document is language neutral.
- Parameter
field
The field name for the words being indexed.
- Parameter
words
The words being indexed. Possibly in wide-string format. (Not UTF8 encoded.)
- Methodlist_fields
mapping
(string
:int
) list_fields()- Description
Lists all fields in the search database.
- Returns
A mapping with the fields in the index part, and the corresponding numeric field id as values.
- Methodlist_url_by_prefix
void
list_url_by_prefix(string
url_prefix
,function
(string
:void
)cb
)- Description
Calls
cb
for all uri:s that matchuri_prefix
.
- Methodremove_document
void
remove_document(string
|Standards.URI
uri
,void
|string
language
)- Description
Remove a document from the database.
- Parameter
uri
The URI of the resource being indexed.
- Parameter
language
A two letter ISO-639-1 language code. If zero, delete all existing language forks with the URI of
uri
.
- Methodremove_document_prefix
void
remove_document_prefix(string
|Standards.URI
uri
)- Description
Removes all documents that matches the provided uri prefix.
- Parameter
uri
The URI prefix of the documents to delete.
- Methodremove_field
void
remove_field(string
field
)- Description
Remove a field from the database. Also removes all stored metadata with this field, but not all indexed words using this field id.
- Parameter
field
The (possibly wide string) field name to be removed.
- Methodremove_metadata
void
remove_metadata(Standards.URI
|string
uri
,void
|string
language
)- Description
Remove all metadata for a document
- Parameter
uri
The URI of the resource whose metadata should be removed.
- Parameter
language
A two letter ISO-639-1 language code, or 0 if the document is language neutral.
- Methodremove_uri
void
remove_uri(string
|Standards.URI
uri
)- Description
Remove URI from the database.
- Parameter
uri
The URI of the resource being removed.
- Methodremove_uri_prefix
void
remove_uri_prefix(string
|Standards.URI
uri
)- Description
Remove URI prefix from the database.
- Parameter
uri
The URI prefix of the resource being removed.
- Methodsafe_remove_field
void
safe_remove_field(string
field
)- Description
Remove a field from the database if it isn't used by the filters. Also removes all stored metadata with this field, but not all indexed words using this field id.
- Parameter
field
The (possibly wide string) field name to be removed.
- Methodset_lastmodified
void
set_lastmodified(Standards.URI
|string
uri
,void
|string
language
,int
when
)- Description
Set last modification time for
uri
,language
tomtime
(seconds since 1970-01-01T00:00:00 UTC).
- Methodset_metadata
void
set_metadata(Standards.URI
|string
uri
,void
|string
language
,mapping
(string
:string
)metadata
)- Description
Set a metadata collection for a document.
- Parameter
uri
The URI of the resource being indexed.
- Parameter
language
A two letter ISO-639-1 language code, or 0 if the document is language neutral.
- Parameter
metadata
A collection of metadata strings to be set for a document. The strings may be wide. The "body" metadata may be cut off at 64K.
- Methodset_sync_callback
void
set_sync_callback(function
(:void
)f
)- Description
Sets a function to be called when
sync
has been completed.
Module Search.Filter
Class Search.Filter.Base
- Constantcontenttypes
constant
array
(string
) Search.Filter.Base.contenttypes
- Description
The MIME content types this object can filter.
- Constantfields
optional
constantarray
(string
) Search.Filter.Base.fields
- Description
The different fields this object can extract from the media. The list can contain any of the following values.
"body"
"title"
"keywords"
"description"
"robots"
"headline"
"modified"
"author"
"summary"
- Constantcontenttypes
Class Search.Filter.Output
- Description
This object is returned from
Search.Filter
plugins.
- Variablefields
mapping
(string
:string
) Search.Filter.Output.fields- Description
Data extracted from input, grouped by type. Standard fields are
"body"
,"title"
,"description"
,"keywords"
and"mtime"
.- Note
Note that all field values (even
"mtime"
) are strings.
- Variablelinks
array
(Standards.URI
|string
) Search.Filter.Output.links- Description
All links collected from the document.
- Variableuri_anchors
mapping
(string
:string
) Search.Filter.Output.uri_anchors- Description
Maps un-normalized URLs to raw text, e.g.
([ "http://pike.lysator.liu.se": "Pike language" ])
.
Module Search.Grammar
Class Search.Grammar.AbstractParser
- Methodcreate
Search.Grammar.AbstractParserSearch.Grammar.AbstractParser(
void
|mapping
(string
:mixed
)options
)- Parameter
options
"implicit"
:string
Either of the strings: "and", "or". If not supplied, default to "or".
"fields"
:multiset
(string
)The words that should be recognized as fields. If not supplied, it should default to Search.Grammar.getDefaultFields()
- Methodcreate
Class Search.Grammar.DefaultParser
Class Search.Grammar.ParseNode
- Description
Abstract parse tree node.
Module Search.Grammar.Lexer
- Methodtokenize
string
|array
(array
(Token
|string
)) tokenize(string
query
)- Description
Tokenizes a query into tokens for later use by a parser.
- Parameter
query
The query to tokenize.
- Returns
An array containing the tokens: ({ ({ TOKEN_WORD, "foo" }), ... }) Or, in case of an error, a string with the error message.
Enum Search.Grammar.Lexer.Token
- ConstantTOKEN_AND
ConstantTOKEN_OR constant
Search.Grammar.Lexer.TOKEN_AND
constant
Search.Grammar.Lexer.TOKEN_OR
- ConstantTOKEN_PLUS
ConstantTOKEN_MINUS
ConstantTOKEN_COLON constant
Search.Grammar.Lexer.TOKEN_PLUS
constant
Search.Grammar.Lexer.TOKEN_MINUS
constant
Search.Grammar.Lexer.TOKEN_COLON
- ConstantTOKEN_EQUAL
ConstantTOKEN_LESSEQUAL
ConstantTOKEN_GREATEREQUAL
ConstantTOKEN_NOTEQUAL
ConstantTOKEN_LESS
ConstantTOKEN_GREATER constant
Search.Grammar.Lexer.TOKEN_EQUAL
constant
Search.Grammar.Lexer.TOKEN_LESSEQUAL
constant
Search.Grammar.Lexer.TOKEN_GREATEREQUAL
constant
Search.Grammar.Lexer.TOKEN_NOTEQUAL
constant
Search.Grammar.Lexer.TOKEN_LESS
constant
Search.Grammar.Lexer.TOKEN_GREATER
- ConstantTOKEN_LPAREN
ConstantTOKEN_RPAREN constant
Search.Grammar.Lexer.TOKEN_LPAREN
constant
Search.Grammar.Lexer.TOKEN_RPAREN
- ConstantTOKEN_AND
- Methodtokenize
Module Search.Indexer
- Methodfilter_and_index
Search.Filter.Output
|zero
filter_and_index(Search.Database.Base
db
,string
|Standards.URI
uri
,void
|string
language
,string
|Stdio.File
data
,string
content_type
,void
|mapping
headers
,void
|string
default_charset
)
- Methodindex_document
void
index_document(Search.Database.Base
db
,string
|Standards.URI
uri
,void
|string
language
,mapping
fields
)
- Methodfilter_and_index
Module Search.Query
- Methodexecute
array
(Search.ResultSet
|array
(string
)) execute(Search.Database.Base
db
,Search.Grammar.AbstractParser
parser
,string
query
,Search.RankingProfile
ranking
,void
|array
(string
)stop_words
,search_order
|void
order
)- Parameter
query
The query string entered by user.
- Parameter
db
The search database.
- Parameter
defaultRanking
Used when searching in the field "any:".
- Returns
An array with three elements:
Array Search.ResultSet
0
The ResultSet containing the hits.
array
(string
)1
All wanted words in the query. (I.e. not the words that were preceded by minus.)
array
(mapping
)2
All wanted globs in the query. (I.e. not the globs that were preceded by minus.)
Enum Search.Query.search_order
- Methodexecute
Module Search.Queue
Class Search.Queue.Base
- Description
Virtual base class for the
Search
crawler state.
- Methodadd_uri
void
add_uri(Standards.URI
uri
,int
recurse
,string
template
,void
|int
force
)- Description
Add an URI to be crawled.
- Methodclear_md5
void
clear_md5(int
...stages
)- Description
Clear the content MD5 for all URIs at the specified stages.
- Methodclear_stage
void
clear_stage(int
...stages
)- Description
Reset all URIs at the specified stage to stage
0
(zero).
- Methodget_extra
mapping
get_extra(Standards.URI
uri
)- Returns
Returns a mapping with the current state for the URI.
"md5"
:string
"recurse"
:string
|int
"stage"
:string
|int
"template"
:string
- FIXME
Currently this function always returns a
mapping(string:string)
, but this may change to the above in the future.
- Methodget_uris
array
(Standards.URI
) get_uris(void
|int
stage
)- Returns
Returns all URIs if no
stage
is specified, otherwise returns the URIs at the specifiedstage
.- FIXME
State
0
(zero) is a special case, and returns all URIs. This may change in the future.
- Methodnum_with_stage
int
num_with_stage(int
...stage
)- Returns
Returns the number of URIs at the specified stage(s).
- Methodput
void
put(string
|array
(string
)|Standards.URI
|array
(Standards.URI
)uri
)- Description
Add one or multiple URIs to the queue.
All the URIs will be added with recursion enabled and an empty template.
- Methodremove_uri_prefix
void
remove_uri_prefix(string
|Standards.URI
uri
)- Description
Remove all URIs with the specified prefix from the queue.
- Methodset_recurse
void
set_recurse(Standards.URI
uri
,int
recurse
)- Description
Set the recurse mode for an URI.
Enum Search.Queue.Base.Stage
- Description
The queue stage levels.
- ConstantSTAGE_WAITING
ConstantSTAGE_FETCHING
ConstantSTAGE_FETCHED
ConstantSTAGE_FILTERED
ConstantSTAGE_INDEXED
ConstantSTAGE_COMPLETED
ConstantSTAGE_ERROR constant
Search.Queue.Base.STAGE_WAITING
constant
Search.Queue.Base.STAGE_FETCHING
constant
Search.Queue.Base.STAGE_FETCHED
constant
Search.Queue.Base.STAGE_FILTERED
constant
Search.Queue.Base.STAGE_INDEXED
constant
Search.Queue.Base.STAGE_COMPLETED
constant
Search.Queue.Base.STAGE_ERROR
Class Search.Queue.MySQL
- Description
Search
crawler state stored in aMysql
database.
- Methodcreate
Search.Queue.MySQLSearch.Queue.MySQL(
Web.Crawler.Stats
_stats
,Web.Crawler.Policy
_policy
,string
_url
,string
_table
,void
|Web.Crawler.RuleSet
_allow
,void
|Web.Crawler.RuleSet
_deny
)- Parameter
_url
Sql.Sql
URL for the database to store the queue.- Parameter
_table
Sql.Sql
table name to store the queue in.If the table doesn't exist it will be created.
- Methodget_schemes
array
(string
) get_schemes()- Returns
Returns an array with all URI schemes currently used in the queue.
- Methodget_stage
int
get_stage(Standards.URI
uri
)- Returns
Returns the current stage for the specified URI.
- See also
set_stage()
Module Search.Utils
- Methodflush_profile
void
flush_profile(int
p
)- Description
Flushes the profile
p
from allProfileCache
objects obtained withget_profile_cache
.
- Methodget_profile_cache
ProfileCache
get_profile_cache(string
db_name
)- Description
Returns a
ProfileCache
for the profiles stored in the databasedb_name
.
- Methodget_profile_storage
mapping
get_profile_storage(string
db_name
)- Description
Returns a profile storage mapping, which will be shared between all callers with the same
db_name
given.
- Methodget_scheduler
Scheduler
get_scheduler(string
db_name
)- Description
Returns a scheduler for the given profile database.
- Methodnormalize
string
normalize(string
in
)- Description
Normalize the input string. Performs unicode NFKD normalization and then lowercases the whole string
- Methodtokenize
array
(string
) tokenize(string
in
)- Description
Tokenize the input string (Note: You should first call normalize on it)
- Methodtokenize_and_normalize
array
(string
) tokenize_and_normalize(string
what
)- Description
This can be optimized quite significantly when compared to tokenize( normalize( x ) ) in the future, currently it's not all that much faster, but still faster.
Class Search.Utils.Logger
- Methodcreate
Search.Utils.LoggerSearch.Utils.Logger(
Sql.Sql
db_object
,int
profile
,int
stderr_logging
)Search.Utils.LoggerSearch.Utils.Logger(
string
db_url
,int
profile
,int
stderr_logging
)
- Methodcreate
Class Search.Utils.ProfileCache
- Methodflush_profile
void
flush_profile(int
p
)- Description
Flushes profile entry
p
from the profile cache.
- Methodget_db_profile_number
int
get_db_profile_number(string
name
)- Description
Returns the profile number for the given database profile.
- Methodget_profile_entry
ProfileEntry
get_profile_entry(string
db_name
,void
|string
query_name
)- Description
Returns a
ProfileEntry
object with the states needed for commiting searches in the database profiledb_name
with the rules from query profilequery_name
.
- Methodget_query_profile_number
int
get_query_profile_number(string
name
)- Description
Returns the profile number for the given query profile.
- Methodget_value_mapping
mapping
get_value_mapping(int
profile
)- Description
Returns the value mapping for the given profile.
- Methodlist_db_profiles
array
(string
) list_db_profiles()- Description
Returns a list of available database profiles.
- Methodlist_query_profiles
array
(string
) list_query_profiles()- Description
Returns a list of available query profiles.
- Methodflush_profile
Class Search.Utils.ProfileEntry
- Description
A result entry from the
ProfileCache
.
- Methodcheck_timeout
bool
check_timeout()- Description
Checks if it is time to check if the profile values are to old.
- Methodcreate
Search.Utils.ProfileEntrySearch.Utils.ProfileEntry(
int
database_profile_id
,int
query_profile_id
,ProfileCache
cache
)- Parameter
cache
The parent cache object.
- Methodget_database
Search.Database.MySQL
get_database()- Description
Returns a cached search database for the current database profile.
- Methodget_database_value
mixed
get_database_value(string
index
)- Description
Returns the database profile value
index
.
- Methodget_query_value
mixed
get_query_value(string
index
)- Description
Returns the query profile value
index
.
- Methodget_ranking
Search.RankingProfile
get_ranking()- Description
Returns a cached ranking profile for the current database and query profile.
- Methodflush_profile
- Methoddo_query_and
Module Serializer
- Description
Serialization interface.
This module contains APIs to simplify serialization and deserialization of objects.
- See also
serialize()
,deserialize()
- Methoddeserialize
void
deserialize(object
o
,function
(function
(mixed
:void
),string
,type
:void
)deserializer
)- Description
Call
lfun::_deserialize()
ino
.- See also
serialize()
,lfun::_deserialize()
,Serializable()->_deserialize()
- Methodserialize
void
serialize(object
o
,function
(mixed
,string
,type
:void
)serializer
)- Description
Call
lfun::_serialize()
ino
.- See also
deserialize()
,lfun::_serialize()
,Serializable()->_serialize()
Class Serializer.Encodeable
- Description
Simple base for an object that can be serialized by encode_value. Also supports decoding.
Uses
Serializable
as it's base.Simply inherit this class in the classes you want to have encoded and decoded.
Note that it's not automatically recursive, objects assigned to variables in this object have to be Encodeable on their own for encode to work.
When decoding only variables that existed at the time the object was encoded are assigned, that is, if the class now has more variables they new variables will be set to 0.
- Method_decode
Serializer.Encodeabledecode_value(string(8bit)data)
- Description
Callback for decoding the object. Sets variables in the object from the values in the mapping.
Called automatically by
decode_value
, not normally called manually.
Class Serializer.Serializable
- Description
The base class for serializable objects.
Inherit this class in classes that need to be serializable.
- See also
Serializer.serialize()
,Serializer.deserialize()
- Method_deserialize
protected
void
_deserialize(object
o
,function
(function
(mixed
:void
),string
,type
:void
)deserializer
)- Description
Dispatch function for deserialization.
- Parameter
o
Object to serialize. Always a context of the current object.
- Parameter
deserializer
Function to typically be called once for every variable in the inheriting class.
This function calls
_deserialize_variable()
once for every variable in the inheriting class, which in turn will calldeserializer
with the arguments:- Argument 1
The setter for the variable.
- Argument 2
The name of the variable.
- Argument 3
The declared type of the variable.
- Note
The symbols will be listed in the order they were defined in the class.
- Note
This function is typically called via
Serializer.deserialize()
.- See also
Serializer.deserialize()
,_deserialize_variable()
,_serialize()
,Builtin.Setter
- Method_deserialize_variable
protected
void
_deserialize_variable(function
(function
(mixed
:void
),string
,type
:void
)deserializer
,function
(mixed
:void
)setter
,string
symbol
,type
symbol_type
)- Description
Default deserialization function for variables.
- Parameter
deserializer
Function to be called in turn.
- Parameter
setter
Function that sets the value of the variable.
- Parameter
symbol
Variable name.
- Parameter
symbol_type
Type of the variable.
This function is typically called from
_deserialize()
, and does something like:if(object_typep(symbol_type)){program p = program_from_type(symbol_type);if(p && !needs_parent(p) && is_deserializable(p)){object value = p(); setter(value);Serializer.deserialize(value, deserializer);return;}} deserializer(setter, symbol, symbol_type);
- Note
The above takes care of the most common cases, but
Does not support anonymous object types.
Does not support objects needing a parent.
Does not support non-serializable objects.
Selects one of the object types in case of a complex
symbol_type
. The selected type is NOT deterministic in case there are multiple choices that satisfy the above.Is likely to throw errors if p() requires arguments.
These issues can all be solved by overloading this function.
- See also
_deserialize()
,_serialize_variable()
,Builtin.Setter
- Method_serialize
protected
void
_serialize(object
o
,function
(mixed
,string
,type
:void
)serializer
)- Description
Dispatch function for serialization.
- Parameter
o
Object to serialize. Always a context of the current object.
- Parameter
serializer
Function to typically be called once for every variable in the inheriting class.
This function calls
_serialize_variable()
once for every variable in the inheriting class, which in turn will callserializer
with the arguments:- Argument 1
The value of the variable.
- Argument 2
The name of the variable.
- Argument 3
The declared type of the variable.
- Note
The symbols will be listed in the order they were defined in the class.
- Note
This function is typically called via
Serializer.serialize()
.- See also
Serializer.serialize()
,_serialize_variable()
,_deserialize()
- Method_serialize_variable
protected
void
_serialize_variable(function
(mixed
,string
,type
:void
)serializer
,mixed
value
,string
symbol
,type
symbol_type
)- Description
Default serialization function for variables.
- Parameter
serializer
Function to be called in turn.
- Parameter
value
Value of the variable.
- Parameter
symbol
Variable name.
- Parameter
symbol_type
Type of the variable.
This function is typically called from
_serialize()
, and just doesserializer(value, symbol, symbol_type);
It is provided for overloading for eg filtering or validation purposes.
- See also
_serialize()
,_deserialize_variable()
Module Shuffler
- Description
Module implementing sending to and from nonblocking streams and other sources.
Most useful when implementing sending of data from strings, files and other sources to a network connection. The module also supports generic bandwidth throttling.
Multiple
Shuffler
object can be created, each optionally with their own backend.This makes it easier to use more than one CPU for pure data transmission, just have multiple backends each in their own thread, with their own shuffle object.
- ConstantINITIAL
ConstantRUNNING
ConstantPAUSED
ConstantDONE
ConstantWRITE_ERROR
ConstantREAD_ERROR
ConstantUSER_ABORT constant
Shuffler.INITIAL
constant
Shuffler.RUNNING
constant
Shuffler.PAUSED
constant
Shuffler.DONE
constant
Shuffler.WRITE_ERROR
constant
Shuffler.READ_ERROR
constant
Shuffler.USER_ABORT
- Description
The state of an individual
Shuffle
object.
Class Shuffler.Shuffle
- Description
This class contains the state for one ongoing data shuffling operation. To create a
Shuffle
instance, use theShuffler()->shuffle
method.
- Variableshuffler
Shuffler
Shuffler.Shuffle.shuffler- Description
The
Shuffler
that owns thisShuffle
object
- Variablethrottler
Throttler
Shuffler.Shuffle.throttler- Description
The
Throttler
that is associated with thisShuffle
object, if any.
- Methodadd_source
void
add_source(mixed
source
,int
|void
start
,int
|void
length
)void
add_source(mixed
source
,function
(Shuffle
,int
:array
(string
)|zero
)wrap_cb
)void
add_source(array
source
)void
add_source(array
source
,function
(Shuffle
,int
:array
(string
)|zero
)wrap_cb
)- Description
Add a new source to the list of data sources. The data from the sources will be sent in order.
If start and length are not specified, the whole source will be sent, if start but not length is specified, the whole source, excluding the first
start
bytes will be sent.Currently supported sources
- int
An ordinary 8-bit wide byte.
- string
An ordinary 8-bit wide pike string.
- System.Memory
An initialized instance of the System.Memory class.
- Stdio.Buffer
A Stdio.Buffer object which will be called once with read_buffer() to acquire the data.
- Stdio.File
Stdio.File instance pointing to a normal file.
- Stdio.Stream
Stdio.File instance pointing to a stream of some kind (network socket, named pipe, stdin etc). Blocking or nonblocking.
- Stdio.NonblockingStream|Stdio.Stream
An object implementing the callback based reading (set_read_callback and set_close_callback).
- array
An array of any of the supported sources. Note that neither
start
norlength
can be specified then.
- Methodcreate
Shuffler.ShuffleShuffler.Shuffle(
object
fd
,object
shuffler
,mixed
throttler
,mixed
backend
,void
|int
start
,void
|int
length
)- Description
This object is normally not created directly, instead use
Shuffler()->shuffle
- Methodset_done_callback
void
set_done_callback(function
(Shuffle
,int
:void
)cb
)- Description
Sets the done callback. This function will be called when all sources have been processed, or if an error occurs.
- Methodset_request_arg
void
set_request_arg(mixed
arg
)- Description
Sets the extra argument sent to
Throttler()->request()
andThrottler()->give_back
.
- Methodset_throttler
void
set_throttler(Throttler
t
)- Description
Calling this function overrides the
Shuffler
global throttler.
- Methodstart
void
start(void
|int
autopause
,void
|int
freerun
)- Description
Start sending data from the sources.
- Parameter
autopause
If true, automatically pause the shuffler when all sources have been consumed. Everytime this happens, the
done_callback
will ben called.- Parameter
freerun
If true, do not attempt to coalesce output by using bulkmode.
- Methodstate
int
state()- Description
Returns the current state of the shuffler. This is one of the following:
INITIAL
,RUNNING
,PAUSED
,DONE
,WRITE_ERROR
,READ_ERROR
andUSER_ABORT
Class Shuffler.Shuffler
- Description
A data shuffler. An instance of this class handles a list of
Shuffle
objects. EachShuffle
object can send data from one or more sources to a destination in the background.
- Methodset_backend
void
set_backend(Pike.Backend
b
)- Description
Set the backend that will be used by all
Shuffle
objects created from this shuffler.
- Methodset_throttler
void
set_throttler(Throttler
t
)- Description
Set the throttler that will be used in all
Shuffle
objects created from this shuffler, unless overridden in theShuffle
objects.
- Methodshuffle
Shuffle
shuffle(Stdio.NonblockingStream
destination
,int
|void
start
,int
|void
length
)- Description
Create a new
Shuffle
object.The destination has to support nonblocking I/O through
set_nonblocking_keep_callbacks
andset_write_callback
member functions.- Note
For destinations that connect directly to a kernel-filedescriptor please note that the filedescriptor will be dup()ed for the duration of the shuffle. This means that if the original destination object is kept, we temporarily use two filedescriptors for it.
Class Shuffler.Throttler
- Note
This is an interface that all
Throttler
s must implement. It's not an actual class in this module.
- Methodgive_back
void
give_back(Shuffle
shuffle
,int
amount
)- Description
This function will be called by the
Shuffle
object to report that some data assigned to it by this throttler was unused, and can be given to anotherShuffle
object instead.
Module Standards
Class Standards.URI
- Description
This class implements URI parsing and resolving of relative references to absolute form, as defined in RFC 2396 and RFC 3986.
- Variableauthority
string
|zero
Standards.URI.authority- Description
Authority component of URI (formerly called net_loc, from RFC 2396 known as authority)
- Variablefragment
string
|zero
Standards.URI.fragment- Description
The fragment part of URI. May be 0 if not present.
- Variablehost
Variableuser
Variablepassword string
|zero
Standards.URI.hoststring
|zero
Standards.URI.userstring
|zero
Standards.URI.password- Description
Certain classes of URI (e.g. URL) may have these defined
- Variablepath
string
Standards.URI.path- Description
Path component of URI. May be empty, but not undefined.
- Variableport
int
Standards.URI.port- Description
If no port number is present in URI, but the scheme used has a default port number, this number is put here.
- Variablequery
string
|zero
Standards.URI.query- Description
Query component of URI. May be 0 if not present.
- Method`->=
Method`[]= Standards.URI()
->X =value
Standards.URI()
[property
] =value
- Description
Assign a new value to a property of URI
- Parameter
property
When any of the following properties are used, properties that depend on them are recalculated: user, password, host, port, authority, base_uri.
- Parameter
value
The value to assign to
property
- Method`==
int
res =Standards.URI()
==something
- Description
Compare this URI to something, in a canonical way.
- Parameter
something
Compare the URI to this
- Methodadd_query_variable
void
add_query_variable(string
name
,string
value
)- Description
Adds the provided query variable to the already existing ones. Will overwrite an existing variable with the same name.
- Methodadd_query_variables
void
add_query_variables(mapping
(string
:string
)vars
)- Description
Appends the provided set of query variables with the already existing ones. Will overwrite all existing variables with the same names.
- Methodcast
(
string
)Standards.URI()
(mapping
)Standards.URI()- Description
When cast to string, return the URI (in a canonicalized form). When cast to mapping, return a mapping with scheme, authority, user, password, host, port, path, query, fragment, raw_uri, base_uri as documented above.
- Methodcreate
Standards.URIStandards.URI(
URI
uri
)Standards.URIStandards.URI(
URI
uri
,URI
base_uri
)Standards.URIStandards.URI(
URI
uri
,string
base_uri
)Standards.URIStandards.URI(
string
uri
)Standards.URIStandards.URI(
string
uri
,URI
base_uri
)Standards.URIStandards.URI(
string
uri
,string
base_uri
)- Parameter
base_uri
When supplied, will root the URI a the given location. This is needed to correctly verify relative URIs, but may be left out otherwise. If left out, and uri is a relative URI, an error is thrown.
- Parameter
uri
When uri is another URI object, the created URI will inherit all properties of the supplied uri except, of course, for its base_uri.
- Throws
An exception is thrown if the
uri
is a relative URI or only a fragment, and missing abase_uri
.
- Methodget_http_path_query
string
get_http_path_query()- Description
Return the path and query part of the URI, coded according to RFC 1738.
- Methodget_http_query
string
|zero
get_http_query()- Description
Return the query part, coded according to RFC 1738, or zero.
- Methodget_path_query
string
get_path_query()- Description
Returns path and query part of the URI if present.
- Methodget_query_variables
mapping
(string
:string
) get_query_variables()- Description
Returns the query variables as a
mapping(string:string)
.
- Methodreparse_uri
void
reparse_uri()void
reparse_uri(URI
base_uri
)void
reparse_uri(string
base_uri
)- Description
Reparse the URI with respect to a new base URI. If no base_uri was supplied, the old base_uri is thrown away. The resolving is performed according to the guidelines outlined by RFC 2396, Uniform Resource Identifiers (URI): Generic Syntax.
- Parameter
base_uri
Set the new base URI to this.
- Throws
An exception is thrown if the
uri
is a relative URI or only a fragment, and missing abase_uri
.
Module Standards.ASN1
- Methoddecode_der_oid
string
decode_der_oid(string
der_oid
)- Description
Convenience function to convert a DER/BER encoded oid (object identifier) to the human readable dotted-decimal form.
- See also
encode_der_oid
- Methodencode_der_oid
string
encode_der_oid(string
dotted_decimal
)- Description
Convenience function to convert an oid (object identifier) on dotted-decimal form (e.g.
"1.3.6.1.4.1.1466.115.121.1.38"
) to its DER (and hence also BER) encoded form.- See also
decode_der_oid
Module Standards.ASN1.Decode
- Description
Decodes a DER object.
- Methodder_decode
.Types.Object
der_decode(Stdio.Buffer
data
,mapping
(int
:program
)types
,void
|bool
secure
)- Parameter
data
An instance of Stdio.Buffer containing the DER encoded data.
- Parameter
types
A mapping from combined tag numbers to classes from or derived from
Standards.ASN1.Types
. Combined tag numbers may be generated usingStandards.ASN1.Types.make_combined_tag
.- Parameter
secure
Will fail if the encoded ASN.1 isn't in its canonical encoding.
- Returns
An object from
Standards.ASN1.Types
or, eitherStandards.ASN1.Decode.Primitive
orStandards.ASN1.Decode.constructed
, if the type is unknown. Throws an exception if the data could not be decoded.- FIXME
Handling of implicit and explicit ASN.1 tagging, as well as other context dependence, is next to non_existant.
- Methodsecure_der_decode
.Types.Object
|zero
secure_der_decode(string(8bit)
data
,mapping
(int
:program
)|void
types
)- Description
Works just like
simple_der_decode
, except it will return0
on errors, including if there is leading or trailing data in the provided ASN.1data
.- See also
simple_der_decode
- Methodsimple_der_decode
.Types.Object
simple_der_decode(string(8bit)
data
,mapping
(int
:program
)|void
types
)- Description
decode a DER encoded object using universal data types
- Parameter
data
a DER encoded object
- Parameter
types
An optional set of application-specific types. Should map combined tag numbers to classes from or derived from
Standards.ASN1.Types
. Combined tag numbers may be generated usingStandards.ASN1.Types.make_combined_tag
. This set is used to extenduniversal_types
.- Returns
an object from
Standards.ASN1.Types
or eitherStandards.ASN1.Decode.Primitive
orStandards.ASN1.Decode.Constructed
if the type is unknown.
Class Standards.ASN1.Decode.Constructed
- Description
Constructed type
- Variablecls
Variabletag
Variableraw
Variableelements int
Standards.ASN1.Decode.Constructed.clsint
Standards.ASN1.Decode.Constructed.tagstring(8bit)
Standards.ASN1.Decode.Constructed.rawarray
(.Types.Object
) Standards.ASN1.Decode.Constructed.elements
- Method__create__
protected
local
void
__create__(int
cls
,int
tag
,string(8bit)
raw
,array
(.Types.Object
)elements
)
- Methodcreate
Standards.ASN1.Decode.ConstructedStandards.ASN1.Decode.Constructed(
int
cls
,int
tag
,string(8bit)
raw
,array
(.Types.Object
)elements
)
Class Standards.ASN1.Decode.Primitive
- Description
Primitive unconstructed ASN1 data type.
- Variablecls
Variabletag
Variableraw int
Standards.ASN1.Decode.Primitive.clsint
Standards.ASN1.Decode.Primitive.tagstring(8bit)
Standards.ASN1.Decode.Primitive.raw
- Methodcreate
Standards.ASN1.Decode.PrimitiveStandards.ASN1.Decode.Primitive(
int
cls
,int
tag
,string(8bit)
raw
)
Module Standards.ASN1.Types
- Description
Encodes various asn.1 objects according to the Distinguished Encoding Rules (DER)
- VariableTaggedType0
VariableTaggedType1
VariableTaggedType2
VariableTaggedType3 MetaExplicit
Standards.ASN1.Types.TaggedType0MetaExplicit
Standards.ASN1.Types.TaggedType1MetaExplicit
Standards.ASN1.Types.TaggedType2MetaExplicit
Standards.ASN1.Types.TaggedType3- Description
Some common explicit tags for convenience.
These are typically used to indicate which of several optional fields are present.
- Example
ECPrivateKey ::= SEQUENCE { version INTEGER { ecPrivkeyVer1(1)}(ecPrivkeyVer1), privateKey OCTET STRING, parameters [0] ECParameters {{ NamedCurve }} OPTIONAL, publicKey [1] BIT STRING OPTIONAL }
The presence of the fields parameters and publicKey above are indicated with
TaggedType0
andTaggedType1
respectively.
- Methodasn1_printable_valid
bool
asn1_printable_valid(string
s
)- Description
Checks if a Pike string can be encoded as a
PrintableString
.
- Methodasn1_utf8_valid
int(1)
asn1_utf8_valid(string
s
)- Description
Checks if a Pike string can be encoded with UTF8. That is always the case...
- Methodextract_cls
int(2bit)
extract_cls(int(0..)
i
)- Description
Extract ASN1 type class from a combined tag.
- See also
make_combined_tag
- Methodextract_tag
int(0..)
extract_tag(int(0..)
i
)- Description
Extract ASN1 type tag from a combined tag.
- See also
make_combined_tag
- Methodmake_combined_tag
int(0..)
make_combined_tag(int(2bit)
cls
,int(0..)
tag
)- Description
Combines tag and class to a single integer, for internal uses.
- Parameter
cls
ASN1 type class.
- Parameter
tag
ASN1 type tag.
- Returns
The combined tag.
- See also
extract_tag
,extract_cls
Class Standards.ASN1.Types.BMPString
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
BMP String object
Character set: ISO/IEC 10646-1 (compatible with Unicode). Fixed width encoding with 2 octets per character.
FIXME: The encoding is very likely UCS-2, but that's not yet verified.
Class Standards.ASN1.Types.BitString
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
Bit string object
- Methodset_from_ascii
this_program
set_from_ascii(string(8bit)
s
)- Description
Set the bitstring value as a string with
"1"
and"0"
.
Class Standards.ASN1.Types.Boolean
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
boolean object
Class Standards.ASN1.Types.BrokenTeletexString
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
(broken) TeletexString object
Encodes and decodes latin1, but labels it TeletexString, as is common in many broken programs (e.g. Netscape 4.0X).
Class Standards.ASN1.Types.Compound
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
Compound object primitive
Class Standards.ASN1.Types.Enumerated
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
Enumerated object
Class Standards.ASN1.Types.GeneralizedTime
- Annotations
@
Pike.Annotations.Implements
(UTC
)
Class Standards.ASN1.Types.IA5String
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
IA5 String object
Character set: ASCII. Fixed width encoding with 1 octet per character.
Class Standards.ASN1.Types.Identifier
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
Object identifier object
Class Standards.ASN1.Types.Integer
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
Integer object All integers are represented as bignums, for simplicity
Class Standards.ASN1.Types.MetaExplicit
- Description
Meta-instances handle a particular explicit tag and set of types. Once cloned this object works as a factory for Compound objects with the cls and tag that the meta object was initialized with.
- Example
MetaExplicit m = MetaExplicit(1,2); Compound c = m(Integer(3));
Class Standards.ASN1.Types.Null
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
Null object
Class Standards.ASN1.Types.Object
- Description
Generic, abstract base class for ASN1 data types.
- Constantconstructed
constant
int
Standards.ASN1.Types.Object.constructed
- Description
Flag indicating whether this type is a constructed (aka
Compound
) type or not.
- Methodget_cls
int(2bit)
get_cls()- Description
Get the class of this object.
- Returns
The class of this object.
- Methodget_combined_tag
int(0..)
get_combined_tag()- Description
Get the combined tag (tag + class) for this object.
- Returns
the combined tag header
- Methodget_der
string(8bit)
get_der()- Description
Get the DER encoded version of this object.
- Returns
DER encoded representation of this object.
Class Standards.ASN1.Types.OctetString
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
Octet string object
Class Standards.ASN1.Types.PrintableString
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
PrintableString object
Class Standards.ASN1.Types.Real
- Annotations
@
Pike.Annotations.Implements
(Object
)
Class Standards.ASN1.Types.Sequence
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
Sequence object
Class Standards.ASN1.Types.Set
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
Set object
Class Standards.ASN1.Types.String
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
string object primitive
Class Standards.ASN1.Types.UTC
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
UTCTime
Class Standards.ASN1.Types.UTF8String
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
UTF8 string object
Character set: ISO/IEC 10646-1 (compatible with Unicode).
Variable width encoding, see RFC 2279.
Class Standards.ASN1.Types.UniversalString
- Annotations
@
Pike.Annotations.Implements
(Object
)- Description
Universal String object
Character set: ISO/IEC 10646-1 (compatible with Unicode). Fixed width encoding with 4 octets per character.
- FIXME
The encoding is very likely UCS-4, but that's not yet verified.
- Methoddecode_der_oid
Module Standards.BSON
- Description
Tools for handling the BSON structured data format. See http://www.bsonspec.org/.
- Methoddecode
mixed
decode(string
bson
)- Description
Decode a BSON formatted document string into a native Pike data structure.
- Methoddecode_array
array
decode_array(string
bsonarray
)- Description
Decode a BSON formatted string containing multiple data structures
- Methodencode
string
encode(array
|mapping
m
,int
|void
query_mode
)- Description
Encode a data structure as a BSON document.
- Parameter
query_mode
if set to true, encoding will allow "$" and "." in key names, which would normally be disallowed.
Class Standards.BSON.Binary
Class Standards.BSON.Javascript
Class Standards.BSON.ObjectId
Class Standards.BSON.Regex
Module Standards.EXIF
- Description
This module implements EXIF (Exchangeable image file format for Digital Still Cameras) 2.2 parsing.
- Methodget_properties
mapping
(string
:mixed
) get_properties(Stdio.BlockFile
file
,void
|mapping
tags
)- Description
Parses and returns all EXIF properties.
- Parameter
file
A JFIF file positioned at the start.
- Parameter
tags
An optional list of tags to process. If given, all unknown tags will be ignored.
- Returns
A mapping with all found EXIF properties.
Module Standards.FIPS10_4
- Description
This module implements the FIPS10-4 standard for short-form codes of "Countries, Dependencies, Areas of Special Sovereignty, and Their Principal Administrative Divisions."
This is a list of two-letter country codes used by the US government until 2008-10-02, when GENC, based on ISO 3166 replaced it as the prefered standard. The subdivisions are named using the main region name followed by two digits.
This list is similar to, but not entirely compatible with, ISO-3166 alpha-2.
- Methoddivision_code_to_line
array
(string
) division_code_to_line(string
code
)- Description
Convert a division code to the information about the division. As an example division_code_to_line("sw16") would return
({"SW","SW16","Ostergotlands Lan","province/lan"})
- Returns
Array string
region
string
division
string
name
string
type
- Methoddivision_code_to_name
string
division_code_to_name(string
code
)- Description
Similar to
division_code_to_line()
, but only returns the name
- Methoddivision_guess_to_codes
array
(string
) division_guess_to_codes(string
code
)- Description
Return an array of possible division codes given a division name.
- Returns
Array array
(string
)regions
Array string
region
string
division
string
name
string
type
- Methoddivision_guess_to_lines
array
(array
(string
)) division_guess_to_lines(string
name
)- Description
Return an array of possible divisions given a division name.
- Returns
Array array
(string
)regions
Array string
region
string
division
string
name
string
type
- Methoddivision_name_to_line
Methoddivision_name_to_code array
(string
) division_name_to_line(string
name
)string
division_name_to_code(string
code
)- Description
Lookup a division by name.
These aren't really all that useful, since there might very well be multiple divisions with the same name.
division_guess_to_lines()
anddivision_guess_to_codes()
are more useful.
- Methodregion_code_to_name
string
region_code_to_name(string
code
)- Description
Convert a region (country etc) code to the name of the region. As an example, region_code_to_name("se") would return "SEYCHELLES".
- Methodregion_name_to_code
string
region_name_to_code(string
code
)- Description
The reverse of
region_code_to_name()
, region_name_to_code("Sweden") would return "SW".
- Methodregion_to_division_codes
array
(string
) region_to_division_codes(string
region
)- Description
Given a region (country etc) return all divisions codes in that region
Module Standards.ID3
- Description
ID3 decoder/encoder. Supports versions 1.0, 1.1, 2.2-2.4. For more info see http://www.id3.org
- Note
Note that this implementation is far from complete and that interface changes might be necessary during the implementation of the full standard.
- Methoddecode_string
string
decode_string(string
in
,int
type
)- Description
Decodes the string
in
from thetype
, according to ID3v2.4.0-structure section 4, into a wide string.- See also
encode_string
- Methodencode_string
array
(string
|int
) encode_string(string
in
)- Description
Encodes the string
in
to an int-string pair, where the integer is the encoding mode, according to ID3v2.4.0-structure, and the string is the encoded string. This function tries to minimize the size of the encoded string by selecting the most apropriate encoding method.- See also
decode_string
,encode_strings
- Methodencode_strings
array
(string
|int
) encode_strings(array
(string
)in
)- Description
Encodes several strings in the same way as
encode_string
, but encodes all the strings with the same method, selected as inencode_string
. The first element in the resulting array is the selected method, while the following elements are the encoded strings.- See also
decode_string
,encode_string
- Methodint_to_synchsafe
array
(int
) int_to_synchsafe(int
in
,void
|int
no_bytes
)- Description
Encodes a integer to a synchsafe integer according to ID3v2.4.0-structure section 6.2.
- See also
synchsafe_to_int
- Methodresynchronise
string
resynchronise(string
in
)- Description
Reverses the effects of unsyncronisation done according to ID3v2.4.0-structure section 6.1.
- See also
unsynchronise
- Methodsynchsafe_to_int
int
synchsafe_to_int(array
(int
)bytes
)- Description
Decodes a synchsafe integer, generated according to ID3v2.4.0-structure section 6.2.
- See also
int_to_synchsafe
- Methodunsynchronise
string
unsynchronise(string
in
)- Description
Unsynchronises the string according to ID3v2.4.0-structure section 6.1.
- See also
resynchronise
Class Standards.ID3.Buffer
- Description
A wrapper around a
Stdio.File
object that provides a read limit capability.
- Methodbytes_left
int
bytes_left()- Description
The number of bytes left before reaching the limit set by
set_limit
.
- Methodpeek
string
peek()- Description
Preview the next byte. Technically it is read from the encapsulated buffer and put locally to avoid seeking.
- Methodread
string
read(int
bytes
)- Description
Read
bytes
bytes from the buffer. Throw an exception ifbytes
is bigger than the number of bytes left in the buffer before reaching the limit set byset_limit
.
Class Standards.ID3.ExtendedHeader
Class Standards.ID3.Frame
- Description
Manages the common frame information.
Class Standards.ID3.FrameData
- Description
Abstract class for frame data.
Class Standards.ID3.Tag
- Description
This is a ID3 tag super object, which encapsulates all versions ID3 tags. This is useful if you are only interested in the metadata of a file, and care not about how it is stored or have no interest in changing the data.
- Note
Version 1 tag is searched only if version 2 isn't found.
- See also
Tagv2
,Tagv1
- Constantversion
constant
Standards.ID3.Tag.version
- Description
The version of the encapsulated tag in the form
"%d.%d.%d"
.
- Method_indices
array
indices(Standards.ID3.Tagarg)- Description
Indices will return the indices of the tag object.
- Method_values
array
values(Standards.ID3.Tagarg)- Description
Values will return the values of the tag object.
- Method`[]
Method`-> mixed
res =Standards.ID3.Tag()
[index
]mixed
res =Standards.ID3.Tag()
->X- Description
The index operators are overloaded to index the encapsulated Tagv1 or Tagv2 object.
- Methodcreate
Standards.ID3.TagStandards.ID3.Tag(
Stdio.File
fd
)- Description
The file object
fd
is searched for version 2 tags, and if not found, version 1 tags.- Throws
If no tag was found in the file an error is thrown.
- Methodfriendly_values
mapping
(string
:string
) friendly_values()- Description
Returns tag values in a mapping. Only tag values that exists in ID3v1.1 is used. Nonexisting or undefined values will not appear in the mapping.
"artist"
:string
Takes its value from TPE1 or TP1 frames.
"album"
:string
Takes its value from TALB or TAL frames.
"title"
:string
Takes its value from TIT2 or TT2 frames.
"genre"
:string
Takes its value from TCON or TCM frames.
"year"
:string
Takes its value from TYER or TYE frames.
"track"
:string
Takes its value from TRCK or TRK frames. The string may be either in the
"%d"
form or in the"%d/%d"
form.
Class Standards.ID3.TagHeader
- Description
Represents an ID3v2 header.
- Methoddecode
void
decode(Buffer
buffer
)- Description
Decode a tag header from
buffer
and store its data in this object.
Class Standards.ID3.Tagv1
- Description
ID3 version 1.0 or 1.1 tag. This is really a clumsy way of reading ID3v1 tags, but it has the same interface as the v2 reader.
Module Standards.IDNA
- Description
This module implements various algorithms specified by the Internationalizing Domain Names in Applications (IDNA) memo by the Internet Engineering Task Force (IETF), see RFC 3490.
- VariablePunycode
object
Standards.IDNA.Punycode- Description
Punycode transcoder, see RFC 3492. Punycode is used by
to_ascii
as an "ASCII Compatible Encoding" when needed.
- Methodnameprep
string
nameprep(string
s
,bool
|void
allow_unassigned
)- Description
Prepare a Unicode string for ACE transcoding. Used by
to_ascii
. Nameprep is a profile of Stringprep, which is described in RFC 3454.- Parameter
s
The string to prep.
- Parameter
allow_unassigned
Set this flag the the string to transform is a "query string", and not a "stored string". See RFC 3454.
- Methodto_ascii
string(7bit)
to_ascii(string
s
,bool
|void
allow_unassigned
,bool
|void
use_std3_ascii_rules
)- Description
The to_ascii operation takes a sequence of Unicode code points that make up one label and transforms it into a sequence of code points in the ASCII range (0..7F). If to_ascci succeeds, the original sequence and the resulting sequence are equivalent labels.
- Parameter
s
The sequence of Unicode code points to transform.
- Parameter
allow_unassigned
Set this flag if the the string to transform is a "query string", and not a "stored string". See RFC 3454.
- Parameter
use_std3_ascii_rules
Set this flag to enforce the restrictions on ASCII characters in host names imposed by STD3.
- Methodto_unicode
string
to_unicode(string
s
)- Description
The to_unicode operation takes a sequence of Unicode code points that make up one label and returns a sequence of Unicode code points. If the input sequence is a label in ACE form, then the result is an equivalent internationalized label that is not in ACE form, otherwise the original sequence is returned unaltered.
- Parameter
s
The sequence of Unicode code points to transform.
- Methodzone_to_ascii
string(7bit)
zone_to_ascii(string
s
,bool
|void
allow_unassigned
,bool
|void
use_std3_ascii_rules
)- Description
Takes a sequence of labels separated by '.' and applies
to_ascii
on each.
Module Standards.IIM
- Description
IPTC Information Interchange Model data (aka "IPTC header") extraction.
- Methodget_information
mapping
(string(7bit)
:array
(string
)) get_information(Stdio.InputStream
fd
)- Description
Get IPTC information from an open file.
Supported embedding formats are:
PhotoShop Document (aka PSD).
Postscript and Embedded Postscript.
Joint Picture Experts Group (aka JPEG).
- Returns
Returns a mapping containing any found IPTC IIM data.
Module Standards.ISO639_2
- Methodconvert_b_to_t
string
|zero
convert_b_to_t(string
code
)- Description
Converts an ISO 639-2/B code to an ISO 639-2/T code.
- Methodconvert_t_to_b
string
|zero
convert_t_to_b(string
code
)- Description
Converts an ISO 639-2/T code to an ISO 639-2/B code.
- Methodget_language
string
get_language(string
code
)- Description
Look up the language name given an ISO 639-2 code in lower case. It will first be looked up in the ISO 639-2/T table and then in ISO 639-2/B if the first lookup failed. Returns zero typed zero on failure.
- Methodget_language_b
string
get_language_b(string
code
)- Description
Look up the language name given an ISO 639-2/B code in lower case. Returns zero typed zero on failure.
- Methodget_language_t
string
get_language_t(string
code
)- Description
Look up the language name given an ISO 639-2/T code in lower case. Returns zero typed zero on failure.
- Methodlist_639_1
mapping
(string
:string
) list_639_1()- Description
Return a mapping from ISO 639-1 code to ISO 639-2/T code.
- Methodlist_languages
mapping
(string
:string
) list_languages()- Description
Return a mapping from ISO 639-2/T + ISO 639-2/B codes to language names.
- Methodlist_languages_b
mapping
(string
:string
) list_languages_b()- Description
Return a mapping from ISO 639-2/B codes to language names.
- Methodlist_languages_t
mapping
(string
:string
) list_languages_t()- Description
Return a mapping from ISO 639-2/T codes to language names.
- Methodmap_639_1
string
map_639_1(string
code
)- Description
Look up the ISO 639-2/T code given an ISO 639-1 code in lower case.
- Methodconvert_b_to_t
Module Standards.JSON
- Description
Tools for handling the JSON structured data format. See http://www.json.org/ and RFC 4627.
- ConstantASCII_ONLY
ConstantHUMAN_READABLE
ConstantPIKE_CANONICAL
ConstantCANONICAL constant
Standards.JSON.ASCII_ONLY
constant
Standards.JSON.HUMAN_READABLE
constant
Standards.JSON.PIKE_CANONICAL
constant
Standards.JSON.CANONICAL
- Description
Bit field flags for use with
encode
:- Standards.JSON.ASCII_ONLY
Use
\uxxxx
escapes for all non-ascii characters and DEL (U+007f). The default is to escape only the characters that must be escaped. The flag value is 1.Characters above U+FFFF are encoded using escaped surrogate pairs, as per RFC 4627.
- Standards.JSON.HUMAN_READABLE
Pretty print with indentation to make the result easier on human eyes. The default is to use no extra whitespace at all. The flag value is 2.
- Standards.JSON.PIKE_CANONICAL
Make the output canonical, so that the same value always generates the same char-by-char equal string. In practice this means that mapping elements are sorted on their indices. Note that the other flags take precedence, so e.g. the canonical form with
HUMAN_READABLE
is not the same as the canonical form without it. The flag value is 4.This canonical form is stable for the
encode
function, providing floats aren't used (their formatting is currently affected by float size and libc formatting code). In the future there may be a standardized canonical form which quite likely will be different from this one. In that case a separate flag has to be added so this one doesn't change - hence the namePIKE_CANONICAL
. See alsoCANONICAL
below.- Standards.JSON.CANONICAL
Make the output canonical as per RFC 8785, so that the same value always generates the same char-by-char equal string. The flag value is 8.
Note that RFC 8785-compliant output will only be generated if this is the only flag that has been set and no indentation has been requested, and
Pike.get_runtime_info()->float_size == 64
. In other cases a best effort attempt to comply with RFC 8785 will be performed, but deviations may occur.
- ConstantNO_OBJECTS
constant
Standards.JSON.NO_OBJECTS
- Description
Bit field flags for use with
decode
:- Standards.JSON.NO_OBJECTS
Do not decode
"true"
,"false"
and"null"
intoVal.true
,Val.false
andVal.null
, but instead1
,0
andUNDEFINED
.
- Variabletrue
Variablefalse
Variablenull Val.True
Standards.JSON.trueVal.False
Standards.JSON.falseVal.Null
Standards.JSON.null- Description
Compat aliases for the corresponding
Val
objects. These are used to represent the three JSON literalstrue
,false
andnull
.- Deprecated
Replaced by
Val.true
,Val.false
andVal.null
.
- Methoddecode
array
|mapping
|string
|float
|int
|object
decode(string
s
,void
|int
flags
)- Description
Decodes a JSON string.
- Parameter
flags
The flag
NO_OBJECTS
can be used to output1
,0
andUNDEFINED
instead ofVal.true
,Val.false
andVal.null
.- Throws
Throws an exception in case the data contained in
s
is not valid JSON.
- Methoddecode_utf8
array
|mapping
|string
|float
|int
|object
decode_utf8(string
s
)- Description
Decodes an utf8 encoded JSON string. Should give the same result as
Standards.JSON.decode(utf8_to_string(s))
.- Throws
Throws an exception in case the data contained in
s
is not valid JSON.
- Methodencode
string
encode(int
|float
|string
|array
|mapping
|object
val
,void
|int
flags
,void
|function
(:void
)|object
|program
|string
callback
)- Description
Encodes a value to a JSON string.
- Parameter
val
The value to encode. It can contain integers, floats (except the special numbers NaN and infinity), strings, arrays, mappings with string indices, and the special object values
null
,true
andfalse
defined in this module (or really any object that implements anencode_json
callback or is handled by the supplied callback argument).- Parameter
flags
Flag bit field to control formatting. See
ASCII_ONLY
,HUMAN_READABLE
andPIKE_CANONICAL
for further details.- Parameter
callback
A function that will be called for types that can not be encoded otherwise. It will be called with the value to be encoded as the first argument, and optionally with flags and indent arguments. If a string is supplied, it will be used to replace the value verbatim. The callback must return a string or throw an error.
- Note
8-bit and wider characters in input strings are neither escaped nor utf-8 encoded by default.
string_to_utf8
can be used safely on the returned string to get a valid transport encoded JSON string. Seeescape_string
for further details on string escaping.- See also
escape_string
- Methodescape_string
string
escape_string(string
str
,void
|int
flags
)- Description
Escapes string data for use in a JSON string.
8-bit and wider characters in input strings are neither escaped nor utf-8 encoded by default.
string_to_utf8
can be used safely on the returned string to get a valid transport encoded JSON string.The characters U+2028 (LINE SEPARATOR) and U+2029 (PARAGRAPH SEPARATOR) are exceptions - they are encoded with \u escapes for compatibility. The reason is that those characters are not allowed in Javascript strings, so JSON parsers built in Javascript may have trouble with them otherwise.
- Parameter
val
The string to escape.
- Parameter
flags
Flag bit field to control formatting.
ASCII_ONLY
is the only flag that has any effect for this function.- Note
The difference between using this function and
encode
on a string is thatencode
returns quotations marks around the result.- See also
encode
- Methodvalidate
int
validate(string
s
)- Description
Checks if a string is valid JSON.
- Returns
In case the string contains valid JSON
-1
is returned. It is then guaranteed to be parsed without errors bydecode()
. In case the string is not valid JSON, the error position is returned.
- Methodvalidate_utf8
int
validate_utf8(string
s
)- Description
Checks if a string is valid utf8 encoded JSON.
- Returns
In case the string contains valid JSON
-1
is returned. It is then guaranteed to be parsed without errors bydecode()
. In case the string is not valid JSON, the integer position inside the string where the error occurs is returned.
Class Standards.JSON.DecodeError
- Description
Error thrown when JSON decode fails.
Class Standards.JSON.Validator
- Description
An instance of this class can be used to validate a JSON object against a JSON schema.
- Example
string schema_s = "{\n" + " \"name\": \"SomeExample\",\n" + " \"type\": \"object\",\n" + " \"properties\": {\n" + " \"name\": { \"type\": \"string\" },\n" + " \"id\": {\n" + " \"type\": \"integer\",\n" + " \"minimum\": 0\n" + " }\n" + " }\n" + "}"; string example_s = "{\n" + " \"name\": \"An Example\",\n" + " \"id\": 17\n" + "}"; mixed schema =
Standards.JSON.decode
(schema_s); mixed example =Standards.JSON.decode
(example_s); if (string error =Standards.JSON.Validator(schema).validate
(example)) werror("Error: JSON string %O did not validate: %s\n", example_s, error); else write("JSON ok\n");- Note
This class validates only a subset of the JSON schema specification. Currently dependencies and references are not handled and regular expressions (for pattern properties) are limited to those that can be handled by
Regexp.SimpleRegexp
.For more information of JSON schema look at http://json-schema.org/documentation.html "The home of JSON Schema".
- Methodcreate
Standards.JSON.ValidatorStandards.JSON.Validator(
mixed
_schema
)- Description
Create a JSON validator for some JSON schema.
- Parameter
_schema
The JSON schema to use in
validate()
. This must be a valid JSON object.- Throws
Throws an error if the schema is invalid.
- Methodhas_schema_array
private
bool
has_schema_array(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is an array.
- Throws
Throws an error if the value of the property is no array.
- Returns
1 if the schema has the specified property.
- Methodhas_schema_array_mapping
private
bool
has_schema_array_mapping(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is an array(mapping).
- Throws
Throws an error if the value of the property is no array(mapping).
- Returns
1 if the schema has the specified property.
- Methodhas_schema_array_string
private
bool
has_schema_array_string(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is an array(string).
- Throws
Throws an error if the value of the property is no array(string).
- Returns
1 if the schema has the specified property.
- Methodhas_schema_boolean
private
bool
has_schema_boolean(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is a boolean (with values
Standards.JSON.true
orStandards.JSON.false
).- Throws
Throws an error if the value of the property is no boolean.
- Returns
1 if the schema has the specified property.
- Methodhas_schema_integer
private
bool
has_schema_integer(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is an integer.
- Throws
Throws an error if the value of the property is no integer.
- Returns
1 if the schema has the specified property.
- Methodhas_schema_mapping
private
bool
has_schema_mapping(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is a mapping.
- Throws
Throws an error if the value of the property is no mapping.
- Returns
1 if the schema has the specified property.
- Methodhas_schema_mapping_mapping
private
bool
has_schema_mapping_mapping(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is a mapping(string:mapping).
- Throws
Throws an error if the value of the property is no mapping(string:mapping).
- Returns
1 if the schema has the specified property.
- Methodhas_schema_number
private
bool
has_schema_number(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is a number (integer or float).
- Throws
Throws an error if the value of the property is no number.
- Returns
1 if the schema has the specified property.
- Methodhas_schema_string
private
bool
has_schema_string(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is a string.
- Throws
Throws an error if the value of the property is no string.
- Returns
1 if the schema has the specified property.
- Methodis_JSON_boolean
private
bool
is_JSON_boolean(mixed
value
)- Returns
1 if the specified value is either
Standards.JSON.true
orStandards.JSON.false
.
- Methodvalidate
string
|zero
validate(mixed
json
)- Description
This function validates a JSON object against the JSON schema that was specified in the Validator's constructor. If the JSON object is not valid, a string with an error-message is returned. If the JSON object is valid, 0 is returned.
- Parameter
json
The JSON object to validate.
- Returns
0, if the json object is valid, and an error-message if it is not valid.
- Methodvalidate_array
private
string
|zero
validate_array(string
key
,mixed
value
,mapping
(string
:mixed
)schema
)- Description
Verify that the specified value is an array according to the specified schema. The following properties of schema are verified:
- minItems
If schema has the property "minItems", then the array must have at least the specified number of items.
- maxItems
If schema has the property "maxItems", then the array must not have more than the specified number of items.
- items
If schema has the property "items", which is an array of schema objects, then each element in the value array must be valid according the corresponding schema in the "items" array.
- Methodvalidate_integer
private
string
|zero
validate_integer(string
key
,mixed
value
,mapping
(string
:mixed
)schema
)- Description
Verify that the specified value is an integer according to the specified schema. This is the similar to
validate_number()
, but the value must be an int and not a float. The following properties of schema are verified:- minimum
If the schema has the property "minimum", then the value must be greater than or equal to the specified minimum.
- exclusiveMinimum
If the schema has the properties "minimum" and "exclusiveMinimum" is
Standards.JSON.true
, then the value must be greater than the specified minimum.- maximum
If the schema has the property "maximum", then the value must be lower than or equal to the specified maximum.
- exclusiveMaximum
If the schema has the properties "maximum" and "exclusiveMaximum" is
Standards.JSON.true
, then the value must be lower than the specified minimum.- multipleOf
If schema has the property "multipleOf", then the value must be an integer multiple of the specified multpleOf.
- Methodvalidate_item_type
private
string
|zero
validate_item_type(string
key
,mixed
value
,mapping
schema
)- Description
Verify that the specified value has the correct type that is defined by schema->type. schema->type can be any of
"boolean",
"integer",
"number",
"string",
"array",
"object",
"null",
or an array of these.
- Methodvalidate_number
private
string
|zero
validate_number(string
key
,mixed
value
,mapping
(string
:mixed
)schema
)- Description
Verify that the specified value is a number (integer or float) according to the specified schema. The following properties of schema are verified:
- minimum
If the schema has the property "minimum", then the value must be greater than or equal to the specified minimum.
- exclusiveMinimum
If the schema has the properties "minimum" and "exclusiveMinimum" is
Standards.JSON.true
, then the value must be greater than the specified minimum.- maximum
If the schema has the property "maximum", then the value must be lower than or equal to the specified maximum.
- exclusiveMaximum
If the schema has the properties "maximum" and "exclusiveMaximum" is
Standards.JSON.true
, then the value must be lower than the specified minimum.- multipleOf
If schema has the property "multipleOf", then the value must be an integer multiple of the specified multpleOf.
- Methodvalidate_object
private
string
|zero
validate_object(string
key
,mixed
value
,mapping
(string
:mixed
)schema
)- Description
Verify that the specified value is an object according to the specified schema. The following properties of schema are verified:
- minProperties
If schema has the property "minProperties", then the object must have at least the specified number of properties.
- maxProperties
If schema has the property "maxProperties", then the object must not have more than the specified number of items.
- required
If schema has the property "required", which is an array of strings, then the object must have all properties that are listed in the specified array.
- properties
If schema has the property "properties", which is a mapping of property-name to a schema, then each property of the object that has a corresponding schema in "properties" must be valid according to that schema.
- patternProperties
If schema has the property "properties", which is a mapping of property-name-pattern to a schema, then each property of the object must be valid according to all schema objects for which the pattern matches the property-name.
- additionalProperties
If schema has the property "additionalProperties", it can be either a boolean value, or a schema.
If it is a boolean with value
Standards.JSON.false
, then all properties of the object must be validated either by a schema from "properties" or "patternProperties".If it is a boolean with value
Standards.JSON.true
, then the object is allowed to have additional properties without validation.If it is a schema, then any propery of the object that is not validated by a schema from "properties" or "patternProperties" must be validated by the specified schema.
- Note
TODO: We use
Regexp.SimpleRegexp
to handle schema->patternProperties, but that covers only some part of the possible regular expressions.
- Methodvalidate_properties
private
string
|zero
validate_properties(string
key
,mixed
value
,mapping
schema
)- Description
Verify that the specified value matches the specified schema. The following properties of schema are verified:
- type
If the schema has a property "type", then the value must match the specified type (see
validate_item_type()
).- allOf
If the schema has a property "allOf", which is an array of schema objects, then the value must match each schema specified in that array (via another call to
validate_properties()
).- anyOf
If the schema has a property "anyOf", which is an array of schema objects, then the value must match at least one schema specified in that array (via another call to
validate_properties()
).- oneOf
If the schema has a property "oneOf", which is an array of schema objects, then the value must match exactly one schema specified in that array (via another call to
validate_properties()
).- not
If the schema has a property "not", then the value must not match the schema specified by that property (via another call to
validate_properties()
).- enum
If the schema has a property "enum", then the value must be equal to any of the values specified in the enum array.
- Note
If the schema is empty (i.e., it has none of the above specified properties, then the value is valid).
- Methodvalidate_string
private
string
|zero
validate_string(string
key
,mixed
value
,mapping
(string
:mixed
)schema
)- Description
Verify that the specified value is a string according to the specified schema. The following properties of schema are verified:
- minLength
If schema has the property "minLength", then the value must not be shorter than the specified length.
- maxLength
If schema has the property "maxLength", then the value must not be longer than the specified length.
- pattern
If schema has the property "pattern", then the value must match the specified pattern.
- Note
TODO: We use
Regexp.SimpleRegexp
to handle schema->pattern, but that covers only some part of the possible regular expressions.
Module Standards.JSON5
- Description
Tools for handling the JSON5 structured data format. See http://www.json5.org/ and RFC 4627.
- ConstantASCII_ONLY
ConstantHUMAN_READABLE
ConstantPIKE_CANONICAL
ConstantUNQUOTED_IDENTIFIERS
ConstantSINGLE_QUOTED_STRINGS constant
Standards.JSON5.ASCII_ONLY
constant
Standards.JSON5.HUMAN_READABLE
constant
Standards.JSON5.PIKE_CANONICAL
constant
Standards.JSON5.UNQUOTED_IDENTIFIERS
constant
Standards.JSON5.SINGLE_QUOTED_STRINGS
- Description
Bit field flags for use with
encode
:- Standards.JSON5.ASCII_ONLY
Use
\uxxxx
escapes for all non-ascii characters and DEL (U+007f). The default is to escape only the characters that must be escaped. The flag value is 1.Characters above U+FFFF are encoded using escaped surrogate pairs, as per RFC 4627.
- Standards.JSON5.HUMAN_READABLE
Pretty print with indentation to make the result easier on human eyes. The default is to use no extra whitespace at all. The flag value is 2.
- Standards.JSON5.PIKE_CANONICAL
Make the output canonical, so that the same value always generates the same char-by-char equal string. In practice this means that mapping elements are sorted on their indices. Note that the other flags take precedence, so e.g. the canonical form with
HUMAN_READABLE
is not the same as the canonical form without it. The flag value is 4.This canonical form is stable for the
encode
function, providing floats aren't used (their formatting is currently affected by float size and libc formatting code). In the future there may be a standardized canonical form which quite likely will be different from this one. In that case a separate flag has to be added so this one doesn't change - hence the namePIKE_CANONICAL
.- Standards.JSON5.UNQUOTED_IDENTIFIERS
When producing mapping keys, permit keys which are identifiers to be expressed without surrounding quotation marks.
- Standards.JSON5.SINGLE_QUOTED_STRINGS
Use single quotation marks rather than double quotation marks when encoding string values.
- Variabletrue
Variablefalse
Variablenull Val.True
Standards.JSON5.trueVal.False
Standards.JSON5.falseVal.Null
Standards.JSON5.null- Description
Compat aliases for the corresponding
Val
objects. These are used to represent the three JSON5 literalstrue
,false
andnull
.- Deprecated
Replaced by
Val.true
,Val.false
andVal.null
.
- Methoddecode
array
|mapping
|string
|float
|int
|object
decode(string
s
)- Description
Decodes a JSON5 string.
- Throws
Throws an exception in case the data contained in
s
is not valid JSON5.
- Methoddecode_utf8
array
|mapping
|string
|float
|int
|object
decode_utf8(string
s
)- Description
Decodes an utf8 encoded JSON5 string. Should give the same result as
Standards.JSON5.decode(utf8_to_string(s))
.- Throws
Throws an exception in case the data contained in
s
is not valid JSON5.
- Methodencode
string
encode(int
|float
|string
|array
|mapping
|object
val
,void
|int
flags
,void
|function
(:void
)|object
|program
|string
callback
)- Description
Encodes a value to a JSON5 string.
- Parameter
val
The value to encode. It can contain integers, floats (except the special numbers NaN and infinity), strings, arrays, mappings with string indices, and the special object values
null
,true
andfalse
defined in this module (or really any object that implements anencode_json5
callback or is handled by the supplied callback argument).- Parameter
flags
Flag bit field to control formatting. See
ASCII_ONLY
,HUMAN_READABLE
andPIKE_CANONICAL
for further details.- Parameter
callback
A function that will be called for types that can not be encoded otherwise. It will be called with the value to be encoded as the first argument, and optionally with flags and indent arguments. If a string is supplied, it will be used to replace the value verbatim. The callback must return a string or throw an error.
- Note
8-bit and wider characters in input strings are neither escaped nor utf-8 encoded by default.
string_to_utf8
can be used safely on the returned string to get a valid transport encoded JSON5 string. Seeescape_string
for further details on string escaping.- See also
escape_string
- Methodescape_string
string
escape_string(string
str
,void
|int
flags
)- Description
Escapes string data for use in a JSON5 string.
8-bit and wider characters in input strings are neither escaped nor utf-8 encoded by default.
string_to_utf8
can be used safely on the returned string to get a valid transport encoded JSON5 string.The characters U+2028 (LINE SEPARATOR) and U+2029 (PARAGRAPH SEPARATOR) are exceptions - they are encoded with \u escapes for compatibility. The reason is that those characters are not allowed in Javascript strings, so JSON5 parsers built in Javascript may have trouble with them otherwise.
- Parameter
val
The string to escape.
- Parameter
flags
Flag bit field to control formatting.
ASCII_ONLY
is the only flag that has any effect for this function.- Note
The difference between using this function and
encode
on a string is thatencode
returns quotations marks around the result.- See also
encode
- Methodvalidate
int
validate(string
s
)- Description
Checks if a string is valid JSON5.
- Returns
In case the string contains valid JSON5
-1
is returned. It is then guaranteed to be parsed without errors bydecode()
. In case the string is not valid JSON5, the error position is returned.
- Methodvalidate_utf8
int
validate_utf8(string
s
)- Description
Checks if a string is valid utf8 encoded JSON5.
- Returns
In case the string contains valid JSON5
-1
is returned. It is then guaranteed to be parsed without errors bydecode()
. In case the string is not valid JSON5, the integer position inside the string where the error occurs is returned.
Class Standards.JSON5.DecodeError
- Description
Error thrown when JSON5 decode fails.
Class Standards.JSON5.Validator
- Description
An instance of this class can be used to validate a JSON5 object against a JSON5 schema.
- Example
string schema_s = "{\n" + " \"name\": \"SomeExample\",\n" + " \"type\": \"object\",\n" + " \"properties\": {\n" + " \"name\": { \"type\": \"string\" },\n" + " \"id\": {\n" + " \"type\": \"integer\",\n" + " \"minimum\": 0\n" + " }\n" + " }\n" + "}"; string example_s = "{\n" + " \"name\": \"An Example\",\n" + " \"id\": 17\n" + "}"; mixed schema =
Standards.JSON5.decode
(schema_s); mixed example =Standards.JSON5.decode
(example_s); if (string error =Standards.JSON5.Validator(schema).validate
(example)) werror("Error: JSON5 string %O did not validate: %s\n", example_s, error); else write("JSON5 ok\n");- Note
This class validates only a subset of the JSON5 schema specification. Currently dependencies and references are not handled and regular expressions (for pattern properties) are limited to those that can be handled by
Regexp.SimpleRegexp
.For more information of JSON5 schema look at http://json5-schema.org/documentation.html "The home of JSON5 Schema".
- Methodcreate
Standards.JSON5.ValidatorStandards.JSON5.Validator(
mixed
_schema
)- Description
Create a JSON5 validator for some JSON5 schema.
- Parameter
_schema
The JSON5 schema to use in
validate()
. This must be a valid JSON5 object.- Throws
Throws an error if the schema is invalid.
- Methodhas_schema_array
private
bool
has_schema_array(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is an array.
- Throws
Throws an error if the value of the property is no array.
- Returns
1 if the schema has the specified property.
- Methodhas_schema_array_mapping
private
bool
has_schema_array_mapping(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is an array(mapping).
- Throws
Throws an error if the value of the property is no array(mapping).
- Returns
1 if the schema has the specified property.
- Methodhas_schema_array_string
private
bool
has_schema_array_string(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is an array(string).
- Throws
Throws an error if the value of the property is no array(string).
- Returns
1 if the schema has the specified property.
- Methodhas_schema_boolean
private
bool
has_schema_boolean(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is a boolean (with values
Standards.JSON5.true
orStandards.JSON5.false
).- Throws
Throws an error if the value of the property is no boolean.
- Returns
1 if the schema has the specified property.
- Methodhas_schema_integer
private
bool
has_schema_integer(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is an integer.
- Throws
Throws an error if the value of the property is no integer.
- Returns
1 if the schema has the specified property.
- Methodhas_schema_mapping
private
bool
has_schema_mapping(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is a mapping.
- Throws
Throws an error if the value of the property is no mapping.
- Returns
1 if the schema has the specified property.
- Methodhas_schema_mapping_mapping
private
bool
has_schema_mapping_mapping(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is a mapping(string:mapping).
- Throws
Throws an error if the value of the property is no mapping(string:mapping).
- Returns
1 if the schema has the specified property.
- Methodhas_schema_number
private
bool
has_schema_number(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is a number (integer or float).
- Throws
Throws an error if the value of the property is no number.
- Returns
1 if the schema has the specified property.
- Methodhas_schema_string
private
bool
has_schema_string(mapping
(string
:mixed
)schema
,string
property
)- Description
Test if the schema has the specified property and the value of the property is a string.
- Throws
Throws an error if the value of the property is no string.
- Returns
1 if the schema has the specified property.
- Methodis_JSON5_boolean
private
bool
is_JSON5_boolean(mixed
value
)- Returns
1 if the specified value is either
Standards.JSON5.true
orStandards.JSON5.false
.
- Methodvalidate
string
|zero
validate(mixed
json5
)- Description
This function validates a JSON5 object against the JSON5 schema that was specified in the Validator's constructor. If the JSON5 object is not valid, a string with an error-message is returned. If the JSON5 object is valid, 0 is returned.
- Parameter
json5
The JSON5 object to validate.
- Returns
0, if the json5 object is valid, and an error-message if it is not valid.
- Methodvalidate_array
private
string
|zero
validate_array(string
key
,mixed
value
,mapping
(string
:mixed
)schema
)- Description
Verify that the specified value is an array according to the specified schema. The following properties of schema are verified:
- minItems
If schema has the property "minItems", then the array must have at least the specified number of items.
- maxItems
If schema has the property "maxItems", then the array must not have more than the specified number of items.
- items
If schema has the property "items", which is an array of schema objects, then each element in the value array must be valid according the corresponding schema in the "items" array.
- Methodvalidate_integer
private
string
|zero
validate_integer(string
key
,mixed
value
,mapping
(string
:mixed
)schema
)- Description
Verify that the specified value is an integer according to the specified schema. This is the similar to
validate_number()
, but the value must be an int and not a float. The following properties of schema are verified:- minimum
If the schema has the property "minimum", then the value must be greater than or equal to the specified minimum.
- exclusiveMinimum
If the schema has the properties "minimum" and "exclusiveMinimum" is
Standards.JSON5.true
, then the value must be greater than the specified minimum.- maximum
If the schema has the property "maximum", then the value must be lower than or equal to the specified maximum.
- exclusiveMaximum
If the schema has the properties "maximum" and "exclusiveMaximum" is
Standards.JSON5.true
, then the value must be lower than the specified minimum.- multipleOf
If schema has the property "multipleOf", then the value must be an integer multiple of the specified multpleOf.
- Methodvalidate_item_type
private
string
|zero
validate_item_type(string
key
,mixed
value
,mapping
schema
)- Description
Verify that the specified value has the correct type that is defined by schema->type. schema->type can be any of
"boolean",
"integer",
"number",
"string",
"array",
"object",
"null",
or an array of these.
- Methodvalidate_number
private
string
|zero
validate_number(string
key
,mixed
value
,mapping
(string
:mixed
)schema
)- Description
Verify that the specified value is a number (integer or float) according to the specified schema. The following properties of schema are verified:
- minimum
If the schema has the property "minimum", then the value must be greater than or equal to the specified minimum.
- exclusiveMinimum
If the schema has the properties "minimum" and "exclusiveMinimum" is
Standards.JSON5.true
, then the value must be greater than the specified minimum.- maximum
If the schema has the property "maximum", then the value must be lower than or equal to the specified maximum.
- exclusiveMaximum
If the schema has the properties "maximum" and "exclusiveMaximum" is
Standards.JSON5.true
, then the value must be lower than the specified minimum.- multipleOf
If schema has the property "multipleOf", then the value must be an integer multiple of the specified multpleOf.
- Methodvalidate_object
private
string
|zero
validate_object(string
key
,mixed
value
,mapping
(string
:mixed
)schema
)- Description
Verify that the specified value is an object according to the specified schema. The following properties of schema are verified:
- minProperties
If schema has the property "minProperties", then the object must have at least the specified number of properties.
- maxProperties
If schema has the property "maxProperties", then the object must not have more than the specified number of items.
- required
If schema has the property "required", which is an array of strings, then the object must have all properties that are listed in the specified array.
- properties
If schema has the property "properties", which is a mapping of property-name to a schema, then each property of the object that has a corresponding schema in "properties" must be valid according to that schema.
- patternProperties
If schema has the property "properties", which is a mapping of property-name-pattern to a schema, then each property of the object must be valid according to all schema objects for which the pattern matches the property-name.
- additionalProperties
If schema has the property "additionalProperties", it can be either a boolean value, or a schema.
If it is a boolean with value
Standards.JSON5.false
, then all properties of the object must be validated either by a schema from "properties" or "patternProperties".If it is a boolean with value
Standards.JSON5.true
, then the object is allowed to have additional properties without validation.If it is a schema, then any propery of the object that is not validated by a schema from "properties" or "patternProperties" must be validated by the specified schema.
- Note
TODO: We use
Regexp.SimpleRegexp
to handle schema->patternProperties, but that covers only some part of the possible regular expressions.
- Methodvalidate_properties
private
string
|zero
validate_properties(string
key
,mixed
value
,mapping
schema
)- Description
Verify that the specified value matches the specified schema. The following properties of schema are verified:
- type
If the schema has a property "type", then the value must match the specified type (see
validate_item_type()
).- allOf
If the schema has a property "allOf", which is an array of schema objects, then the value must match each schema specified in that array (via another call to
validate_properties()
).- anyOf
If the schema has a property "anyOf", which is an array of schema objects, then the value must match at least one schema specified in that array (via another call to
validate_properties()
).- oneOf
If the schema has a property "oneOf", which is an array of schema objects, then the value must match exactly one schema specified in that array (via another call to
validate_properties()
).- not
If the schema has a property "not", then the value must not match the schema specified by that property (via another call to
validate_properties()
).- enum
If the schema has a property "enum", then the value must be equal to any of the values specified in the enum array.
- Note
If the schema is empty (i.e., it has none of the above specified properties, then the value is valid).
- Methodvalidate_string
private
string
|zero
validate_string(string
key
,mixed
value
,mapping
(string
:mixed
)schema
)- Description
Verify that the specified value is a string according to the specified schema. The following properties of schema are verified:
- minLength
If schema has the property "minLength", then the value must not be shorter than the specified length.
- maxLength
If schema has the property "maxLength", then the value must not be longer than the specified length.
- pattern
If schema has the property "pattern", then the value must match the specified pattern.
- Note
TODO: We use
Regexp.SimpleRegexp
to handle schema->pattern, but that covers only some part of the possible regular expressions.
Module Standards.MsgPack
- Description
Tools for handling the MsgPack data format. MsgPack is a binary serialization format with applications similar to JSON. However, MsgPack is more versatile and is able to serialize arbitrary objects using an extension format. The following table shows how some special Pike data types are encoded in the MsgPack format. All basic types, namely
int
,string
,float
,array
andmapping
are mapped onto their natural MsgPack counterparts. Note that the encoder does not use all integer and floating point lengths and in particular integers are never encoded as unsigned.- binary
Stdio.Buffer
- nil
Val.null
- true
Val.true
- false
Val.false
All other types can be encoded and decoded using extension handlers.
- binary
- Typedefdecode_handler
typedef
function
(int(-127..128)
,Stdio.Buffer
:mixed
) Standards.MsgPack.decode_handler
- Description
Function prototype for decode extension handlers. The first argument is the extension type identifier. The second argument is a
Stdio.Buffer
containing the payload.- See also
decode
,decode_from
- Typedefencode_handler
typedef
function
(Stdio.Buffer
,mixed
:void
) Standards.MsgPack.encode_handler
- Description
Function prototype for encode extension handlers. The first argument is the
Stdio.Buffer
, the second the value to encode. Useadd_extension_header
to generate the correct extension header.- See also
decode
,decode_from
- Methodadd_extension_header
void
add_extension_header(Stdio.Buffer
b
,int(-128..127)
type
,int(0..)
len
)- Description
Adds an extension header to
b
for given type and payload length.
- Methoddecode
mixed
decode(string(8bit)
data
,void
|decode_handler
|object
handler
)- Description
Decode one MsgPack encoded value from
data
.
- Methoddecode_from
mixed
decode_from(Stdio.Buffer
buffer
,void
|decode_handler
|object
handler
)- Description
Decode one MsgPack encoded value from the
buffer
.
- Methoddefault_handler
void
default_handler(Stdio.Buffer
b
,function
(:void
)|object
|program
v
)- Description
Default encoding handler. Encodes
Val.null
,Val.true
andVal.false
.
- Methodencode
string(8bit)
encode(mixed
v
,void
|encode_handler
|object
handler
)- Description
Encode
v
into a string.
- Methodencode_to
void
encode_to(Stdio.Buffer
buf
,mixed
v
,void
|encode_handler
|object
handler
)- Description
Encode
v
intobuf
. Ifhandler
is not specified, it defaults todefault_handler
.
Module Standards.PEM
- Description
Support for parsing PEM-style messages, defined in RFC 1421. Encapsulation defined in RFC 0934.
- Methodbuild
string
build(string
tag
,string
data
,void
|mapping
(string
:string
)headers
,void
|string
checksum
)- Description
Creates a PEM message, wrapped to 64 character lines.
- Parameter
tag
The encapsulation boundary string.
- Parameter
data
The data to be encapsulated.
- Parameter
headers
Optional mapping containing encapsulated headers as name value pairs.
- Parameter
checksum
Optional checksum string, added as per RFC 4880.
- Methoddecrypt_body
string(8bit)
decrypt_body(string(8bit)
dek_info
,string(8bit)
body
,string(8bit)
password
)- Description
Decrypt a PEM body.
- Parameter
dek_info
"dek-info"
header from theMessage
.- Parameter
body
Encypted PEM body.
- Parameter
password
Decryption password.
- Returns
Returns the decrypted body text.
- Methoddecrypt_fragment
string(8bit)
|zero
decrypt_fragment(Message
m
,string(8bit)
pwd
)- Description
Decrypt a PEM Message.
- Parameter
body
Fragment with encypted PEM body.
- Parameter
password
Decryption password.
- Returns
Returns the decrypted body text.
- Methodderive_key
string(8bit)
derive_key(string(8bit)
password
,string(8bit)
salt
,int
bytes
)- Description
Key derivation function used in PEM.
- FIXME
Derived from OpenSSL. Is there any proper specification?
It seems to be related to PBKDF1 from RFC 2898.
- Methodsimple_decode
string(8bit)
|zero
simple_decode(string(8bit)
pem
)- Description
Convenience function that decodes a PEM message containing only one part, and returns it as a string. Returns
0
for indata containing no or multiple parts.
Class Standards.PEM.Message
- Description
Represents a PEM-style message.
- Variableheaders
mapping
(string(8bit)
:string(8bit)
)|zero
Standards.PEM.Message.headers- Description
Encapsulated headers. If headers occur multiple times, they will be concatenated separated by delimiting NUL characters.
- Variablepost
string
|zero
Standards.PEM.Message.post- Description
Post-encapsulation boundary string.
Usually the same value as
pre
.
- Variablepre
string
|zero
Standards.PEM.Message.pre- Description
Pre-encapsulation boundary string.
Typically a string like
"CERTIFICATE"
or"PRIVATE KEY"
.
- Variabletrailer
string(8bit)
|zero
Standards.PEM.Message.trailer- Description
Message trailer, like RFC 4880 checksum.
Class Standards.PEM.Messages
- Description
The Messages class acts as an envelope for a PEM message file or stream.
- Variablefragments
array
(string(8bit)
|Message
) Standards.PEM.Messages.fragments- Description
The fragments array contains the different message fragments, as Message objects for decoded messages and strings for non-messages or incomplete messages.
- Variableparts
mapping
(string(8bit)
:array
(Message
)) Standards.PEM.Messages.parts- Description
This is a mapping from encapsulation boundary string to Message objects. All message objects and surrounding text will be listed, in order, in
fragments
.
- Methodcreate
Standards.PEM.MessagesStandards.PEM.Messages(
string(8bit)
data
)- Description
A Messages object is created with the file or stream data.
- Methodget_certificate
string
get_certificate()- Description
Convenience wrapper for
get_certificates
that returns the first available certificate, or0
.
- Methodget_certificates
array
(string
) get_certificates()- Description
Returns an array of all the bodies of
"CERTIFICATE"
and"X509 CERTIFICATE"
fragments.
- Methodget_encrypted_private_key
string
|zero
get_encrypted_private_key(string(8bit)
pwd
)- Description
Returns the first key, decoded by the
pwd
password.
- Methodget_fragment_bodies
array
(string
) get_fragment_bodies(multiset
labels
)- Description
Returns an array of the string bodies of all fragments with any of the given
labels
in the boundy preamble.
- Methodget_fragments
array
(Message
) get_fragments(multiset
labels
)- Description
Returns an array of all fragments with any of the given
labels
in the boundy preamble.
- Methodget_private_key
string
get_private_key()- Description
Convenience wrapper for
get_private_key
that returns the first available key, or0
.
Module Standards.PKCS
- Description
Public-Key Cryptography Standards (PKCS).
This is the Pike API for dealing with a set of standards initially published by RSA Security Inc, and later by IETF and others in various RFCs.
- See also
Standards.ASN1
,Crypto
, RFC 2314, RFC 2459, RFC 2986, RFC 3279, RFC 3280, RFC 4055, RFC 4985, RFC 5208, RFC 5280, RFC 5480, RFC 5639, RFC 5915, RFC 5958, RFC 7292, RFC 7468
- Methodparse_private_key
Crypto.Sign.State
parse_private_key(Sequence
seq
)- Description
Parse a PKCS#8 PrivateKeyInfo (cf RFC 5208 section 5).
- See also
parse_public_key()
,RSA.parse_private_key()
,DSA.parse_private_key()
- Methodparse_public_key
Crypto.Sign.State
parse_public_key(Sequence
seq
)- Description
Parse a PKCS#10 SubjectPublicKeyInfo (cf RFC 5280 section 4.1 and RFC 7468 section 13).
- See also
parse_private_key()
,RSA.parse_public_key()
,DSA.parse_public_key()
Module Standards.PKCS.CSR
- Methodbuild_csr
Sequence
build_csr(Crypto.Sign
sign
,Sequence
name
,mapping
(string
:array
(Object
))attributes
,Crypto.Hash
|void
hash
)- Description
Build a Certificate Signing Request.
- Parameter
sign
Signature algorithm for the certificate. Both private and public keys must be set.
- Parameter
name
The distinguished name for the certificate.
- Parameter
attributes
Attributes from PKCS #9 to add to the certificate.
- Parameter
hash
Hash algoritm to use for the CSR signature. Defaults to
Crypto.SHA256
.- Note
Prior to Pike 8.0 this function only supported signing with
Crypto.RSA
and the default (and only) hash wasCrypto.MD5
.
- Methodsign_cri
Sequence
sign_cri(CRI
cri
,Crypto.Sign
sign
,Crypto.Hash
hash
)- Description
Sign a
CRI
to generate a Certificate Signing Request.- Parameter
cri
CertificationRequestInfo to sign.
- Parameter
sign
Signature to use. Must have a private key set that matches the public key in the keyinfo in
cri
.- Parameter
hash
Hash algorithm to use for the signature.
Class Standards.PKCS.CSR.CRI
- Description
CertificationRequestInfo
This is the data that is signed by
sign_cri()
.
- Methodbuild_csr
Module Standards.PKCS.Certificate
- Description
Handle PKCS-6 and PKCS-10 certificates and certificate requests.
- Methodbuild_distinguished_name
variant
Sequence
build_distinguished_name(array
args
)- Description
Creates an ASN.1
Sequence
with the distinguished name of the list of pairs given inargs
. Supported identifiers are- commonName
- surname
- countryName
- localityName
- stateOrProvinceName
- organizationName
- organizationUnitName
- title
- name
- givenName
- initials
- generationQualifier
- dnQualifier
- emailAddress
- Parameter
args
Either a mapping that lists from id string to string or ASN.1 object, or an array with mappings, each containing one pair. No type validation is performed.
- Methoddecode_distinguished_name
array
(mapping
(string(7bit)
:string
)) decode_distinguished_name(Sequence
dn
)- Description
Perform the reverse operation of
build_distinguished_name()
.- See also
build_distinguished_name()
- Methodget_dn_string
string
get_dn_string(Sequence
dnsequence
)- Description
Converts an RDN (relative distinguished name) Seqeunce object to a human readable string in X500 format.
- Returns
A string containing the certificate issuer Distinguished Name (DN) in human readable X500 format.
- Note
We don't currently handle attributes with multiple values, not all attribute types are understood.
Module Standards.PKCS.DSA
- Description
DSA operations as defined in RFC 2459.
- Methodalgorithm_identifier
Sequence
algorithm_identifier(Crypto.DSA
|void
dsa
)- Description
Returns the AlgorithmIdentifier as defined in RFC 5280 section 4.1.1.2. Optionally the DSA parameters are included, if a DSA object is given as argument.
- Methodbuild_private_key
Sequence
build_private_key(Crypto.DSA
dsa
)- Description
Creates a PrivateKeyInfo ASN.1 sequence for the given
rsa
object. See RFC 5208 section 5.
- Methodbuild_public_key
Sequence
build_public_key(Crypto.DSA
dsa
)- Description
Creates a SubjectPublicKeyInfo ASN.1 sequence for the given
dsa
object. See RFC 5280 section 4.1.2.7.
- Methodparse_public_key
Crypto.DSA
|zero
parse_public_key(string
key
,Gmp.mpz
p
,Gmp.mpz
q
,Gmp.mpz
g
)- Description
Decodes a DER-encoded DSAPublicKey structure.
- Parameter
key
DSAPublicKey provided in ASN.1 DER-encoded format
- Parameter
p
Public parameter p, usually transmitted in the algoritm identifier.
- Parameter
q
Public parameter q, usually transmitted in the algoritm identifier.
- Parameter
g
Public parameter g, usually transmitted in the algoritm identifier.
- Returns
Crypto.DSA
object
- Methodpublic_key
string
public_key(Crypto.DSA
dsa
)- Description
Generates the DSAPublicKey value, as specified in RFC 2459.
Module Standards.PKCS.ECDSA
- Description
ECDSA operations.
- Variablecurve_lookup
protected
mapping
(string
:Crypto.ECC.Curve
) Standards.PKCS.ECDSA.curve_lookup- Description
Lookup from ASN.1 DER encoded ECC named curve identifier to the corresponding
Crypto.ECC.Curve
.
- Methodparse_ec_parameters
Crypto.ECC.Curve
|zero
parse_ec_parameters(string
ec_parameters
)- Description
Get the ECC curve corresponding to an ASN.1 DER encoded named curve identifier.
- Returns
Returns
UNDEFINED
if the curve is unsupported.
- Methodparse_private_key
Crypto.ECC.SECP_521R1.ECDSA
|zero
parse_private_key(Sequence
a
,Crypto.ECC.Curve
|void
c
)- Description
Get an initialized ECDSA object from an ECC curve and an ASN.1 ec private key sequence.
As specified in RFC 5915 section 3.
- Methodparse_private_key
variant
Crypto.ECC.SECP_521R1.ECDSA
|zero
parse_private_key(string(8bit)
ec_private_key
,Crypto.ECC.Curve
|void
c
)- Description
Get an initialized ECDSA object from an ECC curve and an ASN.1 DER encoded ec private key.
As specified in RFC 5915 section 3.
- Methodparse_public_key
Crypto.ECC.SECP_521R1.ECDSA
parse_public_key(string(8bit)
key
,Crypto.ECC.Curve
c
)- Description
Get an initialized ECDSA object from an ECC curve and an ec public key.
- Methodprivate_key
string(8bit)
private_key(Crypto.ECC.SECP_521R1.ECDSA
ecdsa
)- Description
Create a DER-coded ECPrivateKey structure
- Parameter
ecdsa
Crypto.ECC.Curve()->ECDSA
object.- Returns
ASN.1 coded ECPrivateKey structure as specified in RFC 5915 section 3.
- Methodpublic_key
string(8bit)
public_key(Crypto.ECC.SECP_521R1.ECDSA
ecdsa
)- Description
Create a DER-coded ECPublicKey structure
- Parameter
ecdsa
Crypto.ECC.Curve()->ECDSA
object.- Returns
ASN.1 coded ECPublicKey structure as specified in RFC 5480 section 2.
Module Standards.PKCS.Identifiers
Module Standards.PKCS.PFX
- Description
PKCS #12: Personal Information Exchange Syntax v1.1, RFC 7292.
Module Standards.PKCS.RSA
- Description
RSA operations and types as described in PKCS-1.
- Methodalgorithm_identifier
Sequence
algorithm_identifier()- Description
Returns the AlgorithmIdentifier as defined in RFC 5280 section 4.1.1.2.
- Methodbuild_private_key
Sequence
build_private_key(Crypto.RSA
rsa
)- Description
Creates a PrivateKeyInfo ASN.1 sequence for the given
rsa
object. See RFC 5208 section 5.
- Methodbuild_public_key
Sequence
build_public_key(Crypto.RSA
rsa
)- Description
Creates a SubjectPublicKeyInfo ASN.1 sequence for the given
rsa
object. See RFC 5280 section 4.1.2.7.
- Methodoaep_algorithm_id
Sequence
oaep_algorithm_id(Crypto.Hash
hash
,string(8bit)
|void
label
)- Description
Returns the PKCS-1 algorithm identifier for RSAES-OAEP and the provided hash algorithm and label.
- See also
- Methodparse_private_key
Crypto.RSA.State
parse_private_key(Sequence
seq
)- Description
Decode a RSAPrivateKey structure
- Parameter
key
RSAPrivateKey provided in ASN.1 format
- Returns
Crypto.RSA
object
- Methodparse_private_key
variant
Crypto.RSA.State
parse_private_key(string
key
)- Description
Decode a DER-coded RSAPrivateKey structure
- Parameter
key
RSAPrivateKey provided in ASN.1 DER-encoded format
- Returns
Crypto.RSA
object
- Methodparse_public_key
Crypto.RSA.State
parse_public_key(string
key
)- Description
Decode a DER-coded RSAPublicKey structure
- Parameter
key
RSAPublicKey provided in ASN.1 DER-encoded format
- Returns
Crypto.RSA
object
- Methodprivate_key
string
private_key(Crypto.RSA
rsa
)- Description
Create a DER-coded RSAPrivateKey structure
- Parameter
rsa
Crypto.RSA
object- Returns
ASN1 coded RSAPrivateKey structure
- Methodpss_signature_algorithm_id
Sequence
pss_signature_algorithm_id(Crypto.Hash
hash
,int(0..)
|void
saltlen
)- Description
Returns the PKCS-1 algorithm identifier for RSASSA-PSS and the provided hash algorithm and saltlen.
- See also
- Methodpublic_key
string
public_key(Crypto.RSA
rsa
)- Description
Create a DER-coded RSAPublicKey structure
- Parameter
rsa
Crypto.RSA
object- Returns
ASN1 coded RSAPublicKey structure
Module Standards.PKCS.Signature
- Methodbuild_digestinfo
string
build_digestinfo(string
msg
,Crypto.Hash
hash
)- Description
Construct a PKCS-1 digestinfo.
- Parameter
msg
message to digest
- Parameter
hash
crypto hash object such as
Crypto.SHA1
orCrypto.MD5
- See also
Crypto.RSA()->sign
- Methodsign
Signed
sign(Sequence
tbs
,Crypto.Sign
sign
,Crypto.Hash
hash
)- Description
Generic PKCS signing.
- Parameter
tbs
Standards.ASN1
structure to be signed.- Parameter
sign
Signature to use. Must have a private key set.
- Parameter
hash
Hash algorithm to use for the signature. Must be valid for the signature algorithm.
- Returns
Returns a
Standards.ASN1.Types.Sequence
with the signature.
Class Standards.PKCS.Signature.Signed
- Description
This is an ASN.1 structure from PKCS #10 v1.7 and others, which represents a signed block of data.
- See also
sign()
,Standards.X509.sign_tbs()
.
- Variablealgorithm
Sequence
Standards.PKCS.Signature.Signed.algorithm- Description
Getting
Signing algorithm that was used to sign with.
Setting
Signing algorithm that was used to sign with.
- Variablesignature
BitString
Standards.PKCS.Signature.Signed.signature- Description
Getting
The signature.
Setting
The signature.
- Variabletbs
Object
Standards.PKCS.Signature.Signed.tbs- Description
Getting
ASN.1 structure that has been signed.
Setting
ASN.1 structure that has been signed.
- Methodbuild_digestinfo
Module Standards.TLD
- Constantcc
constant
Standards.TLD.cc
- Description
A mapping between country TLDs and the name of the country.
- Constantcc
Module Standards.UUID
- Description
Support for Universal Unique Identifiers (UUID) and Globally Unique Identifiers (GUID).
- See also
A Universally Unique IDentifier (UUID) URN Namespace.
- ITU-T X.667
Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 object identifier components.
- ConstantNameSpace_X500
constant
string
Standards.UUID.NameSpace_X500
- Description
Name space UUID for X500.
- Methodformat_uuid
string
format_uuid(string
uuid
)- Description
Returns the string representation of the binary UUID
uuid
.
- Methodget_clock_state
array
(int
) get_clock_state()- Description
Returns the internal clock state. Can be used for persistent storage when an application is terminated.
- See also
set_clock_state
- Methodmake_version1
UUID
make_version1(int
node
)- Description
Creates a new version 1 UUID.
- Parameter
node
Either the 48 bit IEEE 802 (aka MAC) address of the system or -1.
- Methodmake_version3
UUID
make_version3(string
name
,string
|UUID
namespace
)- Description
Creates a version 3 UUID with a
name
string and a binary representation of a name space UUID.
- Methodmake_version5
UUID
make_version5(string
name
,string
|UUID
namespace
)- Description
Creates a version 5 UUID with a
name
string and a binary representation of a name space UUID.
- Methodmake_x500
UUID
make_x500(string
name
)- Description
Creates an X500 UUID with the gived X500 address.
- Methodmake_x500
UUID
make_x500(string
name
)- Description
Creates an X500 UUID with the gived X500 address.
- Methodparse_uuid
string
parse_uuid(string
uuid
)- Description
Returns the binary representation of the UUID
uuid
.
- Methodset_clock_state
void
set_clock_state(int
last_time
,int
seq
)- Description
Sets the internal clock state.
- See also
get_clock_state
Class Standards.UUID.UUID
- Description
Represents an UUID
- Variableclk_seq
int
Standards.UUID.UUID.clk_seq- Description
The clock sequence. Should be 13 to 15 bits depending on UUID version.
- Variabletimestamp
int
Standards.UUID.UUID.timestamp- Description
60 bit value representing the time stamp.
- Methodcreate
Standards.UUID.UUIDStandards.UUID.UUID(
void
|string
in
)- Description
Optionally created with a string or binary representation of a UUID.
- Methodstr_variant
string
str_variant()- Description
Returns a string representation of the variant, e.g.
"IETF draft variant"
.
- Methodstr_version
string
str_version()- Description
Returns a string representation of the version, e.g.
"Name-based (MD5)"
.
Module Standards.X509
- Description
Functions to generate and validate RFC 2459 style X.509 v3 certificates.
- Methoddecode_certificate
TBSCertificate
|zero
decode_certificate(string
|.PKCS.Signature.Signed
cert
)- Description
Decodes a certificate and verifies that it is structually sound. Returns a
TBSCertificate
object if ok, otherwise0
.
- Methodget_algorithms
mapping
(Identifier
:Crypto.Hash
) get_algorithms()- Description
Returns the mapping of signature algorithm to hash algorithm supported by
Verifier
and thusverify_ca_certificate()
,verify_certificate()
, andverify_certificate_chain()
.
- Methodget_letsencrypt_cert
array
get_letsencrypt_cert(string
host
)- Description
Read and decode certificate chain for the given
host
from the letsencrypt directory (/etc/letsencrypt/live/{host}/). Note that the process has to have read privileges for the directory.The resulting array can be used directly as input to the
SSL.Context()->add_cert()
method.- Returns
Array Crypto.Sign.State
0
A signing object using the private key.
array
(string
)1
An array of DER encoded certificates representing the certificate chain.
- Methodload_authorities
mapping
(string
:array
(Verifier
)) load_authorities(string
|array
(string
)|void
root_cert_dirs
,bool
|void
cache
)- Description
Convenience function for loading known root certificates.
- Parameter
root_cert_dirs
Directory/directories containing the PEM-encoded root certificates to load. Defaults to a rather long list of directories, including
"/etc/ssl/certs"
,"/etc/pki/tls/certs"
and"/System/Library/OpenSSL/certs"
, which seem to be the most common locations.- Parameter
cache
A flag to control if the answer should be given from an internal cache or always scan the directories. If a cache is used, it will refresh when any certificate expires (which typically is measured in years) or when asked for in unchached mode.
- Returns
Returns a mapping from DER-encoded issuer to
Verifier
s compatible with egverify_certificate()
- Note
If a certificate directory contains a file named
"ca-certificates.crt"
,"ca-bundle.crt"
or"ca-bundle.trust.crt"
, it is assumed to contain a concatenation of all the certificates in the directory.- See also
verify_certificate()
,verify_certificate_chain()
- Methodmake_extension
Sequence
make_extension(Identifier
id
,Object
ext
,void
|int
critical
)- Description
Creates a certificate extension with the
id
as identifier andext
as the extension payload. If thecritical
flag is set the extension will be marked as critical.
- Methodmake_selfsigned_certificate
string
make_selfsigned_certificate(Crypto.Sign.State
c
,int
ttl
,mapping
|array
name
,mapping
(Identifier
:Sequence
)|void
extensions
,Crypto.Hash
|void
h
,int
|void
serial
)- Description
Creates a selfsigned certificate, i.e. where issuer and subject are the same entity. This entity is derived from the list of pairs in
name
, which is encoded into an distinguished_name byStandards.PKCS.Certificate.build_distinguished_name
.- Parameter
c
The public key cipher used for the certificate,
Crypto.RSA
,Crypto.DSA
orCrypto.ECC.Curve.ECDSA
. The object should be initialized with both public and private keys.- Parameter
ttl
The validity of the certificate, in seconds, starting from creation date.
- Parameter
name
List of properties to create distinguished name from.
- Parameter
extensions
Mapping with extensions as ASN.1 structures, as produced by
make_extension
. The extensions subjectKeyIdentifier, keyUsage (flagged critical) and basicConstraints (flagged critical) will automatically be added if not present.- Parameter
h
The hash function to use for the certificate. Must be one of the standardized PKCS hashes to be used with the given Crypto. By default
Crypto.SHA256
is selected for both RSA and DSA.- Parameter
serial
Serial number of the certificate. Defaults to generating a UUID version1 value with random node. Some browsers will refuse different certificates from the same signer with the same serial number.
- See also
sign_key()
,sign_tbs()
- Methodmake_tbs
TBSCertificate
make_tbs(Sequence
issuer
,Sequence
algorithm
,Sequence
subject
,Sequence
keyinfo
,Integer
serial
,Sequence
validity
,array
|int(0)
|void
extensions
)- Description
Creates the ASN.1 TBSCertificate sequence (see RFC 2459 section 4.1) to be signed (TBS) by the CA. version is explicitly set to v3, and
extensions
is optionally added to the sequence. issuerUniqueID and subjectUniqueID are not supported.
- Methodmake_tbs
variant
TBSCertificate
make_tbs(Sequence
issuer
,Sequence
algorithm
,Sequence
subject
,Sequence
keyinfo
,Integer
serial
,int
ttl
,array
|int(0)
|void
extensions
)- Description
Creates the ASN.1 TBSCertificate sequence (see RFC 2459 section 4.1) to be signed (TBS) by the CA. version is explicitly set to v3, validity is calculated based on time and
ttl
, andextensions
is optionally added to the sequence. issuerUniqueID and subjectUniqueID are not supported.- Note
Prior to Pike 8.0 this function returned a plain
Sequence
object.
- Methodparse_private_key
Crypto.Sign.State
parse_private_key(Sequence
seq
)- Description
DWIM-parse the ASN.1-sequence for a private key.
- Methodparse_private_key
variant
Crypto.Sign.State
parse_private_key(string(8bit)
private_key
)- Description
DWIM-parse the DER-sequence for a private key.
- Methodsign_key
string
sign_key(Sequence
issuer
,Crypto.Sign.State
c
,Crypto.Sign.State
ca
,Crypto.Hash
h
,Sequence
subject
,int
serial
,int
ttl
,array
|mapping
|void
extensions
)- Description
Low-level function for creating a signed certificate.
- Parameter
issuer
Distinguished name for the issuer. See
Standards.PKCS.Certificate.build_distinguished_name
.- Parameter
c
RSA, DSA or ECDSA parameters for the subject. Only the public key needs to be set. See
Crypto.RSA
,Crypto.DSA
andCrypto.ECC.Curve.ECDSA
.- Parameter
ca
RSA, DSA or ECDSA parameters for the issuer. Only the private key needs to be set. See
Crypto.RSA
,Crypto.DSA
andCrypto.ECC.Curve.ECDSA
.- Parameter
h
The hash function to use for the certificate. Must be one of the standardized PKCS hashes to be used with the given Crypto.
- Parameter
subject
Distinguished name for the subject. See
Standards.PKCS.Certificate.build_distinguished_name
.- Parameter
public_key
DER-encoded RSAPublicKey structure. See
Standards.PKCS.RSA.public_key()
.- Parameter
serial
Serial number for this key and subject.
- Parameter
ttl
Validity time in seconds for this signature to be valid.
- Parameter
extensions
Set of extensions.
- Returns
Returns a DER-encoded certificate.
- See also
make_selfsigned_certificate()
,make_tbs()
,sign_tbs()
- Methodsign_tbs
Sequence
sign_tbs(TBSCertificate
tbs
,Crypto.Sign.State
sign
,Crypto.Hash
hash
)- Description
Sign the provided TBSCertificate.
- Parameter
tbs
A
TBSCertificate
as returned bydecode_certificate()
ormake_tbs()
.- Parameter
sign
RSA, DSA or ECDSA parameters for the issuer. See
Crypto.RSA
,Crypto.DSA
andCrypto.ECC.Curve.ECDSA
. Must be initialized with the private key.- Parameter
hash
The hash function to use for the certificate. Must be one of the standardized PKCS hashes to be used with the given Crypto.
- See also
decode_certificate()
,make_tbs()
- Methodverify_ca_certificate
TBSCertificate
|zero
verify_ca_certificate(string
|TBSCertificate
tbs
)- Description
Verifies that all extensions mandated for certificate signing certificates are present and valid.
- Methodverify_certificate
TBSCertificate
|zero
verify_certificate(string
s
,mapping
(string
:Verifier
|array
(Verifier
))authorities
,mapping
(Standards.ASN1.Types.Identifier
:Crypto.Hash
)|void
options
)- Description
Decodes a certificate, checks the signature. Returns the TBSCertificate structure, or 0 if decoding or verification fails. The valid time range for the certificate is not checked.
- Parameter
authorities
A mapping from (DER-encoded) names to a verifiers.
- Parameter
options
"verifier_algorithms"
:mapping
(Standards.ASN1.Types.Identifier
:Crypto.Hash
)A mapping of verifier algorithm identifier to hash algorithm implementation.
- Note
This function allows self-signed certificates, and it doesn't check that names or extensions make sense.
- Methodverify_certificate_chain
mapping
verify_certificate_chain(array
(string
|.PKCS.Signature.Signed
)cert_chain
,mapping
(string
:Verifier
|array
(Verifier
))authorities
,int
|void
require_trust
,mapping
(string
:mixed
)|bool
|void
options
)- Description
Decodes a certificate chain, ordered from leaf to root, and checks the signatures. Verifies that the chain can be decoded correctly, is unbroken, and that all certificates are in effect (time-wise.) and allowed to sign its child certificate.
No verifications are done on the leaf certificate to determine what it can and can not be used for.
Returns a mapping with the following contents, depending on the verification of the certificate chain:
"error_code"
:int
Error describing type of verification failures, if verification failed. May be one of the following, OR:ed together:
CERT_TOO_NEW
,CERT_TOO_OLD
,CERT_ROOT_UNTRUSTED
,CERT_BAD_SIGNATURE
,CERT_INVALID
,CERT_CHAIN_BROKEN
,CERT_UNAUTHORIZED_CA
orCERT_EXCEEDED_PATH_LENGTH
."error_cert"
:int
Index number of the certificate that caused the verification failure.
"self_signed"
:bool
Non-zero if the certificate is self-signed.
"verified"
:bool
Non-zero if the certificate is verified.
"authority"
:Standards.ASN1.Sequence
The authority RDN that verified the chain.
"cn"
:Standards.ASN1.Sequence
The common name RDN of the leaf certificate.
"certificates"
:array
(TBSCertificate
)An array with the decoded certificates, ordered from root to leaf.
- Parameter
cert_chain
An array of certificates, with the relative-root last. Each certificate should be a DER-encoded certificate, or decoded as a
Standards.PKCS.Signature.Signed
object.- Parameter
authorities
A mapping from (DER-encoded) names to verifiers.
- Parameter
require_trust
Require that the certificate be traced to an authority, even if it is self signed.
- Parameter
strict
By default this function only requires that the certificates are in order, it ignores extra certificates we didn't need to verify the leaf certificate.
If you specify
strict
, this will change, each certificate has to be signed by the next in the chain.Some https-servers send extraneous intermediate certificates that aren't used to validate the leaf certificate. So strict mode will be incompatible with such srevers.
- Parameter
options
"verifier_algorithms"
:mapping
(Standards.ASN1.Types.Identifier
:Crypto.Hash
)A mapping of verifier algorithm identifier to hash algorithm implementation.
"strict"
:int
See
strict
above.- See also
get_algorithms()
See
Standards.PKCS.Certificate.get_dn_string
for converting the RDN to an X500 style string.
Enum Standards.X509.CertFailure
- ConstantCERT_EXCEEDED_PATH_LENGTH
constant
Standards.X509.CERT_EXCEEDED_PATH_LENGTH
- Description
The certificate chain is longer than allowed by a certificate in the chain.
- ConstantCERT_UNAUTHORIZED_CA
constant
Standards.X509.CERT_UNAUTHORIZED_CA
- Description
A CA certificate is not allowed by basic constraints to sign another certificate.
- ConstantCERT_EXCEEDED_PATH_LENGTH
Enum Standards.X509.keyUsage
- ConstantKU_digitalSignature
ConstantKU_nonRepudiation
ConstantKU_keyEncipherment
ConstantKU_dataEncipherment
ConstantKU_keyAgreement
ConstantKU_keyCertSign
ConstantKU_cRLSign
ConstantKU_encipherOnly
ConstantKU_decipherOnly
ConstantKU_last_keyUsage constant
Standards.X509.KU_digitalSignature
constant
Standards.X509.KU_nonRepudiation
constant
Standards.X509.KU_keyEncipherment
constant
Standards.X509.KU_dataEncipherment
constant
Standards.X509.KU_keyAgreement
constant
Standards.X509.KU_keyCertSign
constant
Standards.X509.KU_cRLSign
constant
Standards.X509.KU_encipherOnly
constant
Standards.X509.KU_decipherOnly
constant
Standards.X509.KU_last_keyUsage
- ConstantKU_digitalSignature
Class Standards.X509.IssuerId
- Description
Unique identifier for the certificate issuer.
X.509v2 (deprecated).
Class Standards.X509.SubjectId
- Description
Unique identifier for the certificate subject.
X.509v2 (deprecated).
Class Standards.X509.TBSCertificate
- Description
Represents a TBSCertificate.
- Note
Was not compatible with
Standards.ASN1.Types.Sequence
prior to Pike 8.0.
- Variableext_authorityKeyIdentifier
bool
Standards.X509.TBSCertificate.ext_authorityKeyIdentifier- Description
Set if the certificate contains a valid authorityKeyIdentifier extension. RFC 3280 section 4.2.1.1.
- Variableext_authorityKeyIdentifier_authorityCertSerialNumber
Gmp.mpz
Standards.X509.TBSCertificate.ext_authorityKeyIdentifier_authorityCertSerialNumber- Description
Set to the CertificateSerialNumber, if set in the extension.
- Variableext_authorityKeyIdentifier_keyIdentifier
string
Standards.X509.TBSCertificate.ext_authorityKeyIdentifier_keyIdentifier- Description
Set to the KeyIdentifier, if set in the extension.
- Variableext_basicConstraints
bool
Standards.X509.TBSCertificate.ext_basicConstraints- Description
Set if the certificate contains a valid basicConstraints extension. RFC 3280 section 4.2.1.10.
- Variableext_basicConstraints_cA
bool
Standards.X509.TBSCertificate.ext_basicConstraints_cA- Description
If set, the certificate may be used as a CA certificate, i.e. sign other certificates.
- Variableext_basicConstraints_pathLenConstraint
int
Standards.X509.TBSCertificate.ext_basicConstraints_pathLenConstraint- Description
The maximum number of certificates that may follow this certificate in a certificate chain.
0
in case no limit is imposed. Note that this variable is off by one compared to the RFC 3280 definition, which only counts intermediate certificates (i.e. 0 intermediates means this variable would be 1, as in one following certificate).
- Variableext_extKeyUsage
array
(Identifier
) Standards.X509.TBSCertificate.ext_extKeyUsage- Description
Set to the list of extended key usages from anyExtendedKeyUsage, if the certificate contains the extKeyUsage extensions. These Identifier objects are typically found in
.PKCS.Identifiers.reverse_kp_ids
. RFC 3280 section 4.2.1.13.
- Variableext_keyUsage
keyUsage
Standards.X509.TBSCertificate.ext_keyUsage- Description
Set to the value of the KeyUsage if the certificate contains the keyUsage extension. RFC 3280 section 4.2.1.3.
- Variableext_subjectKeyIdentifier
string
Standards.X509.TBSCertificate.ext_subjectKeyIdentifier- Description
Set to the value of the SubjectKeyIdentifier if the certificate contains the subjectKeyIdentifier extension. RFC 3280 section 4.2.1.2.
- Variableextensions
mapping
(Identifier
:Object
) Standards.X509.TBSCertificate.extensions- Note
optional
- Note
Read only
- Variablehash
Crypto.Hash
Standards.X509.TBSCertificate.hash- Description
Algorithm hash if known and supported. Otherwise
UNDEFINED
.- Note
Read only
- Variableinternal_critical
protected
multiset
Standards.X509.TBSCertificate.internal_critical- Note
optional
- Variableinternal_extensions
protected
mapping
(Identifier
:Object
) Standards.X509.TBSCertificate.internal_extensions- Note
optional
- Variableraw_extensions
void
Standards.X509.TBSCertificate.raw_extensions- Description
The raw ASN.1 objects from which
extensions
andcritical
have been generated.- Note
optional
- Methoddn_str
string
dn_str(Sequence
dn
)- Description
Try to extract a readable name from
dn
. This is one of commonName, organizationName or organizationUnitName. The first that is found is returned. Suitable for subjects and issuer sequences.
- Methodinit
this_program
init(array
|Object
asn1
)- Description
Populates the object from a certificate decoded into an ASN.1 Object. Returns the object on success, otherwise
0
. You probably want to calldecode_certificate
or evenverify_certificate
.
- Methodissuer_str
string
issuer_str()- Description
Return the issuer of the certificate as a human readable string. Mainly useful for debug.
- Methodlow_set
protected
void
low_set(int
index
,Sequence
|Integer
val
)- Parameter
index
Index in a v1 certificate.
- Parameter
val
New value for index.
Class Standards.X509.Verifier
Module Standards.XML
Module Standards.XML.Wix
- Description
Helper module for generating Windows Installer XML structures.
- See also
Parser.XML.Tree.SimpleNode
Module System
- Description
This module embodies common operating system calls, making them available to the Pike programmer.
- ConstantCPU_TIME_IMPLEMENTATION
constant
string
System.CPU_TIME_IMPLEMENTATION
- Description
This string constant identifies the internal interface used to get the CPU time. It is an implementation detail - see rusage.c for possible values and their meanings.
- See also
gethrvtime
,gauge
- ConstantCPU_TIME_IS_THREAD_LOCAL
constant
string
System.CPU_TIME_IS_THREAD_LOCAL
- Description
This string constant tells whether or not the CPU time, returned by e.g.
gethrvtime
, is thread local or not. The value is "yes" if it is and "no" if it isn't. The value is also "no" if there is no thread support.- See also
gethrvtime
,gauge
- ConstantCPU_TIME_RESOLUTION
constant
int
System.CPU_TIME_RESOLUTION
- Description
The resolution of the CPU time, returned by e.g.
gethrvtime
, in nanoseconds. It is-1
if the resolution isn't known.- See also
gethrvtime
,gauge
- ConstantHKEY_CLASSES_ROOT
ConstantHKEY_LOCAL_MACHINE
ConstantHKEY_CURRENT_USER
ConstantHKEY_USERS constant
int
System.HKEY_CLASSES_ROOT
constant
int
System.HKEY_LOCAL_MACHINE
constant
int
System.HKEY_CURRENT_USER
constant
int
System.HKEY_USERS
- Description
Root handles in the Windows registry.
- Note
These constants are only available on Win32 systems.
- See also
RegGetValue()
,RegGetValues()
,RegGetKeyNames()
- ConstantITIMER_PROF
constant
System.ITIMER_PROF
- Description
Identifier for a timer that decrements both when the process is executing and when the system is executing on behalf of the process.
- See also
setitimer
,getitimer
- ConstantITIMER_REAL
constant
System.ITIMER_REAL
- Description
Identifier for a timer that decrements in real time.
- See also
setitimer
,getitimer
- ConstantITIMER_VIRTUAL
constant
System.ITIMER_VIRTUAL
- Description
Identifier for a timer that decrements only when the process is executing.
- See also
setitimer
,getitimer
- ConstantREAL_TIME_IMPLEMENTATION
constant
string
System.REAL_TIME_IMPLEMENTATION
- Description
This string constant identifies the internal interface used to get the high resolution real time. It is an implementation detail - see rusage.c for possible values and their meanings.
- See also
gethrtime
- ConstantREAL_TIME_IS_MONOTONIC
constant
string
System.REAL_TIME_IS_MONOTONIC
- Description
This string constant tells whether or not the high resolution real time returned by
gethrtime
, is monotonic or not. The value is "yes" if it is and "no" if it isn't.Monotonic time is not affected by clock adjustments that might happen to keep the calendaric clock in synch. It's therefore more suited to measure time intervals in programs.
- See also
gethrtime
- ConstantREAL_TIME_RESOLUTION
constant
int
System.REAL_TIME_RESOLUTION
- Description
The resolution of the real time returned by
gethrtime
, in nanoseconds. It is-1
if the resolution isn't known.- See also
gethrtime
- MethodAllocConsole
int
AllocConsole()- Description
Allocates a new console for the calling process.
- Note
Only available on certain Windows systems.
- Returns
0 on success, non-zero otherwise.
- MethodAttachConsole
int
AttachConsole(int
pid
)- Description
Attaches calling process to a specific console.
- Parameter
pid
- Note
Only available on certain Windows systems.
- Returns
0 on success, non-zero otherwise.
- MethodFreeConsole
int
FreeConsole()- Description
Detaches the calling process from its console.
- Note
Before calling this function,
Stdio.stderr
,Stdio.stdout
andStdio.stdin
must be closed.- Note
Only available on certain Windows systems.
- Returns
0 on success, non-zero otherwise.
- MethodGetComputerName
string
GetComputerName()- Description
Retrieves the NetBIOS name of the local computer.
- Note
This function is Windows specific, and is not available on all systems.
- MethodGetFileAttributes
int
GetFileAttributes(string(8bit)
filename
)- Description
Get the file attributes for the specified file.
- Note
This function is only available on Win32 systems.
- See also
SetFileAttributes()
- MethodGetNamedSecurityInfo
mapping
(string
:mixed
) GetNamedSecurityInfo(string
name
,int
|void
type
,int
|void
flags
)- Note
This function is only available on some Win32 systems.
- See also
SetNamedSecurityInfo()
- MethodGetUserName
string
GetUserName()- Description
Retrieves the name of the user associated with the current thread.
- Note
This function is Windows specific, and is not available on all systems.
- MethodLogonUser
UserToken
LogonUser(string
username
,string
|zero
domain
,string
|zero
password
,int
|void
logon_type
,int
|void
logon_provider
)- Description
Logon a user.
- Parameter
username
User name of the user to login.
- Parameter
domain
Domain to login on, or zero if local logon.
- Parameter
password
Password to login with (if required).
- Parameter
logon_type
One of the following values:
LOGON32_LOGON_BATCH
LOGON32_LOGON_INTERACTIVE
LOGON32_LOGON_SERVICE
LOGON32_LOGON_NETWORK
This is the default.
- Parameter
logon_provider
One of the following values:
LOGON32_PROVIDER_DEFAULT
This is the default.
- Returns
Returns a login
UserToken
object on success, and zero on failure.- Note
This function is only available on some Win32 systems.
- MethodLookupAccountName
array
(mixed
) LookupAccountName(string
|int(0)
sys
,string
account
)- Returns
Returns
0
(zero) if theaccount
was not found, and an array containing the following on success:Array SID
0
SID
object representing theaccount
.string
1
Domain name.
int
2
Account type.
- Note
This function is only available on some Win32 systems.
- MethodNetGetAnyDCName
string
NetGetAnyDCName(string
|int(0)
server
,string
domain
)- Description
Get name of a domain controller from a server.
- Parameter
server
Server the domain exists on.
- Parameter
domain
Domain to get a domain controller for.
- Returns
Returns the name of a domain controller on success. Throws errors on failure.
- Note
This function is only available on some Win32 systems.
- See also
NetUserGetInfo()
,NetUserEnum()
,NetGroupEnum()
,NetLocalGroupEnum()
,NetUserGetGroups()
,NetUserGetLocalGroups()
,NetGroupGetUsers()
,NetLocalGroupGetMembers()
,NetGetDCName()
- MethodNetGetDCName
string
NetGetDCName(string
|int(0)
server
,string
domain
)- Description
Get name of the domain controller from a server.
- Parameter
server
Server the domain exists on.
- Parameter
domain
Domain to get the domain controller for.
- Returns
Returns the name of the domain controller on success. Throws errors on failure.
- Note
This function is only available on some Win32 systems.
- See also
NetUserGetInfo()
,NetUserEnum()
,NetGroupEnum()
,NetLocalGroupEnum()
,NetUserGetGroups()
,NetUserGetLocalGroups()
,NetGroupGetUsers()
,NetLocalGroupGetMembers()
,NetGetAnyDCName()
- MethodNetGroupEnum
array
(string
|array
(string
|int
)) NetGroupEnum(string
|int(0)
|void
server
,int
|void
level
)- Description
Get information about network groups.
- Parameter
server
Server the groups exist on.
- Parameter
level
Information level. One of:
0
1
2
- Returns
Returns an array on success. Throws errors on failure.
- FIXME
Document the return value.
- Note
This function is only available on some Win32 systems.
- See also
NetUserGetInfo()
,NetUserEnum()
,NetLocalGroupEnum()
,NetUserGetGroups()
,NetUserGetLocalGroups()
,NetGroupGetUsers()
,NetLocalGroupGetMembers()
,NetGetDCName()
,NetGetAnyDCName()
- MethodNetGroupGetUsers
array
(string
|array
(int
|string
)) NetGroupGetUsers(string
|int(0)
server
,string
group
,int
|void
level
)- Description
Get information about group membership for a network group.
- Parameter
server
Server the groups exist on.
- Parameter
group
Group to retrieve members for.
- Parameter
level
Information level. One of:
0
1
- Returns
Returns an array on success. Throws errors on failure.
- FIXME
Document the return value.
- Note
This function is only available on some Win32 systems.
- See also
NetUserGetInfo()
,NetUserEnum()
,NetGroupEnum()
,NetLocalGroupEnum()
,NetUserGetGroups()
,NetUserGetLocalGroups()
,NetLocalGroupGetMembers()
,NetGetDCName()
,NetGetAnyDCName()
- MethodNetLocalGroupEnum
array
(array
(string
|int
)) NetLocalGroupEnum(string
|int(0)
|void
server
,int
|void
level
)- Description
Get information about local network groups.
- Parameter
server
Server the groups exist on.
- Parameter
level
Information level. One of:
0
1
- Returns
Returns an array on success. Throws errors on failure.
- FIXME
Document the return value.
- Note
This function is only available on some Win32 systems.
- See also
NetUserGetInfo()
,NetUserEnum()
,NetGroupEnum()
,NetUserGetGroups()
,NetUserGetLocalGroups()
,NetGroupGetUsers()
,NetLocalGroupGetMembers()
,NetGetDCName()
,NetGetAnyDCName()
- MethodNetLocalGroupGetMembers
array
(string
|array
(int
|string
)) NetLocalGroupGetMembers(string
|int(0)
server
,string
group
,int
|void
level
)- Description
Get information about group membership for a network group.
- Parameter
server
Server the groups exist on.
- Parameter
group
Group to retrieve members for.
- Parameter
level
Information level. One of:
0
1
2
3
- Returns
Returns an array on success. Throws errors on failure.
- FIXME
Document the return value.
- Note
This function is only available on some Win32 systems.
- See also
NetUserGetInfo()
,NetUserEnum()
,NetGroupEnum()
,NetLocalGroupEnum()
,NetUserGetGroups()
,NetUserGetLocalGroups()
,NetGroupGetUsers()
,NetGetDCName()
,NetGetAnyDCName()
- MethodNetSessionEnum
array
(int
|string
) NetSessionEnum(string
|int(0)
server
,string
|int(0)
client
,string
|int(0)
user
,int
level
)- Description
Get session information.
- Parameter
level
One of
0
1
2
10
502
- Note
This function is only available on some Win32 systems.
- MethodNetUserEnum
array
(string
|array
(string
|int
)) NetUserEnum(string
|int(0)
|void
server
,int
|void
level
,int
|void
filter
)- Description
Get information about network users.
- Parameter
server
Server the users exist on.
- Parameter
level
Information level. One of:
0
1
2
3
10
11
20
- Returns
Returns an array on success. Throws errors on failure.
- FIXME
Document the return value.
- Note
This function is only available on some Win32 systems.
- See also
NetUserGetInfo()
,NetGroupEnum()
NetLocalGroupEnum()
,NetUserGetGroups()
,NetUserGetLocalGroups()
,NetGroupGetUsers()
,NetLocalGroupGetMembers()
,NetGetDCName()
,NetGetAnyDCName()
- MethodNetUserGetGroups
array
(array
(string
|int
)) NetUserGetGroups(string
|int(0)
server
,string
user
,int
|void
level
)- Description
Get information about group membership for a network user.
- Parameter
server
Server the groups exist on.
- Parameter
user
User to retrieve groups for.
- Parameter
level
Information level. One of:
0
1
- Returns
Returns an array on success. Throws errors on failure.
- FIXME
Document the return value.
- Note
This function is only available on some Win32 systems.
- See also
NetUserGetInfo()
,NetUserEnum()
,NetGroupEnum()
,NetLocalGroupEnum()
,NetUserGetLocalGroups()
,NetGroupGetUsers()
,NetLocalGroupGetMembers()
,NetGetDCName()
,NetGetAnyDCName()
- MethodNetUserGetInfo
string
|array
(string
|int
) NetUserGetInfo(string
username
,string
|int(0)
server
,int
|void
level
)- Description
Get information about a network user.
- Parameter
username
User name of the user to get information about.
- Parameter
server
Server the user exists on.
- Parameter
level
Information level. One of:
0
1
2
3
10
11
20
- Returns
Returns an array on success. Throws errors on failure.
- FIXME
Document the return value.
- Note
This function is only available on some Win32 systems.
- See also
NetUserEnum()
,NetGroupEnum()
NetLocalGroupEnum()
,NetUserGetGroups()
,NetUserGetLocalGroups()
,NetGroupGetUsers()
,NetLocalGroupGetMembers()
,NetGetDCName()
,NetGetAnyDCName()
- MethodNetUserGetLocalGroups
array
(string
) NetUserGetLocalGroups(string
|int(0)
server
,string
user
,int
|void
level
,int
|void
flags
)- Description
Get information about group membership for a local network user.
- Parameter
server
Server the groups exist on.
- Parameter
user
User to retrieve groups for.
- Parameter
level
Information level. One of:
0
- Parameter
flags
Zero, of one of the following:
LG_INCLUDE_INDIRECT
- Returns
Returns an array on success. Throws errors on failure.
- FIXME
Document the return value.
- Note
This function is only available on some Win32 systems.
- See also
NetUserGetInfo()
,NetUserEnum()
,NetGroupEnum()
,NetLocalGroupEnum()
,NetUserGetGroups()
,NetGroupGetUsers()
,NetLocalGroupGetMembers()
,NetGetDCName()
,NetGetAnyDCName()
- MethodNetWkstaUserEnum
array
(mixed
) NetWkstaUserEnum(string
|int(0)
server
,int
level
)- Parameter
level
One of
0
1
- Note
This function is only available on some Win32 systems.
- MethodSetFileAttributes
int
SetFileAttributes(string(8bit)
filename
)- Description
Set the file attributes for the specified file.
- Note
This function is only available on Win32 systems.
- See also
GetFileAttributes()
- MethodSetNamedSecurityInfo
int
SetNamedSecurityInfo(string
name
,mapping
(string
:mixed
)options
)- Note
This function is only available on some Win32 systems.
- See also
GetNamedSecurityInfo()
- Methodchmod
void
chmod(string
path
,int
mode
)- Description
Sets the protection mode of the specified path.
- Note
Throws errors on failure.
- See also
Stdio.File->open()
,errno()
- Methodchown
void
chown(string
path
,int
uid
,int
gid
,void
|int
symlink
)- Description
Sets the owner and group of the specified path.
If
symlink
is set andpath
refers to a symlink, then the owner and group for the symlink are set. Symlinks are dereferenced otherwise.- Note
Throws errors on failure.
This function is not available on all platforms. On some platforms the
symlink
flag isn't supported. In that case, the function does nothing ifpath
is a symlink.
- Methodchroot
int
chroot(string
newroot
)int
chroot(Stdio.File
newroot
)- Description
Changes the root directory for this process to the indicated directory.
- Returns
A nonzero value is returned if the call is successful. If there's an error then zero is returned and
errno
is set appropriately.- Note
Since this function modifies the directory structure as seen from Pike, you have to modify the environment variables PIKE_MODULE_PATH and PIKE_INCLUDE_PATH to compensate for the new root-directory.
This function only exists on systems that have the chroot(2) system call.
The second variant only works on systems that also have the fchroot(2) system call.
- Note
On success the current working directory will be changed to the new
"/"
. This behavior was added in Pike 7.9.- Note
This function could be interrupted by signals prior to Pike 7.9.
- Methodcleargroups
void
cleargroups()- Description
Clear the supplemental group access list.
- Note
Throws errors on failure.
This function is not available on all platforms.
- See also
setgroups()
,initgroups()
,getgroups()
- Methodclonefile
void
clonefile(string
from
,string
to
)- Description
Copy a file
from
with copy-on-write semantics to the destination namedto
.- Note
This function is currently only available on macOS and Linux, and then only when
from
andto
reference a common file system with copy-on-write support (e.g. an APFS volume).- See also
hardlink()
,symlink()
- Methoddaemon
int
daemon(int
nochdir
,int
noclose
)- Description
Low level system daemon() function, see also
Process.daemon()
- Methoddrop_privs
void
drop_privs(string
user
,void
|string
group
,void
|int
exception
)- Description
Drops the process privileges to the provided
user
and optionallygroup
. If no group is provided the default group for the user is used.- Parameter
exception
If true, an error exception will be thrown if
- Methoddumpable
bool
dumpable(bool
|void
val
)- Description
Get and/or set whether this process should be able to dump core.
- Parameter
val
Optional argument to set the core dumping state.
0
Disable core dumping for this process.
1
Enable core dumping for this process.
- Returns
Returns
1
if this process currently is capable of dumping core, and0
(zero) if not.- Note
This function is currently only available on some versions of Linux.
- Methodendgrent
int
endgrent()- Description
Closes the /etc/groups file after using the
getgrent
function.- See also
get_all_groups()
getgrent()
setgrent()
- Methodendpwent
int
endpwent()- Description
Closes the passwd source opened by
getpwent
function using the systemfunction endpwent(3).- Returns
Always
0
(zero)- See also
get_all_users()
getpwent()
setpwent()
- Methodget_home
string
|zero
get_home()- Description
Get the full path for the current user's home directory
- Returns
the full path to the current user's home directory, or zero if the appropriate environment variables have not been set.
- Note
This method uses the standard environment variables for various systems to determine the home directory.
- Methodget_netinfo_property
array
(string
) get_netinfo_property(string
domain
,string
path
,string
property
)- Description
Queries a NetInfo server for property values at the given path.
- Parameter
domain
NetInfo domain. Use "." for the local domain.
- Parameter
path
NetInfo path for the property.
- Parameter
property
Name of the property to return.
- Returns
An array holding all property values. If the
path
orproperty
cannot be not found 0 is returned instead. If the NetInfodomain
is not found or cannot be queried an exception is thrown.- Example
system.get_netinfo_property(".", "/locations/resolver", "domain"); ({ "idonex.se" })
- Note
Only available on operating systems which have NetInfo libraries installed.
- Methodget_user
string
|zero
get_user()- Description
Get the username of the user that started the process.
- Returns
the username of the user "associated" with the current process, or zero if a method to find this information does not exist on the current system.
- Note
On NT systems, this returns the user the current thread is running as, while on Unix-like systems this function returns the user that started the process (rather than the effective user)..
- Methodgetegid
int
getegid()- Description
Get the effective group ID.
- See also
setuid
,getuid
,setgid
,getgid
,seteuid
,geteuid
,setegid
- Methodgeteuid
int
geteuid()- Description
Get the effective user ID.
- See also
setuid
,getuid
,setgid
,getgid
,seteuid
,getegid
,setegid
- Methodgetgid
int
getgid()- Description
Get the real group ID.
- See also
setuid
,getuid
,setgid
,seteuid
,geteuid
,getegid
,setegid
- Methodgetgrent
array
(int
|string
|array
(string
)) getgrent()- Description
Get a group entry from /etc/groups file.
getgrent
interates thru the groups source and returns one entry per call using the systemfunction getgrent(3).Always call
endgrent
when done usinggetgrent
!- Returns
An array with the information about the group
Array string
0
Group name
string
1
Group password (encrypted)
int
2
ID of the group
array
3..
Array with UIDs of group members
- See also
get_all_groups()
getgrnam()
getgrgid()
- Methodgetgroups
array
(int
) getgroups()- Description
Get the current supplemental group access list for this process.
- Note
Throws errors on failure.
This function is not available on all platforms.
- See also
setgroups()
,cleargroups()
,initgroups()
,getgid()
,getgid()
,getegid()
,setegid()
- Methodgethostbyaddr
array
(string
|array
(string
)) gethostbyaddr(string
addr
)- Description
Returns an array with information about the specified IP address.
- Returns
The returned array contains the same information as that returned by
gethostbyname()
.- Note
This function only exists on systems that have the gethostbyaddr(2) or similar system call.
- See also
gethostbyname()
- Methodgethostbyname
array
(string
|array
(string
)) gethostbyname(string
hostname
)- Description
Returns an array with information about the specified host.
- Returns
The returned array contains the following:
Array string
hostname
Name of the host.
array
(string
)ips
Array of IP numbers for the host.
array
(string
)aliases
Array of alternative names for the host.
- Note
This function only exists on systems that have the gethostbyname(2) or similar system call.
- See also
gethostbyaddr()
- Methodgethostname
string
gethostname()- Description
Returns a string with the name of the host.
- Note
This function only exists on systems that have the gethostname(2) or uname(2) system calls.
- Methodgetitimer
array
(float
) getitimer(int
timer
)- Description
Shows the state of the selected
timer
.- Returns
Array float
0
The interval of the timer.
float
1
The value of the timer.
- Parameter
timer
One of
ITIMER_REAL
,ITIMER_VIRTUAL
andITIMER_PROF
.
- Methodgetloadavg
array
(float
) getloadavg()- Description
Get system load averages.
- Returns
Array float
0
Load average over the last minute.
float
1
Load average over the last 5 minutes.
float
2
Load average over the last 15 minutes.
- Methodgetpgrp
int
getpgrp(int
|void
pid
)- Description
Get the process group id for the process
pid
. With no argguments or with 'pid' equal to zero, returns the process group ID of this process.- Note
Not all platforms support getting the process group for other processes.
Not supported on all platforms.
- See also
getpid
,getppid
- Methodgetppid
int
getppid()- Description
Returns the process ID of the parent process.
- See also
getpid
,getpgrp
- Methodgetpwent
array
(int
|string
) getpwent()- Description
When first called, the
getpwent
function opens the passwd source and returns the first record using the systemfunction getpwent(3). For each following call, it returns the next record until EOF.Call
endpwent
when done usinggetpwent
.- Returns
An array with the information about the user
Array string
0
Users username (loginname)
string
1
User password (encrypted)
int
2
Users ID
int
3
Users primary group ID
string
4
Users real name an possibly some other info
string
5
Users home directory
string
6
Users shell
0 if EOF.
- See also
get_all_users()
getpwnam()
getpwent()
setpwent()
endpwent()
- Methodgetrlimit
array
(int
) getrlimit(string
resource
)- Description
Returns the current process limitation for the selected
resource
.- Parameter
resource
cpu
The CPU time limit in seconds.
fsize
The maximum size of files the process may create.
data
The maximum size of the process's data segment.
stack
The maximum size of process stack, in bytes.
core
rss
Specifies the limit of pages the process's resident set.
nproc
The maximum number of processes that can be created for the real user ID of the calling process.
nofile
The maximum number of file descriptors the process can open, +1.
memlock
The maximum number of bytes of virtual memory that may be locked into RAM.
as
vmem
- Returns
Array int
0
The soft limit for the resource.
-1
means no limit.int
1
The hard limit for the resource.
-1
means no limit.- Note
This function nor all the resources are available on all systems.
- See also
getrlimits
,setrlimit
- Methodgetrlimits
mapping
(string
:array
(int
)) getrlimits()- Description
Returns all process limits in a mapping.
- See also
getrlimit
,setrlimit
- Methodgetrusage
mapping
(string
:int
) getrusage()- Description
Return resource usage about the current process. An error is thrown if it isn't supported or if the system fails to return any information.
- Returns
Returns a mapping describing the current resource usage:
"utime"
:int
Time in milliseconds spent in user code.
"stime"
:int
Time in milliseconds spent in system calls.
"maxrss"
:int
Maximum used resident size in kilobytes. [1]
"ixrss"
:int
Quote from GNU libc: An integral value expressed in kilobytes times ticks of execution, which indicates the amount of memory used by text that was shared with other processes. [1]
"idrss"
:int
Quote from GNU libc: An integral value expressed the same way, which is the amount of unshared memory used for data. [1]
"isrss"
:int
Quote from GNU libc: An integral value expressed the same way, which is the amount of unshared memory used for stack space. [1]
"minflt"
:int
Minor page faults, i.e. TLB misses which required no disk I/O.
"majflt"
:int
Major page faults, i.e. paging with disk I/O required.
"nswap"
:int
Number of times the process has been swapped out entirely.
"inblock"
:int
Number of block input operations.
"oublock"
:int
Number of block output operations.
"msgsnd"
:int
Number of IPC messsages sent.
"msgrcv"
:int
Number of IPC messsages received.
"nsignals"
:int
Number of signals received.
"nvcsw"
:int
Number of voluntary context switches (usually to wait for some service).
"nivcsw"
:int
Number of preemptions, i.e. context switches due to expired time slices, or when processes with higher priority were scheduled.
"sysc"
:int
Number of system calls. [2]
"ioch"
:int
Number of characters read and written. [2]
"rtime"
:int
Elapsed real time (ms). [2]
"ttime"
:int
Elapsed system trap (system call) time (ms). [2]
"tftime"
:int
Text page fault sleep time (ms). [2]
"dftime"
:int
Data page fault sleep time (ms). [2]
"kftime"
:int
Kernel page fault sleep time (ms). [2]
"ltime"
:int
User lock wait sleep time (ms). [2]
"slptime"
:int
Other sleep time (ms). [2]
"wtime"
:int
Wait CPU (latency) time (ms). [2]
"stoptime"
:int
Time spent in stopped (suspended) state. [2]
"brksize"
:int
Heap size. [3]
"stksize"
:int
Stack size. [3]
- Note
[1] Not if /proc rusage is used.
[2] Only from (Solaris?) /proc rusage.
[3] Only from /proc PRS usage.
On some systems, only utime will be filled in.
- See also
gethrvtime()
- Methodgetsid
int
getsid(int
|void
pid
)- Description
Get the process session ID for the given process. If pid is not specified, the session ID for the current process will be returned.
- Note
This function is not available on all platforms.
- Throws
Throws an error if the system call fails.
- See also
getpid
,getpgrp
,setsid
- Methodgettimeofday
array
(int
) gettimeofday()- Description
Calls gettimeofday(); the result is an array of seconds, microseconds, and possible tz_minuteswes, tz_dstttime as given by the gettimeofday(2) system call (read the man page).
- See also
time()
,gethrtime()
- Methodgetuid
int
getuid()- Description
Get the real user ID.
- See also
setuid
,setgid
,getgid
,seteuid
,geteuid
,setegid
,getegid
- Methodhardlink
void
hardlink(string
from
,string
to
)- Description
Create a hardlink named
to
from the filefrom
.- Note
This function is not available on all platforms.
- See also
symlink()
,clonefile()
,mv()
,rm()
- Methodhw_random
string(8bit)
hw_random(int(0..)
length
)- Description
Read a specified number of bytes from the hardware random generator, if available. This function will not exist if hardware random is not available. Currently only supports Intel RDRAND CPU instruction.
- Methodinitgroups
void
initgroups(string
name
,int
base_gid
)- Description
Initializes the supplemental group access list according to the system group database.
base_gid
is also added to the group access list.- Note
Throws errors on failure.
This function is not available on all platforms.
- See also
setuid()
,getuid()
,setgid()
,getgid()
,seteuid()
,geteuid()
,setegid()
,getegid()
,getgroups()
,setgroups()
- Methodinnetgr
bool
innetgr(string
netgroup
,string
|void
machine
,string
|void
user
,string
|void
domain
)- Description
Searches for matching entries in the netgroup database (usually /etc/netgroup). If any of the
machine
,user
ordomain
arguments are zero or missing, those fields will match any value in the selectednetgroup
.- Note
This function isn't available on all platforms.
- Methodnanosleep
float
nanosleep(int
|float
seconds
)- Description
Call the system nanosleep() function.
This is not to be confused with the global function
predef::sleep()
that does more elaborate things and can sleep with better precision (although dependant on a normal functioning system clock).Returns the remaining time to sleep (as the system function does).
- See also
predef::sleep()
sleep()
usleep()
- Note
May not be present; only exists if the function exists in the current system.
- Methodnormalize_path
utf8_string
normalize_path(string(8bit)
path
)- Description
Normalize an existing Windows file system path.
The following transformations are currently done:
If the
path
is not valid UTF-8, it will be converted into UTF-8.Forward slashes (
'/'
) are converted to backward slashes ('\'
).Trailing slashes are removed, except a single slash after a drive letter (e.g.
"C:\"
is returned instead of"C:"
).Extraneous empty extensions are removed.
Short filenames are expanded to their corresponding long variants.
Relative paths are expanded to absolute paths.
Current- and parent-directory path components (
"."
and".."
) are followed, similar tocombine_path
.Case-information in directory and file names is restored.
Drive letters are returned in uppercase.
The host and share parts of UNC paths are returned in lowercase.
- Returns
A normalized absolute path without trailing slashes.
Throws errors on failure, e.g. if the file or directory doesn't exist.
- Note
File fork information is currently not supported (invalid data).
- Note
In Pike 7.6 and earlier, this function didn't preserve a single slash after drive letters, and it didn't convert the host and share parts of an UNC path to lowercase.
- See also
combine_path()
,combine_path_nt()
- Methodopenlog
void
openlog(string
ident
,int
options
,int
facility
)- Description
Initializes the connection to syslogd.
- Parameter
ident.
The
ident
argument specifies an identifier to tag all logentries with.- Parameter
options
A bitfield specifying the behaviour of the message logging. Valid options are:
LOG_PID
Log the process ID with each message.
LOG_CONS
Write messages to the console if they can't be sent to syslogd.
LOG_NDELAY
Open the connection to syslogd now and not later.
LOG_NOWAIT
Do not wait for subprocesses talking to syslogd.
- Parameter
facility
Specifies what subsystem you want to log as. Valid facilities are:
LOG_AUTH
Authorization subsystem
LOG_AUTHPRIV
LOG_CRON
Crontab subsystem
LOG_DAEMON
System daemons
LOG_KERN
Kernel subsystem (NOT USABLE)
LOG_LOCAL
For local use
LOG_LOCAL1
LOG_LOCAL2
LOG_LOCAL3
LOG_LOCAL4
LOG_LOCAL5
LOG_LOCAL6
LOG_LOCAL7
LOG_LPR
Line printer spooling system
LOG_MAIL
Mail subsystem
LOG_NEWS
Network news subsystem
LOG_SYSLOG
LOG_USER
LOG_UUCP
UUCP subsystem
- Note
Only available on systems with syslog(3).
- Bugs
LOG_NOWAIT should probably always be specified.
- See also
syslog
,closelog
- Methodrdtsc
int
rdtsc()- Description
Executes the rdtsc (clock pulse counter) instruction and returns the result.
- Methodreadlink
string
readlink(string
path
)- Description
Returns what the symbolic link
path
points to.- Note
This function is not available on all platforms.
- See also
symlink()
- Methodresolvepath
string
resolvepath(string
path
)- Description
Resolve all symbolic links of a pathname.
This function resolves all symbolic links, extra ``/'' characters and references to /./ and /../ in
pathname
, and returns the resulting absolute path, or 0 (zero) if an error occurs.- Note
This function is not available on all platforms.
- See also
readlink()
,symlink()
- Methodsetegid
int
setegid(int
egid
)- Description
Set the effective group ID to
egid
. Ifegid
is-1
the uid for "nobody" will be used.- Returns
Returns the current errno.
- Throws
Throws an error if there is no "nobody" user when
egid
is-1
.- Note
This function isn't available on all platforms.
- Methodseteuid
int
seteuid(int
euid
)- Description
Set the effective user ID to
euid
. Ifeuid
is-1
the uid for "nobody" will be used.- Returns
Returns the current errno.
- Throws
Throws an error if there is no "nobody" user when
euid
is-1
.- Note
This function isn't available on all platforms.
- Methodsetgid
int
setgid(int
gid
)- Description
Sets the real group ID, effective group ID and saved group ID to
gid
. Ifgid
is-1
the uid for "nobody" will be used.- Throws
Throws an error if no "nobody" user when
gid
is-1
.- Returns
Returns the current errno.
- Note
This function is not available on all platforms.
- See also
getuid()
,setuid()
,getgid()
,seteuid()
,geteuid()
,setegid()
,getegid()
- Methodsetgrent
int
setgrent()- Description
Rewinds the
getgrent
pointer to the first entry- See also
get_all_groups()
getgrent()
endgrent()
- Methodsetgroups
void
setgroups(array
(int
)gids
)- Description
Set the supplemental group access list for this process.
- Note
Throws errors on failure.
This function is not available on all platforms.
- See also
initgroups()
,cleargroups()
,getgroups()
,getgid()
,getgid()
,getegid()
,setegid()
- Methodsetitimer
float
setitimer(int
timer
,int
|float
value
)- Description
Sets the
timer
to the suppliedvalue
. Returns the current timer interval.- Parameter
timer
One of
ITIMER_REAL
,ITIMER_VIRTUAL
andITIMER_PROF
.
- Methodsetpgrp
int
setpgrp()- Description
Make this process a process group leader.
- Note
Not supported on all platforms.
- Methodsetproctitle
void
setproctitle(string
title
,mixed
...extra
)- Description
Sets the processes title.
- Methodsetpwent
int
setpwent()- Description
Resets the
getpwent
function to the first entry in the passwd source using the systemfunction setpwent(3).- Returns
Always
0
(zero)- See also
get_all_users()
getpwent()
endpwent()
- Methodsetresgid
int
setresgid(int
rgid
,int
egid
,int
sgid
)- Description
Sets the real, effective and saved group ID to
rgid
,egid
andsgid
respectively.- Returns
Returns zero on success and errno on failure.
- Methodsetresuid
int
setresuid(int
ruid
,int
euid
,int
suid
)- Description
Sets the real, effective and saved set-user-ID to
ruid
,euid
andsuid
respectively.- Returns
Returns zero on success and errno on failure.
- Methodsetrlimit
bool
setrlimit(string
resource
,int
soft
,int
hard
)- Description
Sets the
soft
and thehard
process limit on aresource
.- See also
getrlimit
,getrlimits
- Methodsetsid
int
setsid()- Description
Set a new process session ID for the current process, and return it.
- Note
This function isn't available on all platforms.
- Throws
Throws an error if the system call fails.
- See also
getpid
,setpgrp
,getsid
- Methodsetuid
int
setuid(int
uid
)- Description
Sets the real user ID, effective user ID and saved user ID to
uid
.- Returns
Returns the current errno.
- Note
This function isn't available on all platforms.
- See also
getuid()
,setgid()
,getgid()
,seteuid()
,geteuid()
,setegid()
,getegid()
- Methodsleep
int
sleep(int
seconds
)- Description
Call the system sleep() function.
This is not to be confused with the global function
predef::sleep()
that does more elaborate things and can sleep with better precision (although dependant on a normal functioning system clock).- Note
The system's sleep function often utilizes the alarm(2) call and might not be perfectly thread safe in combination with simultaneous sleep()'s or alarm()'s. It might also be interrupted by other signals.
If you don't need it to be independant of the system clock, use
predef::sleep()
instead.May not be present; only exists if the function exists in the current system.
- See also
predef::sleep()
usleep()
nanosleep()
- Methodsymlink
void
symlink(string
from
,string
to
)- Description
Create a symbolic link named
to
that points tofrom
.- Note
This function is not available on all platforms.
- See also
hardlink()
,readlink()
,clonefile()
,mv()
,rm()
- Methodsync
void
sync()- Description
Flush operating system disk buffers to permanent storage.
- Note
On some operating systems this may require administrative privileges.
- Methodsyslog
void
syslog(int
priority
,string
msg
)- Description
Writes the message
msg
to the log with the priorities inpriority
.- Parameter
priority
Priority is a bit vector with the wanted priorities or:ed together.
0
LOG_EMERG, system is unusable.
1
LOG_ALERT, action must be taken immediately.
2
LOG_CRIT, critical conditions.
3
LOG_ERR, error conditions.
4
LOG_WARNING, warnind conditions.
5
LOG_NOTICE, normal, but significant, condition.
6
LOG_INFO, informational message.
7
LOG_DEBUG, debug-level message.
- Methodumask
int
umask(void
|int
mask
)- Description
Set the current umask to
mask
.If
mask
is not specified the current umask will not be changed.- Returns
Returns the old umask setting.
- Methoduname
mapping
(string
:string
) uname()- Description
Get operating system information.
- Returns
The resulting mapping contains the following fields:
"sysname"
:string
Operating system name.
"nodename"
:string
Hostname.
"release"
:string
Operating system release.
"version"
:string
Operating system version.
"machine"
:string
Hardware architecture.
"architecture"
:string
Basic instruction set architecture.
"isalist"
:string
List of upported instruction set architectures. Usually space-separated.
"platform"
:string
Specific model of hardware.
"hw provider"
:string
Manufacturer of the hardware.
"hw serial"
:string
Serial number of the hardware.
"srpc domain"
:string
Secure RPC domain.
- Note
This function only exists on systems that have the uname(2) or sysinfo(2) system calls.
Only the first five elements are always available.
- Methodusleep
void
usleep(int
usec
)- Description
Call the system usleep() function.
This is not to be confused with the global function
predef::sleep()
that does more elaborate things and can sleep with better precision (although dependant on a normal functioning system clock).- Note
The system's usleep function often utilizes the alarm(2) call and might not be perfectly thread safe in combination with simultaneous sleep()'s or alarm()'s. It might also be interrupted by other signals.
If you don't need it to be independant of the system clock, use
predef::sleep()
instead.May not be present; only exists if the function exists in the current system.
- See also
predef::sleep()
sleep()
nanosleep()
- Methodutime
void
utime(string
path
,int
atime
,int
mtime
,void
|int
symlink
)- Description
Set the last access time and last modification time for the path
path
toatime
andmtime
repectively. They are specified as unix timestamps with 1 second resolution.If
symlink
is set andpath
refers to a symlink, then the timestamps for the symlink are set. Symlinks are dereferenced otherwise.- Note
Throws errors on failure.
This function is not available on all platforms. On some platforms the
symlink
flag isn't supported. In that case, the function does nothing ifpath
is a symlink.- See also
System.set_file_atime
,System.set_file_mtime
Class System.Memory
- Description
A popular demand is a class representing a raw piece of memory or a mmap'ed file. This is usually not the most effective way of solving a problem, but it might help in rare situations.
Using mmap can lead to segmentation faults in some cases. Beware, and read about mmap before you try anything. Don't blame Pike if you shoot your foot off.
- Method_sizeof
int
sizeof(System.Memoryarg)- Description
returns the size of the memory (bytes). note: throws if not allocated
- Methodcast
(
string
)System.Memory()
(array
)System.Memory()- Description
Cast to string or array.
- Note
Throws if not allocated.
- Methodcreate
System.MemorySystem.Memory()
System.MemorySystem.Memory(
string
|Stdio.File
filename_to_mmap
)System.MemorySystem.Memory(
int
shmkey
,int
shmsize
,int
shmflg
)System.MemorySystem.Memory(
int
bytes_to_allocate
)- Description
Will call
mmap()
orallocate()
depending on argument, either mmap'ing a file (in shared mode, writeable if possible) or allocating a chunk of memory.
- Methodmmap
Methodmmap_private int
mmap(string
|Stdio.File
file
)int
mmap(string
|Stdio.File
file
,int
offset
,int
size
)int
mmap_private(string
|Stdio.File
file
)int
mmap_private(string
|Stdio.File
file
,int
offset
,int
size
)- Description
mmap a file. This will always try to mmap the file in PROT_READ|PROT_WRITE, readable and writable, but if it fails it will try once more in PROT_READ only.
- Methodpread
Methodpread16
Methodpread32
Methodpread16i
Methodpread32i
Methodpread16n
Methodpread32n string(8bit)
pread(int(0..)
pos
,int(0..)
len
)string(16bit)
pread16(int(0..)
pos
,int(0..)
len
)string
pread32(int(0..)
pos
,int(0..)
len
)string(16bit)
pread16i(int(0..)
pos
,int(0..)
len
)string
pread32i(int(0..)
pos
,int(0..)
len
)string(16bit)
pread16n(int(0..)
pos
,int(0..)
len
)string
pread32n(int(0..)
pos
,int(0..)
len
)- Description
Read a string from the memory. The 16 and 32 variants reads widestrings, 16 or 32 bits (2 or 4 bytes) wide, the i variants in intel byteorder, the normal in network byteorder, and the n variants in native byteorder.
len
is the number of characters, wide or not.pos
is the byte position (!).
- Methodpwrite
Methodpwrite16
Methodpwrite32
Methodpwrite16i
Methodpwrite32i int
pwrite(int(0..)
pos
,string
data
)int
pwrite16(int(0..)
pos
,string
data
)int
pwrite32(int(0..)
pos
,string
data
)int
pwrite16i(int(0..)
pos
,string
data
)int
pwrite32i(int(0..)
pos
,string
data
)- Description
Write a string to the memory (and to the file, if it's mmap()ed). The 16 and 32 variants writes widestrings, 16 or 32 bits (2 or 4 bytes) wide, the 'i' variants in intel byteorder, the other in network byteorder.
returns the number of bytes (not characters) written
Class System.SID
- Description
Security Identifier.
Objects of this class are returned by
LookupAccountName()
.- See also
LookupAccountName()
Class System.SecurityContext
Class System.TM
- Description
A wrapper for the system struct tm time keeping structure. This can be used as a (very) lightweight alternative to Calendar.
- Variablesec
Variablemin
Variablehour
Variablemday
Variablemon
Variableyear int(0..60)
System.TM.secint(0..59)
System.TM.minint(0..59)
System.TM.hourint(1..31)
System.TM.mdayint(0..11)
System.TM.monint
System.TM.year- Description
The various fields in the structure. Note that setting these might cause other fields to be recalculated, as an example, adding 1000 to the hour field would advance the 'mday', 'mon' and possibly 'year' fields.
When read the fields are always normalized.
Unlike the system struct tm the 'year' field is not year-1900, instead it is the actual year.
- Variableisdst
int
System.TM.isdst- Description
True if daylight-saving is in effect. If this field is -1 (the default) it (and the timezone info) will be updated automatically using the timezone rules.
- Variablewday
int
System.TM.wday- Description
The day of the week, sunday is 0, saturday is 6. This is calculated from the other fields and can not be changed directly.
- Variableyday
int
System.TM.yday- Description
The day of the year, from 0 (the first day) to 365 This is calculated from the other fields and can not be changed directly.
- Methodasctime
string
asctime()- Description
Return a string representing the time. Mostly useful for debug purposes.
- Note
In versions of Pike prior to Pike 8.0.1866 the exact format was very locale (see
Gettext.setlocale
) and OS dependent.
- Methodcast
(
int
)System.TM()
(string
)System.TM()- Description
Casted to an integer
unix_time
will be returned.Casting to a string will call
asctime
.
- Methodcreate
System.TMSystem.TM(
int
|Gmp.mpz
t
)- Description
Create a new
TM
initialized from a unix time_t. The timezone will always be UTC when using this function.
- Methodcreate
System.TMSystem.TM(
int
year
,int(0..11)
mon
,int(1..31)
mday
,int(0..24)
hour
,int(0..59)
min
,int(0..59)
sec
,string
|void
timezone
)- Description
Construct a new time using the given values. Slightly faster than setting them individually.
- Methodgmtime
bool
gmtime(int
time
)- Description
Initialize the struct tm to the UTC time for the specified unix time_t.
- Methodgmtime
bool
gmtime(Gmp.mpz
time
)- Description
Initialize the struct tm to the UTC time for the specified unix time_t.
- Methodlocaltime
bool
localtime(int
time
)- Description
Initialize the struct tm to the local time for the specified unix time_t.
- Methodstrftime
string(1..255)
strftime(string(1..255)
format
)- Description
Format the timestamp into a string.
See
predef::strftime()
for details.- See also
strptime()
,predef::strftime()
,predef::strptime()
,Gettext.setlocale()
- Methodstrptime
bool
strptime(string(1..255)
format
,string(1..255)
data
)- Note
The order of
format
anddata
are reversed compared topredef::strptime()
.- See also
strftime()
,predef::strftime()
,predef::strptime()
Class System.Time
- Description
The current time as a structure containing a sec and a usec member.
- Variablesec
Variableusec int
System.Time.secint
System.Time.usec- Description
The number of seconds and microseconds since the epoch and the last whole second, respectively. (See also
predef::time()
)- Note
Please note that these variables will continually update when they are requested, there is no need to create new Time() objects.
- Variableusec_full
int
System.Time.usec_full- Description
The number of microseconds since the epoch. Please note that pike needs to have been compiled with bignum support for this variable to contain sensible values.
Class System.Timer
- Methodcreate
System.TimerSystem.Timer(
int
|void
fast
)- Description
Create a new timer object. The timer keeps track of relative time with sub-second precision.
If
fast
is specified, the timer will not do system calls to get the current time but instead use the one maintained by pike. This will result in faster but more or less inexact timekeeping. The pike maintained time is only updated when aPike.Backend
object stops waiting and starts executing code.
- Methodget
float
get()- Description
Return the time in seconds since the last time get was called. The first time this method is called the time since the object was created is returned instead.
- Methodcreate
Module System.FSEvents
- Inherit_FSEvents
inherit System._FSEvents : _FSEvents
- Description
The
System.FSEvents
module provides an interface to FSEvents. FSEvents is an API in Mac OS X which allows an application to register for notifications of changes to a given directory tree without forcing the application to continously poll the directory tree.This module is designed for use in asynchronous, or backend mode. That is, rather than polling for changes, a function you specify will be called when events of interest occur.
- Note
This module requires the presence and use of a CFRunLoop based Backend object, otherwise this module will not receive events from the OS. CFRunLoop based backends are avilable on Mac OS X 10.5 and higher.
- See also
Pike.PollDeviceBackend.enable_core_foundation
- ConstantkFSEventStreamCreateFlagFileEvents
constant
System.FSEvents.kFSEventStreamCreateFlagFileEvents
- Description
Available in MacOS X 10.7 and newer.
- ConstantkFSEventStreamCreateFlagIgnoreSelf
constant
System.FSEvents.kFSEventStreamCreateFlagIgnoreSelf
- Description
Available in MacOS X 10.6 and newer.
- ConstantkFSEventStreamEventFlagChangeOwner
constant
System.FSEvents.kFSEventStreamEventFlagChangeOwner
- Description
Available in MacOS X 10.7 and newer.
- ConstantkFSEventStreamEventFlagEventIdsWrapped
constant
System.FSEvents.kFSEventStreamEventFlagEventIdsWrapped
- ConstantkFSEventStreamEventFlagFinderInfoMod
constant
System.FSEvents.kFSEventStreamEventFlagFinderInfoMod
- Description
Available in MacOS X 10.7 and newer.
- ConstantkFSEventStreamEventFlagHistoryDone
constant
System.FSEvents.kFSEventStreamEventFlagHistoryDone
- ConstantkFSEventStreamEventFlagInodeMetaMod
constant
System.FSEvents.kFSEventStreamEventFlagInodeMetaMod
- Description
Available in MacOS X 10.7 and newer.
- ConstantkFSEventStreamEventFlagIsDir
constant
System.FSEvents.kFSEventStreamEventFlagIsDir
- Description
Available in MacOS X 10.7 and newer.
- ConstantkFSEventStreamEventFlagIsFile
constant
System.FSEvents.kFSEventStreamEventFlagIsFile
- Description
Available in MacOS X 10.7 and newer.
- ConstantkFSEventStreamEventFlagIsSymlink
constant
System.FSEvents.kFSEventStreamEventFlagIsSymlink
- Description
Available in MacOS X 10.7 and newer.
- ConstantkFSEventStreamEventFlagItemCreated
constant
System.FSEvents.kFSEventStreamEventFlagItemCreated
- Description
Available in MacOS X 10.7 and newer.
- ConstantkFSEventStreamEventFlagItemModified
constant
System.FSEvents.kFSEventStreamEventFlagItemModified
- Description
Available in MacOS X 10.7 and newer.
- ConstantkFSEventStreamEventFlagItemRemoved
constant
System.FSEvents.kFSEventStreamEventFlagItemRemoved
- Description
Available in MacOS X 10.7 and newer.
- ConstantkFSEventStreamEventFlagKernelDropped
constant
System.FSEvents.kFSEventStreamEventFlagKernelDropped
- ConstantkFSEventStreamEventFlagMustScanSubDirs
constant
System.FSEvents.kFSEventStreamEventFlagMustScanSubDirs
- ConstantkFSEventStreamEventFlagRenamed
constant
System.FSEvents.kFSEventStreamEventFlagRenamed
- Description
Available in MacOS X 10.7 and newer.
- ConstantkFSEventStreamEventFlagRootChanged
constant
System.FSEvents.kFSEventStreamEventFlagRootChanged
- ConstantkFSEventStreamEventFlagUserDropped
constant
System.FSEvents.kFSEventStreamEventFlagUserDropped
- ConstantkFSEventStreamEventFlagXattrMod
constant
System.FSEvents.kFSEventStreamEventFlagXattrMod
- Description
Available in MacOS X 10.7 and newer.
- Methoddescribe_event_flag
string
describe_event_flag(int
mask
)- Description
describe the event flags associated with an event.
- Returns
a string describing the flags set.
Class System.FSEvents.BlockingEventStream
- Description
A variation of
EventStream
that provides a blocking interface.- Note
A quirk of the underlying IO subsystem in CoreFoundation is that there is exactly one runloop per thread. Because FSEvents uses CoreFoundation, this means that there's no meaningful way to specify which backend should process these events. Therefore, always make sure that the thread you create the EventStream object is the same one you read events from, otherwise
read_event
will run not run the EventLoop that this EventStream is registered with, resulting in events never being delivered.
- Methodcreate
System.FSEvents.BlockingEventStreamSystem.FSEvents.BlockingEventStream(
array
(string
)paths
,float
latency
,int
|void
since_when
,int
|void
flags
)
Class System.FSEvents.EventStream
- Methodadd_path
void
add_path(string
path
)- Description
Add a path to the monitor list.
- Parameter
path
- Note
this can only be called when the monitor is stopped.
- Methodcreate
System.FSEvents.EventStreamSystem.FSEvents.EventStream(
array
(string
)paths
,float
latency
,int
|void
since_when
,int
|void
flags
)- Description
Creates a new Public.System.FSEvents.EventStream object
- Parameter
paths
An array with each element containing a path to a directory, signifying the root of a filesystem hierarchy to be watched for modifications.
Additional paths may be added later using
add_path()
, though only if the stream is stopped.- Parameter
latency
The number of seconds the service should wait after hearing about an event from the kernel before passing it along to the client via its callback. Specifying a larger value may result in more effective temporal coalescing, resulting in fewer callbacks and greater overall efficiency.
- Parameter
since_when
The service will supply events that have happened after the given event ID. To ask for events "since now" pass the constant kFSEventStreamEventIdSinceNow. Do not pass zero for this value unless you want to receive events for the requested directories "since the beginning of time".
- Parameter
flags
Flags that modify the behavior of the stream being created. See Apple's FSEvents documentation for details of the various flags available.
- Methodflush_async
void
flush_async()- Description
Requests that the FS Events service to flush out any events that have occurred but have not yet been delivered, due to the latency parameter that was supplied when the stream was created.
This flushing occurs asynchronously -- events most likely will not have been delivered by the time this call returns.
- Note
Only call this function after the stream has been started, via start().
- Methodflush_sync
void
flush_sync()- Description
Requests that the FS Events service to flush out any events that have occurred but have not yet been delivered, due to the latency parameter that was supplied when the stream was created.
Flushing synchronously when using this method; clients will have received all the callbacks by the time this call returns to them.
- Note
Only call this function after the stream has been started, via start().
- Methodset_callback
void
set_callback(function
(:void
)callback
)- Description
Sets the function that will be called when a file notification event is received.
The method signature for the callback is:
void event_callback(string path, int flags, int event_id)
- Methodstart
void
start()- Description
Requests that new events be delivered to this EventStream.
If a value was supplied for the since_when parameter then "historical" events will be sent via your callback first, then a HistoryDone event, then "contemporary" events will be sent on an ongoing basis.
- Methodadd_path
- Inherit_FSEvents
Module System.Inotify
- Description
This module implements an API to linux inotify. It is available on all kernels from version 2.6.13 onwards. Inotify offers fast and scalable file notifications.
- ConstantIN_ACCESS
ConstantIN_ATTRIB
ConstantIN_CLOSE
ConstantIN_CLOSE_WRITE
ConstantIN_CLOSE_NOWRITE
ConstantIN_CREATE
ConstantIN_DELETE
ConstantIN_DELETE_SELF
ConstantIN_MODIFY
ConstantIN_MOVE_SELF
ConstantIN_MOVED_FROM
ConstantIN_MOVED_TO
ConstantIN_OPEN
ConstantIN_MOVE
ConstantIN_DONT_FOLLOW
ConstantIN_MASK_ADD
ConstantIN_ONESHOT
ConstantIN_ONLYDIR
ConstantIN_IGNORED
ConstantIN_ISDIR
ConstantIN_Q_OVERFLOW
ConstantIN_UNMOUNT constant
System.Inotify.IN_ACCESS
constant
System.Inotify.IN_ATTRIB
constant
System.Inotify.IN_CLOSE
constant
System.Inotify.IN_CLOSE_WRITE
constant
System.Inotify.IN_CLOSE_NOWRITE
constant
System.Inotify.IN_CREATE
constant
System.Inotify.IN_DELETE
constant
System.Inotify.IN_DELETE_SELF
constant
System.Inotify.IN_MODIFY
constant
System.Inotify.IN_MOVE_SELF
constant
System.Inotify.IN_MOVED_FROM
constant
System.Inotify.IN_MOVED_TO
constant
System.Inotify.IN_OPEN
constant
System.Inotify.IN_MOVE
constant
System.Inotify.IN_CLOSE
constant
System.Inotify.IN_DONT_FOLLOW
constant
System.Inotify.IN_MASK_ADD
constant
System.Inotify.IN_ONESHOT
constant
System.Inotify.IN_ONLYDIR
constant
System.Inotify.IN_IGNORED
constant
System.Inotify.IN_ISDIR
constant
System.Inotify.IN_Q_OVERFLOW
constant
System.Inotify.IN_UNMOUNT
- Description
Please have a look at the inotify(7) manpage for information about these constants.
- Note
Some constants may not be available when the module has been compiled on a machine with linux kernel before 2.6.15. See the manpage for more details.
- ConstantIN_ALL_EVENTS
constant
System.Inotify.IN_ALL_EVENTS
- Description
This is a derived constant that is not part of the standard inotify API. It is the union of all other constants.
- Methoddescribe_mask
string
describe_mask(int
mask
)- Description
Turn an event mask into a human readable representation. This is used for debugging purpose.
- Methodparse_event
array
(string
|int
) parse_event(string
data
)- Description
Parses one inotify_event struct from
data
.- Returns
Returns an array consisting of
Array int
0
The watch descriptor returned by
_Instance()->add_watch()
when the watch for this file was added.int
1
An integer that describes the event that occured. See the inotify manpage for a list of possible events and their numerical identifiers.
int
2
An integer cookie that can be used to group together different events that were triggered by moving a file from one location to another.
string
3
The name of the file. This will only be present if the event happened to a file in a directory that was watched, e.g. with
System.Inotify.IN_CREATE
. Otherwise this will be 0.int
4
The length of the data that has been parsed. If the
data
string contains more than one inotify event, this parse function needs to be called again with the remainder as an argument.
Class System.Inotify.Instance
- Description
More convenient interface to inotify(7). Automatically reads events from the inotify file descriptor and parses them.
- Note
Objects of this class will be destructed when they go out of external references. As such they behave differently from other classes which use callbacks, e.g.
Stdio.File
.- Note
The number of inotify instances is limited by ulimits.
- Methodadd_watch
int
add_watch(string
filename
,int
mask
,function
(int
,int
,string
,mixed
... :void
)callback
,mixed
...extra
)- Description
Add a watch for a certain file and a set of events specified by
mask
. The functioncallback
will be called when such an event occurs. The arguments to the callback will be the events mask, the cookie, thefilename
andextra
.- Returns
Returns a watch descriptor which can be used to remove the watch.
- Note
When adding a second watch for the same file the old one will be removed unless
System.Inotify.IN_MASK_ADD
is contained inmask
.- Note
The mask of an event may be a subset of the mask given when adding the watch.
- Note
In case the watch is added for a regular file, the filename will be passed to the callback. In case the watch is added for a directory, the name of the file to which the event happened inside the directory will be concatenated.
Class System.Inotify._Instance
- Description
Simple wrapper class that gives direct access to the inotify(7) interface. On create an inotify instance is initiated by calling inotify_init(2). Every object of this class has its own inotify file descriptor. Use this class only if you want direct access to the file descriptor to read from it manually. For a more user friendly interface use
System.Inotify.Instance
.- See also
System.Inotify.Instance
- Variableevent_callback
private
function
(int
,int
,int
,string
:void
) System.Inotify._Instance.event_callback- Description
Callback function that is called when an event is triggered.
- See also
set_event_callback()
,query_event_callback()
- Methodadd_watch
int
add_watch(string
path
,int
mask
)- Description
Add a watch for a certain file or directory and specific events.
Adding more than one watch for a path will overwrite the previous watch unless
System.Inotify.IN_MASK_ADD
is contained in the mask.- Parameter
path
Path of the file or directory.
- Parameter
mask
Integer mask specifying the event type. This can be a combination of different event types using bitwise OR. See the inotify manpage for possible values and their description. The values defined by the inotify header file are exported by
System.Inotify
as constants using the same names (e.g.System.Inotify.IN_CREATE
).- Returns
Returns a watch descriptor on success, and
-1
on filesystem-related failures, in which caseerrno()
will indicate the cause. These typically indicate time of check, time of use race conditions. For other failures errors are thrown.- Note
Subdirectories are not watched. If you want to watch subdirectories as well, you need to add watches for them individually.
- Note
At creation of a watch for a directory, simulated
IN_CREATE
-events with cookie0x7fffffff
will be added for the initial contents of the directory. This is to reduce the risk of losing state changes due to races. Note that is is not known whether these paths are in flux or not. Note also that there may be multiple notifications for content that is created at the moment the watch is created.- Note
In old versions of Pike errors were thrown for all failures.
- See also
rm_watch()
,parse_event()
- Methodget_event_callback
function
(int
,int
,int
,string
:void
) get_event_callback()- Description
Get the current
event_callback
.- See also
set_event_callback()
,event_callback
,poll()
- Methodpoll
void
poll()- Description
Check for any pending events.
Any pending events will be read and parsed, and
event_callback
will be called once for each event. The arguments to theevent_callback
will be:Array int
1
The watch descriptor that was triggered.
int
2
The event that was triggerend (one of IN_*).
int
3
An integer cookie used to identify grouped events.
string
4
The name of the path segment (if any).
- Note
This function is called by the backend when there are events pending.
- See also
set_event_callback()
- Methodquery_fd
int
query_fd()- Returns
Returns the file descriptor associated with this inotify instance.
- Methodrm_watch
int
rm_watch(int
wd
)- Description
Remove a watch.
- Parameter
wd
The watch descriptor that was returned by
add_watch()
.
- Methodset_backend
void
set_backend(Pike.Backend
backend
)- Description
Set the backend used for callbacks.
- See also
set_event_callback()
,set_nonblocking()
,poll()
- Methodset_blocking
void
set_blocking()- Description
Disable backend callback mode.
The configured backend will stop calling
poll()
, sopoll()
will need to be called by hand.- See also
set_blocking()
,poll()
- Methodset_event_callback
void
set_event_callback(function
(int
,int
,int
,string
:void
)cb
)- Description
Set the
event_callback
.- See also
get_event_callback()
,event_callback
,poll()
Module System.Wnotify
- Description
An interface to Windows filesystem change information.
Class System.Wnotify.EventPoller
Module Tools
Class Tools.PV
- Description
Display a image on the screen. Requires GTK.
- TypedefPVImage
typedef
Standards.URI
|string
|Image.Image
|Image.Layer
|array
(Image.Layer
) Tools.PV.PVImage
- Description
The image types accepted. If the image is a string, it is assumed to be a filename of a image that can be loaded with Image.load. This includes URLs.
- Methodget_as_image
Image.Image
get_as_image(PVImage
i
)- Description
Return the current image as a Image object, with the alpha combining done.
- Methodsave
void
save(string
filename
,string
|void
format
)- Description
Write the image to a file. If no format is specified, PNG is used. The alpha combination is done on the image before it's saved.
- Methodscale
void
scale(float
factor
)- Description
Scale the image before display with the specified factor.
- Methodset_alpha_colors
void
set_alpha_colors(Image.Color.Color
c1
,Image.Color.Color
|void
c2
)- Description
Set the colors used for the alpha combination.
c2
is only used for theSquares
alpha mode.- See also
set_alpha_mode()
- Methodset_alpha_mode
void
set_alpha_mode(AlphaMode
m
)- Description
Set the alpha combining mode.
m
is one ofSquares
,Solid
,None
andAlphaOnly
.
Enum Tools.PV.AlphaMode
- Description
The alpha combination modes.
Use
set_alpha_mode()
to change the mode.
Module Tools.AutoDoc
Enum Tools.AutoDoc.Flags
- Description
Flags affecting autodoc extractor behaviour.
- See also
ProcessXML.extractXML()
,MirarDocParser
,Tools.Standalone.extract_autodoc()
- ConstantFLAG_COMPAT
constant
Tools.AutoDoc.FLAG_COMPAT
- Description
Attempt to be compatible with old Pike.
- ConstantFLAG_KEEP_GOING
constant
Tools.AutoDoc.FLAG_KEEP_GOING
- Description
Attempt to keep going after errors.
- ConstantFLAG_NO_DYNAMIC
constant
Tools.AutoDoc.FLAG_NO_DYNAMIC
- Description
Reduce the amount of dynamic information in the generated files (line numbers, extractor version, extraction time, etc).
Class Tools.AutoDoc.AutoDocError
- Description
Base class for errors generated by the autodoc extraction system.
Class Tools.AutoDoc.BMMLParser
Class Tools.AutoDoc.PikeParser
- Description
A very special purpose Pike parser that can parse some selected elements of the Pike language...
- VariablecurrentPosition
SourcePosition
Tools.AutoDoc.PikeParser.currentPosition- Description
The current position in the source.
- Methodcreate
Tools.AutoDoc.PikeParserTools.AutoDoc.PikeParser(
string
|void
s
,string
|SourcePosition
|void
_filename
,int
|void
line
,.Flags
|void
flags
)
- Methodeat
string
eat(multiset
(string
)|string
token
)- Description
Consume one token, error if not (one of) the expected in
token
.
- MethodeatIdentifier
string
eatIdentifier(void
|int
allowScopePrefix
)- Description
Expect an identifier.
- Note
Also
::ident
,scope::ident
.- Note
This function also converts old-style getters and setters into new-style.
- MethodgetReadDocComments
int
getReadDocComments()- Returns
Returns the number of documentation comments that have been returned by
readToken()
.
- MethodliteralType
Type
|zero
literalType(string
literal
)- Description
Returns the type of a literal. Currently only recognizes the top level type. Currently does not thoroughly check that the literal is syntactically valid.
- MethodlookAhead
string
lookAhead(int
offset
,int
|void
with_newlines
)- Description
Peek
offset
tokens ahead, skipping newlines, unlesswith_newlines
is set.- See also
peekToken()
- MethodparseAnnotation
Annotation
|zero
parseAnnotation()- Description
Parse a single annotation from the token stream.
- MethodparseAnnotations
array
(Annotation
) parseAnnotations()- Description
Parse a set of annotations from the token stream.
- MethodparseArgList
array
parseArgList(int
|void
allowLiterals
)- Description
Parse the list of arguments in a function declaration.
- Parameter
allowLiterals
If allowLiterals != 0 then you can write a literal or Pike idents as an argument, like:
void convert("jpeg",Image image,float quality)
For a literal arg, the argname[] string contains the literal and the corresponding argtypes element is 0
- Note
Expects that the arglist is followed by a ")".
- MethodparseDecl
PikeObject
|array
(PikeObject
)|Annotation
parseDecl(mapping
|void
args
)- Description
Parse the next Pike declaration from the token stream.
- Note
parseDecl()
reads ONLY THE HEAD, NOT the";"
or"{" .. "}"
!!!
- MethodparseIdents
string
|void
parseIdents()- Description
Parse a '.'-separated identitifer string.
- Note
Also parses stuff preceded by
"scope::"
or"::"
- MethodparseLiteral
string
|zero
parseLiteral()- Description
Parse the next literal constant (if any) from the token stream.
- MethodparseModifiers
array
(string
) parseModifiers()- Description
Parse a set of modifiers from the token stream.
- MethodpeekToken
string
peekToken(int
|void
with_newlines
)- Description
Peek at the next token in the stream without advancing.
- Parameter
with_newlines
If set will return
"\n"
tokens, these will otherwise silently be skipped.- Returns
Returns the next token.
- See also
readToken()
,lookAhead()
- MethodreadToken
string
readToken(int
|void
with_newlines
)- Description
Read the next token from the stream and advance.
- Parameter
with_newlines
If set will return
"\n"
tokens, these will otherwise silently be skipped.- Returns
Returns the next token.
- See also
peekToken()
- Methodskip
void
skip(multiset
(string
)|string
tokens
)- Description
Skip the next token if it is a member of the
tokens
set.- Note
The newline token (
"\n"
) is not skipped implicitly by this function.- See also
readToken()
,peekToken()
,eat()
,skipUntil()
- MethodskipBlock
array
(string
) skipBlock()- Description
Skip passed a matched pair of parenthesis, brackets or braces.
- MethodskipUntil
array
(string
) skipUntil(multiset
(string
)|string
tokens
)- Description
Skip tokens until one of
tokens
is the next to read.- Note
The newline token (
"\n"
) is not skipped implicitly by this function.- See also
skip()
Class Tools.AutoDoc.SourcePosition
- Description
Class used to keep track of where in the source a piece of documentation originated.
- Variablefirstline
Variablelastline int
Tools.AutoDoc.SourcePosition.firstlineint
Tools.AutoDoc.SourcePosition.lastline- Description
Range of lines.
- Methodcreate
Tools.AutoDoc.SourcePositionTools.AutoDoc.SourcePosition(
string
filename
,int
firstline
,int
|void
lastline
)
Module Tools.AutoDoc.DocParser
- Variablekeywordtype
mapping
(string
:DocTokenType
) Tools.AutoDoc.DocParser.keywordtype- Description
The
DocTokenType
s for the documentation @-keywords.
- MethodsplitDocBlock
array
(array
(Token
)) splitDocBlock(string
block
,SourcePosition
position
)- Description
Split a
block
of documentation text into segments ofToken
s split onMETAKEYWORD
s.- Returns
Each of the arrays in the returned array can be fed to
Parse::create()
Enum Tools.AutoDoc.DocParser.DocTokenType
- Description
Enum of documentation token types.
Class Tools.AutoDoc.DocParser.DocParserClass
- Description
Internal class for parsing documentation markup.
- VariableargHandlers
mapping
(string
:function
(string
,string
:string
)|function
(string
,string
:mapping
(string
:string
))) Tools.AutoDoc.DocParser.DocParserClass.argHandlers- Description
Contains functions that handle keywords with non-standard arg list syntax. The function for each keyword can return a mapping or a string:
mapping
(string
:string
)If a
mapping(string:string)
is returned, it is interpreted as the attributes to put in the tag.string
If a string is returned, it is an XML fragment that gets inserted inside the tag.
- MethodgetDoc
string
getDoc(string
context
)- Returns
Returns the documentation corresponding to the
context
as an XML string.- Note
getMetaData()
must be called before this function.
Class Tools.AutoDoc.DocParser.MetaData
- Description
Metadata about a
Documentation
object.
- Variablebelongs
Variableappears string
Tools.AutoDoc.DocParser.MetaData.belongsstring
Tools.AutoDoc.DocParser.MetaData.appears- Description
Relocation information.
- Variabledecls
array
(PikeObject
) Tools.AutoDoc.DocParser.MetaData.decls- Description
Set of declarations.
- Variableinherits
array
(PikeObject
) Tools.AutoDoc.DocParser.MetaData.inherits- Description
Set of inherits.
- Variablename
string
Tools.AutoDoc.DocParser.MetaData.name- Description
If
type
is one of"class"
,"module"
,"endmodule"
, or"endclass"
.
Class Tools.AutoDoc.DocParser.Parse
- Description
Documentation markup parser.
This is a class, because you need to examine the meta lines before you can determine which context to parse the actual doc lines in.
- Methodcreate
Tools.AutoDoc.DocParser.ParseTools.AutoDoc.DocParser.Parse(
string
|array
(Token
)s
,SourcePosition
|void
sp
,.Flags
|void
flags
)- Description
Parse a documentation string
s
.
- Methoddoc
string
|zero
doc(string
context
)- Returns
Returns the documentation corresponding to the
context
as an XML string.- Note
metadata()
must be called before this function.
Class Tools.AutoDoc.DocParser.Token
- Variabletype
Variablekeyword
Variablearg
Variabletext
Variableposition int
Tools.AutoDoc.DocParser.Token.typestring
|zero
Tools.AutoDoc.DocParser.Token.keywordstring
|zero
Tools.AutoDoc.DocParser.Token.argstring
|zero
Tools.AutoDoc.DocParser.Token.textSourcePosition
|zero
Tools.AutoDoc.DocParser.Token.position
- Method__create__
protected
local
void
__create__(int
type
,string
|zero
keyword
,string
|zero
arg
,string
|zero
text
,SourcePosition
|zero
position
)
- Variabletype
- Variablekeywordtype
Module Tools.AutoDoc.PikeExtractor
- MethodextractClass
void
extractClass(AutoDoc
root
,Module
parent
,string
s
,void
|string
filename
,void
|string
className
,void
|.Flags
flags
)- Description
Extract documentation for a Pike class (aka program).
- See also
extractNamespace()
,extractModule()
- MethodextractModule
void
extractModule(AutoDoc
root
,Module
parent
,string
s
,void
|string
filename
,void
|string
moduleName
,void
|.Flags
flags
)- Description
Extract documentation for a Pike module.
- See also
extractNamespace()
,extractClass()
- MethodextractClass
Module Tools.AutoDoc.PikeObjects
- Description
This module contains classes to represent Pike objects such as classes, modules, methods, variables ... The classes can produce XML representations of themselves.
- VariableEmptyDoc
protected
Documentation
Tools.AutoDoc.PikeObjects.EmptyDoc- Description
The empty
Documentation
.
Class Tools.AutoDoc.PikeObjects.Annotation
- Description
Class representing an annotation.
Class Tools.AutoDoc.PikeObjects.ArrayType
- Description
The class for representing array types.
- See also
Type
- Variablevaluetype
Type
Tools.AutoDoc.PikeObjects.ArrayType.valuetype- Description
The
Type
of the array elements.
Class Tools.AutoDoc.PikeObjects.AttributeType
- Description
The class for representing attributed types.
- See also
Type
- Variableattribute
string
Tools.AutoDoc.PikeObjects.AttributeType.attribute- Description
The name of the attribute.
- Variableprefix
int
Tools.AutoDoc.PikeObjects.AttributeType.prefix- Description
Flag indicating:
0
The attribute is on the type.
1
The attribute is a prefix and acts as a modifier. This is only used for functions.
- Variablesubtype
Type
Tools.AutoDoc.PikeObjects.AttributeType.subtype- Description
The type that is attributed.
Class Tools.AutoDoc.PikeObjects.AutoDoc
- Description
The top-level container. This container should only contain namespaces, and they in turn contain modules etc.
Class Tools.AutoDoc.PikeObjects.Class
- Description
Represents a class.
Class Tools.AutoDoc.PikeObjects.Constant
- Description
Represents a named constant.
- Variabletype
Type
Tools.AutoDoc.PikeObjects.Constant.type- Description
The type of the constant, if known.
Class Tools.AutoDoc.PikeObjects.CppDirective
- Description
Representation of an inherit.
Class Tools.AutoDoc.PikeObjects.DocGroup
- Description
A class associating a piece of
Documentation
with a set ofPikeObject
s.
- Variableappears
Variablebelongs string
Tools.AutoDoc.PikeObjects.DocGroup.appearsstring
Tools.AutoDoc.PikeObjects.DocGroup.belongs- Description
Relocation information.
- Variabledocumentation
Documentation
Tools.AutoDoc.PikeObjects.DocGroup.documentation- Description
The
Documentation
for theobjects
.
- Variableobjects
array
(PikeObject
) Tools.AutoDoc.PikeObjects.DocGroup.objects- Description
The set of
PikeObject
s that are documented.
- Methodcreate
Tools.AutoDoc.PikeObjects.DocGroupTools.AutoDoc.PikeObjects.DocGroup(
array
(PikeObject
)objs
,Documentation
|void
doc
)
Class Tools.AutoDoc.PikeObjects.Documentation
- Description
The base class for documentation strings.
- See also
DocGroup
- Variabletext
Variablexml
Variableposition string
|void
Tools.AutoDoc.PikeObjects.Documentation.textstring
|void
Tools.AutoDoc.PikeObjects.Documentation.xmlSourcePosition
|void
Tools.AutoDoc.PikeObjects.Documentation.position
- Method__create__
protected
local
void
__create__(string
|void
text
,string
|void
xml
,SourcePosition
|void
position
)
Class Tools.AutoDoc.PikeObjects.Enum
- Description
The enum container.
- Variablechildren
array
(DocGroup
) Tools.AutoDoc.PikeObjects.Enum.children- Description
The set of children.
- Variabledocumentation
Documentation
Tools.AutoDoc.PikeObjects.Enum.documentation- Description
Mimic the
class { ... }
behaviour.
Class Tools.AutoDoc.PikeObjects.EnumConstant
- Description
The values inside
enum Foo { ... }
These are currently handled identically to normal constants.
Class Tools.AutoDoc.PikeObjects.FloatType
- Description
The class for representing the float type.
- See also
Type
Class Tools.AutoDoc.PikeObjects.FunctionType
- Description
The class for representing function types.
- See also
Type
- Variableargtypes
array
(Type
) Tools.AutoDoc.PikeObjects.FunctionType.argtypes- Description
An array with types for the arguments to the function.
- Variablereturntype
Type
Tools.AutoDoc.PikeObjects.FunctionType.returntype- Description
The type for the return value of the function.
Class Tools.AutoDoc.PikeObjects.Generic
- Description
Represents a generic.
Class Tools.AutoDoc.PikeObjects.Import
- Description
Representation of an import.
Class Tools.AutoDoc.PikeObjects.Inherit
- Description
Representation of an inherit.
Class Tools.AutoDoc.PikeObjects.IntType
- Description
The class for representing integer types.
- See also
Type
- Variablemin
Variablemax string
Tools.AutoDoc.PikeObjects.IntType.minstring
Tools.AutoDoc.PikeObjects.IntType.max- Description
The minimum and maximum range limits for the integer type.
Class Tools.AutoDoc.PikeObjects.MappingType
- Description
The class for representing mapping types.
- See also
Type
- Variableindextype
Variablevaluetype Type
Tools.AutoDoc.PikeObjects.MappingType.indextypeType
Tools.AutoDoc.PikeObjects.MappingType.valuetype- Description
The types for the indices and values of the mapping.
Class Tools.AutoDoc.PikeObjects.Method
- Description
Represents a function.
- Variableargnames
array
(string
) Tools.AutoDoc.PikeObjects.Method.argnames- Description
The names of the arguments.
- Variableargtypes
array
(Type
) Tools.AutoDoc.PikeObjects.Method.argtypes- Description
The types for the arguments.
Class Tools.AutoDoc.PikeObjects.MixedType
- Description
The class for representing the mixed type.
- See also
Type
Class Tools.AutoDoc.PikeObjects.Modifier
- Description
A modifier range, e.g.:
finalprotected{ ... <<declarations>> ... }
Class Tools.AutoDoc.PikeObjects.Module
- Description
Represents a module.
Class Tools.AutoDoc.PikeObjects.MultisetType
- Description
The class for representing multiset types.
- See also
Type
- Variableindextype
Type
Tools.AutoDoc.PikeObjects.MultisetType.indextype- Description
The type for the indices of the multiset.
Class Tools.AutoDoc.PikeObjects.NameSpace
- Description
Represents a name space, eg:
predef::
orlfun::
.
Class Tools.AutoDoc.PikeObjects.ObjectType
- Description
The class for representing object types.
- See also
Type
- Variableclassname
string
Tools.AutoDoc.PikeObjects.ObjectType.classname- Description
The name of the class for the object.
Class Tools.AutoDoc.PikeObjects.OrType
- Description
The class for representing union types.
- See also
Type
- Variabletypes
array
(Type
) Tools.AutoDoc.PikeObjects.OrType.types- Description
An array with the types that are member of the union.
Class Tools.AutoDoc.PikeObjects.PikeObject
- Description
Base class for representing a documentable Pike lexical entity.
This class is inherited by classes for representing classes, functions, variables, etc.
- See also
Inherit
,Import
,Class
,Module
,NameSpace
,AutoDoc
,Modifier
,Method
,Constant
,Typedef
,EnumConstant
,Enum
,Variable
- Constantobjtype
constant
string
Tools.AutoDoc.PikeObjects.PikeObject.objtype
- Description
The object type identifier.
- Variableappears
Variablebelongs string
Tools.AutoDoc.PikeObjects.PikeObject.appearsstring
Tools.AutoDoc.PikeObjects.PikeObject.belongs- Description
Relocation information.
- Variablemodifiers
array
(string
) Tools.AutoDoc.PikeObjects.PikeObject.modifiers- Description
The set of modifiers affecting this entity.
- Variableposition
SourcePosition
Tools.AutoDoc.PikeObjects.PikeObject.position- Description
The source position where the entity was found.
Class Tools.AutoDoc.PikeObjects.ProgramType
- Description
The class for representing program (aka class) types.
- See also
Type
- Variableclassname
string
Tools.AutoDoc.PikeObjects.ProgramType.classname- Description
The name of the class (if any).
Class Tools.AutoDoc.PikeObjects.StringType
- Description
The class for representing string types.
- See also
Type
- Variablemax
string
Tools.AutoDoc.PikeObjects.StringType.max- Description
The maximum value for characters in the string.
- Variablemin
string
Tools.AutoDoc.PikeObjects.StringType.min- Description
The minimum value for characters in the string.
Class Tools.AutoDoc.PikeObjects.Type
- Description
The base class for representing types.
Class Tools.AutoDoc.PikeObjects.TypeType
- Description
The class for representing type types.
- See also
Type
Class Tools.AutoDoc.PikeObjects.Typedef
- Description
Represents a typedef.
Class Tools.AutoDoc.PikeObjects.UnknownType
- Description
The class for representing the unknown type.
- See also
Type
Class Tools.AutoDoc.PikeObjects.VarargsType
- Description
The class for representing varargs types.
- See also
Type
Class Tools.AutoDoc.PikeObjects.Variable
- Annotations
@
Pike.Annotations.Implements
(PikeObject
)- Description
Represents a variable.
Class Tools.AutoDoc.PikeObjects.VoidType
- Description
The class for representing the void type.
- See also
Type
Class Tools.AutoDoc.PikeObjects.ZeroType
- Description
The class for representing the zero type.
- See also
Type
Class Tools.AutoDoc.PikeObjects._Class_or_Module
- Description
Base class for representing classes, modules and namespaces.
- See also
Class
,Module
,NameSpace
,AutoDoc
,Modifier
- Variablechildren
array
(_Class_or_Module
) Tools.AutoDoc.PikeObjects._Class_or_Module.children- Description
Entities that are children to this entity.
- VariabledocGroups
array
(DocGroup
) Tools.AutoDoc.PikeObjects._Class_or_Module.docGroups- Description
Documented entities that are children to this entity.
- Variabledocumentation
Documentation
Tools.AutoDoc.PikeObjects._Class_or_Module.documentation- Note
The documentation appears as a child of the <class> or <module>
- Variablegenerics
array
(array
(string
|PikeObject
)) Tools.AutoDoc.PikeObjects._Class_or_Module.generics- Description
Array of symbol followed by type and default type triples.
- Variableinherits
array
(Inherit
|Import
) Tools.AutoDoc.PikeObjects._Class_or_Module.inherits- Description
Inherit
s andImport
s that affect the symbol lookup for the entity.
- MethodcontainsDoc
int
containsDoc()- Returns
Returns
1
if there is any documentation at all for this entity.
- MethodfindChild
PikeObject
|zero
findChild(string
name
)- Returns
Returns the first child with the name
name
if any.
Module Tools.AutoDoc.ProcessXML
- MethodextractXML
string
extractXML(string
filename
,int
|void
pikeMode
,string
|void
type
,string
|void
name
,array
(string
)|void
parentModules
,void
|.Flags
flags
)- Description
This function extracts documentation from a file. The parameters
type
,name
, andparentModules
are used only whenpikeMode
!= 0 and no C-style doc comments are present.- Parameter
filename
The file to extract from.
- Parameter
pikeMode
Non-zero if it is a Pike file. If the file contains style doc comments, C-mode is used despite pikeMode != 0.
- Parameter
type
"class"
,"module"
or"namespace"
.- Parameter
name
The name of the class/module/namespace.
- Parameter
parentModules
The ancestors of the class/module/namespace.
- Parameter
flags
Flags adjusting the extractor behaviour. Defaults to
FLAG_NORMAL
.- Example
// To extract doc for Foo.Bar.Ippa: string xml = extractXML("lib/modules/Foo.pmod/Bar.pmod/Ippa.pike", 1, "class", "Ippa", ({ "Foo", "Bar" }));
- MethodhandleAppears
void
handleAppears(SimpleNode
root
,.Flags
|void
flags
)- Description
Take care of all the @appears and @belongs directives everywhere, and rearranges the nodes in the tree accordingly
- Parameter
root
The root (<autodoc>) node of the documentation tree.
- MethodmergeTrees
void
mergeTrees(SimpleNode
dest
,SimpleNode
source
)- Description
Puts all children of
source
into the treedest
, in their correct place module-hierarchically.Used to merge the results of extractions of different Pike and C files.
Some minor effort is expended to normalize the result to some sort of canonical order.
- Parameter
source
- Parameter
dest
The nodes
source
anddest
are <class>, <module>, <namespace> or <autodoc> nodes that are identical in the sense that they represent the same module, class or namespace. Typically they both represent <autodoc> nodes.- Note
Both
source
anddest
are modified destructively.- Note
After calling this method, any <class> or <module> nodes that have been marked with @appears or @belongs, are still in the wrong place in the tree, so
handleAppears()
(orpostProcess()
) must be called on the whole documentation tree to relocate them once the tree has been fully merged.
- MethodmoveImages
string
moveImages(string
docXMLFile
,string
imageSourceDir
,string
imageDestDir
,int
|void
quiet
)- Description
Copy all images to canonical files in a flat directory.
- Parameter
docXMLFile
The contents of the XML file. The XML file is the result of extraction from a single C or Pike file, for example the result of calling
extractXML
.- Parameter
imageSourceDir
The directory that is the base of the relative paths to images. This should be the directory of the source file that was the input to extract the XML file.
- Parameter
imageDestDir
The directory where the images should be copied.
- Parameter
quiet
Quiet operation.
- Returns
The XML file contents (with decorated <image>-tags)
- MethodpostProcess
void
postProcess(SimpleNode
root
,string
|void
logfile
,.Flags
|void
flags
)- Description
Perform the last steps on a completed documentation tree.
- Parameter
root
Root <autodoc> node of the completed documentation tree.
Calls
handleAppears()
,cleanUndocumented()
andresolveRefs()
in turn.- See also
handleAppears()
,cleanUndocumented()
,resolveRefs()
Class Tools.AutoDoc.ProcessXML.DummyNScope
Class Tools.AutoDoc.ProcessXML.NScope
- Description
A symbol lookup scope.
Class Tools.AutoDoc.ProcessXML.ReOrganizeTask
- Variablen
Variableparent SimpleNode
Tools.AutoDoc.ProcessXML.ReOrganizeTask.nSimpleNode
Tools.AutoDoc.ProcessXML.ReOrganizeTask.parent
- Variablen
- MethodextractXML
Module Tools.Hilfe
- Methodformat_hr_time
string
format_hr_time(int
i
)- Description
Helper function that formats a time span in nanoseconds to something more human readable (ns, ms or s).
Class Tools.Hilfe.Command
- Description
Abstract class for Hilfe commands.
- Methoddoc
string
doc(string
what
,string
with
)- Description
A more elaborate documentation of the command. This should be less than 68 characters per line.
- Methodexec
void
exec(Evaluator
e
,string
line
,array
(string
)words
,array
(string
)tokens
)- Description
The actual command callback. Messages to the user should be written out by using the safe_write method in the
Evaluator
object.
Class Tools.Hilfe.CommandReset
- Description
Variable reset command. Put ___Hilfe->commands->reset = Tools.Hilfe.CommandReset(); in your .hilferc to have this command defined when you open Hilfe.
Class Tools.Hilfe.CommandSet
Class Tools.Hilfe.Evaluator
- Description
This class implements the actual Hilfe interpreter. It is accessible as ___Hilfe from Hilfe expressions.
- Variableassembler_debug_level
int
Tools.Hilfe.Evaluator.assembler_debug_level- Description
The current assembler debug level. Only available if Pike is compiled with RTL debug.
- Variablecommands
mapping
(string
:Command
) Tools.Hilfe.Evaluator.commands- Description
This mapping contains the available Hilfe commands, including the built in ones (dump, exit, help, new, quit), so it is possible to replace or remove them. The name of a command should be 10 characters or less.
- Variablecompiler_trace_level
int
Tools.Hilfe.Evaluator.compiler_trace_level- Description
The current compiler trace level. Only available if Pike is compiled with RTL debug.
- Variableconstants
mapping
(string
:mixed
) Tools.Hilfe.Evaluator.constants- Description
The locally defined constants (name:value).
- Variabledebug_level
int
Tools.Hilfe.Evaluator.debug_level- Description
The current debug level. Only available if Pike is compiled with RTL debug.
- Variablefunctions
mapping
(string
:function
(:void
)) Tools.Hilfe.Evaluator.functions- Description
The locally defined functions (name:value).
- Variablelast_compile_time
int(0..)
Tools.Hilfe.Evaluator.last_compile_time- Description
The last compile time;
- Variablelast_compiled_expr
string
Tools.Hilfe.Evaluator.last_compiled_expr- Description
The last created wrapper in which an expression was evaluated.
- Variablelast_else
bool
Tools.Hilfe.Evaluator.last_else- Description
Should an else expression be carried out?
- Variablelast_eval_time
int(0..)
Tools.Hilfe.Evaluator.last_eval_time- Description
The last evaluation time;
- Variableprograms
mapping
(string
:program
) Tools.Hilfe.Evaluator.programs- Description
The locally defined programs (name:value).
- Variablereswrite
function
(:void
) Tools.Hilfe.Evaluator.reswrite- Description
The function used to write results. Gets as arguments in order: The safe_write function (function(string, mixed ...:int), the result as a string (string), the history entry number (int), the result (mixed), the compilation time (int) and the evaluation time (int). If the evaluated expression didn't return anything (e.g. a for loop) then 0 will be given as the result string.
- Variablestate
ParserState
Tools.Hilfe.Evaluator.state- Description
Keeps the state, e.g. multiline input in process etc.
- Variabletypes
mapping
(string
:string
) Tools.Hilfe.Evaluator.types- Description
The types of the locally defined variables (name:type).
- Variablevariables
mapping
(string
:mixed
) Tools.Hilfe.Evaluator.variables- Description
The locally defined variables (name:value).
- Variablewrite
array
|object
|function
(string
:int(0..)
) Tools.Hilfe.Evaluator.write- Description
The function to use when writing to the user.
- Methodadd_buffer
void
add_buffer(string
s
)- Description
Add buffer tokenizes the input string and determines if the new line is a Hilfe command. If not, it updates the current state with the new tokens and sends any and all complete expressions to evaluation in
parse_expression
.
- Methodadd_input_hook
void
add_input_hook(function
(:void
)|object
new
)- Description
Adds a function to the input hook, making all user data be fed into the function.
- See also
remove_input_hook
- Methodadd_input_line
void
add_input_line(string
s
)- Description
Input a line of text into Hilfe. It checks if
s
is ".", in which case it calls state->flush(). Otherwise just calls add_buffer.
- Methodadd_writer
void
add_writer(object
|function
(string
:int(0..)
)new
)- Description
Adds another output function.
- Methodevaluate
void
evaluate(string
a
,bool
show_result
)- Description
Compiles the Pike code
a
and evaluates it by calling ___HilfeWrapper in the generated object. Ifshow_result
is set the result will be displayed and the result buffer updated with its value.
- Methodhilfe_compile
object
|zero
hilfe_compile(string
f
,void
|string
new_var
)- Description
Creates a wrapper and compiles the pike code
f
in it. If a new variable is compiled to be tested, its name should be given innew_var
so that magically defined entities can be undefined and a warning printed.
- Methodparse_expression
string
|zero
parse_expression(Expression
expr
)- Description
Parses a Pike expression. Returns 0 if everything went well, or a string with an error message otherwise.
- Methodremove_input_hook
void
remove_input_hook(function
(:void
)|object
old
)- Description
Removes a function from the input hook.
- See also
add_input_hook
- Methodremove_writer
void
remove_writer(object
|function
(:void
)old
)- Description
Removes an output function.
- Methodreset_evaluator
void
reset_evaluator()- Description
Clears the current state, history and removes all locally defined variables, constants, functions and programs. Removes all imports and inherits. It does not reset the command mapping nor reevaluate the .hilferc file.
- Methodsafe_write
int
safe_write(array
(string
)|string
in
,mixed
...args
)- Description
An output method that shouldn't crash.
Class Tools.Hilfe.Expression
- Description
Represents a Pike expression
- Method_sizeof
int
sizeof(Tools.Hilfe.Expressionarg)- Description
The number of non-whitespace tokens in the expression.
- Method`[]
string
|zero
res =Tools.Hilfe.Expression()
[f
]- Description
Returns a token or a token range without whitespaces.
- Methodcast
(int)Tools.Hilfe.Expression()
(float)Tools.Hilfe.Expression()
(string)Tools.Hilfe.Expression()
(array)Tools.Hilfe.Expression()
(mapping)Tools.Hilfe.Expression()
(multiset)Tools.Hilfe.Expression()- Description
An Expression object can be cast to an array or a string. In both forms all tokens, including white spaces will be returned.
- Methodcheck_modifiers
string
|zero
check_modifiers()- Description
See if there are any forbidden modifiers used in the expression, e.g. "private int x;" is not valid inside Hilfe.
- Returns
Returns an error message as a string if the expression contains a forbidden modifier, otherwise
0
.
- Methodcreate
Tools.Hilfe.ExpressionTools.Hilfe.Expression(
array
(string
)t
)- Parameter
t
An array of Pike tokens.
- Methodendoftype
int(-1..)
endoftype(int(-1..)
position
)- Description
Returns at which position the type declaration that begins at position
position
ends. A return value of -1 means that the token or tokens fromposition
can not be a type declaration.
- Methodfind_matching
int(-1..)
find_matching(string
token
,int(0..)
|void
pos
)- Description
Returns the position of the matching parenthesis of the given kind, starting from the given position. The position should be the position after the opening parenthesis, or later. Assuming balanced code. Returns -1 on failure.
- Methodin_sscanf
bool
in_sscanf(int
f
)- Description
Returns 1 if the current position is within a sscanf expression.
Class Tools.Hilfe.GenericAsyncHilfe
- Variableinfile
Variableoutfile Stdio.File
Tools.Hilfe.GenericAsyncHilfe.infileStdio.File
Tools.Hilfe.GenericAsyncHilfe.outfile
- Variableinfile
Class Tools.Hilfe.GenericHilfe
Class Tools.Hilfe.HilfeHistory
- Description
In every Hilfe object (
Evaluator
) there is a HilfeHistory object that manages the result history. That history object is accessible both from __ and ___Hilfe->history in Hilfe expressions.
Class Tools.Hilfe.ParserState
- Description
In every Hilfe object (
Evaluator
) there is a ParserState object that manages the current state of the parser. Essentially tokens are entered in one end and complete expressions are output in the other. The parser object is accessible as ___Hilfe->state from Hilfe expressions.
- Methoddatap
int
datap()- Description
Returns true if there is any waiting expression that can be fetched with
read
.
- Methodfinishedp
bool
finishedp()- Description
Are we in the middle of an expression. Used e.g. for changing the Hilfe prompt when entering multiline expressions.
- Methodpush_string
array
(string
)|zero
push_string(string
line
)- Description
Sends the input
line
toParser.Pike
for tokenization, but keeps a state between each call to handle multiline /**/ comments and multiline #"" strings.
- Methodread
array
(Expression
) read()- Description
Read out completed expressions. Returns an array where every element is an expression represented as an array of tokens.
- Methodshow_error
void
show_error(function
(array
(string
)|string
,mixed
... :int
)w
)- Description
Prints out any error that might have occurred while
push_string
was executed. The error will be printed with the print functionw
.
Class Tools.Hilfe.StdinHilfe
- Description
This is a wrapper containing a user interface to the Hilfe
Evaluator
so that it can actually be used. This wrapper uses theStdio.Readline
module to interface with the user. All input history is handled by that module, and as a consequence loading and saving .hilfe_history is handled in this class. Also .hilferc is handled by this class.
- Methodcreate
Tools.Hilfe.StdinHilfeTools.Hilfe.StdinHilfe(
void
|array
(string
)init
)- Description
Any hilfe statements given in the init array will be executed once .hilferc has been executed.
- Methodformat_hr_time
Module Tools.Install
- Description
Common routines which are useful for various install scripts based on Pike.
- Methodfeatures
array
(string
) features()- Description
Return an array of enabled features.
- Note
Used by the
master
when given the option --features.- See also
Tools.Standalone.features
Class Tools.Install.ProgressBar
- Description
A class keeping some methods and state to conveniently render ASCII progress bars to stdout.
- Methodcreate
Tools.Install.ProgressBarTools.Install.ProgressBar(
string
name
,int
cur
,int
max
,float
|void
phase_base
,float
|void
phase_size
)- Parameter
name
The name (printed in the first 13 columns of the row)
- Parameter
cur
How much progress has been made so far
- Parameter
max
The amount of progress signifying 100% done. Must be greater than zero.
- Methodset_current
void
set_current(int
_cur
)- Description
Change the amount of progress without updating on stdout.
- Methodset_name
void
set_name(string
_name
)- Description
Change the name of the progress bar without updating on stdout.
Class Tools.Install.Readline
Module Tools.Legal
Module Tools.Legal.Copyright
- Description
Contains functions and information to store and present copyright information about Pike and it's components.
- Methodadd
void
add(string
what
,array
(string
)holders
)- Description
Adds a copyright message for the copyright
holders
for the componentwhat
.- Throws
An error is thrown if the copyrighted component
what
is already in the list of copyrights.
- Methodget_all
mapping
(string
:array
(string
)) get_all()- Description
Returns a mapping containing all the stored copyrights. The mapping maps component name to an array of copyright holders.
Module Tools.Markdown
- Description
This is a small stub entrypoint to
Parser.Markdown
- it is exactly equivalent to callingParser.Markdown.parse
().
Module Tools.MasterHelp
- Description
This module contains usage strings for the
master()->_main()
.
- Constantenvironment_help
constant
Tools.MasterHelp.environment_help
- Description
The set of environment variables that the default master looks at.
- Constantkladdkaka_help
constant
Tools.MasterHelp.kladdkaka_help
- Description
Useful recipe for when all else fails.
- Constantopt_summary
constant
Tools.MasterHelp.opt_summary
- Description
Summary of the options for the Pike interpreter binary, and the default master.
- Constantoptions_help
constant
Tools.MasterHelp.options_help
- Description
Complete set of options for the Pike interpreter binary, and the default master.
Module Tools.Monger
Class Tools.Monger.MongerDeveloper
- Methodadd_new_version
int
add_new_version(string
module_name
,string
version
,string
changes
,string
license
)
- Methoddelete_dependency
int
delete_dependency(string
module_name
,string
version
,string
dependency
,string
min_version
,string
max_version
)
- Methodset_auth
void
set_auth(string
_username
,string
_password
)- Description
set the username and password for accessing the remote repository.
- Methodset_default_directory
void
set_default_directory()- Description
sets the default directory for working and storing configurations ($HOME/.monger)
- Methodset_default_repository
void
set_default_repository()- Description
sets the default repository location (modules.gotpike.org)
- Methodset_dependency
int
set_dependency(string
module_name
,string
version
,string
dependency
,string
min_version
,string
max_version
,bool
required
)
- Methodset_directory
void
set_directory(string
_directory
)- Description
sets the monger directory to use for working and storing configurations.
- Methodset_repository
void
set_repository(string
_repository
)- Description
specify an alternate repository location.
this should be a URL specifying the XMLRPC endpoint for the repository.
- Methodupdate_version
int
update_version(string
module_name
,string
version
,string
|void
changes
,string
|void
license
)
Class Tools.Monger.MongerDeveloper.xmlrpc_handler
Class Tools.Monger.MongerDeveloper.xmlrpc_handler._caller
- Methodadd_new_version
Module Tools.Shoot
Module Tools.Standalone
Class Tools.Standalone.autodoc_to_html
- Description
AutoDoc XML to HTML converter.
- See also
tree_split
- Variablelay
mapping
Tools.Standalone.autodoc_to_html.lay- Description
Layout template headers and trailers.
- Methodimage_prefix
string
image_prefix()- Description
Path to where in the destination filesystem the images are.
Class Tools.Standalone.forkd
- Description
Fork Daemon
This is a light-weight daemon that can be used via
Process.Process
to spawn new processes (by specifying the"forkd"
modifier).The typical use is when the main program is large and/or when it has lots of open file descriptors. This can cause considerable overhead in process creation.
- See also
Process.RemoteProcess
,Process.create_process
Class Tools.Standalone.forkd.FdStream
- Description
This is the main control
Stdio.Fd
and is always on fd number3
.To spawn a new process, a new
Stdio.PROP_SEND_FD
capableStdio.Fd
is sent over this fd, and a single byte of data is sent as payload.The sent fd will become a
ForkFd
inside aForkStream
.
Class Tools.Standalone.forkd.ForkStream
- Description
This class maps 1 to 1 to Process.RemoteProcess, and implements the daemon side of the RPC protocol.
It contains an array (
fds
) with the file descriptors that have been received so far from the remote.
Class Tools.Standalone.git_export_autodoc
- Description
Tool for converting the Pike git repository to a corresponding git repository containing the extracted autodoc.xml and documentation.
It supports incremental operation, so that it can be used to keep track with the source.
Typical use: pike -x git_export_autodoc -v --git-dir=Autodoc.git
- Variableautodoc_hash
mapping
(string
:string
) Tools.Standalone.git_export_autodoc.autodoc_hash- Description
Mapping from doc commit sha1 or export reference to sha1 for the autodoc.xml blob.
- Variabledoc_refs
mapping
(string
:string
) Tools.Standalone.git_export_autodoc.doc_refs- Description
Mapping from doc reference to doc commit sha1 or export reference.
- Variabledoc_to_parents
mapping
(string
:array
(string
)) Tools.Standalone.git_export_autodoc.doc_to_parents- Description
Mapping from doc commit sha1 or export reference to array of same for its direct parents.
- Variabledoc_to_src
mapping
(string
:array
(string
)) Tools.Standalone.git_export_autodoc.doc_to_src- Description
Mapping from doc commit sha1 or export reference to the corresponding list of source commit sha1s.
- Variablerefdoc_hash
mapping
(string
:string
) Tools.Standalone.git_export_autodoc.refdoc_hash- Description
Mapping from source commit to refdoc sha1.
- Variablerev_refs
mapping
(string
:multiset
(string
)) Tools.Standalone.git_export_autodoc.rev_refs- Description
Lookup from source commit sha1 to the corresponding references (if any).
- Variablesrc_refs
mapping
(string
:string
) Tools.Standalone.git_export_autodoc.src_refs- Description
Mapping from source reference to source commit sha1.
- Variablesrc_to_doc
mapping
(string
:string
) Tools.Standalone.git_export_autodoc.src_to_doc- Description
Mapping from source commit sha1 to doc commit sha1 or export reference.
Class Tools.Standalone.pike_to_html
- Description
Convert Pike code to HTML with syntax highlighting
pike -x pike_to_html /path/to/file.pike > file.html
Class Tools.Standalone.pmar_install
- Description
a prototype installer for prepackaged modules
note: portions of this code are highly inefficient (wrt tar filehandling). we assume that this will be used infrequently enough that this is not going to be a problem.
a package file is a tar file that contains the following structure:
ROOTDIR/ METADATA.TXT a file containing metadata about the package format: KEY=value, where values include: PLATFORM, in the form of os/processor (either can be "any") MODULE, the name of the module, in Module.Submodule format. VERSION, the version of this module. MODULE/ any files that need to be installed in the module directory MODREF/ ??? documentation suitable for inclusion in the modref INCLUDE/ ??? any pike language include files to be installed SCRIPTS/ standalone (no bundled dependencies) scripts used to perform custom actions they receive the installer object (this) and the System.Filesystem object of the package archive as arguments to the constructor. The method "run()" should perform the actual action. The run() method should return true or false to indicate success or failure. preinstall.pike postinstall.pike
Class Tools.Standalone.precompile
- Description
Convert .cmod-files to .c files.
Class Tools.Standalone.process_files
- Description
Boilerplate to quickly whip up rsif-like hacks for creating file processing to churn away at stdin, or files and/or directories provided on the command line, recursively or not, creating backup files or not, listing the paths of all files action was taken for, and returning an exit status of how many files that would have been taken action on which could not be written back.
The all-round quickest way of making one of these tools is nicking the top portion of lib/modules/Tools.pmod/Standalone.pmod/process_files.pike or copying rsif.pike from the same directory. (The latter is 20 lines long, including docs, or about four lines of code.) Inherit process_files, and define your own
version
,description
,usage
,process
, and, if you want arguments,want_args
.
- Variabledefault_flag_docs
string
Tools.Standalone.process_files.default_flag_docs- Description
Flag docs to append to your
usage
description. Explains default options.
- Variabledescription
string
Tools.Standalone.process_files.description- Description
One-liner that gets shown for this tool when running pike -x without additional options. (Assuming your tool resides in Standalone.pmod.) Does not include the name of the tool itself; just provide a nice, terse description, ending with a period for conformity.
- Variableoverwrite
bool
Tools.Standalone.process_files.overwrite- Description
0 to make backups, 1 to overwrite (default)
- Variablerecursive
bool
Tools.Standalone.process_files.recursive- Description
1 to recurse into directories, 0 not to (default)
- Variableusage
string
Tools.Standalone.process_files.usage- Description
Long description of the purpose and usage of your tool, for --help and the case where not enough options are given on the command line. Its invocation mode (for instance "pike -x yourtool", when invoked that way) is prepended, and a list of available flags appended to this description.
- Variableverbosity
int(0..)
Tools.Standalone.process_files.verbosity- Description
0 in quiet mode, 1 by default, above = more output
- Variableversion
string
Tools.Standalone.process_files.version- Description
Your hack's version number. If you version control your file with cvs, we suggest you set the contents of this variable to something that that will automatically expand to a number for every new revision, for instance
- Example
string version = sprintf("%d.%d.%d",(int)__REAL_VERSION__,__REAL_MINOR__,__REAL_BUILD__);
- Variablewant_args
int
Tools.Standalone.process_files.want_args- Description
The number of (mandatory) command-line options your hack needs and which your
process
callback wants (beside the input file). By default 0.
- Methodmain
int(0..)
main(int
argc
,array
(string
)argv
)- Description
Base implementation of main program, handling basic flags and returning an exit status matching the number of failures during operation.
- FIXME
No easy way of adding your own command-line flags implemented yet. This would be a rather natural next feature to add, once somebody needs some.
- Methodprocess
string
process(string
input
,string
...args
)- Description
Gets called with the contents of a file (or stdin). Return your output, or 0 if you didn't do anything.
args
are the firstwant_args
command-line options provided, before the list of files to process.
- Methodprocess_file
bool
process_file(string
path
,string
...args
)- Description
Takes the path to a file and the first
want_args
command-line options provided, before the list of files to process. You might want to override this method if your tool needs to see file paths.- See also
process_path
- Methodprocess_path
int(0..)
process_path(string
path
,string
...args
)- Description
Takes the path to a file or directory and the first
want_args
first command-line options provided, before the list of files to process. You might want to override this method if your tool needs to see all paths.- See also
process_file
Module Tools.Testsuite
- Methodlog_msg
void
log_msg(string
msg
,mixed
...args
)- Description
Logs a testsuite message to stderr. The message is shown regardless of the verbosity level. If the previous message was logged without a trailing newline then a newline is inserted first.
The message should normally have a trailing newline - no extra newline is added to it. Use
log_status
to log a message intended to be overwritten.
- Methodlog_msg_cont
void
log_msg_cont(string
msg
,mixed
...args
)- Description
Similar to
log_msg
, but doesn't insert a newline first if the previous message didn't end with one. Does however insert a newline if the previous message was logged "in place" bylog_status
.
- Methodlog_status
void
log_status(string
msg
,mixed
...args
)- Description
Logs a testsuite status message to stdout. This is suitable for nonimportant progress messages.
If the verbosity is 0 then nothing is logged, but the message is saved and will be logged if the next call is to
log_msg
.If the verbosity is 1, the message is "in place" on the current line without a trailing line feed, so that the next
log_status
message will replace this one.If the verbosity is 2 or greater, the message is logged with a trailing line feed.
The message should be short and not contain newlines, to work when the verbosity is 1, but if it ends with a newline then it's logged normally. It can be an empty string to just clear the last "in place" logged message - it won't be logged otherwise.
- See also
log_twiddler
- Methodlog_twiddler
void
log_twiddler()- Description
Logs a rotating bar for showing progress. Only output at the end of an "in place" message written by
log_status
on verbosity level 1.
- Methodreport_result
void
report_result(int
succeeded
,int
failed
,void
|int
skipped
)- Description
Use this to report the number of successful, failed, and skipped tests in a script started using
run_script
. Can be called multiple times - the counts are accumulated.
- Methodrun_script
array
(int
) run_script(string
|array
(string
)pike_script
)- Description
Runs an external pike script from a testsuite. Use
Tools.Testsuite.report_result
in the script to report how many tests succeeded, failed, and were skipped. Those numbers are returned in the array from this function.
Class Tools.Testsuite.CompatPlugin
- Annotations
@
Pike.Annotations.Implements
(Plugin
)- Description
A source code plugin for running code in different Pike compat modes. Instantiated with the pike compat version to run in, e.g.
"7.8"
.
- Methodpreprocess
string
preprocess(string
source
)- Description
Modifies the source code to add "#pike" and the version at the top of the code, followed by "#pragma no_deprecation_warnings".
Class Tools.Testsuite.M4Testsuite
- Description
Represents a "testsuite" file, after m4 processing.
Class Tools.Testsuite.M4Testsuite.M4Test
- Description
Represents a test case from a "testsuite" file, after m4 processing.
Class Tools.Testsuite.Plugin
- Description
Interface for source code plugins, added to a
Test
by callingadd_plugin
.
- Methodactive
bool
active(Test
t
)- Description
Returns 1 if the plugin is active (i.e. should be called by the test), otherwise 0. Defaults to 1.
- Methodpreprocess
string
preprocess(string
source
)- Description
Called by the test to modify the source code. By default just returns the unmodified source.
Class Tools.Testsuite.Test
- Description
Rerpesents a test in a testsuite.
- Variableconditions
array
(string
) Tools.Testsuite.Test.conditions- Description
The list of conditions that has to be met for this test to not be skipped. Each condition should be an expression.
- Variableinhibit_errors
bool
|object
Tools.Testsuite.Test.inhibit_errors- Description
This value will be sent to
MasterObject.set_inhibit_errors
before compilation bycompile()
.
- Variableline
int(1..)
Tools.Testsuite.Test.line- Description
The line number offset to this test in the file.
- Variablesource
string
Tools.Testsuite.Test.source- Description
The source code that is to be compiled and evaluated.
- Variabletype
string
Tools.Testsuite.Test.type- Description
The type of the test. Any of
"COMPILE"
Compiles the source and make verifies there are no warnings or errors.
"COMPILE_ERROR"
Compiles the source and expects to get a compilation error.
"COMPILE_WARNING"
Compiles the source and expects to get a compilation warning.
"EVAL_ERROR"
Evaluates the method a of the source source and expects an evaluation error.
"FALSE"
Verifies that the response from method a of the source is false.
"TRUE"
Verifies that the response from method a of the source is true.
"PUSH_WARNING"
Evaluate the method a and take the resulting string and push it to the set of ignored warnings. The same warning can be pushed multiple times, but must be popped multiple times.
"POP_WARNING"
Evaluate the method a and take the resulting string and pop the warning from the set of ignored warnings. When popped the same number of times as it has been pushed, the warning is no longer ignored.
"RUN"
Compiles and evaluates method a of the source, but ignores the result.
"RUNCT"
Compiles and evaluates method a od source, and expects an array(int) of two or three elements back.
Array int
0
The number of successful tests performed.
int
1
The number of failed tests,
int
2
Optionally the number of skipped tests.
"EQ"
Compares the result of the method a and b with
==
."EQUAL"
Compares the result of the method a and b with
equal
.
- Methodadd_plugin
void
add_plugin(Plugin
p
)- Description
Add a
Plugin
object to the test, allowing the source code to be modified.
- Methodcompile
program
compile(string
src
)- Description
Compile the source code
src
in the context of the file this test belongs. Note that no changes in error mode is done and compilation errors are not caught.
- Methodcompile
variant
program
compile()- Description
Set the error mode according to
inhibi_errors
, applies any source code plugins by callingprepare_source
and finally compiles the result. Any resulting compilation errors will be stored incompilation_error
. The error mode will be set to0
after compiltion is done.
- Methodcreate
Tools.Testsuite.TestTools.Testsuite.Test(
string
file
,int
line
,int
number
,string
type
,string
source
,void
|array
(string
)cond
)
- Methodname
string
name()- Description
The name of this test, in the form of filename:line:" Test "number. The result is then processed by any code plugins.
- Methodlog_msg
Module Tools.sed
- Description
edit commands supported:
<firstline>,<lastline><edit command> ^^ numeral (17) ^^ or relative (+17, -17) or a search regexp (/regexp/) or multiple (17/regexp//regexp/+2)
Command Action D Delete first line in space G Insert hold space H Append current space to hold space P Print current data a<string> Insert c<string> Change current space d Delete current space h Copy current space to hold space i<string> Print string l Print current space p Print first line in data q Quit evaluating s/regexp/with/x Replace y/chars/chars/ Replace chars where line is numeral, first 'line'==0
Module Unicode
- Constantversion
constant
Unicode.version
- Description
Contains the version of the current Unicode database as a string, e.g.
"5.0.0"
.
- Methodis_rtlchar
int
is_rtlchar(int
c
)- Description
Returns
1
if the character is a RTL character or indicator, otherwise0
.
- Methodis_rtlstring
int
is_rtlstring(string
s
)- Description
Returns
1
if the string contains RTL characters or RTL indicators, otherwise0
.
- Methodis_whitespace
bool
is_whitespace(int
c
)- Description
Returns
1
if the character is a white space character, otherwise0
.
- Methodis_wordchar
int
is_wordchar(int
c
)- Description
Returns whether a unicode character
c
is a word, part of a word or not.- Returns
2
The character is an ideograph (a CJK single-word character)
1
The character is a letter, number or non-spacing mark, as defined by its unicode (general category) specification
0
Any other character (such as symbols, punctuation and separators)
- Methodnormalize
string
normalize(string
data
,string
method
)- Description
Normalize the given unicode string according to the specified method.
The methods are:
NFC, NFD, NFKC and NFKD.
The methods are described in detail in the UAX #15 document, which can currently be found at http://www.unicode.org/unicode/reports/tr15/tr15-21.html
A short description:
C and D specifies whether to decompose (D) complex characters to their parts, or compose (C) single characters to complex ones.
K specifies whether or not do a canonical or compatibility conversion. When K is present, compatibility transformations are performed as well as the canonical transformations.
In the following text, 'X' denotes the single character 'X', even if there is more than one character inside the quotation marks. The reson is that it's somewhat hard to describe unicode in iso-8859-1.
The Unicode Standard defines two equivalences between characters: canonical equivalence and compatibility equivalence. Canonical equivalence is a basic equivalency between characters or sequences of characters.
'Å' and 'A' '° (combining ring above)' are canonically equivalent.
For round-trip compatibility with existing standards, Unicode has encoded many entities that are really variants of existing nominal characters. The visual representations of these character are typically a subset of the possible visual representations of the nominal character. These are given compatibility decompositions in the standard. Because the characters are visually distinguished, replacing a character by a compatibility equivalent may lose formatting information unless supplemented by markup or styling.
Examples of compatibility equivalences:
Font variants (thin, italic, extra wide characters etc)
Circled and squared characters
super/subscript ('²' -> '2')
Fractions ('½' -> '1/2')
Other composed characters ('fi' -> 'f' 'i', 'kg' -> 'k' 'g')
- Methodsplit_words
array
(string
) split_words(string
input
)- Description
Splits the input string into an array of words, on the boundaries between the different kinds of word characters as defined by
is_wordchar
. The result is an array of words, with the non-word characters between them thrown away.
- Constantversion
Module VCDiff
- Description
Pike glue for the open-vcdiff differential compression library. http://code.google.com/p/open-vcdiff/
Encoding and decoding relies on a common string that the differences are computed against - this string is called the dictionary.
Basic usage:
string dict ="abcdef";VCDiff.Encoder encoder =VCDiff.Encoder (dict);string encoded = encoder->encode ("abcdefghijklmnopqrstuvwxyz");VCDiff.Decoder decoder =VCDiff.Decoder (dict);string decoded = decoder->decode (encoded);
Module Val
- Description
This module contains special values used by various modules, e.g. a null value used both by
Sql
andStandards.JSON
.In many ways these values should be considered constant, but it is possible for a program to replace them with extended versions, provided they don't break the behavior of the base classes defined here. Since there is no good mechanism to handle such extending in several steps, pike libraries should preferably ensure that the base classes defined here provide required functionality directly.
- Note
Since resolving using the dot operator in e.g.
Val.null
is done at compile time, replacement of these values often must take place very early (typically in a loader before the bulk of the pike code is compiled) to be effective in such cases. For this reason, pike libraries should use dynamic resolution through e.g.->
ormaster()->resolv()
instead.
- Variabletrue
Variablefalse Boolean
Val.trueBoolean
Val.false- Description
Objects that represent the boolean values true and false. In a boolean context these evaluate to true and false, respectively.
They produce
1
and0
, respectively, when cast to integer, and"1"
and"0"
when cast to string. They do however not compare as equal to the integers 1 and 0, or any other values.Val.true
only compares (and hashes) as equal with other instances ofTrue
(although there should be as few as possible). Similarly,Val.false
is only considered equal to otherFalse
instances.Protocols.JSON
uses these objects to represent the JSON literalstrue
andfalse
.- Note
The correct way to programmatically recognize these values is something like
if(objectp(something) && ([object]something)->is_val_true) ...
and
if(objectp(something) && ([object]something)->is_val_false) ...
respectively. See
Val.null
for rationale.- Note
Pike natively uses integers (zero and non-zero) as booleans. These objects don't change that, and unless there's a particular reason to use these objects it's better to stick to e.g. 0 and 1 for boolean values - that is both more efficient and more in line with existing coding practice. These objects are intended for cases where integers and booleans occur in the same place and it is necessary to distinguish them.
- Variablelocal_timezone
int
Val.local_timezone- Description
The local timezone without daylight-saving correction.
- Note
This value is determined once at process start, and cached for the lifetime of the process.
- Variablenull
Null
Val.null- Description
Object that represents a null value.
In general, null is a value that represents the lack of a real value in the domain of some type. For instance, in a type system with a null value, a variable of string type typically can hold any string and also null to signify no string at all (which is different from the empty string). Pike natively uses the integer 0 (zero) for this, but since 0 also is a real integer it is sometimes necessary to have a different value for null, and then this object is preferably used.
This object is false in a boolean context. It does not cast to anything, and it is not equal to anything else but other instances of
Null
(which should be avoided).This object is used by the
Sql
module to represent SQL NULL, and it is used byProtocols.JSON
to represent the JSON literalnull
.- Note
Do not confuse the null value with
UNDEFINED
. AlthoughUNDEFINED
often is used to represent the lack of a real value, and it can be told apart from an ordinary zero integer with some effort, it is transient in nature (for instance, it automatically becomes an ordinary zero when inserted in a mapping). That makes it unsuitable for use as a reliable null value.- Note
The correct way to programmatically recognize
Val.null
is something likeif(objectp(something) && ([object]something)->is_val_null) ...
That way it's possible for other code to replace it with an extended class, or create their own variants which needs to behave like
Val.null
.- FIXME
The Oracle glue currently uses static null objects which won't be affected if this object is replaced.
- Methodiso_time
string
iso_time(mapping
(string
:int
)tm
)- Parameter
tm
Standard tm mapping, optionally extended with
nsec
for nanoseconds.- Returns
ISO formatted time.
- See also
mktime()
- Methodiso_timezone
final
string
iso_timezone(int
timezone
)- Parameter
timezone
Timezone in seconds west from UTC (must include daylight-saving time adjustment).
- Returns
ISO formatted timezone east from UTC.
- See also
localtime()
Class Val.Boolean
- Description
Common base class for
Val.True
andVal.False
, mainly to facilitate typing. Do not create any instances of this.
Class Val.Date
- Description
Lightweight date type. Stores internally in days since epoch. Supports arithmetic with
Interval
,Timestamp
,Time
andTimeTZ
objects. Cast it toint
orfloat
to obtain unix_time.- See also
Interval
,Timestamp
,Time
,TimeTZ
,Range
Class Val.False
- Description
Type for the
Val.false
object. Do not create more instances of this - useVal.false
instead.
Class Val.Inet
- Description
Lightweight IPv4 and IPv6 address type that stores the netmask and allows simple arithmetic and comparison operators.
- Variableaddress
int
Val.Inet.address- Description
IP address converted to an integer. IPv4 addresses will be 32-bit or less.
- Variablemasklen
int
Val.Inet.masklen- Description
Defines the netmask. For both IPv4 and IPv6 addresses,
masklen
will be 128 in case of full addresses.
- Methodcreate
Val.InetVal.Inet(
int
ip
,void
|int
masklen
)Val.InetVal.Inet()
- Parameter
ip
An IPv4 or IPv6 ip address.
- Parameter
masklen
Defines the netmask, always in the range between
0
and128
; i.e. for IPv4 addresses you should add12 * 8
to the actual IPv4-masklen.
- Methodcreate
Val.InetVal.Inet(
string
ip
)- Parameter
ip
A string defining an IPv4 or IPv6 address with an optional
masklen
attached. If the address is in IPv6 notation, the range of themasklen
is expected to be between0
and128
. If the address is in IPv4 notation, the range of themasklen
is expected to be between0
and32
.
Class Val.Interval
- Description
Lightweight time and date interval type. It stores the interval in integers of nanoseconds, days and months. Supports arithmetic with
Time
,TimeTZ
,Timestamp
andDate
objects. Cast it toint
orfloat
to obtain seconds.- Note
Depending on daylight-saving time, a day may not equal 24 hours.
- Note
The number of days in a month depends on the the time of the year.
- See also
Timestamp
,Date
,Time
- Variabledays
int
Val.Interval.days- Description
Number of days; may not be equal to 24 hours per day, depending on daylight-saving time.
- Variablemonths
int
Val.Interval.months- Description
Number of months; the number of days per month varies accordingly.
- Methodcast
(int)Val.Interval()
(float)Val.Interval()
(string)Val.Interval()
(array)Val.Interval()
(mapping)Val.Interval()
(multiset)Val.Interval()- Description
Casting intervals with
days
ormonths
toint
orfloat
is not possible since the units are not constant. Casting an interval tostring
will return a value which is SQL-compliant.
Class Val.Null
- Description
Type for the
Val.null
object. Do not create more instances of this - useVal.null
instead.
Class Val.Range
- Description
Generic lightweight range type. Supports any values for lower and upper boundaries that implement
lfun::`<()
andlfun::`-()
, and preferrably also cast toint
andstring
.- Note
Can only contain a single contiguous range.
- Note
The empty range must be stored as
(Math.inf, -Math.inf)
if assigned directly tofrom
andtill
.
- Method`|
bool
res =Val.Range()
|that
- Description
Is adjacent to
- FIXME
This does NOT seem like a good operator for this operation.
- Methodcontains
bool
contains(this_program
|value_type
other
)- Returns
True if this range fully contains another range or element.
- Methodcreate
Val.RangeVal.Range(
value_type
from
,value_type
till
)Val.RangeVal.Range(
this_program
copy
)Val.RangeVal.Range()
- Parameter
from
Lower inclusive boundary for the range. Specify no lower-boundary by filling in
-Math.inf
.- Parameter
till
Upper exclusive boundary for the range. Specify no upper-boundary by filling in
Math.inf
.- See also
Math.inf
- Methodinterval
mixed
interval()- Returns
Calculates the value of the interval:
till - from
. Returns0
if the range is empty.
- Methodmerge
this_program
merge(this_program
...other
)- Parameter
other
Extends the current range to the smallest range which encompasses itself and all other given ranges.
- FIXME
This seems like the operation that
`|()
ought to do.
Class Val.Time
- Description
Lightweight time type. Stores absolute times in a day with nanosecond resolution. Normalised value range is between
00:00:00.000000000
and23:59:59.999999999
. Values outside this range are accepted, and have arithmetically sound results. Supports arithmetic withInterval
andDate
objects. Cast it toint
orfloat
to obtain seconds since00:00
.- See also
Interval
,Date
,TimeTZ
,Range
- Methodcreate
Val.TimeVal.Time(
int
hour
,int
min
,void
|int
sec
,void
|int
nsec
)Val.TimeVal.Time(
int
sec
)- Parameter
hour
Hours since epoch.
- Parameter
min
Minutes since epoch.
- Parameter
sec
Seconds since epoch.
- Parameter
nsec
Nanoseconds since epoch.
- Methodcreate
Val.TimeVal.Time(
mapping
(string
:int
)tm
)- Parameter
tm
Standard tm mapping, optionally extended with
nsec
for nanoseconds. Passed values will not be normalised. Days/months/years are ignored.
Class Val.TimeTZ
- Description
Lightweight time type with timezone. Equivalent to
Time
, but stores a timezone offset as well. Cast it toint
orfloat
to obtain seconds since00:00
.- See also
Time
,Date
,Interval
,Range
- Variabletimezone
int
Val.TimeTZ.timezone- Description
Timezone offset in seconds west from UTC (includes daylight-saving time adjustment).
- Note
ISO time format displays the timezone in seconds east from UTC.
- See also
localtime()
- Methodcreate
Val.TimeTZVal.TimeTZ(
mapping
(string
:int
)tm
)- Parameter
tm
Standard tm mapping, optionally extended with
nsec
for nanoseconds. Any specifiedtimezone
is used as is. Passed values will not be normalised. Days/months/years are ignored.
- Methodcreate
Val.TimeTZVal.TimeTZ(
int
year
,int
month
,int
day
,int
hour
,int
min
,void
|int
sec
,void
|int
nsec
)- Description
Stores just the time of the day components, but including the correct timezone offset with any daylight-saving correction active on the date specified.
- Parameter
year
Absolute year (e.g. 1900 == 1900, 2000 = 2000, 2017 == 2017).
- Parameter
month
Month of the year (January == 1 ... December == 12).
- Parameter
day
Day of the month (typically between 1 and 31).
- Parameter
hour
Hour of the day (typically between 0 and 23).
- Parameter
min
Minutes (typically between 0 and 59).
- Parameter
sec
Seconds (typically between 0 and 59).
- Parameter
nsec
Nanoseconds (typically between 0 and 999999999).
- Note
Specified values are expected in the localised time (i.e. relative to the current timezone locale, including daylight-saving correction).
- Note
If any of these values are offered in a denormalised range, they will be normalised relative to the startdate offered.
- See also
Timestamp
,Date
,Interval
,Time
Class Val.Timebase
- Description
Base class for time related objects. Supports arithmetic with
Interval
objects.- Note
Should not be used by itself.
- See also
Timestamp
,Time
,Interval
- Variablensecs
int
Val.Timebase.nsecs- Description
Nanoseconds since epoch (for absolute time classes, epoch equals
1970/01/01 00:00:00 UTC
).
- Variableusecs
int
|float
Val.Timebase.usecs- Description
Getting
Microseconds since epoch; reflects the equivalent value as the basic member
nsecs
.Setting
Microseconds since epoch; reflects the equivalent value as the basic member
nsecs
.
- Methodcast
(int)Val.Timebase()
(float)Val.Timebase()
(string)Val.Timebase()
(array)Val.Timebase()
(mapping)Val.Timebase()
(multiset)Val.Timebase()- Description
Can be casted to string, float and int. Casting it to float and int return unix-time values.
- See also
mktime()
,gmtime()
Class Val.Timestamp
- Description
Lightweight time and date type. The values point at absolute points in time. The values are stored internally with nanosecond resolution since epoch (
1970/01/01 00:00:00 UTC
). Supports arithmetic withInterval
objects. Cast it toint
orfloat
to obtain unix_time.- See also
Interval
,Date
,Range
,localtime()
,mktime()
- Methodcast
(int)Val.Timestamp()
(float)Val.Timestamp()
(string)Val.Timestamp()
(array)Val.Timestamp()
(mapping)Val.Timestamp()
(multiset)Val.Timestamp()- Description
When cast to string it returns an ISO formatted timestamp that includes daylight-saving and timezone corrections.
- Methodcreate
Val.TimestampVal.Timestamp(
int
year
,int
month
,int
day
,void
|int
hour
,void
|int
min
,void
|int
sec
,void
|int
nsec
)Val.TimestampVal.Timestamp(
int
unix_time
,void
|int
nsec
)- Parameter
year
Absolute year (e.g. 1900 == 1900, 2000 = 2000, 2017 == 2017).
- Parameter
month
Month of the year (January == 1 ... December == 12).
- Parameter
day
Day of the month (typically between 1 and 31).
- Parameter
hour
Hour of the day (typically between 0 and 23).
- Parameter
min
Minutes (typically between 0 and 59).
- Parameter
sec
Seconds (typically between 0 and 59).
- Parameter
nsec
Nanoseconds (typically between 0 and 999999999).
- Note
Specified values are expected in the localised time (i.e. relative to the current timezone locale, including daylight-saving correction).
- Note
If any of these values are offered in a denormalised range, they will be normalised relative to the startdate offered. I.e. it allows primitive year/month/day/hour/minute/second/nanosecond arithmetic. For more advanced arithmetic you must use
Interval
objects.- See also
localtime()
,mktime()
Module Web
- Description
Modules implementing various web standards.
- Methoddecode_jwk
Crypto.Sign.State
|Crypto.MAC.State
decode_jwk(mapping
(string(7bit)
:string(7bit)
)jwk
)- Description
Decode a JSON Web Key (JWK).
- Returns
Returns an initialized
Crypto.Sign.State
orCrypto.MAC.State
on success andUNDEFINED
on failure.
- Methoddecode_jwk
variant
Crypto.Sign.State
|Crypto.MAC.State
decode_jwk(string(8bit)
jwk
)- Description
Decode a JSON Web Key (JWK).
- Returns
Returns an initialized
Crypto.Sign.State
orCrypto.MAC.State
on success andUNDEFINED
on failure.
- Methoddecode_jwk_set
array
(Crypto.Sign.State
|Crypto.MAC.State
) decode_jwk_set(mapping
(string(8bit)
:array
(mapping
(string(7bit)
:string(7bit)
)))jwk_set
)- Description
Decode a JSON Web Key (JWK) Set.
- See also
RFC 7517 section 5,
decode_jwk()
- Methoddecode_jwk_set
variant
array
(Crypto.Sign.State
|Crypto.MAC.State
) decode_jwk_set(string(7bit)
jwk_set
)- Description
Decode a JSON Web Key (JWK) Set.
- See also
RFC 7517 section 5,
decode_jwk()
- Methoddecode_jws
array
|zero
decode_jws(array
(Crypto.Sign.State
|Crypto.MAC.State
)|Crypto.Sign.State
|Crypto.MAC.State
sign
,string(7bit)
jws
)- Description
Decode a JSON Web Signature (JWS).
- Parameter
sign
The asymetric public or MAC key(s) to validate the jws against.
- Parameter
jws
A JWS as eg returned by
encode_jws()
.- Returns
Returns
0
(zero) on validation failure.Returns an array with two elements on success:
Array mapping
(string(7bit)
:string(7bit)
|int
)0
The JOSE header.
mixed
1
The JWS payload.
See RFC 7515 section 3.
- See also
encode_jws()
,decode_jwt()
,Crypto.Sign.State()->jose_decode()
, RFC 7515
- Methoddecode_jwt
mapping
(string
:string
|int
)|zero
decode_jwt(array
(Crypto.Sign.State
|Crypto.MAC.State
)|Crypto.Sign.State
|Crypto.MAC.State
sign
,string(7bit)
jwt
)- Description
Decode a JSON Web Token (JWT).
- Parameter
sign
The asymetric public or MAC key(s) to validate the jwt against.
- Parameter
jwt
A JWT as eg returned by
encode_jwt()
.- Returns
Returns
0
(zero) on validation failure (this includes validation of expiry times).Returns a mapping of the claims for the token on success. See RFC 7519 section 4.
- Note
The time check of the
"nbf"
value has a hard coded 60 second grace time (as allowed by RFC 7519 section 4.1.5).- See also
encode_jwt()
,decode_jws()
, RFC 7519 section 4
- Methodencode_jwk
string(7bit)
encode_jwk(mapping
(string(7bit)
:string(7bit)
)jwk
)- Description
Encode a JSON Web Key (JWK).
- Methodencode_jwk
variant
string(7bit)
encode_jwk(Crypto.Sign.State
|Crypto.MAC.State
sign
,bool
|void
private_key
)- Description
Encode a JSON Web Key (JWK).
- Parameter
sign
The initialized
Crypto.Sign.State
orCrypto.MAC.State
for which a JWK is to be generated.- Parameter
private_key
If true the private fields of
sign
will also be encoded into the result.- Returns
Returns the corresponding JWK.
- Methodencode_jws
string(7bit)
encode_jws(Crypto.Sign.State
|Crypto.MAC.State
sign
,mixed
tbs
,string(7bit)
|void
media_type
)- Description
Encode a JSON Web Signature (JWS).
- Parameter
sign
The asymetric private or MAC key to use for signing the result.
- Parameter
tbs
The value to sign.
- Parameter
media_type
The media type of
tbs
, cf RFC 7515 section 4.1.9.- Returns
Returns
0
(zero) on encoding failure (usually thatsign
doesn't support JWS.Returns a corresponding JWS on success.
- See also
decode_jwt()
, RFC 7515
- Methodencode_jwt
string(7bit)
encode_jwt(Crypto.Sign.State
|Crypto.MAC.State
sign
,mapping
(string
:string
|int
)claims
)- Description
Encode a JSON Web Token (JWT). Automatically adds the optional "issued at" timestamp and JWD ID (using UUID v4).
- Parameter
sign
The asymetric private or MAC key to use for signing the result.
- Parameter
claims
The set of claims for the token. See RFC 7519 section 4.
- Returns
Returns
0
(zero) on encoding failure (usually thatsign
doesn't support JWS.Returns a corresponding JWT on success.
- Note
The claim
"iat"
(RFC 7519 section 4.1.6 is added unconditionally, and the claim"jti"
(RFC 7519 section 4.1.7) is added if not already present.- See also
decode_jwt()
, RFC 7519 section 4
Class Web.OWL
- Description
Represents an RDF tuple set from an OWL perspective.
Class Web.RDF
- Description
Represents an RDF domain which can contain any number of complete statements.
- Method`|
Web.RDF
res =Web.RDF()
|x
- Description
Modifies the current object to create a union of the current object and the object
x
.
- Methodadd_statement
this_program
add_statement(Resource
|string
|multiset
(string
)subj
,Resource
|string
|multiset
(string
)pred
,Resource
|string
|multiset
(string
)obj
)- Description
Adds a statement to the RDF set. If any argument is a string, it will be converted into a
LiteralResource
. If any argument is a multiset with one string in it, it will be converted into aURIResource
.- Throws
Throws an exception if any argument couldn't be converted into a Resouce object.
- Methoddecode_n_triple_string
string
decode_n_triple_string(string
in
)- Description
Decodes a string that has been encoded for N-triples serialization.
- Bugs
Doesn't correctly decode backslashes that has been encoded with with \u- or \U-notation.
- Methoddereify
bool
dereify(Resource
r
)- Description
Turns the reified statement
r
into a normal statement, if possible.- Returns
1 for success, 0 for failure.
- Methoddereify_all
int(0..)
dereify_all()- Description
Dereifies as many statements as possible. Returns the number of dereified statements.
- Methodencode_n_triple_string
string
encode_n_triple_string(string
in
)- Description
Encodes a string for use as tring in N-triples serialization.
- Methodfind_statements
array
(array
(Resource
)) find_statements(Resource
|int(0)
subj
,Resource
|int(0)
pred
,Resource
|int(0)
obj
)- Description
Returns an array with the statements that matches the given subject
subj
, predicatepred
and objectobj
. Any and all of the resources may be zero to disregard from matching that part of the statement, i.e. find_statements(0,0,0) returns all statements in the domain.- Returns
An array with arrays of three elements.
Array Resource
0
The subject of the statement
Resource
1
The predicate of the statement
Resource
2
The object of the statement
- Methodget_3_tuples
string
get_3_tuples()- Description
Returns a 3-tuple serialization of all the statements in the RDF set.
- Methodget_n_triples
string
get_n_triples()- Description
Returns an N-triples serialization of all the statements in the RDF set.
- Methodget_properties
array
(Resource
) get_properties()- Description
Returns all properties in the domain, e.g. all resources that has been used as predicates.
- Methodget_reify
Resource
|zero
get_reify(Resource
subj
,Resource
pred
,Resource
obj
)- Description
Returns a resource that is the subject of the reified statement {subj, pred, obj}, if such a resource exists in the RDF domain.
- Methodget_resource
URIResource
|zero
get_resource(string
uri
)- Description
Returns an RDF resource with the given URI as identifier, or zero.
- Methodget_subject_map
mapping
(Resource
:mapping
(Resource
:array
(Resource
))) get_subject_map()- Description
Returns a mapping with all the domains subject resources as indices and a mapping with that subjects predicates and objects as value.
- Methodget_xml
string
get_xml(void
|int
no_optimize
)- Description
Serialize the RDF domain as an XML string.
- Parameter
no_optimize
If set, the XML serializer will refrain from doing most (size) optimizations of the output.
- Methodhas_statement
bool
has_statement(Resource
subj
,Resource
pred
,Resource
obj
)- Description
Returns 1 if the RDF domain contains the relation {subj, pred, obj}, otherwise 0.
- Methodis_object
bool
is_object(Resource
r
)- Description
Returns
1
if resourcer
is used as an object, otherwise0
.
- Methodis_predicate
bool
is_predicate(Resource
r
)- Description
Returns
1
if resourcer
is used as a predicate, otherwise0
.
- Methodis_subject
bool
is_subject(Resource
r
)- Description
Returns
1
if resourcer
is used as a subject, otherwise0
.
- Methodmake_resource
URIResource
make_resource(string
uri
)- Description
Returns an RDF resource with the given URI as identifier, or if no such resrouce exists, creates it and returns it.
- Methodparse_n_triples
int
parse_n_triples(string
in
)- Description
Parses an N-triples string and adds the found statements to the RDF set. Returns the number of added relations.
- Throws
The parser will throw errors on invalid N-triple input.
- Methodparse_xml
Web.RDF
parse_xml(string
|Parser.XML.NSTree.NSNode
in
,void
|string
base
)- Description
Adds the statements represented by the string or tree
in
to the RDF domain. Ifin
is a tree the in-node should be the RDF node of the XML serialization. RDF documents take its default namespace from the URI of the document, so if the RDF document relies such ingenious mechanisms, pass the document URI in thebase
variable.
- Methodreify
Resource
reify(Resource
subj
,Resource
pred
,Resource
obj
)- Description
Returns the result of
get_reify
, if any. Otherwise callsreify_low
followed byremove_statement
of the provided statement {subj, pred, obj}.- Returns
The subject of the reified statement.
- Methodreify_low
Resource
reify_low(Resource
subj
,Resource
pred
,Resource
obj
)- Description
Reifies the statement { pred, subj, obj } and returns the resource that denotes the reified statement. There will not be any check to see if the unreified statement is already in the domain, making it possible to define the relation twice. The original statement will not be removed.
- Returns
The subject of the reified statement.
- Methodremove_statement
bool
remove_statement(Resource
subj
,Resource
pred
,Resource
obj
)- Description
Removes the relation from the RDF set. Returns 1 if the relation did exist in the RDF set.
Class Web.RDF.LiteralResource
- Description
Resource identified by literal.
- Variabledatatype
string
Web.RDF.LiteralResource.datatype- Description
Used to contain rdf:datatype value.
- Methodcreate
Web.RDF.LiteralResourceWeb.RDF.LiteralResource(
string
literal
)- Description
The resource will be identified by
literal
.
Class Web.RDF.RDFResource
- Description
Resource used for RDF-technical reasons like reification.
- Methodcreate
Web.RDF.RDFResourceWeb.RDF.RDFResource(
string
rdf_id
)- Description
The resource will be identified by the identifier
rdf_id
Class Web.RDF.Resource
- Description
Instances of this class represents resources as defined in RDF: All things being described by RDF expressions are called resources. A resource may be an entire Web page; such as the HTML document "http://www.w3.org/Overview.html" for example. A resource may be a part of a Web page; e.g. a specific HTML or XML element within the document source. A resource may also be a whole collection of pages; e.g. an entire Web site. A resource may also be an object that is not directly accessible via the Web; e.g. a printed book. This general resource is anonymous and has no URI or literal id.
- Note
Resources instantiated from this class should not be used in other RDF domain objects.
- See also
URIResource
,LiteralResource
Class Web.RDF.URIResource
- Description
Resource identified by URI.
- Methodcreate
Web.RDF.URIResourceWeb.RDF.URIResource(
string
uri
)- Description
Creates an URI resource with the
uri
as identifier.- Throws
Throws an error if another resource with the same URI already exists in the RDF domain.
- Methodget_namespace
string
get_namespace()- Description
Returns the namespace this resource URI references to.
Class Web.RDFS
- Description
RDF Schema.
- Variablerdfs_Class
Variablerdfs_subClassOf
Variablerdfs_Literal
Variablerdfs_subPropertyOf
Variablerdfs_domain
Variablerdfs_range RDFSResource
Web.RDFS.rdfs_ClassRDFSResource
Web.RDFS.rdfs_subClassOfRDFSResource
Web.RDFS.rdfs_LiteralRDFSResource
Web.RDFS.rdfs_subPropertyOfRDFSResource
Web.RDFS.rdfs_domainRDFSResource
Web.RDFS.rdfs_range
Module Web.Api
- Description
The Web.Api has modules and classes for communicating with various (RESTful) web api's such as
Web.Api.Facebook
,Web.Api.Instagram
,Web.Api.Twitter
etc.- Example
string api_key ="......";string api_secret =".......";string redirect_uri ="http://localhost/insta/";Web.Api.Instagram api;string cookie_file ="my-cookie.txt";int main(int argc,array(string) argv){ api =Web.Api.Instagram(api_key, api_secret, redirect_uri);// If a stored authentication cookie exists, populate the auth object.if(Stdio.exist(cookie_file)){ api->auth->set_from_cookie(Stdio.read_file(cookie_file));}if(!api->auth->is_authenticated()){// A cookie existed but the authentication has expiredif(api->auth->is_renewable()){ write("Trying to refresh token...");if(string data = api->auth->refresh_token())Stdio.write_file(cookie_file, data); write("done ok!\n");}else{ werror("failed!\n");}}// No previous authentication exists. Create a new one...else{// Get the uri to the authentication endpointstring uri = api->auth->get_auth_uri(); write("Opening \"%s\" in browser.\nCopy the contents of the address ""bar and paste here: ",Standards.URI(uri)); sleep(2);// For MacProcess.create_process(({"open", uri }));string resp =Stdio.Readline()->read();mapping p =Web.Auth.query_to_mapping(Standards.URI(resp)->query);string code;// If the auth object is OAuth and not OAuth2 this step is required.// Instagram is OAuth2, but Twitter is OAuth1if(p->oauth_token){ auth->set_authentication(p->oauth_token); code = p->oauth_verifier;}else{ code = p->code;}// Now, get an access tokenif(string data = auth->request_access_token(code)){Stdio.write_file(cookie, data);}else{ werror("Failed getting an access token. Aborting!\n");return 1;}}}if(api->auth->is_authenticated()){// No UID (arg1) means get the authenticated users stuff// No additional params (arg2)// Run async (arg3)mapping m = api->users->recent(0, 0,lambda(mixed m){ werror("Insta: %O\n", m); exit(0);});return-1;}else{ werror("No authentication was aquired!\n");return 1;}}
Class Web.Api.Api
- Description
Base class for implementing a (RESTful) WebApi like Facebook's Graph API, Instagram's API, Twitter's API and so on.
Note: This class is useless in it self, and is intended to be inherited by classes implementing a given Web.Api.
Look at the code in
Web.Api.Github
,Web.Api.Instagram
,Web.Api.Linkedin
etc to see some examples of implementations.
- TypedefCallback
typedef
function
(mixed
,Protocols.HTTP.Query
,mixed
... :void
) Web.Api.Api.Callback
- Description
Typedef for the async callback method signature.
- TypedefCallback
typedef
function
(mixed
,Protocols.HTTP.Query
|Protocols.HTTP.Promise.Result
,mixed
... :void
) Web.Api.Api.Callback
- Description
Typedef for the async callback method signature.
- TypedefParamsArg
typedef
mapping
|Web.Auth.Params
Web.Api.Api.ParamsArg
- Description
Typedef for a parameter argument
- ConstantACCESS_TOKEN_PARAM_NAME
protected
constantstring
Web.Api.Api.ACCESS_TOKEN_PARAM_NAME
- Description
In some API's (LinkedIn f ex) this is named something else so it needs to be overridden i cases where it has a different name than the standard one.
- Note
Obsolete.
This is only used if
AUTHORIZATION_METHOD
has been set to""
.
- ConstantAUTHORIZATION_METHOD
protected
constantstring
Web.Api.Api.AUTHORIZATION_METHOD
- Description
Authorization header prefix.
This is typically
"Bearer"
as per RFC 6750, but some apis use the older"token"
.
- ConstantDECODE_UTF8
protected
constantint
Web.Api.Api.DECODE_UTF8
- Description
If
1
Standards.JSON.decode_utf8()
will be used when JSON data is decoded.
- Variable_auth
protected
Web.Auth.OAuth2.Client
Web.Api.Api._auth- Description
Authorization object.
- See also
Web.Auth.OAuth2
- Variable_query_objects
protected
mapping
(int
:array
(Protocols.HTTP.Query
|Callback
)) Web.Api.Api._query_objects- Description
The HTTP query objects when running async.
- Variableauth
Web.Auth.OAuth2.Client
Web.Api.Api.auth- Description
Getter for the authentication object. Most likely this will be a class derived from
Web.Auth.OAuth2.Client
.- See also
Web.Auth.OAuth2.Client
orWeb.Auth.OWeb.Auth.Client
- Note
Read only
- Variablehttp_request_timeout
int(0..)
Web.Api.Api.http_request_timeout- Description
Request timeout in seconds. Only affects async queries.
- Variableutf8_decode
bool
Web.Api.Api.utf8_decode- Description
If
1
Standards.JSON.decode_utf8()
will be used when JSON data is decoded.
- Methodcall
mixed
call(string
api_method
,void
|ParamsArg
params
,void
|string
http_method
,void
|string
data
,void
|Callback
cb
,mixed
...rest
)- Description
Calls a remote API method.
- Throws
An exception is thrown if the response status code is other than
200
,301
or302
.- Parameter
api_method
The remote API method to call! This should be a Fully Qualified Domain Name
- Parameter
params
Additional params to send in the request
- Parameter
http_method
HTTP method to use.
GET
is default- Parameter
data
Inline data to send in a
POST
request for instance.- Parameter
cb
Callback function to get into in async mode
- Returns
If JSON is available the JSON response from servie will be decoded and returned. If not, the raw response (e.g a JSON string) will be returned. The exception to this is if the status code in the response is a
30x
(a redirect), then the response headers mapping will be returned.
- Methodclose_connections
void
close_connections()- Description
Forcefully close all HTTP connections. This only has effect in async mode.
- Methodcreate
Web.Api.ApiWeb.Api.Api(
void
|string
client_id
,void
|string
client_secret
,void
|string
redirect_uri
,void
|string
|array
(string
)|multiset
(string
)scope
)- Description
Creates a new Api instance
- Parameter
client_id
The application ID
- Parameter
client_secret
The application secret
- Parameter
redirect_uri
Where the authorization page should redirect back to. This must be fully qualified domain name.
- Parameter
scope
Extended permissions to use for this authentication.
- Methoddelete
mixed
delete(string
api_method
,void
|ParamsArg
params
,void
|Callback
cb
,mixed
...rest
)- Description
Invokes a call with a DELETE method
- Parameter
api_method
The remote API method to call
- Parameter
params
- Parameter
cb
Callback function to get into in async mode
- Methodget
mixed
get(string
api_method
,void
|ParamsArg
params
,void
|Callback
cb
,mixed
...rest
)- Description
Invokes a call with a GET method
- Parameter
api_method
The remote API method to call
- Parameter
params
- Parameter
cb
Callback function to get into in async mode
- Methodget_encoding
protected
string
get_encoding(mapping
h
)- Description
Returns the encoding from a response
- Parameter
h
The headers mapping from a HTTP respose
- Methodget_uri
protected
string
get_uri(string
method
)- Description
Convenience method for getting the URI to a specific API method
- Parameter
method
- Methodmake_multipart_message
protected
array
(string
) make_multipart_message(mapping
p
,string
body
)- Description
Creates the body of an Upload request
- Parameter
p
The API request parameters
- Parameter
body
Data of the document to upload
- Returns
An array with two indices:
The value for the main Content-Type header
The request body
- Methodparse_canonical_url
mapping
(string
:string
|mapping
) parse_canonical_url(string
url
)- Description
This can be used to parse a link resource returned from a REST api. Many API returns stuff like:
{ ... "pagination":{"next":"/api/v1/method/path?some=variables&page=2&per_page=20"}}
If pagination->next is passed to this method it will return a path of /method/path, given that the base URI of the web api is something along the line of https://some.url/api/v1, and a mapping containing the query variables (which can be passed as a parameter to any of the get, post, delete, put methods.
- Parameter
url
- Returns
"path"
:string
"params"
:mapping
- Methodpatch
mixed
patch(string
api_method
,void
|ParamsArg
params
,void
|Callback
cb
,mixed
...rest
)- Description
Invokes a call with a PATCH method
- Parameter
api_method
The remote API method to call
- Parameter
params
- Parameter
cb
Callback function to get into in async mode
- Methodpost
mixed
post(string
api_method
,void
|ParamsArg
params
,void
|string
data
,void
|Callback
cb
,mixed
...rest
)- Description
Invokes a call with a POST method
- Parameter
api_method
The remote API method to call
- Parameter
params
- Parameter
data
Eventual inline data to send
- Parameter
cb
Callback function to get into in async mode
- Methodput
mixed
put(string
api_method
,void
|ParamsArg
params
,void
|Callback
cb
,mixed
...rest
)- Description
Invokes a call with a PUT method
- Parameter
api_method
The remote API method to call
- Parameter
params
- Parameter
cb
Callback function to get into in async mode
- Methodunescape_forward_slashes
protected
string
unescape_forward_slashes(string
s
)- Description
Unescapes escaped forward slashes in a JSON string
Class Web.Api.Api.Method
- Description
Internal class meant to be inherited by implementing Api's classes that corresponds to a given API endpoint.
- ConstantMETHOD_PATH
protected
constantint
Web.Api.Api.Method.METHOD_PATH
- Description
API method location within the API
https://api.instagram.com/v1/media/search ............................^^^^^^^
- Method_delete
protected
mixed
_delete(string
s
,void
|ParamsArg
p
,void
|Callback
cb
)- Description
Internal convenience method
- Method_get
protected
mixed
_get(string
s
,void
|ParamsArg
p
,void
|Callback
cb
)- Description
Internal convenience method
- Method_patch
protected
mixed
_patch(string
s
,void
|ParamsArg
p
,void
|Callback
cb
)- Description
Internal convenience method
- Method_post
protected
mixed
_post(string
s
,void
|ParamsArg
p
,void
|string
data
,void
|Callback
cb
)- Description
Internal convenience method
- Method_put
protected
mixed
_put(string
s
,void
|ParamsArg
p
,void
|Callback
cb
)- Description
Internal convenience method
Module Web.Api.Facebook
- Method`()
protected
this_program
`()(string
client_id
,string
client_secret
,void
|string
redirect_uri
,void
|string
|array
(string
)|multiset
(string
)scope
)- Description
Instantiates the default Facebook API. See
Web.Api.Api()
for further information.- Parameter
client_id
Your application key/id
- Parameter
client_secret
Your application secret
- Parameter
redirect_uri
The redirect URI after an authentication
- Parameter
scope
The application scopes to grant access to
Class Web.Api.Facebook.Graph
- ConstantAPI_URI
constant
string
Web.Api.Facebook.Graph.API_URI
- Description
The base uri to the Graph API
- Variableany
Any
Web.Api.Facebook.Graph.any- Description
Getter for the
Any
object which is a generic object for making request to the Facebook Graph API- See also
Any
- Note
Read only
- Methoddelete
mapping
delete(string
path
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Make a generic
DELETE
request to the Facebook Graph API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
cb
Callback for async requests
- Methodget
mapping
get(string
path
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Make a generic
GET
request to the Facebook Graph API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
cb
Callback for async requests
- Methodpost
mapping
post(string
path
,void
|ParamsArg
params
,void
|string
data
,void
|Callback
cb
)- Description
Make a generic
POST
request to the Facebook Graph API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
data
- Parameter
cb
Callback for async requests
- Methodput
mapping
put(string
path
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Make a generic
PUT
request to the Facebook Graph API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
cb
Callback for async requests
Class Web.Api.Facebook.Graph.Any
- Description
A generic wrapper around
Method
- ConstantAPI_URI
- Method`()
Module Web.Api.Github
- Method`()
protected
this_program
`()(string
client_id
,string
client_secret
,void
|string
redirect_uri
,void
|string
|array
(string
)|multiset
(string
)scope
)- Description
Instantiates the default Github API. See
Web.Api.Api()
for further information.- Parameter
client_id
Your application key/id
- Parameter
client_secret
Your application secret
- Parameter
redirect_uri
The redirect URI after an authentication
- Parameter
scope
The application scopes to grant access to
Class Web.Api.Github.Github
- ConstantAPI_URI
constant
string
Web.Api.Github.Github.API_URI
- Description
The base uri to the Github API
- Variableany
Any
Web.Api.Github.Github.any- Description
Getter for the
Any
object which is a generic object for making request to the Github API- See also
Any
- Note
Read only
- Methoddelete
mapping
delete(string
path
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Make a generic
DELETE
request to the Github API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
cb
Callback for async requests
- Methodget
mapping
get(string
path
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Make a generic
GET
request to the Github API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
cb
Callback for async requests
- Methodpost
mapping
post(string
path
,void
|ParamsArg
params
,void
|string
data
,void
|Callback
cb
)- Description
Make a generic
POST
request to the Github API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
data
- Parameter
cb
Callback for async requests
- Methodput
mapping
put(string
path
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Make a generic
PUT
request to the Github API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
cb
Callback for async requests
Class Web.Api.Github.Github.Any
- Description
A generic wrapper around
Method
- ConstantAPI_URI
- Method`()
Module Web.Api.Google
- Methoddiscover
Base
discover(string
api
,string
version
,void
|string
client_id
,void
|string
client_secret
,void
|string
redirect_uri
,void
|string
|array
(string
)|multiset
(string
)scope
)- Description
Get a Google API object
- Example
This example shows how you can use the Google API to find out all the compute zones that exist at Google Compute Engine.
#define SECRET_FILE "googleserviceaccount.json"#define PROJECT "somegoogleproject"#define TOKENTIME 3600 string jwt_secret =Stdio.File(SECRET_FILE,"r").read();Web.Api.Google.Base api =Web.Api.Google.discover("compute","v1");void authenticated(){if(!api->auth->is_authenticated() || api->auth->expires->unix_time()- time(1)< TOKENTIME / 2) api->auth->get_token_from_jwt(jwt_secret);}; authenticated();mixed allzones = api->resrc->zones->list((["project":PROJECT ]));
Class Web.Api.Google.Api
- Description
Internal class meant to be inherited by other Google API's
Class Web.Api.Google.Base
Class Web.Api.Google.Discovery
- Variable_apis
protected
Apis
Web.Api.Google.Discovery._apis- Description
Internal singleton objects. Retrieve an apis via
apis
.
- Variable_apis
Module Web.Api.Google.Analytics
- Method`()
protected
this_program
`()(string
client_id
,string
client_secret
,void
|string
redirect_uri
,void
|string
|array
(string
)|multiset
(string
)scope
)- Description
Instantiates the default Analytics API. See
Web.Api.Api()
for further information.- Parameter
client_id
Your application key/id
- Parameter
client_secret
Your application secret
- Parameter
redirect_uri
The redirect URI after an authentication
- Parameter
scope
The application scopes to grant access to
Class Web.Api.Google.Analytics.V3
- Variable_core
Variable_realtime
Variable_management protected
Core
Web.Api.Google.Analytics.V3._coreprotected
RealTime
Web.Api.Google.Analytics.V3._realtimeprotected
Management
Web.Api.Google.Analytics.V3._management- Description
Internal singleton objects. Retrieve an instance via
core
,realtime
andmanagement
.
- Variablemanagement
Management
Web.Api.Google.Analytics.V3.management- Description
Getter for the
Management
API- Note
Read only
- Variablerealtime
RealTime
Web.Api.Google.Analytics.V3.realtime- Description
Getter for the
RealTime
API- Note
Read only
Class Web.Api.Google.Analytics.V3.Core
- Description
Interface to the Google Analytics core API
Class Web.Api.Google.Analytics.V3.Management
- Description
Interface to the Google Analytics managment API
- Variable_core
- Method`()
Module Web.Api.Google.Plus
- Method`()
protected
this_program
`()(string
client_id
,string
client_secret
,void
|string
redirect_uri
,void
|string
|array
(string
)|multiset
(string
)scope
)- Description
Instantiates the default Google+ API. See
Web.Api.Api()
for further information.- Parameter
client_id
Your application key/id
- Parameter
client_secret
Your application secret
- Parameter
redirect_uri
The redirect URI after an authentication
- Parameter
scope
The application scopes to grant access to
Class Web.Api.Google.Plus.V1
- Variable_people
Variable_activities private
People
Web.Api.Google.Plus.V1._peopleprivate
Activities
Web.Api.Google.Plus.V1._activities- Description
Internal singleton objects. Get an instance via
people
andactivities
.
- Variableactivities
Activities
Web.Api.Google.Plus.V1.activities- Description
Getter for the
Activities
object which has methods for allactivities
related Google+ API methods.- See also
- Note
Read only
- Variablepeople
People
Web.Api.Google.Plus.V1.people- Description
Getter for the
People
object which has methods for allpeople
related Google+ API methods.- See also
- Note
Read only
Class Web.Api.Google.Plus.V1.Activities
- Description
Class implementing the Google+ Activities API. https://developers.google.com/+/api/latest/activities
Retreive an instance of this class through the
activities
property
Class Web.Api.Google.Plus.V1.People
- Description
Class implementing the Google+ People API. https://developers.google.com/+/api/latest/people
Retreive an instance of this class through the
Social.Google.Plus()->people
property
- Methodget
mapping
get(void
|string
user_id
,void
|Callback
cb
)- Description
Get info ablut a person.
- Parameter
user_id
If empty the currently authenticated user will be fetched.
- Parameter
cb
Callback for async request
- Methodlist
mapping
list(void
|string
user_id
,void
|string
collection
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
List all of the people in the specified
collection
.- Parameter
user_id
If empty the currently authenticated user will be used.
- Parameter
collection
If empty "public" activities will be listed. Acceptable values are:
- "public"
The list of people who this user has added to one or more circles, limited to the circles visible to the requesting application.
- "public"
- Parameter
params
"maxResult"
:int
Max number of items ti list
"orderBy"
:string
The order to return people in. Acceptable values are:
- "alphabetical"
Order the people by their display name.
- "best"
Order people based on the relevence to the viewer.
"pageToken"
:string
The continuation token, which is used to page through large result sets. To get the next page of results, set this parameter to the value of
nextPageToken
from the previous response.- "alphabetical"
- Parameter
cb
Callback for async request
- Variable_people
- Method`()
- Methoddiscover
Module Web.Api.Instagram
- Description
Instagram API implementation. https://instagram.com/developer/
- Method`()
protected
this_program
`()(string
client_id
,string
client_secret
,void
|string
redirect_uri
,void
|string
|array
(string
)|multiset
(string
)scope
)- Description
Instantiates the default Instagram API. See
Web.Api.Api()
for further information.- Parameter
client_id
Your application key/id
- Parameter
client_secret
Your application secret
- Parameter
redirect_uri
The redirect URI after an authentication
- Parameter
scope
The application scopes to grant access to
Class Web.Api.Instagram.V1
- Description
Class for communicating with version 1 of the Instagram API.
- ConstantAPI_URI
protected
constantstring
Web.Api.Instagram.V1.API_URI
- Description
The URI to the Instagram API
- Variable_any
private
Any
Web.Api.Instagram.V1._any- Description
Singleton
Any
object. Will be instantiated first time requested.
- Variable_comments
private
Comments
Web.Api.Instagram.V1._comments- Description
Singleton
Comments
object. Will be instantiated first time requested.
- Variable_likes
private
Likes
Web.Api.Instagram.V1._likes- Description
Singleton
Likes
object. Will be instantiated first time requested.
- Variable_locations
private
Locations
Web.Api.Instagram.V1._locations- Description
Singleton
Locations
object. Will be instantiated first time requested.
- Variable_media
private
Media
Web.Api.Instagram.V1._media- Description
Singleton
Media
object. Will be instantiated first time requested.
- Variable_tags
private
Tags
Web.Api.Instagram.V1._tags- Description
Singleton
Tags
object. Will be instantiated first time requested.
- Variable_users
private
Users
Web.Api.Instagram.V1._users- Description
Singleton
User
object. Will be instantiated first time requested.
- Variableany
Any
Web.Api.Instagram.V1.any- Description
Getter for the
Any
object which can be used to query any method in the Instagram web api. The METHOD_PATH is set to / in this object.- Note
Read only
- Variablecomments
Comments
Web.Api.Instagram.V1.comments- Description
Getter for the
Comments
object which has methods for allcomments
related Instagram API methods.- See also
- Note
Read only
- Variablelikes
Likes
Web.Api.Instagram.V1.likes- Description
Getter for the
Likes
object which has methods for alllikes
related Instagram API methods.- See also
- Note
Read only
- Variablelocations
Locations
Web.Api.Instagram.V1.locations- Description
Getter for the
Locations
object which has methods for alllocations
related Instagram API methods.- See also
- Note
Read only
- Variablemedia
Media
Web.Api.Instagram.V1.media- Description
Getter for the
Media
object which has methods for allmedia
related Instagram API methods.- See also
- Note
Read only
- Variabletags
Tags
Web.Api.Instagram.V1.tags- Description
Getter for the
Tags
object which has methods for alltags
related Instagram API methods.- See also
- Note
Read only
- Variableusers
Users
Web.Api.Instagram.V1.users- Description
Getter for the
Users
object which has methods for allusers
related Instagram API methods.- See also
- Note
Read only
- Methoddelete
mapping
delete(string
path
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Make a generic
DELETE
request to the Instagram API.- Parameter
path
What to request. Like
me
,users/self
,[some_id]/something
.- Parameter
params
- Parameter
cb
Callback for async requests
- Methodget
mapping
get(string
path
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Make a generic
GET
request to the Instagram API.- Parameter
path
What to request. Like
me
,users/self
,[some_id]/something
.- Parameter
params
- Parameter
cb
Callback for async requests
- Methodpost
mapping
post(string
path
,void
|ParamsArg
params
,string
|zero
data
,void
|Callback
cb
)- Description
Make a generic
POST
request to the Instagram API.- Parameter
path
What to request. Like
me
,users/self
,[some_id]/something
.- Parameter
params
- Parameter
data
Ignored.
- Parameter
cb
Callback for async requests
- Methodput
mapping
put(string
path
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Make a generic
PUT
request to the Instagram API.- Parameter
path
What to request. Like
me
,users/self
,[some_id]/something
.- Parameter
params
- Parameter
cb
Callback for async requests
Class Web.Api.Instagram.V1.Any
- Description
A generic wrapper around
Method
. This will query the root of the API, and can be used to query methods not implemented in this module.
- Methoddelete
mixed
delete(string
s
,void
|ParamsArg
p
,void
|Callback
cb
)- Description
DELETE data
- Parameter
s
The path to the Instagram API to query
- Parameter
p
Parameters to the query
- Parameter
cb
Async callback
- Methodget
mixed
get(string
s
,void
|ParamsArg
p
,void
|Callback
cb
)- Description
GET data
- Parameter
s
The path to the Instagram API to query
- Parameter
p
Parameters to the query
- Parameter
cb
Async callback
- Methodpost
mixed
post(string
s
,void
|ParamsArg
p
,string
|zero
data
,void
|Callback
cb
)- Description
POST data
- Parameter
s
The path to the Instagram API to query
- Parameter
p
Parameters to the query
- Parameter
cb
Async callback
Class Web.Api.Instagram.V1.Comments
- Description
Class implementing the Instagram Comments API. http://instagram.com/developer/endpoints/comments/
Retreive an instance of this class via the
comments
property.
- Methodadd
mapping
add(string
media_id
,string
comment
,void
|Callback
cb
)- Description
Get a full list of comments on a media.
- Note
This method is not allowed by default. You have to contact Instagram in order to activate this method. http://bit.ly/instacomments
- Note
Required scope: comments
- Parameter
media_id
The media to retreive comments for
- Parameter
cb
Callback for async mode
- Methodlist
mapping
list(string
media_id
,void
|Callback
cb
)- Description
Get a full list of comments on a media.
- Note
Required scope: comments
- Parameter
media_id
The media to retreive comments for
- Parameter
cb
Callback for async mode
- Methodremove
mapping
remove(string
media_id
,string
comment_id
,void
|Callback
cb
)- Description
Remove a comment either on the authenticated user's media or authored by the authenticated user.
- Note
Required scope: comments
- Parameter
media_id
The media the comment is for
- Parameter
comment_id
The comment to remove
- Parameter
cb
Callback for async mode
Class Web.Api.Instagram.V1.Likes
- Description
Class implementing the Instagram Likes API. http://instagram.com/developer/endpoints/likes/
Retreive an instance of this class via the
likes
property.
- Methodadd
mapping
add(string
media_id
,void
|Callback
cb
)- Description
Set a like on this media by the currently authenticated user.
- See also
- Note
Required scope: likes
- Parameter
media_id
- Parameter
cb
- Methodlist
mapping
list(string
media_id
,void
|Callback
cb
)- Description
Get a list of users who have liked this media.
- See also
http://instagram.com/developer/endpoints/likes/#get_media_likes
- Note
Required scope: likes
- Parameter
media_id
- Parameter
cb
- Methodremove
mapping
remove(string
media_id
,void
|Callback
cb
)- Description
Remove a like on this media by the currently authenticated user.
- See also
http://instagram.com/developer/endpoints/likes/#delete_likes
- Note
Required scope: likes
- Parameter
media_id
- Parameter
cb
Class Web.Api.Instagram.V1.Locations
- Description
Class implementing the Instagram Likes API. http://instagram.com/developer/endpoints/likes/
Retreive an instance of this class via the
locations
property.
- Methodlocation
mapping
location(string
location_id
,void
|Callback
cb
)- Description
Get information about a location.
- See also
http://instagram.com/developer/endpoints/locations/#get_locations
- Parameter
location_id
- Parameter
cb
- Methodrecent_media
mapping
recent_media(string
location_id
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Get a list of recent media objects from a given location. May return a mix of both image and video types.
- See also
http://instagram.com/developer/endpoints/locations/#get_locations_media_recent
- Parameter
location_id
- Parameter
params
"min_timestamp"
:int
Return media after this UNIX timestamp
"min_id"
:string
Return media before this min_id.
"max_id"
:string
Return media after this max_id.
"max_timestamp"
:int
Return media before this UNIX timestamp
- Parameter
cb
- Methodsearch
mapping
search(ParamsArg
params
,void
|Callback
cb
)- Description
Search for a location by geographic coordinate.
- See also
http://instagram.com/developer/endpoints/locations/#get_locations_search
- Parameter
params
"lat"
:float
Latitude of the center search coordinate. If used, lng is required.
"distance"
:int
Default is 1000m (distance=1000), max distance is 5000.
"lng"
:float
Longitude of the center search coordinate. If used, lat is required.
"foursquare_v2_id"
:string
|int
Returns a location mapped off of a foursquare v2 api location id. If used, you are not required to use lat and lng.
"foursquare_id"
:string
|int
Returns a location mapped off of a foursquare v1 api location id. If used, you are not required to use lat and lng. Note that this method is deprecated; you should use the new foursquare IDs with V2 of their API.
- Parameter
cb
Class Web.Api.Instagram.V1.Media
- Description
Class implementing the Instagram Media API. http://instagram.com/developer/endpoints/media/
Retreive an instance of this class via the
media
property
- Methoditem
mapping
item(string
media_id
,void
|Callback
cb
)- Description
Get information about a media object. The returned type key will allow you to differentiate between image and video media. Note: if you authenticate with an OAuth Token, you will receive the user_has_liked key which quickly tells you whether the current user has liked this media item.
- See also
- Parameter
media_id
- Parameter
cb
Callback function when in async mode
- Methodpopular
mapping
popular(void
|Callback
cb
)- Description
Get a list of what media is most popular at the moment. Can return a mix of image and video types.
- Parameter
cb
Callback function when in async mode
- Methodsearch
mapping
search(void
|ParamsArg
params
,void
|Callback
cb
)- Description
Search for media in a given area. The default time span is set to 5 days. The time span must not exceed 7 days. Defaults time stamps cover the last 5 days. Can return mix of image and video types.
- Parameter
params
Can have:
"lat"
:string
|float
Latitude of the center search coordinate. If used, lng is required.
"min_timestamp"
:int
A unix timestamp. All media returned will be taken later than this timestamp.
"lng"
:string
|float
Longitude of the center search coordinate. If used, lat is required.
"max_timestamp"
:int
A unix timestamp. All media returned will be taken earlier than this timestamp.
"distance"
:int
Default is 1km (distance=1000), max distance is 5km.
- Parameter
cb
Callback function when in async mode
Class Web.Api.Instagram.V1.Method
- Description
Internal convenience class.
- Method_delete
protected
mixed
_delete(string
s
,void
|ParamsArg
p
,void
|Callback
cb
)- Description
Internal convenience method
- Method_get
protected
mixed
_get(string
s
,void
|ParamsArg
p
,void
|Callback
cb
)- Description
Internal convenience method
- Method_post
protected
mixed
_post(string
s
,void
|ParamsArg
p
,string
|zero
data
,void
|Callback
cb
)- Description
Internal convenience method
Class Web.Api.Instagram.V1.Tags
- Description
Class implementing the Instagram Tags API. http://instagram.com/developer/endpoints/tags/
Retreive an instance of this class via the
tags
property.
- Methodrecent
mapping
recent(string
tag_name
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Get a list of recently tagged media. Note that this media is ordered by when the media was tagged with this tag, rather than the order it was posted. Use the max_tag_id and min_tag_id parameters in the pagination response to paginate through these objects. Can return a mix of image and video types.
- See also
http://instagram.com/developer/endpoints/tags/#get_tags_media_recent
- Parameter
tag_name
- Parameter
params
Can be:
"min_id"
:string
Return media before this min_id.
"max_id"
:string
Return media after this max_id.
- Parameter
cb
Callback function when in async mode
- Methodsearch
mapping
search(string
tag_name
,Callback
cb
)- Description
Search for tags by name. Results are ordered first as an exact match, then by popularity. Short tags will be treated as exact matches.
- See also
http://instagram.com/developer/endpoints/tags/#get_tags_search
- Parameter
tag_name
- Parameter
cb
Callback function when in async mode
Class Web.Api.Instagram.V1.Users
- Description
Class implementing the Instagram Users API. http://instagram.com/developer/endpoints/users/
Retreive an instance of this class via the
users
property
- Methodfeed
mapping
feed(void
|ParamsArg
params
,void
|Callback
cb
)- Description
Get the currently authenticated users feed. http://instagram.com/developer/endpoints/users/#get_users
- Parameter
params
Valida parameters are:
"count"
:string
|int
Number of items to return. Default is 20.
"min_id"
:string
Return media later than this min_id
"max_id"
:string
Return media earlier than this max_id
- Parameter
cb
Callback function when in async mode
- Methodfollowed_by
mapping
followed_by(string
|void
user_id
,void
|Callback
cb
)- Description
Get the list of users this user is followed by.
- Note
Required scope: relationships
- See also
http://instagram.com/developer/endpoints/relationships/#get_users_followed_by
- Parameter
user_id
- Parameter
cb
Callback function when in async mode
- Methodfollows
mapping
follows(void
|string
user_id
,void
|Callback
cb
)- Description
Get the list of users this user follows.
- Note
Required scope: relationships
- See also
http://instagram.com/developer/endpoints/relationships/#get_users_follows
- Parameter
user_id
- Parameter
cb
Callback function when in async mode
- Methodliked
mapping
liked(void
|ParamsArg
params
,void
|Callback
cb
)- Description
See the authenticated user's list of media they've liked. May return a mix of both image and video types. Note: This list is ordered by the order in which the user liked the media. Private media is returned as long as the authenticated user has permission to view that media. Liked media lists are only available for the currently authenticated user.
http://instagram.com/developer/endpoints/users/#get_users_feed_liked
- Parameter
params
Valida parameters are:
"count"
:string
|int
Number of items to return. Default is 20.
"max_like_id"
:string
Return media liked before this id.
- Parameter
cb
Callback function when in async mode
- Methodrecent
mapping
recent(void
|string
uid
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Get the most recent media published by a user. May return a mix of both image and video types. http://instagram.com/developer/endpoints/users/get_users_media_recent
- Parameter
uid
An Instagram user ID
- Parameter
params
Valida parameters are:
"count"
:string
|int
Number of items to return. Default is 20.
"min_id"
:string
Return media later than this min_id
"max_id"
:string
Return media earlier than this max_id
"max_timestamp"
:int
Return media before this UNIX timestamp.
"min_timestamp"
:int
Return media after this UNIX timestamp.
- Parameter
cb
Callback function when in async mode
- Methodrelationship
mapping
relationship(string
user_id
,void
|Callback
cb
)- Description
Get information about a relationship to another user.
- Note
Required scope: relationships
- See also
http://instagram.com/developer/endpoints/relationships/#get_relationship
- Parameter
user_id
- Parameter
cb
Callback function when in async mode
- Methodrelationship_change
mapping
relationship_change(string
user_id
,string
action
,void
|Callback
cb
)- Description
Modify the relationship between the current user and the target user.
- Note
Required scope: relationships
- Parameter
user_id
The user to change the relationship to
- Parameter
action
How to change the relationship. Can be:
- "follow"
- "unfollow"
- "block"
- "unblock"
- "approve"
- "deny"
- Parameter
cb
Callback function if in async mode
- Methodrequested_by
mapping
requested_by(void
|Callback
cb
)- Description
List the users who have requested this user's permission to follow.
- Note
Required scope: relationships
- See also
http://instagram.com/developer/endpoints/relationships/#get_incoming_requests
- Parameter
cb
Callback function when in async mode
- Methodsearch
mapping
search(string
query
,void
|int
count
,void
|Callback
cb
)- Description
Search for a user by name.
http://instagram.com/developer/endpoints/users/#get_users_search
- Parameter
query
A query string.
- Parameter
count
Max number of users to return
- Parameter
cb
Callback function when in async mode
Module Web.Api.Linkedin
- Method`()
protected
this_program
`()(string
client_id
,string
client_secret
,void
|string
redirect_uri
,void
|string
|array
(string
)|multiset
(string
)scope
)- Description
Instantiates the default Github API. See
Web.Api.Api()
for further information about the arguments- Parameter
client_id
Your application key/id
- Parameter
client_secret
Your application secret
- Parameter
redirect_uri
The redirect URI after an authentication
- Parameter
scope
The application scopes to grant access to
Class Web.Api.Linkedin.V1
- Variableany
Any
Web.Api.Linkedin.V1.any- Description
Getter for the
Any
object which is a generic object for making request to the Linkedin API- See also
Any
- Note
Read only
- Methoddefault_params
protected
mapping
default_params()- Description
Default parameters that goes with every call
- Methoddelete
mapping
delete(string
path
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Make a generic
DELETE
request to the Linkedin API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
cb
Callback for async requests
- Methodget
mapping
get(string
path
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Make a generic
GET
request to the Linkedin API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
cb
Callback for async requests
- Methodpost
mapping
post(string
path
,void
|ParamsArg
params
,void
|string
data
,void
|Callback
cb
)- Description
Make a generic
POST
request to the Linkedin API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
data
- Parameter
cb
Callback for async requests
- Methodput
mapping
put(string
path
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Make a generic
PUT
request to the Linkedin API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
cb
Callback for async requests
Class Web.Api.Linkedin.V1.Any
- Description
A generic wrapper around
Method
- Variableany
- Method`()
Module Web.Api.Twitter
- Method`()
protected
this_program
`()(string
client_id
,string
client_secret
,void
|string
redirect_uri
,void
|string
|array
(string
)|multiset
(string
)scope
)- Description
Instantiates the default Twitter API. See https://dev.twitter.com/rest/public for further information.
- Parameter
client_id
Your application key/id
- Parameter
client_secret
Your application secret
- Parameter
redirect_uri
The redirect URI after an authentication
- Parameter
scope
The application scopes to grant access to
- See also
Web.Api.Api
Class Web.Api.Twitter.V1_1
- Variableany
Any
Web.Api.Twitter.V1_1.any- Description
Getter for the
Any
object which is a generic object for making request to the Twitter API- See also
Any
- Note
Read only
- Methoddefault_params
protected
mapping
default_params()- Description
Default parameters that goes with every call
- Methoddelete
mapping
delete(string
path
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Make a generic
DELETE
request to the Twitter API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
cb
Callback for async requests
- Methodget
mapping
get(string
path
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Make a generic
GET
request to the Twitter API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
cb
Callback for async requests
- Methodpost
mapping
post(string
path
,void
|ParamsArg
params
,void
|string
data
,void
|Callback
cb
)- Description
Make a generic
POST
request to the Twitter API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
data
- Parameter
cb
Callback for async requests
- Methodput
mapping
put(string
path
,void
|ParamsArg
params
,void
|Callback
cb
)- Description
Make a generic
PUT
request to the Twitter API.- Parameter
path
What to request. Like
me
,me/pictures
,[some_id]/something
.- Parameter
params
- Parameter
cb
Callback for async requests
Class Web.Api.Twitter.V1_1.Any
- Description
A generic wrapper around
Method
- Variableany
- Method`()
Module Web.Auth
- Description
Various authentication modules and classes.
constant GOOGLE_KEY ="some-key-911bnn5s.apps.googleusercontent.com";constant GOOGLE_SECRET ="5arQDOugDrtIOVklkIet2q2i";Web.Auth.Google.Authorization auth;int main(int argc,array(string) argv){ auth =Web.Auth.Google.Authorization(GOOGLE_KEY, GOOGLE_SECRET,"http://localhost");// The generated access token will be saved on disk.string progname = replace(sprintf("%O", object_program(auth)),".","_");string cookie = progname +".cookie";// If the cookie exists, set the authentication from the saved valuesif(Stdio.exist(cookie)){ auth->set_from_cookie(Stdio.read_file(cookie));}// Not authenticated, can mean no previous authentication is done, or that// the authentication has expired. Some services have persistent access tokens// some don'tif(!auth->is_authenticated()){// Try to renew the access token of it's renewableif(auth->is_renewable()){ write("Trying to refresh token...\n");string data = auth->refresh_access_token();Stdio.write_file(cookie, data);}else{// No argument, start the authentication processif(argc == 1){// Get the uri to the authentication pagestring uri = auth->get_auth_uri(); write("Opening \"%s\" in browser.\nCopy the contents of the address ""bar into here: ",Standards.URI(uri)); sleep(1);string open_app;// Macif(Process.run(({"which","open"}))->exitcode == 0){ open_app ="open";}// Linuxelseif(Process.run(({"which","xdg-open"}))->exitcode == 0){ open_app ="xdg-open";}// ???else{ open_app ="open";}Process.create_process(({ open_app, uri }));// Wait for the user to paste the string from the address barstring resp =Stdio.Readline()->read();mapping p =Web.Auth.query_to_mapping(Standards.URI(resp)->query);string code;// This is if the service is OAuth1if(p->oauth_token){ auth->set_authentication(p->oauth_token); code = p->oauth_verifier;}// OAuth2else{ code = p->code;}// Get the access token and save the response to disk for later use.string data = auth->request_access_token(code);Stdio.write_file(cookie, data);}// If the user gives the access code from command line.else{string data = auth->request_access_token(argv[1]);Stdio.write_file(cookie, data);}}}if(!auth->is_authenticated()){ werror("Authentication failed");}else{ write("Congratulations you are now authenticated\n");}}
- Methodquery_to_mapping
mapping
query_to_mapping(string
query
)- Description
Turns a query string into a mapping
- Parameter
query
Class Web.Auth.Facebook
- Description
This class is used to OAuth2 authenticate agains Facebook
Enum Web.Auth.Facebook.Scopes
- ConstantSCOPE_EMAIL
ConstantSCOPE_PUBLISH_ACTIONS
ConstantSCOPE_ABOUT_ME
ConstantSCOPE_ACTIONS_BOOKS
ConstantSCOPE_ACTIONS_MUSIC
ConstantSCOPE_ACTIONS_NEWS
ConstantSCOPE_ACTIONS_VIDEO
ConstantSCOPE_ACTIVITIES
ConstantSCOPE_BIRTHDAY
ConstantSCOPE_EDUCATION_HISTORY
ConstantSCOPE_EVENTS
ConstantSCOPE_FRIENDS
ConstantSCOPE_GAMES_ACTIVITY
ConstantSCOPE_GROUPS
ConstantSCOPE_HOMETOWN
ConstantSCOPE_INTERESTS
ConstantSCOPE_LIKES
ConstantSCOPE_LOCATION
ConstantSCOPE_NOTES
ConstantSCOPE_PHOTOS
ConstantSCOPE_QUESTIONS
ConstantSCOPE_RELATIONSHIP_DETAILS
ConstantSCOPE_RELATIONSHIPS
ConstantSCOPE_RELIGION_POLITICS
ConstantSCOPE_STATUS
ConstantSCOPE_SUBSCRIPTIONS
ConstantSCOPE_VIDEOS
ConstantSCOPE_WEBSITE
ConstantSCOPE_WORK_HISTORY constant
Web.Auth.Facebook.SCOPE_EMAIL
constant
Web.Auth.Facebook.SCOPE_PUBLISH_ACTIONS
constant
Web.Auth.Facebook.SCOPE_ABOUT_ME
constant
Web.Auth.Facebook.SCOPE_ACTIONS_BOOKS
constant
Web.Auth.Facebook.SCOPE_ACTIONS_MUSIC
constant
Web.Auth.Facebook.SCOPE_ACTIONS_NEWS
constant
Web.Auth.Facebook.SCOPE_ACTIONS_VIDEO
constant
Web.Auth.Facebook.SCOPE_ACTIVITIES
constant
Web.Auth.Facebook.SCOPE_BIRTHDAY
constant
Web.Auth.Facebook.SCOPE_EDUCATION_HISTORY
constant
Web.Auth.Facebook.SCOPE_EVENTS
constant
Web.Auth.Facebook.SCOPE_FRIENDS
constant
Web.Auth.Facebook.SCOPE_GAMES_ACTIVITY
constant
Web.Auth.Facebook.SCOPE_GROUPS
constant
Web.Auth.Facebook.SCOPE_HOMETOWN
constant
Web.Auth.Facebook.SCOPE_INTERESTS
constant
Web.Auth.Facebook.SCOPE_LIKES
constant
Web.Auth.Facebook.SCOPE_LOCATION
constant
Web.Auth.Facebook.SCOPE_NOTES
constant
Web.Auth.Facebook.SCOPE_PHOTOS
constant
Web.Auth.Facebook.SCOPE_QUESTIONS
constant
Web.Auth.Facebook.SCOPE_RELATIONSHIP_DETAILS
constant
Web.Auth.Facebook.SCOPE_RELATIONSHIPS
constant
Web.Auth.Facebook.SCOPE_RELIGION_POLITICS
constant
Web.Auth.Facebook.SCOPE_STATUS
constant
Web.Auth.Facebook.SCOPE_SUBSCRIPTIONS
constant
Web.Auth.Facebook.SCOPE_VIDEOS
constant
Web.Auth.Facebook.SCOPE_WEBSITE
constant
Web.Auth.Facebook.SCOPE_WORK_HISTORY
- ConstantSCOPE_ADS_MANAGEMENT
ConstantSCOPE_ADS_READ
ConstantSCOPE_CREATE_EVENT
ConstantSCOPE_CREATE_NOTE
ConstantSCOPE_EXPORT_STREAM
ConstantSCOPE_FRIENDS_ONLINE_PRESENCE
ConstantSCOPE_MANAGE_FRIENDLISTS
ConstantSCOPE_MANAGE_NOTIFICATIONS
ConstantSCOPE_MANAGE_PAGES
ConstantSCOPE_PHOTO_UPLOAD
ConstantSCOPE_PUBLISH_STREAM
ConstantSCOPE_READ_FRIENDLISTS
ConstantSCOPE_READ_INSIGHTS
ConstantSCOPE_READ_MAILBOX
ConstantSCOPE_READ_PAGE_MAILBOXES
ConstantSCOPE_READ_REQUESTS
ConstantSCOPE_READ_STREAM
ConstantSCOPE_RSVP_EVENT
ConstantSCOPE_SHARE_ITEM
ConstantSCOPE_SMS
ConstantSCOPE_STATUS_UPDATE
ConstantSCOPE_USER_ONLINE_PRESENCE
ConstantSCOPE_VIDEO_UPLOAD
ConstantSCOPE_XMPP_LOGIN constant
Web.Auth.Facebook.SCOPE_ADS_MANAGEMENT
constant
Web.Auth.Facebook.SCOPE_ADS_READ
constant
Web.Auth.Facebook.SCOPE_CREATE_EVENT
constant
Web.Auth.Facebook.SCOPE_CREATE_NOTE
constant
Web.Auth.Facebook.SCOPE_EXPORT_STREAM
constant
Web.Auth.Facebook.SCOPE_FRIENDS_ONLINE_PRESENCE
constant
Web.Auth.Facebook.SCOPE_MANAGE_FRIENDLISTS
constant
Web.Auth.Facebook.SCOPE_MANAGE_NOTIFICATIONS
constant
Web.Auth.Facebook.SCOPE_MANAGE_PAGES
constant
Web.Auth.Facebook.SCOPE_PHOTO_UPLOAD
constant
Web.Auth.Facebook.SCOPE_PUBLISH_STREAM
constant
Web.Auth.Facebook.SCOPE_READ_FRIENDLISTS
constant
Web.Auth.Facebook.SCOPE_READ_INSIGHTS
constant
Web.Auth.Facebook.SCOPE_READ_MAILBOX
constant
Web.Auth.Facebook.SCOPE_READ_PAGE_MAILBOXES
constant
Web.Auth.Facebook.SCOPE_READ_REQUESTS
constant
Web.Auth.Facebook.SCOPE_READ_STREAM
constant
Web.Auth.Facebook.SCOPE_RSVP_EVENT
constant
Web.Auth.Facebook.SCOPE_SHARE_ITEM
constant
Web.Auth.Facebook.SCOPE_SMS
constant
Web.Auth.Facebook.SCOPE_STATUS_UPDATE
constant
Web.Auth.Facebook.SCOPE_USER_ONLINE_PRESENCE
constant
Web.Auth.Facebook.SCOPE_VIDEO_UPLOAD
constant
Web.Auth.Facebook.SCOPE_XMPP_LOGIN
- ConstantSCOPE_FRIENDS_ABOUT_ME
ConstantSCOPE_FRIENDS_ACTIONS_BOOKS
ConstantSCOPE_FRIENDS_ACTIONS_MUSIC
ConstantSCOPE_FRIENDS_ACTIONS_NEWS
ConstantSCOPE_FRIENDS_ACTIONS_VIDEO
ConstantSCOPE_FRIENDS_ACTIVITIES
ConstantSCOPE_FRIENDS_BIRTHDAY
ConstantSCOPE_FRIENDS_EDUCATION_HISTORY
ConstantSCOPE_FRIENDS_EVENTS
ConstantSCOPE_FRIENDS_GAMES_ACTIVITY
ConstantSCOPE_FRIENDS_GROUPS
ConstantSCOPE_FRIENDS_HOMETOWN
ConstantSCOPE_FRIENDS_INTERESTS
ConstantSCOPE_FRIENDS_LIKES
ConstantSCOPE_FRIENDS_LOCATION
ConstantSCOPE_FRIENDS_NOTES
ConstantSCOPE_FRIENDS_PHOTOS
ConstantSCOPE_FRIENDS_QUESTIONS
ConstantSCOPE_FRIENDS_RELATIONSHIP_DETAILS
ConstantSCOPE_FRIENDS_RELATIONSHIPS
ConstantSCOPE_FRIENDS_RELIGION_POLITICS
ConstantSCOPE_FRIENDS_STATUS
ConstantSCOPE_FRIENDS_SUBSCRIPTIONS
ConstantSCOPE_FRIENDS_VIDEOS
ConstantSCOPE_FRIENDS_WEBSITE
ConstantSCOPE_FRIENDS_WORK_HISTORY constant
Web.Auth.Facebook.SCOPE_FRIENDS_ABOUT_ME
constant
Web.Auth.Facebook.SCOPE_FRIENDS_ACTIONS_BOOKS
constant
Web.Auth.Facebook.SCOPE_FRIENDS_ACTIONS_MUSIC
constant
Web.Auth.Facebook.SCOPE_FRIENDS_ACTIONS_NEWS
constant
Web.Auth.Facebook.SCOPE_FRIENDS_ACTIONS_VIDEO
constant
Web.Auth.Facebook.SCOPE_FRIENDS_ACTIVITIES
constant
Web.Auth.Facebook.SCOPE_FRIENDS_BIRTHDAY
constant
Web.Auth.Facebook.SCOPE_FRIENDS_EDUCATION_HISTORY
constant
Web.Auth.Facebook.SCOPE_FRIENDS_EVENTS
constant
Web.Auth.Facebook.SCOPE_FRIENDS_GAMES_ACTIVITY
constant
Web.Auth.Facebook.SCOPE_FRIENDS_GROUPS
constant
Web.Auth.Facebook.SCOPE_FRIENDS_HOMETOWN
constant
Web.Auth.Facebook.SCOPE_FRIENDS_INTERESTS
constant
Web.Auth.Facebook.SCOPE_FRIENDS_LIKES
constant
Web.Auth.Facebook.SCOPE_FRIENDS_LOCATION
constant
Web.Auth.Facebook.SCOPE_FRIENDS_NOTES
constant
Web.Auth.Facebook.SCOPE_FRIENDS_PHOTOS
constant
Web.Auth.Facebook.SCOPE_FRIENDS_QUESTIONS
constant
Web.Auth.Facebook.SCOPE_FRIENDS_RELATIONSHIP_DETAILS
constant
Web.Auth.Facebook.SCOPE_FRIENDS_RELATIONSHIPS
constant
Web.Auth.Facebook.SCOPE_FRIENDS_RELIGION_POLITICS
constant
Web.Auth.Facebook.SCOPE_FRIENDS_STATUS
constant
Web.Auth.Facebook.SCOPE_FRIENDS_SUBSCRIPTIONS
constant
Web.Auth.Facebook.SCOPE_FRIENDS_VIDEOS
constant
Web.Auth.Facebook.SCOPE_FRIENDS_WEBSITE
constant
Web.Auth.Facebook.SCOPE_FRIENDS_WORK_HISTORY
- ConstantSCOPE_EMAIL
Class Web.Auth.Github
- Description
This class is used to OAuth2 authenticate against Github
Enum Web.Auth.Github.Scopes
- ConstantSCOPE_REPO
ConstantSCOPE_GIST
ConstantSCOPE_USER
ConstantSCOPE_USER_EMAIL
ConstantSCOPE_USER_FOLLOW
ConstantSCOPE_PUBLIC_REPO
ConstantSCOPE_REPO_DEPLOYMENT
ConstantSCOPE_REPO_STATUS
ConstantSCOPE_DELETE_REPO
ConstantSCOPE_NOTIFICATIONS
ConstantSCOPE_READ_REPO_HOOK
ConstantSCOPE_WRITE_REPO_HOOK
ConstantSCOPE_ADMIN_REPO_HOOK
ConstantSCOPE_READ_ORG
ConstantSCOPE_WRITE_ORG
ConstantSCOPE_ADMIN_ORG
ConstantSCOPE_READ_PUBLIC_KEY
ConstantSCOPE_WRITE_PUBLIC_KEY
ConstantSCOPE_ADMIN_PUBLIC_KEY constant
Web.Auth.Github.SCOPE_REPO
constant
Web.Auth.Github.SCOPE_GIST
constant
Web.Auth.Github.SCOPE_USER
constant
Web.Auth.Github.SCOPE_USER_EMAIL
constant
Web.Auth.Github.SCOPE_USER_FOLLOW
constant
Web.Auth.Github.SCOPE_PUBLIC_REPO
constant
Web.Auth.Github.SCOPE_REPO_DEPLOYMENT
constant
Web.Auth.Github.SCOPE_REPO_STATUS
constant
Web.Auth.Github.SCOPE_DELETE_REPO
constant
Web.Auth.Github.SCOPE_NOTIFICATIONS
constant
Web.Auth.Github.SCOPE_READ_REPO_HOOK
constant
Web.Auth.Github.SCOPE_WRITE_REPO_HOOK
constant
Web.Auth.Github.SCOPE_ADMIN_REPO_HOOK
constant
Web.Auth.Github.SCOPE_READ_ORG
constant
Web.Auth.Github.SCOPE_WRITE_ORG
constant
Web.Auth.Github.SCOPE_ADMIN_ORG
constant
Web.Auth.Github.SCOPE_READ_PUBLIC_KEY
constant
Web.Auth.Github.SCOPE_WRITE_PUBLIC_KEY
constant
Web.Auth.Github.SCOPE_ADMIN_PUBLIC_KEY
- ConstantSCOPE_REPO
Class Web.Auth.Instagram
- Description
This class is used to OAuth2 authenticate agains Instagram
- ConstantOAUTH_AUTH_URI
constant
string
Web.Auth.Instagram.OAUTH_AUTH_URI
- Description
Instagram authorization URI
- ConstantOAUTH_TOKEN_URI
constant
string
Web.Auth.Instagram.OAUTH_TOKEN_URI
- Description
Instagram request access token URI
Class Web.Auth.Linkedin
- Description
This class is used to OAuth2 authenticate against LinkedIn
- ConstantDEFAULT_SCOPE
Web.Auth.Linkedin.protected
constantDEFAULT_SCOPE
- Description
Default scope to use if none is set explicitly
- ConstantSTATE
protected
constantint
Web.Auth.Linkedin.STATE
- Description
Adds the state parameter to the request which will have the value of a random string
Enum Web.Auth.Linkedin.Scopes
- ConstantSCOPE_R_BASIC
ConstantSCOPE_R_NETWORK
ConstantSCOPE_RW_GROUPS
ConstantSCOPE_R_FULLPROFILE
ConstantSCOPE_R_CONTACTINFO
ConstantSCOPE_W_MESSAGES
ConstantSCOPE_R_EMAILADDRESS
ConstantSCOPE_RW_NUS constant
Web.Auth.Linkedin.SCOPE_R_BASIC
constant
Web.Auth.Linkedin.SCOPE_R_NETWORK
constant
Web.Auth.Linkedin.SCOPE_RW_GROUPS
constant
Web.Auth.Linkedin.SCOPE_R_FULLPROFILE
constant
Web.Auth.Linkedin.SCOPE_R_CONTACTINFO
constant
Web.Auth.Linkedin.SCOPE_W_MESSAGES
constant
Web.Auth.Linkedin.SCOPE_R_EMAILADDRESS
constant
Web.Auth.Linkedin.SCOPE_RW_NUS
- ConstantSCOPE_R_BASIC
Class Web.Auth.Param
- Description
Representation of a parameter.
Many Social web services use a RESTful communication and have similiar API's. This class is suitable for many RESTful web services and if this class doesn't suite a particular service, just inherit this class and rewrite the behaviour where needed.
- See also
Params
- Method_sprintf
stringsprintf(stringformat, ... Web.Auth.Paramarg ... )
- Description
String format method
- Parameter
t
- Method`<
bool
res =Web.Auth.Param()
<other
- Description
Checks if this object is less than
other
- Parameter
other
- Method`==
bool
res =Web.Auth.Param()
==other
- Description
Comparer method. Checks if
other
equals this object- Parameter
other
- Method`>
bool
res =Web.Auth.Param()
>other
- Description
Checks if this object is greater than
other
- Parameter
other
- Methodcreate
Web.Auth.ParamWeb.Auth.Param(
string
name
,mixed
value
)- Description
Creates a new instance of
Param
- Parameter
name
- Parameter
value
- Methodlow_set_value
private
void
low_set_value(string
v
)- Description
Makes sure
v
to set asvalue
is in UTF-8 encoding- Parameter
v
- Methodname_value
string
name_value()- Description
Returns the name and value as querystring key/value pair
- Methodname_value_encoded
string
name_value_encoded()- Description
Same as
name_value()
except this URL encodes the value.
Class Web.Auth.Params
- Description
Parameter collection class
- See also
Param
- Method_sprintf
stringsprintf(stringformat, ... Web.Auth.Paramsarg ... )
- Description
String format method
- Parameter
t
- Method`+
this_program
res =Web.Auth.Params()
+p
- Description
Add
p
to the array ofParam
eters- Parameter
p
- Returns
A new
Params
object
- Method`-
this_program
res =Web.Auth.Params()
-p
- Description
Remove
p
from theParam
eters array of the current object.- Parameter
p
- Method`[]
Param
|zero
res =Web.Auth.Params()
[key
]- Description
Index lookup
- Parameter
key
The name of a
Param
erter to find.
- Methodadd_mapping
this_program
add_mapping(mapping
value
)- Description
Add a mapping of key/value pairs to the current instance
- Parameter
value
- Returns
The object being called
- Methodcast
(int)Web.Auth.Params()
(float)Web.Auth.Params()
(string)Web.Auth.Params()
(array)Web.Auth.Params()
(mapping)Web.Auth.Params()
(multiset)Web.Auth.Params()- Description
Casting method
- Parameter
how
- Methodcreate
Web.Auth.ParamsWeb.Auth.Params(
Param
...args
)- Description
Creates a new instance of
Params
- Parameter
args
Class Web.Auth.Tumblr
- Description
Tumblr authentication class
- ConstantACCESS_TOKEN_URL
constant
string
Web.Auth.Tumblr.ACCESS_TOKEN_URL
- Description
The endpoint to send request for an access token
- ConstantREQUEST_TOKEN_URL
constant
string
Web.Auth.Tumblr.REQUEST_TOKEN_URL
- Description
The endpoint to send request for a request token
Class Web.Auth.Twitter
- Description
Twitter authentication class
- ConstantACCESS_TOKEN_URL
constant
string
Web.Auth.Twitter.ACCESS_TOKEN_URL
- Description
The endpoint to send request for an access token
- ConstantREQUEST_TOKEN_URL
constant
string
Web.Auth.Twitter.REQUEST_TOKEN_URL
- Description
The endpoint to send request for a request token
Module Web.Auth.Google
- Description
Google authentication classes.
Class Web.Auth.Google.Analytics
- Description
Google Analytics authorization class
- ConstantSCOPE_RO
ConstantSCOPE_RW
ConstantSCOPE_EDIT
ConstantSCOPE_MANAGE_USERS
ConstantSCOPE_MANAGE_USERS_RO constant
string
Web.Auth.Google.Analytics.SCOPE_RO
constant
string
Web.Auth.Google.Analytics.SCOPE_RW
constant
string
Web.Auth.Google.Analytics.SCOPE_EDIT
constant
string
Web.Auth.Google.Analytics.SCOPE_MANAGE_USERS
constant
string
Web.Auth.Google.Analytics.SCOPE_MANAGE_USERS_RO
- Description
Authentication scopes
Class Web.Auth.Google.Authorization
- Description
Default Google authorization class
Module Web.Auth.OAuth
- Description
OAuth module
Example
importWeb.Auth.OAuth;string endpoint ="http://twitter.com/users/show.xml"; Consumer consumer = Consumer(my_consumer_key, my_consumer_secret); Token token = Token(my_access_token_key, my_access_token_secret); Params params = Params(Param("user_id", 12345)); Request request = request(consumer, token, params); request->sign_request(Signature.HMAC_SHA1, consumer, token);Protocols.HTTP.Query query = request->submit();if(query->status != 200) error("Bad response status: %d\n", query->status); werror("Data is: %s\n", query->data());
- ConstantCALLBACK_KEY
constant
string
Web.Auth.OAuth.CALLBACK_KEY
- Description
Query string variable name for a callback URL.
- ConstantCONSUMER_KEY_KEY
constant
string
Web.Auth.OAuth.CONSUMER_KEY_KEY
- Description
Query string variable name for the consumer key.
- ConstantNONCE_KEY
constant
string
Web.Auth.OAuth.NONCE_KEY
- Description
Query string variable name for the nonce.
- ConstantSIGNATURE_KEY
constant
string
Web.Auth.OAuth.SIGNATURE_KEY
- Description
Query string variable name for the signature.
- ConstantSIGNATURE_METHOD_KEY
constant
string
Web.Auth.OAuth.SIGNATURE_METHOD_KEY
- Description
Query string variable name for the signature method.
- ConstantTIMESTAMP_KEY
constant
string
Web.Auth.OAuth.TIMESTAMP_KEY
- Description
Query string variable name for the timestamp.
- ConstantTOKEN_KEY
constant
string
Web.Auth.OAuth.TOKEN_KEY
- Description
Query string variable name for the token key.
- ConstantTOKEN_SECRET_KEY
constant
string
Web.Auth.OAuth.TOKEN_SECRET_KEY
- Description
Query string variable name for the token secret.
- ConstantVERSION_KEY
constant
string
Web.Auth.OAuth.VERSION_KEY
- Description
Query string variable name for the version.
- Methodget_default_params
Params
get_default_params(Consumer
consumer
,Token
token
)- Description
Returns the default params for authentication/signing.
- Methodnormalize_uri
string
normalize_uri(string
|Standards.URI
uri
)- Description
Normalizes
uri
- Parameter
uri
A string or
Standards.URI
.
- Methodquery_to_params
Params
query_to_params(string
|Standards.URI
|mapping
q
)- Description
Converts a query string, or a mapping, into a
Params
object.
- Methodrequest
Request
request(string
|Standards.URI
uri
,Consumer
consumer
,Token
token
,void
|Params
params
,void
|string
http_method
)- Description
Helper method to create a
Request
object.- Throws
An error if
consumer
is null.- Parameter
http_method
Defaults to GET.
Class Web.Auth.OAuth.Authentication
- Description
The purpose of this class is to streamline OAuth1 with OAuth2. This class will not do much on it's own, since its purpose is to be inherited by some other class implementing a specific authorization service.
- ConstantACCESS_TOKEN_URL
constant
string
Web.Auth.OAuth.Authentication.ACCESS_TOKEN_URL
- Description
The endpoint to send request for an access token.
- ConstantREQUEST_TOKEN_URL
constant
string
Web.Auth.OAuth.Authentication.REQUEST_TOKEN_URL
- Description
The endpoint to send request for a request token.
- ConstantUSER_AUTH_URL
constant
string
Web.Auth.OAuth.Authentication.USER_AUTH_URL
- Description
The enpoint to redirect to when authorize an application.
- Methodcall
string
call(string
|Standards.URI
url
,void
|mapping
|.Params
args
,void
|string
method
)- Description
Does the low level HTTP call to a service.
- Throws
An error if HTTP status != 200
- Parameter
url
The full address to the service e.g: http://twitter.com/direct_messages.xml
- Parameter
args
Arguments to send with the request
- Parameter
mehod
The HTTP method to use
- Methodcreate
Web.Auth.OAuth.AuthenticationWeb.Auth.OAuth.Authentication(
string
client_id
,string
client_secret
,void
|string
redir
,void
|string
|array
(string
)|multiset
(string
)scope
)- Description
Creates an OAuth object.
- Parameter
client_id
The application ID.
- Parameter
client_secret
The application secret.
- Parameter
redirect_uri
Where the authorization page should redirect back to. This must be a fully qualified domain name. This can be set/overridden in
get_request_token()
.- Parameter
scope
Extended permissions to use for this authentication. This can be set/overridden in
get_auth_uri()
.
- Methodget_access_token
.Token
get_access_token(void
|string
oauth_verifier
)- Description
Fetches an access token.
- Methodget_request_token
.Token
get_request_token(void
|string
|Standards.URI
callback_uri
,void
|bool
force_login
)- Description
Fetches a request token.
- Parameter
callback_uri
Overrides the callback uri in the application settings.
- Parameter
force_login
If 1 forces the user to provide its credentials at the Twitter login page.
- Methodlow_get_access_token
protected
string
low_get_access_token(void
|string
oauth_verifier
)- Description
Fetches an access token.
- Methodnormalize_method
protected
string
normalize_method(string
method
)- Description
Normalizes and verifies the HTTP method to be used in a HTTP call.
- Methodparse_error_xml
mapping
parse_error_xml(string
xml
)- Description
Parses an error xml tree.
- Returns
A mapping:
"request"
:string
"error"
:string
- Methodrequest_access_token
string
request_access_token(string
code
)- Description
Same as
get_access_token
except this returns a string to comply with the OAuth2 authentication process.
- Methodset_authentication
void
set_authentication(string
key
,void
|string
secret
)- Description
Set authentication.
Class Web.Auth.OAuth.Client
- Description
OAuth client class.
- Note
This class is of no use by it self. It's intended to be inherited by classes that uses OAuth authorization.
- Variableaccess_token_url
protected
string
Web.Auth.OAuth.Client.access_token_url- Description
The endpoint to send request for an access token.
- Variablerequest_token_url
protected
string
Web.Auth.OAuth.Client.request_token_url- Description
The endpoint to send request for a request token.
- Variableuser_auth_url
protected
string
Web.Auth.OAuth.Client.user_auth_url- Description
The enpoint to redirect to when authorize an application.
- Methodcreate
Web.Auth.OAuth.ClientWeb.Auth.OAuth.Client(
Consumer
consumer
,Token
token
)- Description
Create a new
Client
.- Note
This class must be inherited
- Methodget_access_token_url
string
get_access_token_url()- Description
Returns the url for requesting an access token.
- Methodget_request_token_url
string
get_request_token_url()- Description
Returns the url for requesting a request token.
- Methodget_user_auth_url
string
get_user_auth_url()- Description
Returns the url for authorizing an application.
Class Web.Auth.OAuth.Consumer
- Description
An OAuth user
- Variablecallback
string
|Standards.URI
Web.Auth.OAuth.Consumer.callback- Description
Callback url that the remote verifying page will return to.
Class Web.Auth.OAuth.Param
- Description
Represents a query string parameter, i.e. key=value.
- Method`==
bool
res =Web.Auth.OAuth.Param()
==other
- Description
Comparer method. Checks if
other
equals this object.
- Method`>
bool
res =Web.Auth.OAuth.Param()
>other
- Description
Checks if this object is greater than
other
.
- Methodcreate
Web.Auth.OAuth.ParamWeb.Auth.OAuth.Param(
string
name
,mixed
value
)- Description
Creates a new
Param
.
- Methodget_signature
string
get_signature()- Description
Returns the name and value for usage in a signature string.
Class Web.Auth.OAuth.Params
- Description
Collection of
Param
- Variableparams
private
array
(Param
) Web.Auth.OAuth.Params.params- Description
Storage for
Param
s of this object.
- Method_sizeof
int(0..)
sizeof(Web.Auth.OAuth.Paramsarg)- Description
Returns the size of the
params
array.
- Method`+
this_program
res =Web.Auth.OAuth.Params()
+p
- Description
Append
p
to the internal array.- Returns
The object being called.
- Method`-
this_program
res =Web.Auth.OAuth.Params()
-p
- Description
Removes
p
from the internal array.- Returns
The object being called.
- Method`[]
mixed
res =Web.Auth.OAuth.Params()
[key
]- Description
Index lookup
- Returns
If no
Param
is found returns 0. If multipleParam
s with namekey
is found a newParams
object with the found params will be retured. If only oneParam
is found that param will be returned.
- Methodadd_mapping
this_program
add_mapping(mapping
args
)- Description
Append mapping
args
asParam
objects.- Returns
The object being called.
- Methodcast
(
mapping
)Web.Auth.OAuth.Params()- Description
Supports casting to mapping, which will map parameter names to their values.
- Methodcreate
Web.Auth.OAuth.ParamsWeb.Auth.OAuth.Params(
Param
...params
)- Description
Create a new
Params
- Parameter
params
Arbitrary number of
Param
objects.
- Methodget_auth_header
string
get_auth_header()- Description
Returns the params for usage in an authentication header.
- Methodget_encoded_variables
mapping
get_encoded_variables()- Description
Returns the parameters as a mapping with encoded values.
- See also
get_variables()
- Methodget_signature
string
get_signature()- Description
Returns the parameters for usage in a signature base string.
Class Web.Auth.OAuth.Request
- Description
Class for building a signed request and querying the remote service.
- Variablebase_string
protected
string
Web.Auth.OAuth.Request.base_string- Description
The signature basestring.
- Variablemethod
protected
string
Web.Auth.OAuth.Request.method- Description
String representation of the HTTP method.
- Methodadd_param
this_program
add_param(Param
|string
name
,void
|string
value
)- Description
Add a param.
- Returns
The object being called.
- Methodcast
(
string
)Web.Auth.OAuth.Request()- Description
It is possible to case the Request object to a string, which will be the request URL.
- Methodcreate
Web.Auth.OAuth.RequestWeb.Auth.OAuth.Request(
string
|Standards.URI
uri
,string
http_method
,void
|Params
params
)- Description
Creates a new
Request.
- See also
request()
- Parameter
uri
The uri to request.
- Parameter
http_method
The HTTP method to use. Either
"GET"
or"POST"
.
- Methodsign_request
void
sign_request(int
signature_type
,Consumer
consumer
,Token
token
)- Description
Signs the request.
- Parameter
signature_type
One of the types in
Signature
.
Class Web.Auth.OAuth.Token
- Description
Token class.
- Variablekey
Variablesecret string
|zero
Web.Auth.OAuth.Token.keystring
|zero
Web.Auth.OAuth.Token.secret
- Methodcast
(
string
)Web.Auth.OAuth.Token()- Description
Only supports casting to string wich will return a query string of the object.
Module Web.Auth.OAuth.Signature
- Description
Module for creating OAuth signatures
- ConstantHMAC_SHA1
constant
int
Web.Auth.OAuth.Signature.HMAC_SHA1
- Description
Signature type for hmac sha1 signing.
- ConstantNONE
protected
constantint
Web.Auth.OAuth.Signature.NONE
- Description
Signature type for the Base class.
- ConstantPLAINTEXT
constant
int
Web.Auth.OAuth.Signature.PLAINTEXT
- Description
Signature type for plaintext signing.
- ConstantRSA_SHA1
constant
int
Web.Auth.OAuth.Signature.RSA_SHA1
- Description
Signature type for rsa sha1 signing.
- ConstantSIGTYPE
constant
Web.Auth.OAuth.Signature.SIGTYPE
- Description
Signature types to signature key mapping.
- Methodget_object
Base
get_object(int
type
)- Description
Returns a signature class for signing with
type
.- Throws
An error if
type
is unknown- Parameter
type
Either
PLAINTEXT
,HMAC_SHA1
orRSA_SHA1
.
Class Web.Auth.OAuth.Signature.Base
- Description
Base signature class.
- Variablemethod
protected
string
Web.Auth.OAuth.Signature.Base.method- Description
String representation of signature type.
- Methodbuild_signature
string
build_signature(Request
request
,Consumer
consumer
,Token
token
)- Description
Builds the signature string.
Class Web.Auth.OAuth.Signature.HmacSha1
- Description
HMAC_SHA1 signature.
Class Web.Auth.OAuth.Signature.Plaintext
- Description
Plaintext signature.
Module Web.Auth.OAuth2
- Description
OAuth2 client
A base OAuth2 class can be instantiated either via
`()
(Web.Auth.OAuth2(params...)) or viaWeb.Auth.OAuth2.Base()
.
- Method`()
protected
Base
`()(string
client_id
,string
client_secret
,void
|string
redirect_uri
,void
|string
|array
(string
)|multiset
(string
)scope
)- Description
Instantiate a generic OAuth2
Base
class.- Parameter
client_id
The application ID.
- Parameter
client_secret
The application secret.
- Parameter
redirect_uri
Where the authorization page should redirect back to. This must be a fully qualified domain name. This can be set/overridden in
Base()->get_auth_uri()
and/orBase()->set_redirect_uri()
.- Parameter
scope
Extended permissions to use for this authentication. This can be set/overridden in
Base()->get_auth_uri()
.
Class Web.Auth.OAuth2.Base
- Description
Generic OAuth2 client class.
- ConstantSTATE
protected
constantint
Web.Auth.OAuth2.Base.STATE
- Description
Some OAuth2 verifiers need the STATE parameter. If this is not 0 a random string will be generated and the state parameter will be added to the request.
- ConstantUSER_AGENT
protected
constantstring
Web.Auth.OAuth2.Base.USER_AGENT
- Description
User agent string.
- ConstantVERSION
protected
constantstring
Web.Auth.OAuth2.Base.VERSION
- Description
Version of this implementation.
- Variable_access_type
protected
string
Web.Auth.OAuth2.Base._access_type- Description
Access type of the request.
- Variable_client_secret
protected
string
Web.Auth.OAuth2.Base._client_secret- Description
The application secret.
- Variable_grant_type
protected
string
Web.Auth.OAuth2.Base._grant_type- Description
GRANT_TYPE_AUTHORIZATION_CODE
for apps running on a web serverGRANT_TYPE_IMPLICIT
for browser-based or mobile appsGRANT_TYPE_PASSWORD
for logging in with a username and passwordGRANT_TYPE_CLIENT_CREDENTIALS
for application access
- Variable_redirect_uri
protected
string
Web.Auth.OAuth2.Base._redirect_uri- Description
Where the authorization page should redirect to.
- Variable_response_type
protected
string
Web.Auth.OAuth2.Base._response_type- Description
RESPONSE_TYPE_CODE
for apps running on a webserverRESPONSE_TYPE_TOKEN
for apps browser-based or mobile apps
- Variable_scope
protected
string
|array
(string
)|multiset
(string
) Web.Auth.OAuth2.Base._scope- Description
The scope of the authorization. Limits the access.
- Variableaccess_token
string
Web.Auth.OAuth2.Base.access_token- Description
Getting
Getter for
access_token
.Setting
Getter for
access_token
.
- Variablecreated
Calendar.Second
Web.Auth.OAuth2.Base.created- Description
Getter for when the authentication was
created
.- Note
Read only
- Variableexpires
Calendar.Second
Web.Auth.OAuth2.Base.expires- Description
Getter for when the authentication
expires
.- Note
Read only
- Variablehttp_request_timeout
int(1..)
Web.Auth.OAuth2.Base.http_request_timeout- Description
Request timeout in seconds. Only affects async queries.
- Variablerefresh_token
string
Web.Auth.OAuth2.Base.refresh_token- Description
Getter for
refresh_token
.- Note
Read only
- Variablerequest_headers
protected
mapping
Web.Auth.OAuth2.Base.request_headers- Description
Default request headers.
- Variabletoken_type
string
Web.Auth.OAuth2.Base.token_type- Description
Getter for
token_type
.- Note
Read only
- Variableuser
mapping
Web.Auth.OAuth2.Base.user- Description
Getter for the
user
mapping which may or may not be set.- Note
Read only
- Variablevalid_scopes
protected
multiset
(string
) Web.Auth.OAuth2.Base.valid_scopes- Description
A mapping of valid scopes for the API.
- Methodcast
(int)Web.Auth.OAuth2.Base()
(float)Web.Auth.OAuth2.Base()
(string)Web.Auth.OAuth2.Base()
(array)Web.Auth.OAuth2.Base()
(mapping)Web.Auth.OAuth2.Base()
(multiset)Web.Auth.OAuth2.Base()- Description
If casted to string the access_token will be returned. If casted to int the expires timestamp will be returned.
- Methodcreate
Web.Auth.OAuth2.BaseWeb.Auth.OAuth2.Base(
string
client_id
,string
client_secret
,void
|string
redirect_uri
,void
|string
|array
(string
)|multiset
(string
)scope
)- Description
Creates an OAuth2 object.
- Parameter
client_id
The application ID.
- Parameter
client_secret
The application secret.
- Parameter
redirect_uri
Where the authorization page should redirect back to. This must be a fully qualified domain name. This can be set/overridden in
get_auth_uri()
and/orset_redirect_uri()
.- Parameter
scope
Extended permissions to use for this authentication. This can be set/overridden in
get_auth_uri()
.
- Methoddecode_access_token_response
protected
bool
decode_access_token_response(string
r
)- Description
Decode the response from an authentication call. If the response was ok the internal mapping
gettable
will be populated with the members/variables inr
.- Parameter
r
The response from
do_query()
- Methoddo_query
protected
string
|zero
do_query(string
|zero
oauth_token_uri
,Web.Auth.Params
p
,void
|function
(bool
,string
:void
)async_cb
)- Description
Send a request to
oauth_token_uri
with paramsp
- Parameter
async_cb
If given an async request will be made and this function will be called when the request is finished. The first argument passed to the callback will be
true
orfalse
depending on if the request was successfull or not. The second argument will be a string. If the request failed it will be an error message. If it succeeded it will be the result as a string encoded withpredef::encode_value()
.
- Methodget_auth_uri
string
get_auth_uri(string
|zero
auth_uri
,void
|mapping
args
)- Description
Returns an authorization URI.
- Parameter
auth_uri
The URI to the remote authorization page
- Parameter
args
Additional argument.
- Methodget_default_params
protected
Web.Auth.Params
get_default_params(void
|string
grant_type
)- Description
Returns a set of default parameters.
- Methodget_token_from_jwt
string
|zero
get_token_from_jwt(string
jwt
,void
|string
token_endpoint
,string
|void
sub
,void
|function
(bool
,string
:void
)async_cb
)- Description
Get an access_token from a JWT. http://jwt.io/
- Parameter
jwt
JSON string.
- Parameter
token_endpoint
URI to the request access_token endpoint.
- Parameter
sub
Email/id of the requesting user.
- Parameter
async_callback
If given the request will be made asynchronously. The signature is callback(bool, string). If successful the second argument will be the result encoded with
predef::encode_value()
, which can be stored and later used to populate an instance viaset_from_cookie()
.- See also
Web.encode_jwt()
- Methodget_valid_scopes
protected
string
get_valid_scopes(string
|array
(string
)|multiset
(string
)s
)- Description
Returns a space separated list of all valid scopes in
s
.s
can be a comma or space separated string or an array or multiset of strings. Each element ins
will be matched against the valid scopes set in the module inheriting this class.
- Methodis_renewable
bool
is_renewable()- Description
Checks if the authorization is renewable. This is true if the
Web.Auth.OAuth2.Base()
object has been populated fromWeb.Auth.OAuth2.Base()->set_from_cookie()
, i.e the user has been authorized but the session has expired.
- Methodrefresh_access_token
string
|zero
refresh_access_token(string
|zero
oauth_token_uri
,void
|function
(bool
,string
:void
)async_cb
)- Description
Refreshes the access token, if a refresh token exists in the object.
- Parameter
oauth_token_uri
Endpoint of the authentication service.
- Parameter
async_cb
If given an async request will be made and this function will be called when the request is finished. The first argument passed to the callback will be
true
orfalse
depending on if the request was successfull or not. The second argument will be a string. If the request failed it will be an error message. If it succeeded it will be the result as a string encoded withpredef::encode_value()
.
- Methodrequest_access_token
string
|zero
request_access_token(string
|zero
oauth_token_uri
,string
code
,void
|function
(bool
,string
:void
)async_cb
)- Description
Requests an access token.
- Throws
An error if the access token request fails.
- Parameter
oauth_token_uri
An URI received from
get_auth_uri()
.- Parameter
code
The code returned from the authorization page via
get_auth_uri()
.- Parameter
async_cb
If given an async request will be made and this function will be called when the request is finished. The first argument passed to the callback will be
true
orfalse
depending on if the request was successfull or not. The second argument will be a string. If the request failed it will be an error message. If it succeeded it will be the result as a string encoded withpredef::encode_value()
.- Returns
If
OK
a Pike encoded mapping (i.e it's a string) is returned which can be used to populate anWeb.Auth.OAuth2
object at a later time.The mapping looks like
"access_token"
:string
"expires"
:int
"created"
:int
"refresh_token"
:string
"token_type"
:string
Depending on the authorization service it might also contain more members.
- Methodset_access_type
void
set_access_type(string
access_type
)- Description
Set access_type explicilty.
- Parameter
access_type
Like: offline
- Methodset_from_cookie
this_program
set_from_cookie(string
encoded_value
)- Description
Populate this object with the result from
request_access_token()
.- Throws
An error if the decoding of
encoded_value
fails.- Parameter
encoded_value
The value from a previous call to
request_access_token()
orrefresh_access_token()
.- Returns
The object being called.
- Methodtry_get_error
private
mixed
try_get_error(string
data
)- Description
Try to get an error message from
data
. Only successful ifdata
is a JSON string and contains the key error.
Enum Web.Auth.OAuth2.Base.GrantType
- Description
Grant types.
Class Web.Auth.OAuth2.Client
- Description
This class is intended to be extended by classes implementing different OAuth2 services.
- ConstantDEFAULT_SCOPE
protected
constantint
Web.Auth.OAuth2.Client.DEFAULT_SCOPE
- Description
Scope to set if none is set.
- ConstantOAUTH_AUTH_URI
constant
int
Web.Auth.OAuth2.Client.OAUTH_AUTH_URI
- Description
Authorization URI.
- ConstantOAUTH_TOKEN_URI
constant
int
Web.Auth.OAuth2.Client.OAUTH_TOKEN_URI
- Description
Request access token URI.
- Methodget_auth_uri
string
get_auth_uri(void
|mapping
args
)- Description
Returns an authorization URI.
- Parameter
args
Additional argument.
- Methodget_token_from_jwt
string
get_token_from_jwt(string
jwt
,void
|string
sub
,void
|function
(bool
,string
:void
)async_cb
)- Description
Make a JWT (JSON Web Token) authentication.
- Methodrefresh_access_token
string
refresh_access_token(void
|function
(bool
,string
:void
)async_cb
)- Description
Refreshes the access token, if a refresh token exists in the object.
- Parameter
async_cb
If given an async request will be made and this function will be called when the request is finished. The first argument passed to the callback will be
true
orfalse
depending on if the request was successfull or not. The second argument will be a string. If the request failed it will be an error message. If it succeeded it will be the result as a string encoded withpredef::encode_value()
.
- Methodrequest_access_token
string
request_access_token(string
code
,void
|function
(bool
,string
:void
)async_cb
)- Description
Requests an access token.
- Throws
An error if the access token request fails.
- Parameter
code
The code returned from the authorization page via
get_auth_uri()
.- Parameter
async_cb
If given an async request will be made and this function will be called when the request is finished. The first argument passed to the callback will be
true
orfalse
depending on if the request was successfull or not. The second argument will be a string. If the request failed it will be an error message. If it succeeded it will be the result as a string encoded withpredef::encode_value()
.- Returns
If
OK
a Pike encoded mapping (i.e it's a string) is returned which can be used to populate anBase
object at a later time.The mapping looks like
"access_token"
:string
"expires"
:int
"created"
:int
"refresh_token"
:string
"token_type"
:string
Depending on the authorization service it might also contain more members.
Module Web.CGI
Class Web.CGI.Request
- Description
Retrieves information about a CGI request from the environment and creates an object with the request information easily formatted.
- Variableconfig
multiset
(string
) Web.CGI.Request.config- Description
If used with Roxen or Caudium webservers, this field will be populated with "config" information.
- Variableprestate
multiset
(string
) Web.CGI.Request.prestate- Description
If used with Roxen or Caudium webservers, this field will be populated with "prestate" information.
- Variableremoteaddr
Variableremotehost string
Web.CGI.Request.remoteaddrstring
Web.CGI.Request.remotehost
- Variablesupports
multiset
(string
) Web.CGI.Request.supports- Description
If used with Roxen or Caudium webservers, this field will be populated with "supports" information.
Module Web.Crawler
- Description
This module implements a generic web crawler.
Features:
Fully asynchronous operation (Several hundred simultaneous requests)
Supports the /robots.txt exclusion standard
Extensible
URI Queues
Allow/Deny rules
Configurable
Number of concurrent fetchers
Bits per second (bandwidth throttling)
Number of concurrent fetchers per host
Delay between fetches from the same host
Supports HTTP and HTTPS
Class Web.Crawler.ComplexQueue
- Variablestats
Variablepolicy Stats
Web.Crawler.ComplexQueue.statsPolicy
Web.Crawler.ComplexQueue.policy
- Variablestats
Class Web.Crawler.Crawler
- Methodcreate
Web.Crawler.CrawlerWeb.Crawler.Crawler(
Queue
_queue
,function
(:void
)_page_cb
,function
(:void
)_error_cb
,function
(:void
)_done_cb
,function
(:void
)_prepare_cb
,string
|array
(string
)|Standards.URI
|array
(Standards.URI
)start_uri
,mixed
..._args
)- Parameter
_page_cb
function called when a page is retreived. Arguments are: Standards.URI uri, mixed data, mapping headers, mixed ... args. should return an array containing additional links found within data that will be analyzed for insertion into the crawler queue (assuming they are allowed by the allow/deny rulesets.
- Parameter
_error_cb
function called when an error is received from a server. Arguments are: Standards.URI real_uri, int status_code, mapping headers, mixed ... args. Returns void.
- Parameter
_done_cb
function called when crawl is complete. Accepts mixed ... args and returns void.
- Parameter
_prepare_cb
argument called before a uri is retrieved. may be used to alter the request. Argument is Standards.URI uri. Returns array with element 0 of Standards.URI uri, element 1 is a header mapping for the outgoing request.
- Parameter
start_uri
location to start the crawl from.
- Parameter
_args
optional arguments sent as the last argument to the callback functions.
- Methodcreate
Class Web.Crawler.GlobRule
- Description
A rule that uses glob expressions
- Parameter
pattern
a glob pattern that the rule will match against.
- Example
GlobRule("http://pike.lysator.liu.se/*.xml");
Class Web.Crawler.MemoryQueue
- Description
Memory queue
- Methodcreate
Web.Crawler.MemoryQueueWeb.Crawler.MemoryQueue(
Stats
_stats
,Policy
_policy
,RuleSet
_allow
,RuleSet
_deny
)
- Methodget
int
|Standards.URI
get()- Description
Get the next URI to index. Returns -1 if there are no URIs to index at the time of the function call, with respect to bandwidth throttling, outstanding requests and other limits. Returns 0 if there are no more URIs to index.
Class Web.Crawler.MySQLQueue
Class Web.Crawler.Policy
- Description
The crawler policy object.
- Variablebandwidth_throttling_floating_window_width
int
Web.Crawler.Policy.bandwidth_throttling_floating_window_width- Description
Bandwidth throttling floating window width. Defaults to 30.
- Variablemax_bits_per_second_per_host
int
Web.Crawler.Policy.max_bits_per_second_per_host- Description
Maximum number of bits per second, per host. Defaults to off (0).
- Variablemax_bits_per_second_total
int
Web.Crawler.Policy.max_bits_per_second_total- Description
Maximum number of bits per second. Defaults to off (0).
- Variablemax_concurrent_fetchers
int
Web.Crawler.Policy.max_concurrent_fetchers- Description
Maximum number of fetchers. Defaults to 100.
- Variablemax_concurrent_fetchers_per_host
int
Web.Crawler.Policy.max_concurrent_fetchers_per_host- Description
Maximum concurrent fetchers per host. Defaults to 1.
Class Web.Crawler.Queue
- Description
A crawler queue. Does not need to be reentrant safe. The Crawler always runs in just one thread.
- Methodget
int
|Standards.URI
get()- Description
Get the next URI to index. Returns -1 if there are no URIs to index at the time of the function call, with respect to bandwidth throttling and other limits. Returns 0 if there are no more URIs to index.
Class Web.Crawler.RegexpRule
- Description
A rule that uses
Regexp
expressions
Class Web.Crawler.RuleSet
- Description
A set of rules
Class Web.Crawler.Stats
- Description
Statistics.
- Variablewindow_width
Variablegranularity int
Web.Crawler.Stats.window_widthint
Web.Crawler.Stats.granularity
- Methodbytes_read_callback
void
bytes_read_callback(Standards.URI
uri
,int
num_bytes_read
)- Description
This callback is called when data has arrived for a presently crawled URI, but no more often than once a second.
- Methodclose_callback
void
close_callback(Standards.URI
uri
)- Description
This callback is called whenever the crawling of a URI is finished or fails.
Module Web.EngineIO
- Description
This is an implementation of the Engine.IO server-side communication's driver. It basically is a real-time bidirectional packet-oriented communication's protocol for communicating between a webbrowser and a server.
The driver mainly is a wrapper around
Protocols.WebSocket
with the addition of two fallback mechanisms that work around limitations imposed by firewalls and/or older browsers that prevent nativeProtocols.WebSocket
connections from functioning.This module supports the following features:
It supports both UTF-8 and binary packets.
If both sides support
Protocols.WebSocket
, then packet sizes are essentially unlimited. The fallback methods have a limit on packet sizes from browser to server, determined by the maximum POST request size the involved network components allow.
In most cases, Engine.IO is not used directly in applications. Instead one uses Socket.IO instead.
- Example
Sample small implementation of an EngineIO server farm:
class mysocket {inheritWeb.EngineIO.Socket;void echo(string|Stdio.Buffer msg){ write(0, msg);}}void wsrequest(array(string) protocols,object req){ httprequest(req);}void httprequest(object req){switch(req.not_query){case"/engine.io/": mysocket client =Web.EngineIO.farm(mysocket, req);if(client){ client.open(client.echo); client.write(0,"Hello world!");}break;}}int main(int argc,array(string) argv){Protocols.WebSocket.Port(httprequest, wsrequest, 80);return-1;}
- See also
farm
,Web.SocketIO
,Protocols.WebSocket
, http://github.com/socketio/engine.io-protocol, http://socket.io/
- Variableoptions
final
mapping
Web.EngineIO.options- Description
Global options for all EngineIO instances.
- See also
Socket.create()
,Gz.compress()
- Methodfarm
final
Socket
|zero
farm(program
createtype
,Protocols.WebSocket.Request
req
,void
|mapping
(string
:mixed
)options
)- Parameter
options
Optional options to override the defaults. This parameter is passed down as is to the underlying
Socket
.- See also
Socket.create()
Enum Web.EngineIO.
- ConstantBASE64
ConstantOPEN
ConstantCLOSE
ConstantPING
ConstantPONG
ConstantMESSAGE
ConstantUPGRADE
ConstantNOOP
ConstantACK
ConstantSENDQEMPTY
ConstantSHUTDOWN constant
Web.EngineIO.BASE64
constant
Web.EngineIO.OPEN
constant
Web.EngineIO.CLOSE
constant
Web.EngineIO.PING
constant
Web.EngineIO.PONG
constant
Web.EngineIO.MESSAGE
constant
Web.EngineIO.UPGRADE
constant
Web.EngineIO.NOOP
constant
Web.EngineIO.ACK
constant
Web.EngineIO.SENDQEMPTY
constant
Web.EngineIO.SHUTDOWN
- ConstantBASE64
Class Web.EngineIO.Socket
- Description
Runs a single Engine.IO session.
- Variablerequest
final
Protocols.WebSocket.Request
Web.EngineIO.Socket.request- Description
Contains the last request seen on this connection. Can be used to obtain cookies etc.
- Variablesid
final
string
Web.EngineIO.Socket.sid- Description
The unique session identifier (in the Engine.IO docs referred to as simply: id).
- Methodcreate
Web.EngineIO.SocketWeb.EngineIO.Socket(
Protocols.WebSocket.Request
req
,void
|mapping
options
)- Parameter
options
Optional options to override the defaults.
"pingTimeout"
:int
If, the connection is idle for longer than this, the connection is terminated, unit in
ms
."pingInterval"
:int
The browser-client will send a small ping message every
pingInterval ms
."allowUpgrades"
:int
When
true
(default), it allows the server to upgrade the connection to a realProtocols.WebSocket
connection."compressionLevel"
:int
The gzip compressionlevel used to compress packets.
"compressionThreshold"
:int
Packets smaller than this will not be compressed.
- Methodonrequest
final
void
onrequest(Protocols.WebSocket.Request
req
)- Description
Handle request, and returns a new Socket object if it's a new connection.
- Methodopen
final
void
open(void
|function
(string
|Stdio.Buffer
:void
)_read_cb
,void
|function
(:void
)_close_cb
,void
|function
(:void
)_lowmark_cb
)- Description
Set callbacks and open socket.
- Methodwrite
final
void
write(mapping
(string
:mixed
)options
,string
|Stdio.Buffer
...msgs
)- Description
Send text
string
or binaryStdio.Buffer
messages.
Enum Web.EngineIO.Socket.
Module Web.RSS
- Description
Represents a RSS (RDF Site Summary) file.
- Methodparse_xml
Index
parse_xml(string
|Parser.XML.Tree.Node
n
,void
|string
base
)- Description
Returns an
Index
object, populated with the rss information given in the rss filen
.
Class Web.RSS.Channel
- Description
Represents an RSS channel.
- Variabletitle
Variablelink
Variabledescription
Variableimage
Variabletextinput
Variableitems string
Web.RSS.Channel.titlestring
Web.RSS.Channel.linkstring
Web.RSS.Channel.descriptionstring
|Standards.URI
Web.RSS.Channel.imagestring
|Standards.URI
Web.RSS.Channel.textinputarray
(Item
) Web.RSS.Channel.items
Class Web.RSS.Image
- Description
Represents an RSS image resource.
Class Web.RSS.Index
- Description
Represents the top level of an RSS index.
Class Web.RSS.Item
- Description
Represents an RSS item resource.
Class Web.RSS.Textinput
- Description
Represents an RSS textinput resource.
Module Web.SOAP
- Description
This is a limited SOAP wsdl parser using Promises.
- Example
Web.SOAP.Promise("https://foo.bar/Logon.svc?wsdl").on_success(lambda(Web.SOAP.Client soap){Web.SOAP.Arguments args, sh; args = soap->get_arguments("Logon"); sh = args->LogonRequestMsg; sh->Username ="foo"; sh->Password ="bar"; sh->WebServiceType ="Publisher"; soap->call(args).on_success(lambda(mapping resp){string token = resp->CredentialToken;});});
- MethodPromise
final
Concurrent.Future
Promise(string
wsdlurl
,void
|mapping
headers
)- Returns
A
Concurrent.Future
that eventually delivers aClient
.- See also
Client()
Class Web.SOAP.Client
- Methodcall
final
Concurrent.Future
call(Arguments
args
)- Description
Calls the SOAP method you most recently addressed using
get_arguments()
.- Returns
A
Concurrent.Future
that eventually delivers a result mapping.- See also
get_arguments()
- Methodcreate
Web.SOAP.ClientWeb.SOAP.Client(
Protocols.HTTP.Promise.Result
resp
)- Description
Usually not called directly.
- See also
Promise()
- Methodget_arguments
final
Arguments
get_arguments(string
method
)- Description
Primes the
Client
to perform thecall()
later. Use the returned structure to pass parameters. Only assigned parameters will be passed to the call.- Returns
A structure describing all arguments for the specified
method
.- See also
call()
- Methodcall
Module Web.Sass
- Description
Sass is a scripting language that is interpreted into Cascading Style Sheets (CSS). This module is a glue for libsass.
- See also
- ConstantHTTP_IMPORT_NONE
ConstantHTTP_IMPORT_GREEDY
ConstantHTTP_IMPORT_ANY constant
int
Web.Sass.HTTP_IMPORT_NONE
constant
int
Web.Sass.HTTP_IMPORT_GREEDY
constant
int
Web.Sass.HTTP_IMPORT_ANY
- Description
Description:
HTTP_IMPORT_NONE
Default value of
Compiler.http_import
. Prohibits imports over HTTP.HTTP_IMPORT_GREEDY
Allow imports over HTTP only if the returned content type is text/scss.
HTTP_IMPORT_ANY
Anything goes.
- ConstantLIBSASS_VERSION
constant
string
Web.Sass.LIBSASS_VERSION
- Description
The libsass version, as a string, this module was compiled agains.
- ConstantSASS2SCSS_KEEP_COMMENT
ConstantSASS2SCSS_STRIP_COMMENT
ConstantSASS2SCSS_CONVERT_COMMENT constant
int
Web.Sass.SASS2SCSS_KEEP_COMMENT
constant
int
Web.Sass.SASS2SCSS_STRIP_COMMENT
constant
int
Web.Sass.SASS2SCSS_CONVERT_COMMENT
- Description
Constants that can be given as option to
sass2scss()
.
- ConstantSTYLE_NESTED
ConstantSTYLE_EXPANDED
ConstantSTYLE_COMPACT
ConstantSTYLE_COMPRESSED constant
int
Web.Sass.STYLE_NESTED
constant
int
Web.Sass.STYLE_EXPANDED
constant
int
Web.Sass.STYLE_COMPACT
constant
int
Web.Sass.STYLE_COMPRESSED
- Description
Styling of output. Use as argument to
Compiler.set_output_style()
STYLE_NESTED
The default setting. The output will look like:
a { property: value; other-property: value;} a:hover { property: value;} b { property: value;}
STYLE_EXPANDED
Fully expanded output:
a { property: value; other-property: value;} a:hover { property: value;} b { property: value;}
STYLE_COMPACT
Somewhat minified output:
a { property: value; other-prop: value } a:hover { property: value;} b { property: value;}
STYLE_COMPRESSED
Minified output
a{property:value;other-property:value}a:hover{property:value}b{property:value}
- Methodlibsass_language_version
string
libsass_language_version()- Description
Returns the language version of Sass this module was compiled against
- Methodlibsass_version
string
libsass_version()- Description
Returns the libsass version this module was compiled against
- Methodsass2scss
string(8bit)
sass2scss(string(8bit)
data
)string(8bit)
sass2scss(string(8bit)
data
,int
options
)- Description
Convert Sass syntax (i.e. indented syntax) to SCSS syntax.
- Parameter
data
Sass syntax text to convert to SCSS syntax.
- Parameter
options
This is a bitwise union of compression level (
STYLE_NESTED
,STYLE_EXPANDED
,STYLE_COMPACT
and $[STYLE_COMPRESSED]) and the SASS2SCSS_* constantsSASS2SCSS_KEEP_COMMENT
,SASS2SCSS_STRIP_COMMENT
andSASS2SCSS_CONVERT_COMMENT
. It defaults toSTYLE_NESTED|SASS2SCSS_KEEP_COMMENT
.- Returns
data
converted to SCSS syntax.
- Methodsass2scss_version
string
sass2scss_version()- Description
Returns the sass2scss version this module was compiled against
Class Web.Sass.Api
- Description
Low-level Sass/SCSS compiler.
You probably want to use
Compiler
instead of this class.- See also
Compiler
- Variableinclude_path
string(8bit)
Web.Sass.Api.include_path- Description
The base path of @imports. Note! This needs to be set when
compile_string()
is used.
- Variableomit_source_map_url
bool
Web.Sass.Api.omit_source_map_url- Description
Set whether writing the sourceMappingUrl=# or not.
- Variableoutput_style
int(2bit)
Web.Sass.Api.output_style- Description
Determines the level of compression on the generated output.
- See also
STYLE_NESTED
,STYLE_EXPANDED
,STYLE_COMPACT
andSTYLE_COMPRESSED
.
- Variableprecision
int
Web.Sass.Api.precision- Description
Set the precision of fractional numbers. Default is 5.
- Variablesass_syntax
bool
Web.Sass.Api.sass_syntax- Description
Set whether the code is Sass syntax, i.e. indented syntax or not. Only necessary when using
compile_string()
- Variablesource_comments
bool
Web.Sass.Api.source_comments- Description
Emit comments in the generated CSS indicating the corresponding source line. Default is false.
- Variablesource_map_embed
bool
Web.Sass.Api.source_map_embed- Description
Set whether embedding sourceMappingUrl=# as data uri or not.
- Variablesource_map_file
string(8bit)
Web.Sass.Api.source_map_file- Description
Set the path of the source map file.
- Variablesource_map_root
string(8bit)
Web.Sass.Api.source_map_root- Description
Set the root path of the source files, relative to where the source.map file is written.
- Methodcompile_string
string(8bit)
compile_string(string(8bit)
source
)- Description
Compiles the string
source
and returns the generated CSS.- Parameter
source
The string to compile
- Returns
A mapping with the generated CSS and source mapping file if such is set to be generated
"css"
:string(8bit)
The generated CSS
"map"
:string(8bit)
The generated source mapping data
- Note
If the
source
contain @import directives you have to explicitly set the include path viainclude_path
.
Class Web.Sass.Compiler
- Description
Sass/SCSS compiler.
- Example
Web.Sass.Compiler compiler =Web.Sass.Compiler();// Allow for HTTP imports, disallowed by default. compiler->http_import =Web.Sass.HTTP_IMPORT_ANY;// Minify the output and create a source map file. compiler->set_options((["output_style":Web.Sass.STYLE_COMPRESSED,"source_map_file":"path/to/write/source.map"]));if(mixed e =catch(compiler->compile_file("input.scss","output.css"))){ werror("Failed compiling input.scss to output.css\n");}
- Variablecheck_file_access
bool
Web.Sass.Compiler.check_file_access- Description
Should file access be tested right away when paths are set or should that be left to Sass to handle? The default value is true.
- Variablehttp_import
int(0..2)
Web.Sass.Compiler.http_import- Description
If a Sass file is importing an external URI this flag determines if thats allowed at all, or if the content type of the imported file has to be in
http_import_allow_ct
, or if anything goes. Default isHTTP_IMPORT_NONE
.- See also
HTTP_IMPORT_NONE
,HTTP_IMPORT_GREEDY
andHTTP_IMPORT_ANY
.
- Variablehttp_import_allow_ct
multiset
(s8
) Web.Sass.Compiler.http_import_allow_ct- Description
List of allowed content types if
http_import
is set toHTTP_IMPORT_GREEDY
. The default is to allow text/scss and text/sass.
- Methodcompile_file
mapping
(s8
:s8
) compile_file(s8
input_file
)- Description
Compile the file
input_file
and return the result- Parameter
input_file
The SCSS file to compile
- Returns
A mapping with the generated CSS and source mapping file if such is set to be generated
"css"
:string(8bit)
The generated CSS
"map"
:string(8bit)
The generated source mapping data
- Methodcompile_file
variant
void
compile_file(s8
input_file
,s8
output_file
)- Description
Compile the file
input_file
and write the result tooutput_file
. If a source mapping file is set to be generated either viaset_options()
orsource_map_file
it will be written as per the value set in the option.- Parameter
input_file
The SCSS file to compile
- Parameter
output_file
The name of the CSS file to save the result in.
- Methodhandle_sass_import
protected
string
|array
(string(8bit)
) handle_sass_import(string(8bit)
path
,void
|string(8bit)
absolute_path
,void
|string(8bit)
relative_path
)- Description
Resolve imports in sass/scss files.
- Note
In general this method doesn't need to overloaded. In principle it's only necessary if the Sass files reside in a non-standard filesystem.
- Note
If overloaded
abs_path
andrel_path
is the absolute and relaive paths of the file containing the import statementpath
. If the Sass/SCSS files are located in a normal filesystem this method can return the contents ofpath
as a string and libsass will resolve the paths to the imports by itself.However, if the files are not located in a normal filesystem this function should return an array of two indices, where the first index should be the contents of
path
and the second the calculated absolute path ofpath
.- Parameter
path
This is the value of `path` in @import 'path'.
- Parameter
absolute_path
This is the absolute path of the file containing the @import statement.
- Parameter
relative_path
The relative path of
absolute_path
in relation to the prevoiusabsolute_path
- Returns
int(0)
If undefined is returned the import resolution is given back to libsass.
string(8bit)
The contents of
path
array
(string(8bit)
)if an array is returned it should contain two indices, where the first if the contents of
path
and the second should be the absolute pathpath
. This is only useful (needed) if the Sass files doesn't reside in a normal filesystem that libsass can read.
- Methodset_options
void
set_options(mapping
(s8
:s8
|int
)opts
)- Description
Set options to the SASS compiler.
- Parameter
opts
"output_style"
:int
Any of the
STYLE_NESTED
,STYLE_EXPANDED
,STYLE_COMPACT
orSTYLE_COMPRESSED
constants. See alsooutput_style
."include_path"
:string(8bit)
Path to root of incude files. See also
include_path
."source_map_file"
:string(8bit)
File to write source map file to. See also
source_map_file
."source_comments"
:bool
Turn on/off comments in the output containing info about the source file - line numbers and such. Default of false. See also
source_comments
."source_map_embed"
:bool
Turn on/off if a source map should be embedded in the output or not. Default is false. See also
source_map_embed
."source_map_root"
:string(8bit)
Set the root path of the source files, relative to where the source.map file is written. See also
source_map_root
"omit_source_map_url"
:bool
Omit the #sourceMappingURL or not. See also
omit_source_map_url
"sass_syntax"
:bool
Turn on/off Sass syntax, i.e. indented syntax. Only necessary when using
compile_string()
"precision"
:int
Floating point precision. See also
precision
.
Module Web.SocketIO
- Description
This is an implementation of the Socket.IO server-side communication's driver. It basically is a real-time bidirectional object-oriented communication's protocol for communicating between a webbrowser and a server.
This module supports the following features:
Passing any arbitrarily deep nested data object which can be represented in basic JavaScript datatypes.
In addition to the normal JavaScript datatypes, it also supports passing (nested) binary blobs in an efficient manner.
Every message/event sent, allows for a callback acknowledge to be specified.
Acknowledge callbacks which will be called when the other side actively decides to acknowledge it (not automatically upon message reception).
Acknowledgement messages can carry an arbitrary amount of data.
The driver uses
Web.EngineIO
as the underlying protocol.- Example
Sample minimal implementation of a SocketIO server farm:
Web.SocketIO.Universe myuniverse;class myclient {inheritWeb.SocketIO.Client;}void echo(myclient id,function sendack,string namespace,string event,mixed ... data){ id->emit(event, @data);if(sendack) sendack("Ack","me","harder");}void wsrequest(array(string) protocols,object req){ httprequest(req);}void httprequest(object req){switch(req.not_query){case"/socket.io/": myclient client = myuniverse.farm(myclient, req);if(client) client->emit("Hello world!");break;}}int main(int argc,array(string) argv){ myuniverse =Web.SocketIO.Universe();// Create universe myuniverse.register("", echo);// Register root namespaceProtocols.WebSocket.Port(httprequest, wsrequest, 80);return-1;}
- See also
farm
,Web.EngineIO
,Protocols.WebSocket
, http://github.com/socketio/socket.io-protocol, http://socket.io/
- Variableoptions
final
mapping
(string
:mixed
) Web.SocketIO.options- Description
Global options for all SocketIO instances.
- See also
SocketIO.Universe.farm()
- Methodsendackcb
final
void
sendackcb(function
(mixed
... :void
)fn
,mixed
arg
)- Description
Convenience function to aid assist in sending the acknowledgment callback.
Enum Web.SocketIO.
- ConstantCONNECT
ConstantDISCONNECT
ConstantEVENT
ConstantACK
ConstantERROR
ConstantBINARY_EVENT
ConstantBINARY_ACK constant
Web.SocketIO.CONNECT
constant
Web.SocketIO.DISCONNECT
constant
Web.SocketIO.EVENT
constant
Web.SocketIO.ACK
constant
Web.SocketIO.ERROR
constant
Web.SocketIO.BINARY_EVENT
constant
Web.SocketIO.BINARY_ACK
- ConstantCONNECT
Class Web.SocketIO.Client
- Description
Runs a single Socket.IO session.
- Variablerequest
Protocols.WebSocket.Request
Web.SocketIO.Client.request- Description
Contains the last request seen on this connection. Can be used to obtain cookies etc.
- Note
Read only
- Methodemit
final
variant
void
emit(function
(Client
,mixed
... :void
)ack_cb
,string
event
,mixed
...data
)final
variant
void
emit(string
event
,mixed
...data
)final
variant
void
emit(function
(Client
,mixed
... :void
)ack_cb
,mapping
(string
:mixed
)options
,string
event
,mixed
...data
)final
variant
void
emit(mapping
(string
:mixed
)options
,string
event
,mixed
...data
)- Description
Send text or binary events to the client.
- Methodwrite
final
void
write(array
data
,void
|function
(Client
,mixed
... :void
)ack_cb
,void
|mapping
(string
:mixed
)options
)- Description
Send text or binary messages to the client. When in doubt use the emit() interface instead. write() allows messages to be sent which do not have a string event-name up front.
Class Web.SocketIO.Universe
- Variableclients
final
multiset
(object
) Web.SocketIO.Universe.clients- Description
All SocketIO sessions in this universe.
- Methodconnect
mixed
connect(Client
client
,void
|string
newnamespace
)- Description
Connects and disconnects clients.
- Returns
0 upon success, the error itself otherwise.
- Methodfarm
Client
farm(object
createtype
,Protocols.WebSocket.Request
req
,void
|mapping
options
)- Parameter
options
Optional options to override the defaults. This parameter is passed down as-is to the underlying
EngineIO.Socket
.- See also
EngineIO.farm()
- Methodregister
variant
void
register(string
namespace
,string
event
,void
|function
(Client
,function
(mixed
... :void
),string
,string
,mixed
... :void
)fn
)variant
void
register(string
namespace
,void
|function
(Client
,function
(mixed
... :void
),string
,mixed
... :void
)fn
)- Description
Register worker callback on namespace and event. There can be only one worker per tuple. Workers can be unregistered by omitting
fn
. Having a default worker per namespace in addition zero or more event specific ones, is supported.
- Variableclients
Module Yp
- Description
This module is an interface to the Yellow Pages functions. Yp is also known as NIS (Network Information System) and is most commonly used to distribute passwords and similar information within a network.
Class Yp.Domain
- Methodall
mapping
(string
:string
) all(string
map
)- Description
Returns the whole map as a mapping.
map
is the YP-map to search in. This must be the full map name, you have to use passwd.byname instead of just passwd.
- Methodcreate
Methodbind Yp.DomainYp.Domain(
string
|void
domain
)void
bind(string
domain
)- Description
If
domain
is not specified , the default domain will be used. (As returned byYp.default_domain()
).If there is no YP server available for the domain, this function call will block until there is one. If no server appears in about ten minutes or so, an error will be returned. This timeout is not configurable.
- See also
Yp.default_domain()
- Methodmap
void
map(string
map
,function
(string
,string
:void
)fun
)- Description
For each entry in
map
, call the function specified byfun
.fun
will get two arguments, the first being the key, and the second the value.map
is the YP-map to search in. This must be the full map name. eg passwd.byname instead of just passwd.
- Methodmatch
string
match(string
map
,string
key
)- Description
Search for the key
key
in the Yp-mapmap
.- Returns
If there is no
key
in the map, 0 (zero) will be returned, otherwise the string matching the key will be returned.- Note
key
must match exactly, no pattern matching of any kind is done.
- Methodorder
int
order(string
map
)- Description
Returns the 'order' number for the map
map
.This is usually the number of seconds since Jan 1 1970 (see
time()
). When the map is changed, this number will change as well.map
is the YP-map to search in. This must be the full map name. eg passwd.byname instead of just passwd.
- Methodall
Class Yp.Map
- Description
Network Information Service aka YP map.
- Methodmatch
Method`[] string
match(string
key
)string
res =Yp.Map()
[key
]- Description
Search for the key
key
. If there is nokey
in the map, 0 (zero) will be returned, otherwise the string matching the key will be returned.- Note
key
must match exactly, no pattern matching of any kind is done.
- Methodcreate
Yp.MapYp.Map(
string
map
,string
|void
domain
)- Description
Create a new YP-map object.
map
is the YP-map to bind to. This may be a nickname, such as passwd instead of just passwd.byname.If
domain
is not specified, the default domain will be used.- Note
If there is no YP server available for the domain, this function call will block until there is one. If no server appears in about ten minutes or so, an error will be returned. The timeout is not configurable.
- Methodmap
void
map(function
(string
,string
:void
)fun
)- Description
Call a function for each entry in the map.
For each entry in the map, call the function
fun
.The function will be called like
void fun(string key, string value)
.
Module _Charset
- Description
Low-level tables and code for the
Charset
module.This is probably not the module you want; try the
Charset
module.- See also
Charset
- Methodrfc1345
object
rfc1345(string
charset
,bool
|void
encoder
,string
|void
rep
,function
(string
:string
)|void
repcb
)- Description
Low-level charset codec factory.
- Parameter
charset
Canonical name of character set to look up.
- Parameter
encoder
Flag indicating that an encoder and not a decoder is wanted.
- Parameter
rep
String to use for characters not representable in the
charset
. Only used for encoders.- Parameter
repcb
Function to call for characters not representable in the
charset
. Only used for encoders.This is the main entrypoint into the low-level
_Charset
module.- Returns
Returns a suitable encoder or decoder on success and
0
(zero) on failure.- See also
Charset.encoder()
,Charset.decoder()
Module _Ffmpeg
- ConstantCODEC_ID_NONE
ConstantCODEC_ID_AC3
ConstantCODEC_ID_ADPCM_IMA_QT
ConstantCODEC_ID_ADPCM_IMA_WAV
ConstantCODEC_ID_ADPCM_MS
ConstantCODEC_ID_H263
ConstantCODEC_ID_H263I
ConstantCODEC_ID_H263P
ConstantCODEC_ID_MJPEG
ConstantCODEC_ID_MPEG1VIDEO
ConstantCODEC_ID_MPEG4
ConstantCODEC_ID_MP2
ConstantCODEC_ID_MP3LAME
ConstantCODEC_ID_MSMPEG4V1
ConstantCODEC_ID_MSMPEG4V2
ConstantCODEC_ID_MSMPEG4V3
ConstantCODEC_ID_PCM_ALAW
ConstantCODEC_ID_PCM_MULAW
ConstantCODEC_ID_PCM_S16BE
ConstantCODEC_ID_PCM_S16LE
ConstantCODEC_ID_PCM_S8
ConstantCODEC_ID_PCM_U16BE
ConstantCODEC_ID_PCM_U16LE
ConstantCODEC_ID_PCM_U8
ConstantCODEC_ID_RAWVIDEO
ConstantCODEC_ID_RV10
ConstantCODEC_ID_SVQ1
ConstantCODEC_ID_VORBIS
ConstantCODEC_ID_WMV1
ConstantCODEC_ID_WMV2 constant
_Ffmpeg.CODEC_ID_NONE
constant
_Ffmpeg.CODEC_ID_AC3
constant
_Ffmpeg.CODEC_ID_ADPCM_IMA_QT
constant
_Ffmpeg.CODEC_ID_ADPCM_IMA_WAV
constant
_Ffmpeg.CODEC_ID_ADPCM_MS
constant
_Ffmpeg.CODEC_ID_H263
constant
_Ffmpeg.CODEC_ID_H263I
constant
_Ffmpeg.CODEC_ID_H263P
constant
_Ffmpeg.CODEC_ID_MJPEG
constant
_Ffmpeg.CODEC_ID_MPEG1VIDEO
constant
_Ffmpeg.CODEC_ID_MPEG4
constant
_Ffmpeg.CODEC_ID_MP2
constant
_Ffmpeg.CODEC_ID_MP3LAME
constant
_Ffmpeg.CODEC_ID_MSMPEG4V1
constant
_Ffmpeg.CODEC_ID_MSMPEG4V2
constant
_Ffmpeg.CODEC_ID_MSMPEG4V3
constant
_Ffmpeg.CODEC_ID_PCM_ALAW
constant
_Ffmpeg.CODEC_ID_PCM_MULAW
constant
_Ffmpeg.CODEC_ID_PCM_S16BE
constant
_Ffmpeg.CODEC_ID_PCM_S16LE
constant
_Ffmpeg.CODEC_ID_PCM_S8
constant
_Ffmpeg.CODEC_ID_PCM_U16BE
constant
_Ffmpeg.CODEC_ID_PCM_U16LE
constant
_Ffmpeg.CODEC_ID_PCM_U8
constant
_Ffmpeg.CODEC_ID_RAWVIDEO
constant
_Ffmpeg.CODEC_ID_RV10
constant
_Ffmpeg.CODEC_ID_SVQ1
constant
_Ffmpeg.CODEC_ID_VORBIS
constant
_Ffmpeg.CODEC_ID_WMV1
constant
_Ffmpeg.CODEC_ID_WMV2
- Description
Various audio and video codecs.
- Note
The list of supported codecs depends on Ffmpeg library.
- ConstantCODEC_TYPE_AUDIO
ConstantCODEC_TYPE_VIDEO constant
_Ffmpeg.CODEC_TYPE_AUDIO
constant
_Ffmpeg.CODEC_TYPE_VIDEO
- Description
Type of codec.
Class _Ffmpeg.ffmpeg
- Description
Implements support of all codecs from a nice project Ffmpeg. You can find more info about it at http://ffmpeg.sf.net/.
- Methodcreate
_Ffmpeg.ffmpeg_Ffmpeg.ffmpeg(
int
codec_name
,int
encoder
)- Description
Create decoder or encoder object.
- Parameter
codec_name
Internal number of codec, eg.
CODEC_ID_MP2
.- Parameter
encoder
If true, encoder object will be created, decoder object otherwise.
- Methoddecode
mapping
|int
decode(string
data
)- Description
Returns a mapping with the new decoded frame and lenght of
data
which was used for decoding.
- Methoddecode
int
decode(string
data
,function
(:void
)shuffler
)- Description
Decode all
data
buffer and pass result toshuffler
. Returns1
on success,0
otherwise.- Note
Shuffler variant isn't implemented, yet.
- Note
Usable only in decoder.
- See also
create()
- Methodencode
mapping
|int
encode(string
data
)- Description
Returns mapping with new encoded frame and length of
data
which was used for encoding.
- Methodencode
int
encode(string
data
,function
(:void
)shuffler
)- Description
Returns
1
on success,0
otherwise.- Note
Usable only in encoder
- See also
create()
- Methodget_codec_info
mapping
|int
get_codec_info()- Description
Returns mapping with info of used codec.
- See also
list_codecs()
- Methodget_codec_status
mapping
|int
get_codec_status()- Description
Returns a mapping with the actual codec parameters.
- See also
set_codec_param()
- Methodlist_codecs
array
(mapping
) list_codecs()- Description
Gets all supported codecs.
- Returns
Array of mapping with codec features.
- ConstantCODEC_ID_NONE
Module _Stdio
- Description
Low-level I/O.
This is usually NOT the module you want. Try
Stdio
instead.- See also
Stdio
- ConstantIPPROTO_IP
constant
_Stdio.IPPROTO_IP
- Description
Used in
File.setsockopt()
to set IP-level options
- ConstantIPPROTO_TCP
constant
_Stdio.IPPROTO_TCP
- Description
Used in
File.setsockopt()
to set TCP-level options
- ConstantNOTE_ATTRIB
constant
int
_Stdio.NOTE_ATTRIB
- Description
Used with
Stdio.File()->set_fs_event_callback()
to monitor for attribute changes on a file.- Note
Available on systems that use kqueue.
- ConstantNOTE_DELETE
constant
int
_Stdio.NOTE_DELETE
- Description
Used with
Stdio.File()->set_fs_event_callback()
to monitor for deletion of a file.- Note
Available on systems that use kqueue.
- ConstantNOTE_EXTEND
constant
int
_Stdio.NOTE_EXTEND
- Description
Used with
Stdio.File()->set_fs_event_callback()
to monitor for extension events on a file.- Note
Available on systems that use kqueue.
- ConstantNOTE_LINK
constant
int
_Stdio.NOTE_LINK
- Description
Used with
Stdio.File()->set_fs_event_callback()
to monitor for changes to a file's link count.- Note
Available on systems that use kqueue.
- ConstantNOTE_RENAME
constant
int
_Stdio.NOTE_RENAME
- Description
Used with
Stdio.File()->set_fs_event_callback()
to monitor for move or rename events on a file.- Note
Available on systems that use kqueue.
- ConstantNOTE_REVOKE
constant
int
_Stdio.NOTE_REVOKE
- Description
Used with
Stdio.File()->set_fs_event_callback()
to monitor for access revokation (unmount, etc).- Note
Available on systems that use kqueue.
- ConstantNOTE_WRITE
constant
int
_Stdio.NOTE_WRITE
- Description
Used with
Stdio.File()->set_fs_event_callback()
to monitor for writes to a file.- Note
Available on systems that use kqueue.
- ConstantPROP_BIDIRECTIONAL
constant
int
_Stdio.PROP_BIDIRECTIONAL
- Description
The file is bi-directional.
- See also
Stdio.File()->pipe()
- ConstantPROP_BUFFERED
constant
int
_Stdio.PROP_BUFFERED
- Description
The file is buffered (usually 4KB).
- See also
Stdio.File()->pipe()
- ConstantPROP_IPC
constant
int
_Stdio.PROP_IPC
- Description
The file may be used for inter process communication.
- See also
Stdio.File()->pipe()
- ConstantPROP_NONBLOCK
constant
int
_Stdio.PROP_NONBLOCK
- Description
The file supports nonblocking I/O.
- See also
Stdio.File()->pipe()
- ConstantPROP_REVERSE
constant
int
_Stdio.PROP_REVERSE
- Description
Request reversed operation.
Used as argument to
Stdio.File()->pipe()
, whenPROP_BIDIRECTIONAL
hasn't been specified, to request the direction of the resulting pipe to reversed.- See also
Stdio.File()->pipe()
- ConstantPROP_SEND_FD
constant
int
_Stdio.PROP_SEND_FD
- Description
The
Stdio.File
object might support theStdio.File()->send_fd()
operation.- See also
Stdio.File()->pipe()
,Stdio.File()->send_fd()
,Stdio.File()->receive_fd()
- ConstantPROP_SHUTDOWN
constant
int
_Stdio.PROP_SHUTDOWN
- Description
The file supports shutting down transmission in either direction.
- See also
Stdio.File()->close()
,Stdio.File()->pipe()
- ConstantPROP_TTY
constant
int
_Stdio.PROP_TTY
- Description
The
Stdio.File
object supports tty operations.- Note
This constant is only present on platforms where pseudo tty (aka pty) operations are available, and may thus be used to detect whether such operations should be attempted.
- See also
Stdio.File()->pipe()
- ConstantSOL_SOCKET
constant
_Stdio.SOL_SOCKET
- Description
Used in
File.setsockopt()
to set socket-level options
- ConstantSO_KEEPALIVE
constant
_Stdio.SO_KEEPALIVE
- Description
Used in
File.setsockopt()
to control TCP/IP keep-alive packets.
- ConstantTCP_NODELAY
constant
_Stdio.TCP_NODELAY
- Description
Used in
File.setsockopt()
to control Nagle's Algorithm.
- ConstantXATTR_CREATE
constant
_Stdio.XATTR_CREATE
- Description
Used by
setxattr
function and method to signify a pure create, which will fail if the attribute already exists.
- ConstantXATTR_REPLACE
constant
_Stdio.XATTR_REPLACE
- Description
Used by
setxattr
function and method to signify a replace, which will fail the the attribute does not already exists.
- Constant__HAVE_OOB__
constant
_Stdio.__HAVE_OOB__
- Description
Exists and has the value 1 if OOB operations are available.
- Note
In Pike 7.5 and later OOB operations are always present.
- Constant__HAVE_SEND_FD__
constant
_Stdio.__HAVE_SEND_FD__
- Description
Support for sending of file descriptors over
Stdio.File()->pipe()
objects withPROP_SEND_FD
capability is supported.- See also
Stdio.File()->send_fd()
,Stdio.File()->receive_fd()
,Stdio.File()->read()
,Stdio.File()->write()
,Stdio.File()->pipe()
- Constant__OOB__
constant
_Stdio.__OOB__
- Description
Implementation level of nonblocking I/O OOB support.
0
Nonblocking OOB support is not supported.
1
Nonblocking OOB works a little.
2
Nonblocking OOB almost works.
3
Nonblocking OOB works as intended.
-1
Unknown level of nonblocking OOB support.
This constant only exists when OOB operations are available, i.e. when
__HAVE_OOB__
is 1.
- Methodget_all_active_fd
array
(int
) get_all_active_fd()- Description
Returns the id of all the active file descriptors.
- Methodgethostip
mapping
(string
:mapping
) gethostip()- Description
Returns the IP addresses of the host.
- Returns
Returns a mapping that maps interface name to a mapping with more information about that interface. That information mapping looks as follows.
"ips"
:array
(string
)A list of all IP addresses bound to this interface.
- Methodgetprotobyname
int
getprotobyname(string(8bit)
name
)- Description
Returns the protocol number of the protocol
name
. This calls the POSIX function getprotobyname. If the protocol cannot be found an error is thrown.
Enum _Stdio.FileModeFlags
- Description
File mode flags returned by
Fd()->mode()
.
- ConstantFILE_CREATE
constant
int
_Stdio.FILE_CREATE
- Description
Create a new file if it didn't exist earlier.
- ConstantFILE_NONBLOCKING
constant
int
_Stdio.FILE_NONBLOCKING
- Description
File opened in nonblocking mode.
Enum _Stdio.FilePropertyFlags
- Description
File properties for use with eg
Fd()->pipe()
, and returned by egFd()->mode()
.
- ConstantPROP_BIDIRECTIONAL
constant
int
_Stdio.PROP_BIDIRECTIONAL
- Description
File supports both sending and receiving.
- ConstantPROP_IPC
constant
int
_Stdio.PROP_IPC
- Description
File can be used for interprocess communication.
- ConstantPROP_NONBLOCK
constant
int
_Stdio.PROP_NONBLOCK
- Description
File supports nonblocking operation.
- ConstantPROP_SEND_FD
constant
int
_Stdio.PROP_SEND_FD
- Description
File is capable of sending open file descriptors.
Class _Stdio.Buffer
- Description
A buffer to use as input or buffering when doing I/O. It is similar to
String.Buffer
, but can only contain 8bit data and is designed for protocol parsing. It is optimized for reading from the beginning and adding to the end, and will try to minimise the amount of data copying that is done.The class maintains two separate offsets, one for reading and one for writing. The functions that add data all do so at the write offset (the end of the buffer), and reading is done from the read offset (the start of the buffer).
The class can also be used to directly read from and write to filedescriptors if so desired. This eliminates at least one memory copy.
- Note
The "avoid copy" part means that a Buffer will never shrink unless you call the
trim
function.
- Method__set_on_write
void
__set_on_write(function
(:void
)write_callback
)- Description
This tells the buffer to trigger the write callback for the specified file descriptor when data is added to the buffer.
- Note
This is used internally by
Stdio.File
andSSL.File
to handle nonblocking buffered mode, and is not necessarily intended to be used directly by anything but implementations of File or Stream like programs. Do not use this yourself on buffers with Files or Streams in buffer modes.
- Method_encode
Method_decode string(8bit)encode_value(_Stdio.Bufferdata)
_Stdio.Bufferdecode_value(string(8bit)data)
- Description
Encode and decode Stdio.Buffer objects. Only the buffer data is kept, no other state is saved.
- Method_search
int(-1..)
search(_Stdio.Bufferfrom,int(8bit)
character
,int
|void
start
,int(0..)
|void
end
)- Description
Search forward from the indicated
start
position for the specifiedcharacter
.- Parameter
character
Character to search for.
- Parameter
start
Start position relative to the current read position of the buffer.
Negative
start
values are supported and indicate positions prior to the current read position.- Parameter
end
Don't search past this position of the buffer.
- Returns
Returns the first found position of
character
relative to the current read position of the buffer on success, andUNDEFINED
on not found. The read position is not advanced.- See also
read_cstring()
,search()
,lfun::_search()
- Method_search
int(-1..)
search(_Stdio.Bufferfrom,string(8bit)
substring
,int
|void
start
,int
|void
end
)- Description
Search forward from the indicated
start
position for the specifiedsubstring
.- Parameter
substring
Substring to search for.
- Parameter
start
Start position relative to the current read position of the buffer.
Negative
start
values are supported and indicate positions prior to the current read position.- Parameter
end
Don't search past this position of the buffer.
- Returns
Returns the first found position of
substring
relative to the current read position of the buffer on success, andUNDEFINED
on not found. The read position is not advanced.- See also
read_cstring()
,search()
,lfun::_search()
- Method_sizeof
int
sizeof(_Stdio.Bufferarg)- Description
Returns the buffer size, in bytes. This is how much you can read from the buffer until it runs out of data.
- Method`[..]
string(8bit)
res =_Stdio.Buffer()
[start..end]- Description
Range operator.
- Returns
Returns a string of the characters at offset
low
throughhigh
. Returns the empty string if no data is available in the range.
- Method`[]
int(-1..255)
res =_Stdio.Buffer()
[off
]- Description
Return the character at the specified offset.
- Returns
Returns the character at offset
off
on success, and-1
otherwise.- Note
Indexing with negative offsets was not supported in Pike 8.0 and earlier.
- Method`[]=
_Stdio.Buffer()
[off
] =char
- Description
Set the character at the specified offset to
char
.- Note
Indexing with negative offsets was not supported in Pike 8.0 and earlier.
- Methodadd
Buffer
add(AddArgument
...data
)- Description
private typedef System.Memory|Stdio.Buffer|String.Buffer BufferObject; private typedef BufferObject|string(8bit)|int(8bit)|array(AddArgument) AddArgument;
Add the items in data to the end of the buffer.
The supported argument types are:
string(8bit)
An eight bit string.
int(8bit)
A single byte
System.Memory
A chunk of memory. The whole memory area is added.
Stdio.Buffer
A chunk of memory. The whole memory area is added.
String.Buffer
A chunk of memory. The whole memory area is added.
array
(AddArgument
)Add all elements in the array individually. Each element may be any one of the types listed here.
- See also
sprintf
,add_int8
,add_int16
,add_int32
,add_int
andadd_hstring
- Methodadd_hint
Buffer
add_hint(int
i
,int(0..)
size_width
)- Description
First add the size of the integer when encoded to base 256 as a
size_width
integer, then add the integer to the buffer, both in network byte order.size_width
must be less than Int.NATIVE_MAX.
- Methodadd_hstring
Buffer
add_hstring(string(8bit)
data
,int(0..)
size_size
)Buffer
add_hstring(Stdio.Buffer
data
,int(0..)
size_size
)Buffer
add_hstring(System.Memory
data
,int(0..)
size_size
)Buffer
add_hstring(String.Buffer
data
,int(0..)
size_size
)Buffer
add_hstring(int(8bit)
data
,int(0..)
size_size
)Buffer
add_hstring(array
data
,int(0..)
size_size
)Buffer
add_hstring(int
|string(8bit)
|Stdio.Buffer
|System.Memory
|array
data
,int(0..)
size_size
,int(0..)
offset
)- Description
Adds length of data followed by
data
to the buffer.This is identical to sprintf("%"+size_size+"H",(string)Stdio.Buffer(data)) but significantly faster.
size_size
is the number of bytes used to represent the length of the data. It must be less than Int.NATIVE_MAX.offset
is added to the length of the data prior to writing out the length. Typical usage involves addingsize_size
to account for the room used by the size.The supported
data
argument types areint(8bit)
An eight bit character.
string(8bit)
An eight bit string.
System.Memory
A chunk of memory. The whole memory area is added.
Stdio.Buffer
A chunk of memory. The whole memory area is added.
String.Buffer
A chunk of memory. The whole memory area is added.
array
Add all elements in the array individually. Each element may be any one of the types listed here.
- Methodadd_int
Buffer
add_int(int
i
,int(0..)
width
)- Description
Adds a generic integer to the buffer as an (width*8)bit network byteorder number.
width
must be less than Int.NATIVE_MAX.
- Methodadd_int16
Buffer
add_int16(int(16bit)
)- Description
Add a 16-bit network byte order value to the buffer
- Methodadd_int16
Buffer
add_int16(Gmp.mpz
)- Description
Add a 16-bit network byte order value to the buffer
- Methodadd_int32
Buffer
add_int32(Gmp.mpz
i
)- Description
Adds a 32 bit network byte order value to the buffer
- Methodadd_ints
Buffer
add_ints(array
(int
)integers
,int(8bit)
len
)- Description
Add the integers in the specified array,
len
bytes per int. Equivalent to callingadd_int
for each integer, but faster, and if an error occurs the buffer will contain no new data. Either all or none of the integers will be added.Errors can occur if one of the elements in
integers
is not actually an integer, if sizeof(integers)*len is bigger than can be represented in a size_t, or if the buffer cannot grow due to an out of memory condition.
- Methodadd_padding
Buffer
add_padding(int(0..)
nbytes
,int(8bit)
|void
byte
)- Description
Add
nbytes
bytes of padding, ifbyte
is not specified the area will be filled with 0's, otherwise the specified byte will be repeated.
- Methodallocate
void
allocate(int(0..)
n
)- Description
Make sure that at least
n
bytes of space are available in this buffer.
- Methodcast
(
string(8bit)
)_Stdio.Buffer()- Description
Convert the buffer to a string.
- Note
This only works for buffers whose length is less than 0x7fffffff.
- Methodconsume
int(0..)
|int(-1)
consume(int(0..)
n
)- Description
Discard the first
n
bytes from the bufferReturns -1 on error and the amount of space still left otherwise.
- Methodcreate
_Stdio.Buffer_Stdio.Buffer(
int
|void
len
)_Stdio.Buffer_Stdio.Buffer(
string(8bit)
contents
)_Stdio.Buffer_Stdio.Buffer(
System.Memory
|String.Buffer
contents
)- Description
If passed an integer or no argument, create a buffer of that size, or if no argument is given, 226 bytes.
If
contents
are specified a new buffer with the contents of the given string/System.Memory or String.Buffer will be created.- Note
In the
String.Buffer
case the data has to be copied unless there is only one reference to the String.Buffer object, since modifications of the String.Buffer would cause the Buffer to point into invalid memory.In all other cases this will not copy the string data, instead data will be read from the source until it needs to be modified, so the buffer creation is fast regardless of the length of the string.
However, as an example, if the buffer is created with a 100Gb
System.Memory
mmap:ed file as thecontents
and you later on try to modify the buffer using one of theadd
functions (orsprintf
and similar) the old contents will be copied.You can use
read_only()
to avoid accidents.
- Methodinput_from
int(-1..)
input_from(Stdio.Stream
f
,int
|void
nbytes
)- Description
Read data from
f
into this buffer. Ifnbytes
is not specified, read until there is no more data to read (currently).Returns the amount of data that was read, or
-1
on read error.- Note
Please note that this funcition will read all data from the filedescriptor unless it's set to be non-blocking.
- Methodlock
object
lock()- Description
Makes this buffer read only until the returned object is released.
- Note
This currently simply returns a 0-length subbuffer.
- Methodmatch
__deprecated__
string(8bit)
|int
|float
|array
match(string(8bit)
format
)- Description
Reads data from the beginning of the buffer to match the specifed format, then return the match.
The non-matching data will be left in the buffer.
This function is very similar to
sscanf
, but the result is the sum of the matches. Most useful to match a single value.- Returns
Returns the sum of the matching %-expressions,
""
if a prefix (but no %-expression) matches andUNDEFINED
on mismatch. Note that the addition may throw errors.- Note
Prior to Pike 9.0
0
was returned on mismatch andformat
was returned on a prefix match.- Example
// Get the next whitespace separated word from the buffer. buffer->match("%*[ \t\r\n]%[^ \t\r\n]");// Get the next integer as a string. buffer->match("%0s%d");
- Deprecated
Replaced by
sscanf
.- See also
sscanf()
,predef::sscanf()
,array_sscanf()
- Methodoutput_to
int(-1..)
output_to(Stdio.Stream
|function
(string(8bit)
:int
)fun
,int(0..)
|void
nbytes
)- Description
Write data from the buffer to the indicated file.
- Parameter
fun
Write function. Either one of:
Stdio.Stream
A file object in which the function
write()
will be called.function
(string(8bit)
:int
)A function which will be called with a
string(8bit)
to write and is expected to return anint
indicating the number of bytes successfully written or-1
on failure.- Parameter
nbytes
If
nbytes
is not specified the whole buffer will be written if possible. Otherwise at mostnbytes
will be written.- Returns
Will return the number of bytes that have been written successfully.
If no bytes have been written successfully and
fun()
failed with an error,-1
will be returned.- Deprecated
This function is going to get deprecated. In case you want to use it against an
Stdio.File
like object, please consider using thef->write(buf)
API. If you want to use it against a custom write function, please consider supporting thef->write(buf)
API in it.
- Methodrange_error
protected
bool
range_error(int
howmuch
)- Description
This function is called when an attempt is made to read out of bounds.
The default implementation simply returns
0
(zero).Override this function to change the behavior.
- Parameter
howmuch
The argument
howmuch
indicates how much data is needed:(1..)
Need
howmuch
bytes more0
The amount of data needed is not certain. This most often happens when
sscanf
orread_json
is used(..-1)
Tried to
unread
-howmuch
bytes. There is usually no way to satisfy the requested range.The only supported way is to extract the data from the buffer, add the requested amount of "go backbuffer", add the data back, and forward -
howmuch
bytes.- Returns
true
if the operation should be retried,false
otherwise.Do not return true unless you have added data to the buffer, doing so could result in an infinite loop (since no data is added, the range_error will be called again immediately).
- Methodread
string(8bit)
read()- Description
Read all data from the buffer.
If there is not enough data available this returns 0.
This is basically equivalent to (string)buffer, but it also removes the data from the buffer.
- See also
try_read()
- Methodread
string(8bit)
read(int(0..)
n
)- Description
Read
n
bytes of data from the buffer.If there is not enough data available this returns 0.
- See also
try_read()
- Methodread_buffer
Buffer
read_buffer(int(0..)
n
)Buffer
read_buffer(int(0..)
n
,bool
copy
)- Description
Same as
read
, but returns the result as an Buffer.No data is copied unless
copy
is specified and true, the new buffer points into the old one.- Note
As long as the subbuffer exists the main buffer is locked in memory.
Usually this is OK, since it often represents something that should be parsed before the next whatever is extracted from the buffer, but do take care.
- Methodread_cstring
string(8bit)
read_cstring(void
|int(8bit)
sentinel
,void
|int(8bit)
escape
)- Description
Reads a \0 terminated C-string and returns the string excluding the terminating \0.
If there is not enough data available return UNDEFINED.
Note that pike string can not be longer than 0x7fffffff bytes (~2Gb).
- Parameter
sentinel
A different character can be used as end sentinel of the string.
- Parameter
escape
An optional character used as a prefix to quote the following character. UNDEFINED and the same value as
sentinel
mean that there is no escape character.- Note
Escape characters (if any) are left untouched in the returned string.
- See also
_search()
- Methodread_hbuffer
Buffer
read_hbuffer(int
n
)Buffer
read_hbuffer(int
n
,bool
copy
)- Description
Same as
read_hstring
, but returns the result as an Buffer.No data is copied unless
copy
is specified and true, the new buffer points into the old one.- Note
As long as the subbuffer exists no data can be added to the main buffer.
Usually this is OK, since it often represents something that should be parsed before the next whatever is extracted from the buffer, but do take care.
If you need to unlink the new buffer after it has been created, call
trim
in it.
- Methodread_hint
int
read_hint(int(0..)
n
)- Description
Read a network byte order unsigned number of size n*8 bits, then read another network byte order number of the size indicated by the first size.
Will return -1 if there is not enough buffer space available unless error mode is set to throw errors.
- Methodread_hstring
string(8bit)
read_hstring(int(0..)
n
,void
|int
offset
)- Description
Identical in functionality to
read
(read_number
(n
)) but faster.Read a network byte order number of size n*8 bits, then return the indicated number of bytes as a string.
offset
is substracted from the specified length prior to reading the string. Typical usage involves substractingn
to account for the room used by the size.If there is not enough data available return 0.
Note that pike string can not be longer than 0x7fffffff bytes (~2Gb).
- Methodread_int
int
read_int(int(0..)
n
)- Description
Read a network byte order unsigned number of size n*8 bits, then return it.
Will return -1 if there is not enough buffer space available unless error mode is set to throw errors.
- See also
read_le_int
- Methodread_ints
array
(int
) read_ints(int
n
,int(8bit)
width
)- Description
Read a list of
n
network byte order unsigned numbers each of sizewidth
*8 bits, then return it.Will return 0 if there is not enough buffer space available unless error mode is set to throw errors.
- Methodread_json
mixed
read_json(int
|void
require_whitespace_separator
)- Description
Read a single JSON expression from the buffer and return it.
If
require_whitespace_separator
is true there must be a whitespace after each json value (as an example, newline or space).The JSON is assumed to be utf-8 encoded.
- Returns
UNDEFINED if no data is available to read. The read value otherwise.
- Note
Unless whitespaces are required this function only really work correctly with objects, arrays and strings.
There is really no way to see where one value starts and the other ends for most other cases
- Methodread_le_int
int
read_le_int(int(0..)
n
)- Description
Read a little endian byte order unsigned number of size n*8 bits, then return it.
Will return -1 if there is not enough buffer space available unless error mode is set to throw errors.
- See also
read_int
- Methodread_only
void
read_only()- Description
This makes the existing data in the buffer permanently read only.
- Note
You can use lock() to do this temporarily.
- Methodread_sint
int
read_sint(int
size
)- Description
Read a network byte order two:s complement signed number of size n*8 bits, then return it.
Will return UNDEFINED if there is not enough buffer space available unless error mode is set to throw errors.
- Methodrewind_on_error
Methodrewind_key RewindKey
rewind_on_error()RewindKey
rewind_key()- Description
These functions are very similar. The
rewind_on_error
variant will create an object that, when it goes out of scope without having been destructed explicitly, will cause the buffer to rewind to the location it had when this function is called.This will happen if you throw an error or otherwise let the object fall out of scope.
Use
destruct(RewindKey)
orRewindKey.release
to stop the buffer from being rewound.The second version (
rewind_key
) requires you to explicitly callRewindKey.rewind
to do the rewind.Take some care with these objects, if you create multiple ones at once the results might be somewhat confusing if you do not release them in the reverse order they were created in (then again, you almost certainly really only need one)
You can call
RewindKey.update
in the generated object to change where it will be rewound to.The typical use-case of this functionality is when parsing a packet protocol with variable length packets where the length is not immediately known. It saves you from keeping track of how much to rewind if you had not actually gotten the whole packet yet.
- Example
void parse_packet(Stdio.Buffer b ){Stdio.Buffer.RewindKey rewind = b->rewind_on_error(); b->set_error_mode(1);switch( b->read_int8())// packet type{case DATA:int channel = b->read_int8();Stdio.Buffer data = b->read_hbuffer( 4 );// we have read the whole packet, so no longer rewind on error. rewind->release();return handle_data_packet( channel, data );}}
- Note
Just calling
rewind_on_error
without assigning the return value to something will not do anything. You need to keep the object around while the rewind-to position is still valid.Keeping the object around forbids the buffer from moving data inside itself, this means that it can only grow. So do not keep the rewind key when it is not needed.
- Methodset_error_mode
Buffer
set_error_mode(int
m
)Buffer
set_error_mode(program
m
)- Description
Set the error mode of this buffer to
m
.If true operations that would normally return 0 (like trying to read too much) will instead throw an error. If
m
is a program a clone of it will be thrown on error.This is useful when parsing received data, you do not have to verify that each and every read operation suceeds.
However, the non-error mode is more useful when checking to see if a packet/segment/whatever has arrived.
The thrown error object will have the constant buffer_error set to a non-false value.
- Example
void read_callback(int i,string(8bit) new_data){ inbuffer->add( new_data );while( Buffer packet = inbuffer->read_hbuffer(2)){ packet->set_error_mode(Buffer.THROW_ERROR);if(mixed e =catch( handle_packet( packet )))if( e->buffer_error ) protocol_error();// illegal data in packetelse throw(e);// the other code did something bad}}void handle_packet( Buffer pack ){switch( pack->read_int8()){ ... case HEADER_FRAME:int num_headers = pack->read_int32();for(int i = 0; i<num_headers; i++ ) headers[pack->read_hstring(2)]= pack->read_hstring(2); ... }}
- Methodset_max_waste
void
set_max_waste(float
factor
)- Description
Configure how much free space should be allowed, at most, as a factor of the current buffer size.
The default is 0.5, leaving at most half the buffer as waste.
- Methodsprintf
Buffer
sprintf(strict_sprintf_format
format
,sprintf_args
...args
)- Description
Appends the output from
sprintf
at the end of the buffer.This is somewhat faster than add(sprintf(...)) since no intermediate string is created.
- Methodsscanf
array
sscanf(string(8bit)
format
)- Description
Reads data from the beginning of the buffer to match the specifed format, then return an array with the matches.
The non-matching data will be left in the buffer.
See
array_sscanf
for more information.- See also
match()
,predef::sscanf()
,array_sscanf()
- Methodtrim
void
trim()- Description
Frees unused memory.
Note that calling this function excessively will slow things down, since the data often has to be copied.
- Note
This function could possibly throw an out-of-memory error if the realloc fails to find a new (smaller) memory area.
- Methodtruncate
int(0..)
|int(-1)
truncate(int(0..)
n
)- Description
Truncates the buffer to a length of
n
bytes.Returns -1 on error and the number of bytes removed otherwise.
- Methodtry_read
string(8bit)
try_read(int(0..)
len
)- Description
Attempt to read some data from the buffer.
- Parameter
len
Read at most
len
bytes from the buffer.- Returns
If the buffer contains less than
len
bytes of data, the entire buffer contents are returned. Otherwise the firstlen
bytes are returned.- See also
read()
- Methodunread
int(0..)
|int(-1)
unread(int(0..)
n
)- Description
Rewind the buffer
n
bytes.- Returns
This function returns how many more bytes of buffer is available to rewind, or -1 on error.
- Note
Unless you add new data to the buffer using any of the add functions you can always rewind.
You can call
unread(0)
to see how much.
Class _Stdio.Buffer.RewindKey
- Description
The return value of
Buffer.rewind_on_error()
andBuffer.rewind_key()
This object will cause the buffer to unwind to the position it was at when the object was created either when it is released (when it falls out of scope, explicit destruct does not count) or when
rewind
is called, depending on which function was used to create it.
- Methodrelease
void
release()- Description
Do not rewind if the object is released.
- Note
This is equivalent to calling destruct() on the object
Class _Stdio.Fd
- Description
Low level I/O operations.
- Note
This is not the class you want. Use
Stdio.File
and friends instead.- See also
Stdio.File
,Stdio.FILE
,_Stdio.Fd_ref
- Variable_errno
protected
int(0..)
_Stdio.Fd._errno- Description
Variable containing the internal value returned by
errno()
.- See also
errno()
- Variable_read_callback
Variable_write_callback
Variable_read_oob_callback
Variable_write_oob_callback
Variable_error_callback
Variable_fs_event_callback mixed
_Stdio.Fd._read_callbackmixed
_Stdio.Fd._write_callbackmixed
_Stdio.Fd._read_oob_callbackmixed
_Stdio.Fd._write_oob_callbackmixed
_Stdio.Fd._error_callbackmixed
_Stdio.Fd._fs_event_callback- Description
Callback functions installed by
Stdio.File()->set_callbacks()
et al.
- Methodcd
bool
cd(string(8bit)
|void
relpath
)- Description
Change current directory relative to this file.
- Returns
Returns
1
on success and0
(zero) on failure.- See also
predef::cd()
- Methodclose
int
close()int
close(string
direction
)- Description
Close a file or stream.
If direction is not specified, both the read and the write direction are closed. Otherwise only the directions specified is closed.
- Returns
Returns
1
if the file or stream now is closed in all directions, and0
otherwise.- Throws
An exception is thrown if an I/O error occurs.
The default behaviour for sockets is typically to flush buffered data in the background, but this can be changed with
linger()
.- Note
close()
has no effect if this file object has been associated with an already opened file, i.e. ifopen()
was given an integer as the first argument.- See also
linger()
,open()
,open_socket()
- Methodconnect
bool
connect(string
dest_addr
,int
dest_port
)bool
connect(string
dest_addr
,int
dest_port
,string
src_addr
,int
src_port
)string(8bit)
|int(0)
connect(string
dest_addr
,int
dest_port
,string
|int(0)
src_addr
,int
|int(0)
src_port
,string(8bit)
data
)- Description
Open a TCP/IP connection to the specified destination.
In nonblocking mode, success is indicated with the write-callback, and failure with the close-callback or the read_oob-callback.
If the
data
argument is included the socket will use TCP_FAST_OPEN if available, if not the data will not be sent. In the data case the function either returns the data that has not been sent (only one packet can be sent with this option) or 0 if the connection failed immediately.- Returns
Returns
1
or the remainingdata
on success, and0
on failure.- Note
In nonblocking mode
0
(zero) may be returned anderrno()
set to EWOULDBLOCK or WSAEWOULDBLOCK. This should not be regarded as a connection failure.- See also
open_socket()
- Methodconnect_unix
bool
connect_unix(string
filename
)- Description
Open a UNIX domain socket connection to the specified destination.
- Parameter
filename
Filename to create.
In nonblocking mode, success is indicated with the write-callback, and failure with the close-callback or the read_oob-callback.
- Returns
Returns
1
on success, and0
on failure.- Note
In nonblocking mode
0
(zero) may be returned anderrno()
set to EWOULDBLOCK or WSAEWOULDBLOCK. This should not be regarded as a connection failure.- Note
path
had a quite restrictive length limit (~100 characters) prior to Pike 7.8.334.
- Methodcreate
_Stdio.Fd_Stdio.Fd(
string
filename
)_Stdio.Fd_Stdio.Fd(
string
filename
,string
mode
)_Stdio.Fd_Stdio.Fd(
string
filename
,string
mode
,int
access
)_Stdio.Fd_Stdio.Fd(
int
fd
)_Stdio.Fd_Stdio.Fd(
int
fd
,string
mode
)- Description
See
open()
.- See also
open()
- Methoddup2
int
dup2(Stdio.File
to
)- Description
Duplicate a file over another.
This function works similarly to
assign()
, but instead of making the argument a reference to the same file, it creates a new file with the same properties and places it in the argument.- Returns
Returns
1
on success and0
(zero) on failure.- Note
to
need not be open, in which case a new fd is allocated.- Note
Note also that
to
is also assigned to the same backend (if any) as this object.- See also
assign()
,dup()
- Methodfd_factory
Fd
fd_factory()- Description
Factory creating
Stdio.Fd
objects.This function is called by
openat()
,pipe()
,dup()
and other functions creating new file objects.The default implementation calls
object_program(this_object())()
to create the new object, and returns theFd
inherit in it.- Note
Note that this function must return the
Fd
inherit in the object.- See also
Stdio.Port()->fd_factory()
,openat()
,pipe()
- Methodget_dir
array
(string
) get_dir(string
|void
path
)- Description
Get directory contents relative to an open directory.
- Parameter
path
Path relative to the open directory. Defaults to the directory itself.
- Returns
Returns an array of filenames.
- Note
Not available on all architectures.
- See also
predef::get_dir()
,statat()
,openat()
,unlinkat()
- Methodgetxattr
string
getxattr(string
attr
)- Description
Return the value of a specified attribute, or 0 if it does not exist
- Methodgrantpt
string
grantpt()- Description
If this file has been created by calling
openpt()
, return the filename of the associated pts-file. This function should only be called once.- Returns
Returns the filename of the corresponding pts.
- Note
This function is only available on some platforms.
- Methodhardlinkat
void
hardlinkat(string(8bit)
from
,string(8bit)
to
,Stdio.File
|void
tofd
)- Description
Create a hardlink named
to
from the filefrom
, wherefrom
is relative to this file, andto
is relative totofd
unless it is not set in which case it is also relative to this file.- Note
This function is not available on all platforms.
- See also
hardlink()
,symlinkat()
,unlinkat()
- Methodis_open
int
is_open()- Description
Returns true if the file is open.
- Note
If the file is a socket that has been closed from the remote side, this function might still return true.
- Note
Most methods can't be called for a file descriptor that isn't open. Notable exceptions
errno
,mode
, and the set and query functions for callbacks and backend.
- Methodlinger
bool
linger(int(-1..65535)
|void
seconds
)- Description
Set the socket linger behaviour on
close()
.- Parameter
seconds
-1
Reset to default behaviour. This typically means that
close()
will return immediately, but any buffered data will still be sent if possible.0
Terminate the connection immediately on
close()
, and discard any buffered data.(1..65535)
Have
close()
wait for at mostseconds
seconds for any buffered data to be sent after which the connection is terminated.- Returns
Returns
1
on success, and0
(zero) on failure.- Note
This operation is only valid on sockets.
- Note
This function was not available in Pike 7.8.775 and earlier.
- See also
close()
- Methodlistxattr
array
(string
) listxattr()- Description
Return an array of all extended attributes set on the file
- Methodlock
Stdio.FileLockKey
lock()Stdio.FileLockKey
lock(bool
is_recursive
)- Description
Makes an exclusive file lock on this file.
- See also
trylock()
- Methodmode
FileModeFlags
|FilePropertyFlags
mode()- Description
Returns the open mode and capabilities for the file.
- Returns
Returns an
`|()
of the following flags:0x1000
FILE_READ
0x2000
FILE_WRITE
0x4000
FILE_APPEND
0x8000
FILE_CREATE
0x0100
FILE_TRUNC
0x0200
FILE_EXCLUSIVE
0x0400
FILE_NONBLOCKING
0x0080
PROP_TTY
0x0040
PROP_SEND_FD
0x0010
PROP_BIDIRECTIONAL
0x0008
PROP_BUFFERED
0x0004
PROP_SHUTDOWN
0x0002
PROP_NONBLOCK
0x0001
PROP_IPC
- Note
In some versions of Pike 7.8 the PROP_ flags were filtered from the result.
- See also
open()
- Methodopen
int
open(string
filename
,string
mode
)int
open(string
filename
,string
mode
,int
access
)int
open(int
fd
,string
mode
)- Description
Open a file, or use an existing fd.
If
filename
is given, attempt to open the named file. Iffd
is given instead, it should be the file descriptor for an already opened file, which will then be used by this object.mode
describes how the file is opened. It's a case-insensitive string consisting of one or more of the following letters:- "r"
Open for reading.
- "w"
Open for writing.
- "a"
Append new data to the end.
- "c"
Create the file if it doesn't exist already.
- "t"
Truncate the file to zero length if it already contains data. Use only together with
"w"
.- "x"
Open exclusively - the open fails if the file already exists. Use only together with
"c"
. Note that it's not safe to assume that this is atomic on some systems.
access
specifies the permissions to use if a new file is created. It is a UNIX style permission bitfield:- 0400
User has read permission.
- 0200
User has write permission.
- 0100
User has execute permission.
- 0040
Group has read permission.
- 0020
Group has write permission.
- 0010
Group has execute permission.
- 0004
Others have read permission.
- 0002
Others have write permission.
- 0001
Others have execute permission.
It's system dependent on which of these bits that are actually heeded. If
access
is not specified, it defaults to00666
, but note that on UNIX systems it's masked with the process umask before use.- Returns
Returns nonzero on success and
0
(zero) on failure. If there is a failure thenerrno
returns the error code.- See also
close()
- Methodopenat
Stdio.File
openat(string
filename
)Stdio.File
openat(string
filename
,string
mode
)Stdio.File
openat(string
filename
,string
mode
,int
access
)- Description
Open a file relative to an opened directory.
- Returns
Returns a new file object on success, and
0
(zero) on failure.- Note
Not available on all architectures.
- See also
open()
,statat()
,unlinkat()
- Methodopenpt
int
openpt(string
mode
)- Description
Open the master end of a pseudo-terminal pair.
- Returns
This function returns
1
for success,0
otherwise.- See also
grantpt()
- Methodpeek
int(-1..1)
peek()int(-1..1)
peek(int
|float
timeout
)int(-1..1)
peek(int
|float
timeout
,int
not_eof
)- Description
Check if there is data available to read, or wait some time for available data to read.
More specifically, a later call to
read()
will return immediately, either due to data being present, or due to some error (eg if a socket has been closed).- Parameter
timeout
Timeout in seconds.
- Parameter
not_eof
Flag for specifying handling of end of file. The following values are currently defined:
0
Traditional (and default) behaviour. Return
1
at EOF.1
Regard EOF as an error. Return
-1
and seterrno()
to returnEPIPE
at EOF.- Returns
1
There is data available to
read()
, ornot_eof
is0
(zero) and we're at EOF. A later call toread()
will not block.0
There is no data available (ie timeout).
-1
Error condition. The error code returned by
errno()
has been updated.- See also
errno()
,read()
- Note
The function may be interrupted prematurely of the timeout (due to signals); check the timing manually if this is imporant.
- Methodproxy
void
proxy(Stdio.File
from
)- Description
Starts a thread that asynchronously copies data from
from
to this file.- See also
Stdio.sendfile()
- Methodquery_address
string
query_address()string
query_address(bool
local
)- Description
Get address and port of a socket end-point.
- Parameter
local
If the argument
local
is not specified, or is0
(zero), the remote end-point is returned. Otherwise, iflocal
is1
, the local end-point is returned.- Returns
This function returns the address and port of a socket end-point on the form
"x.x.x.x port"
(IPv4) or"x:x:x:x:x:x:x:x port"
(IPv6). IPv6 addresses may use the contracted syntax.If this file is not a socket, is not connected, or some other error occurs,
0
(zero) is returned anderrno()
will return the error code.- Throws
An error is thrown if the socket (or file) isn't open.
- See also
connect()
- Methodquery_backend
Pike.Backend
query_backend()- Description
Return the backend used for the callbacks.
- See also
set_backend
- Methodquery_fd
int
query_fd()- Description
Returns the file descriptor number associated with this object.
- Methodquery_mtu
int
query_mtu()- Description
Get the Max Transfer Unit for the object (if any).
- Returns
-1
Returns
-1
if the object is not a socket or if the mtu is unknown.(1..)
Returns a positive value with the mtu on success.
- Methodread
string(8bit)
read()string(8bit)
read(int
len
)string(8bit)
read(int
len
,bool
not_all
)- Description
Read data from a file or a stream.
Attempts to read
len
bytes from the file, and return it as a string. Less thanlen
bytes can be returned if:end-of-file is encountered for a normal file, or
it's a stream that has been closed from the other end, or
it's a stream in nonblocking mode, or
it's a stream and
not_all
is set, ornot_all
isn't set and an error occurred (see below).
If
not_all
is nonzero,read()
does not try its best to read as many bytes as you have asked for, but merely returns as much as the system read function returns. This is mainly useful with stream devices which can return exactly one row or packet at a time. Ifnot_all
is used in blocking mode,read()
only blocks if there's no data at all available.If something goes wrong and
not_all
is set, zero is returned. If something goes wrong andnot_all
is zero or left out, then either zero or a string shorter thanlen
is returned. If the problem persists then a later call toread()
fails and returns zero, however.If everything went fine, a call to
errno()
directly afterwards returns zero. That includes an end due to end-of-file or remote close.If no arguments are given,
read()
reads to the end of the file or stream.If any file descriptors have been sent by the other side of the stream,
receive_fd()
will be called once for every sent file descriptor.- Note
It's not necessary to set
not_all
to avoid blocking reading when nonblocking mode is used.- Note
When at the end of a file or stream, repeated calls to
read()
will return the empty string since it's not considered an error. The empty string is never returned in other cases, unless nonblocking mode is used orlen
is zero.- See also
read_oob()
,write()
,receive_fd()
,send_fd()
- Methodread
int
read(System.Memory
dst
,void
|int(0..)
offset
)- Description
Reads data from a file or stream into the buffer
dst
at offsetoffset
. Tries to read as many bytes as buffer space available.- Returns
The number of bytes read. Returns
-1
on error anderrno()
will return the corresponding error code.
- Methodread
int
read(Stdio.Buffer
|String.Buffer
dst
)- Description
Reads data from a file or stream into the buffer
dst
. Tries to read as many bytes as buffer space available. Will advance the write position indst
by the number of bytes read.- Returns
The number of bytes read. Returns
-1
on error anderrno()
will return the corresponding error code.
- Methodread_oob
string
read_oob()string
read_oob(int
len
)string
read_oob(int
len
,bool
not_all
)- Description
Attempts to read
len
bytes of out-of-band data from the stream, and returns it as a string. Less thanlen
bytes can be returned if:the stream has been closed from the other end, or
nonblocking mode is used, or
not_all
is set, ornot_all
isn't set and an error occurred (see below).
If
not_all
is nonzero,read_oob()
only returns as many bytes of out-of-band data as are currently available.If something goes wrong and
not_all
is set, zero is returned. If something goes wrong andnot_all
is zero or left out, then either zero or a string shorter thanlen
is returned. If the problem persists then a later call toread_oob()
fails and returns zero, however.If everything went fine, a call to
errno()
directly afterwards returns zero. That includes an end due to remote close.If no arguments are given,
read_oob()
reads to the end of the stream.- Note
It is not guaranteed that all out-of-band data sent from the other end is received. Most streams only allow for a single byte of out-of-band data at a time.
- Note
It's not necessary to set
not_all
to avoid blocking reading when nonblocking mode is used.- Note
When at the end of a file or stream, repeated calls to
read()
returns the empty string since it's not considered an error. The empty string is never returned in other cases, unless nonblocking mode is used orlen
is zero.- See also
read()
,write_oob()
- Methodreadlinkat
string
readlinkat(string(8bit)
path
)- Description
Returns what the symbolic link
path
points to, wherepath
is relative to the open file.- Note
This function is not available on all platforms.
- See also
readlink()
,symlink()
,symlinkat()
- Methodreceive_fd
void
receive_fd(Stdio.Fd
fd
)- Description
Remote file descriptor reception handler.
- Parameter
fd
File descriptor received from the remote end of a
pipe()
. This object has been created byfd_factory()
.This function is called from
read()
when a remote file descriptor has been received over aPROP_SEND_FD
capablepipe()
.The default implementation is just a prototype.
Overload this function to enable reception of remote file descriptors.
- Note
The capability of sending and receiving remote file descriptors is only available on some operating systems. This capability is indicated by the precence of
__HAVE_SEND_FD__
.- See also
send_fd()
,read()
,fd_factory()
,__HAVE_SEND_FD__
- Methodrelease_fd
int
release_fd()- Description
Returns the file descriptor number associated with this object, in addition to releasing it so that this object behaves as if closed. Other settings like callbacks and backend remain intact.
take_fd
can later be used to reinstate the file descriptor so that the state is restored.- See also
query_fd()
,take_fd()
- Methodseek
int
seek(int
offset
)int
seek(int
offset
,string
whence
)- Description
The seek() function repositions the offset of the open file associated with the file descriptor fd to the argument
offset
according to the directivewhence
as follows:Stdio.SEEK_SET
The offset is set to
offset
bytes.Stdio.SEEK_CUR
The offset is set to its current location plus
offset
bytes.Stdio.SEEK_END
The offset is set to the size of the file plus
offset
bytes.If
whence
is not specified it is SEEK_SET ifoffset
is positive, and ifoffset
is negative SEEK_END.The seek() function on most operating systems allows the file offset to be set beyond the end of the file (but this does not change the size of the file). If data is later written at this point, subsequent reads of the data in the gap (a "hole") return null bytes ('\0') until data is actually written into the gap.
Seeking file data and holes
Stdio.SEEK_DATA and Stdio.SEEK_HOLE are nonstandard extensions present in Linux, Solaris, FreeBSD, and DragonFly BSD; they are proposed for inclusion in the next POSIX revision.
Stdio.SEEK_DATA
Adjust the file offset to the next location in the file greater than or equal to offset containing data. If offset points to data, then the file offset is set to offset.
Stdio.SEEK_HOLE
Adjust the file offset to the next hole in the file greater than or equal to offset. If offset points into the middle of a hole, then the file offset is set to offset. If there is no hole past offset, then the file offset is adjusted to the end of the file (i.e., there is an implicit hole at the end of any file).
In both of the above cases, seek() fails if offset points past the end of the file.
These operations allow applications to map holes in a sparsely allocated file. This can be useful for applications such as file backup tools, which can save space when creating backups and preserve holes, if they have a mechanism for discovering holes.
For the purposes of these operations, a hole is a sequence of zeros that (normally) has not been allocated in the underlying file storage. However, a filesystem is not obliged to report holes, so these operations are not a guaranteed mechanism for mapping the storage space actually allocated to a file. (Furthermore, a sequence of zeros that actually has been written to the underlying storage may or may not be reported as a hole.)
In the simplest implementation, a filesystem can support the operations by making SEEK_HOLE always return the offset of the end of the file, and making SEEK_DATA always return offset (i.e., even if the location referred to by offset is a hole, it can be considered to consist of data that is a sequence of zeros).
- Returns
Upon successful completion, seek() returns the resulting offset location as measured in bytes from the beginning of the file. On error, the value (off_t) -1 is returned and
errno
is set to indicate the error.- See also
tell()
- Methodseek
variant
__deprecated__
int
seek(int
unit
,int
mult
)variant
__deprecated__
int
seek(int
unit
,int
mult
,int
add
)- Description
Seek to a specified offset in a file.
If
mult
oradd
are specified,pos
is calculated as
.pos
=unit
*mult
+add
If
pos
is negative then it is relative to the end of the file, otherwise it's an absolute offset from the start of the file.- Returns
Returns the new offset, or
-1
on failure.- Note
The arguments
mult
andadd
are considered obsolete, and should not be used.- See also
tell()
- Methodsend_fd
void
send_fd(Stdio.Fd
fd
)- Description
Queues an open file descriptor for sending to the other end of a stream.
- Note
The actual sending is performed at the next successful call to
write()
, this is due to limitations in the system calls. This means that it isn't possible to send a file descriptor without also sending some in-band data.This operation is only supported on
pipe()
's created withPROP_SEND_FD
.This function is not available on all operating systems, check for
__HAVE_SEND_FD__
.The queue is emptied on successful
write()
and when the write direction isclose()
'd.- See also
receive_fd()
,write()
,pipe()
,read()
,__HAVE_SEND_FD__
- Methodset_backend
void
set_backend(Pike.Backend
backend
)- Description
Set the backend used for the callbacks.
- Note
The backend keeps a reference to this object only when it is in callback mode. So if this object hasn't got any active callbacks and it runs out of other references, it will still be destructed quickly (after closing, if necessary).
Also, this object does not keep a reference to the backend.
- See also
query_backend
,set_nonblocking
,set_read_callback
,set_write_callback
,set_fs_event_callback
- Methodset_blocking
void
set_blocking()- Description
Sets this file to blocking operation.
This is the inverse operation of
set_nonblocking()
.- See also
set_nonblocking()
- Methodset_buffer
void
set_buffer(int
bufsize
,string
mode
)void
set_buffer(int
bufsize
)- Description
Set internal socket buffer.
This function sets the internal buffer size of a socket or stream.
The second argument allows you to set the read or write buffer by specifying
"r"
or"w"
.- Note
It is not guaranteed that this function actually does anything, but it certainly helps to increase data transfer speed when it does.
- See also
open_socket()
,accept()
- Methodset_close_on_exec
void
set_close_on_exec(bool
yes_no
)- Description
Marks the file as to be closed in spawned processes.
This function determines whether this file will be closed when calling exec().
Default is that the file WILL be closed on exec except for stdin, stdout and stderr.
- See also
Process.create_process()
,exec()
- Methodset_keepalive
bool
set_keepalive(bool
on_off
)- Description
Equivalent to setsockopt(Stdio.SO_KEEPALIVE, on_off), but will set errno if SO_KEEPALIVE is not supported, rather than issuing a compilation error for the missing constant.
- Methodset_nodelay
bool
set_nodelay(bool
|void
state
)- Description
Control Nagle's Algorithm (RFC 896)
- Parameter
state
0
Return to the normal state of using Nagle's Algorithm
1
(default) Disable Nagling - small writes will not be queued.
- Returns
Returns
1
on success, and0
(zero) on failure.- Note
This operation is only valid on sockets.
- See also
setsockopt()
- Methodset_nonblocking
void
set_nonblocking()- Description
Sets this file to nonblocking operation.
- Note
Nonblocking operation is not supported on all Stdio.File objects. Notably it is not guaranteed to be supported on objects returned by
pipe()
unlessPROP_NONBLOCK
was specified in the call topipe()
.- See also
set_blocking()
- Methodsetsockopt
bool
setsockopt(int
level
,int
opt
,int
state
)- Description
Set socket options like Stdio.SO_KEEPALIVE. This function is always available; the presence or absence of the option constants indicates availability of those features.
- Returns
1 if successful, 0 if not (and sets errno())
- See also
set_keepalive()
- Methodsetxattr
void
setxattr(string
attr
,string
value
,int
flags
)- Description
Set the attribute
attr
to the valuevalue
.The flags parameter can be used to refine the semantics of the operation.
Stdio.XATTR_CREATE
specifies a pure create, which fails if the named attribute exists already.Stdio.XATTR_REPLACE
specifies a pure replace operation, which fails if the named attribute does not already exist.By default (no flags), the extended attribute will be created if need be, or will simply replace the value if the attribute exists.
- Returns
1 if successful, 0 otherwise, setting errno.
- Methodstat
Stat
stat()- Description
Get status for an open file.
This function returns the same information as the function
file_stat()
, but for the file it is called in. If file is not an open file,0
(zero) is returned. Zero is also returned if file is a pipe or socket.- Returns
See
file_stat()
for a description of the return value.- See also
file_stat()
,statat()
- Methodstatat
Stat
statat(string
path
,void
|bool
symlink
)- Description
Get status for a file relative an open directory.
This function returns the same information as the function
file_stat()
, but relative to the file it is called in. If file is not an open file,0
(zero) is returned. Zero is also returned if file is a pipe or socket.- Returns
See
file_stat()
for a description of the return value.- Note
Not available on all architectures.
- See also
file_stat()
,stat()
,openat()
,unlinkat()
- Methodsymlinkat
void
symlinkat(string(8bit)
from
,string(8bit)
to
)- Description
Create a symbolic link named
to
that points tofrom
, whereto
is relative to this file..- Note
This function is not available on all platforms.
- See also
hardlinkat()
,symlink()
,readlinkat()
,unlinkat()
- Methodsync
bool
sync()- Description
Flush buffers to disk.
- Returns
Returns
0
(zero) and sets errno on failure.Returns
1
on success.
- Methodtake_fd
void
take_fd(int
fd
)- Description
Rehooks the given file descriptor number to be associated with this object. As opposed to using
open
with a file descriptor number, it will be closed by this object upon destruct or whenclose
is called.- See also
release_fd()
- Methodtcdrain
bool
tcdrain()- Description
Wait for transmission buffers to empty.
- Returns
Returns
1
on success and0
(zero) on failure.- See also
tcflush()
- Methodtcflush
bool
tcflush(string(7bit)
|void
flush_direction
)- Description
Flush queued terminal control messages.
- Parameter
flush_direction
"TCIFLUSH"
Flush received but not read.
"TCOFLUSH"
Flush written but not transmitted.
"TCIOFLUSH"
Flush both of the above. Default.
- Returns
Returns
1
on success and0
(zero) on failure.- See also
tcdrain()
- Methodtcgetattr
Methodtcsetattr mapping
(string(7bit)
:int
) tcgetattr()int
tcsetattr(mapping
(string(7bit)
:int
)attr
)int
tcsetattr(mapping
(string(7bit)
:int
)attr
,string(7bit)
when
)- Description
Gets/sets term attributes. The returned value/the
attr
parameter is a mapping on the form"ispeed"
:int(-1..)
In baud rate.
"ospeed"
:int(-1..)
Out baud rate.
"csize"
:int(-1)
|int(5..8)
Character size in bits.
"rows"
:int
Terminal rows.
"columns"
:int
Terminal columns.
flag_name
:bool
The value of a named flag. The flag name is the string describing the termios flags (IGNBRK, BRKINT, IGNPAR, PARMRK, INPCK, ISTRIP, INLCR, IGNCR, ICRNL, IUCLC, IXON, IXANY, IXOFF, IMAXBEL, OPOST, OLCUC, ONLCR, OCRNL, ONOCR, ONLRET, OFILL, OFDEL, OXTABS, ONOEOT, CSTOPB, CREAD, PARENB, PARODD, HUPCL, CLOCAL, CRTSCTS, ISIG, ICANON, XCASE, ECHO, ECHOE, ECHOK, ECHONL, ECHOCTL, ECHOPRT, ECHOKE, FLUSHO, NOFLSH, TOSTOP, PENDIN). See the manpage for termios or other documentation for more information. All flags are not available on all platforms.
character_name
:int(8bit)
Sets the value of a control character (VINTR, VQUIT, VERASE, VKILL, VEOF, VTIME, VMIN, VSWTC, VSTART, VSTOP, VSUSP, VEOL, VREPRINT, VDISCARD, VWERASE, VLNEXT, VEOL2). All control characters are not available on all platforms.
Negative values are not allowed as indata, but might appear in the result from
tcgetattr
when the actual value is unknown.tcsetattr
returns 0 if failed.The argument
when
totcsetattr
describes when the changes are to take effect:"TCSANOW"
The change occurs immediately (default).
"TCSADRAIN"
The change occurs after all output has been written.
"TCSAFLUSH"
The change occurs after all output has been written, and empties input buffers.
- Example
// setting the terminal in raw mode: Stdio.stdin->tcsetattr((["ECHO":0,"ICANON":0,"VMIN":0,"VTIME":0]));
- Note
Unknown flags are ignored by
tcsetattr()
.tcsetattr
always changes the attribute, so only include attributes that actually should be altered in the attribute mapping.- Bugs
Terminal rows and columns setting by
tcsetattr()
is not currently supported.- See also
tcsetsize()
- Methodtcsendbreak
bool
tcsendbreak(int
|void
duration
)- Description
Send a break signal.
- Parameter
duration
Duration to send the signal for.
0
(zero) causes a break signal to be sent for between 0.25 and 0.5 seconds. Other values are operating system dependent:- SunOS
The number of joined break signals as above.
- Linux, AIX, Digital Unix, Tru64
The time in milliseconds.
- FreeBSD, NetBSD, HP-UX, MacOS
The value is ignored.
- Solaris, Unixware
The behavior is changed to be similar to
tcdrain()
.
- Returns
Returns
1
on success and0
(zero) on failure.
- Methodtcsetsize
bool
tcsetsize(int
rows
,int
cols
)- Description
Set the number of rows and columns for a terminal.
- Returns
Returns
1
on success and0
(zero) on failure.- See also
tcgetattr()
,tcsetattr()
- Methodtruncate
bool
truncate(int
length
)- Description
Truncate a file.
Truncates the file to the specified length
length
.- Returns
Returns
1
on success, and0
(zero) on failure.- See also
open()
- Methodtrylock
Stdio.FileLockKey
trylock()Stdio.FileLockKey
trylock(bool
is_recursive
)- Description
Attempts to place a file lock on this file.
- See also
lock()
- Methodunlinkat
int
unlinkat(string
f
)- Description
Remove a file or directory relative to an open file.
- Returns
Returns
0
(zero) on failure,1
otherwise.- See also
rm()
,openat()
,statat()
- Methodwrite
int
write(string(8bit)
data
)int
write(string(8bit)
format
,mixed
...extras
)int
write(array
(string(8bit)
)data
)int
write(array
(string(8bit)
)format
,mixed
...extras
)int
write(Stdio.Buffer
|String.Buffer
|System.Memory
data
,void
|int(0..)
offset
)- Description
Write data to a file or a stream.
If there are any file descriptors that have been queued for sending (with
send_fd()
), they will be sent.- Parameter
data
Data to write.
If
data
is an array of strings, they are written in sequence.- Parameter
format
- Parameter
extras
If more than one argument is given,
sprintf()
is used to format them usingformat
. Ifformat
is an array, the strings in it are concatenated and the result is used as format string.- Parameter
offset
The offset in data to start writing from.
- Returns
Writes
data
and returns the number of bytes that were actually written.(1..)
The number of bytes successfully written to the OS buffers.
This can be less than the size of the given data if eg:
Some data was written successfully and then something went wrong.
If only some data was written due to an error and that error persists, then a later call to
write()
will fail and return-1
.Nonblocking mode is used and not all data could be written without blocking.
0
No bytes were written. This may be due to
data
or the formatted data being the empty string.Nonblocking mode is used and no data could be written without blocking.
-1
Something went wrong and no bytes were written.
If everything went fine, a call to
errno()
directly afterwards returns zero.- Note
Writing of wide strings is not supported. You have to encode the data somehow, e.g. with
string_to_utf8
or with one of the charsets supported byCharset.encoder
.- Note
The variant of this function using a buffer object does not release the interpreter lock.
- See also
read()
,write_oob()
,send_fd()
- Methodwrite_oob
int
write_oob(string
data
)int
write_oob(string
format
,mixed
...extras
)- Description
Write out-of-band data to a stream.
Writes out-of-band data to a stream and returns how many bytes that were actually written. It can be less than the size of the given data if some data was written successfully and then something went wrong.
-1 is returned if something went wrong and no bytes were written. If only some data was written due to an error and that error persists, then a later call to
write_oob()
fails and returns -1.If everything went fine, a call to
errno()
directly afterwards returns zero.If more than one argument is given,
sprintf()
is used to format them.- Note
It is not guaranteed that all out-of-band data sent from the other end is received. Most streams only allow for a single byte of out-of-band data at a time. Some streams sends the rest of the data as ordinary data.
- See also
read_oob()
,write()
Class _Stdio.Fd_ref
- Description
Proxy class that contains stub functions that call the corresponding functions in
Fd
.Used by
Stdio.File
.- Note
This is not the class you want. Use
Stdio.File
and friends instead.- See also
Stdio.File
,Stdio.FILE
,_Stdio.Fd
Class _Stdio.UDP
- ConstantMSG_OOB
constant
_Stdio.UDP.MSG_OOB
- Description
Flag to specify to
read()
to read out of band packets.
- ConstantMSG_PEEK
constant
_Stdio.UDP.MSG_PEEK
- Description
Flag to specify to
read()
to cause it to not remove the packet from the input buffer.
- Methodadd_membership
int
add_membership(string
group
,void
|string
address
)- Description
Join a multicast group.
- Parameter
group
group
contains the address of the multicast group the application wants to join. It must be a valid multicast address.- Parameter
address
address
is the address of the local interface with which the system should join to the multicast group. If not provided the system will select an appropriate interface.See also the Unix man page for setsocketopt IPPROTO_IP IP_ADD_MEMBERSHIP and IPPROTO_IPV6 IPV6_JOIN_GROUP.
- Note
The
address
parameter is currently not supported for IPv6.- Note
This function did not support IPv6 in Pike 7.8 and earlier.
- See also
drop_membership()
- Methodbind
UDP
bind(int
|string
port
,string
|void
address
,string
|bool
no_reuseaddr
)- Description
Binds a port for receiving or transmitting UDP.
- Parameter
port
Either a port number or the name of a service as listed in /etc/services.
- Parameter
address
Local address to bind to.
- Parameter
no_reuseaddr
If set to
1
, Pike will not set theSO_REUSEADDR
option on the UDP port.- Note
SO_REUSEADDR
is never applied when binding a random port (bind(0)
).In general,
SO_REUSEADDR
is not desirable on UDP ports. Unless used for receiving multicast, be sure to never bind a non-random port without settingno_reuseaddr
to1
.- Throws
Throws error when unable to bind port.
- Methodclose
bool
close()- Description
Closes an open UDP port.
- Note
This method was introduced in Pike 7.5.
- Methodconnect
bool
connect(string
address
,int
|string
port
)- Description
Establish an UDP connection.
This function connects an UDP socket previously created with
Stdio.UDP()
to a remote socket. Theaddress
is the IP name or number for the remote machine.- Returns
Returns
1
on success,0
(zero) otherwise.- Note
If the socket is in nonblocking mode, you have to wait for a write or close callback before you know if the connection failed or not.
- See also
bind()
,query_address()
- Methoddrop_membership
int
drop_membership(string
group
,void
|string
address
)- Description
Leave a multicast group.
- Parameter
group
group
contains the address of the multicast group the application wants to join. It must be a valid multicast address.- Parameter
address
address
is the address of the local interface with which the system should join to the multicast group. If not provided the system will select an appropriate interface.See also the Unix man page for setsocketopt IPPROTO_IP IP_DROP_MEMBERSHIP and IPPROTO_IPV6 IPV6_LEAVE_GROUP.
- Note
The
address
parameter is currently not supported for IPv6.- Note
This function did not support IPv6 in Pike 7.8 and earlier.
- See also
add_membership()
- Methodenable_broadcast
bool
enable_broadcast()- Description
Set the broadcast flag. If enabled then sockets receive packets sent to a broadcast address and they are allowed to send packets to a broadcast address.
- Returns
Returns
1
on success,0
(zero) otherwise.- Note
This is normally only avalable to root users.
- Methodenable_multicast
bool
enable_multicast(string
reply_address
)- Description
Set the local device for a multicast socket.
- Parameter
reply_address
Local address that should appear in the multicast packets.
See also the Unix man page for setsocketopt IPPROTO_IP IP_MULTICAST_IF and IPPROTO_IPV6 IPV6_MULTICAST_IF.
- Note
This function did not support IPv6 in Pike 7.8.
- Methoderrno
int
errno()- Description
Returns the error code for the last command on this object. Error code is normally cleared when a command is successful.
- Methodfd_factory
UDP
fd_factory()- Description
Factory creating
Stdio.UDP
objects.This function is called by
dup()
and other functions creating new UDP objects.The default implementation calls
object_program(this_object())()
to create the new object, and returns theUDP
inherit in it.- Note
Note that this function must return the
UDP
inherit in the object.- See also
dup()
,Stdio.File()->fd_factory()
- Methodquery_address
string
query_address()- Description
Returns the local address of a socket on the form "x.x.x.x port". If this file is not a socket, not connected or some other error occurs, zero is returned.
- Methodquery_backend
Pike.Backend
query_backend()- Description
Return the backend used for the read callback.
- See also
set_backend
- Methodquery_mtu
int
query_mtu()- Description
Get the Max Transfer Unit for the object (if any).
- Returns
-1
Returns
-1
if the object is not a socket or if the mtu is unknown.(1..)
Returns a positive value with the mtu on success.
- Note
The returned value is adjusted to take account for the IP and UDP headers, so that it should be usable without further adjustment unless further IP options are in use.
- Methodread
mapping
(string
:int
|string
) read()mapping
(string
:int
|string
) read(int
flag
)- Description
Read from the UDP socket.
Flag
flag
is a bitfield, 1 for out of band data and 2 for peek- Returns
mapping(string:int|string) in the form ([ "data" : string received data "ip" : string received from this ip "port" : int ...and this port ])
- See also
set_read_callback()
,MSG_OOB
,MSG_PEEK
- Methodsend
int
send(string
to
,int
|string
port
,string
message
)int
send(string
to
,int
|string
port
,string
message
,int
flags
)- Description
Send data to a UDP socket.
- Parameter
to
The recipient address. For
connect()
ed objects specifying a recipient of eitherUNDEFINED
or""
causes the default recipient to be used.- Parameter
port
The recipient port number. For
connect()
ed objects specifying port number0
casues the default recipient port to be used.- Parameter
flag
A flag bitfield with
1
for out of band data and2
for don't route flag.- Returns
(0..)
The number of bytes that were actually written.
(..-1)
Failed to send the
message
. Checkerrno()
for the cause. Common causes are:System.EMSGSIZE
The
message
is too large to send unfragmented.System.EWOULDBLOCK
The send buffers are full.
- Throws
Throws errors on invalid arguments and uninitialized object.
- Note
Versions of Pike prior to 8.1.5 threw errors also on EMSGSIZE (
"Too big message"
) and EWOULDBLOCK ("Message would block."
). These versions of Pike also did not update the object errno on this function failing.- Note
Versions of Pike prior to 8.1.13 did not support the default recipient for
connect()
ed objects.- See also
connect()
,errno()
,query_mtu()
- Methodset_backend
void
set_backend(Pike.Backend
backend
)- Description
Set the backend used for the read callback.
- Note
The backend keeps a reference to this object as long as there can be calls to the read callback, but this object does not keep a reference to the backend.
- See also
query_backend
- Methodset_buffer
void
set_buffer(int
bufsize
,string
mode
)void
set_buffer(int
bufsize
)- Description
Set internal socket buffer.
This function sets the internal buffer size of a socket or stream.
The second argument allows you to set the read or write buffer by specifying
"r"
or"w"
.- Note
It is not guaranteed that this function actually does anything, but it certainly helps to increase data transfer speed when it does.
- See also
open_socket()
,accept()
- Methodset_multicast_ttl
int
set_multicast_ttl(int
ttl
)- Description
Set the time-to-live value of outgoing multicast packets for this socket.
- Parameter
ttl
The number of router hops sent multicast packets should survive.
It is very important for multicast packets to set the smallest TTL possible. The default before calling this function is 1 which means that multicast packets don't leak from the local network unless the user program explicitly requests it.
See also the Unix man page for setsocketopt IPPROTO_IP IP_MULTICAST_TTL and IPPROTO_IPV6 IPV6_MULTICAST_HOPS.
- Note
This function did not support IPv6 in Pike 7.8 and earlier.
- See also
add_membership()
- Methodset_nonblocking
object
set_nonblocking(function
(:void
)|void
rcb
,function
(:void
)|void
wcb
)- Description
Sets this object to be nonblocking and the read and write callbacks.
- Methodset_type
UDP
set_type(int
sock_type
)UDP
set_type(int
sock_type
,int
family
)- Description
Sets socket type and protocol family.
- ConstantMSG_OOB
Class _Stdio._port
- Methodaccept
Stdio.File
accept()- Description
Get the first connection request waiting for this port and return it as a connected socket.
If no connection request is waiting and the port is in nonblocking mode (i.e. an accept callback is installed) then zero is returned. Otherwise this function waits until a connection has arrived.
In Pike 7.8 and later the returned object is created via
fd_factory()
.- Note
In Pike 7.7 and later the resulting file object will be assigned to the same backend as the port object.
- Methodbind
int
bind(int
|string
port
,void
|function
(:void
)accept_callback
,void
|string
ip
,void
|string
reuse_port
)- Description
Opens a socket and binds it to port number on the local machine. If the second argument is present, the socket is set to nonblocking and the callback funcition is called whenever something connects to it. The callback will receive the id for this port as argument and should typically call
accept
to establish a connection.If the optional argument
ip
is given,bind
will try to bind to an interface with that host name or IP number. Omitting this will bind to all available IPv4 addresses; specifying "::" will bind to all IPv4 and IPv6 addresses.If the OS supports TCP_FASTOPEN it is enabled automatically.
If the OS supports SO_REUSEPORT it is enabled if the fourth argument is true.
- Returns
1 is returned on success, zero on failure.
errno
provides further details about the error in the latter case.- See also
accept
,set_id
- Methodbind_unix
int
bind_unix(string
path
,void
|function
(:void
)accept_callback
)- Description
Opens a Unix domain socket at the given path in the file system. If the second argument is present, the socket is set to nonblocking and the callback funcition is called whenever something connects to it. The callback will receive the id for this port as argument and should typically call
accept
to establish a connection.- Returns
1 is returned on success, zero on failure.
errno
provides further details about the error in the latter case.- Note
This function is only available on systems that support Unix domain sockets.
- Note
path
had a quite restrictive length limit (~100 characters) prior to Pike 7.8.334.- See also
accept
,set_id
- Methodcreate
_Stdio._port_Stdio._port(
int
|string
port
,void
|function
(:void
)accept_callback
,void
|string
ip
)_Stdio._port_Stdio._port(
"stdin"
,void
|function
(:void
)accept_callback
)- Description
When called with an int or any string except
"stdin"
as first argument, this function does the same asbind()
would do with the same arguments.When called with
"stdin"
as argument, a socket is created out of the file descriptor 0. This is only useful if that actually IS a socket to begin with, and is equivalent to creating a port and initializing it withlisten_fd
(0).- See also
bind
,listen_fd
- Methoderrno
int
errno()- Description
If the last call done on this port failed, this function will return an integer describing what went wrong. Refer to your unix manual for further information.
- Methodfd_factory
protected
Stdio.Fd
fd_factory()- Description
Factory creating empty
Stdio.Fd
objects.The default implementation creates an empty
Stdio.Fd
object.
- Methodlisten_fd
int
listen_fd(int
fd
,void
|function
(:void
)accept_callback
)- Description
This function does the same as
bind
, except that instead of creating a new socket and bind it to a port, it expects the file descriptorfd
to be an already open port.- Note
This function is only for the advanced user, and is generally used when sockets are passed to Pike at exec time.
- See also
bind
,accept
- Methodquery_address
string
query_address()- Description
Get the address and port of the local socket end-point.
- Returns
This function returns the address and port of a socket end-point on the form
"x.x.x.x port"
(IPv4) or"x:x:x:x:x:x:x:x port"
(IPv6).If there is some error querying or formatting the address,
0
(zero) is returned anderrno()
will return the error code.- Throws
An error is thrown if the socket isn't bound.
- Methodquery_backend
Pike.Backend
query_backend()- Description
Return the backend used for the accept callback.
- See also
set_backend
- Methodquery_fd
int
query_fd()- Description
Returns the file descriptor number associated with this object.
- Methodquery_id
mixed
query_id()- Description
This function returns the id for this port. The id is normally the first argument to accept_callback.
- See also
set_id
- Methodset_accept_callback
void
set_accept_callback(function
(:void
)|void
accept_callback
)- Description
Change or remove the accept callback.
- Parameter
accept_callback
New accept callback.
- See also
bind()
,listen()
,set_id()
- Methodset_backend
void
set_backend(Pike.Backend
backend
)- Description
Set the backend used for the accept callback.
- Note
The backend keeps a reference to this object as long as the port is accepting connections, but this object does not keep a reference to the backend.
- See also
query_backend
- Methodaccept
Module _Stdio.IPPROTO
- Description
Module containing various IP-protocol options.
Module _Stdio.SOCK
- Description
Module containing constants for specifying socket options.