xquery/XQuery__UserDefinedFunction.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 25 Jan 2016 16:35:43 +0000
changeset 298 9696f76605bd
parent 296 ea3dbc023c80
permissions -rw-r--r--
Added C:\MINGW\MSYS\1.0\bin to PATH when building expat. Some systems have it installed there (such as SWING Jenkins servers)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
235
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/xmlsuite/xquery' }"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: XQuery }"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
Function subclass:#UserDefinedFunction
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:'params body'
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'XQuery-Functions'
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
!UserDefinedFunction methodsFor:'accessing'!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
body:anAstEnclosedExpr
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
    bodyNode := anAstEnclosedExpr expr
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    "Created: / 28-12-2006 / 14:06:17 / janfrog"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
    "Modified: / 29-12-2006 / 15:55:54 / janfrog"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
    "Modified: / 18-09-2008 / 17:08:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
params
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
    ^ params
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
    "Created: / 28-12-2006 / 16:27:19 / janfrog"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
params:something
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
    params := something.
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
    "Created: / 28-12-2006 / 16:27:19 / janfrog"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
! !
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
!UserDefinedFunction methodsFor:'function API'!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
evaluateInContext:context withParameters:parameters forInterpreter:interpreter 
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
    |retval|
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
260
e891b6accf09 XQuery Context chaining
kursj1
parents: 241
diff changeset
    40
    interpreter context:
e891b6accf09 XQuery Context chaining
kursj1
parents: 241
diff changeset
    41
        (XQueryContext new 
e891b6accf09 XQuery Context chaining
kursj1
parents: 241
diff changeset
    42
            dataContextEmpty;
e891b6accf09 XQuery Context chaining
kursj1
parents: 241
diff changeset
    43
            parent: context;
e891b6accf09 XQuery Context chaining
kursj1
parents: 241
diff changeset
    44
            compiledCode: self;
e891b6accf09 XQuery Context chaining
kursj1
parents: 241
diff changeset
    45
            yourself).
235
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    self params with:parameters
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
        do:[:formalParam :realParam | 
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
            interpreter 
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
                bindVar:formalParam name
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
                to:realParam
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
                inContext:interpreter context
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
        ].
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
    retval := interpreter visit:self body.
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    interpreter context:context.
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
     "
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
     self params do:[:formalParam |
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
     interpreter unbindVar:formalParam name inContext:context
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
     ].
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    "
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    ^ retval
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    "Created: / 28-08-2007 / 22:54:26 / janfrog"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
    "Modified: / 18-09-2008 / 15:43:35 / Jan Vrany <vranyj1@fel.cvut.cz>"
260
e891b6accf09 XQuery Context chaining
kursj1
parents: 241
diff changeset
    64
    "Modified: / 03-09-2010 / 17:46:59 / Jan Kurs <kurs.jan@post.cz>"
235
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
localName
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    ^name localName
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    "Created: / 28-12-2006 / 16:27:56 / janfrog"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
namespaceURI
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    ^name ns
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    "Created: / 28-12-2006 / 16:27:56 / janfrog"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
! !
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
!UserDefinedFunction class methodsFor:'documentation'!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
241
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 235
diff changeset
    83
version_SVN
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 235
diff changeset
    84
    ^ '$Id$'
235
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
! !