001    package railo.runtime.functions.system;
002    
003    import railo.commons.lang.SizeAndCount;
004    import railo.commons.lang.SizeAndCount.Size;
005    import railo.runtime.PageContext;
006    import railo.runtime.exp.PageException;
007    import railo.runtime.ext.function.Function;
008    import railo.runtime.op.Caster;
009    import railo.runtime.type.Struct;
010    import railo.runtime.type.StructImpl;
011    import railo.runtime.type.util.KeyConstants;
012    
013    public final class SizeOf implements Function {
014            public static Object call(PageContext pc , Object object) throws PageException {
015                    return call(pc, object,false);
016            }
017            public static Object call(PageContext pc , Object object, boolean complex) throws PageException {
018                    Size size = SizeAndCount.sizeOf(object);
019                    if(!complex)
020                            return Caster.toDouble(size.size);
021                    
022                    Struct sct=new StructImpl();
023                    sct.set(KeyConstants._size, Caster.toDouble(size.size));
024                    sct.set(KeyConstants._count, Caster.toDouble(size.count));
025                    return sct;
026            }
027    }