aboutsummaryrefslogtreecommitdiff
path: root/src/variable.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/variable.cpp81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/variable.cpp b/src/variable.cpp
index 99bac59..87571b6 100644
--- a/src/variable.cpp
+++ b/src/variable.cpp
@@ -890,3 +890,84 @@ Bu::Formatter &operator<<( Bu::Formatter &f, const Variable &v )
890 return f; 890 return f;
891} 891}
892 892
893Bu::ArchiveBase &operator<<( Bu::ArchiveBase &ar, const Variable &v )
894{
895 ar << (int8_t)v.eType;
896 switch( v.eType )
897 {
898 case Variable::typeNone:
899 break;
900
901 case Variable::typeBool:
902 ar << v.uVal.bVal;
903 break;
904
905 case Variable::typeInt:
906 ar << v.uVal.iVal;
907 break;
908
909 case Variable::typeFloat:
910 ar << v.uVal.fVal;
911 break;
912
913 case Variable::typeVersion:
914 break;
915
916 case Variable::typeString:
917 ar << *v.uVal.sVal;
918 break;
919
920 case Variable::typeList:
921 ar << *v.uVal.lVal;
922 break;
923
924 case Variable::typeRef:
925 ar << *v.uVal.sVal;
926 break;
927 }
928
929 return ar;
930}
931
932Bu::ArchiveBase &operator>>( Bu::ArchiveBase &ar, Variable &v )
933{
934 int8_t t;
935 ar >> t;
936 v.eType = (Variable::Type)t;
937 v.reset( v.eType );
938 switch( v.eType )
939 {
940 case Variable::typeNone:
941 break;
942
943 case Variable::typeBool:
944 ar >> v.uVal.bVal;
945 break;
946
947 case Variable::typeInt:
948 ar >> v.uVal.iVal;
949 break;
950
951 case Variable::typeFloat:
952 ar >> v.uVal.fVal;
953 break;
954
955 case Variable::typeVersion:
956 break;
957
958 case Variable::typeString:
959 ar >> *v.uVal.sVal;
960 break;
961
962 case Variable::typeList:
963 ar >> *v.uVal.lVal;
964 break;
965
966 case Variable::typeRef:
967 ar >> *v.uVal.sVal;
968 break;
969 }
970
971 return ar;
972}
973