yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
592de6cf
main
1// 2// Copyright (C) 2013 LunarG, Inc. 3// 4// All rights reserved. 5// 6// Redistribution and use in source and binary forms, with or without 7// modification, are permitted provided that the following conditions 8// are met: 9// 10// Redistributions of source code must retain the above copyright 11// notice, this list of conditions and the following disclaimer. 12// 13// Redistributions in binary form must reproduce the above 14// copyright notice, this list of conditions and the following 15// disclaimer in the documentation and/or other materials provided 16// with the distribution. 17// 18// Neither the name of 3Dlabs Inc. Ltd. nor the names of its 19// contributors may be used to endorse or promote products derived 20// from this software without specific prior written permission. 21// 22// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 25// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 26// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 27// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 28// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 29// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 30// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 32// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 33// POSSIBILITY OF SUCH DAMAGE. 34// 35#ifndef WORKLIST_H_INCLUDED 36#define WORKLIST_H_INCLUDED 37 38#include <list> 39#include <mutex> 40#include <string> 41 42namespace glslang { 43 44class TWorkItem { 45public : 46TWorkItem () { } 47explicit TWorkItem (const std ::string & s ) : 48name (s ) { } 49std ::string name ; 50std ::string results ; 51std ::string resultsIndex ; 52 }; 53 54class TWorklist { 55public : 56TWorklist () { } 57virtual ~TWorklist () { } 58 59void add (TWorkItem * item ) 60 { 61std ::lock_guard < std ::mutex > guard (mutex ); 62worklist .push_back (item ); 63 } 64 65bool remove (TWorkItem *& item ) 66 { 67std ::lock_guard < std ::mutex > guard (mutex ); 68 69if (worklist .empty ()) 70return false; 71item = worklist .front (); 72worklist .pop_front (); 73 74return true; 75 } 76 77int size () 78 { 79return (int )worklist .size (); 80 } 81 82bool empty () 83 { 84return worklist .empty (); 85 } 86 87protected : 88std ::mutex mutex ; 89std ::list < TWorkItem *> worklist ; 90 }; 91 92}// end namespace glslang 93 94#endif // WORKLIST_H_INCLUDED