1c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean/* 2c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * Copyright (C) 2014 The Android Open Source Project 3c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * 4c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * Licensed under the Apache License, Version 2.0 (the "License"); 5c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * you may not use this file except in compliance with the License. 6c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * You may obtain a copy of the License at 7c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * 8c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * http://www.apache.org/licenses/LICENSE-2.0 9c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * 10c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * Unless required by applicable law or agreed to in writing, software 11c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * distributed under the License is distributed on an "AS IS" BASIS, 12c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * See the License for the specific language governing permissions and 14c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * limitations under the License. 15c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean */ 16464c655871f4c1dd280474723e4b33f55044baa5Mike Lockwoodpackage com.android.internal.alsa; 17c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean 18c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean/** 19c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * @hide 20c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * Breaks lines in an ALSA "cards" or "devices" file into tokens. 21c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean * TODO(pmclean) Look into replacing this with String.split(). 22c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean */ 23c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLeanpublic class LineTokenizer { 24c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean public static final int kTokenNotFound = -1; 25c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean 26c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean private String mDelimiters = ""; 27c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean 28c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean public LineTokenizer(String delimiters) { 29c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean mDelimiters = delimiters; 30c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean } 31c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean 32c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean int nextToken(String line, int startIndex) { 33c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean int len = line.length(); 34c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean int offset = startIndex; 35c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean for (; offset < len; offset++) { 36c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean if (mDelimiters.indexOf(line.charAt(offset)) == -1) { 37c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean // past a delimiter 38c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean break; 39c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean } 40c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean } 41c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean 42c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean return offset < len ? offset : kTokenNotFound; 43c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean } 44c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean 45c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean int nextDelimiter(String line, int startIndex) { 46c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean int len = line.length(); 47c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean int offset = startIndex; 48c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean for (; offset < len; offset++) { 49c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean if (mDelimiters.indexOf(line.charAt(offset)) != -1) { 50c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean // past a delimiter 51c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean break; 52c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean } 53c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean } 54c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean 55c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean return offset < len ? offset : kTokenNotFound; 56c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean } 57c837a451946b64d70ed7c642fbde03c182c28b6fPaul McLean} 58