[ Start > PikeDevel > C Modules > svalue ] [ Edit this Page | Show Page Versions | Show Raw Source ]


svalue - internal type for storing Pike values


The 'struct svalue' contains one Pike 'value', variables, arrays and the evaluator are all svalues. An svalue consists of three elements: type, subtype and a union containing the actual value. The type is a short which tells you what type the svalue is. The value is one of the following:

- T_ARRAY: When type is T_ARRAY, the array is stored in the 'array' member of the union. So if sval is the pointer to the svalue, you would use sval->u.array to access the actual array.

  • T_MAPPING: In this case, you use sval->u.mapping.

    - T_MULTISET: sval->u.multiset

    - T_OBJECT: sval->u.object

    - T_FUNCTION: Functions are a bit more difficult, sval->u.object is the object the function is in, and sval->subtype is the number of the function in that object.

    - T_PROGRAM: sval->u.program is the struct program you want.

    - T_STRING: sval->u.string

    - T_FLOAT: sval->u.float_number

    - T_INT: sval->u.integer, a special case is that sval->subtype is used in some cases to represent the value 'undefined'. This is what zero_type detects.

    There are lots of functions operating on svalues, so you shouldn't

have to do all that much stuff with them yourself. However, for now you do need to check the type and extract the proper member of the union yourself when writing your own C functions for Pike.



Powered by PikeWiki2 | Copyright © 2004 - 2009 | Pike is a trademark of Department of Computer and Information Science, Linköping University