home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _e53877ca9c6406ce4d5126c462ad89fe < prev    next >
Text File  |  2000-03-23  |  20KB  |  579 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>B - The Perl Compiler</TITLE>
  5. <LINK REL="stylesheet" HREF="../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> B - The Perl Compiler</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  24.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  25.     <LI><A HREF="#overview of classes">OVERVIEW OF CLASSES</A></LI>
  26.     <UL>
  27.  
  28.         <LI><A HREF="#svrelated classes">SV-RELATED CLASSES</A></LI>
  29.         <LI><A HREF="#b::sv methods">B::SV METHODS</A></LI>
  30.         <LI><A HREF="#b::iv methods">B::IV METHODS</A></LI>
  31.         <LI><A HREF="#b::nv methods">B::NV METHODS</A></LI>
  32.         <LI><A HREF="#b::rv methods">B::RV METHODS</A></LI>
  33.         <LI><A HREF="#b::pv methods">B::PV METHODS</A></LI>
  34.         <LI><A HREF="#b::pvmg methods">B::PVMG METHODS</A></LI>
  35.         <LI><A HREF="#b::magic methods">B::MAGIC METHODS</A></LI>
  36.         <LI><A HREF="#b::pvlv methods">B::PVLV METHODS</A></LI>
  37.         <LI><A HREF="#b::bm methods">B::BM METHODS</A></LI>
  38.         <LI><A HREF="#b::gv methods">B::GV METHODS</A></LI>
  39.         <LI><A HREF="#b::io methods">B::IO METHODS</A></LI>
  40.         <LI><A HREF="#b::av methods">B::AV METHODS</A></LI>
  41.         <LI><A HREF="#b::cv methods">B::CV METHODS</A></LI>
  42.         <LI><A HREF="#b::hv methods">B::HV METHODS</A></LI>
  43.         <LI><A HREF="#oprelated classes">OP-RELATED CLASSES</A></LI>
  44.         <LI><A HREF="#b::op methods">B::OP METHODS</A></LI>
  45.         <LI><A HREF="#b::unop method">B::UNOP METHOD</A></LI>
  46.         <LI><A HREF="#b::binop method">B::BINOP METHOD</A></LI>
  47.         <LI><A HREF="#b::logop method">B::LOGOP METHOD</A></LI>
  48.         <LI><A HREF="#b::listop method">B::LISTOP METHOD</A></LI>
  49.         <LI><A HREF="#b::pmop methods">B::PMOP METHODS</A></LI>
  50.         <LI><A HREF="#b::svop method">B::SVOP METHOD</A></LI>
  51.         <LI><A HREF="#b::padop method">B::PADOP METHOD</A></LI>
  52.         <LI><A HREF="#b::pvop method">B::PVOP METHOD</A></LI>
  53.         <LI><A HREF="#b::loop methods">B::LOOP METHODS</A></LI>
  54.         <LI><A HREF="#b::cop methods">B::COP METHODS</A></LI>
  55.     </UL>
  56.  
  57.     <LI><A HREF="#functions exported by b">FUNCTIONS EXPORTED BY <CODE>B</CODE></A></LI>
  58.     <LI><A HREF="#author">AUTHOR</A></LI>
  59. </UL>
  60. <!-- INDEX END -->
  61.  
  62. <HR>
  63. <P>
  64. <H1><A NAME="name">NAME</A></H1>
  65. <P>B - The Perl Compiler</P>
  66. <P>
  67. <HR>
  68. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  69. <UL>
  70. <LI>Linux</LI>
  71. <LI>Solaris</LI>
  72. <LI>Windows</LI>
  73. </UL>
  74. <HR>
  75. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  76. <PRE>
  77.         use B;</PRE>
  78. <P>
  79. <HR>
  80. <H1><A NAME="description">DESCRIPTION</A></H1>
  81. <P>The <CODE>B</CODE> module supplies classes which allow a Perl program to delve
  82. into its own innards. It is the module used to implement the
  83. ``backends'' of the Perl compiler. Usage of the compiler does not
  84. require knowledge of this module: see the <EM>O</EM> module for the
  85. user-visible part. The <CODE>B</CODE> module is of use to those who want to
  86. write new compiler backends. This documentation assumes that the
  87. reader knows a fair amount about perl's internals including such
  88. things as SVs, OPs and the internal symbol table and syntax tree
  89. of a program.</P>
  90. <P>
  91. <HR>
  92. <H1><A NAME="overview of classes">OVERVIEW OF CLASSES</A></H1>
  93. <P>The C structures used by Perl's internals to hold SV and OP
  94. information (PVIV, AV, HV, ..., OP, SVOP, UNOP, ...) are modelled on a
  95. class hierarchy and the <CODE>B</CODE> module gives access to them via a true
  96. object hierarchy. Structure fields which point to other objects
  97. (whether types of SV or types of OP) are represented by the <CODE>B</CODE>
  98. module as Perl objects of the appropriate class. The bulk of the <CODE>B</CODE>
  99. module is the methods for accessing fields of these structures. Note
  100. that all access is read-only: you cannot modify the internals by
  101. using this module.</P>
  102. <P>
  103. <H2><A NAME="svrelated classes">SV-RELATED CLASSES</A></H2>
  104. <P>B::IV, B::NV, B::RV, B::PV, B::PVIV, B::PVNV, B::PVMG, B::BM, B::PVLV,
  105. B::AV, B::HV, B::CV, B::GV, B::FM, B::IO. These classes correspond in
  106. the obvious way to the underlying C structures of similar names. The
  107. inheritance hierarchy mimics the underlying C ``inheritance''. Access
  108. methods correspond to the underlying C macros for field access,
  109. usually with the leading ``class indication'' prefix removed (Sv, Av,
  110. Hv, ...). The leading prefix is only left in cases where its removal
  111. would cause a clash in method name. For example, <A HREF="#item_GvREFCNT"><CODE>GvREFCNT</CODE></A> stays
  112. as-is since its abbreviation would clash with the ``superclass'' method
  113. <A HREF="#item_REFCNT"><CODE>REFCNT</CODE></A> (corresponding to the C function <CODE>SvREFCNT</CODE>).</P>
  114. <P>
  115. <H2><A NAME="b::sv methods">B::SV METHODS</A></H2>
  116. <DL>
  117. <DT><STRONG><A NAME="item_REFCNT">REFCNT</A></STRONG><BR>
  118. <DD>
  119. <DT><STRONG><A NAME="item_FLAGS">FLAGS</A></STRONG><BR>
  120. <DD>
  121. </DL>
  122. <P>
  123. <H2><A NAME="b::iv methods">B::IV METHODS</A></H2>
  124. <DL>
  125. <DT><STRONG><A NAME="item_IV">IV</A></STRONG><BR>
  126. <DD>
  127. <DT><STRONG><A NAME="item_IVX">IVX</A></STRONG><BR>
  128. <DD>
  129. <DT><STRONG><A NAME="item_needs64bits">needs64bits</A></STRONG><BR>
  130. <DD>
  131. <DT><STRONG><A NAME="item_packiv">packiv</A></STRONG><BR>
  132. <DD>
  133. </DL>
  134. <P>
  135. <H2><A NAME="b::nv methods">B::NV METHODS</A></H2>
  136. <DL>
  137. <DT><STRONG><A NAME="item_NV">NV</A></STRONG><BR>
  138. <DD>
  139. <DT><STRONG><A NAME="item_NVX">NVX</A></STRONG><BR>
  140. <DD>
  141. </DL>
  142. <P>
  143. <H2><A NAME="b::rv methods">B::RV METHODS</A></H2>
  144. <DL>
  145. <DT><STRONG><A NAME="item_RV">RV</A></STRONG><BR>
  146. <DD>
  147. </DL>
  148. <P>
  149. <H2><A NAME="b::pv methods">B::PV METHODS</A></H2>
  150. <DL>
  151. <DT><STRONG><A NAME="item_PV">PV</A></STRONG><BR>
  152. <DD>
  153. </DL>
  154. <P>
  155. <H2><A NAME="b::pvmg methods">B::PVMG METHODS</A></H2>
  156. <DL>
  157. <DT><STRONG><A NAME="item_MAGIC">MAGIC</A></STRONG><BR>
  158. <DD>
  159. <DT><STRONG><A NAME="item_SvSTASH">SvSTASH</A></STRONG><BR>
  160. <DD>
  161. </DL>
  162. <P>
  163. <H2><A NAME="b::magic methods">B::MAGIC METHODS</A></H2>
  164. <DL>
  165. <DT><STRONG><A NAME="item_MOREMAGIC">MOREMAGIC</A></STRONG><BR>
  166. <DD>
  167. <DT><STRONG><A NAME="item_PRIVATE">PRIVATE</A></STRONG><BR>
  168. <DD>
  169. <DT><STRONG><A NAME="item_TYPE">TYPE</A></STRONG><BR>
  170. <DD>
  171. <DT><STRONG>FLAGS</STRONG><BR>
  172. <DD>
  173. <DT><STRONG><A NAME="item_OBJ">OBJ</A></STRONG><BR>
  174. <DD>
  175. <DT><STRONG><A NAME="item_PTR">PTR</A></STRONG><BR>
  176. <DD>
  177. </DL>
  178. <P>
  179. <H2><A NAME="b::pvlv methods">B::PVLV METHODS</A></H2>
  180. <DL>
  181. <DT><STRONG><A NAME="item_TARGOFF">TARGOFF</A></STRONG><BR>
  182. <DD>
  183. <DT><STRONG><A NAME="item_TARGLEN">TARGLEN</A></STRONG><BR>
  184. <DD>
  185. <DT><STRONG>TYPE</STRONG><BR>
  186. <DD>
  187. <DT><STRONG><A NAME="item_TARG">TARG</A></STRONG><BR>
  188. <DD>
  189. </DL>
  190. <P>
  191. <H2><A NAME="b::bm methods">B::BM METHODS</A></H2>
  192. <DL>
  193. <DT><STRONG><A NAME="item_USEFUL">USEFUL</A></STRONG><BR>
  194. <DD>
  195. <DT><STRONG><A NAME="item_PREVIOUS">PREVIOUS</A></STRONG><BR>
  196. <DD>
  197. <DT><STRONG><A NAME="item_RARE">RARE</A></STRONG><BR>
  198. <DD>
  199. <DT><STRONG><A NAME="item_TABLE">TABLE</A></STRONG><BR>
  200. <DD>
  201. </DL>
  202. <P>
  203. <H2><A NAME="b::gv methods">B::GV METHODS</A></H2>
  204. <DL>
  205. <DT><STRONG><A NAME="item_is_empty">is_empty</A></STRONG><BR>
  206. <DD>
  207. This method returns TRUE if the GP field of the GV is NULL.
  208. <P></P>
  209. <DT><STRONG><A NAME="item_NAME">NAME</A></STRONG><BR>
  210. <DD>
  211. <DT><STRONG><A NAME="item_STASH">STASH</A></STRONG><BR>
  212. <DD>
  213. <DT><STRONG><A NAME="item_SV">SV</A></STRONG><BR>
  214. <DD>
  215. <DT><STRONG><A NAME="item_IO">IO</A></STRONG><BR>
  216. <DD>
  217. <DT><STRONG><A NAME="item_FORM">FORM</A></STRONG><BR>
  218. <DD>
  219. <DT><STRONG><A NAME="item_AV">AV</A></STRONG><BR>
  220. <DD>
  221. <DT><STRONG><A NAME="item_HV">HV</A></STRONG><BR>
  222. <DD>
  223. <DT><STRONG><A NAME="item_EGV">EGV</A></STRONG><BR>
  224. <DD>
  225. <DT><STRONG><A NAME="item_CV">CV</A></STRONG><BR>
  226. <DD>
  227. <DT><STRONG><A NAME="item_CVGEN">CVGEN</A></STRONG><BR>
  228. <DD>
  229. <DT><STRONG><A NAME="item_LINE">LINE</A></STRONG><BR>
  230. <DD>
  231. <DT><STRONG><A NAME="item_FILE">FILE</A></STRONG><BR>
  232. <DD>
  233. <DT><STRONG><A NAME="item_FILEGV">FILEGV</A></STRONG><BR>
  234. <DD>
  235. <DT><STRONG><A NAME="item_GvREFCNT">GvREFCNT</A></STRONG><BR>
  236. <DD>
  237. <DT><STRONG>FLAGS</STRONG><BR>
  238. <DD>
  239. </DL>
  240. <P>
  241. <H2><A NAME="b::io methods">B::IO METHODS</A></H2>
  242. <DL>
  243. <DT><STRONG><A NAME="item_LINES">LINES</A></STRONG><BR>
  244. <DD>
  245. <DT><STRONG><A NAME="item_PAGE">PAGE</A></STRONG><BR>
  246. <DD>
  247. <DT><STRONG><A NAME="item_PAGE_LEN">PAGE_LEN</A></STRONG><BR>
  248. <DD>
  249. <DT><STRONG><A NAME="item_LINES_LEFT">LINES_LEFT</A></STRONG><BR>
  250. <DD>
  251. <DT><STRONG><A NAME="item_TOP_NAME">TOP_NAME</A></STRONG><BR>
  252. <DD>
  253. <DT><STRONG><A NAME="item_TOP_GV">TOP_GV</A></STRONG><BR>
  254. <DD>
  255. <DT><STRONG><A NAME="item_FMT_NAME">FMT_NAME</A></STRONG><BR>
  256. <DD>
  257. <DT><STRONG><A NAME="item_FMT_GV">FMT_GV</A></STRONG><BR>
  258. <DD>
  259. <DT><STRONG><A NAME="item_BOTTOM_NAME">BOTTOM_NAME</A></STRONG><BR>
  260. <DD>
  261. <DT><STRONG><A NAME="item_BOTTOM_GV">BOTTOM_GV</A></STRONG><BR>
  262. <DD>
  263. <DT><STRONG><A NAME="item_SUBPROCESS">SUBPROCESS</A></STRONG><BR>
  264. <DD>
  265. <DT><STRONG><A NAME="item_IoTYPE">IoTYPE</A></STRONG><BR>
  266. <DD>
  267. <DT><STRONG><A NAME="item_IoFLAGS">IoFLAGS</A></STRONG><BR>
  268. <DD>
  269. </DL>
  270. <P>
  271. <H2><A NAME="b::av methods">B::AV METHODS</A></H2>
  272. <DL>
  273. <DT><STRONG><A NAME="item_FILL">FILL</A></STRONG><BR>
  274. <DD>
  275. <DT><STRONG><A NAME="item_MAX">MAX</A></STRONG><BR>
  276. <DD>
  277. <DT><STRONG><A NAME="item_OFF">OFF</A></STRONG><BR>
  278. <DD>
  279. <DT><STRONG><A NAME="item_ARRAY">ARRAY</A></STRONG><BR>
  280. <DD>
  281. <DT><STRONG><A NAME="item_AvFLAGS">AvFLAGS</A></STRONG><BR>
  282. <DD>
  283. </DL>
  284. <P>
  285. <H2><A NAME="b::cv methods">B::CV METHODS</A></H2>
  286. <DL>
  287. <DT><STRONG>STASH</STRONG><BR>
  288. <DD>
  289. <DT><STRONG><A NAME="item_START">START</A></STRONG><BR>
  290. <DD>
  291. <DT><STRONG><A NAME="item_ROOT">ROOT</A></STRONG><BR>
  292. <DD>
  293. <DT><STRONG><A NAME="item_GV">GV</A></STRONG><BR>
  294. <DD>
  295. <DT><STRONG>FILE</STRONG><BR>
  296. <DD>
  297. <DT><STRONG><A NAME="item_DEPTH">DEPTH</A></STRONG><BR>
  298. <DD>
  299. <DT><STRONG><A NAME="item_PADLIST">PADLIST</A></STRONG><BR>
  300. <DD>
  301. <DT><STRONG><A NAME="item_OUTSIDE">OUTSIDE</A></STRONG><BR>
  302. <DD>
  303. <DT><STRONG><A NAME="item_XSUB">XSUB</A></STRONG><BR>
  304. <DD>
  305. <DT><STRONG><A NAME="item_XSUBANY">XSUBANY</A></STRONG><BR>
  306. <DD>
  307. <DT><STRONG><A NAME="item_CvFLAGS">CvFLAGS</A></STRONG><BR>
  308. <DD>
  309. </DL>
  310. <P>
  311. <H2><A NAME="b::hv methods">B::HV METHODS</A></H2>
  312. <DL>
  313. <DT><STRONG>FILL</STRONG><BR>
  314. <DD>
  315. <DT><STRONG>MAX</STRONG><BR>
  316. <DD>
  317. <DT><STRONG><A NAME="item_KEYS">KEYS</A></STRONG><BR>
  318. <DD>
  319. <DT><STRONG><A NAME="item_RITER">RITER</A></STRONG><BR>
  320. <DD>
  321. <DT><STRONG>NAME</STRONG><BR>
  322. <DD>
  323. <DT><STRONG><A NAME="item_PMROOT">PMROOT</A></STRONG><BR>
  324. <DD>
  325. <DT><STRONG>ARRAY</STRONG><BR>
  326. <DD>
  327. </DL>
  328. <P>
  329. <H2><A NAME="oprelated classes">OP-RELATED CLASSES</A></H2>
  330. <P>B::OP, B::UNOP, B::BINOP, B::LOGOP, B::LISTOP, B::PMOP,
  331. B::SVOP, B::PADOP, B::PVOP, B::CVOP, B::LOOP, B::COP.
  332. These classes correspond in
  333. the obvious way to the underlying C structures of similar names. The
  334. inheritance hierarchy mimics the underlying C ``inheritance''. Access
  335. methods correspond to the underlying C structre field names, with the
  336. leading ``class indication'' prefix removed (op_).</P>
  337. <P>
  338. <H2><A NAME="b::op methods">B::OP METHODS</A></H2>
  339. <DL>
  340. <DT><STRONG><A NAME="item_next">next</A></STRONG><BR>
  341. <DD>
  342. <DT><STRONG><A NAME="item_sibling">sibling</A></STRONG><BR>
  343. <DD>
  344. <DT><STRONG><A NAME="item_name">name</A></STRONG><BR>
  345. <DD>
  346. This returns the op name as a string (e.g. ``add'', ``rv2av'').
  347. <P></P>
  348. <DT><STRONG><A NAME="item_ppaddr">ppaddr</A></STRONG><BR>
  349. <DD>
  350. This returns the function name as a string (e.g. ``PL_ppaddr[OP_ADD]'',
  351. ``PL_ppaddr[OP_RV2AV]'').
  352. <P></P>
  353. <DT><STRONG><A NAME="item_desc">desc</A></STRONG><BR>
  354. <DD>
  355. This returns the op description from the global C PL_op_desc array
  356. (e.g. ``addition'' ``array deref'').
  357. <P></P>
  358. <DT><STRONG><A NAME="item_targ">targ</A></STRONG><BR>
  359. <DD>
  360. <DT><STRONG><A NAME="item_type">type</A></STRONG><BR>
  361. <DD>
  362. <DT><STRONG><A NAME="item_seq">seq</A></STRONG><BR>
  363. <DD>
  364. <DT><STRONG><A NAME="item_flags">flags</A></STRONG><BR>
  365. <DD>
  366. <DT><STRONG><A NAME="item_private">private</A></STRONG><BR>
  367. <DD>
  368. </DL>
  369. <P>
  370. <H2><A NAME="b::unop method">B::UNOP METHOD</A></H2>
  371. <DL>
  372. <DT><STRONG><A NAME="item_first">first</A></STRONG><BR>
  373. <DD>
  374. </DL>
  375. <P>
  376. <H2><A NAME="b::binop method">B::BINOP METHOD</A></H2>
  377. <DL>
  378. <DT><STRONG><A NAME="item_last">last</A></STRONG><BR>
  379. <DD>
  380. </DL>
  381. <P>
  382. <H2><A NAME="b::logop method">B::LOGOP METHOD</A></H2>
  383. <DL>
  384. <DT><STRONG><A NAME="item_other">other</A></STRONG><BR>
  385. <DD>
  386. </DL>
  387. <P>
  388. <H2><A NAME="b::listop method">B::LISTOP METHOD</A></H2>
  389. <DL>
  390. <DT><STRONG><A NAME="item_children">children</A></STRONG><BR>
  391. <DD>
  392. </DL>
  393. <P>
  394. <H2><A NAME="b::pmop methods">B::PMOP METHODS</A></H2>
  395. <DL>
  396. <DT><STRONG><A NAME="item_pmreplroot">pmreplroot</A></STRONG><BR>
  397. <DD>
  398. <DT><STRONG><A NAME="item_pmreplstart">pmreplstart</A></STRONG><BR>
  399. <DD>
  400. <DT><STRONG><A NAME="item_pmnext">pmnext</A></STRONG><BR>
  401. <DD>
  402. <DT><STRONG><A NAME="item_pmregexp">pmregexp</A></STRONG><BR>
  403. <DD>
  404. <DT><STRONG><A NAME="item_pmflags">pmflags</A></STRONG><BR>
  405. <DD>
  406. <DT><STRONG><A NAME="item_pmpermflags">pmpermflags</A></STRONG><BR>
  407. <DD>
  408. <DT><STRONG><A NAME="item_precomp">precomp</A></STRONG><BR>
  409. <DD>
  410. </DL>
  411. <P>
  412. <H2><A NAME="b::svop method">B::SVOP METHOD</A></H2>
  413. <DL>
  414. <DT><STRONG><A NAME="item_sv">sv</A></STRONG><BR>
  415. <DD>
  416. <DT><STRONG><A NAME="item_gv">gv</A></STRONG><BR>
  417. <DD>
  418. </DL>
  419. <P>
  420. <H2><A NAME="b::padop method">B::PADOP METHOD</A></H2>
  421. <DL>
  422. <DT><STRONG><A NAME="item_padix">padix</A></STRONG><BR>
  423. <DD>
  424. </DL>
  425. <P>
  426. <H2><A NAME="b::pvop method">B::PVOP METHOD</A></H2>
  427. <DL>
  428. <DT><STRONG><A NAME="item_pv">pv</A></STRONG><BR>
  429. <DD>
  430. </DL>
  431. <P>
  432. <H2><A NAME="b::loop methods">B::LOOP METHODS</A></H2>
  433. <DL>
  434. <DT><STRONG><A NAME="item_redoop">redoop</A></STRONG><BR>
  435. <DD>
  436. <DT><STRONG><A NAME="item_nextop">nextop</A></STRONG><BR>
  437. <DD>
  438. <DT><STRONG><A NAME="item_lastop">lastop</A></STRONG><BR>
  439. <DD>
  440. </DL>
  441. <P>
  442. <H2><A NAME="b::cop methods">B::COP METHODS</A></H2>
  443. <DL>
  444. <DT><STRONG><A NAME="item_label">label</A></STRONG><BR>
  445. <DD>
  446. <DT><STRONG><A NAME="item_stash">stash</A></STRONG><BR>
  447. <DD>
  448. <DT><STRONG><A NAME="item_file">file</A></STRONG><BR>
  449. <DD>
  450. <DT><STRONG><A NAME="item_cop_seq">cop_seq</A></STRONG><BR>
  451. <DD>
  452. <DT><STRONG><A NAME="item_arybase">arybase</A></STRONG><BR>
  453. <DD>
  454. <DT><STRONG><A NAME="item_line">line</A></STRONG><BR>
  455. <DD>
  456. </DL>
  457. <P>
  458. <HR>
  459. <H1><A NAME="functions exported by b">FUNCTIONS EXPORTED BY <CODE>B</CODE></A></H1>
  460. <P>The <CODE>B</CODE> module exports a variety of functions: some are simple
  461. utility functions, others provide a Perl program with a way to
  462. get an initial ``handle'' on an internal object.</P>
  463. <DL>
  464. <DT><STRONG><A NAME="item_main_cv">main_cv</A></STRONG><BR>
  465. <DD>
  466. Return the (faked) CV corresponding to the main part of the Perl
  467. program.
  468. <P></P>
  469. <DT><STRONG><A NAME="item_init_av">init_av</A></STRONG><BR>
  470. <DD>
  471. Returns the AV object (i.e. in class B::AV) representing INIT blocks.
  472. <P></P>
  473. <DT><STRONG><A NAME="item_main_root">main_root</A></STRONG><BR>
  474. <DD>
  475. Returns the root op (i.e. an object in the appropriate B::OP-derived
  476. class) of the main part of the Perl program.
  477. <P></P>
  478. <DT><STRONG><A NAME="item_main_start">main_start</A></STRONG><BR>
  479. <DD>
  480. Returns the starting op of the main part of the Perl program.
  481. <P></P>
  482. <DT><STRONG><A NAME="item_comppadlist">comppadlist</A></STRONG><BR>
  483. <DD>
  484. Returns the AV object (i.e. in class B::AV) of the global comppadlist.
  485. <P></P>
  486. <DT><STRONG><A NAME="item_sv_undef">sv_undef</A></STRONG><BR>
  487. <DD>
  488. Returns the SV object corresponding to the C variable <A HREF="#item_sv_undef"><CODE>sv_undef</CODE></A>.
  489. <P></P>
  490. <DT><STRONG><A NAME="item_sv_yes">sv_yes</A></STRONG><BR>
  491. <DD>
  492. Returns the SV object corresponding to the C variable <A HREF="#item_sv_yes"><CODE>sv_yes</CODE></A>.
  493. <P></P>
  494. <DT><STRONG><A NAME="item_sv_no">sv_no</A></STRONG><BR>
  495. <DD>
  496. Returns the SV object corresponding to the C variable <A HREF="#item_sv_no"><CODE>sv_no</CODE></A>.
  497. <P></P>
  498. <DT><STRONG><A NAME="item_amagic_generation">amagic_generation</A></STRONG><BR>
  499. <DD>
  500. Returns the SV object corresponding to the C variable <A HREF="#item_amagic_generation"><CODE>amagic_generation</CODE></A>.
  501. <P></P>
  502. <DT><STRONG><A NAME="item_walkoptree">walkoptree(OP, METHOD)</A></STRONG><BR>
  503. <DD>
  504. Does a tree-walk of the syntax tree based at OP and calls METHOD on
  505. each op it visits. Each node is visited before its children. If
  506. <A HREF="#item_walkoptree_debug"><CODE>walkoptree_debug</CODE></A> (q.v.) has been called to turn debugging on then
  507. the method <A HREF="#item_walkoptree_debug"><CODE>walkoptree_debug</CODE></A> is called on each op before METHOD is
  508. called.
  509. <P></P>
  510. <DT><STRONG><A NAME="item_walkoptree_debug"><CODE>walkoptree_debug(DEBUG)</CODE></A></STRONG><BR>
  511. <DD>
  512. Returns the current debugging flag for <A HREF="#item_walkoptree"><CODE>walkoptree</CODE></A>. If the optional
  513. DEBUG argument is non-zero, it sets the debugging flag to that. See
  514. the description of <A HREF="#item_walkoptree"><CODE>walkoptree</CODE></A> above for what the debugging flag
  515. does.
  516. <P></P>
  517. <DT><STRONG><A NAME="item_walksymtable">walksymtable(SYMREF, METHOD, RECURSE)</A></STRONG><BR>
  518. <DD>
  519. Walk the symbol table starting at SYMREF and call METHOD on each
  520. symbol visited. When the walk reached package symbols ``Foo::'' it
  521. invokes RECURSE and only recurses into the package if that sub
  522. returns true.
  523. <P></P>
  524. <DT><STRONG><A NAME="item_svref_2object"><CODE>svref_2object(SV)</CODE></A></STRONG><BR>
  525. <DD>
  526. Takes any Perl variable and turns it into an object in the
  527. appropriate B::OP-derived or B::SV-derived class. Apart from functions
  528. such as <A HREF="#item_main_root"><CODE>main_root</CODE></A>, this is the primary way to get an initial
  529. ``handle'' on a internal perl data structure which can then be followed
  530. with the other access methods.
  531. <P></P>
  532. <DT><STRONG><A NAME="item_ppname"><CODE>ppname(OPNUM)</CODE></A></STRONG><BR>
  533. <DD>
  534. Return the PP function name (e.g. ``pp_add'') of op number OPNUM.
  535. <P></P>
  536. <DT><STRONG><A NAME="item_hash"><CODE>hash(STR)</CODE></A></STRONG><BR>
  537. <DD>
  538. Returns a string in the form ``0x...'' representing the value of the
  539. internal hash function used by perl on string STR.
  540. <P></P>
  541. <DT><STRONG><A NAME="item_cast_I32"><CODE>cast_I32(I)</CODE></A></STRONG><BR>
  542. <DD>
  543. Casts I to the internal I32 type used by that perl.
  544. <P></P>
  545. <DT><STRONG><A NAME="item_minus_c">minus_c</A></STRONG><BR>
  546. <DD>
  547. Does the equivalent of the <CODE>-c</CODE> command-line option. Obviously, this
  548. is only useful in a BEGIN block or else the flag is set too late.
  549. <P></P>
  550. <DT><STRONG><A NAME="item_cstring"><CODE>cstring(STR)</CODE></A></STRONG><BR>
  551. <DD>
  552. Returns a double-quote-surrounded escaped version of STR which can
  553. be used as a string in C source code.
  554. <P></P>
  555. <DT><STRONG><A NAME="item_class"><CODE>class(OBJ)</CODE></A></STRONG><BR>
  556. <DD>
  557. Returns the class of an object without the part of the classname
  558. preceding the first ``::''. This is used to turn ``B::UNOP'' into
  559. ``UNOP'' for example.
  560. <P></P>
  561. <DT><STRONG><A NAME="item_threadsv_names">threadsv_names</A></STRONG><BR>
  562. <DD>
  563. In a perl compiled for threads, this returns a list of the special
  564. per-thread threadsv variables.
  565. <P></P></DL>
  566. <P>
  567. <HR>
  568. <H1><A NAME="author">AUTHOR</A></H1>
  569. <P>Malcolm Beattie, <CODE>mbeattie@sable.ox.ac.uk</CODE></P>
  570. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  571. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  572. <STRONG><P CLASS=block> B - The Perl Compiler</P></STRONG>
  573. </TD></TR>
  574. </TABLE>
  575.  
  576. </BODY>
  577.  
  578. </HTML>
  579.