17d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber/* 27d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber * Copyright (C) 2010 The Android Open Source Project 37d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber * 47d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 57d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber * you may not use this file except in compliance with the License. 67d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber * You may obtain a copy of the License at 77d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber * 87d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 97d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber * 107d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber * Unless required by applicable law or agreed to in writing, software 117d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 127d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber * See the License for the specific language governing permissions and 147d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber * limitations under the License. 157d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber */ 167d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber 177d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber#ifndef A_ATOMIZER_H_ 187d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber 197d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber#define A_ATOMIZER_H_ 207d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber 217d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber#include <stdint.h> 227d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber 237d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber#include <media/stagefright/foundation/ABase.h> 247d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber#include <media/stagefright/foundation/AString.h> 257d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber#include <utils/List.h> 267d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber#include <utils/Vector.h> 277d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber#include <utils/threads.h> 287d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber 297d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Hubernamespace android { 307d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber 317d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huberstruct AAtomizer { 327d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber static const char *Atomize(const char *name); 337d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber 347d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huberprivate: 357d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber static AAtomizer gAtomizer; 367d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber 377d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber Mutex mLock; 387d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber Vector<List<AString> > mAtoms; 397d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber 407d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber AAtomizer(); 417d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber 427d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber const char *atomize(const char *name); 437d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber 447d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber static uint32_t Hash(const char *s); 457d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber 467d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber DISALLOW_EVIL_CONSTRUCTORS(AAtomizer); 477d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber}; 487d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber 497d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber} // namespace android 507d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber 517d2f703649e270b635018f8b7219bb0e1d62a2e5Andreas Huber#endif // A_ATOMIZER_H_ 52