pike.git
/
src
/
program.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/program.c:1:
/* || This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information.
-
|| $Id: program.c,v 1.
709
2008/05/
29
16
:
32
:
55
grubba Exp $
+
|| $Id: program.c,v 1.
710
2008/05/
30
11
:
20
:
43
grubba Exp $
*/ #include "global.h" #include "program.h" #include "object.h" #include "dynamic_buffer.h" #include "pike_types.h" #include "stralloc.h" #include "las.h" #include "lex.h"
pike.git/src/program.c:1721:
/*! @decl constant this_program *! *! Builtin constant that evaluates to the current program. *! *! @seealso *! @[this], @[this_object()] */ /* If the identifier is recognized as one of the magic identifiers, * like "this", "this_program" or "`->" when preceded by ::, then a
-
* suitable node is returned, NULL otherwise. inherit_num is -1 when
-
*
accessing
all
inherits
(
i.e.
when
::
is
used
without any identifier
-
*
before
). */
+
* suitable node is returned, NULL otherwise.
+
*
+
*
inherit_num is -1 when
no specific inherit has been specified; ie
+
*
either
when
the
identifier has no prefix
(
colon_colon_ref
== 0) or
+
*
when
the identifier has the prefix
:: without any
preceding
identifier
+
*
(colon_colon_ref == 1
).
+
*/
struct node_s *program_magic_identifier (struct program_state *state, int state_depth, int inherit_num, struct pike_string *ident, int colon_colon_ref) { #if 0 fprintf (stderr, "magic_identifier (state, %d, %d, %s, %d)\n", state_depth, inherit_num, ident->str, colon_colon_ref); #endif
-
if (
!
inherit_num || (!TEST_COMPAT(7,6) && (inherit_num > 0))) {
+
if (
(
inherit_num
== -1)
|| (!TEST_COMPAT(7,6) && (inherit_num >
=
0))) {
if (ident == this_string) { /* Handle this. */ return mkthisnode(state->new_program, inherit_num); } /* Handle this_program */ if (ident == this_program_string) { node *n = mkefuncallnode("object_program", mkthisnode(state->new_program, inherit_num)); /* We know this expression is constant. */