Back to index

unity-lens-music  6.0.0
banshee-filter-parser-genre.c
Go to the documentation of this file.
00001 /* banshee-filter-parser-genre.c generated by valac 0.14.2, the Vala compiler
00002  * generated from banshee-filter-parser-genre.vala, do not modify */
00003 
00004 /*
00005  * Copyright (C) 2011 Canonical Ltd
00006  *
00007  * This program is free software: you can redistribute it and/or modify
00008  * it under the terms of the GNU General Public License version 3 as
00009  * published by the Free Software Foundation.
00010  *
00011  * This program is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  * GNU General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU General Public License
00017  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
00018  *
00019  * Authored by Alex Launi <alex.launi@canonical.com>
00020  *
00021  */
00022 
00023 #include <glib.h>
00024 #include <glib-object.h>
00025 #include <stdlib.h>
00026 #include <string.h>
00027 #include <unity.h>
00028 #include <gee.h>
00029 
00030 
00031 #define UNITY_MUSIC_LENS_TYPE_FILTER_PARSER (unity_music_lens_filter_parser_get_type ())
00032 #define UNITY_MUSIC_LENS_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_MUSIC_LENS_TYPE_FILTER_PARSER, UnityMusicLensFilterParser))
00033 #define UNITY_MUSIC_LENS_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_MUSIC_LENS_TYPE_FILTER_PARSER, UnityMusicLensFilterParserClass))
00034 #define UNITY_MUSIC_LENS_IS_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_MUSIC_LENS_TYPE_FILTER_PARSER))
00035 #define UNITY_MUSIC_LENS_IS_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_MUSIC_LENS_TYPE_FILTER_PARSER))
00036 #define UNITY_MUSIC_LENS_FILTER_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_MUSIC_LENS_TYPE_FILTER_PARSER, UnityMusicLensFilterParserClass))
00037 
00038 typedef struct _UnityMusicLensFilterParser UnityMusicLensFilterParser;
00039 typedef struct _UnityMusicLensFilterParserClass UnityMusicLensFilterParserClass;
00040 typedef struct _UnityMusicLensFilterParserPrivate UnityMusicLensFilterParserPrivate;
00041 
00042 #define UNITY_MUSIC_LENS_TYPE_GENRE_FILTER_PARSER (unity_music_lens_genre_filter_parser_get_type ())
00043 #define UNITY_MUSIC_LENS_GENRE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_MUSIC_LENS_TYPE_GENRE_FILTER_PARSER, UnityMusicLensGenreFilterParser))
00044 #define UNITY_MUSIC_LENS_GENRE_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_MUSIC_LENS_TYPE_GENRE_FILTER_PARSER, UnityMusicLensGenreFilterParserClass))
00045 #define UNITY_MUSIC_LENS_IS_GENRE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_MUSIC_LENS_TYPE_GENRE_FILTER_PARSER))
00046 #define UNITY_MUSIC_LENS_IS_GENRE_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_MUSIC_LENS_TYPE_GENRE_FILTER_PARSER))
00047 #define UNITY_MUSIC_LENS_GENRE_FILTER_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_MUSIC_LENS_TYPE_GENRE_FILTER_PARSER, UnityMusicLensGenreFilterParserClass))
00048 
00049 typedef struct _UnityMusicLensGenreFilterParser UnityMusicLensGenreFilterParser;
00050 typedef struct _UnityMusicLensGenreFilterParserClass UnityMusicLensGenreFilterParserClass;
00051 typedef struct _UnityMusicLensGenreFilterParserPrivate UnityMusicLensGenreFilterParserPrivate;
00052 
00053 #define UNITY_MUSIC_LENS_TYPE_BANSHEE_FILTER_PARSER (unity_music_lens_banshee_filter_parser_get_type ())
00054 #define UNITY_MUSIC_LENS_BANSHEE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_FILTER_PARSER, UnityMusicLensBansheeFilterParser))
00055 #define UNITY_MUSIC_LENS_IS_BANSHEE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_FILTER_PARSER))
00056 #define UNITY_MUSIC_LENS_BANSHEE_FILTER_PARSER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_FILTER_PARSER, UnityMusicLensBansheeFilterParserIface))
00057 
00058 typedef struct _UnityMusicLensBansheeFilterParser UnityMusicLensBansheeFilterParser;
00059 typedef struct _UnityMusicLensBansheeFilterParserIface UnityMusicLensBansheeFilterParserIface;
00060 
00061 #define UNITY_MUSIC_LENS_TYPE_BANSHEE_GENRE_FILTER_PARSER (unity_music_lens_banshee_genre_filter_parser_get_type ())
00062 #define UNITY_MUSIC_LENS_BANSHEE_GENRE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_GENRE_FILTER_PARSER, UnityMusicLensBansheeGenreFilterParser))
00063 #define UNITY_MUSIC_LENS_BANSHEE_GENRE_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_MUSIC_LENS_TYPE_BANSHEE_GENRE_FILTER_PARSER, UnityMusicLensBansheeGenreFilterParserClass))
00064 #define UNITY_MUSIC_LENS_IS_BANSHEE_GENRE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_GENRE_FILTER_PARSER))
00065 #define UNITY_MUSIC_LENS_IS_BANSHEE_GENRE_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_MUSIC_LENS_TYPE_BANSHEE_GENRE_FILTER_PARSER))
00066 #define UNITY_MUSIC_LENS_BANSHEE_GENRE_FILTER_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_GENRE_FILTER_PARSER, UnityMusicLensBansheeGenreFilterParserClass))
00067 
00068 typedef struct _UnityMusicLensBansheeGenreFilterParser UnityMusicLensBansheeGenreFilterParser;
00069 typedef struct _UnityMusicLensBansheeGenreFilterParserClass UnityMusicLensBansheeGenreFilterParserClass;
00070 typedef struct _UnityMusicLensBansheeGenreFilterParserPrivate UnityMusicLensBansheeGenreFilterParserPrivate;
00071 #define _g_free0(var) (var = (g_free (var), NULL))
00072 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
00073 
00074 #define UNITY_MUSIC_LENS_TYPE_GENRE (unity_music_lens_genre_get_type ())
00075 #define UNITY_MUSIC_LENS_GENRE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_MUSIC_LENS_TYPE_GENRE, UnityMusicLensGenre))
00076 #define UNITY_MUSIC_LENS_GENRE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_MUSIC_LENS_TYPE_GENRE, UnityMusicLensGenreClass))
00077 #define UNITY_MUSIC_LENS_IS_GENRE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_MUSIC_LENS_TYPE_GENRE))
00078 #define UNITY_MUSIC_LENS_IS_GENRE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_MUSIC_LENS_TYPE_GENRE))
00079 #define UNITY_MUSIC_LENS_GENRE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_MUSIC_LENS_TYPE_GENRE, UnityMusicLensGenreClass))
00080 
00081 typedef struct _UnityMusicLensGenre UnityMusicLensGenre;
00082 typedef struct _UnityMusicLensGenreClass UnityMusicLensGenreClass;
00083 #define __g_list_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_object_unref0_ (var), NULL)))
00084 #define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL)))
00085 
00086 struct _UnityMusicLensFilterParser {
00087        GObject parent_instance;
00088        UnityMusicLensFilterParserPrivate * priv;
00089 };
00090 
00091 struct _UnityMusicLensFilterParserClass {
00092        GObjectClass parent_class;
00093        gchar* (*parse) (UnityMusicLensFilterParser* self);
00094        const gchar* (*get_id) (UnityMusicLensFilterParser* self);
00095 };
00096 
00097 struct _UnityMusicLensGenreFilterParser {
00098        UnityMusicLensFilterParser parent_instance;
00099        UnityMusicLensGenreFilterParserPrivate * priv;
00100 };
00101 
00102 struct _UnityMusicLensGenreFilterParserClass {
00103        UnityMusicLensFilterParserClass parent_class;
00104 };
00105 
00106 struct _UnityMusicLensBansheeFilterParserIface {
00107        GTypeInterface parent_iface;
00108 };
00109 
00110 struct _UnityMusicLensBansheeGenreFilterParser {
00111        UnityMusicLensGenreFilterParser parent_instance;
00112        UnityMusicLensBansheeGenreFilterParserPrivate * priv;
00113 };
00114 
00115 struct _UnityMusicLensBansheeGenreFilterParserClass {
00116        UnityMusicLensGenreFilterParserClass parent_class;
00117 };
00118 
00119 
00120 static gpointer unity_music_lens_banshee_genre_filter_parser_parent_class = NULL;
00121 static UnityMusicLensBansheeFilterParserIface* unity_music_lens_banshee_genre_filter_parser_unity_music_lens_banshee_filter_parser_parent_iface = NULL;
00122 
00123 GType unity_music_lens_filter_parser_get_type (void) G_GNUC_CONST;
00124 GType unity_music_lens_genre_filter_parser_get_type (void) G_GNUC_CONST;
00125 GType unity_music_lens_banshee_filter_parser_get_type (void) G_GNUC_CONST;
00126 GType unity_music_lens_banshee_genre_filter_parser_get_type (void) G_GNUC_CONST;
00127 enum  {
00128        UNITY_MUSIC_LENS_BANSHEE_GENRE_FILTER_PARSER_DUMMY_PROPERTY
00129 };
00130 UnityMusicLensBansheeGenreFilterParser* unity_music_lens_banshee_genre_filter_parser_new (UnityMusicLensGenreFilterParser* parser);
00131 UnityMusicLensBansheeGenreFilterParser* unity_music_lens_banshee_genre_filter_parser_construct (GType object_type, UnityMusicLensGenreFilterParser* parser);
00132 UnityFilter* unity_music_lens_filter_parser_get_filter (UnityMusicLensFilterParser* self);
00133 UnityMusicLensGenreFilterParser* unity_music_lens_genre_filter_parser_new (UnityCheckOptionFilterCompact* filter);
00134 UnityMusicLensGenreFilterParser* unity_music_lens_genre_filter_parser_construct (GType object_type, UnityCheckOptionFilterCompact* filter);
00135 static gchar* unity_music_lens_banshee_genre_filter_parser_real_parse (UnityMusicLensFilterParser* base);
00136 GList* unity_music_lens_genre_filter_parser_get_all_selected_genres (UnityMusicLensGenreFilterParser* self);
00137 GType unity_music_lens_genre_get_type (void) G_GNUC_CONST;
00138 UnityMusicLensGenre* unity_music_lens_genre_filter_parser_get_map (UnityMusicLensGenreFilterParser* self);
00139 GeeCollection* unity_music_lens_genre_get_genre_synonyms (UnityMusicLensGenre* self, const gchar* genre_id);
00140 static void _g_object_unref0_ (gpointer var);
00141 static void _g_list_free__g_object_unref0_ (GList* self);
00142 
00143 
00144 UnityMusicLensBansheeGenreFilterParser* unity_music_lens_banshee_genre_filter_parser_construct (GType object_type, UnityMusicLensGenreFilterParser* parser) {
00145        UnityMusicLensBansheeGenreFilterParser * self = NULL;
00146        UnityMusicLensGenreFilterParser* _tmp0_;
00147        UnityFilter* _tmp1_;
00148        UnityFilter* _tmp2_;
00149        g_return_val_if_fail (parser != NULL, NULL);
00150        _tmp0_ = parser;
00151        _tmp1_ = unity_music_lens_filter_parser_get_filter ((UnityMusicLensFilterParser*) _tmp0_);
00152        _tmp2_ = _tmp1_;
00153        self = (UnityMusicLensBansheeGenreFilterParser*) unity_music_lens_genre_filter_parser_construct (object_type, UNITY_IS_CHECK_OPTION_FILTER_COMPACT (_tmp2_) ? ((UnityCheckOptionFilterCompact*) _tmp2_) : NULL);
00154        return self;
00155 }
00156 
00157 
00158 UnityMusicLensBansheeGenreFilterParser* unity_music_lens_banshee_genre_filter_parser_new (UnityMusicLensGenreFilterParser* parser) {
00159        return unity_music_lens_banshee_genre_filter_parser_construct (UNITY_MUSIC_LENS_TYPE_BANSHEE_GENRE_FILTER_PARSER, parser);
00160 }
00161 
00162 
00163 static gpointer _g_object_ref0 (gpointer self) {
00164        return self ? g_object_ref (self) : NULL;
00165 }
00166 
00167 
00168 static void _g_object_unref0_ (gpointer var) {
00169        (var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
00170 }
00171 
00172 
00173 static void _g_list_free__g_object_unref0_ (GList* self) {
00174        g_list_foreach (self, (GFunc) _g_object_unref0_, NULL);
00175        g_list_free (self);
00176 }
00177 
00178 
00179 static gchar* unity_music_lens_banshee_genre_filter_parser_real_parse (UnityMusicLensFilterParser* base) {
00180        UnityMusicLensBansheeGenreFilterParser * self;
00181        gchar* result = NULL;
00182        GString* _tmp0_;
00183        GString* builder;
00184        GList* _tmp1_ = NULL;
00185        GList* genres;
00186        GList* _tmp2_;
00187        GString* _tmp26_;
00188        GString* _tmp27_;
00189        gssize _tmp28_;
00190        gint _tmp29_;
00191        gint _tmp30_;
00192        GString* _tmp31_;
00193        GString* _tmp32_;
00194        GString* _tmp33_;
00195        const gchar* _tmp34_;
00196        gchar* _tmp35_;
00197        self = (UnityMusicLensBansheeGenreFilterParser*) base;
00198        _tmp0_ = g_string_new ("");
00199        builder = _tmp0_;
00200        _tmp1_ = unity_music_lens_genre_filter_parser_get_all_selected_genres ((UnityMusicLensGenreFilterParser*) self);
00201        genres = _tmp1_;
00202        _tmp2_ = genres;
00203        {
00204               GList* genre_collection = NULL;
00205               GList* genre_it = NULL;
00206               genre_collection = _tmp2_;
00207               for (genre_it = genre_collection; genre_it != NULL; genre_it = genre_it->next) {
00208                      UnityFilterOption* _tmp3_;
00209                      UnityFilterOption* genre = NULL;
00210                      _tmp3_ = _g_object_ref0 ((UnityFilterOption*) genre_it->data);
00211                      genre = _tmp3_;
00212                      {
00213                             UnityFilterOption* _tmp4_;
00214                             const gchar* _tmp5_;
00215                             const gchar* _tmp6_;
00216                             gchar* _tmp7_;
00217                             gchar* id;
00218                             UnityFilterOption* _tmp8_;
00219                             const gchar* _tmp9_;
00220                             const gchar* _tmp10_;
00221                             _tmp4_ = genre;
00222                             _tmp5_ = unity_filter_option_get_id (_tmp4_);
00223                             _tmp6_ = _tmp5_;
00224                             _tmp7_ = g_strdup (_tmp6_);
00225                             id = _tmp7_;
00226                             _tmp8_ = genre;
00227                             _tmp9_ = unity_filter_option_get_id (_tmp8_);
00228                             _tmp10_ = _tmp9_;
00229                             if (_tmp10_ == NULL) {
00230                                    _g_free0 (id);
00231                                    _g_object_unref0 (genre);
00232                                    continue;
00233                             }
00234                             {
00235                                    UnityMusicLensGenre* _tmp11_;
00236                                    UnityMusicLensGenre* _tmp12_;
00237                                    const gchar* _tmp13_;
00238                                    GeeCollection* _tmp14_ = NULL;
00239                                    GeeCollection* _tmp15_;
00240                                    GeeIterator* _tmp16_ = NULL;
00241                                    GeeIterator* _tmp17_;
00242                                    GeeIterator* _alt_it;
00243                                    _tmp11_ = unity_music_lens_genre_filter_parser_get_map ((UnityMusicLensGenreFilterParser*) self);
00244                                    _tmp12_ = _tmp11_;
00245                                    _tmp13_ = id;
00246                                    _tmp14_ = unity_music_lens_genre_get_genre_synonyms (_tmp12_, _tmp13_);
00247                                    _tmp15_ = _tmp14_;
00248                                    _tmp16_ = gee_iterable_iterator ((GeeIterable*) _tmp15_);
00249                                    _tmp17_ = _tmp16_;
00250                                    _g_object_unref0 (_tmp15_);
00251                                    _alt_it = _tmp17_;
00252                                    while (TRUE) {
00253                                           GeeIterator* _tmp18_;
00254                                           gboolean _tmp19_ = FALSE;
00255                                           GeeIterator* _tmp20_;
00256                                           gpointer _tmp21_ = NULL;
00257                                           gchar* alt;
00258                                           GString* _tmp22_;
00259                                           GString* _tmp23_;
00260                                           const gchar* _tmp24_;
00261                                           GString* _tmp25_;
00262                                           _tmp18_ = _alt_it;
00263                                           _tmp19_ = gee_iterator_next (_tmp18_);
00264                                           if (!_tmp19_) {
00265                                                  break;
00266                                           }
00267                                           _tmp20_ = _alt_it;
00268                                           _tmp21_ = gee_iterator_get (_tmp20_);
00269                                           alt = (gchar*) _tmp21_;
00270                                           _tmp22_ = builder;
00271                                           g_string_append (_tmp22_, "(CoreTracks.Genre LIKE '%");
00272                                           _tmp23_ = builder;
00273                                           _tmp24_ = alt;
00274                                           g_string_append (_tmp23_, _tmp24_);
00275                                           _tmp25_ = builder;
00276                                           g_string_append (_tmp25_, "%' ESCAPE '\\' AND CoreTracks.Genre IS NOT NULL) OR ");
00277                                           _g_free0 (alt);
00278                                    }
00279                                    _g_object_unref0 (_alt_it);
00280                             }
00281                             _g_free0 (id);
00282                             _g_object_unref0 (genre);
00283                      }
00284               }
00285        }
00286        _tmp26_ = builder;
00287        _tmp27_ = builder;
00288        _tmp28_ = _tmp27_->len;
00289        _tmp29_ = strlen (" OR ");
00290        _tmp30_ = _tmp29_;
00291        g_string_truncate (_tmp26_, (gsize) (_tmp28_ - _tmp30_));
00292        _tmp31_ = builder;
00293        g_string_prepend (_tmp31_, "(");
00294        _tmp32_ = builder;
00295        g_string_append (_tmp32_, ")");
00296        _tmp33_ = builder;
00297        _tmp34_ = _tmp33_->str;
00298        _tmp35_ = g_strdup (_tmp34_);
00299        result = _tmp35_;
00300        __g_list_free__g_object_unref0_0 (genres);
00301        _g_string_free0 (builder);
00302        return result;
00303 }
00304 
00305 
00306 static void unity_music_lens_banshee_genre_filter_parser_class_init (UnityMusicLensBansheeGenreFilterParserClass * klass) {
00307        unity_music_lens_banshee_genre_filter_parser_parent_class = g_type_class_peek_parent (klass);
00308        UNITY_MUSIC_LENS_FILTER_PARSER_CLASS (klass)->parse = unity_music_lens_banshee_genre_filter_parser_real_parse;
00309 }
00310 
00311 
00312 static void unity_music_lens_banshee_genre_filter_parser_unity_music_lens_banshee_filter_parser_interface_init (UnityMusicLensBansheeFilterParserIface * iface) {
00313        unity_music_lens_banshee_genre_filter_parser_unity_music_lens_banshee_filter_parser_parent_iface = g_type_interface_peek_parent (iface);
00314 }
00315 
00316 
00317 static void unity_music_lens_banshee_genre_filter_parser_instance_init (UnityMusicLensBansheeGenreFilterParser * self) {
00318 }
00319 
00320 
00321 GType unity_music_lens_banshee_genre_filter_parser_get_type (void) {
00322        static volatile gsize unity_music_lens_banshee_genre_filter_parser_type_id__volatile = 0;
00323        if (g_once_init_enter (&unity_music_lens_banshee_genre_filter_parser_type_id__volatile)) {
00324               static const GTypeInfo g_define_type_info = { sizeof (UnityMusicLensBansheeGenreFilterParserClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) unity_music_lens_banshee_genre_filter_parser_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (UnityMusicLensBansheeGenreFilterParser), 0, (GInstanceInitFunc) unity_music_lens_banshee_genre_filter_parser_instance_init, NULL };
00325               static const GInterfaceInfo unity_music_lens_banshee_filter_parser_info = { (GInterfaceInitFunc) unity_music_lens_banshee_genre_filter_parser_unity_music_lens_banshee_filter_parser_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
00326               GType unity_music_lens_banshee_genre_filter_parser_type_id;
00327               unity_music_lens_banshee_genre_filter_parser_type_id = g_type_register_static (UNITY_MUSIC_LENS_TYPE_GENRE_FILTER_PARSER, "UnityMusicLensBansheeGenreFilterParser", &g_define_type_info, 0);
00328               g_type_add_interface_static (unity_music_lens_banshee_genre_filter_parser_type_id, UNITY_MUSIC_LENS_TYPE_BANSHEE_FILTER_PARSER, &unity_music_lens_banshee_filter_parser_info);
00329               g_once_init_leave (&unity_music_lens_banshee_genre_filter_parser_type_id__volatile, unity_music_lens_banshee_genre_filter_parser_type_id);
00330        }
00331        return unity_music_lens_banshee_genre_filter_parser_type_id__volatile;
00332 }
00333 
00334 
00335