machblue_porting_core.h
上传用户:fy98168
上传日期:2015-06-26
资源大小:13771k
文件大小:33k
源码类别:

DVD

开发平台:

C/C++

  1. /*-----------------------------------------------------------------------------
  2.  | @(#) machblue_porting_core.h
  3.  |
  4.  |  JSWF: The Portable SWF Engine For Embedded Devices,
  5.  |  Copyright (c) 2002-2006, BlueStreak Technology Inc., All Rights Reserved.
  6.  |
  7.  +----------------------------------------------------------------------------*/
  8. #ifndef _MACHBLUE_PORTING_CORE_H_
  9. #define _MACHBLUE_PORTING_CORE_H_
  10. /*----------------------------------------------------------
  11.  | Include definition below this line
  12.  +----------------------------------------------------------*/
  13. #include "machblue_defines.h"
  14. #include "machblue_customer.h"
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif /* __cplusplus */
  18. /*----------------------------------------------------------
  19.  | Macro definition below this line
  20.  +----------------------------------------------------------*/
  21. /*----------------------------------------------------------
  22.  | Type definition below this line
  23.  +----------------------------------------------------------*/
  24. /*----------------------------------------------------------
  25.  | Functions definition below this line
  26.  +----------------------------------------------------------*/
  27. /*
  28.  * ======================= Porting Layer Init API ===========================================
  29.  */
  30. /** @defgroup init_group Porting Layer Init API
  31.  *  @{
  32.  * This API is used by Machblue to initialize or delete the 
  33.  * core porting layer.
  34.  */
  35. /**
  36.  * Invoked by Machblue to initialize the porting layer. This
  37.  * will be called before any calls to the porting layer.
  38.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  39.  */
  40. extern mb_error_t mb_porting_layer_init
  41.     void *init_client_data /**< platform specific init client data specified in mb_init_config_t */
  42. );
  43. /**
  44.  * Invoked by Machblue to delete the porting layer. Machblue will 
  45.  * not make any calls to the porting layer after this call
  46.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  47.  */
  48. extern mb_error_t mb_porting_layer_delete( void );
  49. /** @} */
  50. /*
  51.  * ======================= Memory Allocation API ===========================================
  52.  */
  53. /** @defgroup memory_alloc_group Memory Allocation API
  54.  *  @{
  55.  * This API is used by Machblue to allocate memory from the platform.
  56.  */
  57. /**
  58.  * Allocates a memory chunk from the system heap. This function will only be called
  59.  * if Machblue's heap is initialized as growable. 
  60.  * @return an aligned pointer to the allocated memory chunk on success or NULL on failure.
  61.  */
  62. extern void *mb_malloc
  63.     mb_size_t size  /**< size to allocate in bytes */
  64. );
  65. /**
  66.  * Deletes a previously allocated memory chunk.
  67.  * @return none.
  68.  */
  69. extern void mb_free
  70.     void *ptr /**< previously allocated memory chunk to free */
  71. );
  72. /** @} */
  73. /*
  74.  * ======================= Moveable Memory Block Allocation API ===========================================
  75.  */
  76. /** @defgroup memory_block_alloc_group Moveable Memory Block Allocation API
  77.  *  @{
  78.  * This API is used by Machblue to allocate moveable memory blocks from 
  79.  * the platform.
  80.  */
  81. /**
  82.  * Allocates a movable memory block from the system heap.
  83.  * On systems that do not support movable memory blocks, MB_FAILURE
  84.  * should be returned. This function  will only be called if Machblue's heap 
  85.  * is initialized as growable. 
  86.  * @return MB_SUCCESS and updates "mem_block" on success or MB_FAILURE on failure.
  87.  */
  88. extern mb_error_t mb_mem_block_alloc
  89.     mb_size_t       size,      /**< size to allocate in bytes */
  90.     mb_mem_block_t *mem_block /**< pointer to mem block to allocate */
  91. );
  92. /**
  93.  * Deletes a previously allocated memory block.
  94.  * @return none.
  95.  */
  96. extern void mb_mem_block_free
  97.     mb_mem_block_t mem_block /**< previously allocated memory block handle to free */
  98. );
  99. /**
  100.  * Locks (pins) a memory block in memory. 
  101.  * @return MB_SUCCESS and sets locked_prt to an aligned pointer to the 
  102.  * allocated memory block on success, MB_FAILURE on failure.
  103.  */
  104. extern mb_error_t mb_mem_block_lock
  105.     mb_mem_block_t   mem_block,  /**< memory block handle to lock */
  106.     void           **locked_ptr  /**< pointer to location to store pointer to locked memory block */
  107. );
  108. /**
  109.  * Unlocks (unpins) a memory block
  110.  * @return none.
  111.  */
  112. extern void mb_mem_block_unlock
  113.     mb_mem_block_t mem_block /**< memory block handle to unlock */
  114. );
  115. /** @} */
  116. /*
  117.  * ======================= Synchronization API ===========================================
  118.  */
  119. /** @defgroup synchronization_group Synchronization API
  120.  *  @{
  121.  * This API is used by Machblue to access the platform's synchronization
  122.  * api.
  123.  */
  124. /**
  125.  * Creates a new semaphore.
  126.  * @return MB_SUCCESS and updates "semaphore" or MB_FAILURE on failure.
  127.  */
  128. extern mb_error_t mb_semaphore_create
  129.     mb_semaphore_t *semaphore,    /**< pointer to semaphore to create */
  130.     unsigned int    initial_value /**< initial number of resource */
  131. );
  132. /**
  133.  * Deletes a semaphore.
  134.  * @return MB_SUCCESS on success or MB_FAILURE on failure.
  135.  */
  136. extern mb_error_t mb_semaphore_delete
  137.     mb_semaphore_t semaphore /**< semaphore to delete */
  138. );
  139. /**
  140.  * Signals a counting semaphore (V).
  141.  * @return MB_SUCCESS on success or MB_FAILURE on failure.
  142.  */
  143. extern mb_error_t mb_semaphore_signal
  144.     mb_semaphore_t semaphore /**< counting semaphore to signal */
  145. );
  146. /**
  147.  * Waits on a counting semaphore (P).
  148.  * @return MB_SUCCESS on success or MB_FAILURE on failure.
  149.  */
  150. extern mb_error_t mb_semaphore_wait
  151.     mb_semaphore_t semaphore  /**< Semaphore to wait on */
  152. );
  153. /**
  154.  * Tries to wait on a semaphore (non-blocking). Returns immediatly 
  155.  * (does not block) if the semaphore has a zero count otherwise atomically 
  156.  * decreases count (consumes the resource). 
  157.  * @return MB_SUCCESS on success, MB_BUSY if the semaphore count is zero
  158.  * or MB_FAILURE on failure.
  159.  */
  160. extern mb_error_t mb_semaphore_trywait
  161.     mb_semaphore_t semaphore  /**< Semaphore to wait on */
  162. );
  163. /**
  164.  * Creates a new mutex. This should maps to the fast mutex implementation 
  165.  * (a.k.a. non reccursive mutex) on the platform.
  166.  * @return MB_SUCCESS and update "mutex" on success, or MB_FAILURE on failure.
  167.  */
  168. extern mb_error_t mb_mutex_create
  169. (
  170.     mb_mutex_t *mutex /**< pointer to mutex to create */
  171. );
  172. /**
  173.  * Deletes a mutex.
  174.  * @return MB_SUCCESS on success or MB_FAILURE on failure.
  175.  */
  176. extern mb_error_t mb_mutex_delete
  177.     mb_mutex_t mutex /**< mutex to delete */
  178. );
  179. /**
  180.  * Locks a mutex.
  181.  * @return MB_SUCCESS on success or MB_FAILURE on failure.
  182.  */
  183. extern mb_error_t mb_mutex_lock
  184.     mb_mutex_t mutex  /**< mutex to lock */
  185. );
  186. /**
  187.  * Unlocks a mutex
  188.  *
  189.  * @return MB_SUCCESS on success or MB_FAILURE on failure.
  190.  */
  191. extern mb_error_t mb_mutex_unlock
  192.     mb_mutex_t mutex /**< mutex to unlock */
  193. );
  194. /**
  195.  * Tries to lock a mutex (non-blocking). Returns immediatly (does 
  196.  * not block) if the mutex is already locked otherwise locks it.
  197.  *
  198.  * @return MB_SUCCESS on success, MB_BUSY if the mutex is already locked
  199.  * or MB_FAILURE on failure.
  200.  */
  201. extern mb_error_t mb_mutex_trylock
  202.     mb_mutex_t mutex  /**< mutex to lock */
  203. );
  204. /** @} */
  205. /*
  206.  * ======================= Thread API ===========================================
  207.  */
  208. /** @defgroup thread_group Thread API API
  209.  *  @{
  210.  * This API is used by Machblue to access the platform's thread api.
  211.  */
  212. /**
  213.  * Creates a new thread.
  214.  * @return a MB_SUCCESS and updates "tid" on success or MB_FAILURE on failure.
  215.  */
  216. extern mb_error_t mb_thread_create
  217.     mb_tid_t                    *tid,            /**< pointer to location to store new thread id */
  218.     mb_thread_attributes_t      *thread_attrib,  /**< pointer to attributes of thread to create */
  219.     mb_thread_start_function_t  *start_function, /**< pointer to thread start function */
  220.     void                        *arg             /**< pointer to argument to pass to start function */
  221. );
  222. /**
  223.  * Deletes a thread. This simply deletes the handle to the 
  224.  * trhead on platforms that have such a notion. The thread should 
  225.  * not be killed as a result of this call.
  226.  * @return MB_SUCCESS on success or MB_FAILURE on failure.
  227.  */
  228. extern mb_error_t mb_thread_delete
  229.     mb_tid_t tid  /**< tid of thread to delete */
  230. );
  231. /**
  232.  * Joins (waits for completion of) a thread.
  233.  * @return MB_SUCCESS on success or MB_FAILURE on failure.
  234.  */
  235. extern mb_error_t mb_thread_join
  236.     mb_tid_t tid /**< tid of thread to join */ 
  237. );
  238. /**
  239.  * Gets the current thread id.
  240.  * @return MB_SUCCESS and updates tid on success, MB_FAILURE otherwise.
  241.  */
  242. extern mb_error_t mb_thread_id_get
  243.     mb_tid_t *tid /**< pointer to location to store current thread id */
  244. );
  245. /** @} */
  246. /*
  247.  * ======================= Message Passing API ===================
  248.  */
  249. /** @defgroup message_group Message Passing API
  250.  *  @{
  251.  * This API is used by Machblue to access the platform's message passing 
  252.  * api.
  253.  */
  254. /**
  255.  * Posts a message to a thread.
  256.  * @return MB_SUCCESS on success or MB_FAILURE on failure.
  257.  */
  258. extern mb_error_t mb_msg_post
  259.     mb_tid_t         tid, /**< tid to post message to */ 
  260.     mb_message_t    *msg  /**< pointer to message to post */
  261. );
  262. /**
  263.  * Waits for a message in the current thread mesasge queue.
  264.  * @return MB_SUCCESS on success or MB_FAILURE on failure.
  265.  */
  266. extern mb_error_t mb_msg_wait
  267.     mb_message_t *msg  /**< msg structure used to store received message */
  268. );
  269. /**
  270.  * Gets a message from the current thread message queue without waiting.
  271.  * If the queue is empty it @return immediatly.
  272.  * @return MB_SUCCESS if a message was successfully retrieved, MB_FAILURE otherwise.
  273.  */
  274. extern mb_error_t mb_msg_get_no_wait
  275.     mb_message_t *msg  /**< msg structure used to store received message */
  276. );
  277. /** @} */
  278. /*
  279.  * ======================= Timer API ===========================================
  280.  */
  281. /** @defgroup timer_group Timer API
  282.  *  @{
  283.  * This API is used by Machblue to access the platform's timer 
  284.  * api.
  285.  */
  286. /**
  287.  * Sets Machblue's timer. The timer callback function should be invoked when
  288.  * the specified delay expires. Machblue will only schedule one timer at a time.
  289.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  290.  */
  291. extern mb_error_t mb_timer_set
  292. (
  293.     long                 delay,          /**< timer delay in milliseconds */
  294.     mb_timer_callback_f *callback_f,     /**< timer callback function */
  295.     void                *cb_client_data  /**< timer callback function client data */
  296. );
  297. /**
  298.  * Cancels Machblue's timer request.
  299.  * This function cancels Machblue's timer request.
  300.  */
  301. extern mb_error_t mb_timer_cancel( void );
  302. /** @} */
  303. /*
  304.  * ======================= Memory Utility API ===========================================
  305.  */
  306. /** @defgroup memory_util_group Memory Utility API
  307.  *  @{
  308.  * This API is used by Machblue to access the platform's memory utility 
  309.  * api.
  310.  */
  311. /**
  312.  * Sets a memory block to a given pattern.
  313.  * @return none.
  314.  */
  315. extern void mb_memset
  316.     void      *ptr,      /**< pointer to memory block to set */
  317.     int        pattern,  /**< pattern to set */ 
  318.     mb_size_t  n         /**< number of bytes to set */
  319. );
  320. /**
  321.  * Moves n bytes from src to dest.
  322.  * @return none.
  323.  */
  324. extern void mb_memmove
  325.     void       *dest,   /**< destination to move bytes to */
  326.     const void *src,    /**< source to move bytes from */
  327.     mb_size_t   n       /**< numbers of bytes to move */
  328. );
  329. /**
  330.  * Copies n bytes from src to dest.
  331.  * @return none.
  332.  */
  333. extern void mb_memcpy
  334.     void       *dest, /**< destination to copy bytes to */
  335.     const void *src,  /**< source to copy bytes from */
  336.     mb_size_t   n     /**< numbers of bytes to copy */
  337. );
  338. /**
  339.  * Compares n bytes from ptr1 against ptr2.
  340.  * @return none.
  341.  */
  342. extern int mb_memcmp
  343.     const void *ptr1, /**< pointer to first memory block to compare */
  344.     const void *ptr2, /**< pointer to second memory block to compare */
  345.     mb_size_t   n     /**< number of bytes to compare */
  346. );
  347. /** @} */
  348. /*
  349.  * ======================= String API ===========================================
  350.  */
  351. /** @defgroup string_group String API
  352.  *  @{
  353.  * This API is used by Machblue to access the platform's string formatting 
  354.  * api.
  355.  */
  356. /**
  357.  * Converts letter to upper case.
  358.  * @return upper case letter (locale dependent).
  359.  */
  360. extern int mb_toupper
  361.     int c /**< character to convert */
  362. );
  363. /**
  364.  * Converts letter to lower case.
  365.  * @return lower case letter (locale dependent).
  366.  */
  367. extern int mb_tolower
  368.     int c /**< character to convert */
  369.  );
  370. /**
  371.  * Prints a formated string based on the specified format. The output
  372.  * is stored in the provided string.
  373.  * @return the number of characters printed.
  374.  */
  375. extern int mb_sprintf
  376.     mb_char_t       *str,    /**< destination string */
  377.     const mb_char_t *format, /**< printf format specification string */
  378.     ...                      /**< argument list */
  379. );
  380. /**
  381.  * Prints a formated string based on the specified format. The intended output
  382.  * is stdout. It may be redirected at the customer discretion.
  383.  * @return the number of characters printed.
  384.  */
  385. extern int mb_printf
  386.     const mb_char_t *format, /**< printf format specification string */
  387.     ...                      /**< argument list */ 
  388. );
  389. /**
  390.  * Prints a formated string based on the specified format (variable argument 
  391.  * list version). The output is stored in the provided string.
  392.  * @return the number of characters printed.
  393.  */
  394. extern int mb_vsprintf
  395.     mb_char_t       *str,       /**<  destination string */
  396.     const mb_char_t *format,    /**< printf format specification string */
  397.     va_list          args       /**<  argument list*/
  398. );
  399. /**
  400.  * Prints a formated string based on the specified format(variable argument 
  401.  * list version). The intended output is stdout. It may be redirected at the
  402.  * customer discretion.
  403.  * @return the number of characters printed.
  404.  */
  405. extern int mb_vprintf
  406.     const mb_char_t *format,  /**< printf format specification string  */
  407.     va_list          args     /**< argument list */
  408. );
  409. /** @} */
  410. /*
  411.  * ======================= Math API ===========================================
  412.  */
  413. /** @defgroup math_group Math API
  414.  *  @{
  415.  * This API is used by Machblue to access the platform's math api.
  416.  * This api not used for critical operations in the player. So
  417.  * a software fpu implementation is acceptable.
  418.  */
  419. /**
  420.  * Initializes the random number generator.
  421.  * @return none.
  422.  */
  423. extern void mb_srand
  424.     unsigned int seed /**< seed number */
  425. );
  426. /**
  427.  * @return a random number between 0 and mb_rand_max().
  428.  */
  429. extern int mb_rand( void );
  430. /**
  431.  * @return the value of the maximum random number that can be returned by
  432.  * mb_rand().
  433.  */
  434. extern int mb_rand_max( void );
  435. /**
  436.  * @return the absolute value of x.
  437.  */
  438. extern float mb_fabsf
  439.     float x /**< */
  440. );
  441. /**
  442.  * @return the Arc Cosine of x.
  443.  */
  444. extern float mb_acosf
  445.     float x /**< */
  446. );
  447. /**
  448.  * @return the Arc Sine of x.
  449.  */
  450. extern float mb_asinf
  451.     float x  /**< */
  452. );
  453. /**
  454.  * @return the Arc Tangent of x ( ]-pi/2,pi/2[ resolution ).
  455.  */
  456. extern float mb_atanf
  457.     float x  /**< */
  458. );
  459. /**
  460.  * @return the Arc Tangent of (y / x) for ]-pi,pi] / {-pi/2,pi/2} resolution.
  461.  */
  462. extern float mb_atan2f
  463.     float y, /**< */ 
  464.     float x  /**< */ 
  465.  );
  466. /**
  467.  * @return the Cosine of x.
  468.  */
  469. extern float mb_cosf
  470.     float x  /**< */
  471. );
  472. /**
  473.  * @return the Sine of x.
  474.  */
  475. extern float mb_sinf
  476.     float x  /**< */
  477. );
  478. /**
  479.  * @return the Tangent of x.
  480.  */
  481. extern float mb_tanf
  482.     float x  /**< */
  483. );
  484. /**
  485.  * @return the Exponential of x.
  486.  */
  487. extern float mb_expf
  488.     float x  /**< */
  489. );
  490. /**
  491.  * @return the Natural Logarithm of x.
  492.  */
  493. extern float mb_logf
  494.     float x  /**< */
  495. );
  496. /**
  497.  * @return the x raised to the power of y.
  498.  */
  499. extern float mb_powf
  500.     float x, /**< */
  501.     float y  /**< */
  502. );
  503. /**
  504.  * @return the square root of x.
  505.  */
  506. extern float mb_sqrtf
  507.     float x  /**< */
  508. );
  509. /**
  510.  * @return the largest integer smaller than x.
  511.  */
  512. extern float mb_floorf
  513.     float x  /**< */
  514. );
  515. /**
  516.  * @return the smallest integer larger than x.
  517.  */
  518. extern float mb_ceilf
  519.     float x  /**< */
  520. );
  521. /**
  522.  * @return the reminder of x / y (double version).
  523.  */
  524. extern double mb_fmod
  525.     double x,  /**< */
  526.     double y   /**< */
  527. );
  528. /**
  529.  * @return the reminder of x / y (float version).
  530.  */
  531. extern float mb_fmodf
  532.     float x, /**< */
  533.     float y  /**< */
  534. );
  535. /**
  536.  * @return non zero if x is not a number, 0 otherwise.
  537.  */
  538. extern int mb_isnan
  539.     double x /**< */
  540. );
  541. /**
  542.  * @return non zero if x is a finite number, 0 otherwise.
  543.  */
  544. extern int mb_finite
  545.     double x  /**< */
  546. );
  547. /** @} */
  548. /*
  549.  * ======================= Socket API ===========================================
  550.  */
  551. /** @defgroup socket_group Socket API
  552.  *  @{
  553.  * This API is used by Machblue to access the platform's socket api.
  554.  */
  555. /**
  556.  * Creates a new communication socket.
  557.  * @return MB_SCCESS and updates "s" on success or MB_FAILURE on failure.
  558.  */
  559. extern mb_error_t mb_socket_create
  560.     mb_socket_t      *s,           /**< pointer to socket to create */
  561.     mb_socket_type_t  socket_type  /**< socket type to create */
  562. );
  563. /**
  564.  * Deletes a new communication socket.
  565.  * @return MB_SUCCESS on success and MB_FAILURE on failure.
  566.  */
  567. extern mb_error_t mb_socket_delete
  568.     mb_socket_t s  /**< socket to delete */
  569. );
  570. /**
  571.  * Connects a stream socket to a remote host.
  572.  * @return MB_SUCCESS on success and MB_FAILURE on failure.
  573.  */
  574. extern mb_error_t mb_socket_connect
  575.     mb_socket_t      s,        /**< socket to connect */
  576.     const mb_char_t *hostname, /**< tcp/ip hostname of the host to connect to */
  577.     unsigned int     port      /**< tcp/ip port to connect to */ 
  578. );
  579. /**
  580.  * Disconnects a stream socket from a remote host. It is legal
  581.  * for the client to disconnect a socket already disconnected by the
  582.  * server (and vice-versa).
  583.  *
  584.  * @return MB_SUCCESS on success and MB_FAILURE on failure.
  585.  */
  586. extern mb_error_t mb_socket_disconnect
  587.     mb_socket_t s  /**< socket to disconnect */
  588. );
  589. /**
  590.  * Polls a socket for a given event.
  591.  * @return MB_SUCCESS if the event condition polled for is current, MB_FAILURE otherwise.
  592.  */
  593. extern mb_error_t mb_socket_poll
  594.     mb_socket_t       s,    /**< socket to poll */ 
  595.     mb_socket_event_t event /**< event to poll for */
  596. );
  597. /**
  598.  * Sends data over a connected stream socket.
  599.  * @return the amount of data sent on success and a strcitly negative number 
  600.  * on failure.
  601.  */
  602. extern mb_ssize_t mb_socket_send
  603.     mb_socket_t  s,      /**< socket to send data on */
  604.     const void  *msg,    /**< message to  send */
  605.     mb_size_t    length  /**< size of the message to send in bytes */
  606. );
  607. /**
  608.  * Receives data from a connected stream socket.
  609.  * @return the amount of data read on success and a strcitly negative number 
  610.  * on failure.
  611.  */
  612. extern mb_ssize_t mb_socket_recv
  613.     mb_socket_t  s,     /**< socket to receive data from */
  614.     void        *buf,   /**< buffer to receive data in */
  615.     mb_size_t    length /**< length in bytes of buffer */
  616. );
  617. /** @} */
  618. /*
  619.  * ======================= File API ===========================================
  620.  */
  621. /** @defgroup file_group File API
  622.  *  @{
  623.  * This API is used by Machblue to access the platform's file api.
  624.  */
  625. /**
  626.  * Opens a file.
  627.  * @return MB_SUCCESS on success and MB_FAILURE on failure.
  628.  */
  629. extern mb_error_t mb_file_open
  630.     mb_file_t       *file,  /**< pointer to file handle to store handle of newly opened file */
  631.     const mb_char_t *path,  /**< path of the file to open */
  632.     const mb_char_t *mode   /**< mode in which the file should be open: "r" for read only,
  633.                                  "w" for write only, "rw" for read/write access and "a" for
  634.                                  append mode. */
  635. );
  636. /**
  637.  * Closes a file.
  638.  * @return MB_SUCCESS on success and MB_FAILURE on failure.
  639.  */
  640. extern mb_error_t mb_file_close
  641.     mb_file_t f /**< file handle to close */
  642. );
  643. /**
  644.  * Reads data from a file.
  645.  * @return ther number of byte actually read.
  646.  */
  647. extern mb_size_t mb_file_read
  648.     mb_file_t  f,     /**< file to read data from */
  649.     void      *ptr,   /**< pointer to read data into */
  650.     mb_size_t  count  /**< number of bytes to read */
  651. );
  652. /**
  653.  * Writes data to a file.
  654.  * @return ther number of byte actually written.
  655.  */
  656. extern mb_size_t mb_file_write
  657.     mb_file_t   f,     /**< file to write data to */ 
  658.     const void *ptr,   /**< pointer to data to write */ 
  659.     mb_size_t   count  /**< number of bytes to write */
  660. );
  661. /**
  662.  * Removes a file from the file system.
  663.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  664.  */
  665. extern mb_error_t mb_file_remove
  666.     const mb_char_t *pathname /**< pathname of the file to remove */
  667. );
  668. /**
  669.  * Gets the statistics of a file.
  670.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  671.  */
  672. extern mb_error_t mb_file_stats
  673.     const mb_char_t *pathname, /**< pathname of the file to stat */
  674.     mb_file_stats_t *stats     /**< user provided mb_file_stats_t structure used to store 
  675.                                     requested file statistics */
  676. );
  677. /** @} */
  678. /*
  679.  * ======================= Directory API ===========================================
  680.  */
  681. /** @defgroup directory_group Directory API
  682.  *  @{
  683.  * This API is used by Machblue to access the platform's directory api.
  684.  */
  685. /**
  686.  * Opens a file.
  687.  * @return MB_SUCCESS on success, MB_NOT_A_DIRECTORY if the requested name 
  688.  * is not a directory otherwise returns MB_FAILURE.
  689.  */
  690. extern mb_error_t mb_dir_open
  691.     mb_dir_t        *dir,  /**< pointer to directory handle to store handle of newly 
  692.                                 opened directory */
  693.     const mb_char_t *name  /**< name of the directory to open */
  694. );
  695. /**
  696.  * Closes a directory.
  697.  * @return MB_SUCCESS on success and MB_FAILURE on failure.
  698.  */
  699. extern mb_error_t mb_dir_close
  700.     mb_dir_t dir  /**< directory to close */
  701. );
  702. /**
  703.  * Gets the first entry of a directory. mb_dir_entry_next may called
  704.  * to get the next entries of the directory.
  705.  * @return MB_SUCCESS on success and MB_FAILURE on failure.
  706.  */
  707. extern mb_error_t mb_dir_entry_first
  708.     mb_dir_t        dir,   /**< directory to query */
  709.     mb_dir_entry_t *entry  /**< pointer to directory entry to update */
  710. );
  711. /**
  712.  * Gets the next entry of a directory. mb_dir_entry_first should be called
  713.  * to get the first entry of the directory.
  714.  * @return MB_SUCCESS on success and MB_FAILURE on failure.
  715.  */
  716. extern mb_error_t mb_dir_entry_next
  717.     mb_dir_t        dir,   /**< directory to query */
  718.     mb_dir_entry_t *entry  /**< pointer to directory entry to update */
  719. );
  720. /**
  721.  * Removes a directory from the file system.
  722.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  723.  */
  724. extern mb_error_t mb_dir_remove
  725.     const mb_char_t *pathname  /**< absolute pathname of the directory to remove */
  726. );
  727. /**
  728.  * Creates a new directory in the file system.
  729.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  730.  */
  731. extern mb_error_t mb_dir_create
  732.     const mb_char_t *pathname  /**< absolute pathname of the directory to create */
  733. );
  734. /** @} */
  735. /*
  736.  * ======================= Surface API ===========================================
  737.  */
  738. /** @defgroup surface_group Surface API
  739.  *  @{
  740.  * This API is used by Machblue to access the platform's surface api.
  741.  */
  742. /**
  743.  * Creates a new surface.
  744.  * @return MB_SUCCESS and updates "surface" on success, MB_FAILURE otherwise.
  745.  */
  746. extern mb_error_t mb_surface_create
  747.     mb_surface_t      *surface,  /**< pointer to surface to create */
  748.     int                width,    /**< width of the surface to create */
  749.     int                height,   /**< height of the surface to create */
  750.     mb_pixel_format_t  format    /**< pixel format of the surface to create */
  751. );
  752. /**
  753.  * Deletes a surface.
  754.  * @return MB_SUCCESS on success and MB_FAILURE on failure.
  755.  */
  756. extern mb_error_t mb_surface_delete
  757.     mb_surface_t surface  /**< surface to delete */
  758. );
  759. /**
  760.  * Computes the amount of memory that would be required to create a surface
  761.  * with the provided attributes. size_req is updated with the amount of memory 
  762.  * required in case of success.
  763.  * @return MB_SUCCESS and MB_FAILURE on failure.
  764.  */
  765. extern mb_error_t mb_surface_requirement_get
  766.     int               width,    /**< width of the surface to estimate */
  767.     int               height,   /**< height of the surface to estimate */
  768.     mb_pixel_format_t format,   /**< pixel format of the surface to estimate */ 
  769.     mb_size_t         *size_req /**< pointer to location to store size requirements */
  770. );
  771. /**
  772.  * Queries the attributes of a surface.
  773.  * @return MB_SUCCESS and MB_FAILURE on failure.
  774.  */
  775. extern mb_error_t mb_surface_attributes_get
  776.     mb_surface_t      surface,   /**< surface to query */
  777.     int               *width,    /**< pointer to location to store the width of 
  778.                                       the surface */
  779.     int               *height,   /**< pointer to location to store the height of 
  780.                                       the surface */
  781.     mb_pixel_format_t *format    /**< pointer to location to store the pixel format 
  782.                                       of the surface */ 
  783. );
  784. /**
  785.  * Clears a surface.
  786.  * @return MB_SUCCESS on success and MB_FAILURE on failure.
  787.  */
  788. extern mb_error_t mb_surface_clear
  789.     mb_surface_t  surface,  /**< surface to clear */
  790.     mb_rect_t    *rect,     /**< rectangle area to clear */
  791.     unsigned int  color     /**< color in surface color format */
  792. );
  793. /**
  794.  * Locks a surface.
  795.  * @return MB_SUCCESS and updates locked_ptr on success and MB_FAILURE on failure. 
  796.  * The pitch value is updated in case of success. 
  797.  */
  798. extern mb_error_t mb_surface_lock
  799.     mb_surface_t   surface,   /**< surface to lock */
  800.     int           *pitch,     /**< pointer to int to store store surface pitch */
  801.     void         **locked_ptr /**< pointer to the location to store pointer to the 
  802.                                    locked surface buffer */
  803. );
  804. /**
  805.  * Unlocks a surface.
  806.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  807.  */
  808. extern mb_error_t mb_surface_unlock
  809.     mb_surface_t surface  /**< surface to unlock */
  810. );
  811. /**
  812.  * Blits a surface into another surface.
  813.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  814.  */
  815. extern mb_error_t mb_surface_blit
  816.     mb_surface_t      dest_surface, /**< destination surface */
  817.     mb_rect_t        *dest_rect,    /**< destination rectangle area to blit to */ 
  818.     mb_surface_t      src_surface,  /**< source surface */
  819.     mb_rect_t        *src_rect,     /**< source rectangle area to blit from */ 
  820.     mb_blit_option_t  options       /**< blit options */ 
  821. );
  822. /** @} */
  823. /*
  824.  * ======================= Font API ===========================================
  825.  */
  826. /** @defgroup font_group Font API
  827.  *  @{
  828.  * This API is used by Machblue to access the platform's font api.
  829.  */
  830. /**
  831.  * Creates a new font object.
  832.  * @return MB_SUCCESS and updates "font" on success, MB_FAILURE othrewise.
  833.  */
  834. extern mb_error_t mb_font_create
  835.     mb_font_t       *font,       /**< pointer to font to create */
  836.     const mb_char_t *font_name,  /**< name of the font to create */
  837.     mb_font_style_t  style,      /**< style of the font to create */
  838.     int              size        /**< size of the font to create */
  839. );
  840. /**
  841.  * Deletes an existing font object.
  842.  * @return MB_SUCCESS on success and MB_FAILURE on failure.
  843.  */
  844. extern mb_error_t mb_font_delete
  845.     mb_font_t font  /**< font object to delete */
  846. );
  847. /**
  848.  * Sets a new font size to the font object.
  849.  * @return MB_SUCCESS on success and MB_FAILURE on failure.
  850.  */
  851. extern mb_error_t mb_font_size_set
  852.     mb_font_t font,     /**< font object to modify */
  853.     int       new_size  /**< new size to set */
  854. );
  855. /**
  856.  * Gets a font object attributes.
  857.  * @return MB_SUCCESS on success and MB_FAILURE on failure.
  858.  */
  859. extern mb_error_t mb_font_attributes_get
  860.     mb_font_t  font,      /**< font object to query */
  861.     int       *size,      /**< pointer to int to store font size */
  862.     int       *ascender,  /**< pointer to int to store font ascender */
  863.     int       *spacing    /**< pointer to int to store font spacing */
  864. );
  865. /** @} */
  866. /*
  867.  * ======================= Text Drawing API ===========================================
  868.  */
  869. /** @defgroup text_group Text Drawing API
  870.  *  @{
  871.  * This API is used by Machblue to access the platform's text drawing api.
  872.  */
  873. /**
  874.  * Gets a text extent (bounds).
  875.  * @return MB_SUCCESS on success and MB_FAILURE on failure.
  876.  */
  877. extern mb_error_t mb_text_bounds_get
  878.     const mb_char_t *text,    /**< text to evaluate */
  879.     int              length,  /**< length in characters of the text to evaluate */
  880.     mb_font_t        font,    /**< font to use for the extent calculation */
  881.     mb_rect_t       *bounds   /**< pointer to mb_rect_t used to store calculated extent */ 
  882. );
  883. /**
  884.  * Draws a text into a surface.
  885.  * @return MB_SUCCESS on success and MB_FAILURE on failure.
  886.  */
  887. extern mb_error_t mb_text_draw
  888.     const mb_char_t   *text,                   /**< text to draw */
  889.     int                length,                 /**< length in characters of the text to draw */
  890.     mb_surface_t       surface,                /**< destination surface to draw text to */
  891.     mb_font_t          font,                   /**< font to draw text with */
  892.     mb_point_t        *baseline_anchor_point,  /**< anchor point to draw text at (relative to surface) */
  893.     mb_rect_t         *clipping_rect,          /**< text clipping rectangle (relative to surface) */
  894.     unsigned int       color                   /**< color of the text to draw in native surface format */  
  895. );
  896. /** @} */
  897. /*
  898.  * ======================= PCM engine API ===========================================
  899.  */
  900. /** @defgroup pcm_group PCM engine API
  901.  *  @{
  902.  * This API is used by Machblue to access the platform's pcm engine api.
  903.  */
  904. /**
  905.  * Opens device pcm engine for playback.
  906.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  907.  */
  908. extern mb_error_t mb_pcm_engine_open
  909.     mb_pcm_engine_t *pcm_engine   /**< pointer to pcm engine handle to store handle 
  910.                                        of newly opened pcm engine */
  911. );
  912. /**
  913.  * Closes PCM engine.
  914.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  915.  */
  916. extern mb_error_t mb_pcm_engine_close
  917.     mb_pcm_engine_t pcm_engine  /**< PCM engine to close */
  918. );
  919. /**
  920.  * Sets PCM engine format.
  921.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  922.  */
  923. extern mb_error_t mb_pcm_engine_format_set
  924.     mb_pcm_engine_t  pcm_engine,   /**< pcm engine to configure */ 
  925.     mb_pcm_format_t  format,       /**< pcm format requested */
  926.     unsigned long    sample_rate,  /**< pcm sample rate requested in Hz */
  927.     int              n_channels    /**< number of channels requested (1 for mono, 
  928.                                         2 for stereo, etc.) */
  929. );
  930. /**
  931.  * Plays a sample buffer on a PCM engine.
  932.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  933.  */
  934. extern mb_error_t mb_pcm_engine_play
  935.     mb_pcm_engine_t    pcm_engine,     /**< pcm engine to play samples on */ 
  936.     const void        *sample_buffer,  /**< sample buffer to play */
  937.     int                n_samples,      /**< number of samples to play */
  938.     mb_pcm_callback_f *callback_f,     /**< callback function to invoke when playback is over */
  939.     void              *cb_client_data  /**< callback function client data */
  940. );
  941. /** @} */
  942. /*
  943.  * ======================= Kernel Panic API ===========================================
  944.  */
  945. /** @defgroup kernel_panic_group Kernel Panic API
  946.  *  @{
  947.  * This API is used by Machblue to access the platform's kernel panic api.
  948.  */
  949. /**
  950.  * Invokes by Machblue when an unrecoverable error has been encountered.
  951.  * @return none.
  952.  */
  953. extern void mb_panic
  954.     const mb_char_t *str /**< panic string to display before aborting */
  955. );
  956. /** @} */
  957. /*
  958.  * ======================= System Time API ===========================================
  959.  */
  960. /** @defgroup system_time_group System Time API
  961.  *  @{
  962.  * This API is used by Machblue to access the platform's system time api.
  963.  */
  964. /**
  965.  * Gets the current system time (UTC).
  966.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  967.  */
  968. extern mb_error_t mb_system_time_get
  969.     mb_system_time_t *system_time   /**< pointer to mb_system_time_t structure to update */ 
  970. );
  971. /**
  972.  * Gets the system time zone.
  973.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  974.  */
  975. extern mb_error_t mb_timezone_get
  976.     mb_timezone_t *timezone   /**< pointer to mb_timezone_t structure to update */ 
  977. );
  978. /** @} */
  979. #ifdef __cplusplus
  980. }      /* extern "C" */  
  981. #endif /* __cplusplus */
  982. #endif /* _MACHBLUE_PORTING_CORE_H_ */