Files
cdev-1.7.2n/doc/html/cdevReference.html
2022-12-13 12:44:04 +01:00

8151 lines
295 KiB
HTML
Executable File

<! This document generated using mif2html Version 1.0 - Walt Akers - 1996 !>
<head>
<title>CDEV Documentation</title>
</head>
<body bgcolor="#E0E0FF">
<body>
<! ************************ FILE : cdevReferenceTITLE.mif *****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start ADDRESS ***!><font size=+12 color=Black><strong><em>
CDEV Reference Guide
<!*** Finish ADDRESS ***!></p></strong></em></font>
<!*** Start ADDRESS-VERSION ***!><font size=+2 color=Black>
</p>
Chip Watson, Jie Chen, Danjin Wu, Walt Akers
</p>
</p>
Version 1.5 - December 9, 1996
</p>
</p>
TJNAF - Thomas Jefferson National Accelerator Facility
<!*** Finish ADDRESS-VERSION ***!></p></font>
</td></tr>
</table>
<! *************************** TABLE OF CONTENTS ****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top align=center>
<!*** Start CLASS-TOC-TITLE ***!><font size=+3><strong>
Table of Contents
<!*** Finish CLASS-TOC-TITLE ***!></p></strong></font>
</td></tr>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<table>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
1.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF1">The cdevCallback Class</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF2">Overview of the cdevCallback Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF3">Public Methods of the cdevCallback Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF4">cdevCallback</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF5">callbackFunction </a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF6">userarg </a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF7">operator ==</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF8">operator !=</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF9">fireCallback</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF10">isTransactionDone</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
2.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF11">The cdevCollection Class</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF12">Overview of the cdevCollection Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF13">Public Methods of the cdevCollection Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF14">cdevCollection</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF15">~cdevCollection</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF16">getRequestObject</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF17">attachRef/attachPtr</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF18">detach</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF19">className</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF20">add</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF21">add</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF22">add</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF23">add</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF24">addRegexp</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF25">remove</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF26">remove</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF27">remove</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF28">remove</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF29">removeRegexp</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
3.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF30">The cdevCollectionRequest Class</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF31">Overview of the cdevCollection Request Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF32">Public Methods of the cdevCollection Request Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF33">constructor</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF34">destructor</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF35">attachPtr</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF36">className</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF37">resultCodeTag</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
4.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF38">The cdevData Class</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF39">Overview of the cdevData Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF40">Public Methods of the cdevData Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF41">tagC2I</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF42">tagI2C</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF43">insertTag</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF44">addTagCallback</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF45">delTagCallback</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF46">readTagTable</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF47">Operator =</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF48">Cast operators</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF49">Operator ==</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF50">Operator !=</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF51">asciiDump</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF52">xdrSize</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF53">xdrExport</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF54">xdrExport</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF55">xdrImport</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF56">remove</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF57">changeTag</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF58">getType</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF59">getDim</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF60">getElems</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF61">getBounds</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF62">setBounds</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF63">insert (<em>scalar</em>)</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF64">insert (array)</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF65">insert (character string)</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF66">get</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF67">get (character string)</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF68">find</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
5.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF69">The cdevDevice Class</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF70">Overview of the cdevDevice Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF71">Public Methods of the cdevDevice Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF72">attachRef</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF73">attachPtr</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF74">detach</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF75">detach</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF76">getRequestObject</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF77">name</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF78">system</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF79">setContext</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF80">getContext</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF81">setPrivate</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF82">getPrivate</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF83">send</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF84">sendNoBlock</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF85">sendCallback</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
6.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF86">The cdevError Class</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF87">Overview of the cdevError Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF88">Public Methods of the cdevError Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF89">autoErrorOn</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF90">autoErrorOff</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF91">reportError</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF92">setErrorHandler</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF93">setThreshold </a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
7.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF94">The cdevGroup Class</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF95">Overview of the cdevGroup Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF96">Public Methods of the cdevGroup Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF97">cdevGroup</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF98">start</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF99">end</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF100">flush</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF101">poll</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF102">pend</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF103">pend</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF104">allFinished</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF105">status</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF106">execDeferred</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF107">execImmediate</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF108">executionMode</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF109">readyToExec</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
8.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF110">The cdevIOContext Class</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF111">Overview of the cdevIOContext Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF112">Public Methods of the cdevIOContext Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF113">getContext</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF114">setContext</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF115">getPrivate</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF116">setPrivate</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
9.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF117">The cdevRequestObject Class</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF118">Overview of the <font size=+0>cdevRequestObject<font size=+1> Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF119">Public Methods of the <font size=+0>cdevRequestObject<font size=+1> Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF120">attachRef</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF121">attachRef</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF122">attachPtr</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF123">attachPtr</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF124">detach</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF125">detach</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF126">message</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF127">device</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF128">system</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF129">service</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF130">getState</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF131">getAccess</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF132">setContext</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF133">getContext</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF134">getPrivate</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF135">setPrivate</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF136">send</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF137">sendNoBlock</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF138">sendCallback</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
10.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF139">The cdevSelector Class</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF140">Overview of the cdevSelector Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF141">Public Methods of the cdevSelector Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF142">insertEvent</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF143">removeEvent</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF144">purge</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF145">writefd</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF146">readfd</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
11.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF147">The cdevService Class</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF148">Overview of the cdevService Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF149">Public Methods of the cdevService Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF150">flush</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF151">poll</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF152">pend</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF153">pend</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF154">getRequestObject</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF155">getNameServer</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF156">getCollectionRequest</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF157">getFd</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF158">registerFd</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF159">autoErrorOn</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF160">autoErrorOff</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF161">reportError</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF162">setErrorHandler</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF163">setThreshold </a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF164">name</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
12.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF165">The cdevSync Class</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF166">Overview of the cdevSync Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF167">Public Methods of the cdevSync Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF168">flush</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF169">poll</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF170">pend</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF171">pend</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
13.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF172">The cdevSystemBase Class</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF173">Overview of the cdevSystemBase Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF174">Public Methods of the cdevSystemBase Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF175">getRequestObject</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
14.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF176">The cdevSystem Class</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF177">Overview of the cdevSystem Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF178">Public Methods of the cdevSystem Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF179">attachRef</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF180">attachPtr</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF181">defaultSystem</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF182">getDevice </a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF183">getRequestObject</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF184">name</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF185">prefix</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF186">prefix</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF187">flush</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF188">poll</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF189">pend</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF190">pend</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF191">getFd</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF192">addFdChangedCallback</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF193">autoErrorOn</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF194">autoErrorOff</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF195">reportError</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF196">setErrorHandler</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF197">setThreshold </a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
15.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF198">The cdevTranObj Class</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF199">Overview of the cdevTranObj Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF200">Public Data Properties of the cdevTranObj Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF201">system_</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF202">reqObj_</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF203">resultData_</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF204">userCallback_</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF205">Public Member Functions of the cdevTranObj Class</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF206">status</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF207">removeFromGrps</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF208">enableDeleteCbk</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF209">disableDeleteCbk</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
16.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF210">Language Specification for the cdev DDL file</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF211">Language Specification</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
17.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF212">Regular Expressions</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF213">Overview of Regular Expressions</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF214">Ordinary Characters</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF215">Special Characters</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF216">. [ \\ </a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF217">*</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF218">^</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF219">$</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF220">delimiter</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF221">period</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF222">Bracket Expression</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF223">bracket expression</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF224">. * [ \\</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF225">matching list </a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF226">non-matching list</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF227">collating element</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF228">collating symbol</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF229">noncollating char</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF230">equivalence class</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF231">range expression</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF232">character class</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF233">Matching Multiple Characters</a>
<!*** Finish UHEADING2TOC ***!><br></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF234">RERE </a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF235">RE*</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF236">\\(RE\\)</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF237">\\n</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td>
<td valign=top>
<!*** Start FUNC_NAMETOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF238">RE\\{m,n\\}</a>
<!*** Finish FUNC_NAMETOC ***!><br></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevReference.html#TOCREF239">Expression Anchoring</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
</table>
</td></tr>
</table>
<! **************************** LIST OF FIGURES *****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top align=center>
<!*** Start CLASS-LOF-TITLE ***!><font size=+3><strong>
List of Figures
<!*** Finish CLASS-LOF-TITLE ***!></p></strong></font>
</td></tr>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 1:
<a href="cdevReference.html#LOFREF1">Object model of the cdevCallback class</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 2:
<a href="cdevReference.html#LOFREF2">Object Model of the cdevCollection Class</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 3:
<a href="cdevReference.html#LOFREF3">Object Model of the cdevCollectionRequest Class</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 4:
<a href="cdevReference.html#LOFREF4">Object model of the cdevData class</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 5:
<a href="cdevReference.html#LOFREF5">Object model of the cdevDevice class</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 6:
<a href="cdevReference.html#LOFREF6">Return codes generated by the send method.</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 7:
<a href="cdevReference.html#LOFREF7">Object model of the cdevError class</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 8:
<a href="cdevReference.html#LOFREF8">Object model of the cdevGroup class</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 9:
<a href="cdevReference.html#LOFREF9">Object model of the cdevIOContext class</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 10:
<a href="cdevReference.html#LOFREF10">Object model of the cdevRequestObject class</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 11:
<a href="cdevReference.html#LOFREF11">Return codes generated by the send method.</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 12:
<a href="cdevReference.html#LOFREF12">Object model of the cdevSelector class</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 13:
<a href="cdevReference.html#LOFREF13">Object model of the cdevService class</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 14:
<a href="cdevReference.html#LOFREF14">Object model of the cdevSync class</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 15:
<a href="cdevReference.html#LOFREF15">Object model of the cdevSystemBase class</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 16:
<a href="cdevReference.html#LOFREF16">Object model of the cdevSystem class</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 17:
<a href="cdevReference.html#LOFREF17">Object model of the cdevTranObj class</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 18:
<a href="cdevReference.html#LOFREF18">Language specification for the cdev DDL file</a>
<!*** Finish FIGURELOF ***!><br></font>
</td></tr>
</table>
<! ************************ FILE : ./cdevReference.mif *****************************!>
<br><hr><br>
<table width=100%>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
1.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF1">
The cdevCallback Class
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF2">
Overview of the
cdevCallback
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The <em>cdevCallback </em>C++ class is used by the sendCallback method to specify the
callback function that should be executed when the message has been processed.
This class also allows the caller to include a user specified argument that will be
provided as a parameter in the callback function when it is executed.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 1:
<a name="LOFREF1">
Object model of the cdevCallback class
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
class cdevCallback
methods:
callbackFunction (void) : cdevCallbackFunction
userarg (void) : void *
operator == (cdevCallback &amp;) : int
operator != (cdevCallback &amp;) : int
fireCallback (...) : void
isTransactionDone(void) {static}: int
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 4>
</a> <!*** Finish FIGURE ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF3">
Public Methods of
the cdevCallback
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF4">
cdevCallback
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevCallback (void);
</p>
cdevCallback (cdevCallbackFunction func, void * userarg);
</p>
cdevCallback (cdevCallback &amp; callback);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This is the constructor for the callback object. It sets the internal
pointers to the user specified callback function and userarg
pointer.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF5">
callbackFunction
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevCallbackFunction callbackFunction (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a pointer to the callback function that is stored within
the cdevCallback object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF6">
userarg
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void * userarg (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a pointer to the user argument that is stored within the
cdevCallback object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF7">
operator ==
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int operator == (const cdevCallback&amp; callback);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Used to compare two cdevCallback objects. Two objects are
considered equal if they point to the same callback function and
user argument.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF8">
operator !=
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int operator != (const cdevCallback&amp; callback);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Used to compare two cdevCallback objects. Two objects are
considered equal if they point to the same callback function and
user argument.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF9">
fireCallback
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void fireCallback ( int status,
</p>
void * userarg,
</p>
cdevRequestObject &amp; req,
</p>
cdevData &amp; result,
</p>
int partialTransaction = 0);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method allows the caller to dispatch the callback function
with the specified parameters. If the callback represents a
response that is one of many that will occur, then the
partialTransaction flag should be set to non-zero. The value of
this flag can be retrieved by calling the static
cdevCallback::isTransactionDone method.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF10">
isTransactionDone
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int isTransactionDone ( void );
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method returns an integer indicating if this callback
indicates the end of the transaction. In the event of multi-part
transactions such as &quot;monitorOn&quot;, this method will return a
non-zero value indicating that more callbacks can be expected.
In the event of monotonic operations such as &quot;get&quot; or &quot;set&quot;, or
when the last monitor callback is received, this method will
return zero.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
2.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF11">
The cdevCollection Class
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF12">
Overview of the
cdevCollection
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The cdevCollection class provides a mechanism for sending a message to a collection
of named devices. The class maintains a list of CDEV devices that are associated
through an entry in the CDEV DDL file. The developer also dynamically create a
cdevCollection device.
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 2:
<a name="LOFREF2">
Object Model of the cdevCollection Class
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
cdevCollection
methods:
cdevCollection (char *, cdevSystem &amp;)
~cdevCollection (void) :{virtual}
getRequestObject (char *, cdevRequestObject *&amp;) :{virtual} int
attachRef (char *) :{static} cdevCollection &amp;
attachPtr (char *) :{static} cdevCollection *
attachRef (char *, cdevSystem &amp;) :{static} cdevCollection *
attachPtr (char *, cdevSystem &amp;) :{static} cdevCollection &amp;
detach (cdevCollection &amp;) :{static} void
detach (cdevCollection *) :{static} void
className (void) :{virtual} char *
add (char *) : int
add (int, char *, ...) : int
add (int, char **) : int
add (char **) : int
addRegexp (char *) : int
remove (char *) : int
remove (int, char *, ...) : int
remove (int, char **) : int
remove (char **) : int
removeRegexp (char *) : int
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 8>
</a> <!*** Finish FIGURE ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF13">
Public Methods of
the
cdevCollection
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF14">
cdevCollection
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevCollection (char * name, cdevSystem &amp; system);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This is the constructor for the cdevCollection class. It has the
following properties.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start ***!>
<img src="bullet.jpg">
This method is <em>protected</em> to prevent <em>cdevCollections</em> from
being instantiated directly. New <em>cdevCollection</em> instances
are created by using the <em>attachPtr</em> or <em>attachRef</em> method of
the <em>cdevCollection</em> class.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
The name that is provided to the <em>cdevCollection</em> is the
device name that CDEV will use to refer to it. The name
must be unique within the CDEV system of objects and
cannot be the same as the name of any regular <em>cdevDevice</em>
that exists in the CDEV DDL file.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
The <em>cdevSystem</em> reference that is provided is the
<em>cdevSystem</em> instance that will be used to <em>poll</em>, <em>pend</em> and
<em>flush</em> the <em>cdevCollection</em> object.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If the name provided is the name of a <em>cdevCollection</em> that
has been specified in the <em>CDEV DDL</em> file, then the list of
devices will be populated from the names that are
specified. Otherwise, an empty <em>cdevCollection</em> instance will
be created.
<!*** Finish ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF15">
~cdevCollection
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
virtual ~cdevCollection (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This is the destructor for a cdevCollection object. It has the
following properties.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start ***!>
<img src="bullet.jpg">
This method is protected to prevent the <em>cdevCollection</em>
object from being destroyed by the application. This
method should only be called by the <em>cdevSystem</em> object
when the application is terminating.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
Because the <em>cdevCollection</em> object will normally be referred
to as a <em>cdevDevice</em> object, this destructor is virtual to
ensure that the <strong>'most senior'</strong> destructor is called first.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
This method will delete all device name strings that are
associated with the <em>cdevCollection</em> object.
<!*** Finish ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF16">
getRequestObject
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
virtual int getRequestObject ( char *msg,
</p>
cdevRequestObject* &amp;req);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method is called in order to obtain the cdevRequestObject
associated with the specified device/msg combination. This
method returns CDEV_SUCCESS if the cdevRequestObject
was successfully obtained. This method has the following
properties.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start ***!>
<img src="bullet.jpg">
The <em>cdevRequestObject</em> pointer that is returned is actually
a pointer to a <em>cdevCollectionRequest</em> object.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If a <em>cdevCollectionRequest</em> already exists for the specified
device/msg combination, it will be returned. Otherwise, the
method will call the <em>attachPtr</em> method of the
<em>cdevCollectionRequest</em> in order to obtain a new request
object.
<!*** Finish ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF17">
attachRef/attachPtr
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevCollection &amp; attachRef (char * name);
</p>
cdevCollection &amp; attachRef (char * name, cdevSystem &amp; sys);
</p>
cdevCollection * attachPtr (char * name);
</p>
cdevCollection * attachPtr (char * name, cdevSystem &amp;sys);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
These methods are used to obtain a pointer or reference to a
cdevCollection object. The name variable specifies the name of
the collection to be attached. These method have the following
properties.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start ***!>
<img src="bullet.jpg">
All functionality for these methods is stored in the <em>attachPtr
(char *, cdevSystem &amp;)</em> method. All other methods will call
this one.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
The method will first determine if the device has already
been created. If it has been created and its <em>className</em>
method returns &quot;<em>cdevCollection</em>&quot;, then the existing
<em>cdevCollection</em> will be returned. If a non-collection
<em>cdevDevice</em> of the same name has already been
constructed, then NULL will be returned.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If a device with the specified name has not already been
created, then the method will search the <em>cdevDirectory</em> for
the specified name. If the device name is in the
<em>cdevDirectory</em> AND is of class &quot;<em>collection</em>&quot;, then a new
<em>cdevCollection</em> will be instantiated and returned. If a non-
collection <em>cdevDevice</em> of the same name exists in the
<em>cdevDirectory</em>, then NULL will be returned.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If a device with the specified name has not been
instantiated and does not exist in the <em>cdevDirectory</em>, then a
new, empty <em>cdevCollection</em> will be created with the
specified name.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If NULL is returned to one of the <em>attachRef</em> methods, then a
reference to a <em>cdevErrorCollection</em> object will be returned to
the caller.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
The <em>refCount</em> property of the <em>cdevCollection</em> will be
incremented each time a copy of the <em>cdevCollection</em> object
is obtained by the application.
<!*** Finish ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF18">
detach
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int detach (cdevCollection &amp; col);
</p>
int detach (cdevCollection * col);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method is called to detach a pointer or reference to a
cdevCollection object. It has the following properties.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start ***!>
<img src="bullet.jpg">
This method decrements the <em>refCount</em> property of the
<em>cdevCollection</em> object.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
When the <em>refCount</em> property is decremented to 0, then the
<em>cdevCollection</em> object will be deleted.
<!*** Finish ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF19">
className
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
char * className (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method returns the name of the class; &quot;<em>cdevCollection</em>&quot;. If
the developer inherits a service specific cdevCollection, then
this method should not be altered or overridden.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF20">
add
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int add (char *name);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method will add the individual name to the list of device
names that are in the cdevCollection. This method has the
following properties.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start ***!>
<img src="bullet.jpg">
If a <em>cdevCollectionRequest</em> object has been instantiated for
this <em>cdevCollection</em> device, then the operation will fail and
<strong>CDEV_INVALIDOP</strong> will be returned.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If the name provided is NULL or empty, then the operation
will fail and <strong>CDEV_INVALIDOP</strong> will be returned.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If the name specified already exists in the collection of
names, then the operation will fail and <strong>CDEV_WARNING</strong>
will be returned.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If the name specified is not already in the list, then the
method will append the device name to the end of the list
and return <strong>CDEV_SUCCESS</strong>.
<!*** Finish ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF21">
add
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int add (int num, char *firstname,...);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method will attempt to add a list of num names to the
cdevCollection. This method has the following properties.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start ***!>
<img src="bullet.jpg">
If a <em>cdevCollectionRequest</em> object has been instantiated for
this <em>cdevCollection</em> device, then the operation will fail and
<strong>CDEV_INVALIDOP</strong> will be returned.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
This method will call the <em>add (char *name) </em>method for each
name that is specified.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If the add method fails to add any of the device name
strings to the list, then the error code that was generated by
the call to <em>add (char * name)</em> will be returned.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If an error occurs while adding a name to the list, the
method will continue with the next name until the last name
is reached.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If no errors occur while adding names to the list, then
<strong>CDEV_SUCCESS</strong> will be returned to the caller.
<!*** Finish ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF22">
add
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int add (int num, char **names);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method will attempt to add <em>num</em> device names from the
<em>names</em> array to the list using the <em>add (char *name)</em> method of
the <em>cdevCollection</em>. This method has the same properties as
the <em>add (int num, char * firstname,...)</em> method.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF23">
add
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int add (char **names);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method will attempt to add each device name from the
NULL terminated <em>names</em> array to the list using the <em>add (char
*name)</em> method of the <em>cdevCollection</em>. This method has the
same properties as the <em>add (int num, char * firstname,...)</em>
method.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF24">
addRegexp
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int addRegexp (char *regexp);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method will query the system name server for the list of all
names in the <em>cdevDirectory</em> that match the specified regular
expression. the array of names will be added to the list using
the <em>add (int num, char ** names) </em>method and the result of this
operation will be returned.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF25">
remove
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int remove (char *name);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method will remove the specified device name from list of
device names that is stored in the <em>cdevCollection</em> object. This
method has the following properties.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start ***!>
<img src="bullet.jpg">
If a <em>cdevCollectionRequest</em> object has been instantiated for
this <em>cdevCollection</em> device, then the operation will fail and
<strong>CDEV_INVALIDOP</strong> will be returned.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If the name provided is NULL or empty, then the operation
will fail and <strong>CDEV_WARNING</strong> will be returned.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If the name specified does not exist in the collection of
names, then the operation will fail and <strong>CDEV_WARNING</strong>
will be returned.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If the name specified exists in the list, then it will be
removed and <strong>CDEV_SUCCESS</strong> will be returned.
<!*** Finish ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF26">
remove
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int remove (int num, char *name,...);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method will attempt to remove a list of num names from
the <em>cdevCollection</em>. This method has the following properties.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start ***!>
<img src="bullet.jpg">
If a <em>cdevCollectionRequest</em> object has been instantiated for
this <em>cdevCollection</em> device, then the operation will fail and
<strong>CDEV_INVALIDOP</strong> will be returned.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
This method will call the <em>remove (char *name) </em>method for
each name that is specified.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If the remove method fails to remove any of the device
name strings from the list, then the error code that was
generated by the call to <em>remove (char * name)</em> will be
returned.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If an error occurs while removing a name from the list, the
method will continue with the next name until the last name
is reached.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If no errors occur while removing names from the list, then
<strong>CDEV_SUCCESS</strong> will be returned to the caller.
<!*** Finish ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF27">
remove
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int remove (int num, char **names);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method will attempt to remove <em>num</em> device names as
specified in the <em>names</em> array from the list using the <em>remove
(char *name)</em> method of the <em>cdevCollection</em>. This method has
the same properties as the <em>remove (int num, char * name,...)</em>
method.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF28">
remove
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int remove (char **names);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method will attempt to remove each device name as
specified in the NULL terminated <em>names</em> array from the list
using the <em>remove (char *name)</em> method of the <em>cdevCollection</em>.
This method has the same properties as the <em>remove (int num,
char * name,...)</em> method.
<!*** Finish FUNC_DEF ***!></p></font>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF29">
removeRegexp
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int removeRegexp (char *regexp);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method will query the system name server for the list of all
names in the <em>cdevDirectory</em> that match the specified regular
expression. the array of names will be removed from the list
using the <em>remove (int num, char ** names) </em>method and the
result of this operation will be returned.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
3.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF30">
The cdevCollectionRequest Class
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF31">
Overview of the
cdevCollection
Request Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The cdevCollectionRequest class is an abstract base class from which other
cdevCollectionRequest objects are derived. It provides a protected constructor and
destructor that are used to initialize its internals, however, the primary mechanism that
is used to obtain a cdevCollectionRequest object is the <em>attachPtr</em> method.
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 3:
<a name="LOFREF3">
Object Model of the cdevCollectionRequest Class
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
cdevCollectionRequest
attributes:
RESULT_CODE_TAG: int
methods:
cdevCollectionRequest (char **, int, char *, cdevSystem &amp;)
~cdevCollectionRequest (void) :{virtual}
attachPtr (...) :{static} cdevCollectionRequest *
className (void) :{virtual} char *
resultCodeTag (void) :{virtual} int
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 97>
</a> <!*** Finish FIGURE ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF32">
Public Methods of
the
cdevCollection
Request Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF33">
constructor
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevCollectionRequest( char **devices, int nDevices,
</p>
char * msg, cdevSystem &amp; system);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This is the constructor for the cdevCollectionRequest class. It
has the following properties.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start ***!>
<img src="bullet.jpg">
This method is <em>protected</em> to prevent the direct instantiation
of new <em>cdevCollectionRequests</em>. New instances of the
<em>cdevCollectionRequest objects are </em>created by using the
<em>attachPtr</em> or <em>attachRef</em> method of the <em>cdevRequestObject</em>
class which will call the local <em>attachPtr</em> method to create a
new object if necessary.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
The constructor is called by the cdevCollection object and
is provided with a list and count of devices that will be
included in the collection and the message that will be sent
to them.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
The <em>cdevSystem</em> reference that is provided is the
<em>cdevSystem</em> instance that will be used to <em>poll</em>, <em>pend</em> and
<em>flush</em> the <em>cdevCollectionRequest</em> object.
<!*** Finish ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF34">
destructor
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
virtual ~cdevCollectionRequest (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This is the destructor for a cdevCollectionRequest object. It has
the following properties.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start ***!>
<img src="bullet.jpg">
This method is protected to prevent the
<em>cdevCollectionRequest</em> object from being destroyed by the
application. This method should only be called by the
<em>cdevSystem</em> object when the application is terminating.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
Because the <em>cdevCollectionRequest</em> object will normally be
referred to as a <em>cdevRequestObject</em> object, this destructor
is virtual to ensure that the <strong>'most senior'</strong> destructor is
called first.
<!*** Finish ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF35">
attachPtr
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevCollectionRequest * attachPtr
</p>
( cdevCollection &amp;col, char *msg, cdevSystem &amp;sys);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method is used by the cdevCollection object to obtain a
new cdevCollectionRequest object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start ***!>
<img src="bullet.jpg">
This method will obtain a copy of the device names from
the cdevCollection object and will poll the cdevDirectory
object to determine which service each of them is
associated with.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If the devices are all from a single service, this method will
return a service specific collection request object.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If the devices are from a variety of services, this method will
return a cdevGrpCollectionRequest that contains the
service specific collection request objects.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
Device/message combinations that are not associated with
a service will be ignored.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
If none of the device/message combinations can be
associated with a service, then an error message will be
generated and NULL will be returned.
<!*** Finish ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF36">
className
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
char * className (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method returns the name of the class;
&quot;<em>cdevCollectionRequest</em>&quot;. If the developer inherits a service
specific cdevCollectionRequest, then this method should not be
altered or overridden.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF37">
resultCodeTag
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int resultCodetag (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method returns the integer tag that should be used to
insert the result code that was geneterated when the message
was sent to the actual device.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
</p>
</p>
</p>
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
4.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF38">
The cdevData Class
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF39">
Overview of the
cdevData Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The cdevData C++ class is a self describing data object. This class is the primary
mechanism for data interchange within the cdev system. The cdevData object is
capable of storing and retrieving data items of all the primitive data types, as well as
character strings and time stamps. These data items may be scalar or multi-
dimensional arrays.
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 4:
<a name="LOFREF4">
Object model of the cdevData class
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
class cdevData
methods:
tagC2I (char *, int *) :int
tagI2C (int, char * &amp;) :int
insertTag (int, char *) :void
addTagCallback (cdevTagTableCallback*) :void
delTagCallback (cdevTagTableCallback*) :void
readTagTable (int *&amp;,char **&amp;,int &amp;) :int
operator == (cdevData &amp; data) :int
operator != (cdevData &amp; data) :int
operator = (cdevData &amp;) :cdevData &amp;
operator char (void) :char
operator short (void) :short
operator unsigned short (void) :unsigned short
operator int (void) :int
operator unsigned int (void) :unsigned int
operator long (void) :long
operator unsigned long (void) :unsigned long
operator float (void) :float
operator double (void) :double
asciiDump (FILE *) :void
xdrSize (size_t *, size_t *) :int
xdrExport (char **, size_t *) :int
xdrExport (char *, size_t, size_t):int
xdrImport (char *, size_t) :int
remove (...) :void
changeTag (...) :int
getType (...) :cdevDataTypes
getDim (...) :int
getElems (...) :int
getBounds (...) :int
setBounds (...) :int
insert (...) :int
get (...) :int
find (...) :int
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 26>
</a> <!*** Finish FIGURE ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF40">
Public Methods of
the cdevData
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF41">
tagC2I
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static int tagC2I (char *ctag, int *tag);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Converts a character string tag name to its unique integer
identifier. The function returns CDEV_SUCCESS if the
conversion was successful, otherwise it returns
CDEV_ERROR.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF42">
tagI2C
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static int tagI2C (int tag, char * &amp;ctag);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Converts a unique integer tag number to its related character
string tag. The function returns CDEV_SUCCESS if the
conversion was successful, otherwise it returns
CDEV_ERROR.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF43">
insertTag
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static void insertTag(int tag, char *ctag);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Adds a new, unique tag identifier to the static table of tags. Both
the tag integer and the character string must be unique.
Returns CDEV_SUCCESS on success, or CDEV_ERROR on
failure.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF44">
addTagCallback
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static void addTagCallback(cdevTagTableCallback * cb);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method is used to install a cdevTagTableCallback object in
the global tag table that will be called each time a new tag is
inserted into the global tag table. This method may be used by
service developers to detect when new tags are created and
update the corresponding tag mapping tables on remote
servers.
</p>
The <em>cdevTagTableCallback</em> class contains a user defined
<em>callback</em> method that takes as its parameters the new tag's
integer identifier and its string equivalent.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF45">
delTagCallback
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static void delTagCallback(cdevTagTableCallback * cb);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method removes the specified callback object from the
global tag table. The callback should have been previously
installed using the addTagCallback method.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF46">
readTagTable
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static int readTagTable(int *&amp;tag, char **&amp;ctag, int &amp;ntag);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method will read the complete contents of the global tag
table and use the data to populate the caller provided variables.
The <em>ntags</em> parameter will be set to the number of tags that were
found in the global tag table.
</p>
The <em>tag</em> array and the <em>ctag</em> array will both be allocated to a size
sufficient to hold the resultant data. The <em>tag</em> parameter will
contain the list of integer tags and the <em>ctag</em> array will contain the
list of corresponding character strings.
</p>
The caller will be responsible for deleting the arrays that are
returned by this method. Because the <em>ctag</em> array contains
pointers to the actual strings from the global tag table, the caller
should delete the array only (not the individual elements).
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF47">
Operator =
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevData &amp; operator = (cdevData &amp; data);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This is the assignment operator for the class. It will copy the
exact contents of the cdevData object specified by data to the
current cdevData object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF48">
Cast operators
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
operator char (void);
</p>
operator short (void);
</p>
operator unsigned short (void);
</p>
operator int (void);
</p>
operator unsigned int (void);
</p>
operator long (void);
</p>
operator unsigned long (void);
</p>
operator float (void);
</p>
operator double (void);
</p>
operator char* (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Directly extracts a scalar value that is stored in the &quot;value&quot; data
item, and returns it as the value of the current cdevData object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF49">
Operator ==
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int operator == (cdevData &amp; data);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This operator will do a deep comparison of two cdevData
objects, including a comparison of the individual elements of
array data. The order in which the tagged data items were
inserted into either object is unimportant.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF50">
Operator !=
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int operator != (cdevData &amp; data);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This operator will do a deep comparison of two cdevData
objects, including a comparison of the individual elements of
array data. The order in which the tagged data items were
inserted into either object is unimportant.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF51">
asciiDump
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void asciiDump (FILE * fp);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Outputs the complete contents of the cdevData object to a file.
If no file pointer is specified, then stdout will be used.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF52">
xdrSize
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int xdrSize (size_t * bufLen, size_t * elementCount);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Calculates the size of the buffer (<em>bufLen</em>) that will be required to
store this cdevData object as represented by XDR. The total
number of data items (<em>elementCount</em>) that will be placed in the
buffer is also calculated. The values obtained from this function
may be passed to the <em>xdrExport</em> method in order to use a pre-
allocated data buffer.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF53">
xdrExport
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int xdrExport (char ** buf, size_t * bufLen);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Allocates a buffer (<em>buf</em>) of sufficient size to hold the XDR
representation of this cdevData object. It will then translate all
data items stored within the object to XDR and write this data to
the buffer. The size of the allocated buffer will be provided to
the caller in the <em>bufLen</em> variable.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF54">
xdrExport
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int xdrExport (char * buf, size_t bufLen, size_t count);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Populates the preallocated buffer (<em>buf</em>) with the XDR
representation of the contents of this cdevData object. The
buffer length (<em>bufLen</em>) and number of elements (<em>count</em>) must
have been calculated in advance using the <em>xdrSize</em> method.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF55">
xdrImport
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int xdrImport (char * buf, size_t bufLen);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Decodes the caller supplied buffer (<em>buf</em>) from XDR
representation and populates the cdevData object with the
contents. The caller must specify the number of bytes in the
XDR buffer (<em>bufLen</em>).
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF56">
remove
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void remove(void);
</p>
void remove(int tag);
</p>
void remove(char * ctag);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Removes the data item specified by the unique tag name or
integer from this cdevData object. If the tag is not specified,
then all data items will be removed from the object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF57">
changeTag
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int changeTag(int oldTag, int newTag);
</p>
int changeTag(int oldTag, char *c_newTag);
</p>
int changeTag(char *c_oldTag, int newTag);
</p>
int changeTag(char *c_oldTag, char *c_newTag);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
<em>Retags</em> a data item that is currently stored in the cdevData
object from &quot;oldTag&quot; to &quot;newTag&quot;. By using this method the data
can be renamed internally without having to perform a copy or
removal. This function is overloaded to support any
permutation of character string tag or integer tag identifier.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF58">
getType
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevDataTypes getType(int tag);
</p>
cdevDataTypes getType(char *ctag);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves the enumerated data type of the specified tagged
data item within this cdevData object. The following
enumerated types are defined in the file <em>cdevTypes.h</em>.
<!*** Finish FUNC_DEF ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_BYTE
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
8 bit unsigned character
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_INT16
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
16 bit signed integer
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_UINT16
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
16 bit unsigned integer
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_INT32
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
32 bit signed integer
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_UINT32
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
32 bit unsigned integer
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_FLOAT
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
single precision floating point
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_DOUBLE
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
double precision floating point.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_STRING
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
NULL terminated character
string
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_TIMESTAMP
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
cdev time stamp
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_INVALID
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
invalid or unknown data type
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF59">
getDim
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int getDim(int tag, size_t *dim);
</p>
int getDim(char *ctag, size_t *dim);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves the number of dimensions in a data item that is an
array. If dim is 0, then the data item is scalar, otherwise, the
data item is a &quot;dim&quot; dimensional array. This function is
overloaded to support either the integer tag or character string
tag.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF60">
getElems
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int getElems(int tag, size_t *elems);
</p>
int getElems(char *ctag, size_t *elems);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves the number of data elements in all dimensions of a
multi-dimensional array. If elems is 1, then the data item is
scalar, otherwise, the data item is an array of &quot;elems&quot; elements.
This function is overloaded to support either the integer tag or
character string tag.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF61">
getBounds
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int getBounds( int tag,
</p>
cdevBounds * bounds,
</p>
size_t numBounds);
</p>
int getBounds( char * ctag,
</p>
cdevBounds * bounds,
</p>
size_t numBounds);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains the bounding dimensions of the array specified by the
caller provided tag. The cdevBounds structure contains two
integers: offset and length. The length variable represents the
number of data elements in that dimension of the array. The
offset integer is provided for use in specifying the position of
arrays that are sub-sets of the actual data. A version of this
function is available that uses an array of integers rather than
the cdevBounds structure. This function is overloaded to
support either the integer tag or character string tag.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF62">
setBounds
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int setBounds( int tag,
</p>
cdevBounds * bounds,
</p>
size_t numBounds);
</p>
int setBounds( char * ctag,
</p>
cdevBounds * bounds,
</p>
size_t numBounds);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Specifies the bounding dimensions of a multi-dimensional array
of data. In order to use this function, the number of dimensions
in the array must be specified as a parameter to the insert
command when placing the data into the cdevData object. The
cdevBounds structure contains two integers: offset and length.
The length variable represents the number of data elements in
that dimension of the array. The offset integer is provided for
use in specifying the position of arrays that are sub-sets of the
actual data. A version of this function is available that uses an
array of integers rather than the cdevBounds structure. This
function is overloaded to support either the integer tag or
character string tag.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF63">
insert (<em>scalar</em>)
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int insert (int tag, BYTE data);
</p>
int insert (int tag, short data);
</p>
int insert (int tag, unsigned short data);
</p>
int insert (int tag, int data);
</p>
int insert (int tag, unsigned int data);
</p>
int insert (int tag, long data);
</p>
int insert (int tag, unsigned long data);
</p>
int insert (int tag, float data);
</p>
int insert (int tag, double data);
</p>
int insert (int tag, cdev_TS_STAMP data);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
These methods allow the user to insert a single data item into
the cdevData object using the specified tag. If another data
item already occupies that tag within the cdevData object, the
new data item will override the old one. Although only the
integer tag prototypes are shown, these functions are
overloaded to support both the integer and character string
data tags.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF64">
insert (array)
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int insert (int tag, BYTE * data, size_t len, size_t ndim);
</p>
int insert (int tag, short * data, size_t len, size_t ndim);
</p>
int insert (int tag, unsigned short * data, size_t len, size_t ndim);
</p>
int insert (int tag, int * data, size_t len, size_t ndim);
</p>
int insert (int tag, unsigned int * data, size_t len, size_t ndim);
</p>
int insert (int tag, long * data, size_t len, size_t ndim);
</p>
int insert (int tag, unsigned long * data, size_t len, size_t ndim);
</p>
int insert (int tag, float * data, size_t len, size_t ndim);
</p>
int insert (int tag, double * data, size_t len, size_t ndim);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
These methods allow the user to insert array data items into the
cdevData object using the specified tag. The len parameter is
used to specify the total number of items in the array. The ndim
parameter is used to specify the number of dimensions in the
array (1 by default). Although only the integer tag prototypes
are shown, these functions are overloaded to support both the
integer and character string data tags.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF65">
insert (character string)
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
</p>
int insert (int tag, char * data);
</p>
int insert (int tag, char ** data, size_t len, size_t ndim);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
These methods are used to add NULL terminated character
strings to the cdevData object. These methods differ from the
others because a single character string is treated as a scalar
value. The len parameter (where used) specifies the total
number of character strings in the array. The ndim parameter is
used to specify the number of dimensions in the array (1 by
default). Although only the integer tag prototypes are shown,
these functions are overloaded to support both the integer and
character string data tags.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF66">
get
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int get(int tag, BYTE * data);
</p>
int get(int tag, short * data);
</p>
int get(int tag, unsigned short * data);
</p>
int get(int tag, int * data);
</p>
int get(int tag, unsigned int * data);
</p>
int get(int tag, long * data);
</p>
int get(int tag, unsigned long * data);
</p>
int get(int tag, float * data);
</p>
int get(int tag, double * data);
</p>
int get(int tag, cdev_TS_STAMP * data);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
These methods are used to retrieve scalar values and arrays
that are stored in the cdevData object. When retrieving an
array, it is the caller's responsibility to call the <em>getElems</em> method
to obtain the number of elements and then pre-allocate the
buffer to receive the data. If the receiving data type does not
match the data type stored in the cdevData object, then the
data will be converted to the new type when it is extracted.
Although only the integer tag prototypes are shown, these
functions are overloaded to support both the integer and
character string data tags.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF67">
get (character string)
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
</p>
int get(int tag, char * data, size_t len);
</p>
int get(int tag, char ** data);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
These methods are used to retrieve character strings and
arrays of character strings from a cdevData object. When
obtaining a single character string, the length of the allocated
buffer must be specified in the <em>len</em> parameter. When obtaining
an array of character strings, the caller must pre-allocate the
POINTERS for each element in the array. The cdevData object
will allocate sufficient memory to each of the pointers to hold
the individual character strings. It then becomes the
responsibility of the caller to free the memory assigned to those
pointers. If the receiving data type does not match the data
type stored in the cdevData object, then the data will be
converted to the new type when it is extracted. Although only
the integer tag prototypes are shown, these functions are
overloaded to support both the integer and character string
data tags.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF68">
find
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int find(int tag, void* &amp;data);
</p>
int find(char * ctag, void* &amp;data);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves a pointer to the data within the cdevData object. The
caller is responsible for ensuring that the receiving pointer is of
the correct data type for the data within the object. This function
is overloaded to support both integer and character string tag
identifiers.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
5.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF69">
The cdevDevice Class
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF70">
Overview of the
cdevDevice Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The <em>cdevDevice</em> C++ class is the user's primary interface to cdev. In fact, it is possible
to develop complete cdev applications using only <em>cdevDevice</em> and <em>cdevData</em> objects.
The <em>cdevDevice</em> class defines the basic interface that all applications must use to
transmit messages to a cdev service.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 5:
<a name="LOFREF5">
Object model of the cdevDevice class
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
class cdevDevice
methods:
attachRef (char *) :cdevDevice&amp;
attachPtr (char *) :cdevDevice*
detach (cdevDevice&amp;) :void
detach (cdevDevice*) :void
getRequestObject (char *msg) :cdevRequestObject*
name (void) :char *
system (void) :cdevSystem&amp;
setContext (cdevData&amp;) :int
send (char*, cdevData&amp;, cdevData&amp;) : int
send (char*, cdevData*, cdevData&amp;) : int
send (char*, cdevData&amp;, cdevData*) : int
send (char*, cdevData*, cdevData*) : int
sendNoBlock (char*, cdevData&amp;, cdevData&amp;) : int
sendNoBlock (char*, cdevData*, cdevData&amp;) : int
sendNoBlock (char*, cdevData&amp;, cdevData*) : int
sendNoBlock (char*, cdevData*, cdevData*) : int
sendCallback (char*, cdevData&amp;, cdevCallback&amp;) : int
sendCallback (char*, cdevData*, cdevCallback&amp;) : int
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 67>
</a> <!*** Finish FIGURE ***!></p></em></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF71">
Public Methods of
the cdevDevice
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF72">
attachRef
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static cdevDevice&amp; attachRef (char *name);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a reference to a cdevDevice object by name. By
default, the new object will be managed by the default
cdevSystem.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF73">
attachPtr
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static cdevDevice* attachPtr (char *name);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a pointer to a cdevDevice object specified by name. By
default, the new object will be managed by the default
cdevSystem.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF74">
detach
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static void detach (cdevDevice&amp; dev);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Removes a referenced cdevDevice object from its associated
cdevSystem object. Ordinary applications should never use this
command.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF75">
detach
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static void detach (cdevDevice* dev);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Detaches the cdevDevice object specified by dev from its
associated cdevSystem object. Ordinary applications should
never use this command.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF76">
getRequestObject
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevRequestObject* getRequestObject (char *msg);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a service specific request object. This function uses
the name of the device specified within the cdevDevice object,
and the message provided by the caller to determine which
cdev service will be used to service this request. The service is
then loaded (if necessary), and is contacted to provided a
request object for the device/message combination. This
cdevRequestObject will then be used to communicate with the
service directly.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF77">
name
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
const char *name (void) const;
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Returns the name of the device.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF78">
system
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevSystem&amp; system (void) const;
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a reference to the underlying cdevSystem object that
manages this device.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF79">
setContext
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int setContext (cdevData&amp; cxt);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Used to insert a cdevData object containing tagged values that
control optional behavior of the underlying device. The context
is often used to specify which properties (value, status,
severity) a device returns in response to a &quot;get&quot; message. It is
important to note that any change made to the context of a
<em>cdevDevice</em> will automatically be propagated to all
<em>cdevRequestObjects</em> created from that device. Therefore, any
message specific context settings should be specified directly
to the cdevRequestObject, rather than to the cdevDevice.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF80">
getContext
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevData &amp; getContext (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves a reference to the cdevData object that contains the
context for a specific device.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF81">
setPrivate
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void setPrivate (void * data);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Associates a user specified data object with this cdevDevice
object. The pointer can be retrieved later using the <em>getPrivate</em>
method.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF82">
getPrivate
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void * getPrivate (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves a pointer to a data object that was placed in this
cdevDevice object using the setPrivate function.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF83">
send
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int send (char *msg, cdevData &amp;out, cdevData&amp; result);
</p>
int send (char *msg, cdevData *out, cdevData&amp; result);
</p>
int send (char *msg, cdevData &amp;out, cdevData* result);
</p>
int send (char *msg, cdevData *out, cdevData* result);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
<strong> </strong>The send function is the standard method for synchronously
communicating with a device. The caller provides the message
as a character string in the <em>msg </em>parameter. The <em>out </em>cdevData
object contains any property values that the device will need to
perform the task. The <em>result</em> cdevData object will contain the
output properties that resulted from the call. This function will
return one of the error code defined in cdevErrCode.h.
</p>
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 6:
<a name="LOFREF6">
Return codes generated by the send method.
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
CDEV_WARNING: </strong> <strong></strong><em>Failure of the request in non-critical.<strong></em>
CDEV_SUCCESS: </strong> <strong></strong><em>The message was processed successfully.<strong></em>
CDEV_ERROR: </strong> <strong></strong><em> Failed to process message.<strong></em>
CDEV_INVALIDOBJ: </strong><em> Invalid cdev request object used.<strong></em>
CDEV_INVALIDARG: </strong> <strong></strong><em>Invalid argument passed to cdev call<strong></em></strong>.<strong>
CDEV_INVALIDSVC: </strong><em> Wrong service during dynamic loading.<strong></em>
CDEV_INVALIDOP: </strong> <strong></strong><em> Operation is not supported on device.<strong></em>
CDEV_NOTCONNECTED: </strong><em> Not connected to low level network <strong></em>
service.
CDEV_IOFAILED: <em> </em></strong><em>Low level network service IO failed.<strong></em>
CDEV_CONFLICT: </strong> <strong></strong><em> Conflicts of data types or tags.<strong></em>
CDEV_NOTFOUND: </strong> <strong></strong><em>Cannot find specified data in cdevData.<strong></em>
CDEV_TIMEOUT: </strong><em> Time out<strong></em><em>.</em>
CDEV_CONVERT: </strong> <strong></strong><em> cdevData conversion error.<strong></em>
CDEV_OUTOFRANGE: </strong><em> Value out of range for device attribute.<strong></em>
CDEV_NOACCESS: </strong><em> Insufficient access to perform request.<strong></em>
CDEV_ACCESSCHANGED:</strong> <strong></strong><em>Change in access permission of device.<strong></em>
CDEV_DISCONNECTED: </strong> <strong></strong><em> The service has lost contact with the <strong></em>
device.
CDEV_RECONNECTED: </strong><em> The service has regained contact with <strong></em>
the device.
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 1>
</a> <!*** Finish FIGURE ***!></p></em></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF84">
sendNoBlock
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int sendNoBlock(char *msg, cdevData &amp;out, cdevData &amp;result);
</p>
int sendNoBlock(char *msg, cdevData *out, cdevData &amp;result);
</p>
int sendNoBlock(char *msg, cdevData &amp;out, cdevData *result);
</p>
int sendNoBlock(char *msg, cdevData *out, cdevData *result);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The <em>sendNoBlock</em> method uses the same parameters and
syntax as the <em>send</em> method. However, rather than waiting for
the underlying service to respond to the request, this function
will return immediately. The caller must utilize a cdevGroup
object to detect when this transaction has been completed.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF85">
sendCallback
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int sendCallback ( char *msg, cdevData &amp;out,
</p>
cdevCallback &amp;callback);
</p>
int sendCallback ( char *msg, cdevData *out,
</p>
cdevCallback &amp;callback);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The sendCallback function is the standard method for
asynchronously communicating with a device. Rather than
providing a result cdevData object, this method requires the
user to provide the address of a cdevCallback object. This
object contains a user supplied pointer and the address of a
function to call when the message has been successfully
processed.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
6.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF86">
The cdevError Class
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF87">
Overview of the
cdevError Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The <em>cdevError </em>C++ class is an abstract base class that provides error handling
services that are used by both the cdevService object and the cdevSystem object. It's
constructors are protected to prevent it from being instantiated directly.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 7:
<a name="LOFREF7">
Object model of the cdevError class
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
class cdevError
methods:
autoErrorOn ( void ) {virtual} : int
autoErrorOff ( void ) {virtual} : int
reportError ( ... ) {virtual} : int
setErrorHandler (cdevErrorHandler ) {virtual} : void
setThreshold ( int ) {virtual} : void
className ( void ) {virtual} : char *
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 12>
</a> <!*** Finish FIGURE ***!></p></em></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF88">
Public Methods of
the cdevError
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF89">
autoErrorOn
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int autoErrorOn (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Informs the cdevError class that it should use its internal default
error handler to process any error messages that are
generated by objects within its control. This is the default
operating condition for the class.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF90">
autoErrorOff
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int autoErrorOff (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Informs the cdevError class that it should use the user supplied
error handling function to process any error messages that are
generated by objects within its control.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF91">
reportError
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int reportError ( int severity, char *name,
</p>
cdevRequestObject *obj,
</p>
char *formatString,...);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Emits an error message. The severity field indicates the
<em>severity</em> of the error, the <em>name</em> string identifies the object that
generated the error, the <em>obj </em>parameter is the
cdevRequestObject that was in use when the error occurred,
and the <em>formatString </em>and additional parameters (...) should be
formatted in the same manner as the parameters used by
printf.
</p>
The integer used by severity should have one of the following
values indicating the severity of the error that has occurred.
<!*** Finish FUNC_DEF ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_SEVERITY_INFO
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td>
<! ***** Empty Column ***** !>
</td></tr>
</table>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
No error.
<!*** Finish FUNC_DEF_2 ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_SEVERITY_WARN
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
An error occurred that should
not impact continued
processing.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_SEVERITY_ERROR
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
An error occurred and should
be corrected before continuing.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_SEVERITY_SEVERE
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
A severe or fatal error has
occurred and cdev cannot
continue normal execution.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
</table>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF92">
setErrorHandler
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void setErrorHandler (cdevErrorHandler handler);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Used to to install a user specified error handler. This error
handler will be called when an error occurs if the <em>autoErrorOff</em>
method has been used to disable the default error handler. The
user provided error handler should have the following
prototype:
</p>
void handler (int severity, char *text, cdevRequestObject *obj);
</p>
The <em>severity</em> parameter will contain one of the integers
specified in the <em>reportError </em>documentation, the <em>text</em> parameter
will contain the text of the error, and the <em>obj</em> parameter will
contain the cdevRequestObject that was in use when the error
occurred.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF93">
setThreshold
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void setThreshold (int errorThreshold);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Used to specify the level of severity at which errors should be
submitted to the error handler. The value of <em>errorThreshold</em>
should be one of the severity levels specified in the <em>reportError</em>
method.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
7.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF94">
The cdevGroup Class
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF95">
Overview of the
cdevGroup Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The <em>cdevGroup </em>C++ class provides the mechanisms that cdev uses to collect together
a list of operations to be executed, perhaps repeatedly, as a group, and to detect the
completion of multiple requests that form a group.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 8:
<a name="LOFREF8">
Object model of the cdevGroup class
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
class cdevSync
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 84>
</a> <!*** Finish FIGURE ***!></p></em></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF96">
Public Methods of
the cdevGroup
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF97">
cdevGroup
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevGroup (unsigned blockSize, cdevSystem&amp; system);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This is the constructor for the cdevGroup object. It receives a
blockSize parameter which specifies the maximum number of
cdevTranObj objects that may be added and a cdevSystem
parameter that the group object will be associated with. If no
parameters are specified blockSize will be set to
DEFAULT_BLOCK_SIZE and the system will be set to
cdevSystem::defaultSystem(). The mode of the constructed
group will be CDEV_EXEC_IMMEDIATE.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF98">
start
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int start (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Starts a group of transactions. This means that each time a
message is sent <em>asynchronously</em> to a device, the associated
<em>cdevTranObj </em>will be included in this group. The system will stop
adding transactions to this group after the <em>end</em> method has
been executed.
</p>
If the mode of the group is CDEV_EXEC_IMMEDIATE, the
operations are immediately forwarded to the service and to the
appropriate server. If the mode of the group is
CDEV_EXEC_DEFERRED, the operation is kept in a list within
the group, and sent to the service/server when flush() or pend()
is called.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF99">
end
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int end (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Informs the system that no more new transactions should be
included in this group object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF100">
flush
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int flush (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Flushes any pending outbound requests to their respective
services.
</p>
If the group is in deferred execution mode, and the grouped
commands have either not yet been flushed, or have previously
been flushed and have all completed, then flush will send the
commands to the underlying services. After completion, flush
may be called again to re-execute the grouped commands.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF101">
poll
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int poll (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Directly polls each of the cdevGroup's underlying services for
activity, and delivers any asynchronous callbacks that are
ready.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF102">
pend
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int pend (int fd);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Automatically end and flush the group if it is started, and wait
until all operations within the group are completed or until a
timeout occurs.
</p>
In particular: waits for a default period of time for the specified
file descriptor to have an I/O event. If the fd parameter is not
provided, the cdevGroup object will wait for an I/O event on any
of its contained file descriptors. When an event occurs on one
of the file descriptors, the cdevGroup object will call the
respective cdevService to process the event and dispatch any
asynchronous callbacks that are ready.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF103">
pend
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int pend (double seconds, int fd);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Automatically end and flush the group if it is started, and wait
until all operations within the group are completed or until a
timeout occurs.
</p>
In particular, processes all I/O events that occur on the file
descriptor during the specified period of time. If the fd
parameter is not provided, the cdevGroup object will wait for I/O
events on all of its contained file descriptors. When an event
occurs on one of the file descriptors, the cdevGroup object will
call the respective cdevService to process the event and
dispatch any asynchronous callbacks that are ready.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF104">
allFinished
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int allFinished (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Checks the status of the cdevGroup object to determine if all
transactions have been completed. Returns 1 if all transactions
are complete or 0 if they are not.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF105">
status
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int status (int status[], int &amp;numTransactions);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves the status of the individual transaction objects that
are stored within the <em>cdevGroup</em> object. The cdevGroup class
will populate the <em>status</em> array with up to <em>numTransactions</em>. The
<em>numTransactions</em> parameter will then be set to the number of
transactions that were actually loaded. If a <em>status</em> entry is 0,
then the associated transaction has been completed. Returns
CDEV_SUCCESS on successful completion, or
CDEV_INVALIDARG if the <em>status</em> array is too small.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF106">
execDeferred
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int execDeferred (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF107">
execImmediate
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int execImmediate (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Changes the behaviour of execution of commands inside the
group. execDeferred will buffer all commands until pend or poll
flush is called; execImmediate will flush commands to
underlying services immediately.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF108">
executionMode
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int executionMode (void) const;
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Return execution mode: CDEV_EXEC_DEFERRED or
CDEV_EXEC_IMMEDIATE.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF109">
readyToExec
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int readyToExec (void) const;
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
For deferred mode group only. Return execution stage:
</p>
0 = still in the buffered stage.
</p>
1 = ready to flush all buffered commands.
</p>
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
8.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF110">
The cdevIOContext Class
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF111">
Overview of the
cdevIOContext
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The <em>cdevIOContext </em>C++ class is an abstract base class that is inherited by both the
<em>cdevRequestObject</em> class and the <em>cdevDevice</em> class. This class defines the
mechanisms that are used to store and retrieve context information.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 9:
<a name="LOFREF9">
Object model of the cdevIOContext class
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
class cdevIOContext
methods:
getContext ( void ) {virtual} : cdevData &amp;
setContext ( cdevData &amp;cxt ) {virtual} : int
getPrivate ( void ) : void *
setPrivate ( void * data ) : void
className ( void ) {virtual} : char *
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 62>
</a> <!*** Finish FIGURE ***!></p></em></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF112">
Public Methods of
the
cdevIOContext
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF113">
getContext
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevData &amp; getContext (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a reference to the cdevData object that contains the
context for a specific device.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF114">
setContext
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int setContext (cdevData&amp; cxt);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Used to insert a cdevData object containing tagged values that
control optional behavior of the underlying device. The context
is often used to specify which properties (value, status,
severity) a device returns in response to a &quot;get&quot; message. .
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF115">
getPrivate
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void * getPrivate (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves a pointer to a data object that was placed in this
object using the setPrivate function.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF116">
setPrivate
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void setPrivate (void * data);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Associates a user specified data object with this object. The
pointer can be retrieved later using the <em>getPrivate</em> method.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
9.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF117">
The cdevRequestObject Class
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF118">
Overview of the
<font size=+0>cdevRequestObject<font size=+1>
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The <em>cdevRequestObject</em> C++ class provides the user with a higher performance
interface to devices in cdev. Each time a <em>cdevDevice</em> object receives a message
string, it must parse the message and then connect to the appropriate service. The
<em>cdevRequestObject</em> allows the user to bind a <em>device</em> name to a <em>message</em><strong> </strong>and then
connect to the underlying service only <strong><em>once</strong></em>. Thereafter, the <em>cdevRequestObject</em> will
remain connected to the service and can process its associated message with much
higher efficiency.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 10:
<a name="LOFREF10">
Object model of the cdevRequestObject class
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
class cdevRequestObject
methods:
attachRef (char *, char *) : cdevRequestObject&amp;
attachRef (cdevDevice &amp;, char *) : cdevRequestObject&amp;
attachPtr (char *, char *) : cdevRequestObject*
attachPtr (cdevDevice &amp;, char *) : cdevRequestObject*
detach (cdevRequestObject&amp;) : void
detach (cdevRequestObject*) : void
message (void) : char *
device (void) : cdevDevice&amp;
system (void) : cdevSystem&amp;
service (void) : cdevService&amp;
setContext (cdevData &amp;) : int
getState (void) : int
getAccess (void) : int
send (cdevData&amp;, cdevData&amp;) : int
send (cdevData*, cdevData&amp;) : int
send (cdevData&amp;, cdevData*) : int
send (cdevData*, cdevData*) : int
sendNoBlock (cdevData&amp;, cdevData&amp;) : int
sendNoBlock (cdevData*, cdevData&amp;) : int
sendNoBlock (cdevData&amp;, cdevData*) : int
sendNoBlock (cdevData*, cdevData*) : int
sendCallback (cdevData&amp;, cdevCallback&amp;) : int
sendCallback (cdevData*, cdevCallback&amp;) : int
className (void) : char *
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 76>
</a> <!*** Finish FIGURE ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF119">
Public Methods of
the
<font size=+0>cdevRequestObject<font size=+1>
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF120">
attachRef
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static cdevRequestObject&amp; attachRef (char *device, char * msg);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a reference to a <em>cdevRequestObject</em> object by
specifying the name of the device and the message string. By
default, the new object will be managed by the default
<em>cdevSystem</em>.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF121">
attachRef
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static cdevRequestObject&amp; attachRef (cdevDevice &amp;dev, char * msg);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a reference to a <em>cdevRequestObject</em> object by
providing a reference to the associated <em>cdevDevice</em> object and
the message string. By default, the new object will be managed
by the default <em>cdevSystem</em>.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF122">
attachPtr
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static cdevRequestObject* attachPtr (char *device, char * msg);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a pointer to a <em>cdevRequestObject</em> by specifying the
name of the device and the message string. By default, the new
object will be managed by the default <em>cdevSystem</em>.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF123">
attachPtr
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static cdevRequestObject* attachPtr (cdevDevice &amp;dev, char * msg);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a pointer to a <em>cdevRequestObject</em> by providing a
reference to the associated <em>cdevDevice</em> object and the
message string. By default, the new object will be managed by
the default <em>cdevSystem</em>.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF124">
detach
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static void detach (cdevRequestObject&amp; dev);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Removes a referenced cdevRequestObject object from its
associated cdevSystem object. Ordinary applications should
never use this command.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF125">
detach
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static void detach (cdevRequestObject* dev);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Detaches the cdevRequestObject object specified by dev from
its associated cdevSystem object. Ordinary applications should
never use this command.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF126">
message
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
char *message (void) const;
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves the message string that is associated with this
cdevRequestObject.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF127">
device
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevDevice &amp;device (void) const;
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves a reference to the cdevDevice object that is
associated with this cdevRequestObject.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF128">
system
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevSystem&amp; system (void) const;
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves a reference to the underlying cdevSystem object that
manages this cdevRequestObject.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF129">
service
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevService&amp; service (void) const;
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves a reference to the underlying cdevService object that
this cdevRequestObject is attached to.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF130">
getState
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int getState (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains the state of the underlying device. This function returns
one of the following values as defined in <em>cdevErrCode.h</em>.
<!*** Finish FUNC_DEF ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_STATE_CONNECTED:
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
Object is connected.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_STATE_NOTCONNECTED:
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
Object is not connected.
</p>
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_STATE_INVALID:
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
Object is invalid.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
</table>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
</p>
The service developer is responsible for implementing this
function correctly in the service related cdevRequestObject.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF131">
getAccess
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int getAccess (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains access control information about the underlying
device. This function returns one of the following values as
defined in cdevErrCode.h.
<!*** Finish FUNC_DEF ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_ACCESS_NONE:
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
No access to attribute.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_ACCESS_READONLY:
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
Read-only access.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_ACCESS_WRITE:
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
Read-write access.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
</table>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
</p>
The service developer is responsible for implementing this
function correctly in the service related cdevRequestObject.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF132">
setContext
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int setContext (cdevData&amp; cxt);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Used to insert a cdevData object containing tagged values that
control optional behavior of the underlying device. The context
is often used to specify which properties (value, status,
severity) a device returns in response to a &quot;get&quot; message. The
service developer may override the default behavior of this
method to better accomodate the requirements of the service.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF133">
getContext
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevData &amp; getContext (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves a reference to the cdevData object that contains the
context for a specific cdevRequestObject. The service
developer may override the default behavior of this method to
better accomodate the requirements of the service.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF134">
getPrivate
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void * getPrivate (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves a pointer to a data object that was placed in this
object using the setPrivate function.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF135">
setPrivate
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void setPrivate (void * data);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Associates a user specified data object with this
<em>cdevRequestObject</em>. The pointer can be retrieved later using
the <em>getPrivate</em> method.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF136">
send
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int send (cdevData &amp;out, cdevData&amp; result);
</p>
int send (cdevData *out, cdevData&amp; result);
</p>
int send (cdevData &amp;out, cdevData* result);
</p>
int send (cdevData *out, cdevData* result);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The send function is the standard method for synchronously
communicating with a device. The <em>out </em>cdevData object
contains any property values that the device will need to
perform the task. The <em>result</em> cdevData object will contain the
output properties that resulted from the call. The service
developer is responsible for implementing this method in the
service specified cdevRequestObject. This function will return
one of the error code defined in cdevErrCode.h.
</p>
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 11:
<a name="LOFREF11">
Return codes generated by the send method.
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
CDEV_WARNING</strong>: Failure of the function is non-consequential.<strong>
CDEV_SUCCESS: The message was processed successfully.
CDEV_ERROR: Failed to process message.
CDEV_INVALIDOBJ: Invalid cdev request object used.
CDEV_INVALIDARG: Invalid argument passed to cdev call.
CDEV_INVALIDSVC: Wrong service during dynamic loading.
CDEV_NOTCONNECTED: Not connected to low level network service.
CDEV_INVALIDOP: </strong>The operation is not supported by the device.<strong>
CDEV_IOFAILED: Low level network service IO failed.
CDEV_CONFLICT: Conflicts of data types or tags.
CDEV_NOTFOUND: Cannot find specified data in cdevData.
CDEV_TIMEOUT: Time out.
CDEV_CONVERT: cdevData conversion error.
CDEV_OUTOFRANGE: Value out of range for device attribute.
CDEV_NOACCESS: Insufficient access to perform request.
CDEV_ACCESSCHANGED: Change in access permission of device.
CDEV_DISCONNECTED: Service has lost contact with the device.
CDEV_RECONNECTED: Service has regained contact with the device.
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 6>
</a> <!*** Finish FIGURE ***!></p></em></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF137">
sendNoBlock
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int sendNoBlock (cdevData &amp;out, cdevData &amp;result);
</p>
int sendNoBlock (cdevData *out, cdevData &amp;result);
</p>
int sendNoBlock (cdevData &amp;out, cdevData *result);
</p>
int sendNoBlock (cdevData *out, cdevData *result);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The <em>sendNoBlock</em> method uses the same parameters and
syntax as the <em>send</em> method. However, rather than waiting for
the underlying service to respond to the request, this function
will return immediately.The caller must use a cdevGroup object
in order to detect when the transaction has been completed.
The service developer is responsible for implementing this
method in the service specified cdevRequestObject.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF138">
sendCallback
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int sendCallback (cdevData &amp;out, cdevCallback &amp;callback);
</p>
int sendCallback (cdevData *out, cdevCallback &amp;callback);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The <em>sendCallback </em>function is the standard method for
asynchronously communicating with a device. Rather than
providing a <em>result</em> cdevData object, this method requires the
user to provide the address of a cdevCallback object. This
object contains a user supplied pointer and the address of a
function to call when the message has been successfully
processed. The service developer is responsible for
implementing this method in the service specified
cdevRequestObject.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
10.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF139">
The cdevSelector Class
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF140">
Overview of the
cdevSelector
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The <em>cdevSelector </em>C++ class is a utility class that may be used by service developers.
It allows a service that does not use network I/O to provide a locally managed file
descriptor to the <em>cdevSystem</em> object. The service may then use the <em>insertEvent</em>
method to signal the <em>cdevSystem</em> object that the services needs attention.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 12:
<a name="LOFREF12">
Object model of the cdevSelector class
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
class cdevSelector
methods:
insertEvent (int) : int
removeEvent (int) : int
purge (void) : void
writefd (void) : int
readfd (void) : int
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 92>
</a> <!*** Finish FIGURE ***!></p></em></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF141">
Public Methods of
the cdevSelector
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF142">
insertEvent
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int insertEvent ( int numEvents );
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Inserts the number of bytes specified in the numEvents
parameter into the file descriptor. If numEvents is not specified,
then one byte will be written.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF143">
removeEvent
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int removeEvent ( int numEvents );
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Removes the number of bytes specified in the <em>numEvents</em>
parameter from the file descriptor. If <em>numEvents</em> is not
specified, then one byte will be read. This function uses the
ioctl function to ensure that the <em>numEvents</em> parameter does not
exceed the actual number of bytes available from the file
descriptor.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF144">
purge
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void purge ( void );
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Removes all bytes from the file descriptor.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF145">
writefd
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int writefd ( void );
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Returns the write file descriptor that is stored within the
<em>cdevSelector</em> object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF146">
readfd
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int readfd ( void );
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Returns the read file descriptor that is stored within the
<em>cdevSelector</em> object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
11.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF147">
The cdevService Class
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF148">
Overview of the
cdevService Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The cdevService C++ class is an abstract base class for all cdev services. This class
defines the mechanisms that cdev will utilize to communicate with the underlying
control system. It is the responsibility of the service developer to '<em>flesh out</em>' the virtual
functions that are defined within this class and to develop the code necessary to
communicate with the underlying control system.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 13:
<a name="LOFREF13">
Object model of the cdevService class
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
class cdevSystemBase
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 15>
</a> <!*** Finish FIGURE ***!></p></em></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF149">
Public Methods of
the cdevService
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF150">
flush
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int flush (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Flushes any pending outbound requests to their respective
devices. This is a pure virtual function that must be provided by
the service developer.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF151">
poll
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int poll (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Directly polls each of the cdevService's underlying file
descriptors for activity, and delivers any asynchronous
callbacks that are ready. This is a pure virtual function that must
be provided by the service developer.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF152">
pend
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int pend (int fd);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Waits for a default period of time for the specified file descriptor
to have an I/O event. If the fd parameter is not provided, the
cdevService object will wait for an I/O event on any of its
contained file descriptors. When an event occurs on one of the
file descriptors, the cdevService object will call the appropriate
function to process the event and dispatch any asynchronous
callbacks that are ready. This is a pure virtual function that must
be provided by the service developer.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF153">
pend
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int pend (double seconds, int fd);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Processes all I/O events that occur on the file descriptor during
the specified period of time. If the fd parameter is not provided,
the cdevService object will wait for I/O events on all of its
contained file descriptors. When an event occurs on one of the
file descriptors, the cdevService object will call the appropriate
functions to process the event and dispatch any asynchronous
callbacks that are ready. This is a pure virtual function that must
be provided by the service developer.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF154">
getRequestObject
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int getRequestObject ( char *dev, char *msg,
</p>
cdevRequestObject* &amp;req);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a pointer to a <em>cdevRequestObject</em> that is specific to this
service and the specified device/message combination. This
method should only be called by the <em>cdevSystem</em> object. This is
a pure virtual function that must be provided by the service
developer.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF155">
getNameServer
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int getNameServer (cdevDevice* &amp;server);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a cdevDevice object identifying the name server for
this service. A service is not required to provide its own name
server and may simply set the <em>server</em> parameter to <em>NULL</em>. This
is a pure virtual function an must be provided by the service
developer.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF156">
getCollectionRequest
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int getCollectionRequest ( char ** devices,
</p>
int nDevices, char * msg,
</p>
cdevCollectionRequest * &amp;req);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This method allows the caller to obtain a
cdevCollectionRequest object that will contain only devices that
are associated with the service. A default mechanism is
provided to support this functionality, however, the developer
may create a special request object to optimize these
operations.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF157">
getFd
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int getFd (int* &amp;fd, int &amp;numFd);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves a list of file descriptors that are contained within the
cdevService object. The <em>fd</em> pointer will be given the pointer to
the internal array of file descriptors, and the <em>numFD</em> parameter
will be set to the number of file descriptors in the list. A service
that does not use file descriptors should set the <em>fd</em> and <em>numFD</em>
parameters to <em>NULL</em> and <em>0</em>, respectively. This is a pure virtual
function that must be provided by the service developer.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF158">
registerFd
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int registerFd (int fd, int opened);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The service developer may implement this method to allow
external file descriptors to be added to the list of file descriptors
in the service. The <em>fd</em> parameter should contain the file
descriptor, and the <em>opened</em> parameter should contain 1 to add it
to the list or 0 to remove it from the list.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF159">
autoErrorOn
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int autoErrorOn (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Informs the cdevService object that it should use its internal
default error handler to process any error messages that are
generated by objects within its control. This is the default
operating condition for the cdevService object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF160">
autoErrorOff
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int autoErrorOff (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Informs the cdevService object that it should use its internal
default error handler to process any error messages that are
generated by objects within its control. This is the default
operating condition for the cdevService object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF161">
reportError
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int reportError ( int severity, char *name,
</p>
cdevRequestObject *obj,
</p>
char *formatString,...);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Emits an error message. The severity field indicates the
severity of the error, the name string identifies the object that
generated the error, the obj parameter is the
cdevRequestObject that was in use when the error occurred,
and the formatString and additional parameters (...) should be
formatted in the same manner as the parameters used by
printf.
</p>
The integer used by severity should have one of the following
values indicating the severity of the error that has occurred.
<!*** Finish FUNC_DEF ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_SEVERITY_INFO:
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
No error.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_SEVERITY_WARN:
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
An error occurred that should
not impact continued
processing.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_SEVERITY_ERROR:
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
An error occurred and should
be corrected before continuing.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_SEVERITY_SEVERE:
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
A severe or fatal error has
occurred and cdev cannot
continue normal execution.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
</table>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF162">
setErrorHandler
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void setErrorHandler (cdevErrorHandler handler);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Used to to install a user specified error handler. This error
handler will be called when an error occurs if the <em>autoErrorOff</em>
method has been used to disable the default error handler. The
user provided error handler should have the following
prototype:
</p>
void handler (int severity, char *text, cdevRequestObject *obj);
</p>
The <em>severity</em> parameter will contain one of the integers
specified in the <em>reportError </em>documentation, the <em>text</em> parameter
will contain the text of the error, and the <em>obj</em> parameter will
contain the cdevRequestObject that was in use when the error
occurred.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF163">
setThreshold
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void setThreshold (int errorThreshold);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Used to specify the level of severity at which errors should be
submitted to the error handler. The value of <em>errorThreshold</em>
should be one of the severity levels specified in the <em>reportError</em>
method.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF164">
name
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
char *name (void) const;
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves the name of the service. This method is used
extensively to determine the service that underlies a specific
<em>cdevRequestObject</em> object. If not over-ridden by the service
developer, this method will return the string &quot;cdevService&quot;.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
12.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF165">
The cdevSync Class
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF166">
Overview of the
cdevSync Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The <em>cdevSync </em>C++ class is a pure virtual base class that declares the I/O operations
that must be supported by the cdevService object and the cdevSystem object.
Because several of its functions are pure virtual, it cannot be instantiated directly.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 14:
<a name="LOFREF14">
Object model of the cdevSync class
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
class cdevSync
methods:
flush ( void ) {pure virtual} :int
poll ( void ) {pure virtual} :int
pend ( int ) {pure virtual} :int
pend ( double, int ) {pure virtual} :int
className ( void ) {virtual} :char *
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 29>
</a> <!*** Finish FIGURE ***!></p></em></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF167">
Public Methods of
the cdevSync
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF168">
flush
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int flush (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Flushes any pending outbound requests to their respective
services. This is a pure virtual method that is implemented in
derived classes.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF169">
poll
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int poll (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Directly polls each of the underlying services for activity, and
delivers any asynchronous callbacks that are ready. This is a
pure virtual function that is implemented in the derived classes.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF170">
pend
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int pend (int fd);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Waits for a default period of time for the specified file descriptor
to have an I/O event. If the fd parameter is not provided, the
cdevSync object will wait for an I/O event on any of its
contained file descriptors. When an event occurs on one of the
file descriptors, the cdevSync object will call the appropriate
functions to process the event and dispatch any asynchronous
callbacks that are ready. This is a pure virtual function that is
implemented in the derived classes.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF171">
pend
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int pend (double seconds, int fd);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Processes all I/O events that occur on the file descriptor during
the specified period of time. If the fd parameter is not provided,
the cdevSync object will wait for I/O events on all of its
contained file descriptors. When an event occurs on one of the
file descriptors, the cdevSync object will call the appropriate
functions to process the event and dispatch any asynchronous
callbacks that are ready. This is a pure virtual function that is
implemented in the derived classes.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
13.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF172">
The cdevSystemBase Class
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF173">
Overview of the
cdevSystemBase
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The <em>cdevSystemBase </em>C++ class is a pure virtual base class that inherits the
capabilities of both the cdevError class and the cdevSync class. It then declares the
functions necessary to obtain a request object. Because several of its functions are
pure virtual, it cannot be instantiated directly.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 15:
<a name="LOFREF15">
Object model of the cdevSystemBase class
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
class cdevSystemBase
methods:
getRequestObject ( ... ) {pure virtual} : int
className ( void ) {virtual} : char *
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 32>
</a> <!*** Finish FIGURE ***!></p></em></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF174">
Public Methods of
the
cdevSystemBase
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF175">
getRequestObject
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int getRequestObject ( char *device, char *msg,
</p>
cdevRequestObject &amp;req);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a reference to a cdevRequestObject from a specified
device name and message name. The object that is produced
by this function will be owned and controlled by the
cdevSystem object that created it. This means that <em>flush, poll
</em>and<em> pend</em> commands must be routed through the owning
cdevSystem object in order to effect this cdevRequetsObject.
Returns <em>CDEV_SUCCESS</em> or an enumerated error code.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
14.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF176">
The cdevSystem Class
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF177">
Overview of the
cdevSystem Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The <em>cdevSystem </em>C++ class provides the mechanisms that cdev uses to manage and
communicate with multiple services. This class also provides the caller with the tools
necessary to instantiate <em>cdevDevice</em> objects and <em>cdevRequestObject</em> objects.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 16:
<a name="LOFREF16">
Object model of the cdevSystem class
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
class cdevSystemBase
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 42>
</a> <!*** Finish FIGURE ***!></p></em></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF178">
Public Methods of
the cdevSystem
Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF179">
attachRef
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static cdevSystem&amp; attachRef(char *name, char *prefix);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a reference to a new or existing cdevSystem object
that has the specified name. The <em>prefix</em> parameter is optional,
but, if provided will be prepended to the name of each <em>device</em>
that is requested through the named cdevSystem object before
it is found in the device definition file.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF180">
attachPtr
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static cdevSystem* attachPtr(char *name, char *prefix);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a pointer to a new or existing cdevSystem object that
has the specified name. The <em>prefix</em> parameter is optional, but, if
provided will be prepended to the name of each <em>device</em> that is
requested through the named cdevSystem object before it is
found in the device definition file.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF181">
defaultSystem
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
static cdevSystem &amp;defaultSystem (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Obtains a reference to the default cdevSystem object. In most
applications this mechanism is used to access the cdevSystem
object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF182">
getDevice
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevDevice* getDevice (char *device);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves a pointer to a cdevDevice object by name. The object
that is returned by this function will be owned and controlled by
the cdevSystem object that created it. This means that <em>flush,
poll </em>and<em> pend</em> commands must be routed through the owning
cdevSystem object in order to effect this cdevDevice object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF183">
getRequestObject
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int getRequestObject ( char *device, char *msg,
</p>
cdevRequestObject &amp;req);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves a reference to a cdevRequestObject from a specified
device name and message name. The object that is produced
by this function will be owned and controlled by the
cdevSystem object that created it. This means that <em>flush, poll
</em>and<em> pend</em> commands must be routed through the owning
cdevSystem object in order to effect this cdevRequestObject.
Returns <em>CDEV_SUCCESS</em> or an enumerated error code.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF184">
name
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
char *name (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Returns the name of this cdevSystem object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF185">
prefix
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
char *prefix (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves a pointer to the prefix string that is currently being
used by the cdevSystem object. See the <em>attachPtr</em> entry for a
description of the prefix string.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF186">
prefix
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void prefix (char *pre);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Changes the prefix string that is being used by the cdevSystem
object. See the <em>attachPtr</em> entry for a description of the prefix
string.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF187">
flush
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int flush (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Flushes any pending outbound requests to their respective
services.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF188">
poll
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int poll (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Directly polls each of the cdevSystem's underlying services for
activity, and delivers any asynchronous callbacks that are
ready.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF189">
pend
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int pend (int fd);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Waits for a default period of time for the specified file descriptor
to have an I/O event. If the fd parameter is not provided, the
cdevSystem object will wait for an I/O event on any of its
contained file descriptors. When an event occurs on one of the
file descriptors, the cdevSystem object will call the respective
cdevService to process the event and dispatch any
asynchronous callbacks that are ready.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF190">
pend
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int pend (double seconds, int fd);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Processes all I/O events that occur on the file descriptor during
the specified period of time. If the fd parameter is not provided,
the cdevSystem object will wait for I/O events on all of its
contained file descriptors. When an event occurs on one of the
file descriptors, the cdevSystem object will call the respective
cdevService to process the event and dispatch any
asynchronous callbacks that are ready.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF191">
getFd
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int getFd (int fd[], int &amp;numFD);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Retrieves a list of file descriptors that are contained within the
cdevSystem object. The fd array must be preallocated, and the
maximum number of elements should be specified in the
numFD parameter. Upon completion, the fd array will be
populated with the list of file descriptors, and the numFD
parameter will contain the actual count.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF192">
addFdChangedCallback
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
</p>
int addFdChangedCallback (cdevFdChangedCallback cbk,
</p>
void*userarg)
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Adds a new function to be called each time a service
announces to the system that it has opened or closed a file
descriptor. The function will be called with 3 arguments:
<!*** Finish FUNC_DEF ***!></p></font>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void (*cdevFdChangedCallback) (int fd, int opened,
</p>
void *userarg)
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The first argument specifies the file descriptor, the second is 1
for opened, 0 for closed, and the last argument is the user
specified argument.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF193">
autoErrorOn
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int autoErrorOn (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Informs the cdevSystem object that it should use its internal
default error handler to process any error messages that are
generated by objects within its control. This is the default
operating condition for the cdevSystem object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF194">
autoErrorOff
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int autoErrorOff (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Informs the cdevSystem object that it should use the user
supplied error handling function to process any error messages
that are generated by objects within its control.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF195">
reportError
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int reportError ( int severity, char *name,
</p>
cdevRequestObject *obj,
</p>
char *formatString,...);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Emits an error message. The severity field indicates the
<em>severity</em> of the error, the <em>name</em> string identifies the object that
generated the error, the <em>obj </em>parameter is the
cdevRequestObject that was in use when the error occurred,
and the <em>formatString </em>and additional parameters (...) should be
formatted in the same manner as the parameters used by
printf.
</p>
The integer used by severity should have one of the following
values indicating the severity of the error that has occurred.
<!*** Finish FUNC_DEF ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_SEVERITY_INFO:
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
No error.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_SEVERITY_WARN:
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
An error occurred that should
not impact continued
processing.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_SEVERITY_ERROR:
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
An error occurred and should
be corrected before continuing.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_SEVERITY_SEVERE:
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
A severe or fatal error has
occurred and cdev cannot
continue normal execution.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF196">
setErrorHandler
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void setErrorHandler (cdevErrorHandler handler);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Used to to install a user specified error handler. This error
handler will be called when an error occurs if the <em>autoErrorOff</em>
method has been used to disable the default error handler. The
user provided error handler should have the following
prototype:
</p>
void handler (int severity, char *text, cdevRequestObject *obj);
</p>
The <em>severity</em> parameter will contain one of the integers
specified in the <em>reportError </em>documentation, the <em>text</em> parameter
will contain the text of the error, and the <em>obj</em> parameter will
contain the cdevRequestObject that was in use when the error
occurred.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF197">
setThreshold
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void setThreshold (int errorThreshold);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Used to specify the level of severity at which errors should be
submitted to the error handler. The value of <em>errorThreshold</em>
should be one of the severity levels specified in the <em>reportError</em>
method.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
15.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF198">
The cdevTranObj Class
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF199">
Overview of the
cdevTranObj Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The cdevTranObj (cdev transaction object) C++ class is a container class that is used
to maintain information that is required for individual operations within a service. This
class stores a copy of the cdevRequestObject that was used to submit a request, the
cdevSystem object in which the request object was created, the cdevCallback object
provided by the user, and the cdevData object that the returned data should be placed
in. Because this object is intended for usage only by cdev internals, all of its data
elements are public.
</p>
The cdevTranObj is used to submit a request from the cdevRequestObject to the
cdevService. It may also be used to place a transaction into a group of requests using
a cdevGroup object. The service notifies the cdevSystem object and the cdevGroup
objects that this transaction has been processed by calling its removeFromGrps
method. This will effectively remove the cdevTranObj from all groups that it is
associated with.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 17:
<a name="LOFREF17">
Object model of the cdevTranObj class
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
class cdevTranObj
properties:
system_ : cdevSystem *
reqObj_ : cdevRequestObject *
resultData_ : cdevData *
userCallback_ : cdevCallback *
methods:
status (void) : int
removeFromGrps (void) : int
enableDeleteCbk (void) : void
disableDeleteCbk (void) : void
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 90>
</a> <!*** Finish FIGURE ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF200">
Public Data
Properties of the
cdevTranObj Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF201">
system_
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevSystem *system_;
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This is a pointer to the cdevSystem that contains this
transaction object. The transaction will be processed whenever
the <em>poll </em>or <em>pend</em> methods of this <em>cdevSystem</em> object are
executed.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF202">
reqObj_
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevRequestObject *reqObj_;
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This is a pointer to the cdevRequestObject that was called to
submit this transaction. This <em>cdevRequestObject</em> will be
submitted to the user specified callback function when the
transaction has been completed.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF203">
resultData_
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevData *resultData_;
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This is the cdevData object that will be populated with the
results of the transaction. This object will also be submitted to
the user specified callback function when the transaction has
been completed.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF204">
userCallback_
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
cdevCallback *userCallback_;
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This class contains a pointer to the caller specified callback
function as well as any user argument. The callback function
will be executed when the transaction has been completed.
Note that it is the responsibility of the service to execute this
callback function when it has finished processing the
transaction.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF205">
Public Member
Functions of the
cdevTranObj Class
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF206">
status
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int status (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Returns the status of the <em>cdevTranObj</em> object. The value
returned will be <strong>1</strong> if this object is a member of any <em>cdevGroup</em>
object, or <strong>-1</strong> if this object is not a member of any <em>cdevGroup</em><strong><em>
</strong></em>object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF207">
removeFromGrps
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
int removeFromGrps (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Removes this transaction object from any <em>cdevGroup</em> object
that it may be in.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF208">
enableDeleteCbk
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void enableDeleteCbk (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Sets the internal flag telling the transaction object to delete its
internal callback object while executing its destructor. This is
the default behavior for the cdevTranObj.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF209">
disableDeleteCbk
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
void disableDeleteCbk (void);
<!*** Finish FUNC_PROTO ***!></p></em></font>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Sets the internal flag telling the transaction object not to delete
its internal callback object while executing its destructor. This
mode should be used when the user specified callback object
is shared by numerous transaction objects.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
16.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF210">
Language Specification for the cdev DDL file
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF211">
Language
Specification
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
In the following, required language elements are in double quotes, optional elements
are in square brackets. Names are arbitrary character strings. value is of any type.
Plus sign indicates concatenation, vertical bar alternate choices.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 18:
<a name="LOFREF18">
Language specification for the cdev DDL file
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong>
specification = serviceSpecs + classSpecs + instances + aliases +
collections
serviceSpecs = serviceSpec + [serviceSpecs]
serviceSpec = &quot;service&quot; + name + &quot;{&quot; + &quot;tags&quot; + &quot;{&quot; + tagList + &quot;}&quot;
+ &quot;}&quot;
tagList = tag + [&quot;,&quot; + tagList]
classSpecs = classSpec + [classSpecs]
classSpec = &quot;class&quot; + name + [&quot; : &quot; + parentList] + &quot;{&quot; +
verbs + attributes + messages
parentList = name + [&quot;,&quot; + parentList]
verbs = &quot;verbs&quot; + &quot;{&quot; + verbList + &quot;}&quot;
verbList = name + [&quot;,&quot; + verbList]
attributes = &quot;attributes&quot; + &quot;{&quot; + attrList + &quot;}&quot;
attrList = name + serviceName + [&quot;{&quot; + serviceData + &quot;}&quot;] + [&quot;;&quot; +
attrList]
serviceData = name + &quot;=&quot; + value
messages = &quot;messages&quot; + &quot;{&quot; + msgList + &quot;}&quot;
msgList = msg + serviceName + [&quot;{&quot; + serviceData + &quot;}&quot;] + [&quot;;&quot; +
msgList]
msg = name | &quot;&quot;&quot;string&quot;&quot;&quot;
instances = className + &quot;:&quot; instanceList + &quot;;&quot;
instanceList = instance + [&quot; &quot; + instanceList]
aliases = alias + [&quot; &quot; + aliases]
alias = &quot;alias &quot; + aliasname + &quot; &quot; + actualname
collections = collection + &quot; &quot; + name + &quot; : &quot; instanceList + &quot;;&quot;
instanceList = instance + [&quot; &quot; + instanceList]
<!*** Finish PROGRAM ***!></strong></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 95>
</a> <!*** Finish FIGURE ***!></p></em></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
17.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF212">
Regular Expressions
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF213">
Overview of
Regular
Expressions
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
A regular expression is a mechanism supported by many utilities for locating and
manipulating patterns in text. Basic regular expression (RE) notation and construction
rules apply to utilities defined as using basic REs. Any exceptions to the following
rules are noted in the descriptions of the specific utilities that use REs.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF214">
Ordinary
Characters
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
An ordinary character is an RE that matches itself. An ordinary character is any
character in the supported character set except &lt;newline&gt; and the regular expression
special characters listed in Special Characters below. An ordinary character preceded
by a backslash (\\) is treated as the ordinary character itself, except when the character
is (, ), {, or }, or the digits 1 through 9 (see REs Matching Multiple Characters).
Matching is based on the bit pattern used for encoding the character; not on the
graphic representation of the character.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF215">
Special Characters
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
A regular expression special character preceded by a backslash is a regular
expression that matches the special character itself. When not preceded by a
backslash, such characters have special meaning in the specification of REs. Regular
expression special characters and the contexts in which they have special meaning
are:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF216">
. [ \\
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The period, left square bracket, and backslash are special
except when used in a bracket expression (see RE Bracket
Expression).
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF217">
*
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The asterisk is special except when used in a bracket
expression, as the first character of a regular expression, or as
the first character following the character pair \\( (see REs
Matching Multiple Characters).
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF218">
^
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The circumflex is special when used as the first character of an
entire RE (see Expression Anchoring) or as the first character
of a bracket expression.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF219">
$
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The dollar sign is special when used as the last character of an
entire RE (see Expression Anchoring).
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF220">
delimiter
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Any character used to bound (i.e., delimit) an entire RE is
special for that RE.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF221">
period
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
A period (.), when used outside of a bracket expression, is an
RE that matches any printable or nonprintable character except
&lt;newline&gt;.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF222">
Bracket
Expression
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
A bracket expression enclosed in square brackets ([ ]) is an RE that matches a single
collating element contained in the nonempty set of collating elements represented by
the bracket expression. The following rules apply to bracket expressions:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF223">
bracket expression
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
A bracket expression is either a matching list expression or a
non-matching list expression, and consists of one or more
expressions in any order. Expressions can be: collating
elements, collating symbols, noncollating characters,
equivalence classes, range expressions, or character classes.
The right bracket (]) loses its special meaning and represents
itself in a bracket expression if it occurs first in the list (after an
initial ^, if any). Otherwise, it terminates the bracket expression
(unless it is the ending right bracket for a valid collating symbol,
equivalence class, or character class, or it is the collating
element within a collating symbol or equivalence class
expression). The special characters
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF224">
. * [ \\
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
(period, asterisk, left bracket, and backslash) lose their special
meaning within a bracket expression.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF225">
matching list
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
A matching list expression specifies a list that matches any one
of the characters represented in the list. The first character in
the list cannot be the circumflex. For example, [abc] is an RE
that matches any of a, b, or c.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF226">
non-matching list
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
A non-matching list expression begins with a circumflex (^), and
specifies a list that matches any character except &lt;newline&gt;
and the characters represented in the list. For example, [^abc]
is an RE that matches any character except &lt;newline&gt; or a, b,
or c. The circumflex has this special meaning only when it
occurs first in the list, immediately following the left square
bracket.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF227">
collating element
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
A collating element is a sequence of one or more characters
that represents a single element in the collating sequence as
identified via the most current setting of the locale category
LC_COLLATE (see setlocale(3C)).
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF228">
collating symbol
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
A collating symbol is a collating element enclosed within
bracket-period ([.....]) delimiters. Multi-character collating
elements must be represented as collating symbols to
distinguish them from single-character collating elements. For
example, if the string ch is a valid collating element, then [.ch.]
is treated as an element matching the same string of
characters, while ch is treated as a simple list of the characters
c and h. If the string within the bracket-period delimiters is not a
valid collating element in the current collating sequence
definition, the symbol is treated as an invalid expression.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF229">
noncollating char
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
A noncollating character is a character that is ignored for
collating purposes. By definition, such characters cannot
participate in equivalence classes or range expressions.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF230">
equivalence class
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
An equivalence class expression represents the set of collating
elements belonging to an equivalence class. It is expressed by
enclosing any one of the collating elements in the equivalence
class within bracket-equal ([=...=]) delimiters. For example, if
,,and A belong to the same equivalence class, then [[=a=]b],
=]b], and [[=A=]b] are each equivalent toAb].
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF231">
range expression
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
A range expression represents the set of collating elements
that fall between two elements in the current collation sequence
as defined via the most current setting of the locale category
LC_COLLATE (see setlocale(3C)). It is expressed as the
starting point and the ending point separated by a hyphen (-).
</p>
The starting range point and the ending range point must be a
collating element, collating symbol, or equivalence class
expression. An equivalence class expression used as an end
point of a range expression is interpreted such that all collating
elements within the equivalence class are included in the
range. For example, if the collating order is A, a, B, b, C, c, ch,
D, d; and A and a constitute an equivalence class, then the
expression [[=a=]-D] is treated as [AaBbCc[.ch.]D].
</p>
Both starting and ending range points must be valid collating
elements, collating symbols, or equivalence class expressions,
and the ending range point must collate equal to or higher than
the starting range point; otherwise the expression is invalid. For
example, with the above collating order and assuming that E is
a noncollating character, then both the expressions [[=A=]-E]
and [d-a] are invalid.
</p>
An ending range point can also be the starting range point in a
subsequent range expression. Each such range expression is
evaluated separately. For example, the bracket expression [a-
m-o] is treated as [a-mm-o].
</p>
The hyphen character is treated as itself if it occurs first (after
an initial ^, if any) or last in the list, or as the rightmost symbol in
a range expression. As examples, the expressions [-ac] and
[ac-] are equivalent and match any of the characters a, c, or -;
the expressions [^-ac] and [^ac-] are equivalent and match any
characters except &lt;newline&gt;, a, c, or -; the expression [%--]
matches any of the characters in the defined collating
sequence between % and - inclusive; the expression [--@]
matches any of the characters in the defined collating
sequence between - and @ inclusive; and the expression [a--
@] is invalid, assuming - precedes a in the collating sequence.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF232">
character class
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
A character class expression represents the set of characters
belonging to a character class, as defined via the most current
setting of the locale category LC_CTYPE. It is expressed as a
character class name enclosed within bracket-colon ([: :])
delimiters.
</p>
Valid character class expressions and the class they represent
are:
</p>
[:alpha:] letters
</p>
[:upper:] upper-case letters
</p>
[:lower:] lower-case letters
</p>
[:digit:] decimal digits
</p>
[:xdigit:] hexadecimal digits
</p>
[:alnum:] letters or decimal digits
</p>
[:space:] characters producing white- space in displayed text
</p>
[:print:] printing characters
</p>
[:punct:] punctuation characters
</p>
[:graph:] characters with a visible representation
</p>
[:cntrl:] control characters
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF233">
Matching Multiple
Characters
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The following rules may be used to construct REs matching multiple characters from
REs matching a single character:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF234">
RERE
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The concatenation of REs is an RE that matches the first
encountered concatenation of the strings matched by each
component of the RE. For example, the RE bc matches the
second and third characters of the string abcdefabcdef.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF235">
RE*
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
An RE matching a single character followed by an asterisk (*) is
an RE that matches zero or more occurrences of the RE
preceding the asterisk. The first encountered string that permits
a match is chosen, and the matched string will encompass the
maximum number of characters permitted by the RE. For
example, in the string abbbcdeabbbbbbcde, both the RE b*c
and the RE bbb*c are matched by the
</p>
substring bbbc in the second through fifth positions. An asterisk
as the first character of an RE loses this special meaning and is
treated as itself.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF236">
\\(RE\\)
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
A subexpression can be defined within an RE by enclosing it
between the character pairs \\( and \\). Such a subexpression
matches whatever it would have matched without the \\( and \\).
Subexpressions can be arbitrarily nested. An asterisk
immediately following the \\( loses its special meaning and is
treated as itself. An asterisk immediately following the \\) is
treated as an invalid character.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF237">
\\n
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The expression \\n matches the same string of characters as
was matched by a subexpression enclosed between \\( and \\)
preceding the \\n. The character n must be a digit from 1
through 9, specifying the n-th subexpression (the one that
begins with the n-th \\( and ends with the corresponding paired
\\). For example, the expression ^\\(.*\\)\\1$ matches a line
consisting of two adjacent appearances of the same string.
</p>
If the \\n is followed by an asterisk, it matches zero or more
occurrences of the subexpression referred to. For example, the
expression \\(ab\\(cd\\)ef\\)Z\\2*Z\\1 matches the string
abcdefZcdcdZabcdef.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
<a name="TOCREF238">
RE\\{m,n\\}
</a> <!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
An RE matching a single character followed by \\{m\\}, \\{m,\\}, or
\\{m,n\\} is an RE that matches repeated occurrences of the RE.
The values of m and n must be decimal integers in the range 0
through 255, with m specifying the exact or minimum number of
occurrences and n specifying the maximum number of
occurrences. \\{m\\} matches exactly m occurrences of the
preceding RE, \\{m,\\} matches at least m occurrences, and
\\{m,n\\} matches any number of occurrences between m and n,
inclusive.
</p>
The first encountered string that matches the expression is
chosen; it will contain as many occurrences of the RE as
possible. For example, in the string abbbbbbbc the RE b\\{3\\} is
matched by characters two through four, the RE b\\{3,\\} is
matched by characters two through eight, and the RE b\\{3,5\\}c
is matched by characters four through nine.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF239">
Expression
Anchoring
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
An RE can be limited to matching strings that begin or end a line (i.e., anchored)
according to the following rules:
<!*** Finish BODY ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
A circumflex (^)as the first RE anchors the expression to the beginning of a line;
only strings starting at the first character of a line are matched by the RE. For
example, the RE ^ab matches the string ab in the line abcdef, but not the same
string in the line cdefab.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
A dollar sign ($) as the last character of an RE anchors the expression to the end
of a line; only strings ending at the last character of a line are matched by the RE.
For example, the RE ab$ matches the string ab in the line cdefab, but not the
same string in the line abcdef.
<!*** Finish ***!></p></font>
<!*** Start ***!>
<img src="bullet.jpg">
An RE anchored by both ^ and $ matches only strings that are lines. For example,
the RE ^abcdef$ matches only lines consisting of the string abcdef.
<!*** Finish ***!></p></font>
<!*** Start BODY ***!><font size=+1 color=Black>
<!*** Finish BODY ***!></p></font>
<!*** Start ***!>
<!*** Finish ***!></p></font>
</td></tr>
</table>
</body>