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#include "SkTagList.h" 110b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 120b15698a8c76bb8abc1b555c1d91892669b4118fDerek SollenbergerSkTagList::~SkTagList() 130b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger{ 140b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger} 150b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 160b15698a8c76bb8abc1b555c1d91892669b4118fDerek SollenbergerSkTagList* SkTagList::Find(SkTagList* rec, U8CPU tag) 170b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger{ 180b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkASSERT(tag < kSkTagListCount); 190b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 200b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger while (rec != NULL) 210b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger { 220b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger if (rec->fTag == tag) 230b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger break; 240b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger rec = rec->fNext; 250b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger } 260b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger return rec; 270b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger} 280b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 290b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergervoid SkTagList::DeleteTag(SkTagList** head, U8CPU tag) 300b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger{ 310b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkASSERT(tag < kSkTagListCount); 320b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 330b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkTagList* rec = *head; 340b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkTagList* prev = NULL; 350b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 360b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger while (rec != NULL) 370b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger { 380b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkTagList* next = rec->fNext; 390b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 400b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger if (rec->fTag == tag) 410b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger { 420b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger if (prev) 430b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger prev->fNext = next; 440b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger else 450b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger *head = next; 460b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger delete rec; 470b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger break; 480b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger } 490b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger prev = rec; 500b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger rec = next; 510b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger } 520b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger} 530b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 540b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergervoid SkTagList::DeleteAll(SkTagList* rec) 550b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger{ 560b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger while (rec) 570b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger { 580b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkTagList* next = rec->fNext; 590b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger delete rec; 600b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger rec = next; 610b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger } 620b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger} 630b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 64