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