/********************************************************************** Copyright (c) 2000, 2002 IBM Corp. and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/cpl-v10.html Contributors: Vicente Fernando - www.alfersoft.com.ar - Initial implementation **********************************************************************/ package net.sourceforge.phpdt.internal.debug.core; import java.util.Vector; public class PHPDBGFrame { public static final int FRAME_HEADER_SIZE= 8; private char[] frameType= new char[4]; private Vector frameData= new Vector(); private int frameSize= 0; public PHPDBGFrame(int frameType) { this.frameType= PHPDBGBase.IntToChar4(frameType); frameSize+= FRAME_HEADER_SIZE; } public void addInt(int num) { char[] newData= PHPDBGBase.IntToChar4(num); frameData.add(newData); frameSize+= 4; } public void addChar(char ch) { char[] newData= new char[1]; newData[0]= ch; frameData.add(newData); frameSize+= 1; } public void addString(String str) { frameData.add(str); frameSize+= str.length(); } public int getSize() { return frameSize; } public int getSizeOfData() { return frameSize - FRAME_HEADER_SIZE; } public char[] getHeader() { char[] ret= new char[FRAME_HEADER_SIZE]; PHPDBGBase.copyChars(ret, frameType, 4); PHPDBGBase.copyCharsTo(ret, PHPDBGBase.IntToChar4(getSizeOfData()), 4, 4); return ret; } public char[] getFrameData() { char[] ret= new char[getSizeOfData()]; int i, pos= 0; for(i=0; i < frameData.size(); i++) { if(frameData.get(i).getClass().getName().equals("[C")) { char[] conv= (char[])frameData.get(i); PHPDBGBase.copyCharsTo(ret, conv, conv.length, pos); pos+= conv.length; } else { if(frameData.get(i).getClass().getName().equals("java.lang.String")) { String conv= (String)frameData.get(i); PHPDBGBase.copyCharsTo(ret, conv.toCharArray(), conv.length(), pos); pos+= conv.length(); } } } return ret; } }