📄 query_8h-source.html
字号:
00651 <span class="keyword">inline</span> dbQuery& operator,(dbQuery& query,
00652 <a class="code" href="classdbArray.html">dbArray</a>< <a class="code" href="classdbReference.html">dbReference<T></a> ><span class="keyword">const</span>* <span class="keyword">const</span>& value)
00653 {
00654 <span class="keywordflow">return</span> query.<a class="code" href="classdbQuery.html#dbQuerya2">append</a>(dbQueryElement::qVarArrayOfRefPtr, &value,
00655 &T::dbDescriptor);
00656 }
00657
00658 <span class="keyword">template</span><<span class="keyword">class</span> T>
00659 <span class="keyword">inline</span> dbQuery& add(dbQuery& query, <a class="code" href="classdbReference.html">dbReference<T></a> <span class="keyword">const</span>& value) {
00660 <span class="keywordflow">return</span> query.<a class="code" href="classdbQuery.html#dbQuerya2">append</a>(dbQueryElement::qVarReference, &value, &T::dbDescriptor);
00661 }
00662
00663 <span class="keyword">template</span><<span class="keyword">class</span> T>
00664 <span class="keyword">inline</span> dbQuery& add(dbQuery& query, <a class="code" href="classdbArray.html">dbArray</a>< <a class="code" href="classdbReference.html">dbReference<T></a> > <span class="keyword">const</span>& value) {
00665 <span class="keywordflow">return</span> query.<a class="code" href="classdbQuery.html#dbQuerya2">append</a>(dbQueryElement::qVarArrayOfRef, &value,
00666 &T::dbDescriptor);
00667 }
00668
00669 <span class="keyword">template</span><<span class="keyword">class</span> T>
00670 <span class="keyword">inline</span> dbQuery& add(dbQuery& query, <a class="code" href="classdbArray.html">dbArray</a>< <a class="code" href="classdbReference.html">dbReference<T></a> ><span class="keyword">const</span>* <span class="keyword">const</span>& value) {
00671 <span class="keywordflow">return</span> query.<a class="code" href="classdbQuery.html#dbQuerya2">append</a>(dbQueryElement::qVarArrayOfRefPtr, &value, &T::dbDescriptor);
00672 }
00673 <span class="preprocessor">#endif</span>
00674 <span class="preprocessor"></span>
00675 <span class="preprocessor">#define USER_FUNC(f) static dbUserFunction f##_descriptor(&f, (char*)#f)</span>
00676 <span class="preprocessor"></span>
00677 <span class="keyword">struct </span>dbInheritedAttribute;
00678 <span class="keyword">union </span>dbSynthesizedAttribute;
00679
<a name="l00684"></a><a class="code" href="classdbUserFunctionArgument.html">00684</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY dbUserFunctionArgument {
00685 <span class="keyword">public</span>:
00686 <span class="keyword">enum</span> dbArgumentType {
00687 atInteger,
00688 atBoolean,
00689 atString,
00690 atReal,
00691 atReference,
00692 atRawBinary
00693 };
00694 dbArgumentType type;
00695 <span class="keyword">union </span>{
00696 real8 realValue;
00697 db_int8 intValue;
00698 <span class="keywordtype">bool</span> boolValue;
00699 <span class="keywordtype">char</span> <span class="keyword">const</span>* strValue;
00700 oid_t oidValue;
00701 <span class="keywordtype">void</span>* rawValue;
00702 } u;
00703
00704 <span class="keyword">private</span>:
00705 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbDatabase.html">dbDatabase</a>;
00706 dbUserFunctionArgument(dbExprNode* expr,
00707 dbInheritedAttribute& iattr,
00708 dbSynthesizedAttribute& sattr,
00709 <span class="keywordtype">int</span> i);
00710 };
00711
<a name="l00720"></a><a class="code" href="classdbUserFunction.html">00720</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY dbUserFunction {
00721 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbDatabase.html">dbDatabase</a>;
00722 <span class="keyword">friend</span> <span class="keyword">class </span>dbCompiler;
00723
00724 <span class="keywordtype">void</span>* fptr;
00725 <span class="keywordtype">char</span>* fname;
00726
00727 dbUserFunction* next;
00728 <span class="keyword">static</span> dbUserFunction* list;
00729
00730 <span class="keyword">enum</span> funcType {
00731 fInt2Bool,
00732 fReal2Bool,
00733 fStr2Bool,
00734 fInt2Int,
00735 fReal2Int,
00736 fStr2Int,
00737 fInt2Real,
00738 fReal2Real,
00739 fStr2Real,
00740 fInt2Str,
00741 fReal2Str,
00742 fStr2Str,
00743 fArg2Bool,
00744 fArg2Int,
00745 fArg2Real,
00746 fArg2Str,
00747 fArgArg2Bool,
00748 fArgArg2Int,
00749 fArgArg2Real,
00750 fArgArg2Str,
00751 fArgArgArg2Bool,
00752 fArgArgArg2Int,
00753 fArgArgArg2Real,
00754 fArgArgArg2Str
00755 };
00756 <span class="keywordtype">int</span> type;
00757
00758 <span class="keywordtype">void</span> bind(<span class="keywordtype">char</span>* name, <span class="keywordtype">void</span>* f, funcType ftype);
00759
00760 <span class="keyword">public</span>:
00761
00762 <span class="keyword">static</span> dbUserFunction* find(<span class="keywordtype">char</span> <span class="keyword">const</span>* name) {
00763 <span class="keywordflow">for</span> (dbUserFunction* func = list; func != NULL; func = func-><a class="code" href="classdbUserFunction.html#dbUserFunctiono2">next</a>) {
00764 <span class="keywordflow">if</span> (name == func-><a class="code" href="classdbUserFunction.html#dbUserFunctiono1">fname</a>) {
00765 <span class="keywordflow">return</span> func;
00766 }
00767 }
00768 <span class="keywordflow">return</span> NULL;
00769 }
00770
00771 <span class="keywordtype">int</span> getParameterType();
00772
00773 <span class="keywordtype">int</span> getNumberOfParameters();
00774
00775 dbUserFunction(<span class="keywordtype">bool</span> (*f)(db_int8), <span class="keywordtype">char</span>* name) {
00776 bind(name, (<span class="keywordtype">void</span>*)f, fInt2Bool);
00777 }
00778 dbUserFunction(<span class="keywordtype">bool</span> (*f)(real8), <span class="keywordtype">char</span>* name) {
00779 bind(name, (<span class="keywordtype">void</span>*)f, fReal2Bool);
00780 }
00781 dbUserFunction(<span class="keywordtype">bool</span> (*f)(<span class="keywordtype">char</span> <span class="keyword">const</span>*), <span class="keywordtype">char</span>* name) {
00782 bind(name, (<span class="keywordtype">void</span>*)f, fStr2Bool);
00783 }
00784 dbUserFunction(db_int8 (*f)(db_int8), <span class="keywordtype">char</span>* name) {
00785 bind(name, (<span class="keywordtype">void</span>*)f, fInt2Int);
00786 }
00787 dbUserFunction(db_int8 (*f)(real8), <span class="keywordtype">char</span>* name) {
00788 bind(name, (<span class="keywordtype">void</span>*)f, fReal2Int);
00789 }
00790 dbUserFunction(db_int8 (*f)(<span class="keywordtype">char</span> <span class="keyword">const</span>*), <span class="keywordtype">char</span>* name) {
00791 bind(name, (<span class="keywordtype">void</span>*)f, fStr2Int);
00792 }
00793 dbUserFunction(real8 (*f)(db_int8), <span class="keywordtype">char</span>* name) {
00794 bind(name, (<span class="keywordtype">void</span>*)f, fInt2Real);
00795 }
00796 dbUserFunction(real8 (*f)(real8), <span class="keywordtype">char</span>* name) {
00797 bind(name, (<span class="keywordtype">void</span>*)f, fReal2Real);
00798 }
00799 dbUserFunction(real8 (*f)(<span class="keywordtype">char</span> <span class="keyword">const</span>*), <span class="keywordtype">char</span>* name) {
00800 bind(name, (<span class="keywordtype">void</span>*)f, fStr2Real);
00801 }
00802 dbUserFunction(<span class="keywordtype">char</span>* (*f)(db_int8), <span class="keywordtype">char</span>* name) {
00803 bind(name, (<span class="keywordtype">void</span>*)f, fInt2Str);
00804 }
00805 dbUserFunction(<span class="keywordtype">char</span>* (*f)(real8), <span class="keywordtype">char</span>* name) {
00806 bind(name, (<span class="keywordtype">void</span>*)f, fReal2Str);
00807 }
00808 dbUserFunction(<span class="keywordtype">char</span>* (*f)(<span class="keywordtype">char</span> <span class="keyword">const</span>*), <span class="keywordtype">char</span>* name) {
00809 bind(name, (<span class="keywordtype">void</span>*)f, fStr2Str);
00810 }
00811
00812
00813 dbUserFunction(<span class="keywordtype">bool</span> (*f)(dbUserFunctionArgument&), <span class="keywordtype">char</span>* name) {
00814 bind(name, (<span class="keywordtype">void</span>*)f, fArg2Bool);
00815 }
00816 dbUserFunction(<span class="keywordtype">char</span>* (*f)(dbUserFunctionArgument&), <span class="keywordtype">char</span>* name) {
00817 bind(name, (<span class="keywordtype">void</span>*)f, fArg2Str);
00818 }
00819 dbUserFunction(db_int8 (*f)(dbUserFunctionArgument&), <span class="keywordtype">char</span>* name) {
00820 bind(name, (<span class="keywordtype">void</span>*)f, fArg2Int);
00821 }
00822 dbUserFunction(real8 (*f)(dbUserFunctionArgument&), <span class="keywordtype">char</span>* name) {
00823 bind(name, (<span class="keywordtype">void</span>*)f, fArg2Real);
00824 }
00825
00826 dbUserFunction(<span class="keywordtype">bool</span> (*f)(dbUserFunctionArgument&, dbUserFunctionArgument&), <span class="keywordtype">char</span>* name) {
00827 bind(name, (<span class="keywordtype">void</span>*)f, fArgArg2Bool);
00828 }
00829 dbUserFunction(<span class="keywordtype">char</span>* (*f)(dbUserFunctionArgument&, dbUserFunctionArgument&), <span class="keywordtype">char</span>* name) {
00830 bind(name, (<span class="keywordtype">void</span>*)f, fArgArg2Str);
00831 }
00832 dbUserFunction(db_int8 (*f)(dbUserFunctionArgument&, dbUserFunctionArgument&), <span class="keywordtype">char</span>* name) {
00833 bind(name, (<span class="keywordtype">void</span>*)f, fArgArg2Int);
00834 }
00835 dbUserFunction(real8 (*f)(dbUserFunctionArgument&, dbUserFunctionArgument&), <span class="keywordtype">char</span>* name) {
00836 bind(name, (<span class="keywordtype">void</span>*)f, fArgArg2Real);
00837 }
00838
00839
00840 dbUserFunction(<span class="keywordtype">bool</span> (*f)(dbUserFunctionArgument&, dbUserFunctionArgument&, dbUserFunctionArgument&), <span class="keywordtype">char</span>* name) {
00841 bind(name, (<span class="keywordtype">void</span>*)f, fArgArgArg2Bool);
00842 }
00843 dbUserFunction(<span class="keywordtype">char</span>* (*f)(dbUserFunctionArgument&, dbUserFunctionArgument&, dbUserFunctionArgument&), <span class="keywordtype">char</span>* name) {
00844 bind(name, (<span class="keywordtype">void</span>*)f, fArgArgArg2Str);
00845 }
00846 dbUserFunction(db_int8 (*f)(dbUserFunctionArgument&, dbUserFunctionArgument&, dbUserFunctionArgument&), <span class="keywordtype">char</span>* name) {
00847 bind(name, (<span class="keywordtype">void</span>*)f, fArgArgArg2Int);
00848 }
00849 dbUserFunction(real8 (*f)(dbUserFunctionArgument&, dbUserFunctionArgument&, dbUserFunctionArgument&), <span class="keywordtype">char</span>* name) {
00850 bind(name, (<span class="keywordtype">void</span>*)f, fArgArgArg2Real);
00851 }
00852
00853 ~dbUserFunction();
00854 };
00855
00856 END_FASTDB_NAMESPACE
00857
00858 <span class="preprocessor">#endif</span>
00859 <span class="preprocessor"></span>
00860
00861
</pre></div><hr><address style="align: right;"><small>Generated on Thu Feb 14 12:42:30 2008 for FastDB by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.2.18 </small></address>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -