| 194 GType purple_attention_type_get_type(void); |
194 GType purple_attention_type_get_type(void); |
| 195 |
195 |
| 196 /** |
196 /** |
| 197 * Creates a new #PurpleAttentionType object and sets its mandatory parameters. |
197 * Creates a new #PurpleAttentionType object and sets its mandatory parameters. |
| 198 * |
198 * |
| 199 * @param ulname A non-localized string that can be used by UIs in need of such |
199 * @ulname: A non-localized string that can be used by UIs in need of such |
| 200 * non-localized strings. This should be the same as @a name, |
200 * non-localized strings. This should be the same as @a name, |
| 201 * without localization. |
201 * without localization. |
| 202 * @param name A localized string that the UI may display for the event. This |
202 * @name: A localized string that the UI may display for the event. This |
| 203 * should be the same string as @a ulname, with localization. |
203 * should be the same string as @a ulname, with localization. |
| 204 * @param inc_desc A localized description shown when the event is received. |
204 * @inc_desc: A localized description shown when the event is received. |
| 205 * @param out_desc A localized description shown when the event is sent. |
205 * @out_desc: A localized description shown when the event is sent. |
| 206 * |
206 * |
| 207 * @return A pointer to the new object. |
207 * Returns: A pointer to the new object. |
| 208 */ |
208 */ |
| 209 PurpleAttentionType *purple_attention_type_new(const char *ulname, const char *name, |
209 PurpleAttentionType *purple_attention_type_new(const char *ulname, const char *name, |
| 210 const char *inc_desc, const char *out_desc); |
210 const char *inc_desc, const char *out_desc); |
| 211 |
211 |
| 212 /** |
212 /** |
| 213 * Sets the displayed name of the attention-demanding event. |
213 * Sets the displayed name of the attention-demanding event. |
| 214 * |
214 * |
| 215 * @param type The attention type. |
215 * @type: The attention type. |
| 216 * @param name The localized name that will be displayed by UIs. This should be |
216 * @name: The localized name that will be displayed by UIs. This should be |
| 217 * the same string given as the unlocalized name, but with |
217 * the same string given as the unlocalized name, but with |
| 218 * localization. |
218 * localization. |
| 219 */ |
219 */ |
| 220 void purple_attention_type_set_name(PurpleAttentionType *type, const char *name); |
220 void purple_attention_type_set_name(PurpleAttentionType *type, const char *name); |
| 221 |
221 |
| 222 /** |
222 /** |
| 223 * Sets the description of the attention-demanding event shown in conversations |
223 * Sets the description of the attention-demanding event shown in conversations |
| 224 * when the event is received. |
224 * when the event is received. |
| 225 * |
225 * |
| 226 * @param type The attention type. |
226 * @type: The attention type. |
| 227 * @param desc The localized description for incoming events. |
227 * @desc: The localized description for incoming events. |
| 228 */ |
228 */ |
| 229 void purple_attention_type_set_incoming_desc(PurpleAttentionType *type, const char *desc); |
229 void purple_attention_type_set_incoming_desc(PurpleAttentionType *type, const char *desc); |
| 230 |
230 |
| 231 /** |
231 /** |
| 232 * Sets the description of the attention-demanding event shown in conversations |
232 * Sets the description of the attention-demanding event shown in conversations |
| 233 * when the event is sent. |
233 * when the event is sent. |
| 234 * |
234 * |
| 235 * @param type The attention type. |
235 * @type: The attention type. |
| 236 * @param desc The localized description for outgoing events. |
236 * @desc: The localized description for outgoing events. |
| 237 */ |
237 */ |
| 238 void purple_attention_type_set_outgoing_desc(PurpleAttentionType *type, const char *desc); |
238 void purple_attention_type_set_outgoing_desc(PurpleAttentionType *type, const char *desc); |
| 239 |
239 |
| 240 /** |
240 /** |
| 241 * Sets the name of the icon to display for the attention event; this is optional. |
241 * Sets the name of the icon to display for the attention event; this is optional. |
| 242 * |
242 * |
| 243 * @param type The attention type. |
243 * @type: The attention type. |
| 244 * @param name The icon's name. |
244 * @name: The icon's name. |
| 245 * @note Icons are optional for attention events. |
245 * @note Icons are optional for attention events. |
| 246 */ |
246 */ |
| 247 void purple_attention_type_set_icon_name(PurpleAttentionType *type, const char *name); |
247 void purple_attention_type_set_icon_name(PurpleAttentionType *type, const char *name); |
| 248 |
248 |
| 249 /** |
249 /** |
| 250 * Sets the unlocalized name of the attention event; some UIs may need this, |
250 * Sets the unlocalized name of the attention event; some UIs may need this, |
| 251 * thus it is required. |
251 * thus it is required. |
| 252 * |
252 * |
| 253 * @param type The attention type. |
253 * @type: The attention type. |
| 254 * @param ulname The unlocalized name. This should be the same string given as |
254 * @ulname: The unlocalized name. This should be the same string given as |
| 255 * the localized name, but without localization. |
255 * the localized name, but without localization. |
| 256 */ |
256 */ |
| 257 void purple_attention_type_set_unlocalized_name(PurpleAttentionType *type, const char *ulname); |
257 void purple_attention_type_set_unlocalized_name(PurpleAttentionType *type, const char *ulname); |
| 258 |
258 |
| 259 /** |
259 /** |
| 260 * Get the attention type's name as displayed by the UI. |
260 * Get the attention type's name as displayed by the UI. |
| 261 * |
261 * |
| 262 * @param type The attention type. |
262 * @type: The attention type. |
| 263 * |
263 * |
| 264 * @return The name. |
264 * Returns: The name. |
| 265 */ |
265 */ |
| 266 const char *purple_attention_type_get_name(const PurpleAttentionType *type); |
266 const char *purple_attention_type_get_name(const PurpleAttentionType *type); |
| 267 |
267 |
| 268 /** |
268 /** |
| 269 * Get the attention type's description shown when the event is received. |
269 * Get the attention type's description shown when the event is received. |
| 270 * |
270 * |
| 271 * @param type The attention type. |
271 * @type: The attention type. |
| 272 * @return The description. |
272 * Returns: The description. |
| 273 */ |
273 */ |
| 274 const char *purple_attention_type_get_incoming_desc(const PurpleAttentionType *type); |
274 const char *purple_attention_type_get_incoming_desc(const PurpleAttentionType *type); |
| 275 |
275 |
| 276 /** |
276 /** |
| 277 * Get the attention type's description shown when the event is sent. |
277 * Get the attention type's description shown when the event is sent. |
| 278 * |
278 * |
| 279 * @param type The attention type. |
279 * @type: The attention type. |
| 280 * @return The description. |
280 * Returns: The description. |
| 281 */ |
281 */ |
| 282 const char *purple_attention_type_get_outgoing_desc(const PurpleAttentionType *type); |
282 const char *purple_attention_type_get_outgoing_desc(const PurpleAttentionType *type); |
| 283 |
283 |
| 284 /** |
284 /** |
| 285 * Get the attention type's icon name. |
285 * Get the attention type's icon name. |
| 286 * |
286 * |
| 287 * @param type The attention type. |
287 * @type: The attention type. |
| 288 * @return The icon name or @c NULL if unset/empty. |
288 * Returns: The icon name or @c NULL if unset/empty. |
| 289 * @note Icons are optional for attention events. |
289 * @note Icons are optional for attention events. |
| 290 */ |
290 */ |
| 291 const char *purple_attention_type_get_icon_name(const PurpleAttentionType *type); |
291 const char *purple_attention_type_get_icon_name(const PurpleAttentionType *type); |
| 292 |
292 |
| 293 /** |
293 /** |
| 294 * Get the attention type's unlocalized name; this is useful for some UIs. |
294 * Get the attention type's unlocalized name; this is useful for some UIs. |
| 295 * |
295 * |
| 296 * @param type The attention type |
296 * @type: The attention type |
| 297 * @return The unlocalized name. |
297 * Returns: The unlocalized name. |
| 298 */ |
298 */ |
| 299 const char *purple_attention_type_get_unlocalized_name(const PurpleAttentionType *type); |
299 const char *purple_attention_type_get_unlocalized_name(const PurpleAttentionType *type); |
| 300 |
300 |
| 301 /*@}*/ |
301 /*@}*/ |
| 302 |
302 |
| 349 /** |
349 /** |
| 350 * Notifies Purple that our account's idle state and time have changed. |
350 * Notifies Purple that our account's idle state and time have changed. |
| 351 * |
351 * |
| 352 * This is meant to be called from protocols. |
352 * This is meant to be called from protocols. |
| 353 * |
353 * |
| 354 * @param account The account. |
354 * @account: The account. |
| 355 * @param idle The user's idle state. |
355 * @idle: The user's idle state. |
| 356 * @param idle_time The user's idle time. |
356 * @idle_time: The user's idle time. |
| 357 */ |
357 */ |
| 358 void purple_protocol_got_account_idle(PurpleAccount *account, gboolean idle, |
358 void purple_protocol_got_account_idle(PurpleAccount *account, gboolean idle, |
| 359 time_t idle_time); |
359 time_t idle_time); |
| 360 |
360 |
| 361 /** |
361 /** |
| 362 * Notifies Purple of our account's log-in time. |
362 * Notifies Purple of our account's log-in time. |
| 363 * |
363 * |
| 364 * This is meant to be called from protocols. |
364 * This is meant to be called from protocols. |
| 365 * |
365 * |
| 366 * @param account The account the user is on. |
366 * @account: The account the user is on. |
| 367 * @param login_time The user's log-in time. |
367 * @login_time: The user's log-in time. |
| 368 */ |
368 */ |
| 369 void purple_protocol_got_account_login_time(PurpleAccount *account, |
369 void purple_protocol_got_account_login_time(PurpleAccount *account, |
| 370 time_t login_time); |
370 time_t login_time); |
| 371 |
371 |
| 372 /** |
372 /** |
| 373 * Notifies Purple that our account's status has changed. |
373 * Notifies Purple that our account's status has changed. |
| 374 * |
374 * |
| 375 * This is meant to be called from protocols. |
375 * This is meant to be called from protocols. |
| 376 * |
376 * |
| 377 * @param account The account the user is on. |
377 * @account: The account the user is on. |
| 378 * @param status_id The status ID. |
378 * @status_id: The status ID. |
| 379 * @param ... A NULL-terminated list of attribute IDs and values, |
379 * @...: A NULL-terminated list of attribute IDs and values, |
| 380 * beginning with the value for @a attr_id. |
380 * beginning with the value for @a attr_id. |
| 381 */ |
381 */ |
| 382 void purple_protocol_got_account_status(PurpleAccount *account, |
382 void purple_protocol_got_account_status(PurpleAccount *account, |
| 383 const char *status_id, ...) |
383 const char *status_id, ...) |
| 384 G_GNUC_NULL_TERMINATED; |
384 G_GNUC_NULL_TERMINATED; |
| 388 * called after the initial connection. Emits the account-actions-changed |
388 * called after the initial connection. Emits the account-actions-changed |
| 389 * signal. |
389 * signal. |
| 390 * |
390 * |
| 391 * This is meant to be called from protocols. |
391 * This is meant to be called from protocols. |
| 392 * |
392 * |
| 393 * @param account The account. |
393 * @account: The account. |
| 394 * |
394 * |
| 395 * @see account-actions-changed |
395 * @see account-actions-changed |
| 396 */ |
396 */ |
| 397 void purple_protocol_got_account_actions(PurpleAccount *account); |
397 void purple_protocol_got_account_actions(PurpleAccount *account); |
| 398 |
398 |
| 399 /** |
399 /** |
| 400 * Notifies Purple that a buddy's idle state and time have changed. |
400 * Notifies Purple that a buddy's idle state and time have changed. |
| 401 * |
401 * |
| 402 * This is meant to be called from protocols. |
402 * This is meant to be called from protocols. |
| 403 * |
403 * |
| 404 * @param account The account the user is on. |
404 * @account: The account the user is on. |
| 405 * @param name The name of the buddy. |
405 * @name: The name of the buddy. |
| 406 * @param idle The user's idle state. |
406 * @idle: The user's idle state. |
| 407 * @param idle_time The user's idle time. This is the time at |
407 * @idle_time: The user's idle time. This is the time at |
| 408 * which the user became idle, in seconds since |
408 * which the user became idle, in seconds since |
| 409 * the epoch. If the protocol does not know this value |
409 * the epoch. If the protocol does not know this value |
| 410 * then it should pass 0. |
410 * then it should pass 0. |
| 411 */ |
411 */ |
| 412 void purple_protocol_got_user_idle(PurpleAccount *account, const char *name, |
412 void purple_protocol_got_user_idle(PurpleAccount *account, const char *name, |
| 415 /** |
415 /** |
| 416 * Notifies Purple of a buddy's log-in time. |
416 * Notifies Purple of a buddy's log-in time. |
| 417 * |
417 * |
| 418 * This is meant to be called from protocols. |
418 * This is meant to be called from protocols. |
| 419 * |
419 * |
| 420 * @param account The account the user is on. |
420 * @account: The account the user is on. |
| 421 * @param name The name of the buddy. |
421 * @name: The name of the buddy. |
| 422 * @param login_time The user's log-in time. |
422 * @login_time: The user's log-in time. |
| 423 */ |
423 */ |
| 424 void purple_protocol_got_user_login_time(PurpleAccount *account, |
424 void purple_protocol_got_user_login_time(PurpleAccount *account, |
| 425 const char *name, time_t login_time); |
425 const char *name, time_t login_time); |
| 426 |
426 |
| 427 /** |
427 /** |
| 428 * Notifies Purple that a buddy's status has been activated. |
428 * Notifies Purple that a buddy's status has been activated. |
| 429 * |
429 * |
| 430 * This is meant to be called from protocols. |
430 * This is meant to be called from protocols. |
| 431 * |
431 * |
| 432 * @param account The account the user is on. |
432 * @account: The account the user is on. |
| 433 * @param name The name of the buddy. |
433 * @name: The name of the buddy. |
| 434 * @param status_id The status ID. |
434 * @status_id: The status ID. |
| 435 * @param ... A NULL-terminated list of attribute IDs and values, |
435 * @...: A NULL-terminated list of attribute IDs and values, |
| 436 * beginning with the value for @a attr_id. |
436 * beginning with the value for @a attr_id. |
| 437 */ |
437 */ |
| 438 void purple_protocol_got_user_status(PurpleAccount *account, const char *name, |
438 void purple_protocol_got_user_status(PurpleAccount *account, const char *name, |
| 439 const char *status_id, ...) |
439 const char *status_id, ...) |
| 440 G_GNUC_NULL_TERMINATED; |
440 G_GNUC_NULL_TERMINATED; |
| 442 /** |
442 /** |
| 443 * Notifies libpurple that a buddy's status has been deactivated |
443 * Notifies libpurple that a buddy's status has been deactivated |
| 444 * |
444 * |
| 445 * This is meant to be called from protocols. |
445 * This is meant to be called from protocols. |
| 446 * |
446 * |
| 447 * @param account The account the user is on. |
447 * @account: The account the user is on. |
| 448 * @param name The name of the buddy. |
448 * @name: The name of the buddy. |
| 449 * @param status_id The status ID. |
449 * @status_id: The status ID. |
| 450 */ |
450 */ |
| 451 void purple_protocol_got_user_status_deactive(PurpleAccount *account, |
451 void purple_protocol_got_user_status_deactive(PurpleAccount *account, |
| 452 const char *name, |
452 const char *name, |
| 453 const char *status_id); |
453 const char *status_id); |
| 454 |
454 |
| 455 /** |
455 /** |
| 456 * Informs the server that our account's status changed. |
456 * Informs the server that our account's status changed. |
| 457 * |
457 * |
| 458 * @param account The account the user is on. |
458 * @account: The account the user is on. |
| 459 * @param old_status The previous status. |
459 * @old_status: The previous status. |
| 460 * @param new_status The status that was activated, or deactivated |
460 * @new_status: The status that was activated, or deactivated |
| 461 * (in the case of independent statuses). |
461 * (in the case of independent statuses). |
| 462 */ |
462 */ |
| 463 void purple_protocol_change_account_status(PurpleAccount *account, |
463 void purple_protocol_change_account_status(PurpleAccount *account, |
| 464 PurpleStatus *old_status, |
464 PurpleStatus *old_status, |
| 465 PurpleStatus *new_status); |
465 PurpleStatus *new_status); |
| 466 |
466 |
| 467 /** |
467 /** |
| 468 * Retrieves the list of stock status types from a protocol. |
468 * Retrieves the list of stock status types from a protocol. |
| 469 * |
469 * |
| 470 * @param account The account the user is on. |
470 * @account: The account the user is on. |
| 471 * @param presence The presence for which we're going to get statuses |
471 * @presence: The presence for which we're going to get statuses |
| 472 * |
472 * |
| 473 * @return List of statuses |
473 * Returns: List of statuses |
| 474 */ |
474 */ |
| 475 GList *purple_protocol_get_statuses(PurpleAccount *account, |
475 GList *purple_protocol_get_statuses(PurpleAccount *account, |
| 476 PurplePresence *presence); |
476 PurplePresence *presence); |
| 477 |
477 |
| 478 /** |
478 /** |
| 479 * Send an attention request message. |
479 * Send an attention request message. |
| 480 * |
480 * |
| 481 * @param gc The connection to send the message on. |
481 * @gc: The connection to send the message on. |
| 482 * @param who Whose attention to request. |
482 * @who: Whose attention to request. |
| 483 * @param type_code An index into the protocol's attention_types list |
483 * @type_code: An index into the protocol's attention_types list |
| 484 * determining the type of the attention request command to |
484 * determining the type of the attention request command to |
| 485 * send. 0 if protocol only defines one (for example, Yahoo and |
485 * send. 0 if protocol only defines one (for example, Yahoo and |
| 486 * MSN), but some protocols define more (MySpaceIM). |
486 * MSN), but some protocols define more (MySpaceIM). |
| 487 * |
487 * |
| 488 * Note that you can't send arbitrary PurpleAttentionType's, because there is |
488 * Note that you can't send arbitrary PurpleAttentionType's, because there is |
| 492 guint type_code); |
492 guint type_code); |
| 493 |
493 |
| 494 /** |
494 /** |
| 495 * Process an incoming attention message. |
495 * Process an incoming attention message. |
| 496 * |
496 * |
| 497 * @param gc The connection that received the attention message. |
497 * @gc: The connection that received the attention message. |
| 498 * @param who Who requested your attention. |
498 * @who: Who requested your attention. |
| 499 * @param type_code An index into the protocol's attention_types list |
499 * @type_code: An index into the protocol's attention_types list |
| 500 * determining the type of the attention request command to |
500 * determining the type of the attention request command to |
| 501 * send. |
501 * send. |
| 502 */ |
502 */ |
| 503 void purple_protocol_got_attention(PurpleConnection *gc, const char *who, |
503 void purple_protocol_got_attention(PurpleConnection *gc, const char *who, |
| 504 guint type_code); |
504 guint type_code); |
| 505 |
505 |
| 506 /** |
506 /** |
| 507 * Process an incoming attention message in a chat. |
507 * Process an incoming attention message in a chat. |
| 508 * |
508 * |
| 509 * @param gc The connection that received the attention message. |
509 * @gc: The connection that received the attention message. |
| 510 * @param id The chat id. |
510 * @id: The chat id. |
| 511 * @param who Who requested your attention. |
511 * @who: Who requested your attention. |
| 512 * @param type_code An index into the protocol's attention_types list |
512 * @type_code: An index into the protocol's attention_types list |
| 513 * determining the type of the attention request command to |
513 * determining the type of the attention request command to |
| 514 * send. |
514 * send. |
| 515 */ |
515 */ |
| 516 void purple_protocol_got_attention_in_chat(PurpleConnection *gc, int id, |
516 void purple_protocol_got_attention_in_chat(PurpleConnection *gc, int id, |
| 517 const char *who, guint type_code); |
517 const char *who, guint type_code); |
| 518 |
518 |
| 519 /** |
519 /** |
| 520 * Determines if the contact supports the given media session type. |
520 * Determines if the contact supports the given media session type. |
| 521 * |
521 * |
| 522 * @param account The account the user is on. |
522 * @account: The account the user is on. |
| 523 * @param who The name of the contact to check capabilities for. |
523 * @who: The name of the contact to check capabilities for. |
| 524 * |
524 * |
| 525 * @return The media caps the contact supports. |
525 * Returns: The media caps the contact supports. |
| 526 */ |
526 */ |
| 527 PurpleMediaCaps purple_protocol_get_media_caps(PurpleAccount *account, |
527 PurpleMediaCaps purple_protocol_get_media_caps(PurpleAccount *account, |
| 528 const char *who); |
528 const char *who); |
| 529 |
529 |
| 530 /** |
530 /** |
| 531 * Initiates a media session with the given contact. |
531 * Initiates a media session with the given contact. |
| 532 * |
532 * |
| 533 * @param account The account the user is on. |
533 * @account: The account the user is on. |
| 534 * @param who The name of the contact to start a session with. |
534 * @who: The name of the contact to start a session with. |
| 535 * @param type The type of media session to start. |
535 * @type: The type of media session to start. |
| 536 * |
536 * |
| 537 * @return TRUE if the call succeeded else FALSE. (Doesn't imply the media |
537 * Returns: TRUE if the call succeeded else FALSE. (Doesn't imply the media |
| 538 * session or stream will be successfully created) |
538 * session or stream will be successfully created) |
| 539 */ |
539 */ |
| 540 gboolean purple_protocol_initiate_media(PurpleAccount *account, |
540 gboolean purple_protocol_initiate_media(PurpleAccount *account, |
| 541 const char *who, |
541 const char *who, |
| 542 PurpleMediaSessionType type); |
542 PurpleMediaSessionType type); |
| 571 /*@{*/ |
571 /*@{*/ |
| 572 |
572 |
| 573 /** |
573 /** |
| 574 * Finds a protocol by ID. |
574 * Finds a protocol by ID. |
| 575 * |
575 * |
| 576 * @param id The protocol's ID. |
576 * @id: The protocol's ID. |
| 577 */ |
577 */ |
| 578 PurpleProtocol *purple_protocols_find(const char *id); |
578 PurpleProtocol *purple_protocols_find(const char *id); |
| 579 |
579 |
| 580 /** |
580 /** |
| 581 * Adds a protocol to the list of protocols. |
581 * Adds a protocol to the list of protocols. |
| 582 * |
582 * |
| 583 * @param protocol_type The type of the protocol to add. |
583 * @protocol_type: The type of the protocol to add. |
| 584 * @param error Return location for a #GError or @c NULL. If provided, this |
584 * @error: Return location for a #GError or @c NULL. If provided, this |
| 585 * will be set to the reason if adding fails. |
585 * will be set to the reason if adding fails. |
| 586 * |
586 * |
| 587 * @return The protocol instance if the protocol was added, else @c NULL. |
587 * Returns: The protocol instance if the protocol was added, else @c NULL. |
| 588 */ |
588 */ |
| 589 PurpleProtocol *purple_protocols_add(GType protocol_type, GError **error); |
589 PurpleProtocol *purple_protocols_add(GType protocol_type, GError **error); |
| 590 |
590 |
| 591 /** |
591 /** |
| 592 * Removes a protocol from the list of protocols. This will disconnect all |
592 * Removes a protocol from the list of protocols. This will disconnect all |
| 593 * connected accounts using this protocol, and free the protocol's user splits |
593 * connected accounts using this protocol, and free the protocol's user splits |
| 594 * and protocol options. |
594 * and protocol options. |
| 595 * |
595 * |
| 596 * @param protocol The protocol to remove. |
596 * @protocol: The protocol to remove. |
| 597 * @param error Return location for a #GError or @c NULL. If provided, this |
597 * @error: Return location for a #GError or @c NULL. If provided, this |
| 598 * will be set to the reason if removing fails. |
598 * will be set to the reason if removing fails. |
| 599 * |
599 * |
| 600 * @return TRUE if the protocol was removed, else FALSE. |
600 * Returns: TRUE if the protocol was removed, else FALSE. |
| 601 */ |
601 */ |
| 602 gboolean purple_protocols_remove(PurpleProtocol *protocol, GError **error); |
602 gboolean purple_protocols_remove(PurpleProtocol *protocol, GError **error); |
| 603 |
603 |
| 604 /** |
604 /** |
| 605 * Returns a list of all loaded protocols. |
605 * Returns a list of all loaded protocols. |
| 606 * |
606 * |
| 607 * @return A list of all loaded protocols. The list is owned by the caller, and |
607 * Returns: A list of all loaded protocols. The list is owned by the caller, and |
| 608 * must be g_list_free()d to avoid leaking the nodes. |
608 * must be g_list_free()d to avoid leaking the nodes. |
| 609 */ |
609 */ |
| 610 GList *purple_protocols_get_all(void); |
610 GList *purple_protocols_get_all(void); |
| 611 |
611 |
| 612 /*@}*/ |
612 /*@}*/ |