Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 71d40963b505df4524269198e237b3e3 > files > 159

virtuoso-opensource-doc-6.1.4-2.fc14.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
 <head profile="http://internetalchemy.org/2003/02/profile">
  <link rel="foaf" type="application/rdf+xml" title="FOAF" href="http://www.openlinksw.com/dataspace/uda/about.rdf" />
  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
  <meta name="dc.title" content="Function: Virtuoso Server Extension Interface (VSEI) functions - Virtuoso Functions Guide" />
  <meta name="dc.subject" content="Function: Virtuoso Server Extension Interface (VSEI) functions - Virtuoso Functions Guide" />
  <meta name="dc.creator" content="OpenLink Software Documentation Team ;&#10;" />
  <meta name="dc.copyright" content="OpenLink Software, 1999 - 2009" />
  <link rel="top" href="index.html" title="OpenLink Virtuoso Universal Server: Documentation" />
  <link rel="search" href="/doc/adv_search.vspx" title="Search OpenLink Virtuoso Universal Server: Documentation" />
  <link rel="parent" href="functions.html" title="Chapter Contents" />
  <link rel="prev" href="appendixa.html" title="Appendix" />
  <link rel="next" href="functions.html#.html" title="" />
  <link rel="shortcut icon" href="../images/misc/favicon.ico" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" href="doc.css" />
  <link rel="stylesheet" type="text/css" href="/doc/translation.css" />
  <title>Function: Virtuoso Server Extension Interface (VSEI) functions - Virtuoso Functions Guide</title>
  <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" />
  <meta name="author" content="OpenLink Software Documentation Team ;&#10;" />
  <meta name="copyright" content="OpenLink Software, 1999 - 2009" />
  <meta name="keywords" content="" />
  <meta name="GENERATOR" content="OpenLink XSLT Team" />
 </head>
 <body>
  <div id="header">
    <a name="fn_bif_arg" />
    <img src="../images/misc/logo.jpg" alt="" />
    <h1>22. Virtuoso Functions Guide - Virtuoso Server Extension Interface (VSEI) functions</h1>
  </div>
  <div id="navbartop">
   <div>
      <a class="link" href="functions.html">Chapter Contents</a> | <a class="link" href="functions.html#bpel" title="BPEL APIs">Prev</a> | <a class="link" href="functions.html#compression" title="Compression">Next</a>
   </div>
  </div>
  <div id="currenttoc">
   <form method="post" action="/doc/adv_search.vspx">
    <div class="search">Keyword Search: <br />
        <input type="text" name="q" /> <input type="submit" name="go" value="Go" />
    </div>
   </form>
   <div>
      <a href="http://www.openlinksw.com/">www.openlinksw.com</a>
   </div>
   <div>
      <a href="http://docs.openlinksw.com/">docs.openlinksw.com</a>
   </div>
    <br />
   <div>
      <a href="index.html">Book Home</a>
   </div>
    <br />
   <div>
      <a href="contents.html">Contents</a>
   </div>
   <div>
      <a href="preface.html">Preface</a>
   </div>
    <br />
   <div>
      <a class="selected" href="functions.html">Virtuoso Functions Guide</a>
   </div>
    <br />
   <div>
      <a href="functions.html#admin">Administration</a>
   </div>
   <div>
      <a href="functions.html#aggr">Aggregate Functions</a>
   </div>
   <div>
      <a href="functions.html#array">Array Manipulation</a>
   </div>
   <div>
      <a href="functions.html#bpel">BPEL APIs</a>
   </div>
   <div>
      <a href="functions.html#backup">Backup</a>
   </div>
   <div>
      <a href="functions.html#compression">Compression</a>
   </div>
   <div>
      <a href="functions.html#cursors">Cursor</a>
   </div>
   <div>
      <a href="functions.html#time">Date &amp; Time Manipulation</a>
   </div>
   <div>
      <a href="functions.html#debug">Debug</a>
   </div>
   <div>
      <a href="functions.html#dict">Dictionary Manipulation</a>
   </div>
   <div>
      <a href="functions.html#encoding">Encoding &amp; Decoding</a>
   </div>
   <div>
      <a href="functions.html#file">File Manipulation</a>
   </div>
   <div>
      <a href="functions.html#ft">Free Text</a>
   </div>
   <div>
      <a href="functions.html#hash">Hashing / Cryptographic</a>
   </div>
   <div>
      <a href="functions.html#ldap">LDAP</a>
   </div>
   <div>
      <a href="functions.html#localization">Locale</a>
   </div>
   <div>
      <a href="functions.html#mail">Mail</a>
   </div>
   <div>
      <a href="functions.html#misc">Miscellaneous</a>
   </div>
   <div>
      <a href="functions.html#number">Number</a>
   </div>
   <div>
      <a href="functions.html#phrz">Phrases</a>
   </div>
   <div>
      <a href="functions.html#rdf">RDF data</a>
   </div>
   <div>
      <a href="functions.html#rmt">Remote SQL Data Source</a>
   </div>
   <div>
      <a href="functions.html#repl">Replication</a>
   </div>
   <div>
      <a href="functions.html#soap">SOAP</a>
   </div>
   <div>
      <a href="functions.html#sql">SQL</a>
   </div>
   <div>
      <a href="functions.html#string">String</a>
   </div>
   <div>
      <a href="functions.html#txn">Transaction</a>
   </div>
   <div>
      <a href="functions.html#type">Type Mapping</a>
   </div>
   <div>
      <a href="functions.html#uddi">UDDI</a>
   </div>
   <div>
      <a href="functions.html#udt">User Defined Types &amp; The CLR</a>
   </div>
   <div>
      <a href="functions.html#vad">VAD</a>
   </div>
   <div>
      <a href="functions.html#jvmpl">Virtuoso Java PL API</a>
   </div>
   <div>
      <a class="selected" href="functions.html#bif">Virtuoso Server Extension Interface (VSEI)</a>
   </div>
   <div class="selected">
    <div>
        <a class="selected" href="fn_bif_arg.html">virtuoso server exte...</a>
    </div>
   </div>
   <div>
      <a href="functions.html#ws">Web &amp; Internet</a>
   </div>
   <div>
      <a href="functions.html#xml">XML</a>
   </div>
   <div>
      <a href="functions.html#XPATH">XPATH &amp; XQUERY</a>
   </div>
    <br />
   <div>
      <a href="functionidx.html">Functions Index</a>
   </div>
    <br />
  </div>
  <div id="text">
    <h2>Virtuoso Server Extension Interface (VSEI) functions</h2>
    <div class="refpurpose">Get parameters for built in function</div>
    <div class="funcsynopsis">
        <span class="funcdef">caddr_t <span class="function">bif_arg</span>
      </span>
        (<span class="paramdef">caddr_t * <span class="parameter">qst</span>
      </span>, 
        <span class="paramdef">state_slot_t ** <span class="parameter">args</span>
      </span>, 
        <span class="paramdef">int <span class="parameter">nth</span>
      </span>, 
        <span class="paramdef">char * <span class="parameter">func</span>
      </span>);
      </div>
    <div class="funcsynopsis">
        <span class="funcdef">caddr_t <span class="function">bif_array_arg</span>
      </span>
        (<span class="paramdef">caddr_t * <span class="parameter">qst</span>
      </span>, 
        <span class="paramdef">state_slot_t ** <span class="parameter">args</span>
      </span>, 
        <span class="paramdef">int <span class="parameter">nth</span>
      </span>, 
        <span class="paramdef">char * <span class="parameter">func</span>
      </span>);
      </div>
    <div class="funcsynopsis">
		<span class="funcdef">caddr_t <span class="function">bif_array_or_null_arg</span>
      </span>
		(<span class="paramdef">caddr_t * <span class="parameter">qst</span>
      </span>, 
		<span class="paramdef">state_slot_t ** <span class="parameter">args</span>
      </span>, 
		<span class="paramdef">int <span class="parameter">nth</span>
      </span>, 
		<span class="paramdef">char * <span class="parameter">func</span>
      </span>);
      </div>
    <div class="funcsynopsis">
		<span class="funcdef">caddr_t <span class="function">bif_bin_arg</span>
      </span>
		(<span class="paramdef">caddr_t * <span class="parameter">qst</span>
      </span>, 
		<span class="paramdef">state_slot_t ** <span class="parameter">args</span>
      </span>, 
		<span class="paramdef">int <span class="parameter">nth</span>
      </span>, 
		<span class="paramdef">char * <span class="parameter">func</span>
      </span>);
      </div>
    <div class="funcsynopsis">
		<span class="funcdef">caddr_t <span class="function">bif_double_arg</span>
      </span>
		(<span class="paramdef">caddr_t * <span class="parameter">qst</span>
      </span>, 
		<span class="paramdef">state_slot_t ** <span class="parameter">args</span>
      </span>, 
		<span class="paramdef">int <span class="parameter">nth</span>
      </span>, 
		<span class="paramdef">char * <span class="parameter">func</span>
      </span>);
      </div>
    <div class="funcsynopsis">
		<span class="funcdef">caddr_t <span class="function">bif_entity_arg</span>
      </span>
		(<span class="paramdef">caddr_t * <span class="parameter">qst</span>
      </span>, 
		<span class="paramdef">state_slot_t ** <span class="parameter">args</span>
      </span>, 
		<span class="paramdef">int <span class="parameter">nth</span>
      </span>, 
		<span class="paramdef">char * <span class="parameter">func</span>
      </span>);
      </div>
    <div class="funcsynopsis">
		<span class="funcdef">caddr_t <span class="function">bif_float_arg</span>
      </span>
		(<span class="paramdef">caddr_t * <span class="parameter">qst</span>
      </span>, 
		<span class="paramdef">state_slot_t ** <span class="parameter">args</span>
      </span>, 
		<span class="paramdef">int <span class="parameter">nth</span>
      </span>, 
		<span class="paramdef">char * <span class="parameter">func</span>
      </span>);
      </div>
    <div class="funcsynopsis">
		<span class="funcdef">caddr_t <span class="function">bif_long_arg</span>
      </span>
		(<span class="paramdef">caddr_t * <span class="parameter">qst</span>
      </span>, 
		<span class="paramdef">state_slot_t ** <span class="parameter">args</span>
      </span>, 
		<span class="paramdef">int <span class="parameter">nth</span>
      </span>, 
		<span class="paramdef">char * <span class="parameter">func</span>
      </span>);
      </div>
    <div class="funcsynopsis">
		<span class="funcdef">caddr_t <span class="function">bif_long_or_char_arg</span>
      </span>
		(<span class="paramdef">caddr_t * <span class="parameter">qst</span>
      </span>, 
		<span class="paramdef">state_slot_t ** <span class="parameter">args</span>
      </span>, 
		<span class="paramdef">int <span class="parameter">nth</span>
      </span>, 
		<span class="paramdef">char * <span class="parameter">func</span>
      </span>);
      </div>
    <div class="funcsynopsis">
		<span class="funcdef">caddr_t <span class="function">bif_string_arg</span>
      </span>
		(<span class="paramdef">state_slot_t ** <span class="parameter">args</span>
      </span>, 
		<span class="paramdef">int <span class="parameter">nth</span>
      </span>, 
		<span class="paramdef">char * <span class="parameter">func</span>
      </span>);
      </div>
    <div class="funcsynopsis">
		<span class="funcdef">caddr_t <span class="function">bif_string_or_null_arg</span>
      </span>
		(<span class="paramdef">caddr_t * <span class="parameter">qst</span>
      </span>, 
		<span class="paramdef">state_slot_t ** <span class="parameter">args</span>
      </span>, 
		<span class="paramdef">int <span class="parameter">nth</span>
      </span>, 
		<span class="paramdef">char * <span class="parameter">func</span>
      </span>);
      </div>
    <div class="funcsynopsis">
		<span class="funcdef">caddr_t <span class="function">bif_string_or_wide_or_null_arg</span>
      </span>
		(<span class="paramdef">caddr_t * <span class="parameter">qst</span>
      </span>, 
		<span class="paramdef">state_slot_t ** <span class="parameter">args</span>
      </span>, 
		<span class="paramdef">int <span class="parameter">nth</span>
      </span>, 
		<span class="paramdef">char * <span class="parameter">func</span>
      </span>);
      </div>
    <div class="funcsynopsis">
		<span class="funcdef">caddr_t <span class="function">bif_strses_arg</span>
      </span>
		(<span class="paramdef">caddr_t * <span class="parameter">qst</span>
      </span>, 
		<span class="paramdef">state_slot_t ** <span class="parameter">args</span>
      </span>, 
		<span class="paramdef">int <span class="parameter">nth</span>
      </span>, 
		<span class="paramdef">char * <span class="parameter">func</span>
      </span>);
      </div>
  
  
  
  <div class="refsect1">
      <div class="refsect1title">Description</div>
    <p>The bif_...._arg functions are used in the Virtuoso shared object. They allow
    customization of the Virtuoso server.
    They are written in C code, and linked with the Virtuoso shared object.</p>
    <p>The _or_null_ variants of these functions represent the SQL null
    value as a 00 pointer, even though getting the same argument with bif_arg()
    would return a box with the DV_DB_NULL tag.
    All number functions will coerce other types of numbers to the result type. 
    All array argument functions will accept any type of array. It is up to the 
    VSE itself to distinguish.</p>
    <p>Virtuoso Server Extensions (VSEs) were formally referred to as Built-In Functions (BIFs).</p>
  </div>

  <div class="refsect1">
    <div class="refsect1title">Parameters</div>
    <div class="refsect2">
      <span class="refsect2title">qst – </span>
      Query instance.
    </div>
    <div class="refsect2">
      <span class="refsect2title">args – </span>
      input arguments.
    </div>
    <div class="refsect2">
      <span class="refsect2title">nth – </span>
      which argument to retrieve  (zero indexed).
    </div>
    <div class="refsect2">
      <span class="refsect2title">func – </span>
      name of calling function. This will be printed in the SQL error message.
    </div>
  </div>

  <div class="refsect1">
      <div class="refsect1title">Return Values</div>
    <p>On success, return a valid pointer to the data retrieved, or NULL.
    A SQL error is generated if the datatype is not valid.
    The bif_arg is the only function not to have validation of a data type.</p>
    <p>The values returned by any of these belong to the query instance, and the bif 
    is not authorized to modify or free them.</p>
      <table class="data">
        
        
  	  <tr>
          <th class="data">Function</th>
          <th class="data">Type validated and returned</th>
        </tr>
        
	
	  <tr>
	    <td class="data">bif_arg</td>
	    <td class="data">Any type of data. (no data type check)</td>
	  </tr>
	  <tr>
	    <td class="data">bif_array_arg</td>
	    <td class="data">string or array data</td>
	  </tr>
	  <tr>
	    <td class="data">bif_array_or_null_arg</td>
	    <td class="data">string or array or NULL data</td>
	  </tr>
	  <tr>
	    <td class="data">bif_bin_arg</td>
	    <td class="data">binary data</td>
	  </tr>
	  <tr>
	    <td class="data">bif_double_arg</td>
	    <td class="data">double data</td>
	  </tr>
	  <tr>
	    <td class="data">bif_entity_arg</td>
	    <td class="data">XML entity data</td>
	  </tr>
	  <tr>
	    <td class="data">bif_float_arg</td>
	    <td class="data">float data</td>
	  </tr>
	  <tr>
	    <td class="data">bif_long_arg</td>
	    <td class="data">long data</td>
	  </tr>
	  <tr>
	    <td class="data">bif_long_or_char_arg</td>
	    <td class="data">long or character data</td>
	  </tr>
	  <tr>
	    <td class="data">bif_string_arg</td>
	    <td class="data">string data</td>
	  </tr>
	  <tr>
	    <td class="data">bif_string_or_null_arg</td>
	    <td class="data">string or null data</td>
	  </tr>
	  <tr>
	    <td class="data">bif_string_or_wide_or_null_arg</td>
	    <td class="data">strings, widestrings or null data</td>
	  </tr>
	  <tr>
	    <td class="data">bif_strses_arg</td>
	    <td class="data">string session data</td>
	  </tr>
	
	
      </table>
      <br />
  </div>
  <div class="refsect1">
      <div class="refsect1title">Examples</div>
    <a name="ex_bif_len" />
      <div class="example">
      <div class="exampletitle">Creating a function my_length()</div>
      <p>A function called <span class="computeroutput">my_length</span> written by developers, may process
      a string argument by making a call to
      <span class="computeroutput">bif_string_arg</span>.</p>
    </div>
  </div>
</div>
  <div id="footer">
    <div>Copyright© 1999 - 2009 OpenLink Software All rights reserved.</div>
   <div id="validation">
    <a href="http://validator.w3.org/check/referer">
        <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" />
    </a>
    <a href="http://jigsaw.w3.org/css-validator/">
        <img src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" height="31" width="88" />
    </a>
   </div>
  </div>
 </body>
</html>