/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.hardware.location;

import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;

@hide
/** * @hide */
@SystemApi public class MemoryRegion implements Parcelable{ private int mSizeBytes; private int mSizeBytesFree; private boolean mIsReadable; private boolean mIsWritable; private boolean mIsExecutable;
get the capacity of the memory region in bytes
Returns:int - the memory capacity in bytes
/** * get the capacity of the memory region in bytes * * @return int - the memory capacity in bytes */
public int getCapacityBytes() { return mSizeBytes; }
get the free capacity of the memory region in bytes
Returns:int - free bytes
/** * get the free capacity of the memory region in bytes * * @return int - free bytes */
public int getFreeCapacityBytes() { return mSizeBytesFree; }
Is the memory readable
Returns:boolean - true if memory is readable, false otherwise
/** * Is the memory readable * * @return boolean - true if memory is readable, false otherwise */
public boolean isReadable() { return mIsReadable; }
Is the memory writable
Returns:boolean - true if memory is writable, false otherwise
/** * Is the memory writable * * @return boolean - true if memory is writable, false otherwise */
public boolean isWritable() { return mIsWritable; }
Is the memory executable
Returns:boolean - true if memory is executable, false otherwise
/** * Is the memory executable * * @return boolean - true if memory is executable, false * otherwise */
public boolean isExecutable() { return mIsExecutable; } @Override public String toString() { String mask = ""; if (isReadable()) { mask += "r"; } else { mask += "-"; } if (isWritable()) { mask += "w"; } else { mask += "-"; } if (isExecutable()) { mask += "x"; } else { mask += "-"; } String retVal = "[ " + mSizeBytesFree + "/ " + mSizeBytes + " ] : " + mask; return retVal; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mSizeBytes); dest.writeInt(mSizeBytesFree); dest.writeInt(mIsReadable ? 1 : 0); dest.writeInt(mIsWritable ? 1 : 0); dest.writeInt(mIsExecutable ? 1 : 0); } public MemoryRegion(Parcel source) { mSizeBytes = source.readInt(); mSizeBytesFree = source.readInt(); mIsReadable = source.readInt() != 0; mIsWritable = source.readInt() != 0; mIsExecutable = source.readInt() != 0; } public static final Parcelable.Creator<MemoryRegion> CREATOR = new Parcelable.Creator<MemoryRegion>() { public MemoryRegion createFromParcel(Parcel in) { return new MemoryRegion(in); } public MemoryRegion[] newArray(int size) { return new MemoryRegion[size]; } }; }