11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 90b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 100b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#ifndef SkTagList_DEFINED 110b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#define SkTagList_DEFINED 120b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 130b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#include "SkTypes.h" 140b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 150b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerenum SkTagListEnum { 160b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger kListeners_SkTagList, 170b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger kViewLayout_SkTagList, 180b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger kViewArtist_SkTagList, 190b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 200b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger kSkTagListCount 210b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger}; 220b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 230b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerstruct SkTagList { 240b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkTagList* fNext; 250b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger uint16_t fExtra16; 260b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger uint8_t fExtra8; 270b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger uint8_t fTag; 280b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 290b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkTagList(U8CPU tag) : fTag(SkToU8(tag)) 300b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger { 310b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkASSERT(tag < kSkTagListCount); 320b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger fNext = NULL; 330b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger fExtra16 = 0; 340b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger fExtra8 = 0; 350b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger } 360b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger virtual ~SkTagList(); 370b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 380b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger static SkTagList* Find(SkTagList* head, U8CPU tag); 390b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger static void DeleteTag(SkTagList** headptr, U8CPU tag); 400b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger static void DeleteAll(SkTagList* head); 410b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger}; 420b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 430b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#endif 44