locale_class.c 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /*
  2. +----------------------------------------------------------------------+
  3. | PHP Version 7 |
  4. +----------------------------------------------------------------------+
  5. | This source file is subject to version 3.01 of the PHP license, |
  6. | that is bundled with this package in the file LICENSE, and is |
  7. | available through the world-wide-web at the following url: |
  8. | http://www.php.net/license/3_01.txt |
  9. | If you did not receive a copy of the PHP license and are unable to |
  10. | obtain it through the world-wide-web, please send a note to |
  11. | license@php.net so we can mail you a copy immediately. |
  12. +----------------------------------------------------------------------+
  13. | Authors: Kirti Velankar <kirtig@yahoo-inc.com> |
  14. +----------------------------------------------------------------------+
  15. */
  16. #include <unicode/uloc.h>
  17. #include "php_intl.h"
  18. #include "intl_error.h"
  19. #include "locale_class.h"
  20. #include "locale_methods.h"
  21. #include "locale.h"
  22. zend_class_entry *Locale_ce_ptr = NULL;
  23. /*
  24. * 'Locale' class registration structures & functions
  25. */
  26. /* {{{ Locale methods arguments info */
  27. /*
  28. * NOTE: when modifying 'locale_XX_args' do not forget to modify
  29. * approptiate 'locale_XX_args' for the procedural API!
  30. */
  31. ZEND_BEGIN_ARG_INFO_EX( locale_0_args, 0, 0, 0 )
  32. ZEND_END_ARG_INFO()
  33. ZEND_BEGIN_ARG_INFO_EX( locale_arg_locale, 0, 0, 1 )
  34. ZEND_ARG_INFO( 0, locale )
  35. ZEND_END_ARG_INFO()
  36. ZEND_BEGIN_ARG_INFO_EX( locale_accept_from_http_args, 0, 0, 1 )
  37. ZEND_ARG_INFO( 0, header )
  38. ZEND_END_ARG_INFO()
  39. ZEND_BEGIN_ARG_INFO_EX( locale_compose_args, 0, 0, 1 )
  40. ZEND_ARG_INFO( 0, subtags )
  41. ZEND_END_ARG_INFO()
  42. ZEND_BEGIN_ARG_INFO_EX( locale_2_args, 0, 0, 1 )
  43. ZEND_ARG_INFO( 0, locale )
  44. ZEND_ARG_INFO( 0, in_locale )
  45. ZEND_END_ARG_INFO()
  46. ZEND_BEGIN_ARG_INFO_EX( locale_filter_matches_args, 0, 0, 2 )
  47. ZEND_ARG_INFO( 0, langtag )
  48. ZEND_ARG_INFO( 0, locale )
  49. ZEND_ARG_INFO( 0, canonicalize )
  50. ZEND_END_ARG_INFO()
  51. ZEND_BEGIN_ARG_INFO_EX( locale_lookup_args, 0, 0, 2 )
  52. ZEND_ARG_INFO( 0, langtag )
  53. ZEND_ARG_INFO( 0, locale )
  54. ZEND_ARG_INFO( 0, canonicalize )
  55. ZEND_ARG_INFO( 0, default )
  56. ZEND_END_ARG_INFO()
  57. /* }}} */
  58. /* {{{ Locale_class_functions
  59. * Every 'Locale' class method has an entry in this table
  60. */
  61. static const zend_function_entry Locale_class_functions[] = {
  62. ZEND_FENTRY( getDefault, zif_locale_get_default , locale_0_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  63. ZEND_FENTRY( setDefault, zif_locale_set_default , locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  64. ZEND_FENTRY( getPrimaryLanguage, ZEND_FN( locale_get_primary_language ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  65. ZEND_FENTRY( getScript, ZEND_FN( locale_get_script ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  66. ZEND_FENTRY( getRegion, ZEND_FN( locale_get_region ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  67. ZEND_FENTRY( getKeywords, ZEND_FN( locale_get_keywords ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  68. ZEND_FENTRY( getDisplayScript, ZEND_FN( locale_get_display_script ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  69. ZEND_FENTRY( getDisplayRegion, ZEND_FN( locale_get_display_region ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  70. ZEND_FENTRY( getDisplayName, ZEND_FN( locale_get_display_name ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  71. ZEND_FENTRY( getDisplayLanguage, ZEND_FN( locale_get_display_language ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  72. ZEND_FENTRY( getDisplayVariant, ZEND_FN( locale_get_display_variant ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  73. ZEND_FENTRY( composeLocale, ZEND_FN( locale_compose ), locale_compose_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  74. ZEND_FENTRY( parseLocale, ZEND_FN( locale_parse ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  75. ZEND_FENTRY( getAllVariants, ZEND_FN( locale_get_all_variants ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  76. ZEND_FENTRY( filterMatches, ZEND_FN( locale_filter_matches ), locale_filter_matches_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  77. ZEND_FENTRY( lookup, ZEND_FN( locale_lookup ), locale_lookup_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  78. ZEND_FENTRY( canonicalize, ZEND_FN( locale_canonicalize ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  79. ZEND_FENTRY( acceptFromHttp, ZEND_FN( locale_accept_from_http ), locale_accept_from_http_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
  80. PHP_FE_END
  81. };
  82. /* }}} */
  83. /* {{{ locale_register_Locale_class
  84. * Initialize 'Locale' class
  85. */
  86. void locale_register_Locale_class( void )
  87. {
  88. zend_class_entry ce;
  89. /* Create and register 'Locale' class. */
  90. INIT_CLASS_ENTRY( ce, "Locale", Locale_class_functions );
  91. ce.create_object = NULL;
  92. Locale_ce_ptr = zend_register_internal_class( &ce );
  93. /* Declare 'Locale' class properties. */
  94. if( !Locale_ce_ptr )
  95. {
  96. zend_error( E_ERROR,
  97. "Locale: Failed to register Locale class.");
  98. return;
  99. }
  100. }
  101. /* }}} */
  102. /*
  103. * Local variables:
  104. * tab-width: 4
  105. * c-basic-offset: 4
  106. * End:
  107. * vim600: noet sw=4 ts=4 fdm=marker
  108. * vim<600: noet sw=4 ts=4
  109. */